From f2f8241dd52ef12ec109f6f4f0f13042055338ac Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期五, 14 二月 2025 14:55:56 +0800
Subject: [PATCH] 修改指派设备 修改设备结构树权限 优化查询 优化排序

---
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java                                     |    7 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceGroupPermissionService.java                       |   18 +
 lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/service/impl/AssignFileStreamServiceImpl.java               |   92 ++++-
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocRelativeServiceImpl.java                         |   10 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProcessInfoCode.java                                    |    4 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/DncDevicePermissionMapper.java                            |   13 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceInfoService.java                                  |   10 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ComponentInfoCode.java                                  |    1 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceGroupPermissionServiceImpl.java               |   94 +++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java                     |   21 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceInfoServiceImpl.java                          |  145 +++++----
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java                        |   29 +
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProductInfoCode.java                                    |    3 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java                            |   31 +
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPermissionStreamService.java                            |   10 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamServiceImpl.java                    |   13 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ComponentPermissionMapper.xml                         |   21 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java                         |   42 +
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProductInfoService.java                                 |    8 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/PartsInfoCode.java                                      |    1 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IWorkStepService.java                                    |    7 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/entity/AssignFileStream.java                                |    8 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java                                 |   18 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java                       |   27 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/utils/CamelToSnakeRegex.java                                     |   20 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcProductionEquipmentService.java                      |   11 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java                           |   20 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java |   21 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/DncDeviceGroupPermissionMapper.java |   13 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/DncDevicePermission.java                                  |   29 +
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java                             |   89 ++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/DncDeviceGroupPermission.java       |   29 +
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProductInfoController.java                            |   18 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcProductionEquipmentServiceImpl.java              |   30 +
 34 files changed, 722 insertions(+), 191 deletions(-)

diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/entity/AssignFileStream.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/entity/AssignFileStream.java
index 4c8896c..004f4fa 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/entity/AssignFileStream.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/entity/AssignFileStream.java
@@ -25,6 +25,8 @@
     private String partsId;
     @TableField(value = "process_id")
     private String processId;
+    @TableField(value = "step_id")
+    private String stepId;
     @TableField(value = "doc_id")
     private String docId;
     @TableField(value = "file_id")
@@ -64,4 +66,10 @@
     @TableLogic
     @TableField(value = "delete_flag", select = false)
     private Integer deleteFlag = 0;
+
+    /**鎸囨淳璁惧涓撶敤-鎵�灞濱D*/
+    private transient String attributionId;
+
+    /**鎸囨淳璁惧涓撶敤-鎵�灞瀟ype*/
+    private transient String attributionType;
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/service/impl/AssignFileStreamServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/service/impl/AssignFileStreamServiceImpl.java
index e1c09c3..9e4f927 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/service/impl/AssignFileStreamServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/service/impl/AssignFileStreamServiceImpl.java
@@ -71,6 +71,8 @@
     @Autowired
     private IProcessStreamService processStreamService;
     @Autowired
+    private IWorkStepService workStepService;
+    @Autowired
     private IPermissionStreamService permissionStreamService;
     @Autowired
     private IDepartmentService departmentService;
@@ -195,16 +197,17 @@
         //鏍¢獙寮�濮�
         if(stream == null)
             ExceptionCast.cast(CommonCode.INVALID_PARAM);
-        if(!ValidateUtil.validateString(stream.getProcessId()) || !ValidateUtil.validateString(stream.getDocId())
-                || !ValidateUtil.validateString(stream.getFileId()))
+        if(!ValidateUtil.validateString(stream.getAttributionId()) || !ValidateUtil.validateString(stream.getDocId())
+                || !ValidateUtil.validateString(stream.getFileId())||!ValidateUtil.validateString(stream.getAttributionType()) )
             ExceptionCast.cast(ActivitiCode.ACT_BUSINESS_SAVE_ERROR);
         if(!ValidateUtil.validateString(stream.getDeviceId()))
             ExceptionCast.cast(ActivitiCode.ACT_ASSIGN_DEVICE_NONE);
-                LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = user.getId();
         if(!ValidateUtil.validateString(userId))
             ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST);
-        DocInfo docInfo = docInfoService.getByDocAttrAndDocId(stream.getDocId(), 5, stream.getProcessId());
+        //淇敼涓哄墠绔紶鍏�
+        DocInfo docInfo = docInfoService.getByDocAttrAndDocId(stream.getDocId(), Integer.parseInt(stream.getAttributionType()), stream.getAttributionId());
         if(docInfo == null || docInfo.getDocStatus() == 3)
             ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR);
         DeviceInfo deviceInfo = deviceInfoService.getById(stream.getDeviceId());
@@ -315,8 +318,8 @@
     public ResponseResult applyAssignFileNonActive(AssignFileStream stream) {
         if(stream == null)
             ExceptionCast.cast(CommonCode.INVALID_PARAM);
-        if(!ValidateUtil.validateString(stream.getProcessId()) || !ValidateUtil.validateString(stream.getDocId())
-                || !ValidateUtil.validateString(stream.getFileId()))
+        if(!ValidateUtil.validateString(stream.getAttributionId()) || !ValidateUtil.validateString(stream.getDocId())
+                || !ValidateUtil.validateString(stream.getFileId())||!ValidateUtil.validateString(stream.getAttributionType()))
             ExceptionCast.cast(CommonCode.INVALID_PARAM);
         if(!ValidateUtil.validateString(stream.getDeviceId()))
             ExceptionCast.cast(ActivitiCode.ACT_ASSIGN_DEVICE_NONE);
@@ -324,7 +327,7 @@
         String userId = user.getId();
         if(!ValidateUtil.validateString(userId))
             ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST);
-        DocInfo docInfo = docInfoService.getByDocAttrAndDocId(stream.getDocId(), 5, stream.getProcessId());
+        DocInfo docInfo = docInfoService.getByDocAttrAndDocId(stream.getDocId(), Integer.parseInt(stream.getAttributionType()), stream.getAttributionId());
         if(docInfo == null || docInfo.getDocStatus() == 3)
             ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR);
 
@@ -356,29 +359,62 @@
                         docFile.getFileName(), docFile.getFileSuffix());
             }
         }*/
-        ProcessStream processStream = processStreamService.getById(stream.getProcessId());
-        if(processStream == null)
-            ExceptionCast.cast(CommonCode.INVALID_PARAM);
-        stream.setProductId(processStream.getProductId());
-        stream.setComponentId(processStream.getComponentId());
-        stream.setPartsId(processStream.getPartsId());
-        List<PermissionStream> permissionStreams = null;
-        if(ValidateUtil.validateString(processStream.getPartsId())) {
-            //杩涘叆闆朵欢
-            permissionStreams = permissionStreamService.getByPartsId(stream.getProductId(), stream.getComponentId(), stream.getPartsId());
-        }else if(ValidateUtil.validateString(processStream.getComponentId())) {
-            //杩涘叆閮ㄤ欢鐨勫鐞�
-            permissionStreams = permissionStreamService.getByComponentId(stream.getProductId(), stream.getComponentId());
-        }
-        if(permissionStreams == null || permissionStreams.isEmpty())
-            ExceptionCast.cast(ActivitiCode.ACT_NODE_DEPART_NONE);
         List<String> departIds = new ArrayList<>();
-        Map<String, Department> map = departmentService.getMapByUserId(userId);
-        permissionStreams.forEach(item -> {
-            if(map.containsKey(item.getDepartId())) {
-                departIds.add(item.getDepartId());
+        if (stream.getAttributionType().equals("5")){
+            //宸ュ簭
+            ProcessStream processStream = processStreamService.getById(stream.getAttributionId());
+            if(processStream == null)
+                ExceptionCast.cast(CommonCode.INVALID_PARAM);
+            stream.setProductId(processStream.getProductId());
+            stream.setComponentId(processStream.getComponentId());
+            stream.setPartsId(processStream.getPartsId());
+            stream.setProcessId(stream.getAttributionId());
+            List<PermissionStream> permissionStreams = null;
+            if(ValidateUtil.validateString(processStream.getPartsId())) {
+                //杩涘叆闆朵欢
+                permissionStreams = permissionStreamService.getByPartsId(stream.getProductId(), stream.getComponentId(), stream.getPartsId());
+            }else if(ValidateUtil.validateString(processStream.getComponentId())) {
+                //杩涘叆閮ㄤ欢鐨勫鐞�
+                permissionStreams = permissionStreamService.getByComponentId(stream.getProductId(), stream.getComponentId());
             }
-        });
+            if(permissionStreams == null || permissionStreams.isEmpty())
+                ExceptionCast.cast(ActivitiCode.ACT_NODE_DEPART_NONE);
+            Map<String, Department> map = departmentService.getMapByUserId(userId);
+            permissionStreams.forEach(item -> {
+                if(map.containsKey(item.getDepartId())) {
+                    departIds.add(item.getDepartId());
+                }
+            });
+        }else{
+            //宸ユ
+            WorkStep workStep=workStepService.getById(stream.getAttributionId());
+            if(workStep == null)
+                ExceptionCast.cast(CommonCode.INVALID_PARAM);
+            stream.setProductId(workStep.getProductId());
+            stream.setComponentId(workStep.getComponentId());
+            stream.setPartsId(workStep.getPartsId());
+            stream.setProcessId(workStep.getProcessId());
+            stream.setProcessId(stream.getAttributionId());
+            List<PermissionStream> permissionStreams = null;
+            if(ValidateUtil.validateString(workStep.getProcessId())) {
+                //杩涘叆宸ュ簭
+                permissionStreams=permissionStreamService.getByProcessId(stream.getProductId(), stream.getComponentId(), stream.getPartsId(),stream.getProcessId());
+            }else if(ValidateUtil.validateString(workStep.getPartsId())) {
+                //杩涘叆闆朵欢
+                permissionStreams = permissionStreamService.getByPartsId(stream.getProductId(), stream.getComponentId(), stream.getPartsId());
+            }else if(ValidateUtil.validateString(workStep.getComponentId())) {
+                //杩涘叆閮ㄤ欢鐨勫鐞�
+                permissionStreams = permissionStreamService.getByComponentId(stream.getProductId(), stream.getComponentId());
+            }
+            if(permissionStreams == null || permissionStreams.isEmpty())
+                ExceptionCast.cast(ActivitiCode.ACT_NODE_DEPART_NONE);
+            Map<String, Department> map = departmentService.getMapByUserId(userId);
+            permissionStreams.forEach(item -> {
+                if(map.containsKey(item.getDepartId())) {
+                    departIds.add(item.getDepartId());
+                }
+            });
+        }
         if(departIds.isEmpty())
             ExceptionCast.cast(ActivitiCode.ACT_USER_NOT_PERM);
         //deviceDoc = docInfoService.findByAttrAndDocName(docInfo.getDocName(), 4, stream.getDeviceId());
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProductInfoController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProductInfoController.java
index 2018e31..e2292a0 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProductInfoController.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProductInfoController.java
@@ -5,6 +5,7 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.vo.LoginUser;
@@ -254,4 +255,21 @@
             list = Collections.emptyList();
         return new QueryListResponseResult<>(CommonCode.SUCCESS, list);
     }
+
+    /**
+     * 浜у搧缁撴瀯鏍�-閫氳繃绫诲瀷灏辫鍒犻櫎
+     * @param id
+     * @param type
+     * @return
+     */
+    @AutoLog(value = "浜у搧缁撴瀯鏍�-閫氳繃绫诲瀷灏辫鍒犻櫎")
+    @ApiOperation(value = "浜у搧缁撴瀯鏍�-閫氳繃绫诲瀷灏辫鍒犻櫎", notes = "浜у搧缁撴瀯鏍�-閫氳繃绫诲瀷灏辫鍒犻櫎")
+    @DeleteMapping("/delete/{id}/{type}")
+    public Result<?> deleteProductTreeByType(@PathVariable("id") String id, @PathVariable("type") Integer type) {
+        boolean b =productInfoService.deleteProductTree(id, type);
+        if (b){
+            return Result.ok("鍒犻櫎鎴愬姛锛�");
+        }
+        return Result.error("鍒犻櫎澶辫触锛�");
+    }
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ComponentPermissionMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ComponentPermissionMapper.xml
index 6692cfe..939a01b 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ComponentPermissionMapper.xml
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ComponentPermissionMapper.xml
@@ -2,26 +2,25 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="org.jeecg.modules.dnc.mapper.ComponentPermissionMapper">
     <select id="getUserPermsByComponentId" resultType="org.jeecg.modules.dnc.ucenter.UserDepartExt" parameterType="String">
-        select u.user_id
+        select u.id
         , u.username
-        , u.nickname
-        , u.user_pic
-        , u.phone_no
+        , u.realname
+        , u.phone
         , u.email
         from sys_user u
         inner join
         (select user_id from nc_component_permission where component_id=#{componentId}) p
-        on u.user_id=p.user_id
+        on u.id=p.user_id
     </select>
 
     <select id="getUserNonPermsByComponentId" resultType="org.jeecg.modules.system.entity.SysUser" parameterType="String">
-        select u.user_id
-        , u.username
-        , u.nickname
-        , u.user_pic
-        , u.phone_no
+        select u.id
+             , u.username
+             , u.realname
+             , u.phone
+             , u.email
         , u.email
         from sys_user u
-        where u.user_id not in (select user_id from nc_component_permission where component_id=#{componentId})
+        where u.id not in (select user_id from nc_component_permission where component_id=#{componentId})
     </select>
 </mapper>
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java
index 5040b66..a574652 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java
@@ -1,9 +1,11 @@
 package org.jeecg.modules.dnc.request;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.jeecg.common.aspect.annotation.Dict;
 
 @Data
 @NoArgsConstructor
@@ -15,15 +17,21 @@
     private String attributionId;
     @ApiModelProperty(value = "鏂囨。鍒嗙被 NC=NC鏂囨。 OTHER=鍏朵粬鏂囨。 SEND=璁惧鍙戦�佹枃妗� REC=璁惧鎺ュ彈鏂囨。", example = "NC", required = true)
     private String docClassCode;
-    //鎺掑簭瀛楁
-    @ApiModelProperty(value = "闄嶅簭鎺掑垪 鎺掑簭瀛楁涓烘暟鎹簱鍏蜂綋瀛楁鍚嶏紝闇�瑕佽В鏋愶紱 澶氫釜瀛楁浠ヨ嫳鏂囬�楀彿鍒嗛殧")
-    private String descStr;
-    @ApiModelProperty(value = "鍗囧簭鎺掑垪 鎺掑簭瀛楁涓烘暟鎹簱鍏蜂綋瀛楁鍚嶏紝闇�瑕佽В鏋愶紱 澶氫釜瀛楁浠ヨ嫳鏂囬�楀彿鍒嗛殧")
-    private String ascStr;
     @ApiModelProperty(value = "NC鏂囦欢鍚嶇О")
     private String docName;
     @ApiModelProperty(value = "涓婁紶鏃堕棿寮�濮�")
     private String startTime;
     @ApiModelProperty(value = "涓婁紶鏃堕棿缁撴潫")
     private String endTime;
+    //鎺掑簭瀛楁
+    @ApiModelProperty(value = "鎺掑簭瀛楁")
+    private String column;
+    @ApiModelProperty(value = "鎺掑簭")
+    private String order;
+    @ApiModelProperty(value = "鏂囨。鐘舵��")
+    private String docStatus;
+    @ApiModelProperty(value = "鍑哄簱鐘舵��")
+    private String pullStatus;
+    @ApiModelProperty(value = "鍚屾鐘舵�� 1 鏈悓姝� 2 宸插悓姝�")
+    private Integer syncStatus;
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ComponentInfoCode.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ComponentInfoCode.java
index 416e805..330404b 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ComponentInfoCode.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ComponentInfoCode.java
@@ -16,6 +16,7 @@
     COMPONENT_CHILD_EXIST(false, 25108, "閮ㄤ欢瀛樺湪瀛愰儴浠讹紒"),
     COMPONENT_PARTS_EXIST(false, 25109, "閮ㄤ欢鏈夊叧鑱旂殑闆朵欢淇℃伅锛�"),
     COMPONENT_PROCESS_EXIST(false, 25110, "閮ㄤ欢鏈夊叧鑱旂殑宸ュ簭淇℃伅锛�"),
+    COMPONENT_DOC_EXIST(false, 25116, "閮ㄤ欢鏈夊叧鑱旂殑鏂囨。淇℃伅锛�"),
     COMPONENT_CODE_NONE(false, 25111, "璇疯緭鍏ラ儴浠朵唬鍙凤紒"),
     COMPONENT_IS_EXIST(false, 25112, "閮ㄤ欢宸插瓨鍦紒"),
     COMPONENT_PN_NOT_VALID(false, 25113, "PN鐮佷笉鍚堟硶锛�"),
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/PartsInfoCode.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/PartsInfoCode.java
index 905032a..da32471 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/PartsInfoCode.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/PartsInfoCode.java
@@ -13,6 +13,7 @@
     PARTS_USER_NOT_PERM(false,25205,"娌℃湁璇ラ浂浠剁殑鏉冮檺锛�"),
     PARTS_DELETE_ERROR(false,25206,"鍒犻櫎闆朵欢澶辫触锛�"),
     PARTS_PROCESS_EXIST(false,25207,"闆朵欢鏈夊叧鑱旂殑宸ュ簭淇℃伅锛�"),
+    PARTS_DOC_EXIST(false,25208,"闆朵欢鏈夊叧鑱旂殑鏂囨。鏁版嵁"),
     PARTS_CODE_NONE(false,25208,"璇疯緭鍏ラ浂浠朵唬鍙凤紒"),
     PARTS_IS_EXIST(false,25209,"闆朵欢宸插瓨鍦紒"),
     PARTS_USER_NONE(false,25210,"闆朵欢鏃犳硶娓呯┖鐢ㄦ埛鏉冮檺锛岃鑷冲皯淇濈暀涓�浣嶅彲鎿嶄綔鐢ㄦ埛锛�");
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProcessInfoCode.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProcessInfoCode.java
index 9d953b6..fb21cf8 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProcessInfoCode.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProcessInfoCode.java
@@ -16,7 +16,9 @@
     PROCESS_IS_EXIST(false,25408,"璇ュ伐搴忓凡瀛樺湪锛�"),
     WORKSTEP_NAME_NONE(false,25409,"璇疯緭鍏ュ伐姝ュ悕绉帮紒"),
     WORKSTEP_NOT_EXIST(false,25410,"鏃犳晥鐨勫伐姝ワ紒"),
-    WORKSTEP_IS_EXIST(false,25411,"璇ュ伐姝ュ凡瀛樺湪锛�");
+    WORKSTEP_IS_EXIST(false,25411,"璇ュ伐姝ュ凡瀛樺湪锛�"),
+    WORKSTEP_HAS_DATA(false,25412,"宸ユ涓嬫湁鍏宠仈鐨勫伐搴忔暟鎹�"),
+    WORKSTEP_HAS_DOC(false,25413,"宸ユ涓嬫湁鍏宠仈鐨勬枃妗f暟鎹�");
 
     //鎿嶄綔浠g爜
     @ApiModelProperty(value = "鎿嶄綔鏄惁鎴愬姛", example = "true", required = true)
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProductInfoCode.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProductInfoCode.java
index be905d9..556fd8b 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProductInfoCode.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProductInfoCode.java
@@ -18,7 +18,8 @@
     PRODUCT_COMPONENT_EXIST(false, 25010, "浜у搧鏈夊叧鑱旂殑閮ㄤ欢鏁版嵁锛�"),
     PRODUCT_PARTS_EXIST(false, 25011, "浜у搧鏈夊叧鑱旂殑闆朵欢鏁版嵁锛�"),
     PRODUCT_PROCESS_EXIST(false, 25012, "浜у搧鏈夊叧鑱旂殑宸ュ簭鏁版嵁锛�"),
-    PRODUCT_NO_NONE(false,25013,"璇疯緭鍏ヤ骇鍝佷唬鍙凤紒"),
+    PRODUCT_DOC_EXIST(false, 25013, "浜у搧鏈夊叧鑱旂殑鏂囨。鏁版嵁锛�"),
+    PRODUCT_NO_NONE(false,25016,"璇疯緭鍏ヤ骇鍝佷唬鍙凤紒"),
     PRODUCT_IS_EXIST(false,25014,"浜у搧宸插瓨鍦紒"),
     PRODUCT_USER_NONE(false,25015,"浜у搧鏃犳硶娓呯┖鐢ㄦ埛鏉冮檺锛岃鑷冲皯淇濈暀涓�浣嶅彲鎿嶄綔鐢ㄦ埛锛�");
 
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceGroupPermissionService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceGroupPermissionService.java
index cd4cfb7..e46d251 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceGroupPermissionService.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceGroupPermissionService.java
@@ -3,8 +3,10 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.dnc.entity.DeviceGroupPermission;
 import org.jeecg.modules.dnc.ucenter.UserDepartExt;
+import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.SysUser;
 
+import java.util.Collection;
 import java.util.List;
 
 public interface IDeviceGroupPermissionService extends IService<DeviceGroupPermission> {
@@ -50,4 +52,20 @@
      * @return
      */
     List<DeviceGroupPermission> getByGroupId(String groupId);
+
+    /**
+     * 鍒嗛厤璁惧鐢ㄦ埛
+     * @param mdcProduction
+     * @param userList
+     * @return
+     */
+    boolean assignAddUser(MdcProduction mdcProduction, Collection<SysUser> userList);
+
+    /**
+     * 鍒犻櫎璁惧鐢ㄦ埛
+     * @param mdcProduction
+     * @param userList
+     * @return
+     */
+    boolean assignRemoveUser(MdcProduction mdcProduction, Collection<SysUser> userList);
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceInfoService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceInfoService.java
index 79ddf8a..a00ad88 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceInfoService.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceInfoService.java
@@ -4,6 +4,8 @@
 import org.jeecg.modules.dnc.entity.DeviceInfo;
 import org.jeecg.modules.dnc.response.CommonGenericTree;
 import org.jeecg.modules.dnc.ucenter.UserDepartExt;
+import org.jeecg.modules.mdc.entity.MdcEquipment;
+import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.SysUser;
 
 import java.util.Collection;
@@ -80,19 +82,19 @@
 
     /**
      * 鍒嗛厤璁惧鐢ㄦ埛
-     * @param deviceInfo
+     * @param mdcEquipment
      * @param userList
      * @return
      */
-    boolean assignAddUser(DeviceInfo deviceInfo, Collection<SysUser> userList);
+    boolean assignAddUser(MdcEquipment mdcEquipment, Collection<SysUser> userList);
 
     /**
      * 鍒犻櫎璁惧鐢ㄦ埛
-     * @param deviceInfo
+     * @param mdcEquipment
      * @param userList
      * @return
      */
-    boolean assignRemoveUser(DeviceInfo deviceInfo, Collection<SysUser> userList);
+    boolean assignRemoveUser(MdcEquipment mdcEquipment, Collection<SysUser> userList);
 
     /**
      * 鏍规嵁涓�缁刧roupId 鏌ユ壘璁惧
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java
index f74e4de..e008f88 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java
@@ -151,6 +151,13 @@
     boolean deleteByProcessId(String processId);
 
     /**
+     * 鍒犻櫎宸ユ涓嬬殑鎵�鏈夋枃妗�
+     * @param stepId
+     * @return
+     */
+    boolean deleteByStepId(String stepId);
+
+    /**
      * 鍒犻櫎鏂囨。淇℃伅
      * @param attrType
      * @param attrId
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPermissionStreamService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPermissionStreamService.java
index 10c6f4b..d0b7f0c 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPermissionStreamService.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPermissionStreamService.java
@@ -76,6 +76,16 @@
     List<PermissionStream> getByPartsId(String productId, String componentId, String partsId);
 
     /**
+     * 鏍规嵁宸ュ簭缂栧彿鏌ユ壘閮ㄩ棬鏉冮檺
+     * @param productId
+     * @param componentId
+     * @param partsId
+     * @param processId
+     * @return
+     */
+    List<PermissionStream> getByProcessId(String productId, String componentId, String partsId, String processId);
+
+    /**
      * 鍒犻櫎鐢ㄦ埛鏉冮檺
      * @param productId
      * @return
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProductInfoService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProductInfoService.java
index 2f57b55..a41713f 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProductInfoService.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProductInfoService.java
@@ -208,5 +208,13 @@
      * @return
      */
     List<CommonGenericTree> searchProductTree(String userId, String queryParam);
+
+    /**
+     * 浜у搧缁撴瀯鏍�-閫氳繃绫诲瀷灏辫鍒犻櫎
+     * @param id
+     * @param type
+     * @return
+     */
+    boolean deleteProductTree(String id, Integer type);
 }
 
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IWorkStepService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IWorkStepService.java
index 5a20188..7f5333d 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IWorkStepService.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IWorkStepService.java
@@ -75,4 +75,11 @@
      * @return
      */
     boolean assignRemoveDepart(WorkStep workStep, Collection<MdcProduction> departmentList);
+
+    /**
+     * 鍒犻櫎宸ユ淇℃伅 閫昏緫鍒犻櫎
+     * @param id
+     * @return
+     */
+    boolean deleteWorkStep(String id);
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java
index 1f9d254..ef7d501 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java
@@ -2,6 +2,7 @@
 
 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 org.apache.shiro.SecurityUtils;
@@ -52,6 +53,8 @@
     private IDocInfoService docInfoService;
     @Autowired
     private INcLogInfoService iNcLogInfoService;
+    @Autowired
+    private IDocRelativeService iDocRelativeService;
 
     @Override
     @Transactional(rollbackFor = {Exception.class})
@@ -297,18 +300,12 @@
         if(processStreamList != null && !processStreamList.isEmpty()) {
             ExceptionCast.cast(ComponentInfoCode.COMPONENT_PROCESS_EXIST);
         }
-        //娣诲姞鏃ュ織
-        NcLogInfo ncLogInfo = new NcLogInfo();
-        //妯″潡
-        ncLogInfo.setModuleInfo("浜у搧缁撴瀯鏍�");
-        //绫诲瀷
-        ncLogInfo.setOperateType(4);
-        //鏃ュ織鍐呭
-        ncLogInfo.setLogContent("閮ㄤ欢鍚嶇О锛�"+componentInfo.getComponentName());
-        iNcLogInfoService.saveLogNcInfos(ncLogInfo);
-        boolean b = docInfoService.deleteByComponentId(id);
-        if(!b)
-            ExceptionCast.cast(CommonCode.FAIL);
+        boolean b;
+        //楠岃瘉鏄惁瀛樺湪鏂囨。
+        List<DocRelative> docRelativeList=iDocRelativeService.list(new QueryWrapper<DocRelative>().eq("attribution_type","2").eq("attribution_id",id));
+        if (!docRelativeList.isEmpty()){
+            ExceptionCast.cast(ComponentInfoCode.COMPONENT_DOC_EXIST);
+        }
         b = componentPermissionService.deleteByComponentId(id);
         if(!b)
             ExceptionCast.cast(CommonCode.FAIL);
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceGroupPermissionServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceGroupPermissionServiceImpl.java
index 34577b1..b790fd1 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceGroupPermissionServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceGroupPermissionServiceImpl.java
@@ -1,23 +1,41 @@
 package org.jeecg.modules.dnc.service.impl;
 
 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 org.jeecg.modules.dnc.entity.DeviceGroup;
 import org.jeecg.modules.dnc.entity.DeviceGroupPermission;
+import org.jeecg.modules.dnc.entity.DevicePermissionStream;
+import org.jeecg.modules.dnc.exception.ExceptionCast;
 import org.jeecg.modules.dnc.mapper.DeviceGroupPermissionMapper;
+import org.jeecg.modules.dnc.response.CommonCode;
+import org.jeecg.modules.dnc.response.DeviceGroupCode;
+import org.jeecg.modules.dnc.service.IDevicePermissionStreamService;
 import org.jeecg.modules.dnc.ucenter.UserDepartExt;
 import org.jeecg.modules.dnc.utils.ValidateUtil;
+import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.dnc.service.IDeviceGroupPermissionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
 @Service
 public class DeviceGroupPermissionServiceImpl extends ServiceImpl<DeviceGroupPermissionMapper, DeviceGroupPermission> implements IDeviceGroupPermissionService {
+    @Autowired
+    @Lazy
+    private IDeviceGroupPermissionService groupPermissionService;
+    @Autowired
+    @Lazy
+    private IDevicePermissionStreamService devicePermissionStreamService;
+
     @Override
     public List<UserDepartExt> getUserPermsByGroupId(String groupId) {
         return super.getBaseMapper().getUserPermsByGroupId(groupId);
@@ -44,7 +62,7 @@
         if(permissions == null || permissions.isEmpty())
             return false;
         if(permissions.size() == 1){
-            super.removeById(permissions.get(0).getGroupPermId());
+            return super.removeById(permissions.get(0).getGroupPermId());
         }
         List<String> ids = new ArrayList<>();
         permissions.forEach(item -> {
@@ -68,4 +86,78 @@
             list = Collections.emptyList();
         return list;
     }
+
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public boolean assignAddUser(MdcProduction mdcProduction, Collection<SysUser> userList) {
+        if(mdcProduction == null || userList == null || userList.isEmpty())
+            ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        List<DeviceGroupPermission> permissionList = new ArrayList<>();
+        List<DevicePermissionStream> permissionStreamList = new ArrayList<>();
+        userList.forEach(item -> {
+            DeviceGroupPermission en = groupPermissionService.getByUserIdAndGroupId(item.getId(), mdcProduction.getId());
+            if(en == null) {
+                en = new DeviceGroupPermission();
+                en.setUserId(item.getId());
+                en.setGroupId(mdcProduction.getId());
+                permissionList.add(en);
+            }
+            DevicePermissionStream stream = devicePermissionStreamService.getByGroupIdAndUserId(mdcProduction.getId(), item.getId());
+            if(stream == null) {
+                stream = new DevicePermissionStream();
+                stream.setUserId(item.getId());
+                stream.setGroupId(mdcProduction.getId());
+                permissionStreamList.add(stream);
+            }
+        });
+        if(!permissionList.isEmpty()) {
+            boolean b = groupPermissionService.saveBatch(permissionList);
+            if(!b) {
+                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
+            }
+        }
+        if(!permissionStreamList.isEmpty()) {
+            boolean b = devicePermissionStreamService.saveBatch(permissionStreamList);
+            if(!b) {
+                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
+            }
+        }
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public boolean assignRemoveUser(MdcProduction mdcProduction, Collection<SysUser> userList) {
+        if(mdcProduction == null || userList == null || userList.isEmpty())
+            ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        List<DeviceGroupPermission> permissionList = new ArrayList<>();
+        List<DevicePermissionStream> permissionStreamList = new ArrayList<>();
+        userList.forEach(item -> {
+            DeviceGroupPermission en = groupPermissionService.getByUserIdAndGroupId(item.getId(), mdcProduction.getId());
+            if(en != null) {
+                permissionList.add(en);
+            }
+            DevicePermissionStream stream = devicePermissionStreamService.getByGroupIdAndUserId(mdcProduction.getId(), item.getId());
+            if(stream != null) {
+                permissionStreamList.add(stream);
+            }
+        });
+        //鏍¢獙娓呯┖璁惧鍒嗙粍鏉冮檺鎿嶄綔
+        List<DeviceGroupPermission> existList = groupPermissionService.getByGroupId(mdcProduction.getId());
+        if(existList.size() <= permissionList.size())
+            ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_USER_NONE);
+        if(!permissionList.isEmpty()) {
+            boolean b = groupPermissionService.removeByCollection(permissionList);
+            if(!b) {
+                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
+            }
+        }
+        if(!permissionStreamList.isEmpty()) {
+            boolean b = devicePermissionStreamService.removeByCollection(permissionStreamList);
+            if(!b) {
+                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
+            }
+        }
+        return true;
+    }
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceInfoServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceInfoServiceImpl.java
index 60a0d52..d55f9d9 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceInfoServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceInfoServiceImpl.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.dnc.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.vo.LoginUser;
@@ -14,7 +15,13 @@
 import org.jeecg.modules.dnc.ucenter.UserDepartExt;
 import org.jeecg.modules.dnc.utils.ValidateUtil;
 import org.jeecg.modules.dnc.entity.*;
+import org.jeecg.modules.mdc.entity.MdcEquipment;
+import org.jeecg.modules.mdc.service.IMdcEquipmentService;
+import org.jeecg.modules.mdc.service.IMdcProductionEquipmentService;
+import org.jeecg.modules.system.entity.MdcProduction;
+import org.jeecg.modules.system.entity.MdcProductionEquipment;
 import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.IMdcProductionService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.jeecg.modules.dnc.response.DeviceCode;
 import org.jeecg.modules.dnc.response.DeviceGroupCode;
@@ -55,6 +62,12 @@
     private IProductInfoService productInfoService;
     @Autowired
     private INcLogInfoService iNcLogInfoService;
+    @Autowired
+    private IMdcProductionService mdcProductionService;
+    @Autowired
+    private IMdcEquipmentService mdcEquipmentService;
+    @Autowired
+    private IMdcProductionEquipmentService mdcProductionEquipmentService;
 
     @Override
     @Transactional(rollbackFor = {Exception.class})
@@ -208,19 +221,19 @@
         if(!ValidateUtil.validateString(userId))
             ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST);
         if(nodeType == 1) {
-            DeviceGroup en = deviceGroupService.getById(paramId);
-            if(en == null) {
+            MdcProduction mdcProduction=mdcProductionService.getById(paramId);
+            if(mdcProduction == null) {
                 ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST);
             }
-            DeviceGroupPermission permission = deviceGroupPermissionService.getByUserIdAndGroupId(userId, en.getGroupId());
+            DeviceGroupPermission permission = deviceGroupPermissionService.getByUserIdAndGroupId(userId, mdcProduction.getId());
             if(permission == null)
                 return false;
             return true;
         }else if(nodeType == 2) {
-            DeviceInfo deviceInfo = super.getById(paramId);
-            if(deviceInfo == null)
+            MdcEquipment mdcEquipment = mdcEquipmentService.getById(paramId);
+            if(mdcEquipment == null)
                 ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST);
-            DevicePermission permission = devicePermissionService.getByUserIdAndDeviceId(userId, deviceInfo.getDeviceId());
+            DevicePermission permission = devicePermissionService.getByUserIdAndDeviceId(userId, mdcEquipment.getId());
             if(permission == null)
                 return false;
             return true;
@@ -270,43 +283,43 @@
             ExceptionCast.cast(CommonCode.INVALID_PARAM);
         if(relativeFlag == 1 && nodeType == 1) {
             //鍒嗛厤鍒嗙粍鏉冮檺鎵嶅彲鍚戜笅浼犻�掔敤鎴�
-            DeviceGroup deviceGroup = deviceGroupService.getById(paramId);
-            if(deviceGroup == null) {
+            MdcProduction mdcProduction= mdcProductionService.getById(paramId);
+            if(mdcProduction == null) {
                 ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST);
             }
-            boolean b1 = checkDevicePerm(1, deviceGroup.getGroupId());
+            boolean b1 = checkDevicePerm(1, mdcProduction.getId());
             if(!b1) {
                 ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
             }
-            b1 = deviceGroupService.assignAddUser(deviceGroup, userList);
+            b1 = deviceGroupPermissionService.assignAddUser(mdcProduction, userList);
             if(!b1) {
                 ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
             }
             //鑾峰彇鍒嗙粍涓嬫墍鏈夌殑瀛愬垎缁�
-            List<DeviceGroup> childrenList = deviceGroupService.getChildrenByParentId(deviceGroup.getGroupId());
+            List<MdcProduction> childrenList = mdcProductionService.queryProdByPid(mdcProduction.getId());
             List<String> childrenIds = new ArrayList<>();
             if(childrenList != null && !childrenList.isEmpty()) {
                 childrenList.forEach(item -> {
-                    childrenIds.add(item.getGroupId());
-                    boolean b = checkDevicePerm(1, item.getGroupId());
+                    childrenIds.add(item.getId());
+                    boolean b = checkDevicePerm(1, item.getId());
                     if(b) {
-                        b = deviceGroupService.assignAddUser(item, userList);
+                        b = deviceGroupPermissionService.assignAddUser(mdcProduction, userList);
                         if(!b) {
                             ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
                         }
                     }
                 });
             }
-            List<DeviceInfo> deviceInfoList = null;
+            List<MdcEquipment> mdcEquipmentList = null;
             if(childrenIds.isEmpty()) {
-                deviceInfoList = getByGroupId(deviceGroup.getGroupId());
+                mdcEquipmentList =mdcProductionEquipmentService.queryEquipmentsOfProduction(mdcProduction.getId());
             }else {
-                childrenIds.add(deviceGroup.getGroupId());
-                deviceInfoList = getByGroupIdList(childrenIds);
+                childrenIds.add(mdcProduction.getId());
+                mdcEquipmentList = mdcProductionEquipmentService.queryEquipmentsOfProductions(childrenIds);
             }
-            if(deviceInfoList != null && !deviceInfoList.isEmpty()) {
-                deviceInfoList.forEach(item -> {
-                    boolean b = checkDevicePerm(2, item.getDeviceId());
+            if(mdcEquipmentList != null && !mdcEquipmentList.isEmpty()) {
+                mdcEquipmentList.forEach(item -> {
+                    boolean b = checkDevicePerm(2, item.getId());
                     if(b) {
                         b = assignAddUser(item, userList);
                         if(!b)
@@ -318,29 +331,29 @@
         }else if(relativeFlag == 2) {
             if(nodeType == 1) {
                 //鍒嗘壒鍒嗙粍鏉冮檺
-                DeviceGroup deviceGroup = deviceGroupService.getById(paramId);
-                if(deviceGroup == null) {
+                MdcProduction mdcProduction = mdcProductionService.getById(paramId);
+                if(mdcProduction == null) {
                     ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST);
                 }
-                boolean b = checkDevicePerm(1, deviceGroup.getGroupId());
+                boolean b = checkDevicePerm(1, mdcProduction.getId());
                 if(!b) {
                     ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
                 }
-                b = deviceGroupService.assignAddUser(deviceGroup, userList);
+                b = deviceGroupPermissionService.assignAddUser(mdcProduction, userList);
                 if(!b) {
                     ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
                 }
                 return true;
             }else if(nodeType == 2) {
                 //鍒嗛厤璁惧鏉冮檺
-                DeviceInfo deviceInfo = super.getById(paramId);
-                if(deviceInfo == null)
+                MdcEquipment mdcEquipment=mdcEquipmentService.getById(paramId);
+                if(mdcEquipment == null)
                     ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST);
-                boolean b = checkDevicePerm(2, deviceInfo.getDeviceId());
+                boolean b = checkDevicePerm(2, mdcEquipment.getId());
                 if(!b) {
                     ExceptionCast.cast(DeviceCode.DEVICE_USER_PERM_ERROR);
                 }
-                b = assignAddUser(deviceInfo, userList);
+                b = assignAddUser(mdcEquipment, userList);
                 if(!b) {
                     ExceptionCast.cast(DeviceCode.DEVICE_USER_PERM_ERROR);
                 }
@@ -352,25 +365,27 @@
 
     @Override
     @Transactional(rollbackFor = {Exception.class})
-    public boolean assignAddUser(DeviceInfo deviceInfo, Collection<SysUser> userList) {
-        if(deviceInfo == null || userList == null || userList.isEmpty())
+    public boolean assignAddUser(MdcEquipment mdcEquipment, Collection<SysUser> userList) {
+        if(mdcEquipment == null || userList == null || userList.isEmpty())
             ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        MdcProductionEquipment mdcProductionEquipment=mdcProductionEquipmentService
+                .list(new QueryWrapper<MdcProductionEquipment>().eq("equipment_id",mdcEquipment.getId())).get(0);
         List<DevicePermission> permissionList = new ArrayList<>();
         List<DevicePermissionStream> permissionStreamList = new ArrayList<>();
         userList.forEach(item -> {
-            DevicePermission en = devicePermissionService.getByUserIdAndDeviceId(item.getId(), deviceInfo.getDeviceId());
+            DevicePermission en = devicePermissionService.getByUserIdAndDeviceId(item.getId(), mdcEquipment.getId());
             if(en == null) {
                 en = new DevicePermission();
                 en.setUserId(item.getId());
-                en.setDeviceId(deviceInfo.getDeviceId());
+                en.setDeviceId(mdcEquipment.getId());
                 permissionList.add(en);
             }
-            DevicePermissionStream stream = devicePermissionStreamService.getByDeviceIdAndUserId(deviceInfo.getGroupId(), deviceInfo.getDeviceId(), item.getId());
+            DevicePermissionStream stream = devicePermissionStreamService.getByDeviceIdAndUserId(mdcProductionEquipment.getId(), mdcEquipment.getId(), item.getId());
             if(stream == null) {
                 stream = new DevicePermissionStream();
                 stream.setUserId(item.getId());
-                stream.setGroupId(deviceInfo.getGroupId());
-                stream.setDeviceId(deviceInfo.getDeviceId());
+                stream.setGroupId(mdcProductionEquipment.getId());
+                stream.setDeviceId(mdcEquipment.getId());
                 permissionStreamList.add(stream);
             }
         });
@@ -391,23 +406,25 @@
 
     @Override
     @Transactional(rollbackFor = {Exception.class})
-    public boolean assignRemoveUser(DeviceInfo deviceInfo, Collection<SysUser> userList) {
-        if(deviceInfo == null || userList == null || userList.isEmpty())
+    public boolean assignRemoveUser(MdcEquipment mdcEquipment, Collection<SysUser> userList) {
+        if(mdcEquipment == null || userList == null || userList.isEmpty())
             ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        MdcProductionEquipment mdcProductionEquipment=mdcProductionEquipmentService
+                .list(new QueryWrapper<MdcProductionEquipment>().eq("equipment_id",mdcEquipment.getId())).get(0);
         List<DevicePermission> permissionList = new ArrayList<>();
         List<DevicePermissionStream> permissionStreamList = new ArrayList<>();
         userList.forEach(item -> {
-            DevicePermission en = devicePermissionService.getByUserIdAndDeviceId(item.getId(), deviceInfo.getDeviceId());
+            DevicePermission en = devicePermissionService.getByUserIdAndDeviceId(item.getId(), mdcEquipment.getId());
             if(en != null) {
                 permissionList.add(en);
             }
-            DevicePermissionStream stream = devicePermissionStreamService.getByDeviceIdAndUserId(deviceInfo.getGroupId(), deviceInfo.getDeviceId(), item.getId());
+            DevicePermissionStream stream = devicePermissionStreamService.getByDeviceIdAndUserId(mdcProductionEquipment.getId(), mdcEquipment.getId(), item.getId());
             if(stream != null) {
                 permissionStreamList.add(stream);
             }
         });
         //鏍¢獙娓呯┖鐢ㄦ埛鏉冮檺
-        List<DevicePermission> existList = devicePermissionService.getByDeviceId(deviceInfo.getDeviceId());
+        List<DevicePermission> existList = devicePermissionService.getByDeviceId(mdcEquipment.getId());
         if(existList.size() <= permissionList.size())
             ExceptionCast.cast(DeviceCode.DEVICE_USER_NONE);
         if(!permissionList.isEmpty()) {
@@ -456,43 +473,43 @@
             ExceptionCast.cast(CommonCode.INVALID_PARAM);
         if(relativeFlag == 1 && nodeType == 1) {
             //鍒嗛厤鍒嗙粍鏉冮檺鎵嶅彲鍚戜笅浼犻�掔敤鎴�
-            DeviceGroup deviceGroup = deviceGroupService.getById(paramId);
-            if(deviceGroup == null) {
+            MdcProduction mdcProduction=mdcProductionService.getById(paramId);
+            if(mdcProduction == null) {
                 ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST);
             }
-            boolean b1 = checkDevicePerm(1, deviceGroup.getGroupId());
+            boolean b1 = checkDevicePerm(1, mdcProduction.getId());
             if(!b1) {
                 ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
             }
-            b1 = deviceGroupService.assignRemoveUser(deviceGroup, userList);
+            b1 = deviceGroupPermissionService.assignRemoveUser(mdcProduction, userList);
             if(!b1) {
                 ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
             }
             //鑾峰彇鍒嗙粍涓嬫墍鏈夌殑瀛愬垎缁�
-            List<DeviceGroup> childrenList = deviceGroupService.getChildrenByParentId(deviceGroup.getGroupId());
+            List<MdcProduction> childrenList = mdcProductionService.queryProdByPid(mdcProduction.getId());
             List<String> childrenIds = new ArrayList<>();
             if(childrenList != null && !childrenList.isEmpty()) {
                 childrenList.forEach(item -> {
-                    childrenIds.add(item.getGroupId());
-                    boolean b = checkDevicePerm(1, item.getGroupId());
+                    childrenIds.add(item.getId());
+                    boolean b = checkDevicePerm(1, item.getId());
                     if(b) {
-                        b = deviceGroupService.assignRemoveUser(item, userList);
+                        b = deviceGroupPermissionService.assignRemoveUser(mdcProduction, userList);
                         if(!b) {
                             ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
                         }
                     }
                 });
             }
-            List<DeviceInfo> deviceInfoList = null;
+            List<MdcEquipment> mdcEquipmentList = null;
             if(childrenIds.isEmpty()) {
-                deviceInfoList = getByGroupId(deviceGroup.getGroupId());
+                mdcEquipmentList =mdcProductionEquipmentService.queryEquipmentsOfProduction(mdcProduction.getId());
             }else {
-                childrenIds.add(deviceGroup.getGroupId());
-                deviceInfoList = getByGroupIdList(childrenIds);
+                childrenIds.add(mdcProduction.getId());
+                mdcEquipmentList = mdcProductionEquipmentService.queryEquipmentsOfProductions(childrenIds);
             }
-            if(deviceInfoList != null && !deviceInfoList.isEmpty()) {
-                deviceInfoList.forEach(item -> {
-                    boolean b = checkDevicePerm(2, item.getDeviceId());
+            if(mdcEquipmentList != null && !mdcEquipmentList.isEmpty()) {
+                mdcEquipmentList.forEach(item -> {
+                    boolean b = checkDevicePerm(2, item.getId());
                     if(b) {
                         b = assignRemoveUser(item, userList);
                         if(!b)
@@ -504,29 +521,29 @@
         }else if(relativeFlag == 2) {
             if(nodeType == 1) {
                 //鍒嗘壒鍒嗙粍鏉冮檺
-                DeviceGroup deviceGroup = deviceGroupService.getById(paramId);
-                if(deviceGroup == null) {
+                MdcProduction mdcProduction = mdcProductionService.getById(paramId);
+                if(mdcProduction == null) {
                     ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST);
                 }
-                boolean b = checkDevicePerm(1, deviceGroup.getGroupId());
+                boolean b = checkDevicePerm(1, mdcProduction.getId());
                 if(!b) {
                     ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
                 }
-                b = deviceGroupService.assignRemoveUser(deviceGroup, userList);
+                b = deviceGroupPermissionService.assignRemoveUser(mdcProduction, userList);
                 if(!b) {
                     ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
                 }
                 return true;
             }else if(nodeType == 2) {
                 //鍒嗛厤璁惧鏉冮檺
-                DeviceInfo deviceInfo = super.getById(paramId);
-                if(deviceInfo == null)
+                MdcEquipment mdcEquipment=mdcEquipmentService.getById(paramId);
+                if(mdcEquipment == null)
                     ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST);
-                boolean b = checkDevicePerm(2, deviceInfo.getDeviceId());
+                boolean b = checkDevicePerm(2, mdcEquipment.getId());
                 if(!b) {
                     ExceptionCast.cast(DeviceCode.DEVICE_USER_PERM_ERROR);
                 }
-                b = assignRemoveUser(deviceInfo, userList);
+                b = assignRemoveUser(mdcEquipment, userList);
                 if(!b) {
                     ExceptionCast.cast(DeviceCode.DEVICE_USER_PERM_ERROR);
                 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java
index 9ebf535..d80aefb 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java
@@ -16,6 +16,7 @@
 import org.jeecg.modules.dnc.exception.ExceptionCast;
 import org.jeecg.modules.dnc.mapper.DocInfoMapper;
 import org.jeecg.modules.dnc.service.*;
+import org.jeecg.modules.dnc.utils.CamelToSnakeRegex;
 import org.jeecg.modules.dnc.utils.ValidateUtil;
 
 
@@ -38,7 +39,9 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class DocInfoServiceImpl extends ServiceImpl<DocInfoMapper, DocInfo> implements IDocInfoService {
@@ -579,11 +582,33 @@
                 queryWrapper.eq(StrUtil.isNotEmpty(docNameArr[1]), "u.doc_suffix", docNameArr[1]);
             }
         }
-        queryWrapper.ge(StrUtil.isNotEmpty(docQuery.getStartTime()),"date_format(u.create_time,'%Y-%m-%d %H:%i:%s')",docQuery.getStartTime());
-        queryWrapper.le(StrUtil.isNotEmpty(docQuery.getEndTime()),"date_format(u.create_time,'%Y-%m-%d %H:%i:%s')",docQuery.getEndTime());
-        queryWrapper.orderByDesc("u.create_time");
+        getDocQuery(docQuery, queryWrapper);
         IPage<DocInfo> docInfoIPage = super.getBaseMapper().findDocExtList(pageData, queryWrapper);
         return Result.ok(docInfoIPage);
+    }
+
+    private void getDocQuery(DocInfoQueryRequest docQuery, QueryWrapper<DocInfo> queryWrapper) {
+        if (docQuery.getDocStatus() != null && docQuery.getDocStatus().contains(",")) {
+            String[] docStatusArray = docQuery.getDocStatus().split(",");
+            List<Integer> docStatusList = Arrays.stream(docStatusArray).map(Integer::parseInt).collect(Collectors.toList());
+            queryWrapper.in("u.doc_status",docStatusList);
+        }else {
+            queryWrapper.eq(StrUtil.isNotEmpty(docQuery.getDocStatus()),"u.doc_status",docQuery.getDocStatus());
+        }
+        if (StrUtil.isNotEmpty(docQuery.getPullStatus())){
+            if (("1").equals(docQuery.getPullStatus())){
+                queryWrapper.isNull("o.doc_id");
+            }else if (("2").equals(docQuery.getPullStatus())){
+                queryWrapper.isNotNull("o.doc_id");
+            }
+        }
+        queryWrapper.ge(StrUtil.isNotEmpty(docQuery.getStartTime()),"u.create_time",docQuery.getStartTime()+" 00:00:00");
+        queryWrapper.le(StrUtil.isNotEmpty(docQuery.getEndTime()),"u.create_time",docQuery.getEndTime()+" 23:59:59");
+        if (("desc").equals(docQuery.getOrder())){
+            queryWrapper.orderByDesc("u."+ CamelToSnakeRegex.camelToSnake(docQuery.getColumn()));
+        }else {
+            queryWrapper.orderByAsc("u."+CamelToSnakeRegex.camelToSnake(docQuery.getColumn()));
+        }
     }
 
     @Override
@@ -674,7 +699,7 @@
     public boolean deleteByProcessId(String processId) {
         if(!ValidateUtil.validateString(processId))
             ExceptionCast.cast(CommonCode.INVALID_PARAM);
-        Integer attrType = 4;
+        Integer attrType = 5;
         boolean b = docFileService.deleteByDocAttr(attrType, processId);
         if(!b)
             ExceptionCast.cast(CommonCode.FAIL);
@@ -683,6 +708,27 @@
             ExceptionCast.cast(CommonCode.FAIL);
         }
         return docRelativeService.deleteByDocAttr(attrType, processId);
+    }
+
+    /**
+     * 鍒犻櫎宸ユ涓嬬殑鎵�鏈夋枃妗�
+     * @param stepId
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public boolean deleteByStepId(String stepId){
+        if(!ValidateUtil.validateString(stepId))
+            ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        Integer attrType = 6;
+        boolean b = docFileService.deleteByDocAttr(attrType, stepId);
+        if(!b)
+            ExceptionCast.cast(CommonCode.FAIL);
+        b = deleteByDocAttr(attrType, stepId);
+        if(!b) {
+            ExceptionCast.cast(CommonCode.FAIL);
+        }
+        return docRelativeService.deleteByDocAttr(attrType, stepId);
     }
 
     @Override
@@ -778,9 +824,34 @@
                 queryWrapper.eq(StrUtil.isNotEmpty(docNameArr[1]), "u.doc_suffix", docNameArr[1]);
             }
         }
-        queryWrapper.ge(StrUtil.isNotEmpty(docQuery.getStartTime()),"date_format(u.create_time,'%Y-%m-%d %H:%i:%s')",docQuery.getStartTime());
-        queryWrapper.le(StrUtil.isNotEmpty(docQuery.getEndTime()),"date_format(u.create_time,'%Y-%m-%d %H:%i:%s')",docQuery.getEndTime());
-        queryWrapper.orderByDesc("u.create_time");
+        if (docQuery.getDocStatus() != null && docQuery.getDocStatus().contains(",")) {
+            String[] docStatusArray = docQuery.getDocStatus().split(",");
+            List<Integer> docStatusList = Arrays.stream(docStatusArray).map(Integer::parseInt).collect(Collectors.toList());
+            queryWrapper.in("u.doc_status",docStatusList);
+        }else {
+            queryWrapper.eq(StrUtil.isNotEmpty(docQuery.getDocStatus()),"u.doc_status",docQuery.getDocStatus());
+        }
+        if (StrUtil.isNotEmpty(docQuery.getPullStatus())){
+            if (("1").equals(docQuery.getPullStatus())){
+                queryWrapper.isNull("o.doc_id");
+            }else if (("2").equals(docQuery.getPullStatus())){
+                queryWrapper.isNotNull("o.doc_id");
+            }
+        }
+        if (docQuery.getSyncStatus()!=null){
+            if (docQuery.getSyncStatus()==1){
+                queryWrapper.isNotNull("t.sync_flag");
+            }else if (docQuery.getSyncStatus()==2){
+                queryWrapper.isNull("t.sync_flag");
+            }
+        }
+        queryWrapper.ge(StrUtil.isNotEmpty(docQuery.getStartTime()),"u.create_time",docQuery.getStartTime()+" 00:00:00");
+        queryWrapper.le(StrUtil.isNotEmpty(docQuery.getEndTime()),"u.create_time",docQuery.getEndTime()+" 23:59:59");
+        if (("desc").equals(docQuery.getOrder())){
+            queryWrapper.orderByDesc("u."+ CamelToSnakeRegex.camelToSnake(docQuery.getColumn()));
+        }else {
+            queryWrapper.orderByAsc("u."+CamelToSnakeRegex.camelToSnake(docQuery.getColumn()));
+        }
         IPage<DocInfo> docInfoIPage = super.getBaseMapper().findDeviceDocExtList(pageData, queryWrapper);
         if (docInfoIPage != null && docInfoIPage.getRecords() != null && !docInfoIPage.getRecords().isEmpty()) {
             for (DocInfo d : docInfoIPage.getRecords()) {
@@ -815,9 +886,7 @@
                 queryWrapper.eq(StrUtil.isNotEmpty(docNameArr[1]), "u.doc_suffix", docNameArr[1]);
             }
         }
-        queryWrapper.ge(StrUtil.isNotEmpty(docQuery.getStartTime()),"date_format(u.create_time,'%Y-%m-%d %H:%i:%s')",docQuery.getStartTime());
-        queryWrapper.le(StrUtil.isNotEmpty(docQuery.getEndTime()),"date_format(u.create_time,'%Y-%m-%d %H:%i:%s')",docQuery.getEndTime());
-        queryWrapper.orderByDesc("u.create_time");
+        getDocQuery(docQuery, queryWrapper);
         return super.getBaseMapper().findDocExtList(queryWrapper);
     }
 
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocRelativeServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocRelativeServiceImpl.java
index 2463c9b..3322582 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocRelativeServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocRelativeServiceImpl.java
@@ -88,11 +88,11 @@
         if (b && docRel) {
             DocInfo info = docInfoMapper.selectById(docId);
             //todo 淇敼涓簃dc璁惧
-            DeviceInfo deviceInfo = deviceInfoService.getById(attrId);
-            List<String> strings =  deviceGroupService.findListParentTreeAll(deviceInfo.getGroupId());
+            MdcEquipment mdcEquipment=iMdcEquipmentService.getById(attrId);
+            List<String> strings =  iMdcProductionService.findListParentTreeAll(mdcEquipment.getId());
             if (strings != null && !strings.isEmpty()) {
                 String path = StringUtils.join(strings.toArray(), "/");
-                boolean deleteFile = FileUtilS.deleteFilePathZip(path + "/"+ deviceInfo.getDeviceNo(),
+                boolean deleteFile = FileUtilS.deleteFilePathZip(path + "/"+ mdcEquipment.getEquipmentId(),
                         info.getDocName(), info.getDocSuffix());
                 if (!deleteFile) {
                     return false;
@@ -118,8 +118,8 @@
                 //澶勭悊鏂囦欢鍚嶇О  鏂囦欢璺緞
 
                 NcTxtFilePathInfo ncTxt = new NcTxtFilePathInfo();
-                ncTxt.setEquipmentId(deviceInfo.getDeviceNo());
-                ncTxt.setFilePath(path + "/"+ deviceInfo.getDeviceNo() + "/" );
+                ncTxt.setEquipmentId(mdcEquipment.getEquipmentId());
+                ncTxt.setFilePath(path + "/"+ mdcEquipment.getEquipmentId() + "/" );
                 ncTxt.setFileTxtName("02A"+DateUtil.format(DateUtil.getNow(),DateUtil.STR_YEARMONTHDAY)+sequence);
                 ncTxt.setOrigFileName(info.getDocName());
                 ncTxt.setOrigFileSuffix(info.getDocSuffix());
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java
index 7b67da4..414797d 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java
@@ -2,6 +2,7 @@
 
 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 org.apache.shiro.SecurityUtils;
@@ -54,6 +55,8 @@
     private IDocInfoService docInfoService;
     @Autowired
     private INcLogInfoService iNcLogInfoService;
+    @Autowired
+    private IDocRelativeService iDocRelativeService;
     @Override
     @Transactional(rollbackFor = {Exception.class})
     public boolean addPartsInfo(PartsInfo partsInfo) {
@@ -273,6 +276,11 @@
         if(processStreams != null && !processStreams.isEmpty())
             ExceptionCast.cast(PartsInfoCode.PARTS_PROCESS_EXIST);
         boolean b = partsPermissionService.deleteByPartsId(partsInfo.getPartsId());
+        //楠岃瘉鏄惁瀛樺湪鏂囨。
+        List<DocRelative> docRelativeList=iDocRelativeService.list(new QueryWrapper<DocRelative>().eq("attribution_type","3").eq("attribution_id",partsId));
+        if (!docRelativeList.isEmpty()){
+            ExceptionCast.cast(PartsInfoCode.PARTS_DOC_EXIST);
+        }
         if(!b)
             ExceptionCast.cast(CommonCode.FAIL);
         b = partsDepartmentService.deleteByPartsId(partsInfo.getPartsId());
@@ -284,18 +292,6 @@
         b = permissionStreamService.deleteDepartPermsByPartsId(partsInfo.getProductId(), partsInfo.getComponentId(), partsInfo.getPartsId());
         if(!b)
             ExceptionCast.cast(CommonCode.FAIL);
-        b = docInfoService.deleteByPartsId(partsInfo.getPartsId());
-        if(!b)
-            ExceptionCast.cast(CommonCode.FAIL);
-        //娣诲姞鏃ュ織
-        NcLogInfo ncLogInfo = new NcLogInfo();
-        //妯″潡
-        ncLogInfo.setModuleInfo("浜у搧缁撴瀯鏍�");
-        //绫诲瀷
-        ncLogInfo.setOperateType(4);
-        //鏃ュ織鍐呭
-        ncLogInfo.setLogContent("闆朵欢鍚嶇О锛�"+partsInfo.getPartsName());
-        iNcLogInfoService.saveLogNcInfos(ncLogInfo);
         return super.removeById(partsInfo.getPartsId());
     }
 
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamServiceImpl.java
index 869a95b..9f8de34 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamServiceImpl.java
@@ -137,6 +137,19 @@
     }
 
     @Override
+    public List<PermissionStream> getByProcessId(String productId, String componentId, String partsId, String processId){
+        if(!ValidateUtil.validateString(productId) || !ValidateUtil.validateString(componentId)
+                || !ValidateUtil.validateString(partsId) || !ValidateUtil.validateString(processId))
+            return null;
+        List<PermissionStream> list = super.lambdaQuery().eq(PermissionStream::getProductId, productId).
+                isNull(PermissionStream::getUserId).eq(PermissionStream::getComponentId, componentId)
+                .eq(PermissionStream::getPartsId, partsId).eq(PermissionStream::getProcessId,processId).list();
+        if(list == null || list.isEmpty())
+            return null;
+        return list;
+    }
+
+    @Override
     @Transactional(rollbackFor = {Exception.class})
     public boolean deleteUserPermsByProductId(String productId) {
         if(!ValidateUtil.validateString(productId))
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java
index 6462d98..b6d842d 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java
@@ -3,6 +3,7 @@
 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.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -51,6 +52,10 @@
     private IPermissionStreamService permissionStreamService;
     @Autowired
     private IProcessionDepartmentService processionDepartmentService;
+    @Autowired
+    private IWorkStepService workStepService;
+    @Autowired
+    private IDocRelativeService iDocRelativeService;
 
     @Override
     @Transactional(rollbackFor = {Exception.class})
@@ -166,18 +171,16 @@
         ProcessStream en = super.getById(id);
         if(en == null)
             ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST);
-        boolean b = docInfoService.deleteByProcessId(en.getProcessId());
-        if(!b)
-            ExceptionCast.cast(CommonCode.FAIL);
-        //娣诲姞鏃ュ織
-        NcLogInfo ncLogInfo = new NcLogInfo();
-        //妯″潡
-        ncLogInfo.setModuleInfo("浜у搧缁撴瀯鏍�");
-        //绫诲瀷
-        ncLogInfo.setOperateType(4);
-        //鏃ュ織鍐呭
-        ncLogInfo.setLogContent("宸ュ簭鍙凤細"+en.getProcessCode());
-        iNcLogInfoService.saveLogNcInfos(ncLogInfo);
+        //楠岃瘉宸ュ簭涓嬫槸鍚︽湁宸ユ
+        List<WorkStep> workStepList=workStepService.list(new QueryWrapper<WorkStep>().eq("process_id",id));
+        if(workStepList != null && !workStepList.isEmpty()) {
+            ExceptionCast.cast(ProcessInfoCode.WORKSTEP_HAS_DATA);
+        }
+        //楠岃瘉鏄惁瀛樺湪鏂囨。
+        List<DocRelative> docRelativeList=iDocRelativeService.list(new QueryWrapper<DocRelative>().eq("attribution_type","5").eq("attribution_id",id));
+        if (!docRelativeList.isEmpty()){
+            ExceptionCast.cast(ProcessInfoCode.PROCESS_HAS_DOC);
+        }
         return super.removeById(id);
     }
 
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 d7a58a7..c7867fa 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
@@ -76,6 +76,8 @@
     private IProcessionDepartmentService processionDepartmentService;
     @Autowired
     private IMdcProductionService mdcProductionService;
+    @Autowired
+    private IDocRelativeService iDocRelativeService;
 
     @Override
     @Transactional(rollbackFor = {Exception.class})
@@ -236,6 +238,11 @@
         if(processStreams != null && !processStreams.isEmpty())
             ExceptionCast.cast(ProductInfoCode.PRODUCT_PROCESS_EXIST);
         boolean b = productPermissionService.deleteByProductId(id);
+        //楠岃瘉鏄惁瀛樺湪鏂囨。
+        List<DocRelative> docRelativeList=iDocRelativeService.list(new QueryWrapper<DocRelative>().eq("attribution_type","1").eq("attribution_id",id));
+        if (!docRelativeList.isEmpty()){
+            ExceptionCast.cast(ProductInfoCode.PRODUCT_DOC_EXIST);
+        }
         if(!b)
             ExceptionCast.cast(CommonCode.FAIL);
         b = productDepartmentService.deleteByProductId(id);
@@ -247,18 +254,6 @@
         b = permissionStreamService.deleteDepartPermsByProductId(id);
         if(!b)
             ExceptionCast.cast(CommonCode.FAIL);
-        b = docInfoService.deleteByProductId(id);
-        if(!b)
-            ExceptionCast.cast(CommonCode.FAIL);
-        //娣诲姞鏃ュ織
-        NcLogInfo ncLogInfo = new NcLogInfo();
-        //妯″潡
-        ncLogInfo.setModuleInfo("浜у搧缁撴瀯鏍�");
-        //绫诲瀷
-        ncLogInfo.setOperateType(4);
-        //鏃ュ織鍐呭
-        ncLogInfo.setLogContent("浜у搧鍚嶇О锛�"+productInfo.getProductName());
-        iNcLogInfoService.saveLogNcInfos(ncLogInfo);
         return super.removeById(id);
     }
 
@@ -1926,4 +1921,27 @@
 
         return ProductTreeWrapper.loadTree(productInfoList, componentExtList, partsInfos,processStreams,workSteps);
     }
+
+    @Override
+    public boolean deleteProductTree(String id, Integer type){
+        switch (type) {
+            //浜у搧
+            case 1:
+                return deleteProductInfo(id);
+            //閮ㄩ棬
+            case 2:
+                return componentInfoService.deleteComponentInfo(id);
+            //闆朵欢
+            case 3:
+                return partsInfoService.deletePartsInfo(id);
+            //宸ュ簭
+            case 5:
+                return processStreamService.deleteProcessStream(id);
+            //宸ユ
+            case 6:
+                return workStepService.deleteWorkStep(id);
+            default:
+        }
+        return false;
+    }
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java
index e058330..0c6c8b0 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java
@@ -17,11 +17,7 @@
 import org.jeecg.modules.dnc.response.ProcessInfoCode;
 import org.jeecg.modules.dnc.response.ProductInfoCode;
 import org.jeecg.modules.dnc.response.UcenterCode;
-import org.jeecg.modules.dnc.service.IPartsInfoService;
-import org.jeecg.modules.dnc.service.IPermissionStreamService;
-import org.jeecg.modules.dnc.service.IWorkStepDepartmentService;
-import org.jeecg.modules.dnc.service.IWorkStepService;
-import org.jeecg.modules.dnc.ucenter.Department;
+import org.jeecg.modules.dnc.service.*;
 import org.jeecg.modules.dnc.utils.ValidateUtil;
 import org.jeecg.modules.system.entity.MdcProduction;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -48,6 +44,12 @@
 
     @Autowired
     private IWorkStepDepartmentService workStepDepartmentService;
+
+    @Autowired
+    private IDocInfoService docInfoService;
+
+    @Autowired
+    private IDocRelativeService iDocRelativeService;
 
     @Override
     public List<WorkStep> getByUserPerms(String userId) {
@@ -258,4 +260,23 @@
         return true;
     }
 
+    /**
+     * 鍒犻櫎宸ユ淇℃伅 閫昏緫鍒犻櫎
+     * @param id
+     * @return
+     */
+    public boolean deleteWorkStep(String id){
+        if(!ValidateUtil.validateString(id))
+            ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        WorkStep en = super.getById(id);
+        if(en == null)
+            ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST);
+        //楠岃瘉鏄惁瀛樺湪鏂囨。
+        List<DocRelative> docRelativeList=iDocRelativeService.list(new QueryWrapper<DocRelative>().eq("attribution_type","6").eq("attribution_id",id));
+        if (!docRelativeList.isEmpty()){
+            ExceptionCast.cast(ProcessInfoCode.WORKSTEP_HAS_DOC);
+        }
+        return super.removeById(id);
+    }
+
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/utils/CamelToSnakeRegex.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/utils/CamelToSnakeRegex.java
new file mode 100644
index 0000000..89b7dba
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/utils/CamelToSnakeRegex.java
@@ -0,0 +1,20 @@
+package org.jeecg.modules.dnc.utils;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class CamelToSnakeRegex {
+    /**
+     * 椹煎嘲杞笅鍒掔嚎
+     **/
+    public static String camelToSnake(String camelCase) {
+        Pattern pattern = Pattern.compile("[A-Z]");
+        Matcher matcher = pattern.matcher(camelCase);
+        StringBuffer sb = new StringBuffer();
+        while (matcher.find()) {
+            matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
+        }
+        matcher.appendTail(sb);
+        return sb.toString();
+    }
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/DncDevicePermission.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/DncDevicePermission.java
new file mode 100644
index 0000000..7fbf449
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/DncDevicePermission.java
@@ -0,0 +1,29 @@
+package org.jeecg.modules.mdc.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@NoArgsConstructor
+@TableName(value = "nc_device_permission")
+public class DncDevicePermission {
+    @TableId(value = "device_perm_id")
+    private String devicePermId;
+    @TableField(value = "device_id")
+    private String deviceId;
+    @TableField(value = "user_id")
+    private String userId;
+    @JsonIgnore
+    @TableField(value = "create_time", select = false, fill = FieldFill.INSERT)
+    private Date createTime;
+    @JsonIgnore
+    @TableField(value = "create_by", select = false, fill = FieldFill.INSERT)
+    private String createBy;
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/DncDevicePermissionMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/DncDevicePermissionMapper.java
new file mode 100644
index 0000000..4202a94
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/DncDevicePermissionMapper.java
@@ -0,0 +1,13 @@
+package org.jeecg.modules.mdc.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.mdc.entity.DncDevicePermission;
+
+/**
+ * @author: Lyh
+ * @description: 璁惧鏉冮檺Mapper鎺ュ彛
+ * @create: 2023-04-07 11:17
+ */
+public interface DncDevicePermissionMapper extends BaseMapper<DncDevicePermission> {
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcProductionEquipmentService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcProductionEquipmentService.java
index 0214638..2faef29 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcProductionEquipmentService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcProductionEquipmentService.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.mdc.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.mdc.entity.MdcEquipment;
 import org.jeecg.modules.system.entity.MdcProductionEquipment;
 import org.jeecg.modules.system.model.ProductionIdModel;
 
@@ -16,4 +17,14 @@
      * 鏍规嵁鎸囧畾璁惧id鏌ヨ浜х嚎淇℃伅
      */
     List<ProductionIdModel> queryProductionIdsOfEquipment(String equipmentId);
+
+    /**
+     * 鏍规嵁鎸囧畾浜х嚎id鏌ヨ璁惧淇℃伅
+     */
+    List<MdcEquipment> queryEquipmentsOfProduction(String productionId);
+
+    /**
+     * 鏍规嵁鎸囧畾浜х嚎ids鏌ヨ璁惧淇℃伅
+     */
+    List<MdcEquipment> queryEquipmentsOfProductions(List<String> productionIds);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
index b71a4db..84ee56f 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -7,15 +7,18 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.dto.message.MessageDTO;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.api.ISysBaseAPI;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.mdc.dto.MdcEquDepDto;
 import org.jeecg.modules.mdc.dto.MdcEquProDto;
 import org.jeecg.modules.mdc.dto.MdcEquipmentDetailedDto;
 import org.jeecg.modules.mdc.dto.MdcEquipmentDto;
 import org.jeecg.modules.mdc.entity.*;
+import org.jeecg.modules.mdc.mapper.DncDevicePermissionMapper;
 import org.jeecg.modules.mdc.mapper.MdcEquipmentMapper;
 import org.jeecg.modules.mdc.mapper.MdcTorqueConfigMapper;
 import org.jeecg.modules.mdc.model.MdcEquipmentTree;
@@ -92,6 +95,9 @@
     @Resource
     private ISysParamsService ISysParamsService;
 
+    @Resource
+    private DncDevicePermissionMapper dncDevicePermissionMapper;
+
 
     @Override
     public Map<String, String> getDepNamesByEquipmentIds(List<String> equipmentIds) {
@@ -139,6 +145,13 @@
         }
         //step.1 淇濆瓨璁惧
         this.save(mdcEquipment);
+        //DNC娣诲姞璁惧鏉冮檺
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String userId = user.getId();
+        DncDevicePermission dncDevicePermission=new DncDevicePermission();
+        dncDevicePermission.setDeviceId(mdcEquipment.getId());
+        dncDevicePermission.setUserId(userId);
+        dncDevicePermissionMapper.insert(dncDevicePermission);
         //step.2 淇濆瓨鎵�灞為儴闂�
         if (oConvertUtils.isNotEmpty(selectedDeparts)) {
             String[] arr = selectedDeparts.split(",");
@@ -161,6 +174,22 @@
     @Transactional(rollbackFor = Exception.class)
     @CacheEvict(value = {"mdc:cache:encrypt:equipment"}, allEntries = true)
     public void editMdcEquipment(MdcEquipment mdcEquipment) {
+        if (mdcEquipment.getSystemValue()!=null) {
+            switch (mdcEquipment.getSystemValue()){
+                case "1":
+                    mdcEquipment.setDeviceTypeDnc("1");
+                    mdcEquipment.setDeviceTypeMdc("0");
+                    break;
+                case "2":
+                    mdcEquipment.setDeviceTypeDnc("0");
+                    mdcEquipment.setDeviceTypeMdc("1");
+                    break;
+                case "3":
+                    mdcEquipment.setDeviceTypeDnc("1");
+                    mdcEquipment.setDeviceTypeMdc("1");
+                    break;
+            }
+        }
         //step.1 淇敼璁惧鍩虹淇℃伅
         this.updateById(mdcEquipment);
         //step.2 淇敼閮ㄩ棬
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcProductionEquipmentServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcProductionEquipmentServiceImpl.java
index 6ad3383..1a7675d 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcProductionEquipmentServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcProductionEquipmentServiceImpl.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.mdc.entity.MdcEquipment;
+import org.jeecg.modules.mdc.service.IMdcEquipmentService;
 import org.jeecg.modules.mdc.service.IMdcProductionEquipmentService;
 import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.MdcProductionEquipment;
@@ -13,6 +15,7 @@
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author: LiuS
@@ -23,6 +26,8 @@
 
     @Resource
     private IMdcProductionService mdcProductionService;
+    @Resource
+    private IMdcEquipmentService mdcEquipmentService;
 
     /**
      * 鏍规嵁璁惧id鏌ヨ浜х嚎淇℃伅
@@ -54,4 +59,29 @@
         }
         return null;
     }
+    /**
+     * 鏍规嵁鎸囧畾浜х嚎id鏌ヨ璁惧淇℃伅
+     */
+    @Override
+    public List<MdcEquipment> queryEquipmentsOfProduction(String productionId){
+        List<String> equipmentIds = this.list(new LambdaQueryWrapper<MdcProductionEquipment>().eq(MdcProductionEquipment::getProductionId, productionId))
+                .stream().map(MdcProductionEquipment::getEquipmentId).collect(Collectors.toList());
+        if (!equipmentIds.isEmpty()) {
+            return mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().in(MdcEquipment::getId, equipmentIds));
+        }
+        return null;
+    }
+
+    /**
+     * 鏍规嵁鎸囧畾浜х嚎ids鏌ヨ璁惧淇℃伅
+     */
+    @Override
+    public List<MdcEquipment> queryEquipmentsOfProductions(List<String> productionIds){
+        List<String> equipmentIds = this.list(new LambdaQueryWrapper<MdcProductionEquipment>()
+                .in(MdcProductionEquipment::getProductionId, productionIds)).stream().map(MdcProductionEquipment::getEquipmentId).collect(Collectors.toList());
+        if (!equipmentIds.isEmpty()) {
+            return mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().in(MdcEquipment::getId, equipmentIds));
+        }
+        return null;
+    }
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/DncDeviceGroupPermission.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/DncDeviceGroupPermission.java
new file mode 100644
index 0000000..3133e48
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/DncDeviceGroupPermission.java
@@ -0,0 +1,29 @@
+package org.jeecg.modules.system.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@NoArgsConstructor
+@TableName(value = "nc_device_group_permission")
+public class DncDeviceGroupPermission {
+    @TableId(value = "group_perm_id")
+    private String groupPermId;
+    @TableField(value = "group_id")
+    private String groupId;
+    @TableField(value = "user_id")
+    private String userId;
+    @JsonIgnore
+    @TableField(value = "create_time", select = false, fill = FieldFill.INSERT)
+    private Date createTime;
+    @JsonIgnore
+    @TableField(value = "create_by", select = false, fill = FieldFill.INSERT)
+    private String createBy;
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/DncDeviceGroupPermissionMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/DncDeviceGroupPermissionMapper.java
new file mode 100644
index 0000000..d833355
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/DncDeviceGroupPermissionMapper.java
@@ -0,0 +1,13 @@
+package org.jeecg.modules.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.system.entity.DncDeviceGroupPermission;
+
+/**
+ * @author: Lyh
+ * @description: 杞﹂棿鏉冮檺Mapper鎺ュ彛
+ * @create: 2023-04-07 11:17
+ */
+public interface DncDeviceGroupPermissionMapper extends BaseMapper<DncDeviceGroupPermission> {
+
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java
index 1e330f5..e39af4e 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java
@@ -6,18 +6,14 @@
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.constant.FillRuleConstant;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.FillRuleUtil;
 import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.system.entity.MdcProduction;
-import org.jeecg.modules.system.entity.MdcProductionEquipment;
-import org.jeecg.modules.system.entity.MdcUserProduction;
-import org.jeecg.modules.system.entity.SysUser;
-import org.jeecg.modules.system.mapper.MdcProductionEquipmentMapper;
-import org.jeecg.modules.system.mapper.MdcProductionMapper;
-import org.jeecg.modules.system.mapper.MdcUserProductionMapper;
-import org.jeecg.modules.system.mapper.SysUserMapper;
+import org.jeecg.modules.system.entity.*;
+import org.jeecg.modules.system.mapper.*;
 import org.jeecg.modules.system.model.MdcProductionTreeModel;
 import org.jeecg.modules.system.model.ProductionIdModel;
 import org.jeecg.modules.system.service.IMdcProductionService;
@@ -48,6 +44,8 @@
     @Resource
     private MdcProductionEquipmentMapper productionEquipmentMapper;
 
+    @Resource
+    private DncDeviceGroupPermissionMapper dncDeviceGroupPermissionMapper;
     /**
      * queryTreeList 瀵瑰簲 queryTreeList 鏌ヨ鎵�鏈夌殑浜х嚎鏁版嵁,浠ユ爲缁撴瀯褰㈠紡鍝嶅簲缁欏墠绔�
      */
@@ -140,6 +138,13 @@
             mdcProduction.setOrgType(String.valueOf(orgType));
             mdcProduction.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
             this.save(mdcProduction);
+            //鏂板DNC杞﹂棿鏉冮檺
+            LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+            String userId = user.getId();
+            DncDeviceGroupPermission dncDeviceGroupPermission=new DncDeviceGroupPermission();
+            dncDeviceGroupPermission.setGroupPermId(mdcProduction.getId());
+            dncDeviceGroupPermission.setUserId(userId);
+            dncDeviceGroupPermissionMapper.insert(dncDeviceGroupPermission);
         }
     }
 

--
Gitblit v1.9.3