| | |
| | | import org.sxkj.common.utils.HeaderUtils; |
| | | import org.sxkj.fw.area.dto.FwDefenseZoneDTO; |
| | | import org.sxkj.fw.area.entity.FwAreaDivideEntity; |
| | | import org.sxkj.fw.area.entity.FwDefenseSceneEntity; |
| | | import org.sxkj.fw.area.entity.FwDefenseZoneEntity; |
| | | import org.sxkj.fw.area.vo.FwDefenseZoneVO; |
| | | import org.sxkj.fw.area.excel.FwDefenseZoneExcel; |
| | | import org.sxkj.fw.area.mapper.FwDefenseZoneMapper; |
| | | import org.sxkj.fw.area.service.IFwAreaDivideService; |
| | | import org.sxkj.fw.area.service.IFwDefenseSceneService; |
| | | import org.sxkj.fw.area.service.IFwDefenseZoneService; |
| | | import org.springframework.stereotype.Service; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | |
| | | @Resource |
| | | private IFwAreaDivideService fwAreaDivideService; |
| | | |
| | | @Resource |
| | | private IFwDefenseSceneService fwDefenseSceneService; |
| | | |
| | | @Override |
| | | public IPage<FwDefenseZoneVO> selectFwDefenseZonePage(IPage<FwDefenseZoneVO> page, FwDefenseZoneDTO fwDefenseZone) { |
| | | IPage<FwDefenseZoneVO> result = page.setRecords(baseMapper.selectFwDefenseZonePage(page, fwDefenseZone)); |
| | |
| | | return; |
| | | } |
| | | Set<Long> sceneIdSet = new HashSet<>(); |
| | | Set<Long> areaIdSet = new HashSet<>(); |
| | | Map<Long, List<Long>> zoneSceneMap = new HashMap<>(); |
| | | Map<Long, List<Long>> zoneAreaMap = new HashMap<>(); |
| | | for (FwDefenseZoneVO record : records) { |
| | | List<Long> sceneIds = parseIdList(record.getDefenseSceneIds()); |
| | | if (record.getId() != null) { |
| | | zoneSceneMap.put(record.getId(), sceneIds); |
| | | } |
| | | sceneIdSet.addAll(sceneIds); |
| | | List<Long> areaIds = parseIdList(record.getAreaDivideIds()); |
| | | if (record.getId() != null) { |
| | | zoneAreaMap.put(record.getId(), areaIds); |
| | | } |
| | | areaIdSet.addAll(areaIds); |
| | | } |
| | | if (sceneIdSet.isEmpty() && areaIdSet.isEmpty()) { |
| | | Map<Long, List<Long>> sceneAreaMap = new HashMap<>(); |
| | | Set<Long> sceneAreaIdSet = new HashSet<>(); |
| | | if (!sceneIdSet.isEmpty()) { |
| | | List<FwDefenseSceneEntity> sceneList = fwDefenseSceneService.listByIds(sceneIdSet); |
| | | for (FwDefenseSceneEntity scene : sceneList) { |
| | | if (scene == null || scene.getId() == null) { |
| | | continue; |
| | | } |
| | | List<Long> sceneAreaIds = parseIdList(scene.getAreaDivideIds()); |
| | | sceneAreaMap.put(scene.getId(), sceneAreaIds); |
| | | sceneAreaIdSet.addAll(sceneAreaIds); |
| | | } |
| | | } |
| | | if (sceneIdSet.isEmpty()) { |
| | | for (FwDefenseZoneVO record : records) { |
| | | record.setSceneCount(0); |
| | | record.setDeviceCount(0); |
| | |
| | | return; |
| | | } |
| | | Map<Long, List<Long>> areaDeviceMap = new HashMap<>(); |
| | | if (!areaIdSet.isEmpty()) { |
| | | List<FwAreaDivideEntity> areaList = fwAreaDivideService.listByIds(areaIdSet); |
| | | if (!sceneAreaIdSet.isEmpty()) { |
| | | List<FwAreaDivideEntity> areaList = fwAreaDivideService.listByIds(sceneAreaIdSet); |
| | | for (FwAreaDivideEntity area : areaList) { |
| | | if (area == null || area.getId() == null) { |
| | | continue; |
| | |
| | | } |
| | | Set<Long> uniqueSceneIds = new HashSet<>(sceneIds); |
| | | record.setSceneCount(uniqueSceneIds.size()); |
| | | List<Long> zoneAreaIds = zoneAreaMap.get(record.getId()); |
| | | if (zoneAreaIds == null) { |
| | | zoneAreaIds = Collections.emptyList(); |
| | | Set<Long> sceneAreaIds = new HashSet<>(); |
| | | for (Long sceneId : uniqueSceneIds) { |
| | | List<Long> areaIds = sceneAreaMap.get(sceneId); |
| | | if (areaIds != null) { |
| | | sceneAreaIds.addAll(areaIds); |
| | | } |
| | | } |
| | | Set<Long> areaIds = new HashSet<>(zoneAreaIds); |
| | | Set<Long> deviceIds = new HashSet<>(); |
| | | for (Long areaId : areaIds) { |
| | | for (Long areaId : sceneAreaIds) { |
| | | List<Long> areaDeviceIds = areaDeviceMap.get(areaId); |
| | | if (areaDeviceIds != null) { |
| | | deviceIds.addAll(areaDeviceIds); |
| | | } |
| | | } |
| | | record.setAreaCount(areaIds.size()); |
| | | record.setAreaCount(sceneAreaIds.size()); |
| | | record.setDeviceCount(deviceIds.size()); |
| | | } |
| | | } |