From 1dcf43467f34eb70002be3c2f3cd7605ceb5dcdd Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期一, 17 二月 2025 10:18:18 +0800
Subject: [PATCH] 设备权限与车间权限

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcUserProductionMapper.xml         |   46 +++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/DncDevicePermission.java                |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml                                    |   23 ++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcUserProductionService.java         |   39 ++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DevicePermissionServiceImpl.java                        |   92 ++++++++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcUserProductionMapper.java            |   30 +++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java           |   45 ++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java                               |    8 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcUserProductionServiceImpl.java |   63 +++++++
 /dev/null                                                                                                                |   13 -
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDevicePermissionService.java                                |    7 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceInfoService.java                                      |    2 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/DncDevicePermissionMapper.java          |   13 +
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceGroupPermissionServiceImpl.java                   |   32 +-
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceInfoController.java                                 |   31 +++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java     |    9 -
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceInfoServiceImpl.java                              |   14 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java                            |   31 ++-
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java                                       |    7 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java                                    |    4 
 20 files changed, 434 insertions(+), 77 deletions(-)

diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceInfoController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceInfoController.java
index 1722137..0c5dda9 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceInfoController.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceInfoController.java
@@ -3,9 +3,14 @@
 import io.swagger.annotations.Api;
 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;
 import org.jeecg.modules.dnc.response.*;
+import org.jeecg.modules.dnc.service.IDevicePermissionService;
+import org.jeecg.modules.mdc.model.MdcEquipmentTree;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.dnc.entity.DeviceInfo;
 import org.jeecg.modules.dnc.service.IDeviceInfoService;
@@ -23,6 +28,8 @@
 public class DeviceInfoController extends JeecgController<DeviceInfo, IDeviceInfoService> {
     @Autowired
     private IDeviceInfoService deviceInfoService;
+    @Autowired
+    private IDevicePermissionService devicePermissionService;
 
     @AutoLog(value = "璁惧琛�-鏂板璁惧")
     @ApiOperation(value = "璁惧琛�-鏂板璁惧", notes = "璁惧琛�-鏂板璁惧")
@@ -70,8 +77,8 @@
     @AutoLog(value = "璁惧琛�-鑾峰彇鑺傜偣宸插垎閰嶇殑鐢ㄦ埛")
     @ApiOperation(value = "璁惧琛�-鑾峰彇鑺傜偣宸插垎閰嶇殑鐢ㄦ埛", notes = "璁惧琛�-鑾峰彇鑺傜偣宸插垎閰嶇殑鐢ㄦ埛")
     @GetMapping("/get/perm/user/{nodeType}/{paramId}")
-    public QueryListResponseResult<UserDepartExt> getUserPermsList(@PathVariable("nodeType") Integer nodeType, @PathVariable("paramId") String paramId) {
-        List<UserDepartExt> list = deviceInfoService.getUserPermsList(nodeType, paramId);
+    public QueryListResponseResult<SysUser> getUserPermsList(@PathVariable("nodeType") Integer nodeType, @PathVariable("paramId") String paramId) {
+        List<SysUser> list = deviceInfoService.getUserPermsList(nodeType, paramId);
         if(list == null)
             list = Collections.emptyList();
         return new QueryListResponseResult(CommonCode.SUCCESS, list);
@@ -156,4 +163,24 @@
         }
         return new ResponseResult(CommonCode.SUCCESS);
     }
+
+    /**
+     * 鍔犺浇浜х嚎璁惧鏍�
+     */
+    @AutoLog(value = "璁惧琛�-鍔犺浇浜х嚎璁惧鏍�")
+    @ApiOperation(value = "璁惧琛�-鍔犺浇浜х嚎璁惧鏍�", notes = "璁惧琛�-鍔犺浇浜х嚎璁惧鏍�")
+    @GetMapping(value = "/queryTreeListByProduction")
+    public Result<List<MdcEquipmentTree>> queryTreeListByProduction() {
+        Result<List<MdcEquipmentTree>> result = new Result<>();
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String userId = user.getId();
+        try {
+            List<MdcEquipmentTree> mdcEquipmentTreeList = devicePermissionService.DncLoadTreeListByProduction(userId);
+            result.setSuccess(true);
+            result.setResult(mdcEquipmentTreeList);
+        } catch (Exception e) {
+            return Result.error("鍔犺浇浜х嚎璁惧鏍戝け璐ワ紒" + e.getMessage());
+        }
+        return result;
+    }
 }
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 a00ad88..fc096a8 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
@@ -61,7 +61,7 @@
      * @param paramId
      * @return
      */
-    List<UserDepartExt> getUserPermsList(Integer nodeType, String paramId);
+    List<SysUser> getUserPermsList(Integer nodeType, String paramId);
     /**
      * 鑾峰彇鑺傜偣鏈垎閰嶇殑鐢ㄦ埛
      * @param nodeType
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDevicePermissionService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDevicePermissionService.java
index da5158c..b819452 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDevicePermissionService.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDevicePermissionService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.dnc.entity.DevicePermission;
 import org.jeecg.modules.dnc.ucenter.UserDepartExt;
+import org.jeecg.modules.mdc.model.MdcEquipmentTree;
 import org.jeecg.modules.system.entity.SysUser;
 
 import java.util.List;
@@ -50,4 +51,10 @@
      * @return
      */
     List<DevicePermission> getByDeviceId(String deviceId);
+
+
+    /**
+     * 鍔犺浇浜х嚎璁惧鏍�
+     */
+    List<MdcEquipmentTree> DncLoadTreeListByProduction(String userId);
 }
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 b790fd1..63f5d37 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
@@ -15,8 +15,10 @@
 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.MdcUserProduction;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.dnc.service.IDeviceGroupPermissionService;
+import org.jeecg.modules.system.service.IMdcUserProductionService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -35,6 +37,8 @@
     @Autowired
     @Lazy
     private IDevicePermissionStreamService devicePermissionStreamService;
+    @Autowired
+    private IMdcUserProductionService mdcUserProductionService;
 
     @Override
     public List<UserDepartExt> getUserPermsByGroupId(String groupId) {
@@ -92,15 +96,13 @@
     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<MdcUserProduction> mdcUserProductions=new ArrayList<>();
         List<DevicePermissionStream> permissionStreamList = new ArrayList<>();
         userList.forEach(item -> {
-            DeviceGroupPermission en = groupPermissionService.getByUserIdAndGroupId(item.getId(), mdcProduction.getId());
+            MdcUserProduction en = mdcUserProductionService.getByUserIdAndGroupId(item.getId(), mdcProduction.getId());
             if(en == null) {
-                en = new DeviceGroupPermission();
-                en.setUserId(item.getId());
-                en.setGroupId(mdcProduction.getId());
-                permissionList.add(en);
+                en = new MdcUserProduction(item.getId(),mdcProduction.getId());
+                mdcUserProductions.add(en);
             }
             DevicePermissionStream stream = devicePermissionStreamService.getByGroupIdAndUserId(mdcProduction.getId(), item.getId());
             if(stream == null) {
@@ -110,8 +112,8 @@
                 permissionStreamList.add(stream);
             }
         });
-        if(!permissionList.isEmpty()) {
-            boolean b = groupPermissionService.saveBatch(permissionList);
+        if(!mdcUserProductions.isEmpty()) {
+            boolean b = mdcUserProductionService.saveBatch(mdcUserProductions);
             if(!b) {
                 ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
             }
@@ -130,12 +132,12 @@
     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<MdcUserProduction> mdcUserProductions=new ArrayList<>();
         List<DevicePermissionStream> permissionStreamList = new ArrayList<>();
         userList.forEach(item -> {
-            DeviceGroupPermission en = groupPermissionService.getByUserIdAndGroupId(item.getId(), mdcProduction.getId());
+            MdcUserProduction en = mdcUserProductionService.getByUserIdAndGroupId(item.getId(), mdcProduction.getId());
             if(en != null) {
-                permissionList.add(en);
+                mdcUserProductions.add(en);
             }
             DevicePermissionStream stream = devicePermissionStreamService.getByGroupIdAndUserId(mdcProduction.getId(), item.getId());
             if(stream != null) {
@@ -143,11 +145,11 @@
             }
         });
         //鏍¢獙娓呯┖璁惧鍒嗙粍鏉冮檺鎿嶄綔
-        List<DeviceGroupPermission> existList = groupPermissionService.getByGroupId(mdcProduction.getId());
-        if(existList.size() <= permissionList.size())
+        List<MdcUserProduction> existList = mdcUserProductionService.list(new QueryWrapper<MdcUserProduction>().eq("pro_id",mdcProduction.getId()));
+        if(existList.size() <= mdcUserProductions.size())
             ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_USER_NONE);
-        if(!permissionList.isEmpty()) {
-            boolean b = groupPermissionService.removeByCollection(permissionList);
+        if(!mdcUserProductions.isEmpty()) {
+            boolean b = mdcUserProductionService.removeByCollection(mdcUserProductions);
             if(!b) {
                 ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
             }
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 d55f9d9..bb59e16 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
@@ -22,6 +22,7 @@
 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.IMdcUserProductionService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.jeecg.modules.dnc.response.DeviceCode;
 import org.jeecg.modules.dnc.response.DeviceGroupCode;
@@ -68,7 +69,8 @@
     private IMdcEquipmentService mdcEquipmentService;
     @Autowired
     private IMdcProductionEquipmentService mdcProductionEquipmentService;
-
+    @Autowired
+    private IMdcUserProductionService mdcUserProductionService;
     @Override
     @Transactional(rollbackFor = {Exception.class})
     public boolean addDeviceInfo(DeviceInfo deviceInfo) {
@@ -243,13 +245,13 @@
     }
 
     @Override
-    public List<UserDepartExt> getUserPermsList(Integer nodeType, String paramId) {
+    public List<SysUser> getUserPermsList(Integer nodeType, String paramId) {
         if(!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId))
             return null;
         if(nodeType == 1) {
-            return deviceGroupPermissionService.getUserPermsByGroupId(paramId);
+            return mdcUserProductionService.getUserPermsByGroupId(paramId);
         }else if(nodeType == 2) {
-            return devicePermissionService.getUserPermsByDeviceId(paramId);
+            return mdcUserProductionService.getUserPermsByDeviceId(paramId);
         }else {
             return null;
         }
@@ -260,9 +262,9 @@
         if(!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId))
             return null;
         if(nodeType == 1) {
-            return deviceGroupPermissionService.getUserNonPermsByGroupId(paramId);
+            return mdcUserProductionService.getUserNonPermsByGroupId(paramId);
         }else if(nodeType == 2) {
-            return devicePermissionService.getUserNonPermsByDeviceId(paramId);
+            return mdcUserProductionService.getUserNonPermsByDeviceId(paramId);
         }else {
             return null;
         }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DevicePermissionServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DevicePermissionServiceImpl.java
index cfb31e0..a980d40 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DevicePermissionServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DevicePermissionServiceImpl.java
@@ -1,23 +1,42 @@
 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.apache.commons.lang3.StringUtils;
+import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.modules.dnc.entity.DevicePermission;
 import org.jeecg.modules.dnc.mapper.DevicePermissionMapper;
 import org.jeecg.modules.dnc.ucenter.UserDepartExt;
 import org.jeecg.modules.dnc.utils.ValidateUtil;
+import org.jeecg.modules.mdc.entity.MdcEquipment;
+import org.jeecg.modules.mdc.mapper.MdcEquipmentMapper;
+import org.jeecg.modules.mdc.model.MdcEquipmentTree;
+import org.jeecg.modules.mdc.util.FindsEquipmentProductionUtil;
+import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.dnc.service.IDevicePermissionService;
+import org.jeecg.modules.system.service.IMdcProductionService;
+import org.jeecg.modules.system.service.IMdcUserProductionService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class DevicePermissionServiceImpl extends ServiceImpl<DevicePermissionMapper, DevicePermission> implements IDevicePermissionService {
+    @Resource
+    private IMdcProductionService mdcProductionService;
+    @Resource
+    private IMdcUserProductionService mdcUserProductionService;
+    @Resource
+    private MdcEquipmentMapper mdcEquipmentMapper;
+
     @Override
     public DevicePermission getByUserIdAndDeviceId(String userId, String deviceId) {
         if(!ValidateUtil.validateString(userId) || !ValidateUtil.validateString(deviceId))
@@ -67,4 +86,77 @@
             list = Collections.emptyList();
         return list;
     }
+
+
+    /**
+     * 鍔犺浇浜х嚎璁惧鏍�
+     */
+    @Override
+    public List<MdcEquipmentTree> DncLoadTreeListByProduction(String userId){
+        //鑾峰彇鎵�鏈変骇绾挎暟鎹�
+        List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()).orderByAsc(MdcProduction::getProductionOrder));
+        //鏍规嵁鐢ㄦ埛id鑾峰彇鎷ユ湁鐨勪骇绾夸俊鎭泦鍚�
+        List<String> productionIds = mdcUserProductionService.queryProductionIdsByUserId(userId);
+        List<String> allProductionIds = new ArrayList<>();
+        //鎵惧埌鎵�鏈変骇绾縤d鐨勪笂绾d
+        if (productionIds != null && !productionIds.isEmpty()) {
+            for (String productionId : productionIds) {
+                this.getAllProductionIds(productionList, productionId, allProductionIds);
+            }
+        }
+        //杩囨护浜х嚎鏁版嵁
+        List<MdcProduction> list = productionList.stream().filter((MdcProduction mdcProduction) -> allProductionIds.contains(mdcProduction.getId())).collect(Collectors.toList());
+        //缁勮浜х嚎璁惧鏍�
+        List<MdcEquipmentTree> treeList = FindsEquipmentProductionUtil.wrapEquipmentProductionTreeList(list);
+        //濉厖璁惧鏁版嵁
+        FillEquipmentByProduction(treeList,userId);
+        return treeList;
+    }
+
+    /**
+     * 鑾峰彇鎵�鏈夌殑浜х嚎id锛堝寘鍚墍鏈変笂绾э級
+     */
+    private void getAllProductionIds(List<MdcProduction> productionList, String productionId, List<String> allProductionIds) {
+        if (!allProductionIds.contains(productionId)) {
+            allProductionIds.add(productionId);
+        }
+        for (MdcProduction mdcProduction : productionList) {
+            if (StringUtils.isEmpty(mdcProduction.getParentId())) {
+                continue;
+            }
+            if (productionId.equals(mdcProduction.getId())) {
+                if (!allProductionIds.contains(mdcProduction.getParentId())) {
+                    allProductionIds.add(mdcProduction.getParentId());
+                    getAllProductionIds(productionList, mdcProduction.getParentId(), allProductionIds);
+                }
+            }
+        }
+    }
+
+    /**
+     * 浜х嚎璁惧鏍戝~鍏呰澶囨暟鎹�
+     */
+    private void FillEquipmentByProduction(List<MdcEquipmentTree> treeList,String userId) {
+        //鑾峰彇宸插垎閰嶆潈闄愯澶囨暟鎹�
+        List<String> deviceIds=super.list(new QueryWrapper<DevicePermission>().eq("user_id",userId)).stream().map(DevicePermission::getDeviceId).collect(Collectors.toList());
+        if (!deviceIds.isEmpty()){
+            for (MdcEquipmentTree mdcEquipmentTree : treeList) {
+                List<MdcEquipment> equipmentList = mdcEquipmentMapper.queryByProductionIdAndType(mdcEquipmentTree.getKey(),deviceIds);
+                if (equipmentList != null && !equipmentList.isEmpty()) {
+                    for (MdcEquipment mdcEquipment : equipmentList) {
+                        MdcEquipmentTree tree = new MdcEquipmentTree().convert(mdcEquipment);
+                        tree.setParentId(mdcEquipmentTree.getKey());
+                        tree.setEntity(mdcEquipment);
+                        tree.setType(2);
+                        mdcEquipmentTree.getChildren().add(tree);
+                    }
+                    mdcEquipmentTree.setLeaf(false);
+                }
+                if (!mdcEquipmentTree.getChildren().isEmpty()) {
+                    FillEquipmentByProduction(mdcEquipmentTree.getChildren(),userId);
+                }
+            }
+        }
+    }
+
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java
index c834e49..816cc92 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java
@@ -405,12 +405,12 @@
     @AutoLog(value = "璁惧琛�-鍔犺浇浜х嚎璁惧鏍�")
     @ApiOperation(value = "璁惧琛�-鍔犺浇浜х嚎璁惧鏍�", notes = "璁惧琛�-鍔犺浇浜х嚎璁惧鏍�")
     @GetMapping(value = "/queryTreeListByProduction")
-    public Result<List<MdcEquipmentTree>> queryTreeListByProduction(String type) {
+    public Result<List<MdcEquipmentTree>> queryTreeListByProduction() {
         Result<List<MdcEquipmentTree>> result = new Result<>();
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = user.getId();
         try {
-            List<MdcEquipmentTree> mdcEquipmentTreeList = mdcEquipmentService.loadTreeListByProduction(userId,type);
+            List<MdcEquipmentTree> mdcEquipmentTreeList = mdcEquipmentService.loadTreeListByProduction(userId);
             result.setSuccess(true);
             result.setResult(mdcEquipmentTreeList);
         } catch (Exception e) {
@@ -530,10 +530,10 @@
     @AutoLog(value = "璁惧琛�-閫氳繃杞﹂棿ids鑾峰彇璁惧鏍�")
     @ApiOperation(value = "璁惧琛�-閫氳繃杞﹂棿ids鑾峰彇璁惧鏍�", notes = "璁惧琛�-閫氳繃杞﹂棿ids鑾峰彇璁惧鏍�")
     @GetMapping(value = "/loadTreeListByProductionIds")
-    public Result<?> loadTreeListByProductionIds(@RequestParam(name = "ids", required = true) String ids,@RequestParam(name = "type", required = true)String type) {
+    public Result<?> loadTreeListByProductionIds(@RequestParam(name = "ids", required = true) String ids) {
         Result<List<MdcEquipmentTree>> result = new Result<>();
         try {
-            List<MdcEquipmentTree> mdcEquipmentTreeList = mdcEquipmentService.loadTreeListByProductionIds(ids,type);
+            List<MdcEquipmentTree> mdcEquipmentTreeList = mdcEquipmentService.loadTreeListByProductionIds(ids);
             result.setSuccess(true);
             result.setResult(mdcEquipmentTreeList);
         } catch (Exception e) {
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
deleted file mode 100644
index 4202a94..0000000
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/DncDevicePermissionMapper.java
+++ /dev/null
@@ -1,13 +0,0 @@
-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/mapper/MdcEquipmentMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
index 76376d4..8e65dd4 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
@@ -56,7 +56,12 @@
     /**
      * 鏍规嵁浜х嚎id鏌ヨ璁惧
      */
-    List<MdcEquipment> queryByProductionId(@Param("productionId") String productionId,@Param("type")String type);
+    List<MdcEquipment> queryByProductionId(@Param("productionId") String productionId);
+
+    /**
+     * 鏍规嵁浜х嚎id銆乼ype銆佸凡鍒嗛厤鏉冮檺鏁版嵁 鏌ヨ璁惧
+     */
+    List<MdcEquipment> queryByProductionIdAndType(@Param("productionId") String productionId, @Param("deviceIds") List<String> deviceIds);
 
     /**
      * 鏌ユ壘璁惧鐩戞帶淇℃伅
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
index a4943b3..155b27e 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
@@ -71,12 +71,7 @@
         WHERE
             mpe.equipment_id = me.id
             AND mpe.production_id = #{ productionId }
-        <if test="type == 'DNC'">
-            AND me.device_type_dnc = '1'
-        </if>
-        <if test="type == 'MDC'">
             AND me.device_type_mdc = '1'
-        </if>
         ORDER BY me.equipment_id
     </select>
 
@@ -281,5 +276,23 @@
         WHERE
             t1.id = #{ id }
     </select>
+    <select id="queryByProductionIdAndType" resultType="org.jeecg.modules.mdc.entity.MdcEquipment">
+        SELECT
+        me.*
+        FROM
+        mdc_production_equipment mpe,
+        mdc_equipment me
+        WHERE
+        mpe.equipment_id = me.id
+        AND mpe.production_id = #{ productionId }
+        AND me.device_type_dnc = '1'
+        <if test="deviceIds != null and deviceIds.size() > 0">
+            AND me.id IN
+            <foreach collection = "deviceIds" item = "id" index = "index" open = "(" close= ")" separator = ",">
+                #{id}
+            </foreach>
+        </if>
+        ORDER BY me.equipment_id
+    </select>
 
 </mapper>
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
index 3fe672c..5e20315 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
@@ -106,7 +106,7 @@
     /**
      * 鍔犺浇浜х嚎璁惧鏍�
      */
-    List<MdcEquipmentTree> loadTreeListByProduction(String userId,String type);
+    List<MdcEquipmentTree> loadTreeListByProduction(String userId);
 
     /**
      * 璁惧鐩戞帶鍒楄〃
@@ -198,7 +198,7 @@
      * @param ids
      * @return
      */
-    List<MdcEquipmentTree> loadTreeListByProductionIds(String ids,String type);
+    List<MdcEquipmentTree> loadTreeListByProductionIds(String ids);
 
     /**
      * 鏌ヨ鍗曡〃鏁版嵁
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 84ee56f..5ba9d64 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
@@ -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.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -18,7 +19,6 @@
 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;
@@ -28,6 +28,7 @@
 import org.jeecg.modules.mdc.util.FindsEquipmentProductionUtil;
 import org.jeecg.modules.mdc.vo.*;
 import org.jeecg.modules.system.entity.*;
+import org.jeecg.modules.system.mapper.DncDevicePermissionMapper;
 import org.jeecg.modules.system.mapper.MdcEquipmentDepartMapper;
 import org.jeecg.modules.system.mapper.MdcProductionEquipmentMapper;
 import org.jeecg.modules.system.service.*;
@@ -220,6 +221,15 @@
                 mdcProductionEquipmentMapper.insert(productionEquipment);
             }
         }
+        //step.4 淇敼璁惧鏉冮檺
+        //鍏堝垹鍚庡姞
+        dncDevicePermissionMapper.delete(new QueryWrapper<DncDevicePermission>().lambda().eq(DncDevicePermission::getDeviceId, mdcEquipment.getId()));
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String userId = user.getId();
+        DncDevicePermission dncDevicePermission=new DncDevicePermission();
+        dncDevicePermission.setDeviceId(mdcEquipment.getId());
+        dncDevicePermission.setUserId(userId);
+        dncDevicePermissionMapper.insert(dncDevicePermission);
     }
 
     @Override
@@ -232,7 +242,8 @@
         line += mdcEquipmentDepartMapper.delete(new LambdaQueryWrapper<MdcEquipmentDepart>().eq(MdcEquipmentDepart::getEquipmentId, id));
         // 3. 鍒犻櫎璁惧浜х嚎鍏崇郴
         line += mdcProductionEquipmentMapper.delete(new LambdaQueryWrapper<MdcProductionEquipment>().eq(MdcProductionEquipment::getEquipmentId, id));
-
+        // 4. 鍒犻櫎璁惧鏉冮檺
+        line += dncDevicePermissionMapper.delete(new LambdaQueryWrapper<DncDevicePermission>().eq(DncDevicePermission::getDeviceId, id));
         return line != 0;
     }
 
@@ -273,6 +284,8 @@
     @Override
     public void removeEquipmentForProduction(String productionId, String equipmentId) {
         mdcProductionEquipmentMapper.delete(new LambdaQueryWrapper<MdcProductionEquipment>().eq(MdcProductionEquipment::getProductionId, productionId).eq(MdcProductionEquipment::getEquipmentId, equipmentId));
+        //绉婚櫎璁惧鏉冮檺
+        dncDevicePermissionMapper.delete(new LambdaQueryWrapper<DncDevicePermission>().eq(DncDevicePermission::getDeviceId, equipmentId));
     }
 
     @Override
@@ -347,7 +360,7 @@
 
 
     @Override
-    public List<MdcEquipmentTree> loadTreeListByProduction(String userId,String type) {
+    public List<MdcEquipmentTree> loadTreeListByProduction(String userId) {
         //鑾峰彇鎵�鏈変骇绾挎暟鎹�
         List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()).orderByAsc(MdcProduction::getProductionOrder));
         //鏍规嵁鐢ㄦ埛id鑾峰彇鎷ユ湁鐨勪骇绾夸俊鎭泦鍚�
@@ -364,7 +377,7 @@
         //缁勮浜х嚎璁惧鏍�
         List<MdcEquipmentTree> treeList = FindsEquipmentProductionUtil.wrapEquipmentProductionTreeList(list);
         //濉厖璁惧鏁版嵁
-        FillEquipmentByProduction(treeList,type);
+        FillEquipmentByProduction(treeList);
         return treeList;
     }
 
@@ -663,9 +676,9 @@
     /**
      * 浜х嚎璁惧鏍戝~鍏呰澶囨暟鎹�
      */
-    private void FillEquipmentByProduction(List<MdcEquipmentTree> treeList,String type) {
+    private void FillEquipmentByProduction(List<MdcEquipmentTree> treeList) {
         for (MdcEquipmentTree mdcEquipmentTree : treeList) {
-            List<MdcEquipment> equipmentList = this.baseMapper.queryByProductionId(mdcEquipmentTree.getKey(),type);
+            List<MdcEquipment> equipmentList = this.baseMapper.queryByProductionId(mdcEquipmentTree.getKey());
             if (equipmentList != null && !equipmentList.isEmpty()) {
                 for (MdcEquipment mdcEquipment : equipmentList) {
                     MdcEquipmentTree tree = new MdcEquipmentTree().convert(mdcEquipment);
@@ -677,7 +690,7 @@
                 mdcEquipmentTree.setLeaf(false);
             }
             if (!mdcEquipmentTree.getChildren().isEmpty()) {
-                FillEquipmentByProduction(mdcEquipmentTree.getChildren(),type);
+                FillEquipmentByProduction(mdcEquipmentTree.getChildren());
             }
         }
     }
@@ -885,7 +898,7 @@
      * @return
      */
     @Override
-    public List<MdcEquipmentTree> loadTreeListByProductionIds(String ids,String type) {
+    public List<MdcEquipmentTree> loadTreeListByProductionIds(String ids) {
         List<String> productionIds = Arrays.asList(ids.split(","));
         //鑾峰彇鎵�鏈変骇绾挎暟鎹�
         List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()).orderByAsc(MdcProduction::getProductionOrder));
@@ -901,7 +914,7 @@
         //缁勮浜х嚎璁惧鏍�
         List<MdcEquipmentTree> treeList = FindsEquipmentProductionUtil.wrapEquipmentProductionTreeList(list);
         //濉厖璁惧鏁版嵁
-        FillEquipmentByProduction(treeList,type);
+        FillEquipmentByProduction(treeList);
         return treeList;
     }
 
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
deleted file mode 100644
index 3133e48..0000000
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/DncDeviceGroupPermission.java
+++ /dev/null
@@ -1,29 +0,0 @@
-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-mdc/src/main/java/org/jeecg/modules/mdc/entity/DncDevicePermission.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/DncDevicePermission.java
similarity index 95%
rename from lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/DncDevicePermission.java
rename to lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/DncDevicePermission.java
index 7fbf449..7690fc6 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/DncDevicePermission.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/DncDevicePermission.java
@@ -1,4 +1,4 @@
-package org.jeecg.modules.mdc.entity;
+package org.jeecg.modules.system.entity;
 
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
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
deleted file mode 100644
index d833355..0000000
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/DncDeviceGroupPermissionMapper.java
+++ /dev/null
@@ -1,13 +0,0 @@
-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/mapper/DncDevicePermissionMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/DncDevicePermissionMapper.java
new file mode 100644
index 0000000..b380b68
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/DncDevicePermissionMapper.java
@@ -0,0 +1,13 @@
+package org.jeecg.modules.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.system.entity.DncDevicePermission;
+
+/**
+ * @author: Lyh
+ * @description: 杞﹂棿鏉冮檺Mapper鎺ュ彛
+ * @create: 2023-04-07 11:17
+ */
+public interface DncDevicePermissionMapper extends BaseMapper<DncDevicePermission> {
+
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcUserProductionMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcUserProductionMapper.java
index a6efd10..2fd2cfb 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcUserProductionMapper.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcUserProductionMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.system.entity.MdcUserProduction;
+import org.jeecg.modules.system.entity.SysUser;
 
 import java.util.List;
 
@@ -18,4 +19,33 @@
      * 鏍规嵁鎸囧畾鐢ㄦ埛id鏌ヨ浜х嚎id闆嗗悎
      */
     List<String> queryProductionIdsByUserId(@Param("userId") String userId);
+
+    /**
+     * 鑾峰彇宸插垎閰嶇殑鐢ㄦ埛鍒楄〃
+     * @param proId
+     * @return
+     */
+    List<SysUser> getUserPermsByGroupId(@Param("proId") String proId);
+
+    /**
+     * 鑾峰彇鏈垎閰嶇殑鐢ㄦ埛鍒楄〃
+     * @param proId
+     * @return
+     */
+    List<SysUser> getUserNonPermsByGroupId(@Param("proId") String proId);
+
+    /**
+     * 鑾峰彇璁惧鏈垎閰嶇殑鐢ㄦ埛
+     * @param proId
+     * @return
+     */
+    List<SysUser> getUserNonPermsByDeviceId(String proId);
+
+
+    /**
+     * 鑾峰彇璁惧宸插垎閰嶇殑鐢ㄦ埛
+     * @param deviceId
+     * @return
+     */
+    List<SysUser> getUserPermsByDeviceId(String deviceId);
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcUserProductionMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcUserProductionMapper.xml
index c60a110..3e04e0e 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcUserProductionMapper.xml
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcUserProductionMapper.xml
@@ -6,4 +6,48 @@
     <select id="queryProductionIdsByUserId" resultType="java.lang.String">
         SELECT pro_id FROM mdc_user_production WHERE user_id = #{userId}
     </select>
-</mapper>
\ No newline at end of file
+    <select id="getUserPermsByGroupId" resultType="org.jeecg.modules.system.entity.SysUser">
+        select u.id
+             , u.username
+             , u.realname
+             , u.avatar
+             , u.phone
+             , u.email
+        from sys_user u
+                 inner join
+             (select user_id from mdc_user_production where pro_id=#{proId}) p
+             on u.id=p.user_id
+    </select>
+    <select id="getUserNonPermsByGroupId" resultType="org.jeecg.modules.system.entity.SysUser">
+        select u.id
+             , u.username
+             , u.realname
+             , u.avatar
+             , u.phone
+             , u.email
+        from sys_user u
+        where u.id not in (select user_id from mdc_user_production where pro_id=#{proId})
+    </select>
+    <select id="getUserNonPermsByDeviceId" resultType="org.jeecg.modules.system.entity.SysUser">
+        select u.id
+             , u.username
+             , u.realname
+             , u.avatar
+             , u.phone
+             , u.email
+        from sys_user u
+        where u.id not in (select user_id from nc_device_permission where device_id=#{deviceId})
+    </select>
+    <select id="getUserPermsByDeviceId" resultType="org.jeecg.modules.system.entity.SysUser">
+        select u.id
+             , u.username
+             , u.realname
+             , u.avatar
+             , u.phone
+             , u.email
+        from sys_user u
+                 inner join
+                 (select user_id from nc_device_permission where device_id=#{deviceId}) p
+                 on u.id=p.user_id
+    </select>
+</mapper>
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcUserProductionService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcUserProductionService.java
index 1e15ac3..b53553d 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcUserProductionService.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcUserProductionService.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.system.entity.MdcUserProduction;
+import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.model.ProductionIdModel;
 
 import java.util.List;
@@ -22,4 +23,42 @@
      * 鏍规嵁鎸囧畾鐢ㄦ埛id鏌ヨ浜х嚎id闆嗗悎
      */
     List<String> queryProductionIdsByUserId(String userId);
+
+    /**
+     * 鍒犻櫎涓�缁勫璞�
+     * @param mdcUserProductions
+     * @return
+     */
+    boolean removeByCollection(List<MdcUserProduction> mdcUserProductions);
+
+    /**
+     * 鑾峰彇宸插垎閰嶇殑鐢ㄦ埛鍒楄〃
+     * @param proId
+     * @return
+     */
+    List<SysUser> getUserPermsByGroupId(String proId);
+
+    /**
+     * 鑾峰彇鏈垎閰嶇殑鐢ㄦ埛鍒楄〃
+     * @param proId
+     * @return
+     */
+    List<SysUser> getUserNonPermsByGroupId(String proId);
+
+    /**
+     * 鑾峰彇鏈垎閰嶇殑鐢ㄦ埛
+     * @param proId
+     * @return
+     */
+    List<SysUser> getUserNonPermsByDeviceId(String proId);
+
+    /**
+     * 鑾峰彇宸插垎閰嶇殑鐢ㄦ埛
+     * @param proId
+     * @return
+     */
+    List<SysUser> getUserPermsByDeviceId(String proId);
+
+
+    MdcUserProduction getByUserIdAndGroupId(String userId, String proId);
 }
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 e39af4e..2ca696b 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
@@ -44,8 +44,6 @@
     @Resource
     private MdcProductionEquipmentMapper productionEquipmentMapper;
 
-    @Resource
-    private DncDeviceGroupPermissionMapper dncDeviceGroupPermissionMapper;
     /**
      * queryTreeList 瀵瑰簲 queryTreeList 鏌ヨ鎵�鏈夌殑浜х嚎鏁版嵁,浠ユ爲缁撴瀯褰㈠紡鍝嶅簲缁欏墠绔�
      */
@@ -138,13 +136,6 @@
             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);
         }
     }
 
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcUserProductionServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcUserProductionServiceImpl.java
index 789406c..8d13636 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcUserProductionServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcUserProductionServiceImpl.java
@@ -1,14 +1,17 @@
 package org.jeecg.modules.system.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.MdcUserProduction;
+import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.mapper.MdcUserProductionMapper;
 import org.jeecg.modules.system.model.ProductionIdModel;
 import org.jeecg.modules.system.service.IMdcProductionService;
 import org.jeecg.modules.system.service.IMdcUserProductionService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
@@ -63,4 +66,64 @@
     public List<String> queryProductionIdsByUserId(String userId) {
         return this.baseMapper.queryProductionIdsByUserId(userId);
     }
+
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public boolean removeByCollection(List<MdcUserProduction> mdcUserProductions) {
+        if(mdcUserProductions == null || mdcUserProductions.isEmpty())
+            return false;
+        if(mdcUserProductions.size() == 1){
+            return super.removeById(mdcUserProductions.get(0).getId());
+        }
+        List<String> ids = new ArrayList<>();
+        mdcUserProductions.forEach(item -> {
+            ids.add(item.getId());
+        });
+        return super.removeByIds(ids);
+    }
+
+    /**
+     * 鑾峰彇宸插垎閰嶇殑鐢ㄦ埛鍒楄〃
+     * @param proId
+     * @return
+     */
+    @Override
+    public List<SysUser> getUserPermsByGroupId(String proId){
+        return super.getBaseMapper().getUserPermsByGroupId(proId);
+    }
+
+    /**
+     * 鑾峰彇鏈垎閰嶇殑鐢ㄦ埛鍒楄〃
+     * @param proId
+     * @return
+     */
+    @Override
+    public List<SysUser> getUserNonPermsByGroupId(String proId){
+        return super.getBaseMapper().getUserNonPermsByGroupId(proId);
+    }
+
+    /**
+     * 鑾峰彇鏈垎閰嶇殑鐢ㄦ埛
+     * @param proId
+     * @return
+     */
+    @Override
+    public List<SysUser> getUserNonPermsByDeviceId(String proId){
+        return super.getBaseMapper().getUserNonPermsByDeviceId(proId);
+    }
+
+    @Override
+    public List<SysUser> getUserPermsByDeviceId(String proId) {
+        return super.getBaseMapper().getUserPermsByDeviceId(proId);
+    }
+
+    @Override
+    public MdcUserProduction getByUserIdAndGroupId(String userId, String proId){
+        if(StrUtil.isNotEmpty(userId) || !StrUtil.isNotEmpty(proId))
+            return null;
+        List<MdcUserProduction> list = super.lambdaQuery().eq(MdcUserProduction::getUserId, userId).eq(MdcUserProduction::getProId, proId).list();
+        if(list == null || list.isEmpty())
+            return null;
+        return list.get(0);
+    }
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
index 106de85..1434c07 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
@@ -48,7 +48,7 @@
 @Service
 @Slf4j
 public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
-	
+
 	@Autowired
 	private SysUserMapper userMapper;
 	@Autowired
@@ -79,6 +79,10 @@
 	MdcUserProductionMapper mdcUserProductionMapper;
 	@Resource
 	private ISysDictService sysDictService;
+	@Resource
+	private MdcProductionEquipmentMapper mdcProductionEquipmentMapper;
+	@Resource
+	private DncDevicePermissionMapper dncDevicePermissionMapper;
 
     @Override
     @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
@@ -141,8 +145,8 @@
 	public SysUser getUserByName(String username) {
 		return userMapper.getUserByName(username);
 	}
-	
-	
+
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void addUserWithRole(SysUser user, String roles) {
@@ -203,7 +207,7 @@
 				roleIndex = list.get(0);
 			}
 		}
-		
+
 		//濡傛灉componentUrl涓虹┖锛屽垯杩斿洖绌�
 		if(oConvertUtils.isEmpty(roleIndex.getComponent())){
 			return null;
@@ -269,7 +273,7 @@
 			info.setSysUserName(sysUser.getRealname());
 			info.setSysOrgCode(sysUser.getOrgCode());
 		}
-		
+
 		//澶氶儴闂ㄦ敮鎸乮n鏌ヨ
 		List<SysDepart> list = sysDepartMapper.queryUserDeparts(sysUser.getId());
 		List<String> sysMultiOrgCode = new ArrayList<String>();
@@ -285,7 +289,7 @@
 			}
 		}
 		info.setSysMultiOrgCode(sysMultiOrgCode);
-		
+
 		return info;
 	}
 
@@ -577,12 +581,24 @@
 				sysUserDepartMapper.insert(userDeaprt);
 			}
 		}
+		String[] arr = {};
 		//step.4 淇濆瓨鎵�灞炰骇绾�
 		if (oConvertUtils.isNotEmpty(selectedProductions)) {
-			String[] arr = selectedProductions.split(",");
+			arr = selectedProductions.split(",");
 			for (String productionId : arr) {
 				MdcUserProduction mdcUserProduction = new MdcUserProduction(user.getId(), productionId);
 				mdcUserProductionMapper.insert(mdcUserProduction);
+			}
+		}
+		//step.5 淇濆瓨璁惧鏉冮檺
+		List<String> EquipmentIds= mdcProductionEquipmentMapper.selectList(new QueryWrapper<MdcProductionEquipment>().in("production_id",arr))
+				.stream().map(MdcProductionEquipment::getEquipmentId).collect(Collectors.toList());
+		if (oConvertUtils.isNotEmpty(EquipmentIds)) {
+			for (String equipmentId : EquipmentIds) {
+				DncDevicePermission dncDevicePermission=new DncDevicePermission();
+				dncDevicePermission.setDeviceId(equipmentId);
+				dncDevicePermission.setUserId(user.getId());
+				dncDevicePermissionMapper.insert(dncDevicePermission);
 			}
 		}
 	}
@@ -646,7 +662,20 @@
 				mdcUserProductionMapper.insert(mdcUserProduction);
 			}
 		}
-		//step.5 淇敼鎵嬫満鍙峰拰閭
+		//step.5 淇敼璁惧鏉冮檺
+		//鍏堝垹鍚庡姞
+		dncDevicePermissionMapper.delete(new QueryWrapper<DncDevicePermission>().lambda().eq(DncDevicePermission::getUserId, user.getId()));
+		List<String> EquipmentIds= mdcProductionEquipmentMapper.selectList(new QueryWrapper<MdcProductionEquipment>().in("production_id",array))
+				.stream().map(MdcProductionEquipment::getEquipmentId).collect(Collectors.toList());
+		if (oConvertUtils.isNotEmpty(EquipmentIds)) {
+			for (String equipmentId : EquipmentIds) {
+				DncDevicePermission dncDevicePermission=new DncDevicePermission();
+				dncDevicePermission.setDeviceId(equipmentId);
+				dncDevicePermission.setUserId(user.getId());
+				dncDevicePermissionMapper.insert(dncDevicePermission);
+			}
+		}
+		//step.6 淇敼鎵嬫満鍙峰拰閭
 		// 鏇存柊鎵嬫満鍙枫�侀偖绠辩┖瀛楃涓蹭负 null
 		userMapper.updateNullByEmptyString("email");
 		userMapper.updateNullByEmptyString("phone");

--
Gitblit v1.9.3