From bc9d77f6061a5c7f7deceaabc7c5ed6c17ad8c2f Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 12 十月 2026 14:19:37 +0800
Subject: [PATCH] fix(wm/productissue): 修复物料匹配校验逻辑并迁移至 MDM 物料服务
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueDetailServiceImpl.java | 30 ++++++++++++++++++++++--------
1 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueDetailServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueDetailServiceImpl.java
index 86e1de8..f9691d5 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueDetailServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueDetailServiceImpl.java
@@ -4,23 +4,23 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.detail.MesWmProductIssueDetailSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productissue.MesWmProductIssueDetailMapper;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmProductIssueStatusEnum;
-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.materialstock.MesWmMaterialStockService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
import jakarta.annotation.Resource;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import java.util.List;
+
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
@@ -46,7 +46,7 @@
@Resource
private MesWmMaterialStockService materialStockService;
@Resource
- private MesMdItemService mesMdItemService;
+ private MesMdmItemService mdmItemService;
@Override
public Long createProductIssueDetail(MesWmProductIssueDetailSaveReqVO createReqVO) {
@@ -128,7 +128,6 @@
private void validateProductIssueDetailSaveData(MesWmProductIssueDetailSaveReqVO reqVO) {
// 鏍¢獙鐖舵暟鎹瓨鍦�
MesWmProductIssueLineDO line = issueLineService.validateProductIssueLineExists(reqVO.getLineId());
- MesMdItemDO item = mesMdItemService.getItem(line.getItemId());
if (ObjUtil.notEqual(line.getIssueId(), reqVO.getIssueId())) {
throw exception(WM_PRODUCT_ISSUE_DETAIL_LINE_NOT_MATCH);
}
@@ -137,8 +136,8 @@
if (ObjUtil.notEqual(MesWmProductIssueStatusEnum.APPROVING.getStatus(), issue.getStatus())) {
throw exception(WM_PRODUCT_ISSUE_STATUS_INVALID);
}
- // 鏍¢獙鐗╂枡鍖归厤锛堟槑缁� itemId 蹇呴』涓庤 itemId 涓�鑷达級
- validateDetailItemMatch(reqVO.getItemId(), item.getMdmItemId());
+ // 鏍¢獙鐗╂枡鍖归厤锛堟槑缁� itemId 蹇呴』涓庤 itemId 涓�鑷达紝涓よ�呴兘鏄� MDM 鐗╂枡涓绘暟鎹� mdm_item.id锛�
+ validateDetailItemMatch(reqVO.getItemId(), line.getItemId());
// 鏍¢獙浠撳簱銆佸簱鍖恒�佸簱浣嶇殑鍏宠仈鍏崇郴
warehouseAreaService.validateWarehouseAreaExists(
reqVO.getWarehouseId(), reqVO.getLocationId(), reqVO.getAreaId());
@@ -153,8 +152,23 @@
*/
private void validateDetailItemMatch(Long detailItemId, Long lineItemId) {
if (ObjUtil.notEqual(detailItemId, lineItemId)) {
- throw exception(WM_PRODUCT_ISSUE_DETAIL_ITEM_MISMATCH);
+ // 鍚嶇О瑙f瀽鏀惧湪寮傚父鍒嗘敮锛岄伩鍏嶆甯镐繚瀛樻椂澶氭煡琛�
+ throw new ServiceException(WM_PRODUCT_ISSUE_DETAIL_ITEM_MISMATCH.getCode(),
+ "鎷h揣鏄庣粏鐨勭墿鏂欎笌棰嗘枡鍑哄簱鍗曡鐨勭墿鏂欎笉涓�鑷达細鏄庣粏鐗╂枡[" + describeItem(detailItemId)
+ + "]锛屽崟鎹鐗╂枡[" + describeItem(lineItemId) + "]銆�"
+ + "璇烽噸鏂伴�夋嫨璇ヨ鐨勭墿鏂欏悗閲嶈瘯锛屾垨鍒犻櫎鏈潯鏄庣粏鍚庨噸鏂版坊鍔犮��");
}
}
+ /**
+ * 鎻忚堪鐗╂枡锛岀敤浜庡紓甯告彁绀猴細浼樺厛缁欏嚭銆岀紪鐮� 鍚嶇О銆嶏紝鏌ヤ笉鍒版椂鍥為��涓虹墿鏂欑紪鍙�
+ */
+ private String describeItem(Long itemId) {
+ if (itemId == null) {
+ return "鏈�夋嫨";
+ }
+ MesMdmItemDO item = mdmItemService.getItem(itemId);
+ return item != null ? item.getCode() + " " + item.getName() : "鐗╂枡缂栧彿 ID=" + itemId;
+ }
+
}
--
Gitblit v1.9.3