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-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DevicePermissionServiceImpl.java |   92 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 92 insertions(+), 0 deletions(-)

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);
+                }
+            }
+        }
+    }
+
 }

--
Gitblit v1.9.3