From da468a0af5e1df8506169e2b02825f89b57acfbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=B8=85?= <3115919733@qq.com> Date: Fri, 13 Jun 2025 08:36:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=8A=9F=E8=83=BD=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-prod.yml | 6 +- .../controller/DeliveryDemandController.java | 14 ++++ .../impl/DeliveryDemandServiceImpl.java | 82 ++++++++++++++++++- .../controller/VehicleDemandController.java | 39 +++++++-- .../vehicledemand/entity/VehicleDemand.java | 1 + 5 files changed, 130 insertions(+), 12 deletions(-) diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml index 58eb4ca..33aeec1 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml @@ -134,7 +134,7 @@ spring: # username: root # password: 123456 # driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:oracle:thin:@123.57.206.181:1521/ORCLPDB1 + url: jdbc:oracle:thin:@172.22.10.236:1521/mesdb username: SDKTMS password: SDKTMS driver-class-name: oracle.jdbc.OracleDriver @@ -189,9 +189,9 @@ jeecg: app: http://localhost:8051 path: #文件上传根目录 设置 - upload: /opt/upFiles + upload: ../opt/upFiles #webapp文件路径 - webapp: /opt/webapp + webapp: ../opt/webapp shiro: excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/** #阿里云oss存储和大鱼短信秘钥配置 diff --git a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/deliverydemand/controller/DeliveryDemandController.java b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/deliverydemand/controller/DeliveryDemandController.java index 3cd5ac8..424fa54 100644 --- a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/deliverydemand/controller/DeliveryDemandController.java +++ b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/deliverydemand/controller/DeliveryDemandController.java @@ -17,6 +17,7 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.tms.carinout.vehicleinout.entity.VehicleParam; +import org.jeecg.modules.tms.constant.TmsConstants; import org.jeecg.modules.tms.outbound.deliverydemand.entity.DeliveryDemand; import org.jeecg.modules.tms.outbound.deliverydemand.entity.DeliveryDemandExcel; import org.jeecg.modules.tms.outbound.deliverydemand.service.IDeliveryDemandService; @@ -28,6 +29,8 @@ import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.tms.outbound.deliverydemanddetail.entity.DeliveryDemandDetail; import org.jeecg.modules.tms.outbound.deliverydemanddetail.service.IDeliveryDemandDetailService; +import org.jeecg.modules.tms.outbound.vehicledemand.entity.VehicleDemand; +import org.jeecg.modules.tms.outbound.vehicledemand.service.IVehicleDemandService; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; @@ -60,6 +63,8 @@ public class DeliveryDemandController extends JeecgController add(@RequestBody DeliveryDemand deliveryDemand) { deliveryDemandService.save(deliveryDemand); + if (!TmsConstants.shipType_2.equals(deliveryDemand.getShipType())) { + VehicleDemand vehicleDemand = BeanUtil.toBean(deliveryDemand, VehicleDemand.class); + vehicleDemand.setDeliveryDemandId(deliveryDemand.getId()) + .setTotalShips(deliveryDemand.getShipNumber()) + .setTotalPallets(deliveryDemand.getPalletsNum()) + .setPreTotalPallets(deliveryDemand.getPalletsNum()) + .setCurrentStatus(TmsConstants.currentStatus_0); + vehicleDemandService.save(vehicleDemand); + } List deliveryDemandDetailList = deliveryDemand.getDeliveryDemandDetailList(); deliveryDemandDetailList.forEach(item ->{ item.setDeliveryDemandId(deliveryDemand.getId()); diff --git a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/deliverydemand/service/impl/DeliveryDemandServiceImpl.java b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/deliverydemand/service/impl/DeliveryDemandServiceImpl.java index c372e5f..b89af54 100644 --- a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/deliverydemand/service/impl/DeliveryDemandServiceImpl.java +++ b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/deliverydemand/service/impl/DeliveryDemandServiceImpl.java @@ -114,7 +114,81 @@ public class DeliveryDemandServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(VehicleDemand::getCurrentStatus, TmsConstants.currentStatus_0, TmsConstants.currentStatus_1) + .ne(VehicleDemand::getShipType, TmsConstants.shipType_2); + List list = vehicleDemandService.list(lambdaQueryWrapper); + // 以发货日期,运输类型,取货地点,送货地点为key + Map mergedMap = list.stream() + .collect(Collectors.toMap( + demand -> String.format("%s|%s|%s|%s", + demand.getShipType(), + demand.getDeliveryAddress(), + demand.getPickUpHub(), + demand.getShipDate()), + demand -> { + VehicleDemand merged = new VehicleDemand(); + merged.setShipType(demand.getShipType()); + merged.setDeliveryAddress(demand.getDeliveryAddress()); + merged.setPickUpHub(demand.getPickUpHub()); + merged.setShipDate(demand.getShipDate()); + merged.setTotalPallets(demand.getTotalPallets()); + merged.setPreTotalPallets(demand.getPreTotalPallets()); + merged.setTotalShips(demand.getTotalShips()); + merged.setDeliveryDate(demand.getDeliveryDate()); + merged.setDeliveryDemandId(demand.getDeliveryDemandId()); + return merged; + }, (merged1, merged2) -> { + merged1.setTotalPallets( + (merged1.getTotalPallets() == null ? 0 : merged1.getTotalPallets()) + + (merged2.getTotalPallets() == null ? 0 : merged2.getTotalPallets()) + ); + merged1.setPreTotalPallets( + (merged1.getPreTotalPallets() == null ? 0 : merged1.getPreTotalPallets()) + + (merged2.getPreTotalPallets() == null ? 0 : merged2.getPreTotalPallets()) + ); + merged1.setTotalShips( + Optional.ofNullable(merged1.getTotalShips()).orElse(BigDecimal.ZERO) + .add(Optional.ofNullable(merged2.getTotalShips()).orElse(BigDecimal.ZERO)) + ); + merged1.setDeliveryDemandId(merged1.getDeliveryDemandId()+","+merged2.getDeliveryDemandId()); + return merged1; + } + )); + // 合并之后的用车需求集合 + List vehicleDemandList = new ArrayList<>(); + for (Map.Entry entry : mergedMap.entrySet()) { + String key = entry.getKey(); + VehicleDemand value = entry.getValue(); + String deliveryDemandId = value.getDeliveryDemandId(); + String sequence = generalSequenceService.getSequence(GeneralSequenceConstant.VEHICLE_DEMAND_NO); + value.setVdNo(sequence).setCurrentStatus(TmsConstants.currentStatus_1); + vehicleDemandList.add(value); + String[] split = deliveryDemandId.split(","); + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.in(DeliveryDemand::getId, split); + DeliveryDemand deliveryDemand = new DeliveryDemand(); + deliveryDemand.setVdNo(sequence).setCurrentStatus(TmsConstants.currentStatus_1); + deliveryDemandMapper.update(deliveryDemand, lambdaUpdateWrapper); + /*list.forEach(item -> { + if (key.equals(String.format("%s|%s", + item.getShipDate(), + item.getShipType()))) { + item.setVdNo(sequence); + } + });*/ + } + // 删除合并前的数据 + vehicleDemandService.removeBatchByIds(list); + // 新增合并的数据 + vehicleDemandService.saveBatch(vehicleDemandList); + } + + + // 原定时合并,以发货需求信息合并 + /*@Override @Transactional(rollbackFor = Exception.class) public void timedMerge() { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -150,8 +224,8 @@ public class DeliveryDemandServiceImpl extends ServiceImpl getPalletsNum(List deliveryDemands) { diff --git a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/vehicledemand/controller/VehicleDemandController.java b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/vehicledemand/controller/VehicleDemandController.java index a196d28..266c45e 100644 --- a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/vehicledemand/controller/VehicleDemandController.java +++ b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/vehicledemand/controller/VehicleDemandController.java @@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.util.oConvertUtils; @@ -18,6 +19,7 @@ import org.jeecg.modules.tms.basicdata.constant.GeneralSequenceConstant; import org.jeecg.modules.tms.basicdata.generalsequence.service.IGeneralSequenceService; import org.jeecg.modules.tms.basicdata.logisticsroute.mapper.LogisticsRouteMapper; import org.jeecg.modules.tms.constant.TmsConstants; +import org.jeecg.modules.tms.outbound.deliverydemand.entity.DeliveryDemand; import org.jeecg.modules.tms.outbound.deliverydemand.service.IDeliveryDemandService; import org.jeecg.modules.tms.outbound.vehicledemand.entity.VehicleDemand; import org.jeecg.modules.tms.outbound.vehicledemand.service.IVehicleDemandService; @@ -227,9 +229,9 @@ public class VehicleDemandController extends JeecgController handleMerge(@RequestBody List ids) { List vehicleDemands = vehicleDemandService.listByIds(ids); - boolean hasEven = vehicleDemands.stream().anyMatch(item -> !TmsConstants.currentStatus_0.equals(item.getCurrentStatus())); + boolean hasEven = vehicleDemands.stream().anyMatch(item -> TmsConstants.currentStatus_2.equals(item.getCurrentStatus())); if (hasEven) { - return Result.error("数据中含有不是创建状态的数据!"); + return Result.error("数据中含有计算车辆需求完成的数据!"); } List vehicleDemandHisList = BeanUtil.copyToList(vehicleDemands, VehicleDemandHis.class); Map collect = vehicleDemands.stream() @@ -250,6 +252,7 @@ public class VehicleDemandController extends JeecgController { // 默认策略:保留距离更长的那个对象的 pickupHub / deliveryAddress @@ -281,6 +284,7 @@ public class VehicleDemandController extends JeecgController lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.in(DeliveryDemand::getId, split) + .set(DeliveryDemand::getVdNo, sequence) + .set(DeliveryDemand::getCurrentStatus, TmsConstants.currentStatus_1); + // 更新发货需求状态为创建,用车需求编号 + deliveryDemandService.update(lambdaUpdateWrapper); } // 生成新的用车需求 vehicleDemandService.saveBatch(vehicleDemandList); @@ -324,16 +335,34 @@ public class VehicleDemandController extends JeecgController lambdaQueryWrapper = new LambdaQueryWrapper<>(); + List deliveryDemandIds = vehicleDemands.stream() + .map(VehicleDemand::getDeliveryDemandId) + .filter(Objects::nonNull) + .flatMap(idStr -> Arrays.stream(idStr.split(","))) + .collect(Collectors.toList()); + List deliveryDemands = deliveryDemandService.listByIds(deliveryDemandIds); + List vehicleDemandList = new ArrayList<>(); + deliveryDemands.forEach(item -> { + item.setCurrentStatus(TmsConstants.currentStatus_0); + VehicleDemand vehicleDemand = BeanUtil.toBean(item, VehicleDemand.class); + vehicleDemand.setTotalPallets(item.getPalletsNum()) + .setPreTotalPallets(item.getPalletsNum()) + .setTotalShips(item.getShipNumber()) + .setDeliveryDemandId(item.getId()); + vehicleDemandList.add(vehicleDemand); + }); + deliveryDemandService.updateBatchById(deliveryDemands); + /*LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.in(VehicleDemandHis::getVdNoNew, vdNoNews); List list = vehicleDemandHisService.list(lambdaQueryWrapper); List vehicleDemandList = BeanUtil.copyToList(list, VehicleDemand.class); // 恢复原来合并删除的数据 - vehicleDemandService.saveBatch(vehicleDemandList); + vehicleDemandService.saveBatch(vehicleDemandList);*/ // 删除合并的数据 vehicleDemandService.removeBatchByIds(ids); + vehicleDemandService.saveBatch(vehicleDemandList); // 删除历史记录 - vehicleDemandHisService.removeByIds(list); +// vehicleDemandHisService.removeByIds(list); return Result.OK("解绑成功!"); } } diff --git a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/vehicledemand/entity/VehicleDemand.java b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/vehicledemand/entity/VehicleDemand.java index bcade78..ba5f96c 100644 --- a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/vehicledemand/entity/VehicleDemand.java +++ b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/vehicledemand/entity/VehicleDemand.java @@ -109,4 +109,5 @@ public class VehicleDemand implements Serializable { private java.lang.String currentStatus; @TableField(exist = false) private Integer distance; + private String deliveryDemandId; }