From 68b27795ae929f5300fc6fb301b31aada74a2e2f Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期二, 10 三月 2026 15:26:03 +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 |  740 ++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 632 insertions(+), 108 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 7ca5839..19fa9ae 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
@@ -8,19 +8,25 @@
 import cn.hutool.core.util.IdUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.SysUserImport;
+import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.enums.SystemDataNoEnum;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.DateUtils;
 import javax.annotation.Resource;
 
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.DownloadExportUtil;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.service.ISysDictDataService;
 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.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;
@@ -62,6 +68,8 @@
     @Resource
     private TmsQuotePlanMapper tmsQuotePlanMapper;
 
+    @Autowired
+    private RedisCache redisCache;
 
     @Autowired
     ITmsFinanceService tmsFinanceService;
@@ -85,6 +93,34 @@
     private TmsServiceProviderMapper tmsServiceProviderMapper;
     @Resource
     private TmsCustomsServiceProviderMapper tmsCustomsServiceProviderMapper;
+    @Resource
+    private  TmsTripMapper tmsTripMapper;
+    @Resource
+    private TmsPayableFeeMapper tmsPayableFeeMapper;
+    @Resource
+    private TmsPayableFeeItemMapper tmsPayableFeeItemMapper;
+    @Resource
+    private TmsProjectMapper tmsProjectMapper;
+
+    @Resource
+    TransportRouteViMapper transportRouteViMapper;
+
+    @Resource
+    private TmsDriverMapper tmsDriverMapper;
+    @Resource
+    private TmsVehicleMapper tmsVehicleMapper;
+    @Resource
+    private TmsConsignorMapper tmsConsignorMapper;
+
+    @Resource
+    private TmsContainerMapper tmsContainerMapper;
+
+    @Resource
+    private TmsShelfMapper tmsShelfMapper;
+
+    @Autowired
+    private ITmsDispatchOrderImportLogService tmsDispatchOrderImportLogService;
+
 
     /**
      * 鏌ヨ璋冨害鍗曠鐞�
@@ -164,6 +200,9 @@
         tmsDispatchOrderNew.setLicensePlate(null);
         tmsDispatchOrderNew.setUpdateBy(null);
         tmsDispatchOrderNew.setId(null);
+        tmsDispatchOrderNew.setAccountsReceivableStatus(0);
+        tmsDispatchOrderNew.setAccountsPayableStatus(0);
+
 
 
         int i = insertTmsDispatchOrder(tmsDispatchOrderNew);
@@ -194,6 +233,27 @@
         return AjaxResult.success("鎿嶄綔鎴愬姛");
     }
 
+    @Override
+    public AjaxResult close(Integer id) {
+        TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(id);
+        if (tmsDispatchOrder == null){
+            return AjaxResult.error("鏈壘鍒拌鏁版嵁");
+        }
+        if (tmsDispatchOrder.getIsfk() == 0){
+            return AjaxResult.success();
+        }
+        TmsTrip tmsTrip = tmsTripMapper.selectOne(new LambdaQueryWrapper<TmsTrip>().eq(TmsTrip::getDispatchOrderId, id)
+                .eq(TmsTrip::getTripType, 0)
+                .orderByDesc(TmsTrip::getId)
+                .last("limit 1")
+        );
+
+        if (tmsTrip != null){
+            return AjaxResult.error("璇ヨ皟搴﹀崟鐘舵�佷负銆愬湪閫斻�戯紝涓斿徃鏈轰簬銆�"+DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", tmsTrip.getTripTime())+"銆戝凡鍙戣溅锛屼笉鍏佽浣滃簾锛屽闇�鍙栨秷琛岀▼锛�" +
+                    "璇烽�氱煡鍙告満鎿嶄綔杩旂┖鍗冲彲銆�");
+        }
+        return AjaxResult.success("鎿嶄綔鎴愬姛");
+    }
 
     @Override
     public AjaxResult connectHang(TmsDriverDispatch driverDispatch) {
@@ -206,6 +266,27 @@
         return AjaxResult.success();
     }
 
+    @Override
+    public AjaxResult closeOrder(TmsDispatchOrder order) {
+        TmsDispatchOrder tmsDispatchOrder = selectTmsDispatchOrderById(order.getId());
+        if (tmsDispatchOrder == null){
+            return AjaxResult.error("鏈壘鍒拌鏁版嵁");
+        }
+        AjaxResult close = close(tmsDispatchOrder.getId());
+        if (close.isSuccess()){
+            tmsDispatchOrder.setStatus(5);
+            tmsDispatchOrder.setCloseBy(SecurityUtils.getUsername());
+            tmsDispatchOrder.setCloseTime(DateUtils.getNowDate());
+            tmsDispatchOrder.setCloseRemark(tmsDispatchOrder.getCloseRemark());
+            tmsDispatchOrder.setCloseWhy(tmsDispatchOrder.getCloseWhy());
+            tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder);
+            // TODO 鍔犳棩蹇�
+
+            return AjaxResult.success("鎿嶄綔鎴愬姛");
+        }else{
+            return close;
+        }
+    }
 
     @Override
     public int customsOrder(TmsDispatchOrder tmsDispatchOrder) {
@@ -352,6 +433,342 @@
         });
     }
 
+    @Override
+    public void importTemplate(String exportKey) {
+        String fileName = ExcelUtil.encodeFileName("tmsDispatchOrderDataTemplate");
+        DownloadExportUtil.deleteDownloadFile(redisCache, exportKey, "0");
+
+        try {
+
+            ExcelUtil<TmsDispatchOrderImport> excelUtil = new ExcelUtil<>(TmsDispatchOrderImport.class);
+            excelUtil.initialize("tmsDispatchOrderDataTemplate", null, Excel.Type.EXPORT);
+
+            TmsDispatchOrderImport tmsDispatchOrderImport = new TmsDispatchOrderImport();
+            tmsDispatchOrderImport.setProjectName("XXX椤圭洰");
+            tmsDispatchOrderImport.setTransportLine("骞夸笢鐪�/鐝犳捣甯�/棣欐床鍖�->棣欐腐鐗瑰埆琛屾斂鍖�");
+            tmsDispatchOrderImport.setRequiredVehicleTypes("10T");
+            tmsDispatchOrderImport.setOrderType("鍩虹璁㈠崟");
+            tmsDispatchOrderImport.setIsCustoms("鏄�");
+            tmsDispatchOrderImport.setIsLoad("鏄�");
+            tmsDispatchOrderImport.setIsUrgent("鏄�");
+            tmsDispatchOrderImport.setOrderTime(DateUtils.getNowDate());
+            tmsDispatchOrderImport.setLatestDeparture(DateUtils.getNowDate());
+            tmsDispatchOrderImport.setLatestArrival(DateUtils.getNowDate());
+            tmsDispatchOrderImport.setOperationMode("鏄�");
+            tmsDispatchOrderImport.setCommissionModel("涓�鏃ユ父");
+            tmsDispatchOrderImport.setMainDriverName("寮犱笁");
+            tmsDispatchOrderImport.setLicensePlate("绮12345");
+            tmsDispatchOrderImport.setShipperRegionLabel("ZXH202512110002");
+            tmsDispatchOrderImport.setReceiverRegionLabel("ZXH202512110001");
+
+            excelUtil.exportExcel(Collections.singletonList(tmsDispatchOrderImport));
+            excelUtil.finishExport(fileName);
+
+            // 璁剧疆涓嬭浇瀹屾垚鐘舵��
+            DownloadExportUtil.setDownloadFile(redisCache, exportKey, fileName);
+            logger.info("Export completed for key: {}, file: {}", exportKey, fileName);
+        } catch (Exception e) {
+            logger.error("Export failed for key: {}, error: {}", exportKey, e.getMessage(), e);
+            DownloadExportUtil.deleteDownloadFile(redisCache, exportKey, "1"); // 璁剧疆澶辫触鐘舵��
+            throw e;
+        }
+    }
+
+    private String verRequired(int line,TmsDispatchOrderImport tmsDispatchOrderImport){
+        if (StringUtils.isEmpty(tmsDispatchOrderImport.getProjectName())){
+            return "绗� "+line+" 琛� 椤圭洰鍚嶇О 涓嶈兘涓虹┖锛�";
+        }
+        if (StringUtils.isEmpty(tmsDispatchOrderImport.getTransportLine())){
+            return "绗� "+line+" 琛� 杩愯緭绾胯矾 涓嶈兘涓虹┖锛�";
+        }
+        if (StringUtils.isEmpty(tmsDispatchOrderImport.getRequiredVehicleTypes())){
+            return "绗� "+line+" 琛� 涓嬪崟杞﹀瀷 涓嶈兘涓虹┖锛�";
+        }
+        if (StringUtils.isEmpty(tmsDispatchOrderImport.getOrderType())){
+            return "绗� "+line+" 琛� 璁㈠崟绫诲瀷 涓嶈兘涓虹┖锛�";
+        }
+        if (StringUtils.isEmpty(tmsDispatchOrderImport.getIsCustoms())){
+            return "绗� "+line+" 琛� 濮旀墭鎶ュ叧 涓嶈兘涓虹┖锛�";
+        }
+        if (StringUtils.isEmpty(tmsDispatchOrderImport.getIsLoad())){
+            return "绗� "+line+" 琛� 濮旀墭瑁呭嵏 涓嶈兘涓虹┖锛�";
+        }
+        if (StringUtils.isEmpty(tmsDispatchOrderImport.getIsUrgent())){
+            return "绗� "+line+" 琛� 鏄惁绱ф�� 涓嶈兘涓虹┖锛�";
+        }
+
+        if (tmsDispatchOrderImport.getOrderTime() == null){
+            return "绗� "+line+" 琛� 涓嬪崟鏃堕棿 涓嶈兘涓虹┖锛�";
+        }
+        if (tmsDispatchOrderImport.getLatestArrival() == null){
+            return "绗� "+line+" 琛� 瑕佹眰鏈�鏅氬埌杈炬椂闂� 涓嶈兘涓虹┖锛�";
+        }
+
+
+        if (StringUtils.isEmpty(tmsDispatchOrderImport.getOperationMode())){
+            return "绗� "+line+" 琛� 鏄惁鏄嚜钀ヨ溅闃� 涓嶈兘涓虹┖锛�";
+        }
+        if ("0".equals(tmsDispatchOrderImport.getOperationMode())){
+            if (StringUtils.isEmpty(tmsDispatchOrderImport.getCommissionModel())){
+                throw new ServiceException("绗�"+line+"琛岃嚜钀ヨ溅闃熷繀濉彁鎴愭ā寮忥紒");
+            }
+        }
+        if ("1".equals(tmsDispatchOrderImport.getOperationMode())){
+            if (StringUtils.isEmpty(tmsDispatchOrderImport.getVehicleProviderName())){
+                throw new ServiceException("绗�"+line+"琛� 闈炶嚜钀ヨ溅闃� 蹇呭~杞﹁締鏈嶅姟鍟嗗悕绉帮紒");
+            }
+        }
+
+
+        if ( StringUtils.isEmpty(tmsDispatchOrderImport.getProjectName())){
+            return "绗� "+line+" 琛� 涓嬪崟鏃堕棿 涓嶈兘涓虹┖锛�";
+        }
+        if (StringUtils.isEmpty(tmsDispatchOrderImport.getMainDriverName())){
+            return "绗� "+line+" 琛� 涓婚┚椹跺憳 涓嶈兘涓虹┖锛�";
+        }
+        if (StringUtils.isEmpty(tmsDispatchOrderImport.getLicensePlate())){
+            return "绗� "+line+" 琛� 杞︾墝鍙� 涓嶈兘涓虹┖锛�";
+        }
+        if (StringUtils.isEmpty(tmsDispatchOrderImport.getShipperRegionLabel())){
+            return "绗� "+line+" 琛� 瑁呰揣鐐圭紪鐮� 涓嶈兘涓虹┖锛�";
+        }
+        if (StringUtils.isEmpty(tmsDispatchOrderImport.getReceiverRegionLabel())){
+            return "绗� "+line+" 琛� 鍗歌揣鍦扮紪鐮� 涓嶈兘涓虹┖锛�";
+        }
+
+        return null;
+
+    }
+
+
+    @Override
+    public String importData(List<TmsDispatchOrderImport> list) {
+
+        if (StringUtils.isNull(list) || list.isEmpty())
+        {
+            throw new ServiceException("瀵煎叆璋冨害鍗曟暟鎹笉鑳戒负绌猴紒");
+        }
+        int failureNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+        StringBuilder failureDescription = new StringBuilder();
+        int line = 1;
+        
+        // 鍒涘缓瀵煎叆鏃ュ織瀵硅薄
+        TmsDispatchOrderImportLog importLog = new TmsDispatchOrderImportLog();
+        importLog.setImportTime(DateUtils.getNowDate());
+        importLog.setFileName("璋冨害鍗曞鍏ユ枃浠�"); // 杩欓噷闇�瑕佹牴鎹疄闄呮儏鍐佃幏鍙栨枃浠跺悕
+        importLog.setOperator(SecurityUtils.getUsername());
+        importLog.setCreateBy(SecurityUtils.getUsername());
+        importLog.setCreateTime(DateUtils.getNowDate());
+        
+        for (TmsDispatchOrderImport tmsDispatchOrderImport : list){
+            try
+            {
+                String s = verRequired(line, tmsDispatchOrderImport);
+                if (s != null){
+                    throw new ServiceException(s);
+                }
+                TmsDispatchOrder tmsDispatchOrder = new TmsDispatchOrder();
+                String projectName = tmsDispatchOrderImport.getProjectName();
+
+                TmsProject tmsProject = tmsProjectMapper.selectOne(new LambdaQueryWrapper<TmsProject>().
+                        eq(TmsProject::getProjectName, projectName)
+                        .last("limit 1"));
+                if (tmsProject == null){
+                    throw new ServiceException("绗�"+line+"琛岄」鐩笉瀛樺湪锛�");
+                }
+
+                TransportRouteVi transportRouteVi = transportRouteViMapper.selectOne(new LambdaQueryWrapper<TransportRouteVi>()
+                        .eq(TransportRouteVi::getTransportRoute, tmsDispatchOrderImport.getTransportLine())
+                        .eq(TransportRouteVi::getProjectId, tmsProject.getId())
+                        .eq(TransportRouteVi::getCustomerId, tmsProject.getRelatedCustomerId())
+                        .eq(TransportRouteVi::getVehicleType, tmsDispatchOrderImport.getRequiredVehicleTypes())
+                        .last("limit 1")
+                );
+
+                if (transportRouteVi == null){
+                    throw new ServiceException("绗�"+line+"琛岀嚎璺俊鎭笉瀛樺湪锛�");
+                }
+
+                tmsDispatchOrder.setQuoteDetailId(transportRouteVi.getQuoteDetailId());
+                tmsDispatchOrder.setTransportLine(transportRouteVi.getTransportRoute());
+                tmsDispatchOrder.setStartRegionCode(transportRouteVi.getStartRegionCode());
+                tmsDispatchOrder.setEndRegionCode(transportRouteVi.getEndRegionCode());
+                tmsDispatchOrder.setProjectName(transportRouteVi.getProjectName());
+                tmsDispatchOrder.setProjectId(transportRouteVi.getProjectId());
+
+                // 鍏宠仈瀹㈡埛
+                tmsDispatchOrder.setCustomerId(transportRouteVi.getCustomerId());
+                tmsDispatchOrder.setCustomerName(transportRouteVi.getCustomerFullName());
+                tmsDispatchOrder.setCustomerCode(transportRouteVi.getCustomerCode());
+
+                tmsDispatchOrder.setContractId(transportRouteVi.getContractId());
+                tmsDispatchOrder.setContractName(transportRouteVi.getContractName());
+
+                tmsDispatchOrder.setRequiredVehicleTypes(tmsDispatchOrderImport.getRequiredVehicleTypes());
+                tmsDispatchOrder.setQuotePlanId(transportRouteVi.getQuotePlanId());
+
+                tmsDispatchOrder.setOrderType(Integer.valueOf(tmsDispatchOrderImport.getOrderType()));
+                tmsDispatchOrder.setIsCustoms(Integer.valueOf(tmsDispatchOrderImport.getIsCustoms()));
+                tmsDispatchOrder.setIsLoad(Integer.valueOf(tmsDispatchOrderImport.getIsLoad()));
+                tmsDispatchOrder.setIsUrgent(Integer.valueOf(tmsDispatchOrderImport.getIsUrgent()));
+                tmsDispatchOrder.setOrderTime(tmsDispatchOrderImport.getOrderTime());
+                tmsDispatchOrder.setLatestDeparture(tmsDispatchOrderImport.getLatestDeparture());
+                tmsDispatchOrder.setLatestArrival(tmsDispatchOrderImport.getLatestArrival());
+                tmsDispatchOrder.setOperationMode(Integer.valueOf(tmsDispatchOrderImport.getOperationMode()));
+                if (tmsDispatchOrder.getOperationMode() == 0){
+                   tmsDispatchOrder.setCommissionModel(Integer.valueOf(tmsDispatchOrderImport.getCommissionModel()));
+                } else {
+
+                    TmsServiceProvider tmsServiceProvider = tmsServiceProviderMapper.selectOne(new LambdaQueryWrapper<TmsServiceProvider>().
+                            eq(TmsServiceProvider::getServiceName,
+                                    tmsDispatchOrderImport.getVehicleProviderName())
+                            .last("limit 1")
+                    );
+                    if (tmsServiceProvider == null){
+                        throw new ServiceException("绗�"+line+"琛岃溅杈嗘湇鍔″晢涓嶅瓨鍦紒");
+                    }
+                    tmsDispatchOrder.setVehicleProviderId(tmsServiceProvider.getId());
+                    tmsDispatchOrder.setVehicleProviderName(tmsServiceProvider.getServiceName());
+                }
+                TmsDriver tmsDriver = tmsDriverMapper.selectOne(new LambdaQueryWrapper<TmsDriver>().
+                        eq(TmsDriver::getDriverName, tmsDispatchOrderImport.getMainDriverName())
+                        .last("limit 1")
+                );
+                if (tmsDriver == null){
+                    throw new ServiceException("绗�"+line+"琛屼富椹鹃┒鍛樹笉瀛樺湪锛�");
+                }
+
+                tmsDispatchOrder.setMainDriverId(tmsDriver.getId());
+                tmsDispatchOrder.setMainDriverName(tmsDriver.getDriverName());
+                if (!StringUtils.isEmpty(tmsDispatchOrderImport.getAssistantDriverName())){
+
+                    TmsDriver tmsDriver1 = tmsDriverMapper.selectOne(new LambdaQueryWrapper<TmsDriver>().
+                        eq(TmsDriver::getDriverName, tmsDispatchOrderImport.getAssistantDriverName())
+                        .last("limit 1")
+                    );
+                    if (tmsDriver1 != null){
+                        tmsDispatchOrder.setAssistantDriverId(tmsDriver1.getId());
+                        tmsDispatchOrder.setAssistantDriverName(tmsDriver1.getDriverName());
+                    }
+
+                }
+
+
+                TmsVehicle tmsVehicle = tmsVehicleMapper.selectOne(new LambdaQueryWrapper<TmsVehicle>()
+                        .eq(TmsVehicle::getLicensePlate, tmsDispatchOrderImport.getLicensePlate())
+                        .last("limit 1")
+                );
+                if (tmsVehicle == null){
+                    throw new ServiceException("绗�"+line+"琛岃溅鐗屽彿涓嶅瓨鍦紒");
+                }
+
+                tmsDispatchOrder.setVehicleId(tmsVehicle.getId());
+                tmsDispatchOrder.setLicensePlate(tmsVehicle.getLicensePlate());
+                tmsDispatchOrder.setActualVehicleType(tmsVehicle.getVehicleType());
+
+                TmsConsignor shipper = tmsConsignorMapper.selectOne(new LambdaQueryWrapper<TmsConsignor>()
+                        .eq(TmsConsignor::getConsignorCode,
+                                tmsDispatchOrderImport.getShipperRegionLabel())
+                        .eq(TmsConsignor::getCustomerId, tmsDispatchOrder.getCustomerId())
+                        .last("limit 1")
+                );
+
+                if (shipper == null){
+                    throw new ServiceException("绗�"+line+"琛岃璐х偣涓嶅瓨鍦紒");
+                }
+                tmsDispatchOrder.setShipperId(shipper.getId());
+                tmsDispatchOrder.setShipperName(shipper.getConsignorName());
+                tmsDispatchOrder.setShipperRegionLabel(shipper.getRegionLabel());
+                tmsDispatchOrder.setShipperAddress(shipper.getAddressDetail());
+                tmsDispatchOrder.setShipperMobile(shipper.getContactPhone());
+                tmsDispatchOrder.setShipperRegionCode(shipper.getRegion());
+
+
+                TmsConsignor receiver = tmsConsignorMapper.selectOne(new LambdaQueryWrapper<TmsConsignor>()
+                        .eq(TmsConsignor::getConsignorCode,
+                                tmsDispatchOrderImport.getReceiverRegionLabel())
+                        .eq(TmsConsignor::getCustomerId, tmsDispatchOrder.getCustomerId())
+                        .last("limit 1")
+                );
+                if (receiver == null){
+                    throw new ServiceException("绗�"+line+"琛屽嵏璐у湴涓嶅瓨鍦紒");
+                }
+                tmsDispatchOrder.setReceiverId(receiver.getId());
+                tmsDispatchOrder.setReceiverName(receiver.getConsignorName());
+                tmsDispatchOrder.setReceiverRegionLabel(receiver.getRegionLabel());
+                tmsDispatchOrder.setReceiverAddress(receiver.getAddressDetail());
+                tmsDispatchOrder.setReceiverMobile(receiver.getContactPhone());
+                tmsDispatchOrder.setReceiverRegionCode(receiver.getRegion());
+
+                if (!StringUtils.isEmpty(tmsDispatchOrderImport.getContainerNo())){
+                    TmsContainer tmsContainer = tmsContainerMapper.selectOne(new LambdaQueryWrapper<TmsContainer>()
+                            .eq(TmsContainer::getContainerCode, tmsDispatchOrderImport.getContainerNo())
+                            .last("limit 1")
+                    );
+                    if (tmsContainer == null){
+                        throw new ServiceException("绗�"+line+"琛岄泦瑁呯涓嶅瓨鍦紒");
+                    }
+                    tmsDispatchOrder.setContainerId(tmsContainer.getId());
+                    tmsDispatchOrder.setContainerNo(tmsContainer.getContainerCode());
+                }
+
+                if (!StringUtils.isEmpty(tmsDispatchOrderImport.getShelfCode())){
+                    TmsShelf tmsShelf = tmsShelfMapper.selectOne(new LambdaQueryWrapper<TmsShelf>()
+                        .eq(TmsShelf::getShelfCode, tmsDispatchOrderImport.getShelfCode())
+                        .last("limit 1")
+                    );
+                    if (tmsShelf == null){
+                        throw new ServiceException("绗�"+line+"琛屾墭鏋朵笉瀛樺湪锛�");
+                    }
+                    tmsDispatchOrder.setShelfId(tmsShelf.getId());
+                    tmsDispatchOrder.setShelfCode(tmsShelf.getShelfCode());
+                }
+                String noByKey = systemDataNoService.getNoByKey(SystemDataNoEnum.DL);
+                tmsDispatchOrder.setDispatchNo(noByKey);
+
+                tmsDispatchOrder.setCreateBy(SecurityUtils.getUsername());
+                tmsDispatchOrder.setCreateTime(DateUtils.getNowDate());
+                tmsDispatchOrderMapper.insertTmsDispatchOrder(tmsDispatchOrder);
+            }catch (Exception e) {
+                failureNum++;
+                String msg = "<br/>" +  "璋冨害鍗曠"+line+"琛屽鍏ュけ璐ワ細";
+                failureMsg.append(msg + e.getMessage());
+                
+                // 璁板綍澶辫触璇存槑锛屽寘鍚鍙峰拰澶辫触鍘熷洜
+                failureDescription.append("绗�" + line + "琛岋細" + e.getMessage()).append("\n");
+                
+                log.error(msg, e);
+            }finally {
+                line++;
+            }
+        }
+
+        // 璁剧疆瀵煎叆鏃ュ織鐨勭粺璁′俊鎭�
+        importLog.setSuccessCount(list.size() - failureNum);
+        importLog.setFailureCount(failureNum);
+        importLog.setFailureDescription(failureDescription.toString());
+        
+        // 淇濆瓨瀵煎叆鏃ュ織
+        try {
+            tmsDispatchOrderImportLogService.insertTmsDispatchOrderImportLog(importLog);
+        } catch (Exception e) {
+            log.error("淇濆瓨瀵煎叆鏃ュ織澶辫触锛�", e);
+        }
+
+        if (failureNum > 0)
+        {
+            failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細");
+            throw new ServiceException(failureMsg.toString());
+        }
+        else
+        {
+            successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏� " + list.size() + " 鏉�");
+        }
+
+        return successMsg.toString() ;
+    }
 
     /**
      * 鏂板璋冨害鍗曠鐞�
@@ -396,6 +813,52 @@
 
         tmsDispatchOrder.setUpdateTime(DateUtils.getNowDate());
         return tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder);
+    }
+
+    @Override
+    public int updateTmsDispatchOrder(YpdddjDispatchOrderVo dispatchOrderVo)
+    {
+        return tmsDispatchOrderMapper.update(new LambdaUpdateWrapper<TmsDispatchOrder>()
+                .in(TmsDispatchOrder::getDispatchNo,dispatchOrderVo.getDispatchNos())
+                .set(dispatchOrderVo.getShipperId()!=null,TmsDispatchOrder::getShipperId,dispatchOrderVo.getShipperId())
+                .set(StringUtils.isNotEmpty(dispatchOrderVo.getShipperName()),TmsDispatchOrder::getShipperName,dispatchOrderVo.getShipperName())
+                .set(StringUtils.isNotEmpty(dispatchOrderVo.getShipperRegionLabel()),TmsDispatchOrder::getShipperRegionLabel,dispatchOrderVo.getShipperRegionLabel())
+                .set(StringUtils.isNotEmpty(dispatchOrderVo.getShipperAddress()),TmsDispatchOrder::getShipperAddress,dispatchOrderVo.getShipperAddress())
+                .set(StringUtils.isNotEmpty(dispatchOrderVo.getShipperMobile()),TmsDispatchOrder::getShipperMobile,dispatchOrderVo.getShipperMobile())
+                .set(StringUtils.isNotEmpty(dispatchOrderVo.getShipperRegionCode()),TmsDispatchOrder::getShipperRegionCode,dispatchOrderVo.getShipperRegionCode())
+
+                .set(dispatchOrderVo.getReceiverId()!=null,TmsDispatchOrder::getReceiverId,dispatchOrderVo.getReceiverId())
+                .set(StringUtils.isNotEmpty(dispatchOrderVo.getReceiverName()),TmsDispatchOrder::getReceiverName,dispatchOrderVo.getReceiverName())
+                .set(StringUtils.isNotEmpty(dispatchOrderVo.getReceiverRegionLabel()),TmsDispatchOrder::getReceiverRegionLabel,dispatchOrderVo.getReceiverRegionLabel())
+                .set(StringUtils.isNotEmpty(dispatchOrderVo.getReceiverAddress()),TmsDispatchOrder::getReceiverAddress,dispatchOrderVo.getReceiverAddress())
+                .set(StringUtils.isNotEmpty(dispatchOrderVo.getReceiverMobile()),TmsDispatchOrder::getReceiverMobile,dispatchOrderVo.getReceiverMobile())
+                .set(StringUtils.isNotEmpty(dispatchOrderVo.getReceiverRegionCode()),TmsDispatchOrder::getReceiverRegionCode,dispatchOrderVo.getReceiverRegionCode())
+
+                .set(TmsDispatchOrder::getUpdateBy,SecurityUtils.getUsername())
+                .set(TmsDispatchOrder::getUpdateTime,DateUtils.getNowDate())
+        );
+
+    }
+
+    @Override
+    public int printDispatchOrder(TmsDispatchOrder tmsDispatchOrder)
+    {
+        return tmsDispatchOrderMapper.update(null,new LambdaUpdateWrapper<TmsDispatchOrder>()
+                .eq(TmsDispatchOrder::getId,tmsDispatchOrder.getId())
+                .set(TmsDispatchOrder::getIsPrint,0)
+                        .setSql("print_count = IFNULL(print_count, 0) + 1")
+                        .set(TmsDispatchOrder::getPrintTime,new Date())
+                        .set(TmsDispatchOrder::getPrintBy,SecurityUtils.getUsername())
+                        .set(TmsDispatchOrder::getSixLinkNo,tmsDispatchOrder.getSixLinkNo())
+                        .set(TmsDispatchOrder::getPortName,tmsDispatchOrder.getPortName())
+                        .set(TmsDispatchOrder::getBillNo,tmsDispatchOrder.getBillNo())
+                        .set(TmsDispatchOrder::getTerminalName,tmsDispatchOrder.getTerminalName())
+                        .set(TmsDispatchOrder::getCargoName,tmsDispatchOrder.getCargoName())
+                        .set(TmsDispatchOrder::getPieceCount,tmsDispatchOrder.getPieceCount())
+                        .set(TmsDispatchOrder::getWeight,tmsDispatchOrder.getWeight())
+                        .set(TmsDispatchOrder::getContactName,tmsDispatchOrder.getContactName())
+                        .set(TmsDispatchOrder::getContactPhone,tmsDispatchOrder.getContactPhone())
+                );
     }
 
     /**
@@ -539,7 +1002,7 @@
                     // 闈炶嚜钀ラ渶瑕佹湁杩愯垂
                     // 杞﹁締鏈嶅姟鍟�
                     // 瀹為檯杞﹀瀷
-                    String actualVehicleType = tmsDispatchOrder.getActualVehicleType();
+                    String actualVehicleType = tmsDispatchOrder.getRequiredVehicleTypes();
                     // 鍑哄彂璺嚎 44,4404,440402,440402102
                     String shipperRegionCode = tmsDispatchOrder.getStartRegionCode();
                     // 鐩殑鍦拌矾绾� 81,8100,810000
@@ -549,8 +1012,8 @@
                     TmsQuoteDetail tmsQuoteDetail = tmsQuoteDetailMapper.selectOne(new LambdaQueryWrapper<TmsQuoteDetail>()
                             .eq(TmsQuoteDetail::getCustomerId, customerId)
                             .eq(TmsQuoteDetail::getVehicleType, actualVehicleType)
-                            .eq(TmsQuoteDetail::getStartRegionCode, shipperRegionCode)
-                            .eq(TmsQuoteDetail::getEndRegionCode, receiverRegionCode)
+                            .likeRight(TmsQuoteDetail::getStartRegionCode, shipperRegionCode)
+                            .likeRight(TmsQuoteDetail::getEndRegionCode, receiverRegionCode)
                             .eq(TmsQuoteDetail::getPlanType, 0)
                             .last("limit 1")
                     );
@@ -652,11 +1115,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()+"搴斾粯璐﹀崟宸茬敓鎴愶紝璇峰厛浣滃簾");
@@ -676,30 +1139,45 @@
                     String receiverRegionCode = tmsDispatchOrder.getEndRegionCode();
 
                     // 鏌ヨ搴旀敹瑙勫垯
-                    TmsQuoteDetail tmsQuoteDetail = tmsQuoteDetailMapper.selectOne(new LambdaQueryWrapper<TmsQuoteDetail>()
-                            .eq(TmsQuoteDetail::getVehicleProviderId, vehicleProviderId)
-                            .eq(TmsQuoteDetail::getVehicleType, actualVehicleType)
-                            .eq(TmsQuoteDetail::getStartRegionCode, shipperRegionCode)
-                            .eq(TmsQuoteDetail::getEndRegionCode, receiverRegionCode)
-                            .eq(TmsQuoteDetail::getPlanType, 1)
-                            .last("limit 1")
-                    );
+                    TmsQuoteDetail tmsQuoteDetail =
+                            tmsQuoteDetailMapper.selectOne(
+                                    new LambdaQueryWrapper<TmsQuoteDetail>()
+                                            .eq(TmsQuoteDetail::getVehicleType, actualVehicleType)
+                                            .likeRight(TmsQuoteDetail::getStartRegionCode, shipperRegionCode)
+                                            .likeRight(TmsQuoteDetail::getEndRegionCode, receiverRegionCode)
+                                            .eq(TmsQuoteDetail::getPlanType, 1)
+                                            .exists(
+                                                    "SELECT 1 " +
+                                                            "FROM tms_quote_plan tqp " +
+                                                            "WHERE tqp.id = tms_quote_detail.quote_plan_id " +
+                                                            "AND tqp.provider_id = {0} " +
+                                                            "AND tqp.plan_type = 1 " +
+                                                            "AND tqp.provider_type = 0",
+                                                    vehicleProviderId
+                                            )
+                                            .last("LIMIT 1")
+                            );
+
 
 
 
                     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銆� 鑾峰彇瀹炴姤瀹為攢璐圭敤
@@ -710,18 +1188,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);
                     });
                 }
 
@@ -735,25 +1215,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
@@ -825,69 +1359,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();
     }
 
@@ -1041,4 +1535,34 @@
         }
         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();
+    }
+
+    @Override
+    public DpDriverDispatchItemVo selectDataByNo(String no) {
+        return tmsDispatchOrderMapper.selectDataByNo(no);
+    }
+
+    @Override
+    public List<DpItineraryLogVo> selectItineraryLog() {
+        return tmsDispatchOrderMapper.selectItineraryLog();
+    }
 }

--
Gitblit v1.8.0