From bc93e904feb7af6e2e286893efe44ad62f71d0cf Mon Sep 17 00:00:00 2001 From: yf001217 <834502597@qq.com> Date: Mon, 1 Jun 2026 09:11:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=97=A0=E7=A0=81=E6=94=B6?= =?UTF-8?q?=E8=B4=A7-=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95=E5=89=AF?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/InProduceOrderController.java | 159 +++++++++--------- 1 file changed, 83 insertions(+), 76 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java index 38d5db85..8113d884 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java @@ -6,6 +6,8 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.nflg.wms.admin.pojo.dto.PdfPageDTO; +import com.nflg.wms.admin.pojo.request.NoScanningItemDataRequest; +import com.nflg.wms.admin.pojo.request.NoScanningItemRequest; import com.nflg.wms.admin.pojo.request.NoScanningRequest; import com.nflg.wms.admin.repository.InMaterialScanRecordRespository; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; @@ -698,93 +700,98 @@ public class InProduceOrderController extends BaseController { @Transactional @PostMapping("receiveNoScanning") public ApiResult receiveNoScanning(@Valid @RequestBody @NotEmpty List requests) { - List orderItems = produceOrderItemService.lambdaQuery() - .in(WmsInProduceOrderItem::getId, requests.stream().map(NoScanningRequest::getOrderItemId).distinct().toList()) - .list(); - VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(orderItems)).throwMessage("订单项不存在"); - VUtil.trueThrowBusinessError(orderItems.size() != requests.stream().map(NoScanningRequest::getOrderItemId).distinct().count()) - .throwMessage("存在无效的订单项"); - - Set orderIds = orderItems.stream().map(WmsInProduceOrderItem::getOrderId).collect(Collectors.toSet()); - VUtil.trueThrowBusinessError(orderIds.size() != 1).throwMessage("请一次只提交同一个订单的无码收货"); - WmsInProduceOrder order = produceOrderService.getById(orderIds.iterator().next()); - VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在"); - VUtil.trueThrowBusinessError(!Objects.equals(order.getState(), (short) 0)) - .throwMessage("该订单非待收货状态"); - - Map orderItemMap = orderItems.stream() - .collect(Collectors.toMap(WmsInProduceOrderItem::getId, item -> item)); List records = new ArrayList<>(); List inventories = new ArrayList<>(); - requests.forEach(request -> { - WmsInProduceOrderItem orderItem = orderItemMap.get(request.getOrderItemId()); - VUtil.trueThrowBusinessError(Objects.isNull(orderItem)).throwMessage("订单项不存在"); - VUtil.trueThrowBusinessError(!StrUtil.equals(request.getMaterialNo(), orderItem.getMaterialNo())) - .throwMessage("订单项与物料不匹配:" + request.getMaterialNo()); - VUtil.trueThrowBusinessError(noScanningBaseControllerService.existsQrCode(orderItem.getMaterialNo())) - .throwMessage("物料" + orderItem.getMaterialNo() + "已生成二维码,不允许无码收货"); + List input1 = new ArrayList<>(); + List sernrs = new ArrayList<>(); + Set orderIds = new HashSet<>(); - BigDecimal totalNum = request.getItems().stream() - .peek(item -> VUtil.trueThrowBusinessError(Objects.isNull(item.getNum()) || item.getNum().compareTo(BigDecimal.ZERO) <= 0) - .throwMessage("物料" + orderItem.getMaterialNo() + "的无码收货数量必须大于0")) - .map(item -> item.getNum()) - .reduce(BigDecimal.ZERO, BigDecimal::add); - VUtil.trueThrowBusinessError(totalNum.compareTo(orderItem.getNum()) != 0) - .throwMessage("物料" + orderItem.getMaterialNo() + "的无码收货数量与订单数量不一致"); + for (NoScanningRequest request : requests) { + WmsInProduceOrder order = produceOrderService.getById(request.getId()); + VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在"); + VUtil.trueThrowBusinessError(!Objects.equals(order.getState(), (short) 0)) + .throwMessage("该订单非待收货状态"); - request.getItems().forEach(item -> { - records.add(new InMaterialScanRecord() - .setSource(4) - .setSourceId(order.getId()) - .setSourceItemId(orderItem.getId()) - .setTicketItemId(orderItem.getId()) - .setMaterialNo(orderItem.getMaterialNo()) - .setMaterialDesc(orderItem.getMaterialDesc()) - .setFactoryNo(orderItem.getFactoryNo()) - .setWarehouseNo(orderItem.getWarehouseNo()) - .setBinNo(StrUtil.blankToDefault(item.getBinNo(), "")) - .setContent("") - .setBatchNo(StrUtil.blankToDefault(item.getBatchNo(), "")) - .setSerialNo(StrUtil.blankToDefault(item.getSerialNo(), "")) - .setNum(item.getNum()) - .setUnit(orderItem.getUnit()) - .setUniqNo("NO_SCAN_" + IdUtil.getSnowflakeNextId()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(Instant.now()) - ); - inventories.add(new InventoryInDTO() - .setMaterialNo(orderItem.getMaterialNo()) - .setFactoryNo(orderItem.getFactoryNo()) - .setWarehouseNo(orderItem.getWarehouseNo()) - .setBatchNo(StrUtil.blankToDefault(item.getBatchNo(), "")) - .setSerialNo(StrUtil.blankToDefault(item.getSerialNo(), "")) - .setBinLocation("") - .setNum(item.getNum()) - ); - }); - }); + List orderItems = produceOrderItemService.lambdaQuery() + .eq(WmsInProduceOrderItem::getOrderId, order.getId()) + .list(); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(orderItems)).throwMessage("订单项不存在"); + Map orderItemMap = orderItems.stream() + .collect(Collectors.toMap(WmsInProduceOrderItem::getId, item -> item)); + orderIds.add(order.getId()); + VUtil.trueThrowBusinessError(orderIds.size() != 1).throwMessage("请一次只提交同一个订单的无码收货"); + + for (NoScanningItemRequest item : request.getItems()) { + WmsInProduceOrderItem orderItem = orderItemMap.get(item.getOrderItemId()); + VUtil.trueThrowBusinessError(Objects.isNull(orderItem)).throwMessage("订单项不存在"); + VUtil.trueThrowBusinessError(!StrUtil.equals(item.getMaterialNo(), orderItem.getMaterialNo())) + .throwMessage("订单项与物料不匹配:" + item.getMaterialNo()); + VUtil.trueThrowBusinessError(noScanningBaseControllerService.existsQrCode(orderItem.getMaterialNo())) + .throwMessage("物料" + orderItem.getMaterialNo() + "已生成二维码,不允许无码收货"); + + BigDecimal totalNum = item.getDatas().stream() + .peek(data -> VUtil.trueThrowBusinessError(Objects.isNull(data.getNum()) || data.getNum().compareTo(BigDecimal.ZERO) <= 0) + .throwMessage("物料" + orderItem.getMaterialNo() + "的无码收货数量必须大于0")) + .map(NoScanningItemDataRequest::getNum) + .reduce(BigDecimal.ZERO, BigDecimal::add); + VUtil.trueThrowBusinessError(totalNum.compareTo(orderItem.getNum()) != 0) + .throwMessage("物料" + orderItem.getMaterialNo() + "的无码收货数量与订单数量不一致"); + + item.getDatas().forEach(data -> { + records.add(new InMaterialScanRecord() + .setSource(4) + .setSourceId(order.getId()) + .setSourceItemId(orderItem.getId()) + .setTicketItemId(orderItem.getId()) + .setMaterialNo(orderItem.getMaterialNo()) + .setMaterialDesc(orderItem.getMaterialDesc()) + .setFactoryNo(orderItem.getFactoryNo()) + .setWarehouseNo(orderItem.getWarehouseNo()) + .setBinNo(StrUtil.blankToDefault(data.getBinNo(), "")) + .setContent("") + .setBatchNo(StrUtil.blankToDefault(data.getBatchNo(), "")) + .setSerialNo(StrUtil.blankToDefault(data.getSerialNo(), "")) + .setNum(data.getNum()) + .setUnit(orderItem.getUnit()) + .setUniqNo("NO_SCAN_" + IdUtil.getSnowflakeNextId()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(Instant.now()) + ); + inventories.add(new InventoryInDTO() + .setMaterialNo(orderItem.getMaterialNo()) + .setFactoryNo(orderItem.getFactoryNo()) + .setWarehouseNo(orderItem.getWarehouseNo()) + .setBatchNo(StrUtil.blankToDefault(data.getBatchNo(), "")) + .setSerialNo(StrUtil.blankToDefault(data.getSerialNo(), "")) + .setBinLocation("") + .setNum(data.getNum()) + ); + }); + } + + input1.addAll(orderItems.stream() + .filter(it -> Objects.equals(it.getParentId(), 0L)) + .map(it -> new Zwm00Mb107QO() + .setPWERK(it.getFactoryNo()) + .setPSMNG(it.getNum()) + .setAMEIN(it.getUnit()) + .setLGORT(it.getWarehouseNo()) + .setCHARG(it.getBatchNo())) + .toList()); + sernrs.addAll(orderItems.stream() + .filter(it -> Objects.equals(it.getParentId(), 0L)) + .map(WmsInProduceOrderItem::getSernr) + .toList()); + } inventoryService.in(mergeInventories(inventories)); + WmsInProduceOrder order = produceOrderService.getById(requests.get(0).getId()); OptRecordDTO optRecordDTO = new OptRecordDTO(); optRecordDTO.setOperationType((short) 1) .setOrderId(order.getNo()); optRecordService.add(optRecordDTO); - Zwm00Mb107DTO dto = sapService.zwm00_mb107( - order.getOrderNo(), - UserUtil.getUserName(), - records.stream().collect(Collectors.groupingBy(InMaterialScanRecord::getKey8)) - .values() - .stream() - .map(items -> new Zwm00Mb107QO() - .setPWERK(items.get(0).getFactoryNo()) - .setPSMNG(items.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) - .setAMEIN(items.get(0).getUnit()) - .setLGORT(items.get(0).getWarehouseNo()) - .setCHARG(items.get(0).getBatchNo())) - .toList(), - records.stream().map(InMaterialScanRecord::getSerialNo).toList() - ); + Zwm00Mb107DTO dto = sapService.zwm00_mb107(order.getOrderNo(), UserUtil.getUserName(), input1, sernrs); order.setMblnr(dto.getE_MBLNR()); order.setMjahr(dto.getE_MJAHR()); order.setState((short) 1);