From 3479ad5223c328be72a2b26ab66f9aeee64ec4b5 Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期二, 18 十一月 2025 17:40:30 +0800
Subject: [PATCH] 提交

---
 tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderServiceImpl.java |  291 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 290 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 b203d52..44ad3ed 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,15 +1,29 @@
 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;
@@ -23,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;
 
@@ -42,7 +55,19 @@
     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;
     /**
      * 鏌ヨ璋冨害鍗曠鐞�
      *
@@ -65,10 +90,22 @@
         if (tmsDispatchOrder.getStatus() != 0){
             return AjaxResult.error("璇ヨ皟搴﹀崟鏁版嵁鐘舵�佸紓甯�");
         }
+        if (tmsDispatchOrder.getMainDriverId() == null){
+            return AjaxResult.error("璇峰厛閫夋嫨涓婚┚鍙告満");
+        }
+        if (tmsDispatchOrder.getVehicleId() == null){
+            return AjaxResult.error("璇峰厛閫夋嫨杞﹁締");
+        }
+
         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("鎿嶄綔鎴愬姛");
         }
@@ -117,6 +154,121 @@
         }
         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 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);
+    }
+
+
+
 
     /**
      * 鏌ヨ璋冨害鍗曠鐞� 璁板綍鏁�
@@ -255,4 +407,141 @@
     {
         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> 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