From c06fab29ca7826a6dc9736c1ba8ce1e26a11c829 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期四, 06 三月 2025 15:57:08 +0800
Subject: [PATCH] 新增层级结构工艺规程版本、结构树表、新权限表 修改原有权限验证 删除原有代码

---
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java |  706 +++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 450 insertions(+), 256 deletions(-)

diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java
index 0e8b19d..ee0c849 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java
@@ -1,15 +1,15 @@
 package org.jeecg.modules.dnc.service.impl;
 
-import cn.hutool.core.util.StrUtil;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import liquibase.pro.packaged.S;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.dnc.dto.ComponentExt;
 import org.jeecg.modules.dnc.exception.ExceptionCast;
+import org.jeecg.modules.dnc.mapper.ProcessSpecVersionPermissionMapper;
 import org.jeecg.modules.dnc.mapper.ProductInfoMapper;
 import org.jeecg.modules.dnc.response.*;
 import org.jeecg.modules.dnc.service.*;
@@ -26,6 +26,8 @@
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import redis.clients.jedis.Jedis;
+
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -39,11 +41,13 @@
     @Lazy
     private IPartsInfoService partsInfoService;
     @Autowired
+    private IProcessSpecVersionService processSpecVersionService;
+    @Autowired
     private IProductPermissionService productPermissionService;
     @Autowired
     private IProductDepartmentService productDepartmentService;
     @Autowired
-    private IPermissionStreamService permissionStreamService;
+    private IPermissionStreamNewService permissionStreamNewService;
     @Autowired
     private IComponentDepartmentService componentDepartmentService;
     @Autowired
@@ -52,6 +56,10 @@
     private IPartsDepartmentService partsDepartmentService;
     @Autowired
     private IPartsPermissionService partsPermissionService;
+    @Autowired
+    private IProcessSpecVersionPermissionService processSpecVersionPermissionService;
+    @Autowired
+    private IProcessSpecVersionDepartmentService processSpecVersionDepartmentService;
     @Autowired
     private ISysUserService userService;
     @Autowired
@@ -98,10 +106,11 @@
         if (!b) {
             ExceptionCast.cast(ProductInfoCode.PRODUCT_SAVE_ERROR);
         }
-        PermissionStream stream = new PermissionStream();
-        stream.setProductId(productInfo.getProductId());
+        PermissionStreamNew stream = new PermissionStreamNew();
+        stream.setBusinessId(productInfo.getProductId());
         stream.setUserId(userId);
-        return permissionStreamService.save(stream);
+        stream.setBusinessType("1");
+        return permissionStreamNewService.save(stream);
     }
 
     @Override
@@ -131,12 +140,13 @@
                 return false;
             }
         }
-        PermissionStream stream = permissionStreamService.getByProductIdAndUserId(id, userId);
+        PermissionStreamNew stream = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(id, userId, "1");
         if (stream == null) {
-            stream = new PermissionStream();
-            stream.setProductId(id);
+            stream = new PermissionStreamNew();
+            stream.setBusinessId(productInfo.getProductId());
             stream.setUserId(userId);
-            return permissionStreamService.save(stream);
+            stream.setBusinessType("1");
+            return permissionStreamNewService.save(stream);
         }
         return b;
     }
@@ -155,6 +165,10 @@
         List<PartsInfo> partsInfos = partsInfoService.getByUserPerms(userId);
         if (partsInfos == null)
             partsInfos = Collections.emptyList();
+        //宸ヨ壓瑙勭▼鐗堟湰
+        List<ProcessSpecVersion> processSpecVersions = processSpecVersionService.getByUserPerms(userId);
+        if (processSpecVersions == null)
+            processSpecVersions = Collections.emptyList();
         //宸ュ簭
         List<ProcessStream> processStreams = processStreamService.getByuserPerms(userId);
         if (processStreams == null)
@@ -163,7 +177,7 @@
         List<WorkStep> workStepList = workStepService.getByUserPerms(userId);
         if (workStepList == null)
             workStepList = Collections.emptyList();
-        return ProductTreeWrapper.loadTree(productInfoList, componentInfoList, partsInfos, processStreams, workStepList);
+        return ProductTreeWrapper.loadTree(productInfoList, componentInfoList, partsInfos, processSpecVersions,processStreams, workStepList);
     }
 
     @Override
@@ -219,10 +233,10 @@
         b = productDepartmentService.deleteByProductId(id);
         if (!b)
             ExceptionCast.cast(CommonCode.FAIL);
-        b = permissionStreamService.deleteUserPermsByProductId(id);
+        b = permissionStreamNewService.deletePermissionStreamNewByBusinessId(id, "1","0");
         if (!b)
             ExceptionCast.cast(CommonCode.FAIL);
-        b = permissionStreamService.deleteDepartPermsByProductId(id);
+        b = permissionStreamNewService.deletePermissionStreamNewByBusinessId(id, "1","1");
         if (!b)
             ExceptionCast.cast(CommonCode.FAIL);
         return super.removeById(id);
@@ -240,33 +254,37 @@
             ProductInfo productInfo = super.getById(paramId);
             if (productInfo == null)
                 ExceptionCast.cast(ProductInfoCode.PRODUCT_NOT_EXIST);
-            PermissionStream permission = permissionStreamService.getByProductIdAndUserId(paramId, userId);
+            PermissionStreamNew permission = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(paramId, userId,"1");
             return permission != null;
         } else if (nodeType == 2) {
             ComponentInfo componentInfo = componentInfoService.getById(paramId);
             if (componentInfo == null)
                 ExceptionCast.cast(ComponentInfoCode.COMPONENT_NOT_EXIST);
-            PermissionStream permission = permissionStreamService.getByComponentIdAndUserId(componentInfo.getProductId(), paramId, userId);
+            PermissionStreamNew permission = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(componentInfo.getComponentId(), userId,"2");
             return permission != null;
         } else if (nodeType == 3) {
             PartsInfo partsInfo = partsInfoService.getById(paramId);
             if (partsInfo == null)
                 ExceptionCast.cast(PartsInfoCode.PARTS_NOT_EXIST);
-            PermissionStream permission = permissionStreamService.getByPartsIdAndUserId(partsInfo.getProductId(), partsInfo.getComponentId(), paramId, userId);
+            PermissionStreamNew permission = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(partsInfo.getPartsId(), userId, "3");
+            return permission != null;
+        } else if (nodeType == 4) {
+            ProcessSpecVersion processSpecVersion = processSpecVersionService.getById(paramId);
+            if (processSpecVersion == null)
+                ExceptionCast.cast(PartsInfoCode.PROCESSSPECVERSION_NOT_EXIST);
+            PermissionStreamNew permission = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(processSpecVersion.getId(),userId,"4");
             return permission != null;
         } else if (nodeType == 5) {
             ProcessStream processStream = processStreamService.getById(paramId);
             if (processStream == null)
                 ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST);
-            PermissionStream permission = permissionStreamService.getByProcessIdAndUserId(processStream.getProductId(), processStream.getComponentId()
-                    , processStream.getPartsId(), processStream.getProcessId(), userId);
+            PermissionStreamNew permission = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(processStream.getProcessId(), userId,"5");
             return permission != null;
         } else if (nodeType == 6) {
             WorkStep workStep = workStepService.getById(paramId);
             if (workStep == null)
                 ExceptionCast.cast(ProcessInfoCode.WORKSTEP_NOT_EXIST);
-            PermissionStream permission = permissionStreamService.getByStepIdAndUserId(workStep.getProductId(), workStep.getComponentId()
-                    , workStep.getPartsId(), workStep.getProcessId(), workStep.getId(), userId);
+            PermissionStreamNew permission = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(workStep.getId(), userId,"6");
             return permission != null;
         }
         return false;
@@ -282,6 +300,8 @@
             return componentPermissionService.getUserPermsByComponentId(paramId);
         } else if (nodeType == 3) {
             return partsPermissionService.getUserPermsByProductId(paramId);
+        } else if (nodeType == 4) {
+            return processSpecVersionPermissionService.getUserPermsByProductId(paramId);
         } else if (nodeType == 5) {
             return iProcessStreamPermissionService.getUserPermsByProductId(paramId);
         } else if (nodeType == 6) {
@@ -301,6 +321,8 @@
             return componentPermissionService.getUserNonPermsByComponentId(paramId);
         } else if (nodeType == 3) {
             return partsPermissionService.getUserNonPermsByProductId(paramId);
+        } else if (nodeType == 4) {
+            return processSpecVersionPermissionService.getUserNonPermsByProductId(paramId);
         } else if (nodeType == 5) {
             return iProcessStreamPermissionService.getUserNonPermsByProductId(paramId);
         } else if (nodeType == 6) {
@@ -320,12 +342,13 @@
             return componentDepartmentService.getDepartPermsByComponentId(paramId);
         } else if (nodeType == 3) {
             return partsDepartmentService.getDepartPermsByPartsId(paramId);
-        } else if (nodeType == 5) {
+        } else if (nodeType == 4) {
+            return processSpecVersionDepartmentService.getDepartPermsByPsvId(paramId);
+        }else if (nodeType == 5) {
             return processionDepartmentService.getDepartPermsByProcessId(paramId);
         } else if (nodeType == 6) {
             return workStepDepartmentService.getDepartPermsByStepId(paramId);
         }
-        //todo 灏佽鏍戠姸缁撴瀯
         else {
             return null;
         }
@@ -341,6 +364,8 @@
             return componentDepartmentService.getDepartNonPermsByComponentId(paramId);
         } else if (nodeType == 3) {
             return partsDepartmentService.getDepartNonPermsByProductId(paramId);
+        } else if (nodeType == 4) {
+            return processionDepartmentService.getDepartNonPermsByProcessId(paramId);
         } else if (nodeType == 5) {
             return processionDepartmentService.getDepartNonPermsByProcessId(paramId);
         } else if (nodeType == 6) {
@@ -367,16 +392,19 @@
         Collection<SysUser> userList = userService.listByIds(ids);
         validateSysUserList(userList, ids);
         switch (nodeType) {
-            case 6:
-                return handleWorkStep(paramId, null,userList);
-            case 5:
-                return handleProcessStream(paramId, relativeFlag, null,userList);
-            case 3:
-                return handlePartsInfo(paramId, relativeFlag, null,userList);
             case 1:
                 return handleProductInfo(paramId, relativeFlag, null,userList);
             case 2:
                 return handleComponentInfo(paramId, relativeFlag, null,userList);
+            case 3:
+                return handlePartsInfo(paramId, relativeFlag, null,userList);
+            case 4:
+                return handleProcessSpecVersion(paramId, relativeFlag, null,userList);
+            case 5:
+                return handleProcessStream(paramId, relativeFlag, null,userList);
+            case 6:
+                return handleWorkStep(paramId, null,userList);
+
             default:
                 return false;
         }
@@ -395,19 +423,23 @@
         validateInputParameters(nodeType, paramId, relativeFlag, "2", departmentIds);
         List<String> ids = new ArrayList<>(departmentIds.length);
         Collections.addAll(ids, departmentIds);
-        Collection<MdcProduction> mdcProductionList = mdcProductionService.listByIds(ids);
-        validateMdcProductionList(mdcProductionList, ids);
+        List<String> deps=mdcProductionService.findAllProductionIds(ids);
+        Collection<MdcProduction> mdcProductionList = mdcProductionService.listByIds(deps);
+        validateMdcProductionList(mdcProductionList, deps);
         switch (nodeType) {
-            case 6:
-                return handleWorkStep(paramId, mdcProductionList,null);
-            case 5:
-                return handleProcessStream(paramId, relativeFlag, mdcProductionList,null);
-            case 3:
-                return handlePartsInfo(paramId, relativeFlag, mdcProductionList,null);
             case 1:
                 return handleProductInfo(paramId, relativeFlag, mdcProductionList,null);
             case 2:
                 return handleComponentInfo(paramId, relativeFlag, mdcProductionList,null);
+            case 3:
+                return handlePartsInfo(paramId, relativeFlag, mdcProductionList,null);
+            case 4:
+                return handleProcessSpecVersion(paramId, relativeFlag, mdcProductionList,null);
+            case 5:
+                return handleProcessStream(paramId, relativeFlag, mdcProductionList,null);
+            case 6:
+                return handleWorkStep(paramId, mdcProductionList,null);
+
             default:
                 return false;
         }
@@ -428,16 +460,18 @@
         Collection<SysUser> userList = userService.listByIds(userIdsList);
         validateSysUserList(userList, userIdsList);
         switch (nodeType) {
-            case 6:
-                return handleWorkStepRemoval(paramId, userList,null);
-            case 5:
-                return handleProcessStreamRemoval(paramId, relativeFlag, userList,null);
-            case 3:
-                return handlePartsInfoRemoval(paramId, relativeFlag, userList,null);
             case 1:
                 return handleProductInfoRemoval(paramId, relativeFlag, userList,null);
             case 2:
                 return handleComponentInfoRemoval(paramId, relativeFlag, userList,null);
+            case 3:
+                return handlePartsInfoRemoval(paramId, relativeFlag, userList,null);
+            case 4:
+                return handleProcessSpecVersionRemoval(paramId, relativeFlag, userList,null);
+            case 5:
+                return handleProcessStreamRemoval(paramId, relativeFlag, userList,null);
+            case 6:
+                return handleWorkStepRemoval(paramId, userList,null);
             default:
                 return false;
         }
@@ -456,20 +490,24 @@
     @Transactional(rollbackFor = {Exception.class})
     public boolean assignRemoveDepartmentAll(Integer nodeType, String paramId, Integer relativeFlag, String[] departmentIds) {
         validateInputParameters(nodeType, paramId, relativeFlag, "2", departmentIds);
-        List<String> departmentIdList = Arrays.asList(departmentIds);
-        Collection<MdcProduction> mdcProductionList = mdcProductionService.listByIds(departmentIdList);
-        validateMdcProductionList(mdcProductionList, departmentIdList);
+        List<String> ids = new ArrayList<>(departmentIds.length);
+        Collections.addAll(ids, departmentIds);
+        List<String> deps=mdcProductionService.findAllProductionIds(ids);
+        Collection<MdcProduction> mdcProductionList = mdcProductionService.listByIds(deps);
+        validateMdcProductionList(mdcProductionList, deps);
         switch (nodeType) {
-            case 6:
-                return handleWorkStepRemoval(paramId,null,mdcProductionList);
-            case 5:
-                return handleProcessStreamRemoval(paramId, relativeFlag, null,mdcProductionList);
-            case 3:
-                return handlePartsInfoRemoval(paramId, relativeFlag,null, mdcProductionList);
             case 1:
                 return handleProductInfoRemoval(paramId, relativeFlag,null, mdcProductionList);
             case 2:
                 return handleComponentInfoRemoval(paramId, relativeFlag, null,mdcProductionList);
+            case 3:
+                return handlePartsInfoRemoval(paramId, relativeFlag,null, mdcProductionList);
+            case 4:
+                return handleProcessSpecVersionRemoval(paramId, relativeFlag, null,mdcProductionList);
+            case 5:
+                return handleProcessStreamRemoval(paramId, relativeFlag, null,mdcProductionList);
+            case 6:
+                return handleWorkStepRemoval(paramId,null,mdcProductionList);
             default:
                 return false;
         }
@@ -481,7 +519,7 @@
         if (productInfo == null || userList == null || userList.isEmpty())
             ExceptionCast.cast(CommonCode.INVALID_PARAM);
         List<ProductPermission> permissionList = new ArrayList<>();
-        List<PermissionStream> permissionStreamList = new ArrayList<>();
+        List<PermissionStreamNew> permissionStreamList = new ArrayList<>();
         userList.forEach(item -> {
             ProductPermission en = productPermissionService.getByProductIdAndUserId(productInfo.getProductId(), item.getId());
             if (en == null) {
@@ -490,11 +528,12 @@
                 en.setProductId(productInfo.getProductId());
                 permissionList.add(en);
             }
-            PermissionStream stream = permissionStreamService.getByProductIdAndUserId(productInfo.getProductId(), item.getId());
+            PermissionStreamNew stream = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(productInfo.getProductId(), item.getId(),"1");
             if (stream == null) {
-                stream = new PermissionStream();
+                stream = new PermissionStreamNew();
                 stream.setUserId(item.getId());
-                stream.setProductId(productInfo.getProductId());
+                stream.setBusinessId(productInfo.getProductId());
+                stream.setBusinessType("1");
                 permissionStreamList.add(stream);
             }
         });
@@ -505,7 +544,7 @@
             }
         }
         if (!permissionStreamList.isEmpty()) {
-            boolean b = permissionStreamService.saveBatch(permissionStreamList);
+            boolean b =permissionStreamNewService.saveBatch(permissionStreamList);
             if (!b) {
                 ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
             }
@@ -519,13 +558,13 @@
         if (productInfo == null || userList == null || userList.isEmpty())
             ExceptionCast.cast(CommonCode.INVALID_PARAM);
         List<ProductPermission> permissionList = new ArrayList<>();
-        List<PermissionStream> permissionStreamList = new ArrayList<>();
+        List<PermissionStreamNew> permissionStreamList = new ArrayList<>();
         userList.forEach(item -> {
             ProductPermission en = productPermissionService.getByProductIdAndUserId(productInfo.getProductId(), item.getId());
             if (en != null) {
                 permissionList.add(en);
             }
-            PermissionStream stream = permissionStreamService.getByProductIdAndUserId(productInfo.getProductId(), item.getId());
+            PermissionStreamNew stream = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(productInfo.getProductId(), item.getId(),"1");
             if (stream != null) {
                 permissionStreamList.add(stream);
             }
@@ -541,7 +580,7 @@
             }
         }
         if (!permissionStreamList.isEmpty()) {
-            boolean b = permissionStreamService.removeByCollection(permissionStreamList);
+            boolean b = permissionStreamNewService.deletePermissionStreamNewByList(permissionStreamList);
             if (!b) {
                 ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
             }
@@ -555,7 +594,7 @@
         if (productInfo == null || departmentList == null || departmentList.isEmpty())
             ExceptionCast.cast(CommonCode.INVALID_PARAM);
         List<ProductDepartment> productDepartmentList = new ArrayList<>();
-        List<PermissionStream> permissionStreamList = new ArrayList<>();
+        List<PermissionStreamNew> permissionStreamList = new ArrayList<>();
         departmentList.forEach(item -> {
             ProductDepartment en = productDepartmentService.getByProductIdAndDepartId(productInfo.getProductId(), item.getId());
             if (en == null) {
@@ -564,11 +603,12 @@
                 en.setProductId(productInfo.getProductId());
                 productDepartmentList.add(en);
             }
-            PermissionStream stream = permissionStreamService.getByProductIdAndDepartId(productInfo.getProductId(), item.getId());
+            PermissionStreamNew stream = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndDepartId(productInfo.getProductId(), item.getId(),"1");
             if (stream == null) {
-                stream = new PermissionStream();
+                stream = new PermissionStreamNew();
                 stream.setDepartId(item.getId());
-                stream.setProductId(productInfo.getProductId());
+                stream.setBusinessId(productInfo.getProductId());
+                stream.setBusinessType("1");
                 permissionStreamList.add(stream);
             }
         });
@@ -579,7 +619,7 @@
             }
         }
         if (!permissionStreamList.isEmpty()) {
-            boolean b = permissionStreamService.saveBatch(permissionStreamList);
+            boolean b = permissionStreamNewService.saveBatch(permissionStreamList);
             if (!b) {
                 ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
             }
@@ -593,13 +633,13 @@
         if (productInfo == null || departmentList == null || departmentList.isEmpty())
             ExceptionCast.cast(CommonCode.INVALID_PARAM);
         List<ProductDepartment> productDepartmentList = new ArrayList<>();
-        List<PermissionStream> permissionStreamList = new ArrayList<>();
+        List<PermissionStreamNew> permissionStreamList = new ArrayList<>();
         departmentList.forEach(item -> {
             ProductDepartment en = productDepartmentService.getByProductIdAndDepartId(productInfo.getProductId(), item.getId());
             if (en != null) {
                 productDepartmentList.add(en);
             }
-            PermissionStream stream = permissionStreamService.getByProductIdAndDepartId(productInfo.getProductId(), item.getId());
+            PermissionStreamNew stream = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndDepartId(productInfo.getProductId(), item.getId(),"1");
             if (stream != null) {
                 permissionStreamList.add(stream);
             }
@@ -611,7 +651,7 @@
             }
         }
         if (!permissionStreamList.isEmpty()) {
-            boolean b = permissionStreamService.removeByCollection(permissionStreamList);
+            boolean b = permissionStreamNewService.deletePermissionStreamNewByList(permissionStreamList);
             if (!b) {
                 ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
             }
@@ -627,11 +667,7 @@
             ProcessStream processStream = processStreamService.getById(paramId);
             if (processStream == null)
                 return null;
-            List<PermissionStream> permissionStreamList = permissionStreamService.list(new QueryWrapper<PermissionStream>()
-                    .eq(StrUtil.isNotEmpty(processStream.getProductId()), "product_id", processStream.getProductId())
-                    .eq(StrUtil.isNotEmpty(processStream.getComponentId()), "component_id", processStream.getComponentId())
-                    .eq(StrUtil.isNotEmpty(processStream.getPartsId()), "parts_id", processStream.getPartsId())
-                    .eq(StrUtil.isNotEmpty(processStream.getProcessId()), "process_id", processStream.getProcessId()));
+            List<PermissionStreamNew> permissionStreamList = permissionStreamNewService.loadProductMixByBusinessId(processStream.getProcessId(),"5");
             if (permissionStreamList == null || permissionStreamList.isEmpty())
                 return null;
             permissionStreamList.forEach(item -> {
@@ -642,12 +678,7 @@
             WorkStep workStep = workStepService.getById(paramId);
             if (workStep == null)
                 return null;
-            List<PermissionStream> permissionStreamList = permissionStreamService.list(new QueryWrapper<PermissionStream>()
-                    .eq(StrUtil.isNotEmpty(workStep.getProductId()), "product_id", workStep.getProductId())
-                    .eq(StrUtil.isNotEmpty(workStep.getComponentId()), "component_id", workStep.getComponentId())
-                    .eq(StrUtil.isNotEmpty(workStep.getPartsId()), "parts_id", workStep.getPartsId())
-                    .eq(StrUtil.isNotEmpty(workStep.getProcessId()), "process_id", workStep.getProcessId())
-                    .eq(StrUtil.isNotEmpty(workStep.getId()), "step_id", workStep.getId()));
+            List<PermissionStreamNew> permissionStreamList = permissionStreamNewService.loadProductMixByBusinessId(workStep.getId(),"6");
             if (permissionStreamList == null || permissionStreamList.isEmpty())
                 return null;
             permissionStreamList.forEach(item -> {
@@ -752,6 +783,7 @@
         List<ProductInfo> productInfos = this.getByUserPerms(userId, queryParam);
         List<ComponentInfo> componentInfos = componentInfoService.getByUserPerms(userId, queryParam);
         List<PartsInfo> partsInfos = partsInfoService.getByUserPerms(userId, null, queryParam);
+        List<ProcessSpecVersion> processSpecVersions = processSpecVersionService.getByUserPerms(userId, queryParam);
         List<ProcessStream> processStreams = processStreamService.getByuserPerms(userId, queryParam);
         List<WorkStep> workSteps = workStepService.getByUserPerms(userId, queryParam);
         List<ComponentInfo> componentInfoList = new ArrayList<>();
@@ -879,7 +911,7 @@
         //杞崲鏁版嵁
         List<ComponentExt> componentExtList = ComponentExt.convertToExtList(componentInfoList);
 
-        return ProductTreeWrapper.loadTree(productInfoList, componentExtList, partsInfos, processStreams, workSteps);
+        return ProductTreeWrapper.loadTree(productInfoList, componentExtList, partsInfos,processSpecVersions, processStreams, workSteps);
     }
 
     @Override
@@ -894,6 +926,9 @@
             //闆朵欢
             case 3:
                 return partsInfoService.deletePartsInfo(id);
+            //宸ヨ壓瑙勭▼鐗堟湰
+            case 4:
+                return processSpecVersionService.deleteProcessSpecVersion(id);
             //宸ュ簭
             case 5:
                 return processStreamService.deleteProcessStream(id);
@@ -940,13 +975,13 @@
         }
     }
 
-    private void handleRelativePermissions(String productId, List<String> componentIds, String processId, String partsId, Collection<SysUser> userList) {
+    private void handleRelativePermissions(String productId, List<String> componentIds, String processId, String partsId,String psvId ,Collection<SysUser> userList) {
         List<ComponentPermission> componentPermissionList = new ArrayList<>();
         List<PartsPermission> partsPermissionList = new ArrayList<>();
+        List<ProcessSpecVersionPermission> processSpecVersionPermissionList = new ArrayList<>();
         List<ProcessionPermission> processionPermissionList = new ArrayList<>();
         List<WorkStepPermission> workStepPermissionList = new ArrayList<>();
-        List<PermissionStream> permissionStreamList = new ArrayList<>();
-
+        List<PermissionStreamNew> permissionStreamList = new ArrayList<>();
         // 澶勭悊閮ㄤ欢鏉冮檺
         if (componentIds != null && !componentIds.isEmpty()) {
             handleComponentPermissions(componentIds, userList, componentPermissionList, permissionStreamList);
@@ -956,9 +991,28 @@
                         .map(PartsInfo::getPartsId)
                         .collect(Collectors.toList());
                 handlePartsPermissions(partsIds, userList, partsPermissionList, permissionStreamList);
+                List<String> psvIds = processSpecVersionService.getByPartsIds(partsIds).stream().map(ProcessSpecVersion::getId).collect(Collectors.toList());
+                handlePsvPermissions(psvIds, userList, processSpecVersionPermissionList, permissionStreamList);
                 List<ProcessStream> processStreamList = processStreamService.getByComponentIdList(productId, componentIds, partsIds);
                 processStreamApi(productId, userList, processionPermissionList, workStepPermissionList, permissionStreamList, processStreamList);
             }
+        }
+
+        // 澶勭悊闆朵欢鏉冮檺
+        if (partsId != null) {
+            List<ProcessSpecVersion> processStreamList = processSpecVersionService.list(new QueryWrapper<ProcessSpecVersion>().eq("id", psvId));
+            if (processStreamList != null && !processStreamList.isEmpty()) {
+                List<String> psvIds = processStreamList.stream()
+                        .map(ProcessSpecVersion::getId)
+                        .collect(Collectors.toList());
+                handlePsvPermissions(psvIds,userList,processSpecVersionPermissionList,permissionStreamList);
+            }
+        }
+
+        // 澶勭悊宸ヨ壓瑙勭▼鐗堟湰鏉冮檺
+        if (psvId!= null) {
+            List<ProcessStream> processStreamList = processStreamService.list(new QueryWrapper<ProcessStream>().eq("psv_id", psvId));
+            processStreamApi(productId, userList, processionPermissionList, workStepPermissionList, permissionStreamList, processStreamList);
         }
 
         // 澶勭悊宸ュ簭鏉冮檺
@@ -972,17 +1026,14 @@
             }
         }
 
-        // 澶勭悊闆朵欢鏉冮檺
-        if (partsId != null) {
-            List<ProcessStream> processStreamList = processStreamService.list(new QueryWrapper<ProcessStream>().eq("parts_id", partsId));
-            processStreamApi(productId, userList, processionPermissionList, workStepPermissionList, permissionStreamList, processStreamList);
-        }
-
         if (!componentPermissionList.isEmpty()) {
             componentPermissionService.saveBatch(componentPermissionList);
         }
         if (!partsPermissionList.isEmpty()) {
             partsPermissionService.saveBatch(partsPermissionList);
+        }
+        if (!processSpecVersionPermissionList.isEmpty()) {
+            processSpecVersionPermissionService.saveBatch(processSpecVersionPermissionList);
         }
         if (!processionPermissionList.isEmpty()) {
             iProcessStreamPermissionService.saveBatch(processionPermissionList);
@@ -991,11 +1042,12 @@
             iWorkStepPermissionService.saveBatch(workStepPermissionList);
         }
         if (!permissionStreamList.isEmpty()) {
-            permissionStreamService.saveBatch(permissionStreamList);
+            permissionStreamNewService.saveBatch(permissionStreamList);
         }
     }
 
-    private void processStreamApi(String productId, Collection<SysUser> userList, List<ProcessionPermission> processionPermissionList, List<WorkStepPermission> workStepPermissionList, List<PermissionStream> permissionStreamList, List<ProcessStream> processStreamList) {
+    private void processStreamApi(String productId, Collection<SysUser> userList, List<ProcessionPermission> processionPermissionList,
+                                  List<WorkStepPermission> workStepPermissionList, List<PermissionStreamNew> permissionStreamList, List<ProcessStream> processStreamList) {
         if (processStreamList != null && !processStreamList.isEmpty()) {
             List<String> processIds = processStreamList.stream()
                     .map(ProcessStream::getProcessId)
@@ -1012,7 +1064,7 @@
     }
 
     private void handleComponentPermissions(List<String> componentIds, Collection<SysUser> userList,
-                                            List<ComponentPermission> componentPermissionList, List<PermissionStream> permissionStreamList) {
+                                            List<ComponentPermission> componentPermissionList, List<PermissionStreamNew> permissionStreamList) {
         Map<String, ComponentPermission> componentPermissionMap = new HashMap<>();
         Map<String, ComponentInfo> componentInfoMap = new HashMap<>();
         String key;
@@ -1034,16 +1086,16 @@
             ComponentPermission cp = entry.getValue();
             componentPermissionList.add(cp);
             ComponentInfo cpInfo = componentInfoMap.get(cp.getComponentId());
-            PermissionStream s = new PermissionStream();
-            s.setProductId(cpInfo.getProductId());
-            s.setComponentId(cpInfo.getComponentId());
+            PermissionStreamNew s = new PermissionStreamNew();
+            s.setBusinessId(cpInfo.getProductId());
+            s.setBusinessType("1");
             s.setUserId(cp.getUserId());
             permissionStreamList.add(s);
         }
     }
 
     private void handlePartsPermissions(List<String> partsIds, Collection<SysUser> userList,
-                                        List<PartsPermission> partsPermissionList, List<PermissionStream> permissionStreamList) {
+                                        List<PartsPermission> partsPermissionList, List<PermissionStreamNew> permissionStreamList) {
         Map<String, PartsPermission> partsPermissionHashMap = new HashMap<>();
         Map<String, PartsInfo> partsInfoMap = new HashMap<>();
         String key;
@@ -1065,17 +1117,47 @@
             PartsPermission pp = entry.getValue();
             partsPermissionList.add(pp);
             PartsInfo ptInfo = partsInfoMap.get(pp.getPartsId());
-            PermissionStream s = new PermissionStream();
-            s.setProductId(ptInfo.getProductId());
-            s.setComponentId(ptInfo.getComponentId());
-            s.setPartsId(ptInfo.getPartsId());
+            PermissionStreamNew s = new PermissionStreamNew();
+            s.setBusinessId(ptInfo.getPartsId());
+            s.setBusinessType("3");
+            s.setUserId(pp.getUserId());
+            permissionStreamList.add(s);
+        }
+    }
+
+    private void handlePsvPermissions(List<String> psvIds, Collection<SysUser> userList,
+                                        List<ProcessSpecVersionPermission> processSpecVersionPermissionList, List<PermissionStreamNew> permissionStreamList) {
+        Map<String, ProcessSpecVersionPermission> processSpecVersionPermissionMap = new HashMap<>();
+        Map<String, ProcessSpecVersion> processStreamMap = new HashMap<>();
+        String key;
+        for (ProcessSpecVersion p : processSpecVersionService.listByIds(psvIds)) {
+            processStreamMap.put(p.getId(), p);
+            for (SysUser u : userList) {
+                key = p.getId() + "," + u.getId();
+                processSpecVersionPermissionMap.put(key, new ProcessSpecVersionPermission(p.getId(), u.getId()));
+            }
+        }
+        List<ProcessSpecVersionPermission> processSpecVersionPermissions = processSpecVersionPermissionService.getByPsvIdsAndUserIds(psvIds, userList.stream().map(SysUser::getId).collect(Collectors.toList()));
+        if (processSpecVersionPermissions != null && !processSpecVersionPermissions.isEmpty()) {
+            for (ProcessSpecVersionPermission processionPermission : processSpecVersionPermissions) {
+                key = processionPermission.getPsvId() + "," + processionPermission.getUserId();
+                processSpecVersionPermissionMap.remove(key);
+            }
+        }
+        for (Map.Entry<String, ProcessSpecVersionPermission> entry : processSpecVersionPermissionMap.entrySet()) {
+            ProcessSpecVersionPermission pp = entry.getValue();
+            processSpecVersionPermissionList.add(pp);
+            ProcessSpecVersion processSpecVersion = processStreamMap.get(pp.getPsvId());
+            PermissionStreamNew s = new PermissionStreamNew();
+            s.setBusinessId(processSpecVersion.getId());
+            s.setBusinessType("4");
             s.setUserId(pp.getUserId());
             permissionStreamList.add(s);
         }
     }
 
     private void handleProcessPermissions(List<String> processIds, Collection<SysUser> userList,
-                                          List<ProcessionPermission> processionPermissionList, List<PermissionStream> permissionStreamList) {
+                                          List<ProcessionPermission> processionPermissionList, List<PermissionStreamNew> permissionStreamList) {
         Map<String, ProcessionPermission> processionPermissionHashMap = new HashMap<>();
         Map<String, ProcessStream> processStreamMap = new HashMap<>();
         String key;
@@ -1097,18 +1179,16 @@
             ProcessionPermission pp = entry.getValue();
             processionPermissionList.add(pp);
             ProcessStream processStream = processStreamMap.get(pp.getProcessId());
-            PermissionStream s = new PermissionStream();
-            s.setProductId(processStream.getProductId());
-            s.setComponentId(processStream.getComponentId());
-            s.setPartsId(processStream.getPartsId());
-            s.setProcessId(processStream.getProcessId());
+            PermissionStreamNew s = new PermissionStreamNew();
+            s.setBusinessId(processStream.getProcessId());
+            s.setBusinessType("5");
             s.setUserId(pp.getUserId());
             permissionStreamList.add(s);
         }
     }
 
     private void handleWorkStepPermissions(List<String> workStepIds, Collection<SysUser> userList,
-                                           List<WorkStepPermission> workStepPermissionList, List<PermissionStream> permissionStreamList) {
+                                           List<WorkStepPermission> workStepPermissionList, List<PermissionStreamNew> permissionStreamList) {
         Map<String, WorkStepPermission> workStepPermissionHashMap = new HashMap<>();
         Map<String, WorkStep> workStepHashMap = new HashMap<>();
         String key;
@@ -1130,12 +1210,9 @@
             WorkStepPermission ws = entry.getValue();
             workStepPermissionList.add(ws);
             WorkStep workStep = workStepHashMap.get(ws.getStepId());
-            PermissionStream s = new PermissionStream();
-            s.setProductId(workStep.getProductId());
-            s.setComponentId(workStep.getComponentId());
-            s.setPartsId(workStep.getPartsId());
-            s.setProcessId(workStep.getProcessId());
-            s.setStepId(workStep.getId());
+            PermissionStreamNew s = new PermissionStreamNew();
+            s.setBusinessId(workStep.getId());
+            s.setBusinessType("6");
             s.setUserId(ws.getUserId());
             permissionStreamList.add(s);
         }
@@ -1177,7 +1254,7 @@
                 ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
             }
             if (relativeFlag == 1) {
-                handleRelativePermissions(processStream.getProductId(), null, processStream.getProcessId(), null, userList);
+                handleRelativePermissions(processStream.getProductId(), null, processStream.getProcessId(), null,null, userList);
             }
         }else {
             result = processStreamService.assignAddDepart(processStream, mdcProductionList);
@@ -1185,7 +1262,37 @@
                 ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
             }
             if (relativeFlag == 1) {
-                handleRelatedPermissions(processStream, mdcProductionList, workStepService, workStepDepartmentService, permissionStreamService);
+                handleRelatedPermissions(processStream, mdcProductionList, workStepService, workStepDepartmentService, permissionStreamNewService);
+            }
+        }
+        return true;
+    }
+
+    private boolean handleProcessSpecVersion(String paramId, Integer relativeFlag, Collection<MdcProduction> mdcProductionList,Collection<SysUser> userList) {
+        ProcessSpecVersion processSpecVersion = processSpecVersionService.getById(paramId);
+        if (processSpecVersion == null) {
+            ExceptionCast.cast(PartsInfoCode.PROCESSSPECVERSION_NOT_EXIST);
+        }
+        boolean hasPerm = checkProductPerm(4, processSpecVersion.getId());
+        if (!hasPerm) {
+            ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
+        }
+        boolean result;
+        if (userList!=null){
+            result = processSpecVersionService.assignAddUser(processSpecVersion, userList);
+            if (!result) {
+                ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
+            }
+            if (relativeFlag == 1) {
+                handleRelativePermissions(processSpecVersion.getProductId(), null, null,null, processSpecVersion.getId(), userList);
+            }
+        }else {
+            result = processSpecVersionService.assignAddDepart(processSpecVersion, mdcProductionList);
+            if (!result) {
+                ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
+            }
+            if (relativeFlag == 1) {
+                handleRelatedPermissionsForProcessSpecVersion(processSpecVersion, mdcProductionList);
             }
         }
         return true;
@@ -1207,7 +1314,7 @@
                 ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
             }
             if (relativeFlag == 1) {
-                handleRelativePermissions(partsInfo.getProductId(), null, null, partsInfo.getPartsId(), userList);
+                handleRelativePermissions(partsInfo.getProductId(), null, null, partsInfo.getPartsId(),null, userList);
             }
         }else {
             result = partsInfoService.assignAddDepart(partsInfo, mdcProductionList);
@@ -1242,7 +1349,7 @@
                     List<String> componentIds = componentInfoList.stream()
                             .map(ComponentInfo::getComponentId)
                             .collect(Collectors.toList());
-                    handleRelativePermissions(productInfo.getProductId(), componentIds, null, null, userList);
+                    handleRelativePermissions(productInfo.getProductId(), componentIds, null, null, null,userList);
                 }
             }
         }else {
@@ -1281,7 +1388,7 @@
                             .collect(Collectors.toList());
                 }
                 componentIds.add(componentInfo.getComponentId());
-                handleRelativePermissions(componentInfo.getProductId(), componentIds, null, null, userList);
+                handleRelativePermissions(componentInfo.getProductId(), componentIds, null, null,null, userList);
             }
         }else {
             result = componentInfoService.assignAddDepart(componentInfo, mdcProductionList);
@@ -1295,7 +1402,8 @@
         return true;
     }
 
-    private void handleRelatedPermissions(Object parentEntity, Collection<MdcProduction> mdcProductionList, IWorkStepService workStepService, IWorkStepDepartmentService workStepDepartmentService, IPermissionStreamService permissionStreamService) {
+    private void handleRelatedPermissions(Object parentEntity, Collection<MdcProduction> mdcProductionList, IWorkStepService workStepService,
+                                          IWorkStepDepartmentService workStepDepartmentService, IPermissionStreamNewService permissionStreamNewService) {
         String parentId = getParentId(parentEntity);
         List<WorkStep> workStepList = workStepService.list(new QueryWrapper<WorkStep>().eq("process_id", parentId));
         if (workStepList == null || workStepList.isEmpty()) {
@@ -1323,48 +1431,54 @@
         }
 
         List<WorkStepDepartment> newWorkStepDepartments = new ArrayList<>();
-        List<PermissionStream> newPermissionStreams = new ArrayList<>();
+        List<PermissionStreamNew> newPermissionStreams = new ArrayList<>();
         for (Map.Entry<String, WorkStepDepartment> entry : allPermissions.entrySet()) {
             WorkStepDepartment wsDep = entry.getValue();
             newWorkStepDepartments.add(wsDep);
             WorkStep workStep = workStepMap.get(wsDep.getStepId());
-            PermissionStream permStream = new PermissionStream();
-            permStream.setProductId(workStep.getProductId());
-            permStream.setComponentId(workStep.getComponentId());
-            permStream.setPartsId(workStep.getPartsId());
-            permStream.setProcessId(workStep.getProcessId());
-            permStream.setStepId(workStep.getId());
+            PermissionStreamNew permStream = new PermissionStreamNew();
+            permStream.setBusinessId(workStep.getId());
+            permStream.setBusinessType("6");
             permStream.setDepartId(wsDep.getDepartId());
             newPermissionStreams.add(permStream);
         }
-
         if (!newWorkStepDepartments.isEmpty()) {
             workStepDepartmentService.saveBatch(newWorkStepDepartments);
         }
         if (!newPermissionStreams.isEmpty()) {
-            permissionStreamService.saveBatch(newPermissionStreams);
+            permissionStreamNewService.saveBatch(newPermissionStreams);
         }
     }
 
     private void handleRelatedPermissionsForParts(PartsInfo partsInfo, Collection<MdcProduction> mdcProductionList) {
-        // 澶勭悊宸ュ簭鏉冮檺
-        handleProcessPermissions(partsInfo,null, mdcProductionList);
-        // 澶勭悊宸ユ鏉冮檺
-        handleWorkStepPermissions(partsInfo, mdcProductionList);
+        // 澶勭悊宸ヨ壓瑙勭▼鐗堟湰
+        List<ProcessSpecVersion> processSpecVersionList = processSpecVersionService.list(new QueryWrapper<ProcessSpecVersion>().eq("parts_id", partsInfo.getPartsId()));
+        processSpecVersionList.forEach(item->{
+            processSpecVersionService.assignAddDepart(item, mdcProductionList);
+            handleRelatedPermissionsForProcessSpecVersion(item, mdcProductionList);
+        });
     }
 
-    private void handleProcessPermissions(PartsInfo partsInfo,ComponentInfo componentInfo,Collection<MdcProduction> mdcProductionList) {
+    private void handleRelatedPermissionsForProcessSpecVersion(ProcessSpecVersion processSpecVersion, Collection<MdcProduction> mdcProductionList) {
+        // 澶勭悊宸ュ簭鏉冮檺
+        handleProcessPermissions(processSpecVersion,null, mdcProductionList);
+        // 澶勭悊宸ユ鏉冮檺
+        handleWorkStepPermissions(processSpecVersion, mdcProductionList);
+
+    }
+
+    private void handleProcessPermissions(ProcessSpecVersion processSpecVersion,ComponentInfo componentInfo,Collection<MdcProduction> mdcProductionList) {
         List<ProcessStream> processStreamList=new ArrayList<>();
         if (componentInfo != null) {
             processStreamList = processStreamService.list(new QueryWrapper<ProcessStream>().eq("component_id", componentInfo.getComponentId()));
         }else {
-            processStreamList = processStreamService.list(new QueryWrapper<ProcessStream>().eq("parts_id", partsInfo.getPartsId()));
+            processStreamList = processStreamService.list(new QueryWrapper<ProcessStream>().eq("psv_id", processSpecVersion.getId()));
         }
         if (processStreamList == null || processStreamList.isEmpty()) {
             return;
         }
         processStreamList.forEach(item->{
-            handleRelatedPermissions(item, mdcProductionList, workStepService, workStepDepartmentService, permissionStreamService);
+            handleRelatedPermissions(item, mdcProductionList, workStepService, workStepDepartmentService, permissionStreamNewService);
         });
         Map<String, ProcessionDepartment> allProcessPermissions = new HashMap<>();
         Map<String, ProcessStream> processStreamMap = new HashMap<>();
@@ -1388,16 +1502,14 @@
         }
 
         List<ProcessionDepartment> newProcessPermissions = new ArrayList<>();
-        List<PermissionStream> newPermissionStreams = new ArrayList<>();
+        List<PermissionStreamNew> newPermissionStreams = new ArrayList<>();
         for (Map.Entry<String, ProcessionDepartment> entry : allProcessPermissions.entrySet()) {
             ProcessionDepartment procDep = entry.getValue();
             newProcessPermissions.add(procDep);
             ProcessStream processStream = processStreamMap.get(procDep.getProcessId());
-            PermissionStream permStream = new PermissionStream();
-            permStream.setProductId(processStream.getProductId());
-            permStream.setComponentId(processStream.getComponentId());
-            permStream.setPartsId(processStream.getPartsId());
-            permStream.setProcessId(processStream.getProcessId());
+            PermissionStreamNew permStream = new PermissionStreamNew();
+            permStream.setBusinessId(processStream.getProcessId());
+            permStream.setBusinessType("5");
             permStream.setDepartId(procDep.getDepartId());
             newPermissionStreams.add(permStream);
         }
@@ -1406,22 +1518,22 @@
             processionDepartmentService.saveBatch(newProcessPermissions);
         }
         if (!newPermissionStreams.isEmpty()) {
-            permissionStreamService.saveBatch(newPermissionStreams);
+            permissionStreamNewService.saveBatch(newPermissionStreams);
         }
     }
 
-    private void handleWorkStepPermissions(PartsInfo partsInfo, Collection<MdcProduction> mdcProductionList) {
-        List<ProcessStream> processStreamList = processStreamService.list(new QueryWrapper<ProcessStream>().eq("parts_id", partsInfo.getPartsId()));
+    private void handleWorkStepPermissions(ProcessSpecVersion processSpecVersion, Collection<MdcProduction> mdcProductionList) {
+        List<ProcessStream> processStreamList = processStreamService.list(new QueryWrapper<ProcessStream>().eq("psv_id", processSpecVersion.getId()));
         if (processStreamList == null || processStreamList.isEmpty()) {
             return;
         }
         List<String> processIds = processStreamList.stream().map(ProcessStream::getProcessId).collect(Collectors.toList());
-        List<WorkStep> workStepList = workStepService.getByProcessIds(partsInfo.getProductId(), processIds);
+        List<WorkStep> workStepList = workStepService.getByProcessIds(processSpecVersion.getProductId(), processIds);
         if (workStepList == null || workStepList.isEmpty()) {
             return;
         }
         workStepList.forEach(item->{
-            handleRelatedPermissions(item, mdcProductionList, workStepService, workStepDepartmentService, permissionStreamService);
+            handleRelatedPermissions(item, mdcProductionList, workStepService, workStepDepartmentService, permissionStreamNewService);
         });
     }
 
@@ -1463,14 +1575,14 @@
         }
 
         List<ComponentDepartment> newComponentPermissions = new ArrayList<>();
-        List<PermissionStream> newPermissionStreams = new ArrayList<>();
+        List<PermissionStreamNew> newPermissionStreams = new ArrayList<>();
         for (Map.Entry<String, ComponentDepartment> entry : allComponentPermissions.entrySet()) {
             ComponentDepartment compDep = entry.getValue();
             newComponentPermissions.add(compDep);
             ComponentInfo componentInfo = componentInfoMap.get(compDep.getComponentId());
-            PermissionStream permStream = new PermissionStream();
-            permStream.setProductId(componentInfo.getProductId());
-            permStream.setComponentId(componentInfo.getComponentId());
+            PermissionStreamNew permStream = new PermissionStreamNew();
+            permStream.setBusinessId(componentInfo.getComponentId());
+            permStream.setBusinessType("2");
             permStream.setDepartId(compDep.getDepartId());
             newPermissionStreams.add(permStream);
         }
@@ -1479,7 +1591,7 @@
             componentDepartmentService.saveBatch(newComponentPermissions);
         }
         if (!newPermissionStreams.isEmpty()) {
-            permissionStreamService.saveBatch(newPermissionStreams);
+            permissionStreamNewService.saveBatch(newPermissionStreams);
         }
     }
 
@@ -1537,14 +1649,14 @@
             }
 
             List<ComponentDepartment> newComponentPermissions = new ArrayList<>();
-            List<PermissionStream> newPermissionStreams = new ArrayList<>();
+            List<PermissionStreamNew> newPermissionStreams = new ArrayList<>();
             for (Map.Entry<String, ComponentDepartment> entry : allComponentPermissions.entrySet()) {
                 ComponentDepartment compDep = entry.getValue();
                 newComponentPermissions.add(compDep);
                 childComponent = componentInfoMap.get(compDep.getComponentId());
-                PermissionStream permStream = new PermissionStream();
-                permStream.setProductId(childComponent.getProductId());
-                permStream.setComponentId(childComponent.getComponentId());
+                PermissionStreamNew permStream = new PermissionStreamNew();
+                permStream.setBusinessId(childComponent.getComponentId());
+                permStream.setBusinessType("2");
                 permStream.setDepartId(compDep.getDepartId());
                 newPermissionStreams.add(permStream);
             }
@@ -1553,7 +1665,7 @@
                 componentDepartmentService.saveBatch(newComponentPermissions);
             }
             if (!newPermissionStreams.isEmpty()) {
-                permissionStreamService.saveBatch(newPermissionStreams);
+                permissionStreamNewService.saveBatch(newPermissionStreams);
             }
         }
     }
@@ -1564,6 +1676,7 @@
             return;
         }
         for (PartsInfo partsInfo : partsInfoList) {
+            partsInfoService.assignAddDepart(partsInfo, mdcProductionList);
             handleRelatedPermissionsForParts(partsInfo, mdcProductionList);
         }
     }
@@ -1579,77 +1692,6 @@
 
 
     /**绉婚櫎鏉冮檺*/
-
-    private boolean handleWorkStepRemoval(String paramId, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) {
-        WorkStep workStep = workStepService.getById(paramId);
-        if (workStep == null) {
-            ExceptionCast.cast(ProcessInfoCode.WORKSTEP_NOT_EXIST);
-        }
-        checkProductPerm(6, workStep.getId());
-        if (userList!=null){
-            return workStepService.assignRemoveUser(workStep, userList);
-        }else {
-            return workStepService.assignRemoveDepart(workStep, mdcProductionList);
-        }
-    }
-
-    private boolean handleProcessStreamRemoval(String paramId, Integer relativeFlag, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) {
-        ProcessStream processStream = processStreamService.getById(paramId);
-        if (processStream == null) {
-            ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST);
-        }
-        checkProductPerm(5, processStream.getProcessId());
-        boolean result;
-        if (userList!=null){
-            result = processStreamService.assignRemoveUser(processStream, userList);
-            if (!result) {
-                ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
-            }
-            if (relativeFlag == 1) {
-                handleRelatedRemovals(processStream.getProcessId(), userList,
-                        workStepService, iWorkStepPermissionService, permissionStreamService,
-                        "process_id");
-            }
-        }else {
-            result = processStreamService.assignRemoveDepart(processStream, mdcProductionList);
-            if (!result) {
-                ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
-            }
-            if (relativeFlag == 1) {
-                handleRelatedDepartmentRemovals(processStream.getProcessId(), mdcProductionList,
-                        workStepService, workStepDepartmentService, permissionStreamService,
-                        "process_id");
-            }
-        }
-        return true;
-    }
-
-    private boolean handlePartsInfoRemoval(String paramId, Integer relativeFlag, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) {
-        PartsInfo partsInfo = partsInfoService.getById(paramId);
-        if (partsInfo == null) {
-            ExceptionCast.cast(PartsInfoCode.PARTS_NOT_EXIST);
-        }
-        checkProductPerm(3, partsInfo.getPartsId());
-        boolean result;
-        if (userList!=null){
-            result = partsInfoService.assignRemoveUser(partsInfo, userList);
-            if (!result) {
-                ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
-            }
-            if (relativeFlag == 1) {
-                handlePartsRelatedRemovals(null,partsInfo, userList);
-            }
-        }else {
-            result = partsInfoService.assignRemoveDepart(partsInfo, mdcProductionList);
-            if (!result) {
-                ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
-            }
-            if (relativeFlag == 1) {
-                handlePartsRelatedDepartmentRemovals(null,partsInfo, mdcProductionList);
-            }
-        }
-        return true;
-    }
 
     private boolean handleProductInfoRemoval(String paramId, Integer relativeFlag, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) {
         ProductInfo productInfo = super.getById(paramId);
@@ -1705,10 +1747,108 @@
         return true;
     }
 
+    private boolean handlePartsInfoRemoval(String paramId, Integer relativeFlag, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) {
+        PartsInfo partsInfo = partsInfoService.getById(paramId);
+        if (partsInfo == null) {
+            ExceptionCast.cast(PartsInfoCode.PARTS_NOT_EXIST);
+        }
+        checkProductPerm(3, partsInfo.getPartsId());
+        boolean result;
+        if (userList!=null){
+            result = partsInfoService.assignRemoveUser(partsInfo, userList);
+            if (!result) {
+                ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
+            }
+            if (relativeFlag == 1) {
+                handlePartRelatedRemovals(partsInfo, userList);
+            }
+        }else {
+            result = partsInfoService.assignRemoveDepart(partsInfo, mdcProductionList);
+            if (!result) {
+                ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
+            }
+            if (relativeFlag == 1) {
+                handlePartRelatedDepartmentRemovals(partsInfo, mdcProductionList);
+            }
+        }
+        return true;
+    }
+
+    private boolean handleProcessSpecVersionRemoval(String paramId, Integer relativeFlag, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) {
+        ProcessSpecVersion processSpecVersion = processSpecVersionService.getById(paramId);
+        if (processSpecVersion == null) {
+            ExceptionCast.cast(PartsInfoCode.PROCESSSPECVERSION_NOT_EXIST);
+        }
+        checkProductPerm(4, processSpecVersion.getPartsId());
+        boolean result;
+        if (userList!=null){
+            result = processSpecVersionService.assignRemoveUser(processSpecVersion, userList);
+            if (!result) {
+                ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
+            }
+            if (relativeFlag == 1) {
+                handleProcessSpecVersionRelatedRemovals(null,processSpecVersion, userList);
+            }
+        }else {
+            result = processSpecVersionService.assignRemoveDepart(processSpecVersion, mdcProductionList);
+            if (!result) {
+                ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
+            }
+            if (relativeFlag == 1) {
+                handleProcessSpecVersionRelatedDepartmentRemovals(null,processSpecVersion, mdcProductionList);
+            }
+        }
+        return true;
+    }
+
+    private boolean handleProcessStreamRemoval(String paramId, Integer relativeFlag, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) {
+        ProcessStream processStream = processStreamService.getById(paramId);
+        if (processStream == null) {
+            ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST);
+        }
+        checkProductPerm(5, processStream.getProcessId());
+        boolean result;
+        if (userList!=null){
+            result = processStreamService.assignRemoveUser(processStream, userList);
+            if (!result) {
+                ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
+            }
+            if (relativeFlag == 1) {
+                handleRelatedRemovals(processStream.getProcessId(), userList,
+                        workStepService, iWorkStepPermissionService, permissionStreamNewService,
+                        "process_id");
+            }
+        }else {
+            result = processStreamService.assignRemoveDepart(processStream, mdcProductionList);
+            if (!result) {
+                ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR);
+            }
+            if (relativeFlag == 1) {
+                handleRelatedDepartmentRemovals(processStream.getProcessId(), mdcProductionList,
+                        workStepService, workStepDepartmentService, permissionStreamNewService,
+                        "process_id");
+            }
+        }
+        return true;
+    }
+
+    private boolean handleWorkStepRemoval(String paramId, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) {
+        WorkStep workStep = workStepService.getById(paramId);
+        if (workStep == null) {
+            ExceptionCast.cast(ProcessInfoCode.WORKSTEP_NOT_EXIST);
+        }
+        checkProductPerm(6, workStep.getId());
+        if (userList!=null){
+            return workStepService.assignRemoveUser(workStep, userList);
+        }else {
+            return workStepService.assignRemoveDepart(workStep, mdcProductionList);
+        }
+    }
+
     private void handleRelatedRemovals(String parentId, Collection<SysUser> userList,
                                        IWorkStepService workStepService,
                                        IWorkStepPermissionService workStepPermissionService,
-                                       IPermissionStreamService permissionStreamService,
+                                       IPermissionStreamNewService permissionStreamNewService,
                                        String queryField) {
         List<WorkStep> workStepList = workStepService.list(new QueryWrapper<WorkStep>().eq(queryField, parentId));
         if (workStepList.isEmpty()) {
@@ -1717,20 +1857,20 @@
         List<String> workStepIds = workStepList.stream().map(WorkStep::getId).collect(Collectors.toList());
         List<String> userIdList = userList.stream().map(SysUser::getId).collect(Collectors.toList());
         List<WorkStepPermission> workStepPermissions = workStepPermissionService.getByStepIdsAndUserIds(workStepIds, userIdList);
-        List<PermissionStream> permissionStreams = permissionStreamService.getByPartsIdsAndDepartIds(workStepIds, userIdList);
+        List<PermissionStreamNew> permissionStreams = permissionStreamNewService.loadPermissionStreamNewByBusinessIdsAndUserIds(workStepIds, userIdList,"6");
 
         if (!workStepPermissions.isEmpty()) {
             workStepPermissionService.removeByCollection(workStepPermissions);
         }
         if (!permissionStreams.isEmpty()) {
-            permissionStreamService.removeByCollection(permissionStreams);
+            permissionStreamNewService.deletePermissionStreamNewByList(permissionStreams);
         }
     }
 
     private void handleRelatedDepartmentRemovals(String parentId, Collection<MdcProduction> mdcProductionList,
                                                  IWorkStepService workStepService,
                                                  IWorkStepDepartmentService workStepDepartmentService,
-                                                 IPermissionStreamService permissionStreamService,
+                                                 IPermissionStreamNewService permissionStreamNewService,
                                                  String queryField) {
         List<WorkStep> workStepList = workStepService.list(new QueryWrapper<WorkStep>().eq(queryField, parentId));
         if (workStepList.isEmpty()) {
@@ -1739,22 +1879,22 @@
         List<String> workStepIds = workStepList.stream().map(WorkStep::getId).collect(Collectors.toList());
         List<String> departmentIdList = mdcProductionList.stream().map(MdcProduction::getId).collect(Collectors.toList());
         List<WorkStepDepartment> workStepDepartments = workStepDepartmentService.getByPartsIdsAndDepartIds(workStepIds, departmentIdList);
-        List<PermissionStream> permissionStreams = permissionStreamService.getByPartsIdsAndDepartIds(workStepIds, departmentIdList);
+        List<PermissionStreamNew> permissionStreams = permissionStreamNewService.loadPermissionStreamNewByBusinessIdsAndDepartIds(workStepIds, departmentIdList,"6");
 
         if (!workStepDepartments.isEmpty()) {
             workStepDepartmentService.removeByCollection(workStepDepartments);
         }
         if (!permissionStreams.isEmpty()) {
-            permissionStreamService.removeByCollection(permissionStreams);
+            permissionStreamNewService.deletePermissionStreamNewByList(permissionStreams);
         }
     }
 
-    private void handlePartsRelatedRemovals(ComponentInfo componentInfo,PartsInfo partsInfo,Collection<SysUser> userList) {
+    private void handleProcessSpecVersionRelatedRemovals(ComponentInfo componentInfo,ProcessSpecVersion processSpecVersion,Collection<SysUser> userList) {
         List<ProcessStream> processStreamList =new ArrayList<>();
         String productId="";
-        if (partsInfo!=null){
-            processStreamList= processStreamService.list(new QueryWrapper<ProcessStream>().eq("parts_id", partsInfo.getPartsId()));
-            productId=partsInfo.getProductId();
+        if (processSpecVersion!=null){
+            processStreamList= processStreamService.list(new QueryWrapper<ProcessStream>().eq("psv_id", processSpecVersion.getId()));
+            productId=processSpecVersion.getProductId();
         }else {
             processStreamList= processStreamService.list(new QueryWrapper<ProcessStream>().eq("component_id", componentInfo.getComponentId()).isNull("parts_id"));
             productId=componentInfo.getProductId();
@@ -1770,13 +1910,13 @@
         }
         List<String> userIdList = userList.stream().map(SysUser::getId).collect(Collectors.toList());
         List<ProcessionPermission> processionPermissions = iProcessStreamPermissionService.getByProcessIdsAndUserIds(processIds, userIdList);
-        List<PermissionStream> permissionStreams = permissionStreamService.getByPartsIdsAndUserIds(processIds, userIdList);
+        List<PermissionStreamNew> permissionStreams = permissionStreamNewService.loadPermissionStreamNewByBusinessIdsAndUserIds(processIds, userIdList,"5");
 
         if (!processionPermissions.isEmpty()) {
             iProcessStreamPermissionService.removeByCollection(processionPermissions);
         }
         if (!permissionStreams.isEmpty()) {
-            permissionStreamService.removeByCollection(permissionStreams);
+            permissionStreamNewService.deletePermissionStreamNewByList(permissionStreams);
         }
     }
 
@@ -1786,13 +1926,13 @@
         }
         List<String> departmentIdList = mdcProductionList.stream().map(MdcProduction::getId).collect(Collectors.toList());
         List<ProcessionDepartment> processionDepartments = processionDepartmentService.getByPartsIdsAndDepartIds(processIds, departmentIdList);
-        List<PermissionStream> permissionStreams = permissionStreamService.getByPartsIdsAndDepartIds(processIds, departmentIdList);
+        List<PermissionStreamNew> permissionStreams = permissionStreamNewService.loadPermissionStreamNewByBusinessIdsAndDepartIds(processIds, departmentIdList,"5");
 
         if (!processionDepartments.isEmpty()) {
             processionDepartmentService.removeByCollection(processionDepartments);
         }
         if (!permissionStreams.isEmpty()) {
-            permissionStreamService.removeByCollection(permissionStreams);
+            permissionStreamNewService.deletePermissionStreamNewByList(permissionStreams);
         }
     }
 
@@ -1800,7 +1940,7 @@
         List<WorkStep> workStepList = workStepService.getByProcessIds(productId, processIds);
         if (workStepList!=null){
             workStepList.forEach(item->{
-                handleRelatedRemovals(item.getProcessId(), userList, workStepService, iWorkStepPermissionService, permissionStreamService, "process_id");
+                handleRelatedRemovals(item.getProcessId(), userList, workStepService, iWorkStepPermissionService, permissionStreamNewService, "process_id");
             });
         }
     }
@@ -1809,7 +1949,7 @@
         List<WorkStep> workStepList = workStepService.getByProcessIds(productId, processIds);
         if (workStepList!=null){
             workStepList.forEach(item->{
-                handleRelatedDepartmentRemovals(item.getProcessId(), mdcProductionList, workStepService, workStepDepartmentService, permissionStreamService, "process_id");
+                handleRelatedDepartmentRemovals(item.getProcessId(), mdcProductionList, workStepService, workStepDepartmentService, permissionStreamNewService, "process_id");
             });
         }
     }
@@ -1820,8 +1960,30 @@
         handleComponentRemovals(componentIds, userList);
         handlePartsRemovals(productInfo.getProductId(), componentIds, userList);
         componentInfoList.forEach(item->{
-            handlePartsRelatedRemovals(item,null, userList);
+            handleProcessSpecVersionRelatedRemovals(item,null, userList);
         });
+    }
+
+    private void handlePartRelatedRemovals(PartsInfo partsInfo, Collection<SysUser> userList) {
+        List<ProcessSpecVersion> processSpecVersions = processSpecVersionService.getByPartsId(partsInfo.getPartsId());
+        if (processSpecVersions!=null){
+            List<String> psvIds = processSpecVersions.stream().map(ProcessSpecVersion::getId).collect(Collectors.toList());
+            handleProcessSpecVersionRemovals(psvIds, userList);
+            processSpecVersions.forEach(item->{
+                handleProcessSpecVersionRelatedRemovals(null,item, userList);
+            });
+        }
+    }
+
+    private void handlePartRelatedDepartmentRemovals(PartsInfo partsInfo, Collection<MdcProduction> mdcProductionList) {
+        List<ProcessSpecVersion> processSpecVersions = processSpecVersionService.getByPartsId(partsInfo.getPartsId());
+        if (processSpecVersions!=null){
+            List<String> psvIds = processSpecVersions.stream().map(ProcessSpecVersion::getId).collect(Collectors.toList());
+            handleProcessSpecVersionDepartmentRemovals(psvIds, mdcProductionList);
+            processSpecVersions.forEach(item->{
+                handleProcessSpecVersionRelatedDepartmentRemovals(null,item, mdcProductionList);
+            });
+        }
     }
 
     private void handleProductRelatedDepartmentRemovals(ProductInfo productInfo, Collection<MdcProduction> mdcProductionList) {
@@ -1830,7 +1992,7 @@
         handleComponentDepartmentRemovals(componentIds, mdcProductionList);
         handlePartsDepartmentRemovals(productInfo.getProductId(), componentIds, mdcProductionList);
         componentInfoList.forEach(item->{
-            handlePartsRelatedDepartmentRemovals(item,null, mdcProductionList);
+            handleProcessSpecVersionRelatedDepartmentRemovals(item,null, mdcProductionList);
         });
     }
 
@@ -1840,15 +2002,46 @@
         }
         List<String> userIdList = userList.stream().map(SysUser::getId).collect(Collectors.toList());
         List<ComponentPermission> componentPermissions = componentPermissionService.getByComponentIdsAndUserIds(componentIds, userIdList);
-        List<PermissionStream> permissionStreams = permissionStreamService.getByComponentIdsAndUserIds(componentIds, userIdList);
+        List<PermissionStreamNew> permissionStreams = permissionStreamNewService.loadPermissionStreamNewByBusinessIdsAndUserIds(componentIds, userIdList,"2");
 
         if (!componentPermissions.isEmpty()) {
             componentPermissionService.removeByCollection(componentPermissions);
         }
         if (!permissionStreams.isEmpty()) {
-            permissionStreamService.removeByCollection(permissionStreams);
+            permissionStreamNewService.deletePermissionStreamNewByList(permissionStreams);
         }
     }
+
+    private void handleProcessSpecVersionRemovals(List<String> psvIds, Collection<SysUser> userList) {
+        if (psvIds.isEmpty()) {
+            return;
+        }
+        List<String> userIdList = userList.stream().map(SysUser::getId).collect(Collectors.toList());
+        List<ProcessSpecVersionPermission> processSpecVersionPermissions = processSpecVersionPermissionService.getByPsvIdsAndUserIds(psvIds, userIdList);
+        List<PermissionStreamNew> permissionStreams = permissionStreamNewService.loadPermissionStreamNewByBusinessIdsAndUserIds(psvIds, userIdList,"4");
+        if (!processSpecVersionPermissions.isEmpty()) {
+            processSpecVersionPermissionService.removeByCollection(processSpecVersionPermissions);
+        }
+        if (!permissionStreams.isEmpty()) {
+            permissionStreamNewService.deletePermissionStreamNewByList(permissionStreams);
+        }
+    }
+
+    private void handleProcessSpecVersionDepartmentRemovals(List<String> psvIds, Collection<MdcProduction> mdcProductionList) {
+        if (psvIds.isEmpty()) {
+            return;
+        }
+        List<String> departmentIdList = mdcProductionList.stream().map(MdcProduction::getId).collect(Collectors.toList());
+        List<ProcessSpecVersionDepartment> processSpecVersionDepartments =processSpecVersionDepartmentService.getByPsvIdsAndDepartIds(psvIds, departmentIdList);
+        List<PermissionStreamNew> permissionStreams = permissionStreamNewService.loadPermissionStreamNewByBusinessIdsAndDepartIds(psvIds, departmentIdList,"4");
+        if (!processSpecVersionDepartments.isEmpty()) {
+            processSpecVersionDepartmentService.removeByCollection(processSpecVersionDepartments);
+        }
+        if (!permissionStreams.isEmpty()) {
+            permissionStreamNewService.deletePermissionStreamNewByList(permissionStreams);
+        }
+    }
+
 
     private void handleComponentDepartmentRemovals(List<String> componentIds, Collection<MdcProduction> mdcProductionList) {
         if (componentIds.isEmpty()) {
@@ -1856,28 +2049,29 @@
         }
         List<String> departmentIdList = mdcProductionList.stream().map(MdcProduction::getId).collect(Collectors.toList());
         List<ComponentDepartment> componentDepartments = componentDepartmentService.getByComponentIdsAndDepartIds(componentIds, departmentIdList);
-        List<PermissionStream> permissionStreams = permissionStreamService.getByComponentIdsAndDepartIds(componentIds, departmentIdList);
+        List<PermissionStreamNew> permissionStreams = permissionStreamNewService.loadPermissionStreamNewByBusinessIdsAndDepartIds(componentIds, departmentIdList,"2");
 
         if (!componentDepartments.isEmpty()) {
             componentDepartmentService.removeByCollection(componentDepartments);
         }
         if (!permissionStreams.isEmpty()) {
-            permissionStreamService.removeByCollection(permissionStreams);
+            permissionStreamNewService.deletePermissionStreamNewByList(permissionStreams);
         }
     }
 
-    private void handlePartsRemovals(String productId, List<String> componentIds, Collection<SysUser> userList) {
+    private void handlePartsRemovals(String productId, List<String> componentIds,Collection<SysUser> userList) {
         List<PartsInfo> partsInfoList = partsInfoService.getByComponentIdList(productId, componentIds);
         partsInfoList.forEach(item->{
             partsInfoService.assignRemoveUser(item,userList);
-            handlePartsRelatedRemovals(null,item, userList);
+            //鍒犻櫎
+            handlePartRelatedRemovals(item, userList);
         });
     }
     private void handlePartsDepartmentRemovals(String productId, List<String> componentIds, Collection<MdcProduction> mdcProductionList) {
         List<PartsInfo> partsInfoList = partsInfoService.getByComponentIdList(productId, componentIds);
         partsInfoList.forEach(item->{
             partsInfoService.assignRemoveDepart(item,mdcProductionList);
-            handlePartsRelatedDepartmentRemovals(null,item, mdcProductionList);
+            handlePartRelatedDepartmentRemovals(item, mdcProductionList);
         });
     }
 
@@ -1893,7 +2087,7 @@
             handlePartsDepartmentRemovals(componentInfo.getProductId(), componentIds, mdcProductionList);
             if (childrenList != null) {
                 childrenList.forEach(item->{
-                    handlePartsRelatedDepartmentRemovals(item,null, mdcProductionList);
+                    handleProcessSpecVersionRelatedDepartmentRemovals(item,null, mdcProductionList);
                 });
             }
         }else {
@@ -1901,21 +2095,21 @@
             handlePartsRemovals(componentInfo.getProductId(), componentIds, userList);
             if (childrenList != null) {
                 childrenList.forEach(item->{
-                    handlePartsRelatedRemovals(item,null, userList);
+                    handleProcessSpecVersionRelatedRemovals(item,null, userList);
                 });
             }
         }
     }
 
-    private void handlePartsRelatedDepartmentRemovals(ComponentInfo componentInfo,PartsInfo partsInfo, Collection<MdcProduction> mdcProductionList) {
+    private void handleProcessSpecVersionRelatedDepartmentRemovals(ComponentInfo componentInfo,ProcessSpecVersion processSpecVersion, Collection<MdcProduction> mdcProductionList) {
         List<ProcessStream> processStreamList=new ArrayList<>();
         String productId="";
         if (componentInfo!=null){
             processStreamList = processStreamService.list(new QueryWrapper<ProcessStream>().eq("component_id", componentInfo.getComponentId()));
             productId=componentInfo.getProductId();
         }else {
-            processStreamList = processStreamService.list(new QueryWrapper<ProcessStream>().eq("parts_id", partsInfo.getPartsId()));
-            productId=partsInfo.getProductId();
+            processStreamList = processStreamService.list(new QueryWrapper<ProcessStream>().eq("psv_id", processSpecVersion.getId()));
+            productId=processSpecVersion.getProductId();
         }
         List<String> processIds = processStreamList.stream().map(ProcessStream::getProcessId).collect(Collectors.toList());
         handleProcessDepartmentRemovals(processIds, mdcProductionList);

--
Gitblit v1.9.3