mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
禅道bug#1665修复
This commit is contained in:
+5
-1
@@ -15,10 +15,14 @@ import java.util.List;
|
|||||||
@ToString(callSuper = true)
|
@ToString(callSuper = true)
|
||||||
public class OrderPackReqVO {
|
public class OrderPackReqVO {
|
||||||
|
|
||||||
@Schema(description = "订单号列表", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "打包页面订单号列表", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@Size(min = 1, max = 100, message = "订单号列表不能为空且长度不能超过100")
|
@Size(min = 1, max = 100, message = "订单号列表不能为空且长度不能超过100")
|
||||||
private List<Long> orderIds;
|
private List<Long> orderIds;
|
||||||
|
|
||||||
|
@Schema(description = "当前包裹订单号列表", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@Size(min = 1, max = 100, message = "订单号列表不能为空且长度不能超过100")
|
||||||
|
private List<Long> currentOrderIds;
|
||||||
|
|
||||||
@Schema(description = "包裹编号", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "包裹编号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
private String packNo;
|
private String packNo;
|
||||||
|
|
||||||
|
|||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
package com.cf.imes.module.executor.controller.admin.manage.pack.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @author Gqr
|
||||||
|
* @since 2026/6/11 18:02
|
||||||
|
*/
|
||||||
|
@Schema(description = "管理后台 - 分堆打包 - 分堆打包板件提交 Request VO")
|
||||||
|
@Data
|
||||||
|
public class PackagePlateSaveReqVO {
|
||||||
|
@Schema(description = "订单ID")
|
||||||
|
private Long orderId;
|
||||||
|
|
||||||
|
@Schema(description = "板件ID")
|
||||||
|
private Long plateId;
|
||||||
|
}
|
||||||
+50
-18
@@ -52,6 +52,7 @@ import java.time.LocalDateTime;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -141,13 +142,8 @@ public class PackServiceImpl implements PackService {
|
|||||||
@Override
|
@Override
|
||||||
public List<OrderPackageVO> getOrderPack(PackageDetailsReqVO reqVO) {
|
public List<OrderPackageVO> getOrderPack(PackageDetailsReqVO reqVO) {
|
||||||
List<Long> orderIds = reqVO.getOrderIds();
|
List<Long> orderIds = reqVO.getOrderIds();
|
||||||
// 入参订单id列表对应的所有父子id列表
|
|
||||||
List<Long> fatherAndSonOrderIds = orderService.getFatherAndSonOrderIds(orderIds);
|
|
||||||
if (CollUtil.isEmpty(fatherAndSonOrderIds)) {
|
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
List<OrderPackageVO> orderPackageVOS = orderPackageMapper.getPackageNoInOrderIds(fatherAndSonOrderIds);
|
List<OrderPackageVO> orderPackageVOS = orderPackageMapper.getPackageNoInOrderIds(orderIds);
|
||||||
|
|
||||||
if (orderPackageVOS.isEmpty()) {
|
if (orderPackageVOS.isEmpty()) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
@@ -224,27 +220,28 @@ public class PackServiceImpl implements PackService {
|
|||||||
Long organId = getUserOrganId();
|
Long organId = getUserOrganId();
|
||||||
String packNo = packageVO.getPackNo();
|
String packNo = packageVO.getPackNo();
|
||||||
List<Long> orderIds = packageVO.getOrderIds();
|
List<Long> orderIds = packageVO.getOrderIds();
|
||||||
|
List<Long> currentOrderIds = packageVO.getCurrentOrderIds();
|
||||||
List<Long> addPlateNos = packageVO.getAddPlateNoList();
|
List<Long> addPlateNos = packageVO.getAddPlateNoList();
|
||||||
List<Long> deletePlateNos = packageVO.getDeletePlateNoList();
|
List<Long> deletePlateNos = packageVO.getDeletePlateNoList();
|
||||||
List<PackagePartsSaveReqVO> addPartsList = packageVO.getAddPartsList();
|
List<PackagePartsSaveReqVO> addPartsList = packageVO.getAddPartsList();
|
||||||
List<PackagePartsSaveReqVO> delPartsList = packageVO.getDelPartsList();
|
List<PackagePartsSaveReqVO> delPartsList = packageVO.getDelPartsList();
|
||||||
Integer packMethod = packageVO.getPackMethod();
|
Integer packMethod = packageVO.getPackMethod();
|
||||||
|
|
||||||
OrderPackagDO existPackageDO = validateOrdersExists(orderIds, packNo);
|
List<OrderPackagDO> existPackageDO = validateOrdersExists(orderIds, packNo);
|
||||||
|
|
||||||
// 新增/删除 板件配件全为空代表是原封不动的封包
|
// 新增/删除 板件配件全为空代表是原封不动的封包
|
||||||
boolean justPack = CollUtil.isEmpty(addPlateNos) && CollUtil.isEmpty(addPartsList)
|
boolean justPack = CollUtil.isEmpty(addPlateNos) && CollUtil.isEmpty(addPartsList)
|
||||||
&& CollUtil.isEmpty(deletePlateNos) && CollUtil.isEmpty(delPartsList);
|
&& CollUtil.isEmpty(deletePlateNos) && CollUtil.isEmpty(delPartsList);
|
||||||
|
|
||||||
// 判断包裹ID是否为空,为空,走新增,不为空,走更新
|
// 判断包裹ID是否为空,为空,走新增,不为空,走更新
|
||||||
if (ObjectUtil.isEmpty(existPackageDO)) {
|
if (CollUtil.isEmpty(existPackageDO)) {
|
||||||
if (justPack) {
|
if (justPack) {
|
||||||
throw new ServiceException(PACK_DATA_NULL);
|
throw new ServiceException(PACK_DATA_NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
String packageNo = generatePackageNo();
|
String packageNo = generatePackageNo();
|
||||||
List<OrderPackagDO> orderPackageDOS = new ArrayList<>();
|
List<OrderPackagDO> orderPackageDOS = new ArrayList<>();
|
||||||
for (Long orderId : orderIds) {
|
for (Long orderId : currentOrderIds) {
|
||||||
OrderPackagDO orderPackageDO = new OrderPackagDO();
|
OrderPackagDO orderPackageDO = new OrderPackagDO();
|
||||||
orderPackageDO.setOrderId(orderId);
|
orderPackageDO.setOrderId(orderId);
|
||||||
orderPackageDO.setPackageNo(packageNo);
|
orderPackageDO.setPackageNo(packageNo);
|
||||||
@@ -260,7 +257,7 @@ public class PackServiceImpl implements PackService {
|
|||||||
for (List<Long> batch : split) {
|
for (List<Long> batch : split) {
|
||||||
List<Long> plateIds = orderPlateMapper.selectList(new LambdaQueryWrapper<PlateDO>()
|
List<Long> plateIds = orderPlateMapper.selectList(new LambdaQueryWrapper<PlateDO>()
|
||||||
.in(PlateDO::getPlateNo, batch)
|
.in(PlateDO::getPlateNo, batch)
|
||||||
.in(PlateDO::getOrderId, orderIds)
|
.in(PlateDO::getOrderId, currentOrderIds)
|
||||||
.eq(PlateDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
|
.eq(PlateDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
|
||||||
.select(PlateDO::getId)
|
.select(PlateDO::getId)
|
||||||
).stream().map(PlateDO::getId).toList();
|
).stream().map(PlateDO::getId).toList();
|
||||||
@@ -268,7 +265,7 @@ public class PackServiceImpl implements PackService {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
orderItemMapper.update(new LambdaUpdateWrapper<OrderItemDO>()
|
orderItemMapper.update(new LambdaUpdateWrapper<OrderItemDO>()
|
||||||
.in(OrderItemDO::getOrderId, orderIds)
|
.in(OrderItemDO::getOrderId, currentOrderIds)
|
||||||
.in(OrderItemDO::getPlateId, plateIds)
|
.in(OrderItemDO::getPlateId, plateIds)
|
||||||
.eq(OrderItemDO::getPackageId, 0L)
|
.eq(OrderItemDO::getPackageId, 0L)
|
||||||
.set(OrderItemDO::getPackageId, packageNo)
|
.set(OrderItemDO::getPackageId, packageNo)
|
||||||
@@ -277,10 +274,10 @@ public class PackServiceImpl implements PackService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 配件明细新增包裹 ID
|
// 配件明细新增包裹 ID
|
||||||
processParts(addPartsList, packMethod, orderIds, packageNo, true);
|
processParts(addPartsList, packMethod, currentOrderIds, packageNo, true);
|
||||||
|
|
||||||
// 更新订单打包状态
|
// 更新订单打包状态
|
||||||
List<OrderDO> orderDOS = ordersMapper.selectBatchIds(orderIds);
|
List<OrderDO> orderDOS = ordersMapper.selectBatchIds(currentOrderIds);
|
||||||
for (OrderDO orderDO : orderDOS) {
|
for (OrderDO orderDO : orderDOS) {
|
||||||
if (validateOrderPack(orderDO.getId())) {
|
if (validateOrderPack(orderDO.getId())) {
|
||||||
|
|
||||||
@@ -292,10 +289,27 @@ public class PackServiceImpl implements PackService {
|
|||||||
// 更新已打包数量到订单
|
// 更新已打包数量到订单
|
||||||
orderInfoVersionControlService.updateOrderPackNum(orderDOS);
|
orderInfoVersionControlService.updateOrderPackNum(orderDOS);
|
||||||
|
|
||||||
return typeConversion(orderPackageDOS.get(0), orderIds);
|
return typeConversion(orderPackageDOS.get(0), currentOrderIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
String existPackageNo = existPackageDO.getPackageNo();
|
// 从包裹对应订单列表 和 现在还有的订单列表做对比,算出差集,对应列表有当前没有就是要删,对应列表没有当前有就是要新增
|
||||||
|
Set<Long> existOrderIdSet = existPackageDO.stream()
|
||||||
|
.map(OrderPackagDO::getOrderId)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
Set<Long> currentOrderIdSet = new HashSet<>(currentOrderIds);
|
||||||
|
// 删除:exist - current
|
||||||
|
List<Long> toDelete = existOrderIdSet.stream()
|
||||||
|
.filter(id -> !currentOrderIdSet.contains(id))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
// 新增:current - exist
|
||||||
|
List<Long> toAdd = currentOrderIdSet.stream()
|
||||||
|
.filter(id -> !existOrderIdSet.contains(id))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
|
||||||
|
String existPackageNo = existPackageDO.get(0).getPackageNo();
|
||||||
// 板件明细新增包裹 ID
|
// 板件明细新增包裹 ID
|
||||||
List<List<Long>> split = CollUtil.split(addPlateNos, 1000);
|
List<List<Long>> split = CollUtil.split(addPlateNos, 1000);
|
||||||
if (CollUtil.isNotEmpty(split)) {
|
if (CollUtil.isNotEmpty(split)) {
|
||||||
@@ -353,6 +367,24 @@ public class PackServiceImpl implements PackService {
|
|||||||
.eq(OrderPackagDO::getStatus, OrderPackageStatusEnum.UNPACKED.getStatus())
|
.eq(OrderPackagDO::getStatus, OrderPackageStatusEnum.UNPACKED.getStatus())
|
||||||
.set(OrderPackagDO::getStatus, OrderPackageStatusEnum.PACKAGED.getStatus()));
|
.set(OrderPackagDO::getStatus, OrderPackageStatusEnum.PACKAGED.getStatus()));
|
||||||
|
|
||||||
|
// 删除没有订单组成的包裹
|
||||||
|
orderPackageMapper.delete(new LambdaQueryWrapper<OrderPackagDO>()
|
||||||
|
.eq(OrderPackagDO::getPackageNo, existPackageNo)
|
||||||
|
.in(OrderPackagDO::getOrderId, toDelete)
|
||||||
|
);
|
||||||
|
|
||||||
|
// 新增新订单组成的包裹
|
||||||
|
List<OrderPackagDO> addOrderPackageDOS = new ArrayList<>();
|
||||||
|
for (Long addOrderId : toAdd) {
|
||||||
|
OrderPackagDO orderPackageDO = new OrderPackagDO();
|
||||||
|
orderPackageDO.setOrderId(addOrderId);
|
||||||
|
orderPackageDO.setPackageNo(existPackageNo);
|
||||||
|
orderPackageDO.setStatus((OrderPackageStatusEnum.PACKAGED.getStatus()));
|
||||||
|
orderPackageDO.setRemark(packageVO.getRemark());
|
||||||
|
orderPackageDO.setOrganId(organId);
|
||||||
|
addOrderPackageDOS.add(orderPackageDO);
|
||||||
|
}
|
||||||
|
orderPackageMapper.insertBatch(addOrderPackageDOS);
|
||||||
|
|
||||||
// 更新订单打包状态
|
// 更新订单打包状态
|
||||||
List<OrderDO> orderDOS = ordersMapper.selectBatchIds(orderIds);
|
List<OrderDO> orderDOS = ordersMapper.selectBatchIds(orderIds);
|
||||||
@@ -369,7 +401,7 @@ public class PackServiceImpl implements PackService {
|
|||||||
orderInfoVersionControlService.updateOrderPackNum(orderDOS);
|
orderInfoVersionControlService.updateOrderPackNum(orderDOS);
|
||||||
}
|
}
|
||||||
|
|
||||||
return typeConversion(existPackageDO, orderIds);
|
return typeConversion(existPackageDO.get(0), orderIds);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -865,7 +897,7 @@ public class PackServiceImpl implements PackService {
|
|||||||
* @param orderIds
|
* @param orderIds
|
||||||
* @param packNo
|
* @param packNo
|
||||||
*/
|
*/
|
||||||
private OrderPackagDO validateOrdersExists(List<Long> orderIds, String packNo) {
|
private List<OrderPackagDO> validateOrdersExists(List<Long> orderIds, String packNo) {
|
||||||
|
|
||||||
List<OrderDO> orderDO = ordersMapper.selectByIds(orderIds);
|
List<OrderDO> orderDO = ordersMapper.selectByIds(orderIds);
|
||||||
AssertUtils.notEmpty(orderDO, ORDER_NOT_EXISTS);
|
AssertUtils.notEmpty(orderDO, ORDER_NOT_EXISTS);
|
||||||
@@ -874,7 +906,7 @@ public class PackServiceImpl implements PackService {
|
|||||||
List<OrderPackagDO> orderPackageDOS = orderPackageMapper.selectList(new LambdaQueryWrapper<OrderPackagDO>()
|
List<OrderPackagDO> orderPackageDOS = orderPackageMapper.selectList(new LambdaQueryWrapper<OrderPackagDO>()
|
||||||
.eq(OrderPackagDO::getPackageNo, packNo));
|
.eq(OrderPackagDO::getPackageNo, packNo));
|
||||||
AssertUtils.notEmpty(orderPackageDOS, ORDER_PACK_DATA_NULL_ERROR);
|
AssertUtils.notEmpty(orderPackageDOS, ORDER_PACK_DATA_NULL_ERROR);
|
||||||
return orderPackageDOS.get(0);
|
return orderPackageDOS;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
+1
-1
@@ -57,7 +57,7 @@
|
|||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<select id="getPackageNoInOrderIds" resultType="com.cf.imes.module.executor.controller.admin.manage.query.vo.pack.OrderPackageVO">
|
<select id="getPackageNoInOrderIds" resultType="com.cf.imes.module.executor.controller.admin.manage.query.vo.pack.OrderPackageVO">
|
||||||
SELECT DISTINCT package_no,status
|
SELECT package_no, order_id, status
|
||||||
FROM order_package
|
FROM order_package
|
||||||
WHERE deleted = false
|
WHERE deleted = false
|
||||||
AND order_id IN
|
AND order_id IN
|
||||||
|
|||||||
Reference in New Issue
Block a user