From 194e3c8a758bdf64910842e6455cc38745941cc0 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 19:00:29 +0800 Subject: [PATCH] =?UTF-8?q?feat(normal-pgi):=20=E6=96=B0=E5=A2=9E=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E7=89=A9=E6=96=99=E6=89=AB=E7=A0=81=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入 OutMaterialScanRecordRespository 和相关文档类 - 添加 Instant 时间类型支持 - 注入出库物料扫码记录仓库实例 - 修改数据分组逻辑以支持 CrossQO 类型 - 创建出库物料扫码记录列表并初始化 - 在工单项目创建时同步生成扫码记录 - 为每个二维码生成对应的扫码记录详情 - 批量保存出库物料扫码记录到数据库 --- .../admin/controller/NormalPGIController.java | 48 ++++++++++++++++--- 1 file changed, 41 insertions(+), 7 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 d661f168..89577a86 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 @@ -11,6 +11,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.digest.DigestUtil; import com.nflg.wms.admin.pojo.dto.*; +import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository; import com.nflg.wms.admin.repository.SrmMaterialReceiptNoScanCodesRepository; import com.nflg.wms.admin.repository.SrmMaterialReceiptScanCodesRepository; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; @@ -22,6 +23,7 @@ import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.document.OutMaterialScanRecord; import com.nflg.wms.common.pojo.document.SrmMaterialReceiptNoScanCodes; import com.nflg.wms.common.pojo.document.SrmMaterialReceiptScanCodes; import com.nflg.wms.common.pojo.dto.*; @@ -44,6 +46,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; +import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; @@ -115,6 +118,9 @@ public class NormalPGIController extends BaseController { @Resource private IWmsWarehouseService wmsWarehouseService; + + @Resource + private OutMaterialScanRecordRespository outMaterialScanRecordRespository; //收货单分页 /** @@ -1299,10 +1305,11 @@ public class NormalPGIController extends BaseController { // ); // }); // qos.forEach(this::takeDeliveryConfirm); - Map> maps = datas.stream().collect(Collectors.groupingBy(Zwm3a07VO::getKey2)); + Map> maps = datas.stream().collect(Collectors.groupingBy(CrossQO::getKey2)); List pOrders = new ArrayList<>(); List tickets = new ArrayList<>(); List ticketItems = new ArrayList<>(); + List records = new ArrayList<>(); maps.forEach((key, items) -> { WmsOutProduce order = Convert.convert(WmsOutProduce.class, items.get(0)); order.setId(IdUtil.getSnowflakeNextId()); @@ -1336,12 +1343,38 @@ public class NormalPGIController extends BaseController { } else { throw new NflgException(STATE.BusinessError, "获取锁失败"); } - ticketItems.add( - new WmsOutProduceTicketItem() - .setTicketId(ticket.getId()) - .setProduceItemId(itemId) - .setNum(item.getSqsl()) - ); + WmsOutProduceTicketItem ticketItem=new WmsOutProduceTicketItem() + .setId(IdUtil.getSnowflakeNextId()) + .setTicketId(ticket.getId()) + .setProduceItemId(itemId) + .setNum(item.getSqsl()); + ticketItems.add(ticketItem); + item.getQrCodes().forEach(qr->{ + WmsQrCodeMaster qrCodeMaster = qrCodeMasters.stream() + .filter(qit -> qit.getBarcodeCode().equals(qr.getCodeId())) + .findFirst() + .get(); + records.add(new OutMaterialScanRecord() + .setSource(1) + .setSourceId(order.getId()) + .setSourceItemId(itemId) + .setTicketId(ticket.getId()) + .setTicketItemId(ticketItem.getId()) + .setMaterialNo(item.getMatnr()) + .setContent(qr.getCodeId()) + .setBatchNo(qrCodeMaster.getBatchNo()) + .setSerialNo(qrCodeMaster.getSerialNo()) + .setUniqNo(qrCodeMaster.getBarcodeCode()) + .setQiTao(false) + .setFactoryNo(qrCodeMaster.getFactoryCode()) + .setWarehouseNo(qrCodeMaster.getStorageLocation()) + .setUnit(qrCodeMaster.getUnit()) + .setRspos(item.getRspos()) + .setNum(qrCodeMaster.getQuantity()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(Instant.now()) + ); + }); } catch (Exception e) { throw new NflgException(STATE.BusinessError, e.getMessage()); } finally { @@ -1357,6 +1390,7 @@ public class NormalPGIController extends BaseController { outProduceService.saveBatch(pOrders); outProduceTicketService.saveBatch(tickets); outProduceTicketItemService.saveBatch(ticketItems); + outMaterialScanRecordRespository.saveAll(records); return ApiResult.success(); }