From 51b2f3b9a3356d10c5483ab12e590d6798dccde0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Fri, 20 Mar 2026 14:15:11 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(logic):=20=E4=BF=AE=E5=A4=8D=E9=BD=90?= =?UTF-8?q?=E5=A5=97=E7=89=A9=E6=96=99=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E7=A9=BA=E5=80=BC=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在多个控制器中添加useChildren字段判断条件,防止扫码子项时的错误验证 - 将findFirst().get()替换为map().orElse("")模式,避免潜在的NoSuchElementException异常 - 在OutProduceSubmitItemQO中新增useChildren字段用于标识是否扫码子项 - 修复代码中的空行和格式问题,提升代码可读性 --- .../controller/ComponentOutboundController.java | 4 ++-- .../admin/controller/OutAssistanceController.java | 6 +++--- .../admin/controller/OutCostCenterController.java | 6 +++--- .../admin/controller/OutProduceController.java | 6 +++--- .../admin/controller/OutPurchaseController.java | 4 ++-- .../controller/TransferCompanyController.java | 6 +++--- .../controller/TransferFactoryController.java | 15 +++++++-------- .../common/pojo/qo/OutProduceSubmitItemQO.java | 5 +++++ 8 files changed, 28 insertions(+), 24 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ComponentOutboundController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ComponentOutboundController.java index a5791e52..d8ab4ddb 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ComponentOutboundController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ComponentOutboundController.java @@ -408,8 +408,8 @@ public class ComponentOutboundController extends BaseController { .setBinLocation(qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() - .get() - .getBinLocation() + .map(WmsQrCodeMaster::getBinLocation) + .orElse("") ) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) ).toList() diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java index f5e1a624..2c1acfb6 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java @@ -246,7 +246,7 @@ public class OutAssistanceController extends BaseController { ticketItems.add(ti); return ti; }); - if (qitem.isQiTao()) { + if (qitem.isQiTao() && !qitem.isUseChildren()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs())) .throwMessage("齐套物料需要提供批次信息"); qitem.getBatchs() @@ -380,8 +380,8 @@ public class OutAssistanceController extends BaseController { .setBinLocation(qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() - .get() - .getBinLocation() + .map(WmsQrCodeMaster::getBinLocation) + .orElse("") ) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) ).toList() diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java index 48f3ec88..c6c6a41c 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java @@ -243,7 +243,7 @@ public class OutCostCenterController extends BaseController { ticketItems.add(ti); return ti; }); - if (qitem.isQiTao()) { + if (qitem.isQiTao() && !qitem.isUseChildren()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs())) .throwMessage("齐套物料需要提供批次信息"); qitem.getBatchs() @@ -371,8 +371,8 @@ public class OutCostCenterController extends BaseController { .setBinLocation(qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() - .get() - .getBinLocation() + .map(WmsQrCodeMaster::getBinLocation) + .orElse("") ) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) ).toList() diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java index 59fb40af..4b2063ef 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java @@ -357,7 +357,7 @@ public class OutProduceController extends BaseController { ticketItems.add(ti); return ti; }); - if (qitem.isQiTao()) { + if (qitem.isQiTao() && !qitem.isUseChildren()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs())) .throwMessage("齐套物料需要提供批次信息"); qitem.getBatchs() @@ -495,8 +495,8 @@ public class OutProduceController extends BaseController { .setBinLocation(qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() - .get() - .getBinLocation() + .map(WmsQrCodeMaster::getBinLocation) + .orElse("") ) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) ).toList() diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutPurchaseController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutPurchaseController.java index 2cc221d7..17b4e271 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutPurchaseController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutPurchaseController.java @@ -283,8 +283,8 @@ public class OutPurchaseController extends BaseController { .setBinLocation(qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() - .get() - .getBinLocation() + .map(WmsQrCodeMaster::getBinLocation) + .orElse("") ) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) ).toList() diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java index 8924c6e2..c2d6f102 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java @@ -276,7 +276,7 @@ public class TransferCompanyController extends BaseController { ticketItems.add(ti); return ti; }); - if (qitem.isQiTao()) { + if (qitem.isQiTao() && !qitem.isUseChildren()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs())) .throwMessage("齐套物料需要提供批次信息"); qitem.getBatchs() @@ -416,8 +416,8 @@ public class TransferCompanyController extends BaseController { .setBinLocation(qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() - .get() - .getBinLocation() + .map(WmsQrCodeMaster::getBinLocation) + .orElse("") ) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) ).toList() diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java index d6fbba46..58472145 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java @@ -275,7 +275,6 @@ public class TransferFactoryController extends BaseController { .list(); qrCodeMasters.addAll(tempList); } - request.getItems().forEach(qitem -> { WmsTransferFactoryItem item = datas.stream().filter(d -> Objects.equals(d.getId(), qitem.getItemId())).findFirst().orElse(null); VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + qitem.getMaterialNo() + "不需要出库"); @@ -292,7 +291,7 @@ public class TransferFactoryController extends BaseController { ticketItems.add(ti); return ti; }); - if (qitem.isQiTao()) { + if (qitem.isQiTao() && !qitem.isUseChildren()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs())) .throwMessage("齐套物料需要提供批次信息"); qitem.getBatchs() @@ -408,8 +407,8 @@ public class TransferFactoryController extends BaseController { .setBinLocation(qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() - .get() - .getBinLocation() + .map(WmsQrCodeMaster::getBinLocation) + .orElse("") ) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) ).toList() @@ -457,7 +456,7 @@ public class TransferFactoryController extends BaseController { .list(); qrCodeMasters.stream() .forEach(p -> { - OutMaterialScanRecord record=records.stream() + OutMaterialScanRecord record = records.stream() .filter(r -> r.getUniqNo().equals(p.getBarcodeCode())) .findFirst() .get(); @@ -468,7 +467,7 @@ public class TransferFactoryController extends BaseController { p.setLastScanBy(UserUtil.getUserId()); p.setLastScanByname(UserUtil.getUserName()); p.setLastScanTime(LocalDateTime.now()); - if (p.getPackagingType() == 1){ + if (p.getPackagingType() == 1) { List children = qrCodeMasterService.lambdaQuery() .eq(WmsQrCodeMaster::getParentBarcodeId, p.getId()) .list(); @@ -500,8 +499,8 @@ public class TransferFactoryController extends BaseController { .setBinLocation(qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() - .get() - .getBinLocation() + .map(WmsQrCodeMaster::getBinLocation) + .orElse("") ) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) ).toList() diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/OutProduceSubmitItemQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/OutProduceSubmitItemQO.java index 7cdba468..50b9cfe7 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/OutProduceSubmitItemQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/OutProduceSubmitItemQO.java @@ -30,6 +30,11 @@ public class OutProduceSubmitItemQO { @JsonProperty("isQiTao") private boolean isQiTao; + /** + * 是否扫码子项 + */ + private boolean useChildren; + /** * 批次列表 */ From be55549d6528264b42ab7e22f96f3b85b6140ff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Fri, 20 Mar 2026 15:42:52 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat(wms):=20=E5=AE=9E=E7=8E=B0=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E6=8D=AE=E9=BD=90=E5=A5=97=E7=89=A9=E6=96=99?= =?UTF-8?q?=E5=92=8C=E6=89=AB=E7=A0=81=E5=AD=90=E9=A1=B9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在ComponentOutboundItemInputQO中新增useChildren字段用于标识是否扫码子项 - 为OutMaterialScanRecord添加isQiTao字段标识齐套物料状态 - 在多个控制器中完善齐套物料处理逻辑包括ComponentOutboundController、OutAssistanceController等 - 实现扫码子项功能支持通过useChildren条件判断执行不同流程 - 修复binNo为空时的空指针异常并优化相关查询逻辑 - 添加采购退货申请单PDF导出功能和相应模板文件 - 优化外协领料出库单模板样式调整logo宽度为250px --- .../ComponentOutboundController.java | 96 +++++---- .../controller/OutAssistanceController.java | 56 ++--- .../controller/OutCostCenterController.java | 57 ++--- .../controller/OutProduceController.java | 57 ++--- .../controller/PurchaseReturnController.java | 44 +++- .../controller/TransferCompanyController.java | 68 +++--- .../controller/TransferFactoryController.java | 53 ++--- .../template/外协领料出库单.html | 2 +- .../template/采购退货申请单.html | 202 ++++++++++++++++++ .../pojo/document/OutMaterialScanRecord.java | 5 + .../pojo/qo/ComponentOutboundItemInputQO.java | 5 + .../pojo/qo/InventoryInItemQRCodeQO.java | 6 + 12 files changed, 463 insertions(+), 188 deletions(-) create mode 100644 nflg-wms-admin/src/main/resources/template/采购退货申请单.html diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ComponentOutboundController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ComponentOutboundController.java index d8ab4ddb..8f589da6 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ComponentOutboundController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ComponentOutboundController.java @@ -220,31 +220,32 @@ public class ComponentOutboundController extends BaseController { if (item.isQiTao()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getBatchs())) .throwMessage("齐套物料需要提供批次信息"); - item.getBatchs() - .forEach(it -> { - records.add(new OutMaterialScanRecord() - .setSource(7) - .setSourceId(packing.getId()) - .setSourceItemId(outboundItem.getPackingItemId()) - .setTicketId(outbound.getId()) - .setTicketItemId(outboundItem.getId()) - .setMaterialNo(outboundItem.getIdnrk()) - .setContent("") - .setBatchNo(it.getBatchNo()) - .setSerialNo(it.getSerialNo()) - .setUniqNo("") - .setFactoryNo(packing.getFactoryNo()) - .setWarehouseNo(outboundItem.getLgort()) + item.getBatchs().forEach(it -> { + records.add(new OutMaterialScanRecord() + .setSource(7) + .setSourceId(packing.getId()) + .setSourceItemId(outboundItem.getPackingItemId()) + .setTicketId(outbound.getId()) + .setTicketItemId(outboundItem.getId()) + .setMaterialNo(outboundItem.getIdnrk()) + .setContent("") + .setBatchNo(it.getBatchNo()) + .setSerialNo(it.getSerialNo()) + .setUniqNo("") + .setQiTao(true) + .setFactoryNo(packing.getFactoryNo()) + .setWarehouseNo(outboundItem.getLgort()) // .setUnit(item.getMeins()) - .setNum(it.getNum()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(Instant.now()) - ); - }); + .setNum(it.getNum()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(Instant.now()) + ); + }); VUtil.trueThrowBusinessError(outboundItem.getOutQty() .compareTo(records.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) != 0) .throwMessage("物料" + outboundItem.getIdnrk() + "的领取数量不等于装箱数量"); - } else { + } + if (item.isUseChildren()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getScanCodes())) .throwMessage("需要提供扫码信息"); if (CollectionUtil.isNotEmpty(item.getScanCodes())) { @@ -284,28 +285,31 @@ public class ComponentOutboundController extends BaseController { // .setLgpbe(outboundItem.getLgpbe()); // outboundScanCodes.add(scanCodes); WmsQrCodeMaster qrCodeContent = qrCodeMasterService.getByCode(code.getCodeId()); - records.add(new OutMaterialScanRecord() - .setSource(7) - .setSourceId(packing.getId()) - .setSourceItemId(outboundItem.getPackingItemId()) - .setTicketId(outbound.getId()) - .setTicketItemId(outboundItem.getId()) - .setMaterialNo(outboundItem.getIdnrk()) - .setContent(qrCodeContent.getBarcodeCode()) - .setBatchNo(qrCodeContent.getBatchNo()) - .setSerialNo(qrCodeContent.getSerialNo()) - .setUniqNo(code.getCodeId()) - .setFactoryNo(qrCodeContent.getFactoryCode()) - .setWarehouseNo(qrCodeContent.getStorageLocation()) - .setBinNo(qrCodeContent.getBinLocation()) + if (!item.isQiTao()) { + records.add(new OutMaterialScanRecord() + .setSource(7) + .setSourceId(packing.getId()) + .setSourceItemId(outboundItem.getPackingItemId()) + .setTicketId(outbound.getId()) + .setTicketItemId(outboundItem.getId()) + .setMaterialNo(outboundItem.getIdnrk()) + .setContent(qrCodeContent.getBarcodeCode()) + .setBatchNo(qrCodeContent.getBatchNo()) + .setSerialNo(qrCodeContent.getSerialNo()) + .setUniqNo(code.getCodeId()) + .setQiTao(false) + .setFactoryNo(qrCodeContent.getFactoryCode()) + .setWarehouseNo(qrCodeContent.getStorageLocation()) + .setBinNo(qrCodeContent.getBinLocation()) // .setUnit(item.getMeins()) - .setNum(code.getCodeNum()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(Instant.now()) - ); + .setNum(code.getCodeNum()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(Instant.now()) + ); + } //组装下库存信息 setInventoryOutDTO(inventories, outboundItem.getIdnrk(), packing.getFactoryNo() - , qrCodeContent.getStorageLocation(), qrCodeContent.getBinLocation(),qrCodeContent.getBatchNo() + , qrCodeContent.getStorageLocation(), qrCodeContent.getBinLocation(), qrCodeContent.getBatchNo() , qrCodeContent.getSerialNo(), code.getCodeNum()); } @@ -405,7 +409,7 @@ public class ComponentOutboundController extends BaseController { .setSerialNo(list.get(0).getSerialNo()) .setFactoryNo(list.get(0).getFactoryNo()) .setWarehouseNo(list.get(0).getWarehouseNo()) - .setBinLocation(qrCodeMasters.stream() + .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() :qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() .map(WmsQrCodeMaster::getBinLocation) @@ -438,11 +442,11 @@ public class ComponentOutboundController extends BaseController { .orElse(null); if (Objects.isNull(codeItem)) { scanCodesGroup.add(new ScanCodeQO() - .setCodeId(record.getId()) - .setBatchNumber(record.getBatchNo()) - .setSerialNumbers(record.getSerialNo()) + .setCodeId(record.getId()) + .setBatchNumber(record.getBatchNo()) + .setSerialNumbers(record.getSerialNo()) // .setCodeContent(record.getContent()) - .setCodeNum(record.getNum()) + .setCodeNum(record.getNum()) ); } else { codeItem.setCodeNum(codeItem.getCodeNum().add(record.getNum())); @@ -573,7 +577,7 @@ public class ComponentOutboundController extends BaseController { 组装库存信息 */ private void setInventoryOutDTO(List inventories, String materialNo, - String factoryNo, String warehouseNo,String binNo, String batchNumber, String serialNo, BigDecimal outQty + String factoryNo, String warehouseNo, String binNo, String batchNumber, String serialNo, BigDecimal outQty ) { InventoryOutDTO inventory = inventories.stream() .filter(it -> StrUtil.equals(it.getMaterialNo(), materialNo) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java index 2c1acfb6..26b71cdd 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java @@ -246,7 +246,7 @@ public class OutAssistanceController extends BaseController { ticketItems.add(ti); return ti; }); - if (qitem.isQiTao() && !qitem.isUseChildren()) { + if (qitem.isQiTao()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs())) .throwMessage("齐套物料需要提供批次信息"); qitem.getBatchs() @@ -262,6 +262,7 @@ public class OutAssistanceController extends BaseController { .setBatchNo(it.getBatchNo()) .setSerialNo(it.getSerialNo()) .setUniqNo("") + .setQiTao(true) .setFactoryNo(order.getWerks()) .setWarehouseNo(order.getLgort1()) .setUnit(item.getMeins()) @@ -276,7 +277,8 @@ public class OutAssistanceController extends BaseController { VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0) .throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制"); }); - } else { + } + if (qitem.isUseChildren()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes())) .throwMessage("需要提供扫码信息"); qitem.getQrCodes().forEach(qrCode -> { @@ -299,27 +301,30 @@ public class OutAssistanceController extends BaseController { qrCodeMaster.setLastScanBy(UserUtil.getUserId()); qrCodeMaster.setLastScanByname(UserUtil.getUserName()); qrCodeMaster.setLastScanTime(LocalDateTime.now()); - records.add(new OutMaterialScanRecord() - .setSource(3) - .setSourceId(order.getId()) - .setSourceItemId(item.getId()) - .setTicketId(ticket.getId()) - .setTicketItemId(pti.getId()) - .setMaterialNo(materialNo) - .setContent(qrCodeMaster.getBarcodeCode()) - .setBatchNo(qrCodeMaster.getBatchNo()) - .setSerialNo(qrCodeMaster.getSerialNo()) - .setUniqNo(qrCodeMaster.getBarcodeCode()) - .setFactoryNo(qrCodeMaster.getFactoryCode()) - .setWarehouseNo(qrCodeMaster.getStorageLocation()) - .setBinNo(qrCodeMaster.getBinLocation()) - .setUnit(item.getMeins()) - .setNum(qrCodeMaster.getQuantity()) - .setEbeln(order.getEbeln()) - .setEbelp(item.getEbelp()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(Instant.now()) - ); + if (!qitem.isQiTao()) { + records.add(new OutMaterialScanRecord() + .setSource(3) + .setSourceId(order.getId()) + .setSourceItemId(item.getId()) + .setTicketId(ticket.getId()) + .setTicketItemId(pti.getId()) + .setMaterialNo(materialNo) + .setContent(qrCodeMaster.getBarcodeCode()) + .setBatchNo(qrCodeMaster.getBatchNo()) + .setSerialNo(qrCodeMaster.getSerialNo()) + .setUniqNo(qrCodeMaster.getBarcodeCode()) + .setFactoryNo(qrCodeMaster.getFactoryCode()) + .setWarehouseNo(qrCodeMaster.getStorageLocation()) + .setBinNo(qrCodeMaster.getBinLocation()) + .setUnit(item.getMeins()) + .setQiTao(false) + .setNum(qrCodeMaster.getQuantity()) + .setEbeln(order.getEbeln()) + .setEbelp(item.getEbelp()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(Instant.now()) + ); + } }); } }); @@ -377,7 +382,7 @@ public class OutAssistanceController extends BaseController { .setSerialNo(list.get(0).getSerialNo()) .setFactoryNo(list.get(0).getFactoryNo()) .setWarehouseNo(list.get(0).getWarehouseNo()) - .setBinLocation(qrCodeMasters.stream() + .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() .map(WmsQrCodeMaster::getBinLocation) @@ -462,8 +467,7 @@ public class OutAssistanceController extends BaseController { .eq(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState()) .in(WmsQrCodeMaster::getBarcodeCode, records.stream().map(OutMaterialScanRecord::getUniqNo).toList()) .list(); - qrCodeMasters.stream() - .forEach(p -> { + qrCodeMasters.forEach(p -> { OutMaterialScanRecord record = records.stream() .filter(r -> r.getUniqNo().equals(p.getBarcodeCode())) .findFirst() diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java index c6c6a41c..046110a6 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java @@ -243,7 +243,7 @@ public class OutCostCenterController extends BaseController { ticketItems.add(ti); return ti; }); - if (qitem.isQiTao() && !qitem.isUseChildren()) { + if (qitem.isQiTao()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs())) .throwMessage("齐套物料需要提供批次信息"); qitem.getBatchs() @@ -259,6 +259,7 @@ public class OutCostCenterController extends BaseController { .setBatchNo(it.getBatchNo()) .setSerialNo(it.getSerialNo()) .setUniqNo("") + .setQiTao(true) .setFactoryNo(order.getWerks()) .setWarehouseNo(request.getLgort()) .setNum(it.getNum()) @@ -270,7 +271,8 @@ public class OutCostCenterController extends BaseController { VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0) .throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制"); }); - } else { + } + if (qitem.isUseChildren()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes())) .throwMessage("需要提供扫码信息"); qitem.getQrCodes().forEach(qrCode -> { @@ -293,24 +295,27 @@ public class OutCostCenterController extends BaseController { qrCodeMaster.setLastScanBy(UserUtil.getUserId()); qrCodeMaster.setLastScanByname(UserUtil.getUserName()); qrCodeMaster.setLastScanTime(LocalDateTime.now()); - records.add(new OutMaterialScanRecord() - .setSource(2) - .setSourceId(order.getId()) - .setSourceItemId(item.getId()) - .setTicketId(ticket.getId()) - .setTicketItemId(pti.getId()) - .setMaterialNo(materialNo) - .setContent(qrCodeMaster.getBarcodeCode()) - .setBatchNo(qrCodeMaster.getBatchNo()) - .setSerialNo(qrCodeMaster.getSerialNo()) - .setUniqNo(qrCodeMaster.getBarcodeCode()) - .setFactoryNo(qrCodeMaster.getFactoryCode()) - .setWarehouseNo(qrCodeMaster.getStorageLocation()) - .setBinNo(qrCodeMaster.getBinLocation()) - .setNum(qrCodeMaster.getQuantity()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(Instant.now()) - ); + if (!qitem.isQiTao()) { + records.add(new OutMaterialScanRecord() + .setSource(2) + .setSourceId(order.getId()) + .setSourceItemId(item.getId()) + .setTicketId(ticket.getId()) + .setTicketItemId(pti.getId()) + .setMaterialNo(materialNo) + .setQiTao(false) + .setContent(qrCodeMaster.getBarcodeCode()) + .setBatchNo(qrCodeMaster.getBatchNo()) + .setSerialNo(qrCodeMaster.getSerialNo()) + .setUniqNo(qrCodeMaster.getBarcodeCode()) + .setFactoryNo(qrCodeMaster.getFactoryCode()) + .setWarehouseNo(qrCodeMaster.getStorageLocation()) + .setBinNo(qrCodeMaster.getBinLocation()) + .setNum(qrCodeMaster.getQuantity()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(Instant.now()) + ); + } }); } }); @@ -339,7 +344,7 @@ public class OutCostCenterController extends BaseController { } }); qrCodeMasterService.updateBarCode(qrCodeMasters); - submitSap(order, ticket, records, datas,qrCodeMasters); + submitSap(order, ticket, records, datas, qrCodeMasters); } else { inventoryForOutRepository.saveAll(request.getRecommendBatch() .stream() @@ -357,7 +362,7 @@ public class OutCostCenterController extends BaseController { } private void submitSap(WmsOutCostcenter order, WmsOutCostcenterTicket ticket, List records - , List datas,List qrCodeMasters) { + , List datas, List qrCodeMasters) { inventoryService.out(records.stream() .collect(Collectors.groupingBy(OutMaterialScanRecord::getKey)) .values() @@ -368,7 +373,7 @@ public class OutCostCenterController extends BaseController { .setSerialNo(list.get(0).getSerialNo()) .setFactoryNo(list.get(0).getFactoryNo()) .setWarehouseNo(list.get(0).getWarehouseNo()) - .setBinLocation(qrCodeMasters.stream() + .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() .map(WmsQrCodeMaster::getBinLocation) @@ -455,7 +460,7 @@ public class OutCostCenterController extends BaseController { .list(); qrCodeMasters.stream() .forEach(p -> { - OutMaterialScanRecord record=records.stream() + OutMaterialScanRecord record = records.stream() .filter(r -> r.getUniqNo().equals(p.getBarcodeCode())) .findFirst() .get(); @@ -466,7 +471,7 @@ public class OutCostCenterController extends BaseController { p.setLastScanBy(UserUtil.getUserId()); p.setLastScanByname(UserUtil.getUserName()); p.setLastScanTime(LocalDateTime.now()); - if (p.getPackagingType() == 1){ + if (p.getPackagingType() == 1) { List children = qrCodeMasterService.lambdaQuery() .eq(WmsQrCodeMaster::getParentBarcodeId, p.getId()) .list(); @@ -485,7 +490,7 @@ public class OutCostCenterController extends BaseController { } }); qrCodeMasterService.updateBarCode(qrCodeMasters); - submitSap(order, ticket, records, outCostcenterItemService.getList(order.getId()),qrCodeMasters); + submitSap(order, ticket, records, outCostcenterItemService.getList(order.getId()), qrCodeMasters); } else { List items = outCostcenterTicketItemService.getList(qo.getId()); items.forEach(it -> { diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java index 4b2063ef..1e5a75c8 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java @@ -357,7 +357,7 @@ public class OutProduceController extends BaseController { ticketItems.add(ti); return ti; }); - if (qitem.isQiTao() && !qitem.isUseChildren()) { + if (qitem.isQiTao()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs())) .throwMessage("齐套物料需要提供批次信息"); qitem.getBatchs() @@ -373,6 +373,7 @@ public class OutProduceController extends BaseController { .setBatchNo(it.getBatchNo()) .setSerialNo(it.getSerialNo()) .setUniqNo("") + .setQiTao(true) .setFactoryNo(order.getDwerk()) .setWarehouseNo(ticket.getLgort()) .setUnit(item.getMeins()) @@ -389,7 +390,8 @@ public class OutProduceController extends BaseController { }); VUtil.trueThrowBusinessError(item.getNum().compareTo(item.getSqsl()) > 0) .throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制"); - } else { + } + if (qitem.isUseChildren()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes())) .throwMessage("需要提供扫码信息"); qitem.getQrCodes().forEach(qrCode -> { @@ -415,26 +417,29 @@ public class OutProduceController extends BaseController { qrCodeMaster.setLastScanBy(UserUtil.getUserId()); qrCodeMaster.setLastScanByname(UserUtil.getUserName()); qrCodeMaster.setLastScanTime(LocalDateTime.now()); - records.add(new OutMaterialScanRecord() - .setSource(1) - .setSourceId(order.getId()) - .setSourceItemId(item.getId()) - .setTicketId(ticket.getId()) - .setTicketItemId(pti.getId()) - .setMaterialNo(materialNo) - .setContent(qrCodeMaster.getBarcodeCode()) - .setBatchNo(qrCodeMaster.getBatchNo()) - .setSerialNo(qrCodeMaster.getSerialNo()) - .setUniqNo(qrCodeMaster.getBarcodeCode()) - .setFactoryNo(qrCodeMaster.getFactoryCode()) - .setWarehouseNo(qrCodeMaster.getStorageLocation()) - .setBinNo(qrCodeMaster.getBinLocation()) - .setUnit(item.getMeins()) - .setRspos(item.getRspos()) - .setNum(qrCodeMaster.getQuantity()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(Instant.now()) - ); + if (!qitem.isQiTao()) { + records.add(new OutMaterialScanRecord() + .setSource(1) + .setSourceId(order.getId()) + .setSourceItemId(item.getId()) + .setTicketId(ticket.getId()) + .setTicketItemId(pti.getId()) + .setMaterialNo(materialNo) + .setQiTao(false) + .setContent(qrCodeMaster.getBarcodeCode()) + .setBatchNo(qrCodeMaster.getBatchNo()) + .setSerialNo(qrCodeMaster.getSerialNo()) + .setUniqNo(qrCodeMaster.getBarcodeCode()) + .setFactoryNo(qrCodeMaster.getFactoryCode()) + .setWarehouseNo(qrCodeMaster.getStorageLocation()) + .setBinNo(qrCodeMaster.getBinLocation()) + .setUnit(item.getMeins()) + .setRspos(item.getRspos()) + .setNum(qrCodeMaster.getQuantity()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(Instant.now()) + ); + } }); } }); @@ -463,7 +468,7 @@ public class OutProduceController extends BaseController { } }); qrCodeMasterService.updateBarCode(qrCodeMasters); - submitSap(order, ticket, records, datas,qrCodeMasters); + submitSap(order, ticket, records, datas, qrCodeMasters); } else { inventoryForOutRepository.saveAll(request.getRecommendBatch() .stream() @@ -481,7 +486,7 @@ public class OutProduceController extends BaseController { } private void submitSap(WmsOutProduce order, WmsOutProduceTicket ticket, List records - , List datas,List qrCodeMasters) { + , List datas, List qrCodeMasters) { inventoryService.out(records.stream() .collect(Collectors.groupingBy(OutMaterialScanRecord::getKey)) .values() @@ -492,7 +497,7 @@ public class OutProduceController extends BaseController { .setSerialNo(list.get(0).getSerialNo()) .setFactoryNo(list.get(0).getFactoryNo()) .setWarehouseNo(list.get(0).getWarehouseNo()) - .setBinLocation(qrCodeMasters.stream() + .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() .map(WmsQrCodeMaster::getBinLocation) @@ -606,7 +611,7 @@ public class OutProduceController extends BaseController { } }); qrCodeMasterService.updateBarCode(qrCodeMasters); - submitSap(order, ticket, records, outProduceItemService.getList(order.getId()),qrCodeMasters); + submitSap(order, ticket, records, outProduceItemService.getList(order.getId()), qrCodeMasters); } else { List items = outProduceTicketItemService.getList(qo.getId()); items.forEach(it -> { diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/PurchaseReturnController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/PurchaseReturnController.java index cf170bc2..b5934003 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/PurchaseReturnController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/PurchaseReturnController.java @@ -2,12 +2,17 @@ package com.nflg.wms.admin.controller; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import com.nflg.wms.admin.pojo.dto.PdfPageDTO; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; import com.nflg.wms.admin.service.SapService; +import com.nflg.wms.admin.util.PdfGeneratorUtil; +import com.nflg.wms.admin.util.QRCodeUtil; +import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.UserType; import com.nflg.wms.common.pojo.ApiResult; @@ -22,20 +27,16 @@ import com.nflg.wms.repository.service.*; import com.nflg.wms.starter.BaseController; import com.nflg.wms.starter.annotation.ApiMark; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -66,6 +67,9 @@ public class PurchaseReturnController extends BaseController { @Resource private IUserService userService; + @Resource + private IUserSupplierService userSupplierService; + /** * 获取送货单的入库信息 @@ -452,4 +456,28 @@ public class PurchaseReturnController extends BaseController { return ApiResult.success(qrCodeVO); } + /** + * 导出采购退货申请单 + */ + @GetMapping("exportTicket") + public void exportTicket(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception { + WmsReturnRequest order = returnRequestService.getById(id); + VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("申请单不存在"); + VUtil.trueThrowBusinessError(order.getApprovalStatus()!=1).throwMessage("申请单未审核通过"); + UserSupplier supplier=userSupplierService.getByCode(order.getSupplierCode()); + List list = returnRequestItemService.lambdaQuery() + .eq(WmsReturnRequestItem::getApplicationId, id) + .list(); + Map base = new HashMap<>(); + base.put("date", DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd")); + base.put("qrcode", QRCodeUtil.generateQRCodeBase64(order.getApplicationNo(), 100, 100)); + base.put("supplier", supplier.getSupplierName()); + Map variables = new HashMap<>(); + variables.put("info", order); + variables.put("base", base); + variables.put("pages", PdfPageDTO.create(list, 11, new WmsReturnRequestItem())); + String html = ThymeleafUtil.generator("/template/", "采购退货申请单", ".html", variables); + PdfGeneratorUtil.generatePdf("采购入(退)库单" + order.getApplicationNo(), html, response); + } + } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java index c2d6f102..031b3862 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java @@ -276,7 +276,7 @@ public class TransferCompanyController extends BaseController { ticketItems.add(ti); return ti; }); - if (qitem.isQiTao() && !qitem.isUseChildren()) { + if (qitem.isQiTao()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs())) .throwMessage("齐套物料需要提供批次信息"); qitem.getBatchs() @@ -292,7 +292,9 @@ public class TransferCompanyController extends BaseController { .setContent("") .setBatchNo(it.getBatchNo()) .setSerialNo(it.getSerialNo()) + .setBinNo(it.getBinNo()) .setUniqNo("") + .setQiTao(true) .setFactoryNo(order.getReswk()) .setWarehouseNo(request.getLgort()) .setNum(it.getNum()) @@ -307,7 +309,8 @@ public class TransferCompanyController extends BaseController { VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0) .throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制"); }); - } else { + } + if (qitem.isUseChildren()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes())) .throwMessage("需要提供扫码信息"); qitem.getQrCodes().forEach(qrCode -> { @@ -329,28 +332,31 @@ public class TransferCompanyController extends BaseController { qrCodeMaster.setLastScanBy(UserUtil.getUserId()); qrCodeMaster.setLastScanByname(UserUtil.getUserName()); qrCodeMaster.setLastScanTime(LocalDateTime.now()); - records.add(new OutMaterialScanRecord() - .setSource(5) - .setSourceId(order.getId()) - .setSourceItemId(item.getId()) - .setTicketId(ticket.getId()) - .setTicketItemId(pti.getId()) - .setMaterialNo(materialNo) - .setUnit(item.getMeins()) - .setContent(qrCodeMaster.getBarcodeCode()) - .setBatchNo(qrCodeMaster.getBatchNo()) - .setSerialNo(qrCodeMaster.getSerialNo()) - .setUniqNo(qrCodeMaster.getBarcodeCode()) - .setFactoryNo(qrCodeMaster.getFactoryCode()) - .setWarehouseNo(qrCodeMaster.getStorageLocation()) - .setBinNo(qrCodeMaster.getBinLocation()) - .setNum(qrCodeMaster.getQuantity()) - .setEbelp(item.getEbelp()) - .setEbeln(order.getEbeln()) - .setExt(item.getEbelp()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(Instant.now()) - ); + if (!qitem.isQiTao()) { + records.add(new OutMaterialScanRecord() + .setSource(5) + .setSourceId(order.getId()) + .setSourceItemId(item.getId()) + .setTicketId(ticket.getId()) + .setTicketItemId(pti.getId()) + .setMaterialNo(materialNo) + .setUnit(item.getMeins()) + .setQiTao(false) + .setContent(qrCodeMaster.getBarcodeCode()) + .setBatchNo(qrCodeMaster.getBatchNo()) + .setSerialNo(qrCodeMaster.getSerialNo()) + .setUniqNo(qrCodeMaster.getBarcodeCode()) + .setFactoryNo(qrCodeMaster.getFactoryCode()) + .setWarehouseNo(qrCodeMaster.getStorageLocation()) + .setBinNo(qrCodeMaster.getBinLocation()) + .setNum(qrCodeMaster.getQuantity()) + .setEbelp(item.getEbelp()) + .setEbeln(order.getEbeln()) + .setExt(item.getEbelp()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(Instant.now()) + ); + } }); } }); @@ -384,7 +390,7 @@ public class TransferCompanyController extends BaseController { } }); qrCodeMasterService.updateBarCode(qrCodeMasters); - submitSap(order, ticket, records, datas, ticketItems,qrCodeMasters); + submitSap(order, ticket, records, datas, ticketItems, qrCodeMasters); } else { inventoryForOutRepository.saveAll(request.getRecommendBatch() .stream() @@ -402,7 +408,7 @@ public class TransferCompanyController extends BaseController { } private void submitSap(WmsTransferCompany order, WmsTransferCompanyTicket ticket, List records - , List datas, List ticketItems,List qrCodeMasters) { + , List datas, List ticketItems, List qrCodeMasters) { inventoryService.out(records.stream() .collect(Collectors.groupingBy(OutMaterialScanRecord::getKey)) .values() @@ -413,7 +419,7 @@ public class TransferCompanyController extends BaseController { .setSerialNo(list.get(0).getSerialNo()) .setFactoryNo(list.get(0).getFactoryNo()) .setWarehouseNo(list.get(0).getWarehouseNo()) - .setBinLocation(qrCodeMasters.stream() + .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() .map(WmsQrCodeMaster::getBinLocation) @@ -484,14 +490,14 @@ public class TransferCompanyController extends BaseController { ) { if (qo.isPass()) { WmsTransferCompany order = transferCompanyService.getById(ticket.getOrderId()); - List records =outMaterialScanRecordRespository.findByTicketId(ticket.getId()); + List records = outMaterialScanRecordRespository.findByTicketId(ticket.getId()); List qrCodeMasters = qrCodeMasterService.lambdaQuery() .eq(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState()) .in(WmsQrCodeMaster::getBarcodeCode, records.stream().map(OutMaterialScanRecord::getUniqNo).toList()) .list(); qrCodeMasters.stream() .forEach(p -> { - OutMaterialScanRecord record=records.stream() + OutMaterialScanRecord record = records.stream() .filter(r -> r.getUniqNo().equals(p.getBarcodeCode())) .findFirst() .get(); @@ -502,7 +508,7 @@ public class TransferCompanyController extends BaseController { p.setLastScanBy(UserUtil.getUserId()); p.setLastScanByname(UserUtil.getUserName()); p.setLastScanTime(LocalDateTime.now()); - if (p.getPackagingType() == 1){ + if (p.getPackagingType() == 1) { List children = qrCodeMasterService.lambdaQuery() .eq(WmsQrCodeMaster::getParentBarcodeId, p.getId()) .list(); @@ -525,7 +531,7 @@ public class TransferCompanyController extends BaseController { , records , transferCompanyItemService.getList(order.getId()) , transferCompanyTicketItemService.lambdaQuery().eq(WmsTransferCompanyTicketItem::getTicketId, ticket.getId()).list() - ,qrCodeMasters + , qrCodeMasters ); } else { List items = transferCompanyTicketItemService.getList(qo.getId()); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java index 58472145..06f97837 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java @@ -291,7 +291,7 @@ public class TransferFactoryController extends BaseController { ticketItems.add(ti); return ti; }); - if (qitem.isQiTao() && !qitem.isUseChildren()) { + if (qitem.isQiTao()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs())) .throwMessage("齐套物料需要提供批次信息"); qitem.getBatchs() @@ -309,6 +309,7 @@ public class TransferFactoryController extends BaseController { .setBatchNo(it.getBatchNo()) .setSerialNo(it.getSerialNo()) .setUniqNo("") + .setQiTao(true) .setFactoryNo(order.getWerks()) .setWarehouseNo(request.getLgort()) .setNum(it.getNum()) @@ -320,7 +321,8 @@ public class TransferFactoryController extends BaseController { VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0) .throwMessage("物料" + materialNo + "的领取数量超出申请限制"); }); - } else { + } + if (qitem.isUseChildren()) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes())) .throwMessage("需要提供扫码信息"); qitem.getQrCodes().forEach(qrCode -> { @@ -341,26 +343,29 @@ public class TransferFactoryController extends BaseController { qrCodeMaster.setLastScanBy(UserUtil.getUserId()); qrCodeMaster.setLastScanByname(UserUtil.getUserName()); qrCodeMaster.setLastScanTime(LocalDateTime.now()); - records.add(new OutMaterialScanRecord() - .setSource(4) - .setSourceId(order.getId()) - .setSourceItemId(item.getId()) - .setTicketId(ticket.getId()) - .setTicketItemId(pti.getId()) - .setMaterialNo(materialNo) - .setUnit(item.getMeins()) - .setRspos(item.getRspos()) - .setContent(qrCodeMaster.getBarcodeCode()) - .setBatchNo(qrCodeMaster.getBatchNo()) - .setSerialNo(qrCodeMaster.getSerialNo()) - .setUniqNo(qrCodeMaster.getBarcodeCode()) - .setFactoryNo(qrCodeMaster.getFactoryCode()) - .setWarehouseNo(qrCodeMaster.getStorageLocation()) - .setBinNo(qrCodeMaster.getBinLocation()) - .setNum(qrCodeMaster.getQuantity()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(Instant.now()) - ); + if (!qitem.isQiTao()) { + records.add(new OutMaterialScanRecord() + .setSource(4) + .setSourceId(order.getId()) + .setSourceItemId(item.getId()) + .setTicketId(ticket.getId()) + .setTicketItemId(pti.getId()) + .setMaterialNo(materialNo) + .setUnit(item.getMeins()) + .setQiTao(false) + .setRspos(item.getRspos()) + .setContent(qrCodeMaster.getBarcodeCode()) + .setBatchNo(qrCodeMaster.getBatchNo()) + .setSerialNo(qrCodeMaster.getSerialNo()) + .setUniqNo(qrCodeMaster.getBarcodeCode()) + .setFactoryNo(qrCodeMaster.getFactoryCode()) + .setWarehouseNo(qrCodeMaster.getStorageLocation()) + .setBinNo(qrCodeMaster.getBinLocation()) + .setNum(qrCodeMaster.getQuantity()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(Instant.now()) + ); + } }); } }); @@ -404,7 +409,7 @@ public class TransferFactoryController extends BaseController { .setSerialNo(list.get(0).getSerialNo()) .setFactoryNo(list.get(0).getFactoryNo()) .setWarehouseNo(list.get(0).getWarehouseNo()) - .setBinLocation(qrCodeMasters.stream() + .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() .map(WmsQrCodeMaster::getBinLocation) @@ -496,7 +501,7 @@ public class TransferFactoryController extends BaseController { .setSerialNo(list.get(0).getSerialNo()) .setFactoryNo(list.get(0).getFactoryNo()) .setWarehouseNo(list.get(0).getWarehouseNo()) - .setBinLocation(qrCodeMasters.stream() + .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream() .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .findFirst() .map(WmsQrCodeMaster::getBinLocation) diff --git a/nflg-wms-admin/src/main/resources/template/外协领料出库单.html b/nflg-wms-admin/src/main/resources/template/外协领料出库单.html index 3d6971c4..c536130a 100644 --- a/nflg-wms-admin/src/main/resources/template/外协领料出库单.html +++ b/nflg-wms-admin/src/main/resources/template/外协领料出库单.html @@ -107,7 +107,7 @@ } .package-logo { - width: 150px; + width: 250px; margin: 0 auto; margin-bottom: 20px; } diff --git a/nflg-wms-admin/src/main/resources/template/采购退货申请单.html b/nflg-wms-admin/src/main/resources/template/采购退货申请单.html new file mode 100644 index 00000000..1e4550e8 --- /dev/null +++ b/nflg-wms-admin/src/main/resources/template/采购退货申请单.html @@ -0,0 +1,202 @@ + + + + + + 采购退货申请单 + + + +
+
+ +
+
+
福建南方路面机械股份有限公司
+
采购入(退)库单
+
+
+
+ + + + + + + + + + +
采购订单号:过账日期:页码:1/1
供 应 商:物料凭证号:
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
订单
项次
移动
类型
物料号物料描述单位数量工厂仓库仓位
1物料号非金属联件和紧固件等 M6 DIN 982 不锈钢304PC10.00
+
+ + +
+ + \ No newline at end of file diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/document/OutMaterialScanRecord.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/document/OutMaterialScanRecord.java index ddfae7b2..65b880b5 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/document/OutMaterialScanRecord.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/document/OutMaterialScanRecord.java @@ -123,6 +123,11 @@ public class OutMaterialScanRecord { */ private String ext; + /** + * 是否是齐套物料 + */ + private boolean isQiTao = false; + /** * 创建人 */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ComponentOutboundItemInputQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ComponentOutboundItemInputQO.java index a0e021d9..079af3ba 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ComponentOutboundItemInputQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ComponentOutboundItemInputQO.java @@ -35,6 +35,11 @@ public class ComponentOutboundItemInputQO { @JsonProperty("isQiTao") private boolean isQiTao; + /** + * 是否扫码子项 + */ + private boolean useChildren = true; + /** * 批次列表 */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryInItemQRCodeQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryInItemQRCodeQO.java index 6c9fe528..d79b7760 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryInItemQRCodeQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryInItemQRCodeQO.java @@ -3,6 +3,8 @@ package com.nflg.wms.common.pojo.qo; import jakarta.validation.constraints.NotBlank; import lombok.Data; +import java.util.Objects; + @Data public class InventoryInItemQRCodeQO { @@ -16,4 +18,8 @@ public class InventoryInItemQRCodeQO { * 储位编号 */ private String binNo; + + public String getBinNo() { + return Objects.isNull(binNo) ? "" : binNo; + } }