1463 WMS系统钢构包采购业务功能优化
This commit is contained in:
parent
a89d32f76a
commit
ec3464950e
|
|
@ -1788,25 +1788,40 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
// 9. 处理每个托盘的物料
|
||||
List<StructuralPackageMaterialQRCodeContentDTO> allQrCodeDTOs = new ArrayList<>();
|
||||
|
||||
// 提前获取订单下所有托盘项(此时trayId可能为空),用于后续匹配
|
||||
List<WmsStructuralPackageOrderTrayItem> allOrderTrayItems = structuralPackageOrderTrayItemService.getList(orderId);
|
||||
|
||||
// 记录已经使用过的托盘项ID,避免重复匹配
|
||||
Set<Long> usedTrayItemIds = new HashSet<>();
|
||||
|
||||
for (TraySubmitQO trayQO : request.getTrays()) {
|
||||
WmsStructuralPackageOrderTray tray = trays.stream()
|
||||
.filter(t -> StrUtil.equals(t.getNo(), trayQO.getTrayNo()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
// 获取托盘项
|
||||
List<WmsStructuralPackageOrderTrayItem> trayItems = structuralPackageOrderTrayItemService.getListByTrayId(tray.getId());
|
||||
// 收集当前托盘需要绑定的托盘项
|
||||
List<WmsStructuralPackageOrderTrayItem> currentTrayItems = new ArrayList<>();
|
||||
|
||||
// 处理托盘中的每个物料
|
||||
for (TrayMaterialQO materialQO : trayQO.getItems()) {
|
||||
WmsStructuralPackageOrderTrayItem trayItem = trayItems.stream()
|
||||
// 从订单级别的所有托盘项中查找匹配的物料(排除已使用的,且trayId为null或-1表示未绑定)
|
||||
WmsStructuralPackageOrderTrayItem trayItem = allOrderTrayItems.stream()
|
||||
.filter(item -> !usedTrayItemIds.contains(item.getId()))
|
||||
.filter(item -> StrUtil.equals(item.getMaterialNo(), materialQO.getMaterialNo()))
|
||||
.filter(item -> Objects.isNull(item.getTrayId()) || item.getTrayId() == -1 || item.getTrayId() == 0)
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(trayItem))
|
||||
.throwMessage("托盘" + trayQO.getTrayNo() + "中物料" + materialQO.getMaterialNo() + "不存在");
|
||||
|
||||
// 标记该托盘项已被使用
|
||||
usedTrayItemIds.add(trayItem.getId());
|
||||
|
||||
// 将托盘项加入当前托盘列表
|
||||
currentTrayItems.add(trayItem);
|
||||
|
||||
// 更新托盘项的trayId
|
||||
trayItem.setTrayId(tray.getId());
|
||||
|
||||
|
|
@ -1837,8 +1852,10 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
}
|
||||
}
|
||||
|
||||
// 批量更新托盘项的trayId
|
||||
structuralPackageOrderTrayItemService.updateBatchById(trayItems);
|
||||
// 批量更新当前托盘项的trayId
|
||||
if (CollectionUtil.isNotEmpty(currentTrayItems)) {
|
||||
structuralPackageOrderTrayItemService.updateBatchById(currentTrayItems);
|
||||
}
|
||||
|
||||
// 更新托盘状态为已打包
|
||||
VUtil.trueThrowBusinessError(!structuralPackageOrderTrayService.lambdaUpdate()
|
||||
|
|
@ -1898,25 +1915,40 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
// 5. 处理每个托盘的物料
|
||||
List<StructuralPackageMaterialQRCodeContentDTO> allQrCodeDTOs = new ArrayList<>();
|
||||
|
||||
// 提前获取订单下所有托盘项(此时trayId可能为空),用于后续匹配
|
||||
List<WmsStructuralPackageOrderTrayItem> allOrderTrayItems = structuralPackageOrderTrayItemService.getList(orderId);
|
||||
|
||||
// 记录已经使用过的托盘项ID,避免重复匹配
|
||||
Set<Long> usedTrayItemIds = new HashSet<>();
|
||||
|
||||
for (TraySubmitQO trayQO : request.getTrays()) {
|
||||
WmsStructuralPackageOrderTray tray = trays.stream()
|
||||
.filter(t -> StrUtil.equals(t.getNo(), trayQO.getTrayNo()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
// 获取托盘项
|
||||
List<WmsStructuralPackageOrderTrayItem> trayItems = structuralPackageOrderTrayItemService.getListByTrayId(tray.getId());
|
||||
// 收集当前托盘需要绑定的托盘项
|
||||
List<WmsStructuralPackageOrderTrayItem> currentTrayItems = new ArrayList<>();
|
||||
|
||||
// 处理托盘中的每个物料
|
||||
for (TrayMaterialQO materialQO : trayQO.getItems()) {
|
||||
WmsStructuralPackageOrderTrayItem trayItem = trayItems.stream()
|
||||
// 从订单级别的所有托盘项中查找匹配的物料(排除已使用的,且trayId为null或-1表示未绑定)
|
||||
WmsStructuralPackageOrderTrayItem trayItem = allOrderTrayItems.stream()
|
||||
.filter(item -> !usedTrayItemIds.contains(item.getId()))
|
||||
.filter(item -> StrUtil.equals(item.getMaterialNo(), materialQO.getMaterialNo()))
|
||||
.filter(item -> Objects.isNull(item.getTrayId()) || item.getTrayId() == -1 || item.getTrayId() == 0)
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(trayItem))
|
||||
.throwMessage("托盘" + trayQO.getTrayNo() + "中物料" + materialQO.getMaterialNo() + "不存在");
|
||||
|
||||
// 标记该托盘项已被使用
|
||||
usedTrayItemIds.add(trayItem.getId());
|
||||
|
||||
// 将托盘项加入当前托盘列表
|
||||
currentTrayItems.add(trayItem);
|
||||
|
||||
// 判断该物料是否在差异列表中
|
||||
boolean hasDiff = request.getDiffList().stream()
|
||||
.anyMatch(diff -> StrUtil.equals(diff.getMaterialNo(), materialQO.getMaterialNo()));
|
||||
|
|
@ -1954,8 +1986,10 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
}
|
||||
}
|
||||
|
||||
// 批量更新托盘项的trayId
|
||||
structuralPackageOrderTrayItemService.updateBatchById(trayItems);
|
||||
// 批量更新当前托盘项的trayId
|
||||
if (CollectionUtil.isNotEmpty(currentTrayItems)) {
|
||||
structuralPackageOrderTrayItemService.updateBatchById(currentTrayItems);
|
||||
}
|
||||
|
||||
// 更新托盘状态为已打包
|
||||
VUtil.trueThrowBusinessError(!structuralPackageOrderTrayService.lambdaUpdate()
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<select id="searchByState" resultType="com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderExtendVO">
|
||||
SELECT ROW_NUMBER() OVER (ORDER BY o.id desc) AS "index",o.*,m.no||wb."no" AS "workbench_code"
|
||||
,us.supplier_code,us.supplier_name,sp.order_no AS "package_order_no",sp."no" AS "package_no"
|
||||
,sp."name" AS "package_desc",sp.tray_num,m."no" AS "model_no",'' as "tray_no",null as "tray",spdom.deliver_id
|
||||
,sp."name" AS "package_desc",(SELECT COUNT(*) FROM wms_structural_package_order_tray ot WHERE ot.order_id=o.id) AS "trayNum",m."no" AS "model_no",'' as "tray_no",null as "tray",spdom.deliver_id
|
||||
FROM wms_structural_package_order o
|
||||
LEFT JOIN wms_workbench wb ON o.workbench_id=wb."id"
|
||||
LEFT JOIN user_supplier us ON o.supplier_id=us.id
|
||||
|
|
|
|||
Loading…
Reference in New Issue