From 487ef37ec34860b255986d8716d193369024e000 Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期二, 13 一月 2026 13:29:43 +0800
Subject: [PATCH] 修改为下单类型

---
 tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderServiceImpl.java |  246 ++++++++++++++++++++++++++++--------------------
 1 files changed, 143 insertions(+), 103 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 f8c4dd4..35a7862 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
@@ -19,10 +19,7 @@
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.service.ISystemDataNoService;
 import com.ruoyi.tms.domain.*;
-import com.ruoyi.tms.domain.vo.DpDriverDispatchItemVo;
-import com.ruoyi.tms.domain.vo.DpDriverDispatchVo;
-import com.ruoyi.tms.domain.vo.DriverDispatchVo;
-import com.ruoyi.tms.domain.vo.ServiceProviderVo;
+import com.ruoyi.tms.domain.vo.*;
 import com.ruoyi.tms.mapper.*;
 import com.ruoyi.tms.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -89,7 +86,10 @@
     private TmsCustomsServiceProviderMapper tmsCustomsServiceProviderMapper;
     @Resource
     private  TmsTripMapper tmsTripMapper;
-
+    @Resource
+    private TmsPayableFeeMapper tmsPayableFeeMapper;
+    @Resource
+    private TmsPayableFeeItemMapper tmsPayableFeeItemMapper;
     /**
      * 鏌ヨ璋冨害鍗曠鐞�
      *
@@ -609,7 +609,7 @@
                     // 闈炶嚜钀ラ渶瑕佹湁杩愯垂
                     // 杞﹁締鏈嶅姟鍟�
                     // 瀹為檯杞﹀瀷
-                    String actualVehicleType = tmsDispatchOrder.getActualVehicleType();
+                    String actualVehicleType = tmsDispatchOrder.getRequiredVehicleTypes();
                     // 鍑哄彂璺嚎 44,4404,440402,440402102
                     String shipperRegionCode = tmsDispatchOrder.getStartRegionCode();
                     // 鐩殑鍦拌矾绾� 81,8100,810000
@@ -722,11 +722,11 @@
 
 
     @Override
-    public List<TmsDispatchOrder> initYFGenerate(List<Integer> ids) {
+    public List<TmsPayableFee> initYFGenerate(List<Integer> ids) {
         List<TmsDispatchOrder> tmsDispatchOrders = tmsDispatchOrderMapper.selectBatchIds(ids);
         if (tmsDispatchOrders != null && !tmsDispatchOrders.isEmpty()){
             tmsDispatchOrders.forEach(tmsDispatchOrder -> {
-                List<TmsReceivableFeeItem> tmsReceivableFeeItems = new ArrayList<>();
+                List<TmsPayableFeeItem> tmsPayableFeeItems = new ArrayList<>();
                 if (tmsDispatchOrder.getAccountsPayableStatus() != null &&
                         tmsDispatchOrder.getAccountsPayableStatus() == 1){
                     throw new RuntimeException(tmsDispatchOrder.getDispatchNo()+"搴斾粯璐﹀崟宸茬敓鎴愶紝璇峰厛浣滃簾");
@@ -750,8 +750,8 @@
                             tmsQuoteDetailMapper.selectOne(
                                     new LambdaQueryWrapper<TmsQuoteDetail>()
                                             .eq(TmsQuoteDetail::getVehicleType, actualVehicleType)
-                                            .eq(TmsQuoteDetail::getStartRegionCode, shipperRegionCode)
-                                            .eq(TmsQuoteDetail::getEndRegionCode, receiverRegionCode)
+                                            .likeRight(TmsQuoteDetail::getStartRegionCode, shipperRegionCode)
+                                            .likeRight(TmsQuoteDetail::getEndRegionCode, receiverRegionCode)
                                             .eq(TmsQuoteDetail::getPlanType, 1)
                                             .exists(
                                                     "SELECT 1 " +
@@ -771,16 +771,20 @@
                     if (tmsQuoteDetail == null){
                         throw new RuntimeException("璋冨害鍗�"+tmsDispatchOrder.getDispatchNo()+"鏈淮鎶ゅ簲浠樿繍璐规姤浠凤紝璇风淮鎶ゆ暟鎹悗鍐嶉噸鏂扮敓鎴�");
                     }
+                    TmsPayableFeeItem tmsPayableFeeItem = new TmsPayableFeeItem();
+                    tmsPayableFeeItem.setFeeType(0);
+                    tmsPayableFeeItem.setFeeName("杩愯垂");
+                    tmsPayableFeeItem.setTypeId(tmsQuoteDetail.getId());
+                    tmsPayableFeeItem.setRegisterAmount(tmsQuoteDetail.getFreightPrice());
+                    tmsPayableFeeItem.setRegisterTime(tmsDispatchOrder.getConfirmTime());
+                    tmsPayableFeeItem.setCurrency(tmsQuoteDetail.getCurrency());
+                    tmsPayableFeeItem.setRowKey(IdUtil.objectId());
 
-                        TmsReceivableFeeItem tmsReceivableFeeItem = new TmsReceivableFeeItem();
-                        tmsReceivableFeeItem.setFeeType(0);
-                        tmsReceivableFeeItem.setFeeName("杩愯垂");
-                        tmsReceivableFeeItem.setTypeId(tmsQuoteDetail.getId());
-                        tmsReceivableFeeItem.setRegisterAmount(tmsQuoteDetail.getFreightPrice());
-                        tmsReceivableFeeItem.setRegisterTime(tmsDispatchOrder.getConfirmTime());
-                        tmsReceivableFeeItem.setCurrency(tmsQuoteDetail.getCurrency());
-                        tmsReceivableFeeItem.setRowKey(IdUtil.objectId());
-                        tmsReceivableFeeItems.add(tmsReceivableFeeItem);
+                    tmsPayableFeeItem.setServiceProviderId(vehicleProviderId);
+                    tmsPayableFeeItem.setServiceProviderName(tmsDispatchOrder.getVehicleProviderName());
+                    tmsPayableFeeItem.setServiceProviderType("0");
+
+                    tmsPayableFeeItems.add(tmsPayableFeeItem);
 
                 }
                 // 2銆� 鑾峰彇瀹炴姤瀹為攢璐圭敤
@@ -791,18 +795,20 @@
 
                 if (tmsFinanceDetails != null && !tmsFinanceDetails.isEmpty()){
                     tmsFinanceDetails.forEach(tmsFinanceDetail -> {
-                        TmsReceivableFeeItem tmsReceivableFeeItem = new TmsReceivableFeeItem();
-                        tmsReceivableFeeItem.setFeeType(2);
+                        TmsPayableFeeItem tmsPayableFeeItem = new TmsPayableFeeItem();
+                        tmsPayableFeeItem.setFeeType(2);
 
                         String feeName = sysDictDataService.selectDictLabel("fee_type", tmsFinanceDetail.getFeeType());
-                        tmsReceivableFeeItem.setFeeName(feeName);
-                        tmsReceivableFeeItem.setTypeId(tmsFinanceDetail.getId());
-                        tmsReceivableFeeItem.setRegisterAmount(tmsFinanceDetail.getYfPrice());
-                        tmsReceivableFeeItem.setRegisterTime(tmsFinanceDetail.getUpdateTime());
-                        tmsReceivableFeeItem.setCurrency(tmsFinanceDetail.getYfCurrency());
-                        tmsReceivableFeeItem.setRowKey(IdUtil.objectId());
-
-                        tmsReceivableFeeItems.add(tmsReceivableFeeItem);
+                        tmsPayableFeeItem.setFeeName(feeName);
+                        tmsPayableFeeItem.setTypeId(tmsFinanceDetail.getId());
+                        tmsPayableFeeItem.setRegisterAmount(tmsFinanceDetail.getYfPrice());
+                        tmsPayableFeeItem.setRegisterTime(tmsFinanceDetail.getUpdateTime());
+                        tmsPayableFeeItem.setCurrency(tmsFinanceDetail.getYfCurrency());
+                        tmsPayableFeeItem.setRowKey(IdUtil.objectId());
+                        tmsPayableFeeItem.setServiceProviderId(tmsFinanceDetail.getYfServiceProviderId());
+                        tmsPayableFeeItem.setServiceProviderName(tmsFinanceDetail.getYfServiceProviderName());
+                        tmsPayableFeeItem.setServiceProviderType(tmsFinanceDetail.getYfServiceProviderType());
+                        tmsPayableFeeItems.add(tmsPayableFeeItem);
                     });
                 }
 
@@ -816,25 +822,79 @@
 
                 if (tmsQuoteFees != null && !tmsQuoteFees.isEmpty()){
                     tmsQuoteFees.forEach(item -> {
-                        TmsReceivableFeeItem tmsReceivableFeeItem = new TmsReceivableFeeItem();
-                        tmsReceivableFeeItem.setFeeType(1);
-                        tmsReceivableFeeItem.setFeeName(item.getFreeName());
-                        tmsReceivableFeeItem.setTypeId(item.getId());
-                        tmsReceivableFeeItem.setRegisterAmount(item.getYfSum());
-                        tmsReceivableFeeItem.setRegisterTime(item.getCreateTime());
-                        tmsReceivableFeeItem.setCurrency(item.getYfCurrency());
-                        tmsReceivableFeeItem.setRowKey(IdUtil.objectId());
+                        TmsPayableFeeItem tmsPayableFeeItem = new TmsPayableFeeItem();
+                        tmsPayableFeeItem.setFeeType(1);
+                        tmsPayableFeeItem.setFeeName(item.getFreeName());
+                        tmsPayableFeeItem.setTypeId(item.getId());
+                        tmsPayableFeeItem.setRegisterAmount(item.getYfSum());
+                        tmsPayableFeeItem.setRegisterTime(item.getCreateTime());
+                        tmsPayableFeeItem.setCurrency(item.getYfCurrency());
+                        tmsPayableFeeItem.setRowKey(IdUtil.objectId());
 
-                        tmsReceivableFeeItems.add(tmsReceivableFeeItem);
+                        tmsPayableFeeItem.setServiceProviderId(item.getServiceProviderId());
+                        tmsPayableFeeItem.setServiceProviderName(getServiceProviderName(item.getServiceProviderType(),item.getServiceProviderId()));
+                        tmsPayableFeeItem.setServiceProviderType(item.getServiceProviderType());
+
+                        tmsPayableFeeItems.add(tmsPayableFeeItem);
                     });
                 }
-
-
-
-                tmsDispatchOrder.setTmsReceivableFeeItems(tmsReceivableFeeItems);
+                tmsDispatchOrder.setTmsPayableFeeItems(tmsPayableFeeItems);
             });
         }
-        return tmsDispatchOrders;
+        List<TmsPayableFee> tmsPayableFeeList = new ArrayList<>();
+        if (tmsDispatchOrders != null && !tmsDispatchOrders.isEmpty()){
+            tmsDispatchOrders.forEach(item -> {
+
+
+                List<TmsPayableFeeItem> tmsPayableFeeItems = item.getTmsPayableFeeItems();
+                Map<String, List<TmsPayableFeeItem>> map =
+                        tmsPayableFeeItems.stream()
+                                .collect(Collectors.groupingBy(cItem ->
+                                        cItem.getServiceProviderId() + "_" + cItem.getServiceProviderType()
+                                ));
+                map.forEach((customerId, customerItems) -> {
+
+                    TmsPayableFeeItem tmsPayableFeeItem = customerItems.get(0);
+                    TmsPayableFee tmsPayableFee = new TmsPayableFee();
+
+                    tmsPayableFee.setDispatchId(item.getId());
+                    tmsPayableFee.setDispatchNo(item.getDispatchNo());
+
+                    tmsPayableFee.setServiceProviderId(tmsPayableFeeItem.getServiceProviderId());
+                    tmsPayableFee.setServiceProviderName(tmsPayableFeeItem.getServiceProviderName());
+                    tmsPayableFee.setServiceProviderType(tmsPayableFeeItem.getServiceProviderType());
+
+                    tmsPayableFee.setProjectId(item.getProjectId());
+                    tmsPayableFee.setProjectName(item.getProjectName());
+
+                    BigDecimal totalRmbAmount = customerItems.stream()
+                            .filter(cItem -> "RMB".equals(cItem.getCurrency()))
+                            .map(TmsPayableFeeItem::getRegisterAmount)
+                            .reduce(BigDecimal.ZERO, BigDecimal::add);
+                    tmsPayableFee.setPayableRmbAmount(totalRmbAmount);
+
+
+                    BigDecimal totalHkbAmount = customerItems.stream()
+                            .filter(cItem -> "HKD".equals(cItem.getCurrency()))
+                            .map(TmsPayableFeeItem::getRegisterAmount)
+                            .reduce(BigDecimal.ZERO, BigDecimal::add);
+                    tmsPayableFee.setPayableHkbAmount(totalHkbAmount);
+                    tmsPayableFee.setDispatchConfirmTime(item.getConfirmTime());
+                    tmsPayableFee.setStatus(0);
+                    tmsPayableFee.setPayableFeeItems(customerItems);
+                    tmsPayableFeeList.add(tmsPayableFee);
+                });
+
+
+            });
+        }
+
+
+
+
+
+
+        return tmsPayableFeeList;
     }
 
     @Override
@@ -906,69 +966,29 @@
     }
     @Override
     public AjaxResult yfGenerateTmsDispatchOrder(List<Integer> ids) {
-        List<TmsDispatchOrder> tmsDispatchOrders = initYFGenerate(ids);
-        List<TmsDispatchOrder> collect1 = tmsDispatchOrders.stream().filter(item -> item.getTmsReceivableFeeItems() == null || item.getTmsReceivableFeeItems().isEmpty()).collect(Collectors.toList());
-        if (!collect1.isEmpty()){
-            String disNos = collect1.stream().map(TmsDispatchOrder::getDispatchNo).collect(Collectors.joining(","));
-            return AjaxResult.error("璋冨害鍗�"+disNos+"鏈湁搴斾粯淇℃伅");
-        }
+        List<TmsPayableFee> tmsPayableFeeList = initYFGenerate(ids);
 
-
-
-
-        List<TmsDispatchOrder> collect = tmsDispatchOrders.stream().map(item -> {
-            TmsDispatchOrder tmsDispatchOrder = new TmsDispatchOrder();
-            tmsDispatchOrder.setId(item.getId());
-            tmsDispatchOrder.setAccountsPayableStatus(1);
-            tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername());
-            return tmsDispatchOrder;
-        }).collect(Collectors.toList());
+        Set<Integer> dispatchIds = tmsPayableFeeList.stream().map(TmsPayableFee::getDispatchId).collect(Collectors.toSet());
         // 1銆佷慨鏀硅皟搴�
-        tmsDispatchOrderMapper.updateTmsDispatchOrderBatch(collect);
-
+       tmsDispatchOrderMapper.update(new LambdaUpdateWrapper<TmsDispatchOrder>()
+                .in(TmsDispatchOrder::getId, dispatchIds)
+                .set(TmsDispatchOrder::getAccountsPayableStatus, 1)
+                .set(TmsDispatchOrder::getUpdateBy, SecurityUtils.getUsername())
+               .set(TmsDispatchOrder::getUpdateTime, DateUtils.getNowDate())
+       );
         // 2銆佺敓鎴愬簲鏀跺崟
-
-//         tmsDispatchOrders.stream().forEach(item -> {
-//            TmsReceivableFee tmsReceivableFee = new TmsReceivableFee();
-//            String noByKey = systemDataNoService.getNoByKey(SystemDataNoEnum.YSFY);
-//
-//            tmsReceivableFee.setSystemNo(noByKey);
-//            tmsReceivableFee.setDispatchId(item.getId());
-//            tmsReceivableFee.setDispatchNo(item.getDispatchNo());
-//            tmsReceivableFee.setCustomerId(item.getCustomerId());
-//            tmsReceivableFee.setCustomerName(item.getCustomerName());
-//            tmsReceivableFee.setProjectId(item.getProjectId());
-//            tmsReceivableFee.setProjectName(item.getProjectName());
-//
-//             List<TmsReceivableFeeItem> tmsReceivableFeeItems = item.getTmsReceivableFeeItems();
-//
-//
-//             BigDecimal totalRmbAmount = tmsReceivableFeeItems.stream()
-//                    .filter(cItem -> "RMB".equals(cItem.getCurrency()))
-//                    .map(TmsReceivableFeeItem::getRegisterAmount)
-//                    .reduce(BigDecimal.ZERO, BigDecimal::add);
-//            tmsReceivableFee.setReceivableRMBAmount(totalRmbAmount);
-//
-//
-//            BigDecimal totalHkbAmount = tmsReceivableFeeItems.stream()
-//                    .filter(cItem -> "HKB".equals(cItem.getCurrency()))
-//                    .map(TmsReceivableFeeItem::getRegisterAmount)
-//                    .reduce(BigDecimal.ZERO, BigDecimal::add);
-//            tmsReceivableFee.setReceivableHKBAmount(totalHkbAmount);
-//
-//
-//            tmsReceivableFee.setDispatchConfirmTime(item.getConfirmTime());
-//            tmsReceivableFee.setCostGenerateTime(new Date());
-//            tmsReceivableFee.setStatus(0);
-//            tmsReceivableFee.setCreateBy(SecurityUtils.getUsername());
-//             tmsReceivableFeeService.insertTmsReceivableFee(tmsReceivableFee);
-//
-//
-//             tmsReceivableFeeItems.forEach(kItem -> {
-//                 kItem.setHeadId(tmsReceivableFee.getId());
-//             });
-//             tmsReceivableFeeItemService.insertTmsReceivableFeeItemBatch(tmsReceivableFeeItems);
-//         });
+        tmsPayableFeeList.forEach(tmsPayableFee ->{
+            String noByKey = systemDataNoService.getNoByKey(SystemDataNoEnum.YFFY);
+            tmsPayableFee.setSystemNo(noByKey);
+            tmsPayableFee.setCostGenerateTime(new Date());
+            tmsPayableFee.setCreateBy(SecurityUtils.getUsername());
+            tmsPayableFeeMapper.insertTmsPayableFee(tmsPayableFee);
+            List<TmsPayableFeeItem> customerItems = tmsPayableFee.getPayableFeeItems();
+            customerItems.forEach(kItem -> {
+                kItem.setHeadId(tmsPayableFee.getId());
+            });
+            tmsPayableFeeItemMapper.insertTmsPayableFeeItemBatch(customerItems);
+        });
         return AjaxResult.success();
     }
 
@@ -1123,6 +1143,21 @@
         return AjaxResult.success();
     }
 
+    public String getServiceProviderName(String serviceProviderType,Integer serviceProviderId){
+        if ("0".equals(serviceProviderType)){
+            TmsServiceProvider tmsServiceProvider = tmsServiceProviderMapper.selectTmsServiceProviderById(serviceProviderId);
+            return tmsServiceProvider.getServiceName();
+        } else   if ("1".equals(serviceProviderType)){
+            TmsCustomsServiceProvider tmsCustomsServiceProvider = tmsCustomsServiceProviderMapper.selectTmsCustomsServiceProviderById(serviceProviderId);
+            return tmsCustomsServiceProvider.getServiceName();
+        } else   if ("2".equals(serviceProviderType)){
+            TmsLoadingServiceProvider tmsLoadingServiceProvider = tmsLoadingServiceProviderMapper.selectTmsLoadingServiceProviderById(serviceProviderId);
+            return tmsLoadingServiceProvider.getServiceName();
+        }
+        return null;
+    }
+
+
     @Override
     public List<DpDriverDispatchVo> selectDpData() {
         return tmsDispatchOrderMapper.selectselectDpData();
@@ -1132,4 +1167,9 @@
     public DpDriverDispatchItemVo selectDataByNo(String no) {
         return tmsDispatchOrderMapper.selectDataByNo(no);
     }
+
+    @Override
+    public List<DpItineraryLogVo> selectItineraryLog() {
+        return tmsDispatchOrderMapper.selectItineraryLog();
+    }
 }

--
Gitblit v1.8.0