From 6eb9ec648e122f3b4e2c0ab0f39125a7c7e48060 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 30 Mar 2026 18:50:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(barcode):=20=E6=B7=BB=E5=8A=A0=E8=B6=8A?= =?UTF-8?q?=E5=BA=93=E5=A4=84=E7=90=86=E7=8A=B6=E6=80=81=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=85=A5=E5=BA=93=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 BarCodeProcessStage 枚举中添加 Cross 越库状态 - 移除枚举类中未使用的 EnumValue 注解 - 修改 NormalPGIController 中的入库逻辑,将二维码状态设置为越库 - 更新库存记录的锁定数量为零,并添加正确的数量字段 - 优化生产订单项目的ID生成和关联关系 - 更新二维码主数据和服务层批量处理逻辑 - 修复入库单据查询的时间条件关联表问题 - 移除 QRCodeQO1 中不再需要的数量验证字段 --- .../admin/controller/NormalPGIController.java | 72 ++++++++++--------- .../common/constant/BarCodeProcessStage.java | 7 +- .../nflg/wms/common/pojo/qo/QRCodeQO1.java | 16 ++--- .../WmsInProduceOrderSurplusTicketMapper.xml | 4 +- 4 files changed, 52 insertions(+), 47 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java index fdb2b032..d661f168 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java @@ -1265,39 +1265,40 @@ public class NormalPGIController extends BaseController { .findFirst() .orElse(null); VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("未找到二维码对应的订单"); - item.setInQty(item.getInQty().add(code.getNum())); - item.setCrossQty(item.getCrossQty().add(code.getNum())); +// item.setInQty(item.getInQty().add(qrCodeMaster.getQuantity())); + item.setCrossQty(item.getCrossQty().add(qrCodeMaster.getQuantity())); + qrCodeMaster.setProcessStage(BarCodeProcessStage.Cross.getState()); }); }); - List qos = new ArrayList<>(); - receiptItems.forEach(item -> { - PoReceiveTaskConfirmQO qo = qos.stream() - .filter(q -> q.getTaskId().equals(item.getReceiveId())) - .findFirst() - .orElse(null); - if (Objects.isNull(qo)) { - qo = new PoReceiveTaskConfirmQO() - .setTaskId(item.getReceiveId()) - .setItems(new ArrayList<>()); - qos.add(qo); - } - qo.getItems().add(new PoReceiveTaskItemConfirmQO() - .setId(item.getId()) - .setReceivedWarehouse(item.getReceivedWarehouse()) - .setItems( - qrCodeMasters.stream() - .filter(qit -> qit.getReceiptItemId().equals(item.getId())) - .toList() - .stream() - .map(qit -> new InCostCenterBackSubmitItemQRQO() - .setBinNo(item.getStorageLocation()) - .setQrCode(qit.getBarcodeCode()) - ) - .toList() - ) - ); - }); - qos.forEach(this::takeDeliveryConfirm); +// List qos = new ArrayList<>(); +// receiptItems.forEach(item -> { +// PoReceiveTaskConfirmQO qo = qos.stream() +// .filter(q -> q.getTaskId().equals(item.getReceiveId())) +// .findFirst() +// .orElse(null); +// if (Objects.isNull(qo)) { +// qo = new PoReceiveTaskConfirmQO() +// .setTaskId(item.getReceiveId()) +// .setItems(new ArrayList<>()); +// qos.add(qo); +// } +// qo.getItems().add(new PoReceiveTaskItemConfirmQO() +// .setId(item.getId()) +// .setReceivedWarehouse(item.getReceivedWarehouse()) +// .setItems( +// qrCodeMasters.stream() +// .filter(qit -> qit.getReceiptItemId().equals(item.getId())) +// .toList() +// .stream() +// .map(qit -> new InCostCenterBackSubmitItemQRQO() +// .setBinNo(item.getStorageLocation()) +// .setQrCode(qit.getBarcodeCode()) +// ) +// .toList() +// ) +// ); +// }); +// qos.forEach(this::takeDeliveryConfirm); Map> maps = datas.stream().collect(Collectors.groupingBy(Zwm3a07VO::getKey2)); List pOrders = new ArrayList<>(); List tickets = new ArrayList<>(); @@ -1323,10 +1324,13 @@ public class NormalPGIController extends BaseController { items.forEach(item -> { RLock lock = redissonClient.getLock(StrUtil.format("lock:inventory:{}:{}:{}", item.getDwerk(), item.getLgort2(), item.getMatnr())); try { + Long itemId=IdUtil.getSnowflakeNextId(); // 等待5秒获取锁,10秒后自动释放 if (lock.tryLock(5, 10, TimeUnit.SECONDS)) { WmsOutProduceItem data = Convert.convert(WmsOutProduceItem.class, item); - data.setLockNum(item.getSqsl()); + data.setId(itemId); + data.setLockNum(BigDecimal.ZERO); + data.setNum(item.getSqsl()); data.setOrderId(order.getId()); outProduceItemService.save(data); } else { @@ -1335,7 +1339,7 @@ public class NormalPGIController extends BaseController { ticketItems.add( new WmsOutProduceTicketItem() .setTicketId(ticket.getId()) - .setProduceItemId(order.getId()) + .setProduceItemId(itemId) .setNum(item.getSqsl()) ); } catch (Exception e) { @@ -1348,6 +1352,8 @@ public class NormalPGIController extends BaseController { } }); }); + qrCodeMasterService.updateBarCode(qrCodeMasters); + wmsPoReceiptItemService.updateBatchById(receiptItems); outProduceService.saveBatch(pOrders); outProduceTicketService.saveBatch(tickets); outProduceTicketItemService.saveBatch(ticketItems); diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/BarCodeProcessStage.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/BarCodeProcessStage.java index 09766084..929cf09e 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/BarCodeProcessStage.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/BarCodeProcessStage.java @@ -1,6 +1,5 @@ package com.nflg.wms.common.constant; -import com.baomidou.mybatisplus.annotation.EnumValue; import lombok.AllArgsConstructor; import lombok.Getter; @@ -56,7 +55,11 @@ public enum BarCodeProcessStage { /** * 已拒收 */ - Reject((short) 11, "拒收"); + Reject((short) 11, "拒收"), + /** + * 已拒收 + */ + Cross((short) 12, "已越库"); private final short state; private final String description; diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QRCodeQO1.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QRCodeQO1.java index c7ad9632..96a6e03a 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QRCodeQO1.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QRCodeQO1.java @@ -1,12 +1,8 @@ package com.nflg.wms.common.pojo.qo; import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Positive; import lombok.Data; -import java.math.BigDecimal; - @Data public class QRCodeQO1 { @@ -16,10 +12,10 @@ public class QRCodeQO1 { @NotBlank private String codeId; - /** - * 数量 - */ - @NotNull - @Positive(message = "数量必须大于0") - private BigDecimal num; +// /** +// * 数量 +// */ +// @NotNull +// @Positive(message = "数量必须大于0") +// private BigDecimal num; } diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsInProduceOrderSurplusTicketMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsInProduceOrderSurplusTicketMapper.xml index 43127f3b..20f787e9 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsInProduceOrderSurplusTicketMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsInProduceOrderSurplusTicketMapper.xml @@ -8,10 +8,10 @@ INNER JOIN wms_in_produce_order_surplus ipos ON ipost.order_id=ipos."id" - and ipost.create_time >= #{request.startDate} + and ipos.create_time >= #{request.startDate} - and ipost.create_time <= #{request.endDate} + and ipos.create_time <= #{request.endDate} AND ipost."no" ilike CONCAT('%',#{request.no},'%')