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/salesnotice/MesWmSalesNoticeLineServiceImpl.java | 28 +++++++++++++++++++++++++---
1 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java
index a5f08ff..646a3f0 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.line.MesWmSalesNoticeLinePageReqVO;
@@ -10,7 +11,7 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.salesnotice.MesWmSalesNoticeLineMapper;
-import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
@@ -39,7 +40,9 @@
@Resource
private MesWmBatchService batchService;
@Resource
- private MesMdItemService itemService;
+ private MesMdmItemService mdmItemService;
+ @Resource
+ private ErpSaleOrderApi saleOrderApi;
@Override
public Long createSalesNoticeLine(MesWmSalesNoticeLineSaveReqVO createReqVO) {
@@ -59,6 +62,9 @@
MesWmSalesNoticeLineDO line = validateSalesNoticeLineExists(updateReqVO.getId());
// 鏍¢獙鏁版嵁
updateReqVO.setNoticeId(line.getNoticeId());
+ if (updateReqVO.getSaleOrderItemId() == null) {
+ updateReqVO.setSaleOrderItemId(line.getSaleOrderItemId());
+ }
validateLineSaveData(updateReqVO);
// 鏇存柊
@@ -94,6 +100,11 @@
}
@Override
+ public List<MesWmSalesNoticeLineDO> getSalesNoticeLineListByNoticeIds(java.util.Collection<Long> noticeIds) {
+ return salesNoticeLineMapper.selectListByNoticeIds(noticeIds);
+ }
+
+ @Override
public void deleteSalesNoticeLineByNoticeId(Long noticeId) {
salesNoticeLineMapper.deleteByNoticeId(noticeId);
}
@@ -120,9 +131,20 @@
private void validateLineSaveData(MesWmSalesNoticeLineSaveReqVO reqVO) {
// 鏍¢獙鐖跺崟鎹瓨鍦ㄤ笖涓鸿崏绋跨姸鎬�
validateNoticeStatusDraft(reqVO.getNoticeId());
+ MesWmSalesNoticeDO notice = salesNoticeService.getSalesNotice(reqVO.getNoticeId());
+ if (notice.getSaleOrderId() != null && reqVO.getSaleOrderItemId() == null) {
+ throw exception(WM_SALES_NOTICE_LINE_SALE_ITEM_REQUIRED);
+ }
+ if (reqVO.getSaleOrderItemId() != null) {
+ var saleItem = saleOrderApi.getSaleOrderItem(reqVO.getSaleOrderItemId()).getCheckedData();
+ if (saleItem == null || !ObjUtil.equal(notice.getSaleOrderId(), saleItem.getOrderId())
+ || !ObjUtil.equal(reqVO.getItemId(), saleItem.getProductId())) {
+ throw exception(WM_SALES_NOTICE_LINE_SALE_ITEM_MISMATCH);
+ }
+ }
// 鏍¢獙鐗╂枡瀛樺湪
if (reqVO.getItemId() != null) {
- itemService.validateItemExistsAndEnable(reqVO.getItemId());
+ mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
}
}
--
Gitblit v1.9.3