From 66da2e471a392ebfefe12b003b18ce6bdebef640 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E5=B8=85?= <3115919733@qq.com>
Date: Thu, 12 Jun 2025 11:44:45 +0800
Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E8=BD=A6=E8=AE=A1=E7=AE=97=EF=BC=8C?=
=?UTF-8?q?=E5=90=88=E5=B9=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
jeecg-boot/jeecg-module-tms/pom.xml | 5 +
.../mapper/TmsIogisticsPriceMapper.java | 3 +-
.../mapper/xml/TmsIogisticsPriceMapper.xml | 1 +
.../vehiclepallet/entity/VehiclePallet.java | 8 +-
.../mapper/VehiclePalletMapper.java | 4 +
.../mapper/xml/VehiclePalletMapper.xml | 9 ++
.../controller/VehicleInOutController.java | 27 +++---
.../modules/tms/constant/TmsConstants.java | 2 +-
.../impl/DeliveryDemandServiceImpl.java | 70 ++++++++------
.../impl/VehicleDemandServiceImpl.java | 32 +++++--
.../modules/tms/utils/DingTalkUtils.java | 94 +++++++++++++++++++
11 files changed, 196 insertions(+), 59 deletions(-)
create mode 100644 jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/utils/DingTalkUtils.java
diff --git a/jeecg-boot/jeecg-module-tms/pom.xml b/jeecg-boot/jeecg-module-tms/pom.xml
index c01cf82..67b782f 100644
--- a/jeecg-boot/jeecg-module-tms/pom.xml
+++ b/jeecg-boot/jeecg-module-tms/pom.xml
@@ -27,6 +27,11 @@
hutool-crypto
${hutool.version}
+
+ org.json
+ json
+ 20180813
+
diff --git a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/iogisticsprice/mapper/TmsIogisticsPriceMapper.java b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/iogisticsprice/mapper/TmsIogisticsPriceMapper.java
index 6681fbb..949bdec 100644
--- a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/iogisticsprice/mapper/TmsIogisticsPriceMapper.java
+++ b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/iogisticsprice/mapper/TmsIogisticsPriceMapper.java
@@ -21,5 +21,6 @@ public interface TmsIogisticsPriceMapper extends BaseMapper {
* @return
*/
List getIogisticsPrice(@Param("pickUpHub") String pickUpHub,
- @Param("deliveryAddress") String deliveryAddress);
+ @Param("deliveryAddress") String deliveryAddress,
+ @Param("shipType") String shipType);
}
diff --git a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/iogisticsprice/mapper/xml/TmsIogisticsPriceMapper.xml b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/iogisticsprice/mapper/xml/TmsIogisticsPriceMapper.xml
index f0af57a..a87a9d3 100644
--- a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/iogisticsprice/mapper/xml/TmsIogisticsPriceMapper.xml
+++ b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/iogisticsprice/mapper/xml/TmsIogisticsPriceMapper.xml
@@ -8,6 +8,7 @@
and a.car_long = b.car_long
where a.start_city = #{pickUpHub}
and a.target_city = #{deliveryAddress}
+ and a.ship_type = #{shipType}
and a.failure_time >= TRUNC(SYSDATE)
diff --git a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/vehiclepallet/entity/VehiclePallet.java b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/vehiclepallet/entity/VehiclePallet.java
index d2526e7..2579c02 100644
--- a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/vehiclepallet/entity/VehiclePallet.java
+++ b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/vehiclepallet/entity/VehiclePallet.java
@@ -4,10 +4,8 @@ import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableLogic;
+
+import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
@@ -71,4 +69,6 @@ public class VehiclePallet implements Serializable {
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
+ @TableField(exist = false)
+ private String supplierCode;
}
diff --git a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/vehiclepallet/mapper/VehiclePalletMapper.java b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/vehiclepallet/mapper/VehiclePalletMapper.java
index 6e54c7f..2d51237 100644
--- a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/vehiclepallet/mapper/VehiclePalletMapper.java
+++ b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/vehiclepallet/mapper/VehiclePalletMapper.java
@@ -15,4 +15,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface VehiclePalletMapper extends BaseMapper {
List getCarType();
+
+ List getCarInfo(@Param("shipType") String shipType,
+ @Param("pickUpHub") String pickUpHub,
+ @Param("deliveryAddress") String deliveryAddress);
}
diff --git a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/vehiclepallet/mapper/xml/VehiclePalletMapper.xml b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/vehiclepallet/mapper/xml/VehiclePalletMapper.xml
index 0ac6c84..9f5cc7c 100644
--- a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/vehiclepallet/mapper/xml/VehiclePalletMapper.xml
+++ b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/basicdata/vehiclepallet/mapper/xml/VehiclePalletMapper.xml
@@ -6,4 +6,13 @@
select car_type from tms_vehicle_pallet
group by car_type
+
+
\ No newline at end of file
diff --git a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/carinout/vehicleinout/controller/VehicleInOutController.java b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/carinout/vehicleinout/controller/VehicleInOutController.java
index 61e2b47..840179c 100644
--- a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/carinout/vehicleinout/controller/VehicleInOutController.java
+++ b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/carinout/vehicleinout/controller/VehicleInOutController.java
@@ -33,6 +33,7 @@ import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@@ -201,25 +202,25 @@ public class VehicleInOutController extends JeecgController take(@RequestBody VehicleInOut vehicleInOut) {
LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(VehicleInOut::getVehicleDemandCountId, vehicleInOut.getId());
- List list = vehicleInOutService.list(lambdaQueryWrapper);
- if (list != null && list.size() > 0) {
- if ("1".equals(vehicleInOut.getEfType())) {
- return Result.error("已经进行过提货了!");
- } else {
- return Result.error("已经进行过送货了!");
- }
+ lambdaQueryWrapper.ne(VehicleInOut::getCurrentStatus, TmsConstants.currentStatus_1);
+ VehicleInOut vi = vehicleInOutService.getOne(lambdaQueryWrapper);
+ if (vi != null) {
+ return Result.error("已经操作过了!");
}
- vehicleInOut.setId(null)
- .setCreateTime(null)
- .setCreateBy(null)
+ LambdaQueryWrapper lam = new LambdaQueryWrapper<>();
+ lam.eq(VehicleInOut::getVehicleDemandCountId, vehicleInOut.getId());
+ vehicleInOutService.remove(lam);
+ vehicleInOut.setVehicleDemandCountId(vehicleInOut.getId())
.setCurrentStatus(TmsConstants.currentStatus_1)
- .setPo(vehicleInOut.getPo())
- .setVehicleDemandCountId(vehicleInOut.getId());
+ .setId(null)
+ .setCreateTime(null)
+ .setCreateBy(null);
vehicleInOutService.save(vehicleInOut);
- return Result.OK("提货成功!");
+ return Result.OK("操作成功!");
}
/**
diff --git a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/constant/TmsConstants.java b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/constant/TmsConstants.java
index 85a1d00..5a76503 100644
--- a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/constant/TmsConstants.java
+++ b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/constant/TmsConstants.java
@@ -14,5 +14,5 @@ public class TmsConstants {
public static String shipType_0 = "0";
public static String shipType_1 = "1";
- public static String shipType_2 = "2";
+ public static String shipType_2 = "快递";
}
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 9b87288..c372e5f 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
@@ -78,6 +78,10 @@ public class DeliveryDemandServiceImpl extends ServiceImpl deliveryDemands = deliveryDemandMapper.selectList(lambdaQueryWrapper);
// 将需要合并的数据进行分组,以 shipType, deliveryAddress, pickUpHub, shipDate 为key
Map mergedMap = deliveryDemands.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.getPalletsNum());
- merged.setPreTotalPallets(demand.getPalletsNum());
- merged.setTotalShips(demand.getShipNumber());
- merged.setDeliveryDate(demand.getDeliveryDate());
- return merged;
- }, (merged1, merged2) -> {
- merged1.setTotalPallets(
- (merged1.getTotalPallets() == null ? 0 : merged1.getTotalPallets()) +
- (merged2.getTotalPallets() == null ? 0 : merged2.getTotalPallets())
- );
- merged1.setTotalShips(
- /*(merged1.getTotalShips() == null ? 0 : merged1.getTotalShips()) +
- (merged2.getTotalShips() == null ? 0 : merged2.getTotalShips())*/
- Optional.ofNullable(merged1.getTotalShips()).orElse(BigDecimal.ZERO)
- .add(Optional.ofNullable(merged2.getTotalShips()).orElse(BigDecimal.ZERO))
- );
- return merged1;
- }
- ));
+ .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.getPalletsNum());
+ merged.setPreTotalPallets(demand.getPalletsNum());
+ merged.setTotalShips(demand.getShipNumber());
+ merged.setDeliveryDate(demand.getDeliveryDate());
+ 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(
+ /*(merged1.getTotalShips() == null ? 0 : merged1.getTotalShips()) +
+ (merged2.getTotalShips() == null ? 0 : merged2.getTotalShips())*/
+ Optional.ofNullable(merged1.getTotalShips()).orElse(BigDecimal.ZERO)
+ .add(Optional.ofNullable(merged2.getTotalShips()).orElse(BigDecimal.ZERO))
+ );
+ return merged1;
+ }
+ ));
List vehicleDemands = new ArrayList<>();
for (Map.Entry entry : mergedMap.entrySet()) {
String key = entry.getKey(); // 拼接的键
diff --git a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/vehicledemand/service/impl/VehicleDemandServiceImpl.java b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/vehicledemand/service/impl/VehicleDemandServiceImpl.java
index 16b5e26..f614fe7 100644
--- a/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/vehicledemand/service/impl/VehicleDemandServiceImpl.java
+++ b/jeecg-boot/jeecg-module-tms/src/main/java/org/jeecg/modules/tms/outbound/vehicledemand/service/impl/VehicleDemandServiceImpl.java
@@ -46,9 +46,10 @@ public class VehicleDemandServiceImpl extends ServiceImpl carCount(VehicleDemand vehicleDemand) {
// 1.判断是否进行过用车计算
@@ -62,7 +63,8 @@ public class VehicleDemandServiceImpl extends ServiceImpl iogisticsPriceList = iogisticsPriceMapper.getIogisticsPrice(
vehicleDemand.getPickUpHub(),
- vehicleDemand.getDeliveryAddress());
+ vehicleDemand.getDeliveryAddress(),
+ vehicleDemand.getShipType());
if (iogisticsPriceList == null || iogisticsPriceList.size() <= 0) {
return Result.error("没有符合的物流价格基础信息,请维护!");
}
@@ -72,15 +74,18 @@ public class VehicleDemandServiceImpl extends ServiceImpl entry : solution.getVehicleCounts().entrySet()) {
+ for (Map.Entry entry : solution.getVehicleCounts().entrySet()) {
System.out.println(entry.getKey() + " 车: " + entry.getValue() + " 辆");
- }*//*
+ }
// 4.转化集合
List vehicleDemandCounts = convertToVehicleDemandCountList(solution.getVehicleCounts(), vehicleDemand);
// 5.新增
vehicleDemandCountService.saveBatch(vehicleDemandCounts);
// 6.更新发货需求当前状态
deliveryDemandMapper.updateByVdNo(vehicleDemand.getVdNo(), TmsConstants.currentStatus_2);
+ // 7.更新用车需求当前状态
+ vehicleDemand.setCurrentStatus(TmsConstants.currentStatus_2);
+ vehicleDemandMapper.updateById(vehicleDemand);
log.info("用车需求计算,用车需求编号:{},方案:{},费用:{}",vehicleDemand.getVdNo(),
solution.getVehicleCounts(),solution.getTotalCost());
return Result.OK("用车计算成功!");
@@ -188,7 +193,8 @@ public class VehicleDemandServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ /*LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.orderByDesc(VehiclePallet::getMaxPallets);
- List vehiclePallets = vehiclePalletMapper.selectList(lambdaQueryWrapper);
+ lambdaQueryWrapper.eq(VehiclePallet::getCarType, vehicleDemand.getShipType());
+ List vehiclePallets = vehiclePalletMapper.selectList(lambdaQueryWrapper);*/
+ List vehiclePallets = vehiclePalletMapper.getCarInfo(vehicleDemand.getShipType(),
+ vehicleDemand.getPickUpHub(), vehicleDemand.getDeliveryAddress());
+ if (vehiclePallets == null || vehiclePallets.size() == 0) {
+ return Result.error("没有符合的物流价格基础信息,请维护!");
+ }
// 3.进行车辆选择
// 3.1.获取需要装车总托数
Integer totalPallets = vehicleDemand.getTotalPallets();
@@ -235,7 +247,9 @@ public class VehicleDemandServiceImpl extends ServiceImpl