From ca412ade3b178fbc8ba0a4b6215a040acdede954 Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期二, 09 十二月 2025 10:29:47 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/yagwly_fa_master' into yagwly_fa_master
---
tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderServiceImpl.java | 397 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 396 insertions(+), 1 deletions(-)
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderServiceImpl.java
index e1a8ccc..47eecb5 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderServiceImpl.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderServiceImpl.java
@@ -1,9 +1,30 @@
package com.ruoyi.tms.service.impl;
+import java.util.Arrays;
+import java.util.Date;
import java.util.List;
+import java.util.stream.Collectors;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.enums.SystemDataNoEnum;
import com.ruoyi.common.utils.DateUtils;
import javax.annotation.Resource;
+
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.service.ISystemDataNoService;
+import com.ruoyi.tms.domain.*;
+import com.ruoyi.tms.domain.vo.DriverDispatchVo;
+import com.ruoyi.tms.mapper.TmsFinanceMapper;
+import com.ruoyi.tms.mapper.TmsQuoteDetailMapper;
+import com.ruoyi.tms.mapper.TmsQuotePlanMapper;
+import com.ruoyi.tms.service.ITmsDriverDispatchService;
+import com.ruoyi.tms.service.ITmsFinanceService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import org.springframework.scheduling.annotation.Async;
@@ -16,7 +37,6 @@
import com.ruoyi.common.core.service.BaseService;
import com.ruoyi.tms.mapper.TmsDispatchOrderMapper;
-import com.ruoyi.tms.domain.TmsDispatchOrder;
import com.ruoyi.tms.service.ITmsDispatchOrderService;
import com.ruoyi.common.core.text.Convert;
@@ -33,8 +53,21 @@
protected final Logger logger = LoggerFactory.getLogger(getClass());
@Resource
private TmsDispatchOrderMapper tmsDispatchOrderMapper;
+ @Autowired
+ ISystemDataNoService systemDataNoService;
+ @Autowired
+ private ISysUserService userService;
+ @Autowired
+ private ITmsDriverDispatchService tmsDriverDispatchService;
+ @Resource
+ private TmsQuoteDetailMapper tmsQuoteDetailMapper;
+
+ @Resource
+ private TmsQuotePlanMapper tmsQuotePlanMapper;
+ @Autowired
+ ITmsFinanceService tmsFinanceService;
/**
* 鏌ヨ璋冨害鍗曠鐞�
*
@@ -47,6 +80,215 @@
{
return tmsDispatchOrderMapper.selectTmsDispatchOrderById(id);
}
+
+ @Override
+ public AjaxResult confirmOrder(Integer id) {
+ TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(id);
+ if (tmsDispatchOrder == null){
+ return AjaxResult.error("鏈壘鍒拌鏁版嵁");
+ }
+ if (tmsDispatchOrder.getStatus() != 0){
+ return AjaxResult.error("璇ヨ皟搴﹀崟鏁版嵁鐘舵�佸紓甯�");
+ }
+ if (tmsDispatchOrder.getMainDriverId() == null){
+ return AjaxResult.error("璇峰厛閫夋嫨涓婚┚鍙告満");
+ }
+ if (tmsDispatchOrder.getVehicleId() == null){
+ return AjaxResult.error("璇峰厛閫夋嫨杞﹁締");
+ }
+ tmsDispatchOrder.setConfirmTime(DateUtils.getNowDate());
+ tmsDispatchOrder.setStatus(1);
+
+ tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername());
+ int i = tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder);
+ TmsDriverDispatch tmsDriverDispatch = new TmsDriverDispatch();
+ tmsDriverDispatch.setDriverId(tmsDispatchOrder.getMainDriverId());
+ tmsDriverDispatch.setDispatchId(tmsDispatchOrder.getId());
+ tmsDriverDispatch.setStatus(0);
+ tmsDriverDispatchService.insertTmsDriverDispatch(tmsDriverDispatch);
+ if (i > 0){
+ return AjaxResult.success("鎿嶄綔鎴愬姛");
+ }
+ return AjaxResult.error("鎿嶄綔澶辫触");
+ }
+ @Override
+ public AjaxResult okOrder(Integer id) {
+ TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(id);
+ if (tmsDispatchOrder == null){
+ return AjaxResult.error("鏈壘鍒拌鏁版嵁");
+ }
+ if (tmsDispatchOrder.getStatus() != 2){
+ return AjaxResult.error("璇ヨ皟搴﹀崟鏁版嵁鐘舵�佸紓甯�");
+ }
+ tmsDispatchOrder.setStatus(3);
+ tmsDispatchOrder.setOkTime(DateUtils.getNowDate());
+ tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername());
+ int i = tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder);
+ if (i > 0){
+ return AjaxResult.success("鎿嶄綔鎴愬姛");
+ }
+ return AjaxResult.error("鎿嶄綔澶辫触");
+ }
+ @Override
+ public AjaxResult copyOrder(Integer id) {
+ TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(id);
+ if (tmsDispatchOrder == null){
+ return AjaxResult.error("鏈壘鍒拌鏁版嵁");
+ }
+ TmsDispatchOrder tmsDispatchOrderNew = BeanUtil.copyProperties(tmsDispatchOrder, TmsDispatchOrder.class);
+
+ tmsDispatchOrderNew.setStatus(0);
+ tmsDispatchOrderNew.setMainDriverId(null);
+ tmsDispatchOrderNew.setMainDriverName(null);
+ tmsDispatchOrderNew.setAssistantDriverId(null);
+ tmsDispatchOrderNew.setAssistantDriverName(null);
+ tmsDispatchOrderNew.setVehicleId(null);
+ tmsDispatchOrderNew.setLicensePlate(null);
+ tmsDispatchOrderNew.setUpdateBy(null);
+ tmsDispatchOrderNew.setId(null);
+
+
+ int i = insertTmsDispatchOrder(tmsDispatchOrderNew);
+ if (i > 0){
+ return AjaxResult.success("鎿嶄綔鎴愬姛");
+ }
+ return AjaxResult.error("鎿嶄綔澶辫触");
+ }
+
+ @Override
+ public AjaxResult dropHook(Integer id) {
+ TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(id);
+ if (tmsDispatchOrder == null){
+ return AjaxResult.error("鏈壘鍒拌鏁版嵁");
+ }
+ tmsDriverDispatchService.update(
+ null,
+ new LambdaUpdateWrapper<TmsDriverDispatch>()
+ .eq(TmsDriverDispatch::getDispatchId, tmsDispatchOrder.getId())
+ .eq(TmsDriverDispatch::getDriverId, tmsDispatchOrder.getMainDriverId())
+ .set(TmsDriverDispatch::getStatus, 1)
+ );
+
+ tmsDispatchOrderMapper.update(new LambdaUpdateWrapper<TmsDispatchOrder>()
+ .eq(TmsDispatchOrder::getId, tmsDispatchOrder.getId())
+ .set(TmsDispatchOrder::getStatus, 6)
+ );
+ return AjaxResult.success("鎿嶄綔鎴愬姛");
+ }
+
+
+ @Override
+ public AjaxResult connectHang(TmsDriverDispatch driverDispatch) {
+ TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(driverDispatch.getDispatchId());
+ if (tmsDispatchOrder == null){
+ return AjaxResult.error("鏈壘鍒拌鏁版嵁");
+ }
+ driverDispatch.setStatus(2);
+ tmsDriverDispatchService.insertTmsDriverDispatch(driverDispatch);
+ return AjaxResult.success();
+ }
+
+
+ @Override
+ public int customsOrder(TmsDispatchOrder tmsDispatchOrder) {
+ return tmsDispatchOrderMapper.update(new LambdaUpdateWrapper<TmsDispatchOrder>()
+ .eq(TmsDispatchOrder::getId, tmsDispatchOrder.getId())
+ .set(TmsDispatchOrder::getCustomsServiceProviderId, tmsDispatchOrder.getCustomsServiceProviderId())
+ .set(TmsDispatchOrder::getCustomsServiceProviderName, tmsDispatchOrder.getCustomsServiceProviderName())
+ );
+
+ }
+
+ @Override
+ public int loadingOrder(TmsDispatchOrder tmsDispatchOrder) {
+ return tmsDispatchOrderMapper.update(new LambdaUpdateWrapper<TmsDispatchOrder>()
+ .eq(TmsDispatchOrder::getId, tmsDispatchOrder.getId())
+ .set(TmsDispatchOrder::getLoadingServiceProviderId, tmsDispatchOrder.getLoadingServiceProviderId())
+ .set(TmsDispatchOrder::getLoadingServiceProviderName, tmsDispatchOrder.getLoadingServiceProviderName())
+ );
+ }
+
+ @Override
+ public AjaxResult assignedItineraryList() {
+ Integer deviceId = userService.getDeviceId(SecurityUtils.getUserId());
+ if (deviceId == null){
+ return AjaxResult.success();
+ }
+
+ DriverDispatchVo vo = new DriverDispatchVo();
+ vo.setDriverId(deviceId);
+ vo.setInStatusList(Arrays.asList(0, 1, 2,4));
+ vo.setInTdoStatusList(Arrays.asList(1, 2));
+ List<DriverDispatchVo> driverDispatchVos = tmsDispatchOrderMapper.selectAssignedItineraryList(vo);
+ if (driverDispatchVos != null && !driverDispatchVos.isEmpty()){
+ driverDispatchVos.forEach(item ->{
+ if (item.getTddStatus() == 1 ){
+ item.setStatusStr("寰呯敥鎸�");
+ }else if (item.getTddStatus() == 2){
+ item.setStatusStr("寰呮帴鎸�");
+ }else if (item.getStatus() == 1){
+ item.setStatusStr("寰呭彂杞�");
+ }else if (item.getStatus() == 2){
+ item.setStatusStr("鍦ㄩ��");
+ }else {
+ item.setStatusStr("瀹屾垚琛岀▼");
+ }
+ });
+ }
+
+
+ return AjaxResult.success(driverDispatchVos);
+ }
+ @Override
+ public AjaxResult assignedItineraryLogList() {
+ Integer deviceId = userService.getDeviceId(SecurityUtils.getUserId());
+ if (deviceId == null){
+ return AjaxResult.success();
+ }
+
+ DriverDispatchVo vo = new DriverDispatchVo();
+ vo.setDriverId(deviceId);
+ vo.setInStatusList(Arrays.asList(3,5));
+// vo.setInTdoStatusList(Arrays.asList(1, 2));
+ List<DriverDispatchVo> driverDispatchVos = tmsDispatchOrderMapper.selectAssignedItineraryList(vo);
+ if (driverDispatchVos != null && !driverDispatchVos.isEmpty()){
+ driverDispatchVos.forEach(item ->{
+ item.setStatusStr("瀹屾垚琛岀▼");
+ });
+ }
+
+
+ return AjaxResult.success(driverDispatchVos);
+ }
+ @Override
+ public AjaxResult selectAssignedItineraryDetail(Integer dispatchId) {
+ Integer deviceId = userService.getDeviceId(SecurityUtils.getUserId());
+ if (deviceId == null){
+ return AjaxResult.success();
+ }
+
+ DriverDispatchVo vo = new DriverDispatchVo();
+ vo.setDriverId(deviceId);
+ vo.setDispatchId(dispatchId);
+ DriverDispatchVo driverDispatchVo = tmsDispatchOrderMapper.selectAssignedItineraryDetail(vo);
+ if (driverDispatchVo != null){
+ if (driverDispatchVo.getTddStatus() == 1 ){
+ driverDispatchVo.setStatusStr("寰呯敥鎸�");
+ }else if (driverDispatchVo.getTddStatus() == 2){
+ driverDispatchVo.setStatusStr("寰呮帴鎸�");
+ }else if (driverDispatchVo.getStatus() == 1){
+ driverDispatchVo.setStatusStr("寰呭彂杞�");
+ }else if (driverDispatchVo.getStatus() == 2){
+ driverDispatchVo.setStatusStr("鍦ㄩ��");
+ }else{
+ driverDispatchVo.setStatusStr("瀹屾垚琛岀▼");
+ }
+ }
+ return AjaxResult.success(driverDispatchVo);
+ }
+
+
+
/**
* 鏌ヨ璋冨害鍗曠鐞� 璁板綍鏁�
@@ -102,6 +344,10 @@
@Override
public int insertTmsDispatchOrder(TmsDispatchOrder tmsDispatchOrder)
{
+ String noByKey = systemDataNoService.getNoByKey(SystemDataNoEnum.DL);
+
+ tmsDispatchOrder.setDispatchNo(noByKey);
+ tmsDispatchOrder.setCreateBy(SecurityUtils.getUsername());
tmsDispatchOrder.setCreateTime(DateUtils.getNowDate());
return tmsDispatchOrderMapper.insertTmsDispatchOrder(tmsDispatchOrder);
}
@@ -128,6 +374,8 @@
@Override
public int updateTmsDispatchOrder(TmsDispatchOrder tmsDispatchOrder)
{
+ tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername());
+
tmsDispatchOrder.setUpdateTime(DateUtils.getNowDate());
return tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder);
}
@@ -179,4 +427,151 @@
{
return tmsDispatchOrderMapper.deleteTmsDispatchOrderById(id);
}
+
+ @Override
+ public List<TmsDispatchOrder> initGenerate(List<Integer> ids) {
+ List<TmsDispatchOrder> tmsDispatchOrders = tmsDispatchOrderMapper.selectBatchIds(ids);
+ if (tmsDispatchOrders != null && !tmsDispatchOrders.isEmpty()){
+ tmsDispatchOrders.forEach(tmsDispatchOrder -> {
+ // 瀹㈡埛ID
+ Integer customerId = tmsDispatchOrder.getCustomerId();
+
+ // 杞﹀瀷
+ String actualVehicleType = tmsDispatchOrder.getActualVehicleType();
+
+ // 杩愯緭璺嚎 = 鍙戣揣鍦拌鏀垮尯鍩� + 鏀惰揣鍦拌鏀垮尯鍩�
+ String shipperRegionCode = tmsDispatchOrder.getShipperRegionCode();
+ String receiverRegionCode = tmsDispatchOrder.getReceiverRegionCode();
+ if (tmsDispatchOrder.getAccountsReceivableStatus() != null && tmsDispatchOrder.getAccountsReceivableStatus() == 1){
+ TmsQuotePlan tmsQuotePlan = tmsQuotePlanMapper.selectTmsQuotePlanById(tmsDispatchOrder.getCollectionPlanId());
+ tmsDispatchOrder.setCollectionPlanId(tmsQuotePlan.getId());
+ tmsDispatchOrder.setCollectionPlanName(tmsQuotePlan.getPlanName());
+ }else{
+ // 鏌ヨ搴旀敹瑙勫垯
+ TmsQuoteDetail tmsQuoteDetail = tmsQuoteDetailMapper.selectOne(new LambdaQueryWrapper<TmsQuoteDetail>()
+ .eq(TmsQuoteDetail::getCustomerId, customerId)
+ .eq(TmsQuoteDetail::getVehicleType, actualVehicleType)
+ .eq(TmsQuoteDetail::getStartRegionCode, shipperRegionCode)
+ .eq(TmsQuoteDetail::getEndRegionCode, receiverRegionCode)
+ .eq(TmsQuoteDetail::getPlanType, 0)
+ .last("limit 1")
+ );
+ if (tmsQuoteDetail != null){
+ TmsQuotePlan tmsQuotePlan = tmsQuotePlanMapper.selectTmsQuotePlanById(tmsQuoteDetail.getQuotePlanId());
+ tmsDispatchOrder.setCollectionPlanId(tmsQuotePlan.getId());
+ tmsDispatchOrder.setCollectionPlanName(tmsQuotePlan.getPlanName());
+ tmsDispatchOrder.setCollectionPlanDetailId(tmsQuoteDetail.getId());
+ tmsDispatchOrder.setCollectionPlanAmount(tmsQuoteDetail.getFreightPrice());
+ }else{
+ tmsDispatchOrder.setAccountsReceivableStatus(2);
+ }
+ }
+
+ if (tmsDispatchOrder.getAccountsPayableStatus() != null && tmsDispatchOrder.getAccountsPayableStatus() == 1){
+ TmsQuotePlan tmsQuotePlan = tmsQuotePlanMapper.selectTmsQuotePlanById(tmsDispatchOrder.getPaymentPlanId());
+ tmsDispatchOrder.setPaymentPlanId(tmsQuotePlan.getId());
+ tmsDispatchOrder.setPaymentPlanName(tmsQuotePlan.getPlanName());
+ }else{
+ // 鏌ヨ搴斾粯瑙勫垯
+ TmsQuoteDetail tmsQuoteDetail2 = tmsQuoteDetailMapper.selectOne(new LambdaQueryWrapper<TmsQuoteDetail>()
+ .eq(TmsQuoteDetail::getCustomerId, customerId)
+ .eq(TmsQuoteDetail::getVehicleType, actualVehicleType)
+ .eq(TmsQuoteDetail::getStartRegionCode, shipperRegionCode)
+ .eq(TmsQuoteDetail::getEndRegionCode, receiverRegionCode)
+ .eq(TmsQuoteDetail::getPlanType, 1)
+ .last("limit 1")
+ );
+
+ if (tmsQuoteDetail2 != null){
+ TmsQuotePlan tmsQuotePlan = tmsQuotePlanMapper.selectTmsQuotePlanById(tmsQuoteDetail2.getQuotePlanId());
+ tmsDispatchOrder.setPaymentPlanId(tmsQuotePlan.getId());
+ tmsDispatchOrder.setPaymentPlanName(tmsQuotePlan.getPlanName());
+ tmsDispatchOrder.setPaymentPlanDetailId(tmsQuoteDetail2.getId());
+ tmsDispatchOrder.setPaymentPlanAmount(tmsQuoteDetail2.getFreightPrice());
+
+ }else{
+ tmsDispatchOrder.setAccountsPayableStatus(2);
+ }
+ }
+
+
+ });
+ }
+ return tmsDispatchOrders;
+ }
+
+ @Override
+ public AjaxResult generateTmsDispatchOrder(List<Integer> ids) {
+ List<TmsDispatchOrder> tmsDispatchOrders = initGenerate(ids);
+ List<TmsDispatchOrder> collect1 = tmsDispatchOrders.stream().filter(item -> item.getIsCustoms() == 0 && item.getCustomsServiceProviderId() == null).collect(Collectors.toList());
+ if (!collect1.isEmpty()){
+ String disNos = collect1.stream().map(TmsDispatchOrder::getDispatchNo).collect(Collectors.joining(","));
+ return AjaxResult.error("璋冨害鍗�"+disNos+"鏈ˉ鍏呭鎵樻姤鍏充俊鎭�");
+ }
+ List<TmsDispatchOrder> collect2 = tmsDispatchOrders.stream().filter(item -> item.getIsLoad() == 0 && item.getLoadingServiceProviderId() == null).collect(Collectors.toList());
+ if (!collect2.isEmpty()){
+ String disNos = collect2.stream().map(TmsDispatchOrder::getDispatchNo).collect(Collectors.joining(","));
+ return AjaxResult.error("璋冨害鍗�"+disNos+"鏈ˉ鍏呰鍗歌揣淇℃伅");
+ }
+ List<TmsDispatchOrder> receivableList = tmsDispatchOrders.stream().filter(item -> item.getAccountsReceivableStatus() == 0).collect(Collectors.toList());
+ if (!receivableList.isEmpty()){
+ List<TmsDispatchOrder> collect = receivableList.stream().map(item -> {
+ TmsDispatchOrder tmsDispatchOrder = new TmsDispatchOrder();
+ tmsDispatchOrder.setId(item.getId());
+ tmsDispatchOrder.setAccountsReceivableStatus(1);
+ tmsDispatchOrder.setCollectionPlanId(item.getCollectionPlanId());
+ tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername());
+ return tmsDispatchOrder;
+ }).collect(Collectors.toList());
+ // 1銆佷慨鏀硅皟搴�
+ tmsDispatchOrderMapper.updateTmsDispatchOrderBatch(collect);
+ // 2銆佺敓鎴愬簲鏀惰处鍗�
+ List<TmsFinance> tmsFinances = BeanUtil.copyToList(receivableList, TmsFinance.class);
+ tmsFinances.forEach(item ->{
+ item.setSystemCode(systemDataNoService.getNoByKey(SystemDataNoEnum.YSD));
+ item.setPlanName(item.getCollectionPlanName());
+ item.setDispatchId(item.getId());
+ item.setCreateBy(SecurityUtils.getUsername());
+ item.setCreateTime(new Date());
+ item.setUpdateBy(SecurityUtils.getUsername());
+ item.setUpdateTime(new Date());
+ item.setStatus(0);
+ item.setType(0);
+ item.setTotalAmount(item.getCollectionPlanAmount());
+ });
+ tmsFinanceService.insertTmsFinanceYFBatch(tmsFinances);
+ }
+
+ List<TmsDispatchOrder> playList = tmsDispatchOrders.stream().filter(item -> item.getAccountsPayableStatus() == 0).collect(Collectors.toList());
+ if (!playList.isEmpty()){
+ List<TmsDispatchOrder> collect = playList.stream().map(item -> {
+ TmsDispatchOrder tmsDispatchOrder = new TmsDispatchOrder();
+ tmsDispatchOrder.setId(item.getId());
+ tmsDispatchOrder.setAccountsPayableStatus(1);
+ tmsDispatchOrder.setPaymentPlanId(item.getPaymentPlanId());
+ tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername());
+ return tmsDispatchOrder;
+ }).collect(Collectors.toList());
+ // 1銆佷慨鏀硅皟搴�
+ tmsDispatchOrderMapper.updateTmsDispatchOrderBatch(collect);
+ // 2銆佺敓鎴愬簲浠樿处鍗�
+ List<TmsFinance> tmsFinances = BeanUtil.copyToList(receivableList, TmsFinance.class);
+ tmsFinances.forEach(item ->{
+ item.setSystemCode(systemDataNoService.getNoByKey(SystemDataNoEnum.YFD));
+ item.setPlanName(item.getPaymentPlanName());
+ item.setDispatchId(item.getId());
+ item.setCreateBy(SecurityUtils.getUsername());
+ item.setCreateTime(new Date());
+ item.setUpdateBy(SecurityUtils.getUsername());
+ item.setUpdateTime(new Date());
+ item.setStatus(0);
+ item.setType(1);
+ item.setTotalAmount(item.getPaymentPlanAmount());
+ });
+ tmsFinanceService.insertTmsFinanceYFBatch(tmsFinances);
+
+ }
+
+ return AjaxResult.success();
+ }
}
--
Gitblit v1.8.0