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.collection.CollectionUtil;
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.lang.Pair;
|
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.NumberUtil;
|
||||||
import cn.hutool.core.util.RandomUtil;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.alibaba.excel.EasyExcel;
|
import com.alibaba.excel.EasyExcel;
|
||||||
import com.alibaba.excel.ExcelWriter;
|
import com.alibaba.excel.ExcelWriter;
|
||||||
|
|
@ -982,14 +980,24 @@ public class StructuralPackageOrderController extends BaseController {
|
||||||
VUtil.trueThrowBusinessError(supplierIds.size() > 1).throwMessage("订单必须属于同一个供应商");
|
VUtil.trueThrowBusinessError(supplierIds.size() > 1).throwMessage("订单必须属于同一个供应商");
|
||||||
Long supplierId = supplierIds.iterator().next();
|
Long supplierId = supplierIds.iterator().next();
|
||||||
|
|
||||||
// 检查所有订单下的托盘是否都已打包且未发货
|
// 检查所有订单下的托盘状态
|
||||||
for (Long orderId : orderIds) {
|
for (Long orderId : orderIds) {
|
||||||
List<WmsStructuralPackageOrderTray> trays = structuralPackageOrderTrayService.getList(orderId);
|
List<WmsStructuralPackageOrderTray> trays = structuralPackageOrderTrayService.getList(orderId);
|
||||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(trays)).throwMessage("订单" + orderId + "没有托盘数据");
|
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(trays)).throwMessage("订单" + orderId + "没有托盘数据");
|
||||||
|
|
||||||
// 检查是否有未打包的托盘
|
// 获取该订单下所有已打包的托盘项,找出关联的托盘ID
|
||||||
VUtil.trueThrowBusinessError(trays.stream().anyMatch(tray -> Objects.equals(tray.getState(), OrderState.Unpackaged.getState())))
|
List<WmsStructuralPackageOrderTrayItem> trayItems = structuralPackageOrderTrayItemService.getList(orderId);
|
||||||
.throwMessage("订单" + 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())))
|
VUtil.trueThrowBusinessError(trays.stream().anyMatch(tray -> Objects.equals(tray.getState(), OrderState.InTransit.getState()) || Objects.equals(tray.getState(), OrderState.Received.getState())))
|
||||||
|
|
@ -1024,14 +1032,23 @@ public class StructuralPackageOrderController extends BaseController {
|
||||||
.toList()
|
.toList()
|
||||||
);
|
);
|
||||||
|
|
||||||
// 将所有订单下的托盘状态更新为运输中
|
// 将所有订单下已关联托盘项的托盘状态更新为运输中
|
||||||
for (Long orderId : orderIds) {
|
for (Long orderId : orderIds) {
|
||||||
|
// 获取该订单下所有已打包的托盘项,找出关联的托盘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()
|
structuralPackageOrderTrayService.lambdaUpdate()
|
||||||
.set(WmsStructuralPackageOrderTray::getState, OrderState.InTransit.getState())
|
.set(WmsStructuralPackageOrderTray::getState, OrderState.InTransit.getState())
|
||||||
.eq(WmsStructuralPackageOrderTray::getOrderId, orderId)
|
.in(WmsStructuralPackageOrderTray::getId, packedTrayIds)
|
||||||
.eq(WmsStructuralPackageOrderTray::getState, OrderState.Packaged.getState())
|
.eq(WmsStructuralPackageOrderTray::getState, OrderState.Packaged.getState())
|
||||||
.update();
|
.update();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ApiResult.success();
|
return ApiResult.success();
|
||||||
}
|
}
|
||||||
|
|
@ -1894,6 +1911,9 @@ public class StructuralPackageOrderController extends BaseController {
|
||||||
boolean hasDiff = request.getDiffList().stream()
|
boolean hasDiff = request.getDiffList().stream()
|
||||||
.anyMatch(diff -> StrUtil.equals(diff.getMaterialNo(), materialQO.getMaterialNo()));
|
.anyMatch(diff -> StrUtil.equals(diff.getMaterialNo(), materialQO.getMaterialNo()));
|
||||||
|
|
||||||
|
// 更新托盘项的trayId
|
||||||
|
trayItem.setTrayId(tray.getId());
|
||||||
|
|
||||||
// 解析二维码
|
// 解析二维码
|
||||||
if (CollectionUtil.isNotEmpty(materialQO.getQrCodes())) {
|
if (CollectionUtil.isNotEmpty(materialQO.getQrCodes())) {
|
||||||
List<StructuralPackageMaterialQRCodeContentDTO> dtos = materialQO.getQrCodes().stream()
|
List<StructuralPackageMaterialQRCodeContentDTO> dtos = materialQO.getQrCodes().stream()
|
||||||
|
|
@ -1924,6 +1944,9 @@ public class StructuralPackageOrderController extends BaseController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 批量更新托盘项的trayId
|
||||||
|
structuralPackageOrderTrayItemService.updateBatchById(trayItems);
|
||||||
|
|
||||||
// 更新托盘状态为已打包
|
// 更新托盘状态为已打包
|
||||||
VUtil.trueThrowBusinessError(!structuralPackageOrderTrayService.lambdaUpdate()
|
VUtil.trueThrowBusinessError(!structuralPackageOrderTrayService.lambdaUpdate()
|
||||||
.set(WmsStructuralPackageOrderTray::getState, OrderState.Packaged.getState())
|
.set(WmsStructuralPackageOrderTray::getState, OrderState.Packaged.getState())
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue