| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.core.tool.utils.StringUtil; |
| | | import org.springframework.stereotype.Service; |
| | | import org.sxkj.common.utils.HeaderUtils; |
| | | import org.sxkj.fw.area.entity.FwDefenseSceneEntity; |
| | | import org.sxkj.fw.area.param.FwAreaDivideListParam; |
| | | import org.sxkj.fw.area.service.IFwAreaDivideService; |
| | | import org.sxkj.fw.area.service.IFwDefenseSceneService; |
| | | import org.sxkj.fw.area.service.IFwDefenseSceneManageService; |
| | | import org.sxkj.fw.area.vo.FwAreaDivideVO; |
| | | import org.sxkj.fw.area.vo.FwDefenseSceneManageVO; |
| | | import org.sxkj.fw.cockpit.service.ICockpitService; |
| | | import org.sxkj.fw.cockpit.vo.AlarmStatisticsVO; |
| | | import org.sxkj.fw.cockpit.vo.DeviceStatisticsVO; |
| | | import org.sxkj.fw.cockpit.vo.SceneManageStatisticsVO; |
| | | import org.sxkj.fw.common.FwBaseInfo; |
| | | import org.sxkj.fw.detection.entity.FwEffectEvalEntity; |
| | | import org.sxkj.fw.detection.param.FwEffectEvalParam; |
| | |
| | | import javax.annotation.Resource; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Optional; |
| | | import java.util.Set; |
| | | |
| | | @Service |
| | | public class CockpitServiceImpl implements ICockpitService { |
| | |
| | | @Resource |
| | | private IFwDefenseSceneManageService iFwDefenseSceneManageService; |
| | | |
| | | @Resource |
| | | private IFwDefenseSceneService iFwDefenseSceneService; |
| | | |
| | | @Override |
| | | public IPage<FwDroneAlarmRecordVO> selectFwDroneAlarmRecordPage(IPage<FwDroneAlarmRecordVO> page, FwDroneAlarmRecordDTO fwDroneAlarmRecord) { |
| | |
| | | */ |
| | | @Override |
| | | public List<FwDefenseSceneManageVO> selectFwDefenseSceneManageList(Date filterTime) { |
| | | FwBaseInfo fwBaseInfo = new FwBaseInfo(); |
| | | Dept dept = SysCache.getDept(Long.valueOf(AuthUtil.getDeptId())); |
| | | Region byCode = RegionCache.getByCode(dept.getAreaCode()); |
| | | fwBaseInfo.setCurrentDeptId(AuthUtil.getDeptId()); |
| | | fwBaseInfo.setRegionCode(HeaderUtils.formatAreaCode(byCode.getCode())); |
| | | return iFwDefenseSceneManageService.selectFwDefenseSceneManageCockpitList(fwBaseInfo); |
| | | return iFwDefenseSceneManageService.selectFwDefenseSceneManageList(filterTime); |
| | | } |
| | | |
| | | @Override |
| | | public SceneManageStatisticsVO statisticsSceneManageAndArea() { |
| | | List<FwDefenseSceneManageVO> sceneManageList = iFwDefenseSceneManageService.selectFwDefenseSceneManageCockpitList(buildFwBaseInfo()); |
| | | SceneManageStatisticsVO statisticsVO = new SceneManageStatisticsVO(); |
| | | if (sceneManageList == null || sceneManageList.isEmpty()) { |
| | | statisticsVO.setSceneManageCount(0); |
| | | statisticsVO.setAreaCount(0); |
| | | return statisticsVO; |
| | | } |
| | | |
| | | Map<Long, Long> sceneManageSceneMap = new HashMap<>(); |
| | | for (FwDefenseSceneManageVO sceneManage : sceneManageList) { |
| | | if (sceneManage == null || sceneManage.getId() == null) { |
| | | continue; |
| | | } |
| | | sceneManageSceneMap.putIfAbsent(sceneManage.getId(), sceneManage.getDefenseSceneId()); |
| | | } |
| | | statisticsVO.setSceneManageCount(sceneManageSceneMap.size()); |
| | | |
| | | Set<Long> defenseSceneIds = new HashSet<>(); |
| | | for (Long defenseSceneId : sceneManageSceneMap.values()) { |
| | | if (defenseSceneId != null) { |
| | | defenseSceneIds.add(defenseSceneId); |
| | | } |
| | | } |
| | | if (defenseSceneIds.isEmpty()) { |
| | | statisticsVO.setAreaCount(0); |
| | | return statisticsVO; |
| | | } |
| | | |
| | | List<FwDefenseSceneEntity> defenseScenes = iFwDefenseSceneService.listByIds(defenseSceneIds); |
| | | Map<Long, Integer> sceneAreaCountMap = new HashMap<>(); |
| | | if (defenseScenes != null && !defenseScenes.isEmpty()) { |
| | | for (FwDefenseSceneEntity scene : defenseScenes) { |
| | | if (scene == null || scene.getId() == null) { |
| | | continue; |
| | | } |
| | | sceneAreaCountMap.put(scene.getId(), countAreaDivide(scene.getAreaDivideIds())); |
| | | } |
| | | } |
| | | |
| | | int totalAreaCount = 0; |
| | | for (Long defenseSceneId : sceneManageSceneMap.values()) { |
| | | if (defenseSceneId == null) { |
| | | continue; |
| | | } |
| | | Integer areaCount = sceneAreaCountMap.get(defenseSceneId); |
| | | if (areaCount != null) { |
| | | totalAreaCount += areaCount; |
| | | } |
| | | } |
| | | statisticsVO.setAreaCount(totalAreaCount); |
| | | return statisticsVO; |
| | | } |
| | | |
| | | /** |
| | |
| | | fwAreaDivideListParam.setRegionCode(HeaderUtils.formatAreaCode(byCode.getCode())); |
| | | return iFwAreaDivideService.selectFwAreaDivideList(fwAreaDivideListParam); |
| | | } |
| | | |
| | | /** |
| | | * 构建当前部门与区域信息 |
| | | * |
| | | * @return 基础信息 |
| | | */ |
| | | private FwBaseInfo buildFwBaseInfo() { |
| | | FwBaseInfo fwBaseInfo = new FwBaseInfo(); |
| | | Dept dept = SysCache.getDept(Long.valueOf(AuthUtil.getDeptId())); |
| | | Region byCode = RegionCache.getByCode(dept.getAreaCode()); |
| | | fwBaseInfo.setCurrentDeptId(AuthUtil.getDeptId()); |
| | | fwBaseInfo.setRegionCode(HeaderUtils.formatAreaCode(byCode.getCode())); |
| | | return fwBaseInfo; |
| | | } |
| | | |
| | | /** |
| | | * 统计逗号分隔区域ID的数量 |
| | | * |
| | | * @param areaDivideIds 区域ID字符串 |
| | | * @return 区域数量 |
| | | */ |
| | | private int countAreaDivide(String areaDivideIds) { |
| | | if (StringUtil.isBlank(areaDivideIds)) { |
| | | return 0; |
| | | } |
| | | return Func.toLongList(areaDivideIds).size(); |
| | | } |
| | | } |