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 | 1043 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 1,032 insertions(+), 11 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 fff168e..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
@@ -1,29 +1,34 @@
package com.ruoyi.tms.service.impl;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
import java.util.stream.Collectors;
import cn.hutool.core.bean.BeanUtil;
+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.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 com.ruoyi.tms.domain.vo.*;
+import com.ruoyi.tms.mapper.*;
+import com.ruoyi.tms.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
@@ -36,8 +41,6 @@
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.core.service.BaseService;
-import com.ruoyi.tms.mapper.TmsDispatchOrderMapper;
-import com.ruoyi.tms.service.ITmsDispatchOrderService;
import com.ruoyi.common.core.text.Convert;
/**
@@ -65,9 +68,60 @@
@Resource
private TmsQuotePlanMapper tmsQuotePlanMapper;
+ @Autowired
+ private RedisCache redisCache;
@Autowired
ITmsFinanceService tmsFinanceService;
+ @Autowired
+ private ITmsFinanceDetailService tmsFinanceDetailService;
+ @Autowired
+ private ITmsQuoteFeeService tmsQuoteFeeService;
+
+ @Autowired
+ ISysDictDataService sysDictDataService;
+
+ @Autowired
+ private ITmsReceivableFeeService tmsReceivableFeeService;
+ @Autowired
+ private ITmsReceivableFeeItemService tmsReceivableFeeItemService;
+ @Autowired
+ private TmsDriverDispatchServiceImpl tmsDriverDispatchServiceImpl;
+ @Resource
+ private TmsLoadingServiceProviderMapper tmsLoadingServiceProviderMapper;
+ @Resource
+ 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;
+
+
/**
* 鏌ヨ璋冨害鍗曠鐞�
*
@@ -146,6 +200,9 @@
tmsDispatchOrderNew.setLicensePlate(null);
tmsDispatchOrderNew.setUpdateBy(null);
tmsDispatchOrderNew.setId(null);
+ tmsDispatchOrderNew.setAccountsReceivableStatus(0);
+ tmsDispatchOrderNew.setAccountsPayableStatus(0);
+
int i = insertTmsDispatchOrder(tmsDispatchOrderNew);
@@ -176,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) {
@@ -186,6 +264,47 @@
driverDispatch.setStatus(2);
tmsDriverDispatchService.insertTmsDriverDispatch(driverDispatch);
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) {
+ return tmsDispatchOrderMapper.update(new LambdaUpdateWrapper<TmsDispatchOrder>()
+ .eq(TmsDispatchOrder::getId, tmsDispatchOrder.getId())
+ .set(TmsDispatchOrder::getCustomsServiceProviderId, tmsDispatchOrder.getCustomsServiceProviderId())
+ .set(TmsDispatchOrder::getCustomsServiceProviderName, tmsDispatchOrder.getCustomsServiceProviderName())
+ );
+
+ }
+
+ @Override
+ public int loadingOrder(TmsDispatchOrder tmsDispatchOrder) {
+ return tmsDispatchOrderMapper.update(new LambdaUpdateWrapper<TmsDispatchOrder>()
+ .eq(TmsDispatchOrder::getId, tmsDispatchOrder.getId())
+ .set(TmsDispatchOrder::getLoadingServiceProviderId, tmsDispatchOrder.getLoadingServiceProviderId())
+ .set(TmsDispatchOrder::getLoadingServiceProviderName, tmsDispatchOrder.getLoadingServiceProviderName())
+ );
}
@Override
@@ -314,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() ;
+ }
/**
* 鏂板璋冨害鍗曠鐞�
@@ -358,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())
+ );
}
/**
@@ -413,6 +914,10 @@
List<TmsDispatchOrder> tmsDispatchOrders = tmsDispatchOrderMapper.selectBatchIds(ids);
if (tmsDispatchOrders != null && !tmsDispatchOrders.isEmpty()){
tmsDispatchOrders.forEach(tmsDispatchOrder -> {
+
+ // 1銆佹槸鍚︽槸澶栧崗
+// tmsDispatchOrder.is
+
// 瀹㈡埛ID
Integer customerId = tmsDispatchOrder.getCustomerId();
@@ -481,8 +986,418 @@
}
@Override
+ public List<TmsDispatchOrder> initYSGenerate(List<Integer> ids) {
+ List<TmsDispatchOrder> tmsDispatchOrders = tmsDispatchOrderMapper.selectBatchIds(ids);
+ if (tmsDispatchOrders != null && !tmsDispatchOrders.isEmpty()){
+ tmsDispatchOrders.forEach(tmsDispatchOrder -> {
+ List<TmsReceivableFeeItem> tmsReceivableFeeItems = new ArrayList<>();
+ if (tmsDispatchOrder.getAccountsReceivableStatus() != null &&
+ tmsDispatchOrder.getAccountsReceivableStatus() == 1){
+ throw new RuntimeException(tmsDispatchOrder.getDispatchNo()+"搴旀敹璐﹀崟宸茬敓鎴愶紝璇峰厛浣滃簾");
+ }
+ // 瀹㈡埛ID
+ Integer customerId = tmsDispatchOrder.getCustomerId();
+ // 1銆佹槸鍚︽槸鑷惀 0 = 鏄� 1 = 鍚� 鑾峰彇杩愯垂
+ //if(tmsDispatchOrder.getOperationMode().equals(1)){
+ // 闈炶嚜钀ラ渶瑕佹湁杩愯垂
+ // 杞﹁締鏈嶅姟鍟�
+ // 瀹為檯杞﹀瀷
+ String actualVehicleType = tmsDispatchOrder.getRequiredVehicleTypes();
+ // 鍑哄彂璺嚎 44,4404,440402,440402102
+ String shipperRegionCode = tmsDispatchOrder.getStartRegionCode();
+ // 鐩殑鍦拌矾绾� 81,8100,810000
+ String receiverRegionCode = tmsDispatchOrder.getEndRegionCode();
+
+ // 鏌ヨ搴旀敹瑙勫垯
+ TmsQuoteDetail tmsQuoteDetail = tmsQuoteDetailMapper.selectOne(new LambdaQueryWrapper<TmsQuoteDetail>()
+ .eq(TmsQuoteDetail::getCustomerId, customerId)
+ .eq(TmsQuoteDetail::getVehicleType, actualVehicleType)
+ .likeRight(TmsQuoteDetail::getStartRegionCode, shipperRegionCode)
+ .likeRight(TmsQuoteDetail::getEndRegionCode, receiverRegionCode)
+ .eq(TmsQuoteDetail::getPlanType, 0)
+ .last("limit 1")
+ );
+
+
+
+ if (tmsQuoteDetail == null){
+ throw new RuntimeException("璋冨害鍗�"+tmsDispatchOrder.getDispatchNo()+"鏈淮鎶ゅ簲鏀惰繍璐规姤浠凤紝璇风淮鎶ゆ暟鎹悗鍐嶉噸鏂扮敓鎴�");
+ }
+
+ if (tmsQuoteDetail.getIsSegmentedInvoice() == 1){
+ 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);
+ }else{
+ TmsReceivableFeeItem tmsReceivableFeeItemOne = new TmsReceivableFeeItem();
+ tmsReceivableFeeItemOne.setFeeType(0);
+ tmsReceivableFeeItemOne.setFeeName("涓�娈佃繍璐�");
+ tmsReceivableFeeItemOne.setTypeId(tmsQuoteDetail.getId());
+ tmsReceivableFeeItemOne.setRegisterAmount(tmsQuoteDetail.getSegment1FreightQuote());
+ tmsReceivableFeeItemOne.setRegisterTime(tmsDispatchOrder.getConfirmTime());
+ tmsReceivableFeeItemOne.setCurrency(tmsQuoteDetail.getSegment1Currency());
+
+ tmsReceivableFeeItemOne.setRowKey(IdUtil.objectId());
+
+ tmsReceivableFeeItems.add(tmsReceivableFeeItemOne);
+
+
+ TmsReceivableFeeItem tmsReceivableFeeItemTwo = new TmsReceivableFeeItem();
+ tmsReceivableFeeItemTwo.setFeeType(0);
+ tmsReceivableFeeItemTwo.setFeeName("浜屾杩愯垂");
+ tmsReceivableFeeItemTwo.setTypeId(tmsQuoteDetail.getId());
+ tmsReceivableFeeItemTwo.setRegisterAmount(tmsQuoteDetail.getSegment2FreightQuote());
+ tmsReceivableFeeItemTwo.setRegisterTime(tmsDispatchOrder.getConfirmTime());
+ tmsReceivableFeeItemTwo.setCurrency(tmsQuoteDetail.getSegment2Currency());
+ tmsReceivableFeeItemTwo.setRowKey(IdUtil.objectId());
+
+ tmsReceivableFeeItems.add(tmsReceivableFeeItemTwo);
+
+ }
+ //}
+ // 2銆� 鑾峰彇瀹炴姤瀹為攢璐圭敤
+ List<TmsFinanceDetail> tmsFinanceDetails = tmsFinanceDetailService.selectTmsFinanceDetailList(new TmsFinanceDetail() {{
+ setDispatchOrderId(tmsDispatchOrder.getId());
+ }});
+
+ if (tmsFinanceDetails != null && !tmsFinanceDetails.isEmpty()){
+ tmsFinanceDetails.forEach(tmsFinanceDetail -> {
+ TmsReceivableFeeItem tmsReceivableFeeItem = new TmsReceivableFeeItem();
+ tmsReceivableFeeItem.setFeeType(2);
+
+ String feeName = sysDictDataService.selectDictLabel("fee_type", tmsFinanceDetail.getFeeType());
+ tmsReceivableFeeItem.setFeeName(feeName);
+ tmsReceivableFeeItem.setTypeId(tmsFinanceDetail.getId());
+ tmsReceivableFeeItem.setRegisterAmount(tmsFinanceDetail.getActualFeeAmount());
+ tmsReceivableFeeItem.setRegisterTime(tmsFinanceDetail.getUpdateTime());
+ tmsReceivableFeeItem.setCurrency(tmsFinanceDetail.getCurrency());
+ tmsReceivableFeeItem.setRowKey(IdUtil.objectId());
+
+ tmsReceivableFeeItems.add(tmsReceivableFeeItem);
+ });
+ }
+
+
+ // 3銆� 鑾峰彇鎶ヤ环璐圭敤
+// tmsDispatchOrder.is
+ List<TmsQuoteFee> tmsQuoteFees = tmsQuoteFeeService.selectTmsQuoteFeeList(new TmsQuoteFee() {{
+ setDispatchId(tmsDispatchOrder.getId());
+ }});
+
+ 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.getSum());
+ tmsReceivableFeeItem.setRegisterTime(item.getCreateTime());
+ tmsReceivableFeeItem.setCurrency(item.getCurrency());
+ tmsReceivableFeeItem.setRowKey(IdUtil.objectId());
+
+ tmsReceivableFeeItems.add(tmsReceivableFeeItem);
+ });
+ }
+
+
+
+ tmsDispatchOrder.setTmsReceivableFeeItems(tmsReceivableFeeItems);
+ });
+ }
+ return tmsDispatchOrders;
+ }
+
+
+ @Override
+ public List<TmsPayableFee> initYFGenerate(List<Integer> ids) {
+ List<TmsDispatchOrder> tmsDispatchOrders = tmsDispatchOrderMapper.selectBatchIds(ids);
+ if (tmsDispatchOrders != null && !tmsDispatchOrders.isEmpty()){
+ tmsDispatchOrders.forEach(tmsDispatchOrder -> {
+ List<TmsPayableFeeItem> tmsPayableFeeItems = new ArrayList<>();
+ if (tmsDispatchOrder.getAccountsPayableStatus() != null &&
+ tmsDispatchOrder.getAccountsPayableStatus() == 1){
+ throw new RuntimeException(tmsDispatchOrder.getDispatchNo()+"搴斾粯璐﹀崟宸茬敓鎴愶紝璇峰厛浣滃簾");
+ }
+ // 瀹㈡埛ID
+ Integer customerId = tmsDispatchOrder.getCustomerId();
+ // 1銆佹槸鍚︽槸鑷惀 0 = 鏄� 1 = 鍚� 鑾峰彇杩愯垂
+ if(tmsDispatchOrder.getOperationMode().equals(1)){
+ // 闈炶嚜钀ラ渶瑕佹湁杩愯垂
+ // 杞﹁締鏈嶅姟鍟�
+ Integer vehicleProviderId = tmsDispatchOrder.getVehicleProviderId();
+ // 瀹為檯杞﹀瀷
+ String actualVehicleType = tmsDispatchOrder.getActualVehicleType();
+ // 鍑哄彂璺嚎 44,4404,440402,440402102
+ String shipperRegionCode = tmsDispatchOrder.getStartRegionCode();
+ // 鐩殑鍦拌矾绾� 81,8100,810000
+ String receiverRegionCode = tmsDispatchOrder.getEndRegionCode();
+
+ // 鏌ヨ搴旀敹瑙勫垯
+ 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());
+
+ tmsPayableFeeItem.setServiceProviderId(vehicleProviderId);
+ tmsPayableFeeItem.setServiceProviderName(tmsDispatchOrder.getVehicleProviderName());
+ tmsPayableFeeItem.setServiceProviderType("0");
+
+ tmsPayableFeeItems.add(tmsPayableFeeItem);
+
+ }
+ // 2銆� 鑾峰彇瀹炴姤瀹為攢璐圭敤
+ List<TmsFinanceDetail> tmsFinanceDetails = tmsFinanceDetailService.selectTmsFinanceDetailList(new TmsFinanceDetail() {{
+ setDispatchOrderId(tmsDispatchOrder.getId());
+ setIsYF(1);
+ }});
+
+ if (tmsFinanceDetails != null && !tmsFinanceDetails.isEmpty()){
+ tmsFinanceDetails.forEach(tmsFinanceDetail -> {
+ TmsPayableFeeItem tmsPayableFeeItem = new TmsPayableFeeItem();
+ tmsPayableFeeItem.setFeeType(2);
+
+ String feeName = sysDictDataService.selectDictLabel("fee_type", tmsFinanceDetail.getFeeType());
+ 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);
+ });
+ }
+
+
+ // 3銆� 鑾峰彇鎶ヤ环璐圭敤
+// tmsDispatchOrder.is
+ List<TmsQuoteFee> tmsQuoteFees = tmsQuoteFeeService.selectTmsQuoteFeeList(new TmsQuoteFee() {{
+ setDispatchId(tmsDispatchOrder.getId());
+ setIsYF(1);
+ }});
+
+ if (tmsQuoteFees != null && !tmsQuoteFees.isEmpty()){
+ tmsQuoteFees.forEach(item -> {
+ 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());
+
+ tmsPayableFeeItem.setServiceProviderId(item.getServiceProviderId());
+ tmsPayableFeeItem.setServiceProviderName(getServiceProviderName(item.getServiceProviderType(),item.getServiceProviderId()));
+ tmsPayableFeeItem.setServiceProviderType(item.getServiceProviderType());
+
+ tmsPayableFeeItems.add(tmsPayableFeeItem);
+ });
+ }
+ tmsDispatchOrder.setTmsPayableFeeItems(tmsPayableFeeItems);
+ });
+ }
+ 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
+ public AjaxResult ysGenerateTmsDispatchOrder(List<Integer> ids) {
+ List<TmsDispatchOrder> tmsDispatchOrders = initYSGenerate(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<TmsDispatchOrder> collect = tmsDispatchOrders.stream().map(item -> {
+ TmsDispatchOrder tmsDispatchOrder = new TmsDispatchOrder();
+ tmsDispatchOrder.setId(item.getId());
+ tmsDispatchOrder.setAccountsReceivableStatus(1);
+ tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername());
+ return tmsDispatchOrder;
+ }).collect(Collectors.toList());
+ // 1銆佷慨鏀硅皟搴�
+ tmsDispatchOrderMapper.updateTmsDispatchOrderBatch(collect);
+
+ // 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 -> "HKD".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);
+ });
+ return AjaxResult.success();
+ }
+ @Override
+ public AjaxResult yfGenerateTmsDispatchOrder(List<Integer> ids) {
+ List<TmsPayableFee> tmsPayableFeeList = initYFGenerate(ids);
+
+ Set<Integer> dispatchIds = tmsPayableFeeList.stream().map(TmsPayableFee::getDispatchId).collect(Collectors.toSet());
+ // 1銆佷慨鏀硅皟搴�
+ tmsDispatchOrderMapper.update(new LambdaUpdateWrapper<TmsDispatchOrder>()
+ .in(TmsDispatchOrder::getId, dispatchIds)
+ .set(TmsDispatchOrder::getAccountsPayableStatus, 1)
+ .set(TmsDispatchOrder::getUpdateBy, SecurityUtils.getUsername())
+ .set(TmsDispatchOrder::getUpdateTime, DateUtils.getNowDate())
+ );
+ // 2銆佺敓鎴愬簲鏀跺崟
+ 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();
+ }
+
+ @Override
public AjaxResult generateTmsDispatchOrder(List<Integer> ids) {
List<TmsDispatchOrder> tmsDispatchOrders = initGenerate(ids);
+ List<TmsDispatchOrder> collect1 = tmsDispatchOrders.stream().filter(item -> item.getIsCustoms() == 0 && item.getCustomsServiceProviderId() == null).collect(Collectors.toList());
+ if (!collect1.isEmpty()){
+ String disNos = collect1.stream().map(TmsDispatchOrder::getDispatchNo).collect(Collectors.joining(","));
+ return AjaxResult.error("璋冨害鍗�"+disNos+"鏈ˉ鍏呭鎵樻姤鍏充俊鎭�");
+ }
+ List<TmsDispatchOrder> collect2 = tmsDispatchOrders.stream().filter(item -> item.getIsLoad() == 0 && item.getLoadingServiceProviderId() == null).collect(Collectors.toList());
+ if (!collect2.isEmpty()){
+ String disNos = collect2.stream().map(TmsDispatchOrder::getDispatchNo).collect(Collectors.joining(","));
+ return AjaxResult.error("璋冨害鍗�"+disNos+"鏈ˉ鍏呰鍗歌揣淇℃伅");
+ }
List<TmsDispatchOrder> receivableList = tmsDispatchOrders.stream().filter(item -> item.getAccountsReceivableStatus() == 0).collect(Collectors.toList());
if (!receivableList.isEmpty()){
List<TmsDispatchOrder> collect = receivableList.stream().map(item -> {
@@ -544,4 +1459,110 @@
return AjaxResult.success();
}
+
+
+ @Override
+ public AjaxResult getServiceProvider(Integer id) {
+
+ TmsDispatchOrder tmsDispatchOrder = tmsDispatchOrderMapper.
+ selectTmsDispatchOrderById(id);
+ List<ServiceProviderVo> serviceProviderVos = new ArrayList<>();
+ if (tmsDispatchOrder != null){
+
+ if (tmsDispatchOrder.getLoadingServiceProviderId() != null){
+ serviceProviderVos.add(new ServiceProviderVo(tmsDispatchOrder.getLoadingServiceProviderId(),
+ tmsDispatchOrder.getLoadingServiceProviderName(),
+ "2"));
+ }
+ if (tmsDispatchOrder.getCustomsServiceProviderId() != null){
+ serviceProviderVos.add(new ServiceProviderVo(tmsDispatchOrder.getCustomsServiceProviderId(),
+ tmsDispatchOrder.getCustomsServiceProviderName(),
+ "1"));
+ }
+ if (tmsDispatchOrder.getVehicleProviderId() != null){
+ serviceProviderVos.add(new ServiceProviderVo(tmsDispatchOrder.getVehicleProviderId(),
+ tmsDispatchOrder.getVehicleProviderName(),
+ "0"));
+ }
+ // 鏌ヨ
+ List<TmsQuoteFee> tmsQuoteFees = tmsQuoteFeeService.selectTmsQuoteFeeList(new TmsQuoteFee() {{
+ setDispatchId(id);
+ }});
+ if (tmsQuoteFees != null && !tmsQuoteFees.isEmpty()){
+ List<ServiceProviderVo> collect = tmsQuoteFees.stream()
+ .collect(Collectors.collectingAndThen(
+ Collectors.toMap(
+ item -> item.getServiceProviderId() + "_" + item.getServiceProviderType(),
+ item -> new ServiceProviderVo(
+ item.getServiceProviderId(),
+ null,
+ item.getServiceProviderType()
+ ),
+ (a, b) -> a
+ ),
+ m -> new ArrayList<>(m.values())
+ ));
+
+ collect.forEach(item -> {
+ if ("0".equals(item.getServiceProviderType())){
+ TmsServiceProvider tmsServiceProvider = tmsServiceProviderMapper.selectTmsServiceProviderById(item.getServiceProviderId());
+ item.setServiceProviderName(tmsServiceProvider.getServiceName());
+ } else if ("1".equals(item.getServiceProviderType())){
+ TmsCustomsServiceProvider tmsCustomsServiceProvider = tmsCustomsServiceProviderMapper.selectTmsCustomsServiceProviderById(item.getServiceProviderId());
+ item.setServiceProviderName(tmsCustomsServiceProvider.getServiceName());
+ } else if ("2".equals(item.getServiceProviderType())){
+ TmsLoadingServiceProvider tmsLoadingServiceProvider = tmsLoadingServiceProviderMapper.selectTmsLoadingServiceProviderById(item.getServiceProviderId());
+ item.setServiceProviderName(tmsLoadingServiceProvider.getServiceName());
+ }
+ serviceProviderVos.add(item);
+ });
+ ArrayList<ServiceProviderVo> collect1 = serviceProviderVos.stream().collect(Collectors.collectingAndThen(
+ Collectors.toMap(
+ item -> item.getServiceProviderId() + "_" + item.getServiceProviderType(),
+ item -> new ServiceProviderVo(
+ item.getServiceProviderId(),
+ item.getServiceProviderName(),
+ item.getServiceProviderType()
+ ),
+ (a, b) -> a
+ ),
+ m -> new ArrayList<>(m.values())
+ ));
+ return AjaxResult.success(collect1);
+ }
+ }else{
+ return AjaxResult.error("璋冨害鍗曚笉瀛樺湪");
+ }
+ 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