zhangnaisong
2024-05-29 1f71a273c29432665a93507211e9168e51ac4d3f
光电查询加入自定义权限修改提交
已修改5个文件
126 ■■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/camera/service/IArdCamerasService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
@@ -218,7 +218,8 @@
    @GetMapping("/getDeptAndCameraWithCheckBox")
    @ApiOperation("获取部门和相机(开启复选框)")
    public AjaxResult getDeptAndCameraWithCheckBox() {
        Map deptAndCamera = ardCamerasService.getChildDeptAndCamera(false);
        //Map deptAndCamera = ardCamerasService.getChildDeptAndCamera(false);
        List<Map<String, Object>> deptAndCamera = ardCamerasService.getChildDeptAndCameraOwn(false);
        return AjaxResult.success(deptAndCamera);
    }
ard-work/src/main/java/com/ruoyi/device/camera/service/IArdCamerasService.java
@@ -107,6 +107,7 @@
     * @修改人和其它信息
     */
    public Map getChildDeptAndCamera(Boolean disabled);
    public List<Map<String, Object>> getChildDeptAndCameraOwn(Boolean disabled);
    public List<DeptAndCamerasDto> getChildDeptAndCamera();
    public TreeMap getNearCamerasBycoordinate(CameraCmd cmd);
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
@@ -320,6 +320,28 @@
    }
    @Override
    public List<Map<String, Object>> getChildDeptAndCameraOwn(Boolean disabled) {
        Long deptId = SecurityUtils.getDeptId();
        SysDept sysDept = sysDeptMapper.selectDeptById(deptId);
        List<Long> ownDeptIdList = sysDeptMapper.selectRoleDeptIdByUsersId(SecurityUtils.getUserId());//自定义权限主键查询
        ownDeptIdList.remove(SecurityUtils.getDeptId());//若自定义权限包含本级权限,则移除
        Map<String, Object> map = fetchChildDepartments(sysDept, disabled, ownDeptIdList);//查询本权限及下属权限设备并在自定义权限中移除下属部门主键
        Set<Long> pIdSet = new HashSet();//自定义权限主键的最该权限
        for(Long deptIdn : ownDeptIdList){
            List<SysDept> pSysDeptList = sysDeptMapper.getParentsDeptListByDeptId(deptIdn);
            pIdSet.add(pSysDeptList.get(pSysDeptList.size() - 1).getDeptId());//获取
        }
        List<Map<String, Object>> result = new ArrayList();
        result.add(map);
        for(Long pId : pIdSet){
            SysDept pSysDept = sysDeptMapper.selectDeptById(pId);
            Map<String, Object> mapO = fetchChildDepartments(ownDeptIdList, pSysDept, disabled);
            result.add(mapO);
        }
        return result;
    }
    @Override
    public List<DeptAndCamerasDto> getChildDeptAndCamera() {
        List<SysDept> depts = deptService.selectDeptList(new SysDept());
        return fetchChildDepartments(depts);
@@ -367,6 +389,83 @@
    }
    /**
    * zns
    *
    * */
    public Map<String, Object> fetchChildDepartments(SysDept sysDept, Boolean disabled, List<Long> ownDeptIdList) {
        Map<String, Object> map = new HashMap<>();
        map.put("name", sysDept.getDeptName());
        map.put("deptId", sysDept.getDeptId());
        map.put("disabled", disabled);
        List<SysDept> sysDepts = sysDeptMapper.selectNextChildrenDeptById(sysDept.getDeptId());
        for(SysDept sysDeptC : sysDepts){//若自定义权限包含下级权限,则移除
            if(ownDeptIdList.contains(sysDeptC.getDeptId())){
                ownDeptIdList.remove(sysDeptC.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", disabled);
            Map<String, Object> map1 = fetchChildDepartments(childDept, disabled);
            childMap.putAll(map1);
            childList.add(childMap);
        }
        if (ardCameras.size() > 0) {
            for (ArdCameras camera : ardCameras) {
                ArdChannel ardChannel = new ArdChannel();
                ardChannel.setDeviceId(camera.getId());
                List<ArdChannel> ardChannels = ardChannelMapper.selectArdChannelList(ardChannel);
                if (ardChannels != null) {
                    ardChannels.stream().sorted();
                    camera.setChannelList(ardChannels);
                }
                Map<String, Object> cameraMap = ArdTool.convertEntityToMap(camera);
                childList.add(cameraMap);
            }
        }
        map.put("children", childList);
        return map;
    }
    public Map<String, Object> fetchChildDepartments(List<Long> ownDeptIdList, SysDept sysDept, Boolean disabled) {
        Map<String, Object> map = new HashMap<>();
        map.put("name", sysDept.getDeptName());
        map.put("deptId", sysDept.getDeptId());
        map.put("disabled", disabled);
        List<SysDept> sysDepts = sysDeptMapper.selectNextChildrenDeptByIdAndInList(sysDept.getDeptId(),ownDeptIdList);
        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", disabled);
            Map<String, Object> map1 = fetchChildDepartments(childDept, disabled);
            childMap.putAll(map1);
            childList.add(childMap);
        }
        if (ardCameras.size() > 0) {
            for (ArdCameras camera : ardCameras) {
                ArdChannel ardChannel = new ArdChannel();
                ardChannel.setDeviceId(camera.getId());
                List<ArdChannel> ardChannels = ardChannelMapper.selectArdChannelList(ardChannel);
                if (ardChannels != null) {
                    ardChannels.stream().sorted();
                    camera.setChannelList(ardChannels);
                }
                Map<String, Object> cameraMap = ArdTool.convertEntityToMap(camera);
                childList.add(cameraMap);
            }
        }
        map.put("children", childList);
        return map;
    }
    /**
     * 获取所有部门及部门下的相机
     * 刘苏义
     * 2024/3/4 14:45:03
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
@@ -130,4 +130,8 @@
    public List<Long> selectDeptIdBySub(Long deptId);
    public List<Long> selectRoleDeptIdByUsersId(String usersId);
    public List<SysDept> getParentsDeptListByDeptId(Long deptId);
    public List<SysDept> selectNextChildrenDeptByIdAndInList(@Param("deptId")Long deptId,@Param("deptIdList")List<Long> deptIdList);
}
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -179,6 +179,23 @@
        select srd.dept_id from sys_user su
        inner join sys_user_role sur on su.user_id = sur.user_id
        inner join sys_role_dept srd on sur.role_id = srd.role_id
        where su.user_id = #{usersId}
        where su.user_id = #{usersId} order by srd.dept_id
    </select>
    <select id="getParentsDeptListByDeptId" resultMap="SysDeptResult" parameterType="java.lang.Long">
        with recursive rsd as (
            select * from sys_dept sd where sd.dept_id = #{deptId}
            union
            select psd.* from sys_dept psd inner join rsd on rsd.parent_id = psd.dept_id
        )
        select * from rsd
    </select>
    <select id="selectNextChildrenDeptByIdAndInList" resultMap="SysDeptResult">
        select * from sys_dept where parent_id=#{deptId} and del_flag='0'
        and dept_id in
        <foreach collection="deptIdList" item="deptId" separator="," index="index" open="(" close=")">
            #{deptId}
        </foreach>
    </select>
</mapper>