From 8c65f898ed6e5b0c7a94c792c4562f6ec831dccd Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 07 十一月 2026 08:50:53 +0800
Subject: [PATCH] feat: 完善质检、生产、销售、财务与人事模块并接入审批流程

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorDetailServiceImpl.java |   31 +++++++++++++++++++++++++------
 1 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorDetailServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorDetailServiceImpl.java
index efc903c..14d4622 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorDetailServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorDetailServiceImpl.java
@@ -5,7 +5,9 @@
 import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.detail.MesWmReturnVendorDetailSaveReqVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorDetailDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorLineDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnvendor.MesWmReturnVendorDetailMapper;
+import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnVendorStatusEnum;
 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;
@@ -33,6 +35,9 @@
     @Lazy
     private MesWmReturnVendorLineService returnVendorLineService;
     @Resource
+    @Lazy
+    private MesWmReturnVendorService returnVendorService;
+    @Resource
     private MesMdmItemService mdmItemService;
     @Resource
     private MesWmMaterialStockService materialStockService;
@@ -52,8 +57,11 @@
 
     @Override
     public void updateReturnVendorDetail(MesWmReturnVendorDetailSaveReqVO updateReqVO) {
-        // 鏍¢獙瀛樺湪
-        validateReturnVendorDetailExists(updateReqVO.getId());
+        MesWmReturnVendorDetailDO oldDetail = validateReturnVendorDetailExists(updateReqVO.getId());
+        if (ObjUtil.notEqual(oldDetail.getReturnId(), updateReqVO.getReturnId())
+                || ObjUtil.notEqual(oldDetail.getLineId(), updateReqVO.getLineId())) {
+            throw exception(WM_RETURN_VENDOR_DETAIL_PARENT_IMMUTABLE);
+        }
         // 鏍¢獙鏁版嵁
         validateDetailSaveData(updateReqVO);
 
@@ -71,6 +79,7 @@
         if (ObjUtil.notEqual(line.getReturnId(), reqVO.getReturnId())) {
             throw exception(WM_RETURN_VENDOR_DETAIL_LINE_NOT_MATCH);
         }
+        validateDetailEditable(reqVO.getReturnId());
         // 鏍¢獙鐗╂枡瀛樺湪
         mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
         // 鏍¢獙鐗╂枡涓庤鐗╂枡涓�鑷�
@@ -84,8 +93,8 @@
 
     @Override
     public void deleteReturnVendorDetail(Long id) {
-        // 鏍¢獙瀛樺湪
-        validateReturnVendorDetailExists(id);
+        MesWmReturnVendorDetailDO detail = validateReturnVendorDetailExists(id);
+        validateDetailEditable(detail.getReturnId());
         // 鍒犻櫎
         returnVendorDetailMapper.deleteById(id);
     }
@@ -115,10 +124,20 @@
         returnVendorDetailMapper.deleteByLineId(lineId);
     }
 
-    private void validateReturnVendorDetailExists(Long id) {
-        if (returnVendorDetailMapper.selectById(id) == null) {
+    private MesWmReturnVendorDetailDO validateReturnVendorDetailExists(Long id) {
+        MesWmReturnVendorDetailDO detail = returnVendorDetailMapper.selectById(id);
+        if (detail == null) {
             throw exception(WM_RETURN_VENDOR_DETAIL_NOT_EXISTS);
         }
+        return detail;
+    }
+
+    private void validateDetailEditable(Long returnId) {
+        MesWmReturnVendorDO returnVendor = returnVendorService.validateReturnVendorExists(returnId);
+        if (!ObjUtil.equal(returnVendor.getStatus(), MesWmReturnVendorStatusEnum.PREPARE.getStatus())
+                && !ObjUtil.equal(returnVendor.getStatus(), MesWmReturnVendorStatusEnum.APPROVING.getStatus())) {
+            throw exception(WM_RETURN_VENDOR_DETAIL_STATUS_INVALID, returnVendor.getCode());
+        }
     }
 
     /**

--
Gitblit v1.9.3