From dbc7e62be76ff48b26461ffaef9c3fc87be018cb Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Wed, 11 Feb 2026 11:05:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
drone-service/drone-fw/src/main/java/org/sxkj/fw/cockpit/service/impl/CockpitServiceImpl.java | 145 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 143 insertions(+), 2 deletions(-)
diff --git a/drone-service/drone-fw/src/main/java/org/sxkj/fw/cockpit/service/impl/CockpitServiceImpl.java b/drone-service/drone-fw/src/main/java/org/sxkj/fw/cockpit/service/impl/CockpitServiceImpl.java
index 1f10398..42fd713 100644
--- a/drone-service/drone-fw/src/main/java/org/sxkj/fw/cockpit/service/impl/CockpitServiceImpl.java
+++ b/drone-service/drone-fw/src/main/java/org/sxkj/fw/cockpit/service/impl/CockpitServiceImpl.java
@@ -3,11 +3,22 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
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 org.sxkj.fw.detection.service.IFwEffectEvalService;
@@ -25,8 +36,14 @@
import org.sxkj.system.entity.Region;
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 {
@@ -40,6 +57,14 @@
@Resource
private IFwEffectEvalService fwEffectEvalService;
+ @Resource
+ private IFwAreaDivideService iFwAreaDivideService;
+
+ @Resource
+ private IFwDefenseSceneManageService iFwDefenseSceneManageService;
+
+ @Resource
+ private IFwDefenseSceneService iFwDefenseSceneService;
@Override
public IPage<FwDroneAlarmRecordVO> selectFwDroneAlarmRecordPage(IPage<FwDroneAlarmRecordVO> page, FwDroneAlarmRecordDTO fwDroneAlarmRecord) {
@@ -58,7 +83,6 @@
@Override
public List<DeviceStatisticsVO> statisticalDeviceType() {
- // List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
Dept dept = SysCache.getDept(Long.valueOf(AuthUtil.getDeptId()));
Region byCode = RegionCache.getByCode(dept.getAreaCode());
return fwDeviceService.statisticalDeviceType(HeaderUtils.formatAreaCode(byCode.getCode()), AuthUtil.getDeptId());
@@ -105,7 +129,6 @@
@Override
public AlarmStatisticsVO statisticsAlarmsAndDeviceRecords() {
- // List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
Dept dept = SysCache.getDept(Long.valueOf(AuthUtil.getDeptId()));
Region byCode = RegionCache.getByCode(dept.getAreaCode());
String regionCode = HeaderUtils.formatAreaCode(byCode.getCode());
@@ -131,4 +154,122 @@
fwDeviceDTO.setRegionCode(HeaderUtils.formatAreaCode(byCode.getCode()));
return fwDeviceService.getDeviceStatistics(fwDeviceDTO);
}
+
+ /**
+ *
+ * @param filterTime
+ * @return
+ */
+ @Override
+ public List<FwDefenseSceneManageVO> selectFwDefenseSceneManageList(Date filterTime) {
+ return iFwDefenseSceneManageService.selectFwDefenseSceneManageList(filterTime);
+ }
+
+ @Override
+ public SceneManageStatisticsVO statisticsSceneManageAndArea(Date filterTime) {
+ List<FwDefenseSceneManageVO> sceneManageList = iFwDefenseSceneManageService.selectFwDefenseSceneManageCockpitList(buildFwBaseInfo(), filterTime);
+ 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;
+ }
+
+ /**
+ *
+ * @param filterSelected
+ * @param sceneId
+ * @param areaTypeKeys
+ * @param isSetSceneManage
+ * @param flyTime
+ * @return
+ */
+ @Override
+ public List<FwAreaDivideVO> selectFwAreaDivideList(Integer filterSelected, Long sceneId, String areaTypeKeys, Integer isSetSceneManage, LocalDateTime flyTime) {
+ FwAreaDivideListParam fwAreaDivideListParam = new FwAreaDivideListParam();
+ fwAreaDivideListParam.setFilterSelected(filterSelected);
+ fwAreaDivideListParam.setSceneId(sceneId);
+ fwAreaDivideListParam.setAreaTypeKeys(areaTypeKeys);
+ fwAreaDivideListParam.setIsSetSceneManage(isSetSceneManage);
+ fwAreaDivideListParam.setFlyTime(flyTime);
+ // 解析区域类型键值列表
+ fwAreaDivideListParam.setAreaTypeKeyList(Func.toStrList(areaTypeKeys));
+ Dept dept = SysCache.getDept(Long.valueOf(AuthUtil.getDeptId()));
+ Region byCode = RegionCache.getByCode(dept.getAreaCode());
+ fwAreaDivideListParam.setCurrentDeptId(AuthUtil.getDeptId());
+ 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();
+ }
}
--
Gitblit v1.9.3