package com.ruoyi.device.radar.service.impl; import java.util.*; import com.ruoyi.common.annotation.DataScope; 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.uuid.IdUtils; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.channel.domain.ArdChannel; import com.ruoyi.system.mapper.SysDeptMapper; import com.ruoyi.utils.tools.ArdTool; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.device.radar.mapper.ArdEquipRadarMapper; import com.ruoyi.device.radar.domain.ArdEquipRadar; import com.ruoyi.device.radar.service.IArdEquipRadarService; import javax.annotation.Resource; /** * radarService业务层处理 * * @author zj * @date 2023-03-11 */ @Service public class ArdEquipRadarServiceImpl implements IArdEquipRadarService { @Resource private ArdEquipRadarMapper ardEquipRadarMapper; @Resource private SysDeptMapper sysDeptMapper; /** * 查询radar * * @param id radar主键 * @return radar */ @Override public ArdEquipRadar selectArdEquipRadarById(String id) { return ardEquipRadarMapper.selectArdEquipRadarById(id); } /** * 查询radar列表 * * @param ardEquipRadar radar * @return radar */ @Override @DataScope(deptAlias="d",userAlias="u") public List selectArdEquipRadarList(ArdEquipRadar ardEquipRadar) { return ardEquipRadarMapper.selectArdEquipRadarList(ardEquipRadar); } /** * 新增radar * * @param ardEquipRadar radar * @return 结果 */ @Override public int insertArdEquipRadar(ArdEquipRadar ardEquipRadar) { ardEquipRadar.setId(IdUtils.simpleUUID()); ardEquipRadar.setCreateTime(DateUtils.getNowDate()); ardEquipRadar.setCreateBy(SecurityUtils.getUsername()); ardEquipRadar.setUserId(SecurityUtils.getUserId()); return ardEquipRadarMapper.insertArdEquipRadar(ardEquipRadar); } /** * 修改radar * * @param ardEquipRadar radar * @return 结果 */ @Override public int updateArdEquipRadar(ArdEquipRadar ardEquipRadar) { ardEquipRadar.setUpdateTime(DateUtils.getNowDate()); ardEquipRadar.setUpdateBy(SecurityUtils.getUsername()); return ardEquipRadarMapper.updateArdEquipRadar(ardEquipRadar); } /** * 批量删除radar * * @param ids 需要删除的radar主键 * @return 结果 */ @Override public int deleteArdEquipRadarByIds(String[] ids) { return ardEquipRadarMapper.deleteArdEquipRadarByIds(ids); } /** * 删除radar信息 * * @param id radar主键 * @return 结果 */ @Override public int deleteArdEquipRadarById(String id) { return ardEquipRadarMapper.deleteArdEquipRadarById(id); } /** * @描述 获取本部门以下的所有雷达和部门 * @参数 [] * @返回值 java.util.Map * @创建人 刘苏义 * @创建时间 2023/6/2 10:58 * @修改人和其它信息 */ @Override public Map getChildDeptAndRadar(Boolean disabled) { Long deptId = SecurityUtils.getDeptId(); SysDept sysDept = sysDeptMapper.selectDeptById(deptId); Map map = fetchChildDepartments(sysDept, disabled); return map; } @Override public List> getChildDeptAndRadarOwn(Boolean disabled) { Long deptId = SecurityUtils.getDeptId(); SysDept sysDept = sysDeptMapper.selectDeptById(deptId); List ownDeptIdList = sysDeptMapper.selectRoleDeptIdByUsersId(SecurityUtils.getUserId());//自定义权限主键查询 ownDeptIdList.remove(SecurityUtils.getDeptId());//若自定义权限包含本级权限,则移除 Map map = fetchChildDepartments(sysDept, disabled, ownDeptIdList);//查询本权限及下属权限设备并在自定义权限中移除下属部门主键 Set pIdSet = new HashSet();//自定义权限主键的最高权限 for(Long deptIdn : ownDeptIdList){ List pSysDeptList = sysDeptMapper.getParentsDeptListByDeptId(deptIdn); pIdSet.add(pSysDeptList.get(pSysDeptList.size() - 1).getDeptId());//获取 } List> result = new ArrayList(); result.add(map); for(Long pId : pIdSet){ SysDept pSysDept = sysDeptMapper.selectDeptById(pId); Map mapO = fetchChildDepartments(ownDeptIdList, pSysDept, disabled); result.add(mapO); } return result; } /** * @描述 递归查询 * @参数 [sysDept] * @返回值 java.util.Map * @创建人 刘苏义 * @创建时间 2023/6/2 14:38 * @修改人和其它信息 */ public Map fetchChildDepartments(SysDept sysDept, Boolean disabled) { Map map = new HashMap<>(); map.put("name", sysDept.getDeptName()); map.put("deptId", sysDept.getDeptId()); map.put("disabled", disabled); List sysDepts = sysDeptMapper.selectNextChildrenDeptById(sysDept.getDeptId()); List ardRadars = ardEquipRadarMapper.selectArdRadarsByDeptId(sysDept.getDeptId()); List childList = new ArrayList<>(); for (SysDept childDept : sysDepts) { Map childMap = new HashMap<>(); childMap.put("name", childDept.getDeptName()); childMap.put("deptId", childDept.getDeptId()); childMap.put("disabled", disabled); Map map1 = fetchChildDepartments(childDept, disabled); childMap.putAll(map1); childList.add(childMap); } if (ardRadars.size() > 0) { for (ArdEquipRadar radar : ardRadars) { Map cameraMap = ArdTool.convertEntityToMap(radar); childList.add(cameraMap); } } map.put("children", childList); return map; } /** * zns * * */ public Map fetchChildDepartments(SysDept sysDept, Boolean disabled, List ownDeptIdList) { Map map = new HashMap<>(); map.put("name", sysDept.getDeptName()); map.put("deptId", sysDept.getDeptId()); map.put("disabled", disabled); List sysDepts = sysDeptMapper.selectNextChildrenDeptById(sysDept.getDeptId()); for(SysDept sysDeptC : sysDepts){//若自定义权限包含下级权限,则移除 if(ownDeptIdList.contains(sysDeptC.getDeptId())){ ownDeptIdList.remove(sysDeptC.getDeptId()); } } List ardRadars = ardEquipRadarMapper.selectArdRadarsByDeptId(sysDept.getDeptId()); List childList = new ArrayList<>(); for (SysDept childDept : sysDepts) { Map childMap = new HashMap<>(); childMap.put("name", childDept.getDeptName()); childMap.put("deptId", childDept.getDeptId()); childMap.put("disabled", disabled); Map map1 = fetchChildDepartments(childDept, disabled); childMap.putAll(map1); childList.add(childMap); } if (ardRadars.size() > 0) { for (ArdEquipRadar radar : ardRadars) { Map cameraMap = ArdTool.convertEntityToMap(radar); childList.add(cameraMap); } } map.put("children", childList); return map; } public Map fetchChildDepartments(List ownDeptIdList, SysDept sysDept, Boolean disabled) { Map map = new HashMap<>(); map.put("name", sysDept.getDeptName()); map.put("deptId", sysDept.getDeptId()); map.put("disabled", disabled); List sysDepts = sysDeptMapper.selectNextChildrenDeptByIdAndInList(sysDept.getDeptId(),ownDeptIdList); List ardRadars = ardEquipRadarMapper.selectArdRadarsByDeptId(sysDept.getDeptId()); List childList = new ArrayList<>(); for (SysDept childDept : sysDepts) { Map childMap = new HashMap<>(); childMap.put("name", childDept.getDeptName()); childMap.put("deptId", childDept.getDeptId()); childMap.put("disabled", disabled); //Map map1 = fetchChildDepartments(childDept, disabled); Map map1 = fetchChildDepartments(ownDeptIdList,childDept, disabled); childMap.putAll(map1); childList.add(childMap); } if (ardRadars.size() > 0) { for (ArdEquipRadar radar : ardRadars) { Map cameraMap = ArdTool.convertEntityToMap(radar); childList.add(cameraMap); } } map.put("children", childList); return map; } }