From 3cadca8ab0c0db03f072c5eb55c5703cd6965d9d Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期五, 02 六月 2023 14:39:50 +0800
Subject: [PATCH] 增加获取部门及相机接口

---
 ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml                        |    4 +
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java                  |    7 ++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java       |   13 ++--
 ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java    |    9 ++
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java            |   11 +++
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java               |    3 +
 ard-work/src/main/java/com/ruoyi/device/camera/service/IArdCamerasService.java         |   11 +++
 ard-work/src/main/java/com/ruoyi/device/camera/mapper/ArdCamerasMapper.java            |    9 +++
 ruoyi-common/src/main/java/com/ruoyi/common/utils/tools/ArdTool.java                   |   38 ++++++++++++
 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java |   66 ++++++++++++++++++++++
 ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml                         |    6 +
 11 files changed, 168 insertions(+), 9 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java b/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
index 193f73e..eca36f8 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
@@ -8,6 +8,7 @@
 import com.ruoyi.device.hiksdk.service.impl.HikClientServiceImpl;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.system.service.ISysDeptService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -160,5 +161,11 @@
         }
         return options;
     }
-
+    @GetMapping("/getDeptAndCamera")
+    @ApiOperation("鑾峰彇閮ㄩ棬鍜岀浉鏈�")
+    public AjaxResult getDeptAndCamera()
+    {
+        Map deptAndCamera = ardCamerasService.getChildDeptAndCamera();
+        return AjaxResult.success(deptAndCamera);
+    }
 }
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/mapper/ArdCamerasMapper.java b/ard-work/src/main/java/com/ruoyi/device/camera/mapper/ArdCamerasMapper.java
index c14115b..beac34a 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/mapper/ArdCamerasMapper.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/mapper/ArdCamerasMapper.java
@@ -3,6 +3,7 @@
 import java.util.List;
 
 import com.ruoyi.common.annotation.DataScope;
+import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.device.camera.domain.ArdCameras;
 
 /**
@@ -67,4 +68,12 @@
      */
     public int deleteArdCamerasByIds(String[] ids);
     public List findOptions(ArdCameras ardCameras);
+
+    /**
+     * 鏍规嵁閮ㄩ棬ID鏌ヨ鎸傝浇鐨勭浉鏈�
+     *
+     * @param deptId 閮ㄩ棬ID
+     * @return 閮ㄩ棬鍒楄〃
+     */
+    public List<ArdCameras> selectArdCamerasByDeptId(Long deptId);
 }
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/IArdCamerasService.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/IArdCamerasService.java
index 1cd7fe6..0d2dcb5 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/IArdCamerasService.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/IArdCamerasService.java
@@ -1,6 +1,8 @@
 package com.ruoyi.device.camera.service;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import com.ruoyi.device.camera.domain.ArdCameras;
 
@@ -67,4 +69,13 @@
     public int deleteArdCamerasById(String id);
 
     public List findOptions(ArdCameras ardCameras);
+    /**
+     * @鎻忚堪 鑾峰彇鏈儴闂ㄤ互涓嬬殑鎵�鏈夌浉鏈哄拰閮ㄩ棬
+     * @鍙傛暟 []
+     * @杩斿洖鍊� java.util.Map
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/6/2 10:58
+     * @淇敼浜哄拰鍏跺畠淇℃伅
+     */
+    public Map getChildDeptAndCamera();
 }
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
index 6ebfb97..1b42fc8 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
@@ -1,13 +1,23 @@
 package com.ruoyi.device.camera.service.impl;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.common.utils.tools.ArdTool;
 import com.ruoyi.device.camera.domain.ArdCameras;
 import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
 import com.ruoyi.device.camera.service.IArdCamerasService;
 import com.ruoyi.common.annotation.DataScope;
+import com.ruoyi.system.mapper.SysDeptMapper;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -22,6 +32,8 @@
 public class ArdCamerasServiceImpl implements IArdCamerasService {
     @Resource
     private ArdCamerasMapper ardCamerasMapper;
+    @Resource
+    private SysDeptMapper sysDeptMapper;
 
     /**
      * 鏌ヨ鐩告満璁惧
@@ -108,4 +120,58 @@
     public List findOptions(ArdCameras ardCameras) {
         return ardCamerasMapper.findOptions(ardCameras);
     }
+
+    /**
+     * @鎻忚堪 鑾峰彇鏈儴闂ㄤ互涓嬬殑鎵�鏈夌浉鏈哄拰閮ㄩ棬
+     * @鍙傛暟 []
+     * @杩斿洖鍊� java.util.Map
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/6/2 10:58
+     * @淇敼浜哄拰鍏跺畠淇℃伅
+     */
+
+    @Override
+    public Map getChildDeptAndCamera() {
+        Long deptId = SecurityUtils.getDeptId();
+        SysDept sysDept = sysDeptMapper.selectDeptById(deptId);
+        Map<String, Object> map = fetchChildDepartments(sysDept);
+        return map;
+    }
+    /**
+     * @鎻忚堪 閫掑綊鏌ヨ
+     * @鍙傛暟 [sysDept]
+     * @杩斿洖鍊� java.util.Map<java.lang.String,java.lang.Object>
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/6/2 14:38
+     * @淇敼浜哄拰鍏跺畠淇℃伅
+     */
+    public Map<String, Object> fetchChildDepartments(SysDept sysDept) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("name", sysDept.getDeptName());
+        map.put("deptId", sysDept.getDeptId());
+        map.put("disabled", true);
+        List<SysDept> sysDepts = sysDeptMapper.selectNextChildrenDeptById(sysDept.getDeptId());
+        List<ArdCameras> ardCameras = ardCamerasMapper.selectArdCamerasByDeptId(sysDept.getDeptId());
+        List<Object> childList = new ArrayList<>();
+        for (SysDept childDept : sysDepts) {
+            Map<String, Object> childMap = new HashMap<>();
+            childMap.put("name", childDept.getDeptName());
+            childMap.put("deptId", childDept.getDeptId());
+            childMap.put("disabled", true);
+            Map<String, Object> map1 = fetchChildDepartments(childDept);
+            childMap.putAll(map1);
+            childList.add(childMap);
+        }
+        if (ardCameras.size() > 0) {
+            for (ArdCameras camera : ardCameras) {
+                Map<String, Object> cameraMap = ArdTool.convertEntityToMap(camera);
+                childList.add(cameraMap);
+            }
+        }
+        map.put("children", childList);
+        return map;
+
+    }
+
+
 }
diff --git a/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml b/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
index 2b3c5fe..1f6187e 100644
--- a/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
+++ b/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
@@ -239,7 +239,6 @@
         </foreach>
     </delete>
 
-
     <select id="findOptions" parameterType="String" resultMap="ArdCamerasResult">
         <include refid="selectArdCamerasVo"/>
         <where>
@@ -247,4 +246,9 @@
             <if test="name != null  and name != ''">and c.name like '%'||#{name}||'%'</if>
         </where>
     </select>
+    <select id="selectArdCamerasByDeptId" parameterType="Long" resultMap="ArdCamerasResult">
+        select *
+        from ard_cameras
+        where dept_id = #{deptId}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
index fb18c5c..fe8beb2 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
@@ -55,6 +55,17 @@
     /** 瀛愰儴闂� */
     private List<SysDept> children = new ArrayList<SysDept>();
 
+
+    private boolean disabled;
+
+    public boolean isDisabled() {
+        return disabled;
+    }
+
+    public void setDisabled(boolean disabled) {
+        this.disabled = disabled;
+    }
+
     public Long getDeptId()
     {
         return deptId;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/tools/ArdTool.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/tools/ArdTool.java
new file mode 100644
index 0000000..8557f57
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/tools/ArdTool.java
@@ -0,0 +1,38 @@
+package com.ruoyi.common.utils.tools;
+
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description: 宸ュ叿鏂规硶
+ * @ClassName: ArdTool
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�06鏈�02鏃�14:37
+ * @Version: 1.0
+ **/
+public class ArdTool {
+
+    /**
+     * @鎻忚堪 瀹炰綋瀵硅薄杞琈ap
+     * @鍙傛暟 [entity]
+     * @杩斿洖鍊� java.util.Map<java.lang.String,java.lang.Object>
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/6/2 14:35
+     * @淇敼浜哄拰鍏跺畠淇℃伅
+     */
+    public static Map<String, Object> convertEntityToMap(Object entity) {
+        Map<String, Object> map = new HashMap<>();
+        Field[] fields = entity.getClass().getDeclaredFields();
+        for (Field field : fields) {
+            field.setAccessible(true);
+            try {
+                Object value = field.get(entity);
+                map.put(field.getName(), value);
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            }
+        }
+        return map;
+    }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
index 384a9b6..94d608d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
@@ -43,6 +43,13 @@
      * @return 閮ㄩ棬鍒楄〃
      */
     public List<SysDept> selectChildrenDeptById(Long deptId);
+    /**
+     * 鏍规嵁ID鏌ヨ涓嬬骇瀛愰儴闂�
+     *
+     * @param deptId 閮ㄩ棬ID
+     * @return 閮ㄩ棬鍒楄〃
+     */
+    public List<SysDept> selectNextChildrenDeptById(Long deptId);
 
     /**
      * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
index 166ba16..7fdbc3e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
@@ -1,6 +1,8 @@
 package com.ruoyi.system.service;
 
 import java.util.List;
+import java.util.Map;
+
 import com.ruoyi.common.core.domain.TreeSelect;
 import com.ruoyi.common.core.domain.entity.SysDept;
 
@@ -121,4 +123,5 @@
      * @return 缁撴灉
      */
     public int deleteDeptById(Long deptId);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
index bdd0df7..c93eaf2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -1,10 +1,7 @@
 package com.ruoyi.system.service.impl;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.annotation.DataScope;
 import com.ruoyi.common.constant.UserConstants;
@@ -21,6 +18,8 @@
 import com.ruoyi.system.mapper.SysRoleMapper;
 import com.ruoyi.system.service.ISysDeptService;
 
+import javax.annotation.Resource;
+
 /**
  * 閮ㄩ棬绠$悊 鏈嶅姟瀹炵幇
  * 
@@ -29,10 +28,10 @@
 @Service
 public class SysDeptServiceImpl implements ISysDeptService
 {
-    @Autowired
+    @Resource
     private SysDeptMapper deptMapper;
 
-    @Autowired
+    @Resource
     private SysRoleMapper roleMapper;
 
     /**
@@ -335,4 +334,6 @@
     {
         return getChildList(list, t).size() > 0;
     }
+
+
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
index 0827ecb..5049c2e 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -77,7 +77,9 @@
 	<select id="selectChildrenDeptById" parameterType="Long" resultMap="SysDeptResult">
 		select * from sys_dept where cast(#{deptId} as varchar) = any(string_to_array(ancestors,','))
 	</select>
-	
+	<select id="selectNextChildrenDeptById" parameterType="Long" resultMap="SysDeptResult">
+		select * from sys_dept where parent_id=#{deptId} and del_flag='0'
+	</select>
 	<select id="selectNormalChildrenDeptById" parameterType="Long" resultType="int">
 		select count(*) from sys_dept where status = '0' and del_flag = '0' and cast(#{deptId} as varchar) = any(string_to_array(ancestors,','))
 	</select>

--
Gitblit v1.9.3