From f02d0df2f1dfc7a8b775cf50d45375e57628a5ef Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 10 十一月 2026 11:26:22 +0800
Subject: [PATCH] feat(ncr): 完善NCR处置联动逻辑与关闭校验
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java | 45 ++++++++++++++++++++++++---------------------
1 files changed, 24 insertions(+), 21 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java
index b085553..c5ac05f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java
@@ -48,6 +48,9 @@
public class MesWmArrivalNoticeServiceImpl implements MesWmArrivalNoticeService {
@Resource
+ private cn.iocoder.yudao.module.mes.service.qc.ncr.MesQcArrivalDispositionService arrivalDispositionService;
+
+ @Resource
private MesWmArrivalNoticeMapper arrivalNoticeMapper;
@Resource
@@ -78,6 +81,7 @@
// 鎻掑叆
MesWmArrivalNoticeDO notice = BeanUtils.toBean(createReqVO, MesWmArrivalNoticeDO.class);
+ fillContractNoFromPurchaseOrder(notice);
notice.setStatus(MesWmArrivalNoticeStatusEnum.PREPARE.getStatus());
arrivalNoticeMapper.insert(notice);
return notice.getId();
@@ -92,7 +96,21 @@
// 鏇存柊
MesWmArrivalNoticeDO updateObj = BeanUtils.toBean(updateReqVO, MesWmArrivalNoticeDO.class);
+ fillContractNoFromPurchaseOrder(updateObj);
arrivalNoticeMapper.updateById(updateObj);
+ }
+
+ /**
+ * 閲囪喘鍚堝悓鍙锋湭鏄惧紡浼犲叆鏃讹紝浠庡叧鑱旂殑閲囪喘璁㈠崟甯﹀叆锛堟崲璐у埌璐у繀椤昏兘杩芥函鍒板師閲囪喘鍚堝悓锛�
+ */
+ private void fillContractNoFromPurchaseOrder(MesWmArrivalNoticeDO notice) {
+ if (notice.getPurchaseOrderId() == null || cn.hutool.core.util.StrUtil.isNotBlank(notice.getContractNo())) {
+ return;
+ }
+ ErpPurchaseOrderRespDTO purchaseOrder = purchaseOrderApi.getPurchaseOrder(notice.getPurchaseOrderId()).getCheckedData();
+ if (purchaseOrder != null) {
+ notice.setContractNo(purchaseOrder.getContractNo());
+ }
}
private void validateArrivalNoticeSaveData(MesWmArrivalNoticeSaveReqVO reqVO) {
@@ -186,27 +204,8 @@
// 2. 鏇存柊鍒拌揣閫氱煡鍗曡锛氱粦瀹� iqcId + 璐ㄦ缁撴灉 + 鍚堟牸鏁伴噺
arrivalNoticeLineService.updateArrivalNoticeLineWhenIqcFinish(lineId, iqcId, checkResult, qualifiedQuantity);
- // 3.1 鍒ゆ柇鏄惁鎵�鏈夐渶妫�琛岄兘宸插畬鎴愯川妫�
- List<MesWmArrivalNoticeLineDO> lines = arrivalNoticeLineService.getArrivalNoticeLineListByNoticeId(id);
- boolean hasUnchecked = CollectionUtils.anyMatch(lines,
- line -> Boolean.TRUE.equals(line.getIqcCheckFlag()) && line.getIqcCheckResult() == null);
- if (hasUnchecked) {
- log.info("[updateArrivalNoticeWhenIqcFinish][鍒拌揣閫氱煡鍗�({}) 杩樻湁鏈畬鎴愭楠岀殑琛岋紝鏆備笉鏇存柊鐘舵�乚", id);
- return;
- }
-
- // 3.2 鍒ゆ柇鏄惁鎵�鏈夐渶妫�琛岄兘鍙互鍏ュ簱锛堝悎鏍兼垨鐗归噰锛�
- boolean hasNonInbound = CollectionUtils.anyMatch(lines,
- line -> Boolean.TRUE.equals(line.getIqcCheckFlag())
- && !MesQcCheckResultEnum.canInbound(line.getIqcCheckResult()));
- if (hasNonInbound) {
- log.info("[updateArrivalNoticeWhenIqcFinish][鍒拌揣閫氱煡鍗�({}) 瀛樺湪涓嶅彲鍏ュ簱鐨勮锛堥��璐�/鎶ュ簾锛夛紝鐘舵�佷繚鎸佸緟璐ㄦ]", id);
- return;
- }
-
- // 3.3 鎵�鏈夎妫�楠屽畬鎴愪笖鍙叆搴擄紝鏇存柊涓昏〃鐘舵�� PENDING_QC 鈫� PENDING_RECEIPT
- arrivalNoticeMapper.updateById(new MesWmArrivalNoticeDO()
- .setId(id).setStatus(MesWmArrivalNoticeStatusEnum.PENDING_RECEIPT.getStatus()));
+ // 鍚屾椂璁ゅ彲浠撳簱宸茬‘璁ょ殑鏉ユ枡閫�璐э紱淇濈暀鍘熷涓嶅悎鏍肩粨璁恒��
+ arrivalDispositionService.refresh(id);
}
@Override
@@ -336,6 +335,7 @@
notice.setName(purchaseOrder.getNo() + "鍒拌揣閫氱煡");
notice.setPurchaseOrderId(purchaseOrderId);
notice.setPurchaseOrderCode(purchaseOrder.getNo());
+ notice.setContractNo(purchaseOrder.getContractNo());
notice.setVendorId(purchaseOrder.getSupplierId());
notice.setArrivalDate(java.time.LocalDateTime.now()); // 鍒拌揣鏃堕棿涓哄綋鍓嶆椂闂�
notice.setStatus(MesWmArrivalNoticeStatusEnum.PENDING_RECEIPT.getStatus());
@@ -414,6 +414,9 @@
notice.setName(returnVendor.getCode() + "鎹㈣揣鍒拌揣");
notice.setPurchaseOrderId(returnVendor.getPurchaseOrderId());
notice.setPurchaseOrderCode(returnVendor.getPurchaseOrderCode());
+ // 鎹㈣揣閲嶆柊鍏宠仈鍘熼噰璐悎鍚屽彿锛氫紭鍏堝彇閫�璐у崟蹇収锛岄��璐у崟鏈揩鐓ф椂鍥炲~閲囪喘璁㈠崟鍚堝悓鍙�
+ notice.setContractNo(returnVendor.getContractNo());
+ fillContractNoFromPurchaseOrder(notice);
notice.setVendorId(returnVendor.getVendorId());
notice.setArrivalDate(java.time.LocalDateTime.now());
notice.setStatus(MesWmArrivalNoticeStatusEnum.PENDING_QC.getStatus());
--
Gitblit v1.9.3