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

---
 tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderServiceImpl.java |  182 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 180 insertions(+), 2 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 fda26a7..0fb6e6b 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,10 +1,13 @@
 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;
@@ -14,9 +17,13 @@
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.service.ISystemDataNoService;
-import com.ruoyi.tms.domain.TmsDriverDispatch;
+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;
@@ -30,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;
 
@@ -53,7 +59,15 @@
     private ISysUserService userService;
     @Autowired
     private ITmsDriverDispatchService tmsDriverDispatchService;
+    @Resource
+    private TmsQuoteDetailMapper tmsQuoteDetailMapper;
 
+    @Resource
+    private TmsQuotePlanMapper tmsQuotePlanMapper;
+
+
+    @Autowired
+    ITmsFinanceService tmsFinanceService;
     /**
      * 鏌ヨ璋冨害鍗曠鐞�
      *
@@ -141,6 +155,33 @@
         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)
+        );
+        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() {
@@ -361,4 +402,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