From ce93b6e846a9688db550ed40e6718c0e58d524ec Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期一, 17 二月 2025 11:18:36 +0800
Subject: [PATCH] 设备权限

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcUserProductionService.java         |    6 ++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java                            |   33 +++++++++++++++++++++++++++------
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcUserProductionServiceImpl.java |   12 ++++++++++++
 3 files changed, 45 insertions(+), 6 deletions(-)

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 5ba9d64..39fc70b 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
@@ -5,6 +5,7 @@
 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.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
@@ -169,6 +170,8 @@
                 mdcProductionEquipmentMapper.insert(mdcProductionEquipment);
             }
         }
+        //step.3 淇濆瓨璁惧瀵瑰簲鐨勪骇绾挎潈闄�
+        addDevicePermission(mdcEquipment);
     }
 
     @Override
@@ -207,6 +210,8 @@
                 mdcEquipmentDepartMapper.insert(equipmentDepart);
             }
         }
+        //鍒犻櫎鎵�鏈夎澶囨潈闄�
+        dncDevicePermissionMapper.delete(new QueryWrapper<DncDevicePermission>().lambda().eq(DncDevicePermission::getDeviceId, mdcEquipment.getId()));
         //step.3 淇敼浜х嚎
         String productions = mdcEquipment.getSelectedProduction();
         String[] array = {};
@@ -221,15 +226,31 @@
                 mdcProductionEquipmentMapper.insert(productionEquipment);
             }
         }
+        addDevicePermission(mdcEquipment);
         //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);
+        List<DncDevicePermission> dncDevicePermissions=dncDevicePermissionMapper.selectList(new LambdaQueryWrapper<DncDevicePermission>()
+                .eq(DncDevicePermission::getDeviceId, mdcEquipment.getId()).eq(DncDevicePermission ::getUserId, userId));
+        if (CollectionUtils.isEmpty(dncDevicePermissions)){
+            DncDevicePermission dncDevicePermission=new DncDevicePermission();
+            dncDevicePermission.setDeviceId(mdcEquipment.getId());
+            dncDevicePermission.setUserId(userId);
+            dncDevicePermissionMapper.insert(dncDevicePermission);
+        }
+    }
+
+    private void addDevicePermission(MdcEquipment mdcEquipment) {
+        List<String> productionIds=mdcProductionEquipmentMapper
+                .selectList(new LambdaQueryWrapper<MdcProductionEquipment>().eq(MdcProductionEquipment::getEquipmentId, mdcEquipment.getId()))
+                .stream().map(MdcProductionEquipment::getProductionId).collect(Collectors.toList());
+        List<MdcUserProduction> mdcUserProductionList=mdcUserProductionService.queryByProductionIds(productionIds);
+        mdcUserProductionList.forEach(item->{
+            DncDevicePermission devicePermission=new DncDevicePermission();
+            devicePermission.setDeviceId(mdcEquipment.getId());
+            devicePermission.setUserId(item.getUserId());
+            dncDevicePermissionMapper.insert(devicePermission);
+        });
     }
 
     @Override
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 b53553d..5b2ca52 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
@@ -25,6 +25,12 @@
     List<String> queryProductionIdsByUserId(String userId);
 
     /**
+     * 鏍规嵁涓�缁勮溅闂磇d鏌ヨ鐢ㄦ埛浜х嚎淇℃伅
+     * @param productionIds
+     */
+    List<MdcUserProduction> queryByProductionIds(List<String> productionIds);
+
+    /**
      * 鍒犻櫎涓�缁勫璞�
      * @param mdcUserProductions
      * @return
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 8d13636..a293443 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
@@ -67,6 +67,18 @@
         return this.baseMapper.queryProductionIdsByUserId(userId);
     }
 
+    /**
+     * 鏍规嵁涓�缁勮溅闂磇d鏌ヨ鐢ㄦ埛浜х嚎淇℃伅
+     * @param productionIds
+     */
+    @Override
+    public List<MdcUserProduction> queryByProductionIds(List<String> productionIds){
+        if (!productionIds.isEmpty()){
+            return super.list(new LambdaQueryWrapper<MdcUserProduction>().in(MdcUserProduction::getProId, productionIds));
+        }
+        return null;
+    }
+
     @Override
     @Transactional(rollbackFor = {Exception.class})
     public boolean removeByCollection(List<MdcUserProduction> mdcUserProductions) {

--
Gitblit v1.9.3