1463 WMS系统钢构包采购业务功能优化
This commit is contained in:
parent
cf9c38a19e
commit
ca45a912cd
|
|
@ -3,10 +3,8 @@ package com.nflg.wms.admin.controller;
|
|||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.lang.Pair;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.*;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.excel.ExcelWriter;
|
||||
|
|
@ -982,14 +980,24 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
VUtil.trueThrowBusinessError(supplierIds.size() > 1).throwMessage("订单必须属于同一个供应商");
|
||||
Long supplierId = supplierIds.iterator().next();
|
||||
|
||||
// 检查所有订单下的托盘是否都已打包且未发货
|
||||
// 检查所有订单下的托盘状态
|
||||
for (Long orderId : orderIds) {
|
||||
List<WmsStructuralPackageOrderTray> trays = structuralPackageOrderTrayService.getList(orderId);
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(trays)).throwMessage("订单" + orderId + "没有托盘数据");
|
||||
|
||||
// 检查是否有未打包的托盘
|
||||
VUtil.trueThrowBusinessError(trays.stream().anyMatch(tray -> Objects.equals(tray.getState(), OrderState.Unpackaged.getState())))
|
||||
.throwMessage("订单" + orderId + "存在未打包的托盘");
|
||||
// 获取该订单下所有已打包的托盘项,找出关联的托盘ID
|
||||
List<WmsStructuralPackageOrderTrayItem> trayItems = structuralPackageOrderTrayItemService.getList(orderId);
|
||||
Set<Long> packedTrayIds = trayItems.stream()
|
||||
.filter(i -> ObjectUtil.isNotEmpty(i.getTrayId()) && i.getTrayId() != -1L)
|
||||
.map(WmsStructuralPackageOrderTrayItem::getTrayId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 检查是否有已关联托盘项但未打包的托盘
|
||||
boolean hasUnpackagedWithItems = trays.stream()
|
||||
.filter(tray -> packedTrayIds.contains(tray.getId()))
|
||||
.anyMatch(tray -> Objects.equals(tray.getState(), OrderState.Unpackaged.getState()));
|
||||
VUtil.trueThrowBusinessError(hasUnpackagedWithItems)
|
||||
.throwMessage("订单" + orderId + "存在已关联物料但未打包的托盘");
|
||||
|
||||
// 检查是否有已发货的托盘
|
||||
VUtil.trueThrowBusinessError(trays.stream().anyMatch(tray -> Objects.equals(tray.getState(), OrderState.InTransit.getState()) || Objects.equals(tray.getState(), OrderState.Received.getState())))
|
||||
|
|
@ -1024,13 +1032,22 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
.toList()
|
||||
);
|
||||
|
||||
// 将所有订单下的托盘状态更新为运输中
|
||||
// 将所有订单下已关联托盘项的托盘状态更新为运输中
|
||||
for (Long orderId : orderIds) {
|
||||
structuralPackageOrderTrayService.lambdaUpdate()
|
||||
.set(WmsStructuralPackageOrderTray::getState, OrderState.InTransit.getState())
|
||||
.eq(WmsStructuralPackageOrderTray::getOrderId, orderId)
|
||||
.eq(WmsStructuralPackageOrderTray::getState, OrderState.Packaged.getState())
|
||||
.update();
|
||||
// 获取该订单下所有已打包的托盘项,找出关联的托盘ID
|
||||
List<WmsStructuralPackageOrderTrayItem> trayItems = structuralPackageOrderTrayItemService.getList(orderId);
|
||||
Set<Long> packedTrayIds = trayItems.stream()
|
||||
.map(WmsStructuralPackageOrderTrayItem::getTrayId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
if (CollectionUtil.isNotEmpty(packedTrayIds)) {
|
||||
structuralPackageOrderTrayService.lambdaUpdate()
|
||||
.set(WmsStructuralPackageOrderTray::getState, OrderState.InTransit.getState())
|
||||
.in(WmsStructuralPackageOrderTray::getId, packedTrayIds)
|
||||
.eq(WmsStructuralPackageOrderTray::getState, OrderState.Packaged.getState())
|
||||
.update();
|
||||
}
|
||||
}
|
||||
|
||||
return ApiResult.success();
|
||||
|
|
@ -1894,6 +1911,9 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
boolean hasDiff = request.getDiffList().stream()
|
||||
.anyMatch(diff -> StrUtil.equals(diff.getMaterialNo(), materialQO.getMaterialNo()));
|
||||
|
||||
// 更新托盘项的trayId
|
||||
trayItem.setTrayId(tray.getId());
|
||||
|
||||
// 解析二维码
|
||||
if (CollectionUtil.isNotEmpty(materialQO.getQrCodes())) {
|
||||
List<StructuralPackageMaterialQRCodeContentDTO> dtos = materialQO.getQrCodes().stream()
|
||||
|
|
@ -1924,6 +1944,9 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
}
|
||||
}
|
||||
|
||||
// 批量更新托盘项的trayId
|
||||
structuralPackageOrderTrayItemService.updateBatchById(trayItems);
|
||||
|
||||
// 更新托盘状态为已打包
|
||||
VUtil.trueThrowBusinessError(!structuralPackageOrderTrayService.lambdaUpdate()
|
||||
.set(WmsStructuralPackageOrderTray::getState, OrderState.Packaged.getState())
|
||||
|
|
|
|||
Loading…
Reference in New Issue