fix(order): 修复生产订单状态检查和无码收货功能

- 添加订单状态为1时返回空列表的逻辑
- 移除对订单项数量小于等于0的过滤条件
- 修改无码收货接口参数结构,从列表改为单个对象
- 简化无码收货流程中的订单验证和票据创建逻辑
- 优化循环结构,移除重复的订单查询操作
- 统一物料号匹配和二维码存在性检查的处理方式
This commit is contained in:
曹鹏飞 2026-06-04 10:34:12 +08:00
parent e3b7642c6b
commit 23f0dd176b
2 changed files with 82 additions and 90 deletions

View File

@ -431,11 +431,13 @@ public class InProduceOrderController extends BaseController {
.eq(StrUtil.isNotBlank(no), WmsInProduceOrder::getNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
if (order.getState()==1){
return ApiResult.success(Collections.emptyList());
}
List<WmsInProduceOrderItem> items = produceOrderItemService.lambdaQuery()
.eq(WmsInProduceOrderItem::getOrderId, order.getId())
.list();
items.removeIf(item -> item.getNum().compareTo(BigDecimal.ZERO) <= 0
|| noScanningBaseControllerService.existsQrCode(item.getMaterialNo()));
items.removeIf(item -> noScanningBaseControllerService.existsQrCode(item.getMaterialNo()));
return ApiResult.success(
items.stream()
.map(item -> new NoScanItemVO()

View File

@ -433,48 +433,39 @@ public class InProduceOrderSurplusController extends BaseController {
/**
* 无码收货和入库
* @param requests 请求参数
* @param request 请求参数
*/
@Transactional
@PostMapping("receiveNoScanning")
public ApiResult<Void> receiveNoScanning(@Valid @RequestBody @NotEmpty List<NoScanningRequest> requests) {
public ApiResult<Void> receiveNoScanning(@Valid @RequestBody NoScanningRequest request) {
List<InventoryInDTO> inventories = new ArrayList<>();
Map<String, ZWM3A22Input1QO> input1Map = new LinkedHashMap<>();
Map<String, ZWM3A22Input2QO> input2Map = new LinkedHashMap<>();
Set<Long> orderIds = new HashSet<>();
Set<String> warehouseNos = new HashSet<>();
WmsInProduceOrderSurplusTicket ticket = null;
List<WmsInProduceOrderSurplusItem> orderItemsToUpdate = new ArrayList<>();
List<WmsInProduceOrderSurplusTicketItem> ticketItems = new ArrayList<>();
WmsInProduceOrderSurplus order = null;
for (NoScanningRequest request : requests) {
order = inProduceOrderSurplusService.lambdaQuery()
WmsInProduceOrderSurplus order = inProduceOrderSurplusService.lambdaQuery()
.eq(Objects.nonNull(request.getId()), WmsInProduceOrderSurplus::getId, request.getId())
.eq(StrUtil.isNotBlank(request.getNo()), WmsInProduceOrderSurplus::getNo, request.getNo())
.one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
WmsInProduceOrderSurplus currentOrder = order;
List<WmsInProduceOrderSurplusItem> orderItems = inProduceOrderSurplusItemService.lambdaQuery()
.eq(WmsInProduceOrderSurplusItem::getOrderId, currentOrder.getId())
.eq(WmsInProduceOrderSurplusItem::getOrderId, order.getId())
.list();
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(orderItems)).throwMessage("订单项不存在");
Map<Long, WmsInProduceOrderSurplusItem> orderItemMap = orderItems.stream()
.collect(Collectors.toMap(WmsInProduceOrderSurplusItem::getId, item -> item));
orderIds.add(currentOrder.getId());
VUtil.trueThrowBusinessError(orderIds.size() != 1).throwMessage("请一次只提交同一个订单的无码收货");
warehouseNos.addAll(request.getItems().stream().map(NoScanningItemRequest::getWarehouseNo).collect(Collectors.toSet()));
VUtil.trueThrowBusinessError(warehouseNos.size() != 1).throwMessage("请一次只提交同一个库存地点的无码收货");
if (ticket == null) {
ticket = new WmsInProduceOrderSurplusTicket()
WmsInProduceOrderSurplusTicket ticket = new WmsInProduceOrderSurplusTicket()
.setId(IdUtil.getSnowflakeNextId())
.setNo(serialNumberControllerService.generateSerialNumber(25))
.setOrderId(currentOrder.getId())
.setOrderId(order.getId())
.setLgort(warehouseNos.iterator().next())
.setType(1)
.setCreateBy(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now());
}
for (NoScanningItemRequest item : request.getItems()) {
WmsInProduceOrderSurplusItem orderItem = orderItemMap.get(item.getOrderItemId());
@ -497,7 +488,7 @@ public class InProduceOrderSurplusController extends BaseController {
item.getDatas().forEach(data -> {
inventories.add(new InventoryInDTO()
.setMaterialNo(orderItem.getMatnr())
.setFactoryNo(currentOrder.getDwerk())
.setFactoryNo(order.getDwerk())
.setWarehouseNo(item.getWarehouseNo())
.setBatchNo(StrUtil.blankToDefault(data.getBatchNo(), ""))
.setSerialNo(StrUtil.blankToDefault(data.getSerialNo(), ""))
@ -509,7 +500,7 @@ public class InProduceOrderSurplusController extends BaseController {
.setRspos(orderItem.getRspos())
.setMatnr(orderItem.getMatnr())
.setMaktx(orderItem.getMaktx2())
.setWerks(currentOrder.getDwerk())
.setWerks(order.getDwerk())
.setLgort(item.getWarehouseNo())
.setMenge(data.getNum())
.setMenge_t(BigDecimal.ZERO)
@ -535,7 +526,6 @@ public class InProduceOrderSurplusController extends BaseController {
.toList()))
.setNum(totalNum));
}
}
inventoryService.in(mergeInventories(inventories));
inProduceOrderSurplusItemService.updateBatchById(orderItemsToUpdate);