From fc6cf70b5368d0aa4b8bd034a794a34189a6345c Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Thu, 05 Mar 2026 15:09:21 +0800
Subject: [PATCH] 添加日志

---
 drone-service/drone-fw/src/main/java/org/sxkj/fw/cockpit/service/impl/CockpitServiceImpl.java |  120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 117 insertions(+), 3 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 3811d56..7f3ed03 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
@@ -2,16 +2,24 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.extern.slf4j.Slf4j;
 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;
@@ -31,10 +39,15 @@
 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
+@Slf4j
 public class CockpitServiceImpl implements ICockpitService {
 
 	@Resource
@@ -52,6 +65,8 @@
 	@Resource
 	private IFwDefenseSceneManageService iFwDefenseSceneManageService;
 
+	@Resource
+	private IFwDefenseSceneService iFwDefenseSceneService;
 
 	@Override
 	public IPage<FwDroneAlarmRecordVO> selectFwDroneAlarmRecordPage(IPage<FwDroneAlarmRecordVO> page, FwDroneAlarmRecordDTO fwDroneAlarmRecord) {
@@ -64,13 +79,13 @@
 			Region byCode = RegionCache.getByCode(dept.getAreaCode());
 			fwDevice.setRegionCode(HeaderUtils.formatAreaCode(byCode.getCode()));
 			fwDevice.setCurrentDeptId(AuthUtil.getDeptId());
+			fwDevice.setFlyTime(new Date());
 		IPage<CockpitFwDeviceVO> cockpitFwDeviceVOIPage = fwDeviceService.selectCockpitDevicePage(page, fwDevice);
 		return cockpitFwDeviceVOIPage;
 	}
 
 	@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());
@@ -117,7 +132,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());
@@ -137,10 +151,16 @@
 	@Override
 	public List<DeviceStatisticsVO> getDeviceOutStatistics(String effectiveRangeKmIsNotNull) {
 		FwDeviceDTO fwDeviceDTO = new FwDeviceDTO();
+		// 打印用户信息
+		log.info("用户信息:{}", AuthUtil.getUser());
+		// 获取部门信息
 		Dept dept = SysCache.getDept(Long.valueOf(AuthUtil.getDeptId()));
+		log.info("部门信息:{}", dept);
 		Region byCode = RegionCache.getByCode(dept.getAreaCode());
+		log.info("区域信息:{}", byCode);
 		fwDeviceDTO.setCurrentDeptId(AuthUtil.getDeptId());
 		fwDeviceDTO.setRegionCode(HeaderUtils.formatAreaCode(byCode.getCode()));
+		fwDeviceDTO.setFlyTime(new Date());
 		return fwDeviceService.getDeviceStatistics(fwDeviceDTO);
 	}
 
@@ -154,6 +174,61 @@
 		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
@@ -165,6 +240,45 @@
 	 */
 	@Override
 	public List<FwAreaDivideVO> selectFwAreaDivideList(Integer filterSelected, Long sceneId, String areaTypeKeys, Integer isSetSceneManage, LocalDateTime flyTime) {
-		return iFwAreaDivideService.selectFwAreaDivideList(filterSelected, sceneId, areaTypeKeys, isSetSceneManage, 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