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)
|
||||
public class OrderPackReqVO {
|
||||
|
||||
@Schema(description = "订单号列表", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@Schema(description = "打包页面订单号列表", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@Size(min = 1, max = 100, message = "订单号列表不能为空且长度不能超过100")
|
||||
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)
|
||||
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.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -141,13 +142,8 @@ public class PackServiceImpl implements PackService {
|
||||
@Override
|
||||
public List<OrderPackageVO> getOrderPack(PackageDetailsReqVO reqVO) {
|
||||
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()) {
|
||||
return new ArrayList<>();
|
||||
@@ -224,27 +220,28 @@ public class PackServiceImpl implements PackService {
|
||||
Long organId = getUserOrganId();
|
||||
String packNo = packageVO.getPackNo();
|
||||
List<Long> orderIds = packageVO.getOrderIds();
|
||||
List<Long> currentOrderIds = packageVO.getCurrentOrderIds();
|
||||
List<Long> addPlateNos = packageVO.getAddPlateNoList();
|
||||
List<Long> deletePlateNos = packageVO.getDeletePlateNoList();
|
||||
List<PackagePartsSaveReqVO> addPartsList = packageVO.getAddPartsList();
|
||||
List<PackagePartsSaveReqVO> delPartsList = packageVO.getDelPartsList();
|
||||
Integer packMethod = packageVO.getPackMethod();
|
||||
|
||||
OrderPackagDO existPackageDO = validateOrdersExists(orderIds, packNo);
|
||||
List<OrderPackagDO> existPackageDO = validateOrdersExists(orderIds, packNo);
|
||||
|
||||
// 新增/删除 板件配件全为空代表是原封不动的封包
|
||||
boolean justPack = CollUtil.isEmpty(addPlateNos) && CollUtil.isEmpty(addPartsList)
|
||||
&& CollUtil.isEmpty(deletePlateNos) && CollUtil.isEmpty(delPartsList);
|
||||
|
||||
// 判断包裹ID是否为空,为空,走新增,不为空,走更新
|
||||
if (ObjectUtil.isEmpty(existPackageDO)) {
|
||||
if (CollUtil.isEmpty(existPackageDO)) {
|
||||
if (justPack) {
|
||||
throw new ServiceException(PACK_DATA_NULL);
|
||||
}
|
||||
|
||||
String packageNo = generatePackageNo();
|
||||
List<OrderPackagDO> orderPackageDOS = new ArrayList<>();
|
||||
for (Long orderId : orderIds) {
|
||||
for (Long orderId : currentOrderIds) {
|
||||
OrderPackagDO orderPackageDO = new OrderPackagDO();
|
||||
orderPackageDO.setOrderId(orderId);
|
||||
orderPackageDO.setPackageNo(packageNo);
|
||||
@@ -260,7 +257,7 @@ public class PackServiceImpl implements PackService {
|
||||
for (List<Long> batch : split) {
|
||||
List<Long> plateIds = orderPlateMapper.selectList(new LambdaQueryWrapper<PlateDO>()
|
||||
.in(PlateDO::getPlateNo, batch)
|
||||
.in(PlateDO::getOrderId, orderIds)
|
||||
.in(PlateDO::getOrderId, currentOrderIds)
|
||||
.eq(PlateDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
|
||||
.select(PlateDO::getId)
|
||||
).stream().map(PlateDO::getId).toList();
|
||||
@@ -268,7 +265,7 @@ public class PackServiceImpl implements PackService {
|
||||
continue;
|
||||
}
|
||||
orderItemMapper.update(new LambdaUpdateWrapper<OrderItemDO>()
|
||||
.in(OrderItemDO::getOrderId, orderIds)
|
||||
.in(OrderItemDO::getOrderId, currentOrderIds)
|
||||
.in(OrderItemDO::getPlateId, plateIds)
|
||||
.eq(OrderItemDO::getPackageId, 0L)
|
||||
.set(OrderItemDO::getPackageId, packageNo)
|
||||
@@ -277,10 +274,10 @@ public class PackServiceImpl implements PackService {
|
||||
}
|
||||
|
||||
// 配件明细新增包裹 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) {
|
||||
if (validateOrderPack(orderDO.getId())) {
|
||||
|
||||
@@ -292,10 +289,27 @@ public class PackServiceImpl implements PackService {
|
||||
// 更新已打包数量到订单
|
||||
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
|
||||
List<List<Long>> split = CollUtil.split(addPlateNos, 1000);
|
||||
if (CollUtil.isNotEmpty(split)) {
|
||||
@@ -353,6 +367,24 @@ public class PackServiceImpl implements PackService {
|
||||
.eq(OrderPackagDO::getStatus, OrderPackageStatusEnum.UNPACKED.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);
|
||||
@@ -369,7 +401,7 @@ public class PackServiceImpl implements PackService {
|
||||
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 packNo
|
||||
*/
|
||||
private OrderPackagDO validateOrdersExists(List<Long> orderIds, String packNo) {
|
||||
private List<OrderPackagDO> validateOrdersExists(List<Long> orderIds, String packNo) {
|
||||
|
||||
List<OrderDO> orderDO = ordersMapper.selectByIds(orderIds);
|
||||
AssertUtils.notEmpty(orderDO, ORDER_NOT_EXISTS);
|
||||
@@ -874,7 +906,7 @@ public class PackServiceImpl implements PackService {
|
||||
List<OrderPackagDO> orderPackageDOS = orderPackageMapper.selectList(new LambdaQueryWrapper<OrderPackagDO>()
|
||||
.eq(OrderPackagDO::getPackageNo, packNo));
|
||||
AssertUtils.notEmpty(orderPackageDOS, ORDER_PACK_DATA_NULL_ERROR);
|
||||
return orderPackageDOS.get(0);
|
||||
return orderPackageDOS;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@
|
||||
</resultMap>
|
||||
|
||||
<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
|
||||
WHERE deleted = false
|
||||
AND order_id IN
|
||||
|
||||
Reference in New Issue
Block a user