From 530f3fc383ddb3564fbc1c05a6849c56385c2ff0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 15 Jun 2026 10:52:29 +0800 Subject: [PATCH] =?UTF-8?q?fix(qms):=20=E4=BF=AE=E5=A4=8D=E8=B4=A8?= =?UTF-8?q?=E6=A3=80=E4=BB=BB=E5=8A=A1=E9=80=BB=E8=BE=91=E5=92=8C=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=A4=84=E7=90=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 IncomingInspectionTaskControllerService 中合格数量判断条件 - 在 QmsController 中添加收货明细检查数量设置和物料凭证处理 - 修复 SAP 质检入库时的入库数量累加逻辑 - 优化收货单完成状态更新逻辑,避免重复更新 - 添加检测方式字段到质检任务 VO 和映射文件 - 修复转换单据中未扫描物料凭证列表的初始化问题 - 完善不合格品处理的回调逻辑 --- ...comingInspectionTaskControllerService.java | 2 +- ...IncomingInspectionTaskCallbackService.java | 12 ++++++ .../pojo/vo/QmsIncomingInspectionTaskVO.java | 5 +++ .../pojo/vo/TransferCompanyTicketVO.java | 3 +- .../pojo/vo/TransferFactoryTicketVO.java | 3 +- .../QmsIncomingInspectionTaskMapper.xml | 3 +- .../srm/receive/controller/QmsController.java | 37 ++++++++++--------- 7 files changed, 44 insertions(+), 21 deletions(-) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java index f2a6290f..a6597fd3 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java @@ -1180,7 +1180,7 @@ public class IncomingInspectionTaskControllerService { updateWrapper.update(); - if (request.getQualified() && task.getUnqualifiedQty() == 0) { + if (request.getQualified() && task.getQualifiedQty() > 0) { // 异步回调需等当前事务提交后再触发,否则异步线程可能读到未提交的旧状态,导致回调数据错误或漏回调 Long taskId = task.getId(); if (TransactionSynchronizationManager.isSynchronizationActive()) { diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/WmsIncomingInspectionTaskCallbackService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/WmsIncomingInspectionTaskCallbackService.java index 371be047..22374612 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/WmsIncomingInspectionTaskCallbackService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/WmsIncomingInspectionTaskCallbackService.java @@ -90,6 +90,18 @@ public class WmsIncomingInspectionTaskCallbackService { .setQualifiedQty(r.getQualifiedQty())) .toList() ); + }else if (processingResult == 2){ + qo.setUnqualifiedQty(taskVO.getInspectionQty()); + qo.setQualifiedQty(0); + qo.setQrCodes(records.stream() + .map(r -> new MaterialQrCodeDTO() + .setQrCode(r.getMaterialUniqueNo()) + .setInspectionQty(r.getInspectionQty()) + .setUnqualifiedQty(r.getInspectionQty()) + .setQualifiedQty(0) + ) + .toList() + ); } else { qo.setUnqualifiedQty(taskVO.getUnqualifiedQty()); qo.setQrCodes(records.stream() diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIncomingInspectionTaskVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIncomingInspectionTaskVO.java index c692209b..c2fc0947 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIncomingInspectionTaskVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIncomingInspectionTaskVO.java @@ -237,4 +237,9 @@ public class QmsIncomingInspectionTaskVO { * 是否强制使用二维码 */ private Boolean mustUseQrCode; + + /** + * 检测方式,关联字典项id(字典编码:InspectionStandardTestingMethod) + */ + private Long testingMethodDictItemId; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TransferCompanyTicketVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TransferCompanyTicketVO.java index a0de609d..ca7facb1 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TransferCompanyTicketVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TransferCompanyTicketVO.java @@ -5,6 +5,7 @@ import com.nflg.wms.common.pojo.qo.NoScanningQO; import lombok.Data; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -132,5 +133,5 @@ public class TransferCompanyTicketVO { /** * 未扫描的物料凭证 */ - public List noScannings; + public List noScannings=new ArrayList<>(); } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TransferFactoryTicketVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TransferFactoryTicketVO.java index e45a248a..0867b62f 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TransferFactoryTicketVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TransferFactoryTicketVO.java @@ -6,6 +6,7 @@ import com.nflg.wms.common.pojo.qo.NoScanningQO; import lombok.Data; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; @Data @@ -143,5 +144,5 @@ public class TransferFactoryTicketVO { /** * 未扫描的物料凭证 */ - public List noScannings; + public List noScannings=new ArrayList<>(); } diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml index 37443638..e5fefaa1 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml @@ -227,7 +227,8 @@ t.storage_location, t.storage_days, t.callback_result, - t.detection_qty + t.detection_qty, + t.testing_method_dict_item_id FROM qms_incoming_inspection_task t LEFT JOIN qms_qc_material m ON t.material_id = m.id LEFT JOIN qms_inspection_standard s ON t.inspection_standard_id = s.id diff --git a/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/QmsController.java b/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/QmsController.java index a79732e9..c5c2b536 100644 --- a/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/QmsController.java +++ b/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/QmsController.java @@ -84,6 +84,10 @@ public class QmsController extends BaseController { .throwMessage(StrUtil.format("未找到对应收货明细, 质检单号: {}, 物料: {}, 收货单: {}, 行号: {}", qo.getTaskNo(), qo.getMaterialNo(), qo.getDeliveryOrderNo(), qo.getDeliveryOrderLine())); log.info("匹配到收货明细, 质检单号: {}, 收货明细ID: {}", qo.getTaskNo(), receiveItem.getId()); + receiveItem.setCheckQty(BigDecimal.valueOf(qo.getQualifiedQty() + qo.getUnqualifiedQty())); + WmsQcReceive receive = qcReceiveService.lambdaQuery() + .eq(WmsQcReceive::getId, receiveItem.getReceiveId()) + .one(); // 检查物料是否生成过二维码 boolean hasQrCode = qrCodeMasterService.lambdaQuery() @@ -106,7 +110,7 @@ public class QmsController extends BaseController { .setUnit(receiveItem.getUomCode()) // .setReceivedWarehouse("") // .setUnqualifiedReason(data.getUnqualifiedReason()) -// .setReceiveNum(data.getReceiveNum()) + .setReceiveNum(receiveItem.getMaterialDoc()) .setPoNum(qo.getPurchaseOrderNo()) .setUnqualifiedQty(BigDecimal.valueOf(qo.getUnqualifiedQty())) .setQualifiedQty(BigDecimal.valueOf(qo.getQualifiedQty())) @@ -171,9 +175,15 @@ public class QmsController extends BaseController { Pair returnDto = sapService.zwm3a18(zwm3A18DTO); log.info("SAP质检入库返回, 物料凭证: {}, 年份: {}", returnDto.getKey(), returnDto.getValue()); // 更新收货明细的物料凭证和入库数量 - receiveItem.setInQty(BigDecimal.valueOf(qo.getQualifiedQty())); - receiveItem.setMaterialDoc(returnDto.getKey()); - receiveItem.setMaterialDocYear(returnDto.getValue()); + if (Objects.isNull(receiveItem.getInQty())) { + receiveItem.setInQty(BigDecimal.valueOf(qo.getQualifiedQty())); + } else { + receiveItem.setInQty(receiveItem.getInQty().add(BigDecimal.valueOf(qo.getQualifiedQty()))); + } +// receiveItem.setMaterialDoc(returnDto.getKey()); +// receiveItem.setMaterialDocYear(returnDto.getValue()); + inspect.setMaterialDoc105(returnDto.getKey()); + inspect.setMaterialDocYear105(returnDto.getValue()); qcReceiveItemService.updateById(receiveItem); // 检查并更新收货单完成状态 @@ -183,16 +193,10 @@ public class QmsController extends BaseController { boolean allCompleted = allItems.stream() .allMatch(item -> item.getInQty() != null && item.getInQty().compareTo(item.getReceiptNum()) >= 0); if (allCompleted) { - qcReceiveService.lambdaUpdate() - .eq(WmsQcReceive::getId, receiveItem.getReceiveId()) - .set(WmsQcReceive::getIsCompleted, (short) 2) - .update(); + receive.setIsCompleted((short) 2); log.info("收货单全部完成, receiveId: {}", receiveItem.getReceiveId()); } else { - qcReceiveService.lambdaUpdate() - .eq(WmsQcReceive::getId, receiveItem.getReceiveId()) - .set(WmsQcReceive::getIsCompleted, (short) 1) - .update(); + receive.setIsCompleted((short) 1); log.info("收货单部分完成, receiveId: {}", receiveItem.getReceiveId()); } } @@ -201,11 +205,10 @@ public class QmsController extends BaseController { qo.getTaskNo(), qo.getUnqualifiedQty()); } srmQualityInspectionService.save(inspect); - qcReceiveService.lambdaUpdate() - .eq(WmsQcReceive::getOrderNo, inspect.getNoteNum()) - .set(WmsQcReceive::getIsCheck, isCheck) - .update(); - qcReceiveItemService.updateCheckNum(inspect.getInspectionQty(), inspect.getNoteNum(), inspect.getLineNumber(), inspect.getItemCode(), receiveItem.getMaterialDoc()); + if (!Objects.equals(receive.getIsCheck(), (short) 2)) { + receive.setIsCheck(isCheck); + } +// qcReceiveItemService.updateCheckNum(inspect.getInspectionQty(), inspect.getNoteNum(), inspect.getLineNumber(), inspect.getItemCode(), receiveItem.getMaterialDoc()); //更新二维码数量 if (CollectionUtil.isNotEmpty(qo.getQrCodes())) { List qrCodeMasters = qrCodeMasterService.getByCodes(qo.getQrCodes().stream().map(MaterialQrCodeDTO::getQrCode).toList());