From 118be4ee52ea71cfc3d8ab702bc1702aa4286335 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期五, 20 九月 2024 14:36:43 +0800 Subject: [PATCH] 运行监控导出优化 --- ycl-server/src/main/java/com/ycl/task/FaceTask.java | 5 ++ ycl-pojo/src/main/java/com/ycl/platform/domain/form/VideoExportForm.java | 29 ++++++++++++++ ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java | 3 + ycl-server/src/main/java/com/ycl/task/CarTask.java | 5 ++ ycl-server/src/main/java/com/ycl/task/VideoTask.java | 5 ++ ycl-server/src/main/java/com/ycl/task/MonitorTask.java | 3 - ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml | 12 ++++++ ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java | 56 ++++++++++++++++++++++++--- 8 files changed, 105 insertions(+), 13 deletions(-) diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/VideoExportForm.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/VideoExportForm.java index f7f10cb..b2818ca 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/VideoExportForm.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/VideoExportForm.java @@ -3,6 +3,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import lombok.Data; +import org.springframework.util.CollectionUtils; import java.util.List; @@ -12,4 +13,32 @@ private String month; @NotEmpty(message = "閮ㄩ棬涓嶈兘涓虹┖") private List<Integer> deptIds; + // 0/1/2/3 鐪佸巺銆侀噸鐐圭偣浣嶃�侀噸鐐规寚鎸ュ浘鍍忋�侀儴绾� + private List<Integer> tags; + + //璁惧绫诲瀷 1/2/3 瑙嗛銆佽溅杈嗐�佷汉鑴� + private Integer cameraFunType; + private Boolean provinceTag; + private Boolean importantTag; + private Boolean importantCommandImageTag; + private Boolean deptTag; + + //瑁呴厤tag鏌ヨ鏉′欢 + public static void convertTags(VideoExportForm form){ + List<Integer> tags = form.getTags(); + if(!CollectionUtils.isEmpty(tags)){ + if(tags.contains(0)){ + form.setProvinceTag(true); + } + if(tags.contains(1)){ + form.setImportantTag(true); + } + if(tags.contains(2)){ + form.setImportantCommandImageTag(true); + } + if(tags.contains(3)){ + form.setDeptTag(true); + } + } + } } diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java index d3d00c5..dae63c3 100644 --- a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java +++ b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.platform.domain.entity.TMonitor; +import com.ycl.platform.domain.form.VideoExportForm; import com.ycl.platform.domain.query.DashboardQuery; import com.ycl.platform.domain.query.DataCenterQuery; import com.ycl.platform.domain.query.HomeQuery; @@ -173,5 +174,5 @@ * @param tMonitor 璁惧璧勪骇 * @return 璁惧璧勪骇闆嗗悎 */ - public List<TMonitorResult> selectMonitorResult(@Param("cameraFunType") Short cameraFunType,@Param("deptIds") List<Integer> deptIds); + public List<TMonitorResult> selectMonitorResult(VideoExportForm exportForm); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java index 00739dc..710cd87 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java @@ -387,7 +387,9 @@ @Override public void exportVideoTotal(HttpServletResponse response, VideoExportForm exportForm) throws IOException { List<ExcelExp> mysheet = new ArrayList<>(); - List<TMonitorResult> tMonitorResults = tMonitorMapper.selectMonitorResult(CheckConstants.Rule_Category_Video, exportForm.getDeptIds()); + exportForm.setCameraFunType(Integer.valueOf(CheckConstants.Rule_Category_Video+"")); + VideoExportForm.convertTags(exportForm); + List<TMonitorResult> tMonitorResults = tMonitorMapper.selectMonitorResult(exportForm); List<String> deviceIds = tMonitorResults.stream().map(BaseResult::getNo).collect(Collectors.toList()); Query query = getQuery(deviceIds, exportForm.getMonth()); //鏈堜唤姣忔棩鍦ㄧ嚎鏁版嵁 @@ -469,11 +471,15 @@ @Override public void exportVideoOnline(HttpServletResponse response, VideoExportForm exportForm) throws IOException, NoSuchFieldException, IllegalAccessException { List<ExcelExp> mysheet = new ArrayList<>(); - List<TMonitorResult> tMonitorResults = tMonitorMapper.selectMonitorResult(CheckConstants.Rule_Category_Video, exportForm.getDeptIds()); + exportForm.setCameraFunType(Integer.valueOf(CheckConstants.Rule_Category_Video+"")); + VideoExportForm.convertTags(exportForm); + List<TMonitorResult> tMonitorResults = tMonitorMapper.selectMonitorResult(exportForm); List<String> deviceIds = tMonitorResults.stream().map(BaseResult::getNo).collect(Collectors.toList()); Query query = getQuery(deviceIds, exportForm.getMonth()); //鏈堜唤姣忔棩鍦ㄧ嚎鏁版嵁 List<TMonitorResult> onlineResult = mongoTemplate.find(query, TMonitorResult.class); + //鍏ㄩ噺琛� + List<VideoDailyExp> totalExps = new ArrayList<>(); for (Integer deptId : exportForm.getDeptIds()) { List<VideoDailyExp> videoDailyExps = new ArrayList<>(); //浠庢暟鎹簱闆嗗悎绛涢�夐儴闂ㄦ暟鎹� @@ -488,13 +494,22 @@ videoDailyExp.setSerialNumber(result.getNo()); videoDailyExp.setDeviceName(result.getName()); videoDailyExp.setArea(areaDeptEnum == null ? "鏈煡" : areaDeptEnum.getName()); - videoDailyExp.setTag("" + (result.getProvinceTag() ? "鐪佸巺" : "") + (result.getImportantTag() ? "銆侀噸鐐圭偣浣�" : "") + (result.getImportantCommandImageTag() ? "銆侀噸鐐规寚鎸ュ浘鍍�" : "") + (result.getDeptTag() ? "銆侀儴绾�" : "")); + String tag ="" + (result.getProvinceTag() ? "鐪佸巺銆�" : "") + (result.getImportantTag() ? "閲嶇偣鐐逛綅銆�" : "") + (result.getImportantCommandImageTag() ? "閲嶇偣鎸囨尌鍥惧儚銆�" : "") + (result.getDeptTag() ? "閮ㄧ骇銆�" : ""); + // 鍒犻櫎瀛楃涓叉湯灏剧殑鈥溿�佲�� + if (tag.endsWith("銆�")) { + tag = tag.substring(0, tag.length() - 1); + } + videoDailyExp.setTag(tag); setOnlineDaily(videoDailyExp, result, onlines); videoDailyExps.add(videoDailyExp); + //鍏ㄩ噺琛� + totalExps.add(videoDailyExp); } ExcelExp excelExp = new ExcelExp(areaDeptEnum == null ? "鏈煡" : areaDeptEnum.getName(), videoDailyExps, VideoDailyExp.class); mysheet.add(excelExp); } + ExcelExp excelExp = new ExcelExp("鍏ㄩ噺", totalExps, VideoDailyExp.class); + mysheet.add(excelExp); ExcelUtilManySheet<List<ExcelExp>> util = new ExcelUtilManySheet<>(mysheet); util.exportExcelManySheet(response, mysheet); } @@ -506,11 +521,15 @@ @Override public void exportVideoRecord(HttpServletResponse response, VideoExportForm exportForm) throws IOException, NoSuchFieldException, IllegalAccessException { List<ExcelExp> mysheet = new ArrayList<>(); - List<TMonitorResult> tMonitorResults = tMonitorMapper.selectMonitorResult(CheckConstants.Rule_Category_Video, exportForm.getDeptIds()); + exportForm.setCameraFunType(Integer.valueOf(CheckConstants.Rule_Category_Video+"")); + VideoExportForm.convertTags(exportForm); + List<TMonitorResult> tMonitorResults = tMonitorMapper.selectMonitorResult(exportForm); List<String> deviceIds = tMonitorResults.stream().map(BaseResult::getNo).collect(Collectors.toList()); Query query = getQuery(deviceIds, exportForm.getMonth()); //鏈堜唤姣忔棩褰曞儚绾挎暟鎹� List<RecordMetaDSumResult> recordResult = mongoTemplate.find(query, RecordMetaDSumResult.class); + //鍏ㄩ噺琛� + List<VideoDailyExp> totalExps = new ArrayList<>(); for (Integer deptId : exportForm.getDeptIds()) { List<VideoDailyExp> videoDailyExps = new ArrayList<>(); //浠庢暟鎹簱闆嗗悎绛涢�夐儴闂ㄦ暟鎹� @@ -525,13 +544,23 @@ videoDailyExp.setSerialNumber(result.getNo()); videoDailyExp.setDeviceName(result.getName()); videoDailyExp.setArea(areaDeptEnum == null ? "鏈煡" : areaDeptEnum.getName()); - videoDailyExp.setTag("" + (result.getProvinceTag() ? "鐪佸巺" : "") + (result.getImportantTag() ? "銆侀噸鐐圭偣浣�" : "") + (result.getImportantCommandImageTag() ? "銆侀噸鐐规寚鎸ュ浘鍍�" : "") + (result.getDeptTag() ? "銆侀儴绾�" : "")); + String tag ="" + (result.getProvinceTag() ? "鐪佸巺銆�" : "") + (result.getImportantTag() ? "閲嶇偣鐐逛綅銆�" : "") + (result.getImportantCommandImageTag() ? "閲嶇偣鎸囨尌鍥惧儚銆�" : "") + (result.getDeptTag() ? "閮ㄧ骇銆�" : ""); + // 鍒犻櫎瀛楃涓叉湯灏剧殑鈥溿�佲�� + if (tag.endsWith("銆�")) { + tag = tag.substring(0, tag.length() - 1); + } + videoDailyExp.setTag(tag); setRecordDaily(videoDailyExp, result, records); + //鍖哄幙琛� videoDailyExps.add(videoDailyExp); + //鍏ㄩ噺琛� + totalExps.add(videoDailyExp); } ExcelExp excelExp = new ExcelExp(areaDeptEnum == null ? "鏈煡" : areaDeptEnum.getName(), videoDailyExps, VideoDailyExp.class); mysheet.add(excelExp); } + ExcelExp excelExp = new ExcelExp("鍏ㄩ噺", totalExps, VideoDailyExp.class); + mysheet.add(excelExp); ExcelUtilManySheet<List<ExcelExp>> util = new ExcelUtilManySheet<>(mysheet); util.exportExcelManySheet(response, mysheet); } @@ -542,11 +571,15 @@ @Override public void exportVideoLoseTime(HttpServletResponse response, VideoExportForm exportForm) throws NoSuchFieldException, IllegalAccessException, IOException { List<ExcelExp> mysheet = new ArrayList<>(); - List<TMonitorResult> tMonitorResults = tMonitorMapper.selectMonitorResult(CheckConstants.Rule_Category_Video, exportForm.getDeptIds()); + exportForm.setCameraFunType(Integer.valueOf(CheckConstants.Rule_Category_Video+"")); + VideoExportForm.convertTags(exportForm); + List<TMonitorResult> tMonitorResults = tMonitorMapper.selectMonitorResult(exportForm); List<String> deviceIds = tMonitorResults.stream().map(BaseResult::getNo).collect(Collectors.toList()); Query query = getQuery(deviceIds, exportForm.getMonth()); //鏈堜唤姣忔棩褰曞儚绾挎暟鎹� List<RecordMetaDSumResult> recordResult = mongoTemplate.find(query, RecordMetaDSumResult.class); + //鍏ㄩ噺琛� + List<VideoDailyExp> totalExps = new ArrayList<>(); for (Integer deptId : exportForm.getDeptIds()) { List<VideoDailyExp> videoDailyExps = new ArrayList<>(); //浠庢暟鎹簱闆嗗悎绛涢�夐儴闂ㄦ暟鎹� @@ -561,13 +594,22 @@ videoDailyExp.setSerialNumber(result.getNo()); videoDailyExp.setDeviceName(result.getName()); videoDailyExp.setArea(areaDeptEnum == null ? "鏈煡" : areaDeptEnum.getName()); - videoDailyExp.setTag("" + (result.getProvinceTag() ? "鐪佸巺" : "") + (result.getImportantTag() ? "銆侀噸鐐圭偣浣�" : "") + (result.getImportantCommandImageTag() ? "銆侀噸鐐规寚鎸ュ浘鍍�" : "") + (result.getDeptTag() ? "銆侀儴绾�" : "")); + String tag ="" + (result.getProvinceTag() ? "鐪佸巺銆�" : "") + (result.getImportantTag() ? "閲嶇偣鐐逛綅銆�" : "") + (result.getImportantCommandImageTag() ? "閲嶇偣鎸囨尌鍥惧儚銆�" : "") + (result.getDeptTag() ? "閮ㄧ骇銆�" : ""); + // 鍒犻櫎瀛楃涓叉湯灏剧殑鈥溿�佲�� + if (tag.endsWith("銆�")) { + tag = tag.substring(0, tag.length() - 1); + } + videoDailyExp.setTag(tag); setLoseDaily(videoDailyExp, result, records); videoDailyExps.add(videoDailyExp); + //鍏ㄩ噺琛� + totalExps.add(videoDailyExp); } ExcelExp excelExp = new ExcelExp(areaDeptEnum == null ? "鏈煡" : areaDeptEnum.getName(), videoDailyExps, VideoDailyExp.class); mysheet.add(excelExp); } + ExcelExp excelExp = new ExcelExp("鍏ㄩ噺", totalExps, VideoDailyExp.class); + mysheet.add(excelExp); ExcelUtilManySheet<List<ExcelExp>> util = new ExcelUtilManySheet<>(mysheet); util.exportExcelManySheet(response, mysheet); } diff --git a/ycl-server/src/main/java/com/ycl/task/CarTask.java b/ycl-server/src/main/java/com/ycl/task/CarTask.java index c245663..b91432e 100644 --- a/ycl-server/src/main/java/com/ycl/task/CarTask.java +++ b/ycl-server/src/main/java/com/ycl/task/CarTask.java @@ -5,6 +5,7 @@ import com.ycl.calculate.CalculationStrategy; import com.ycl.factory.IndexCalculationFactory; import com.ycl.platform.domain.entity.YwPoint; +import com.ycl.platform.domain.form.VideoExportForm; import com.ycl.platform.domain.result.HK.*; import com.ycl.platform.domain.result.SYS.TMonitorResult; import com.ycl.platform.domain.result.UY.MonitorQualifyResult; @@ -43,7 +44,9 @@ private YwPointMapper pointMapper; public void siteOnlineTask() { log.info("寮�濮嬭绠楃偣浣嶅湪绾跨巼"); - List<TMonitorResult> tMonitorResults = monitorMapper.selectMonitorResult(CheckConstants.Rule_Category_Car,null); + VideoExportForm form = new VideoExportForm(); + form.setCameraFunType(Integer.valueOf(CheckConstants.Rule_Category_Car+"")); + List<TMonitorResult> tMonitorResults = monitorMapper.selectMonitorResult(form); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_SiteOnline); calculator.calculate(tMonitorResults); log.info("缁撴潫璁$畻瑙嗗浘搴撳鎺ョǔ瀹氭��"); diff --git a/ycl-server/src/main/java/com/ycl/task/FaceTask.java b/ycl-server/src/main/java/com/ycl/task/FaceTask.java index 4db5a56..aaca386 100644 --- a/ycl-server/src/main/java/com/ycl/task/FaceTask.java +++ b/ycl-server/src/main/java/com/ycl/task/FaceTask.java @@ -3,6 +3,7 @@ import com.ycl.calculate.CalculationStrategy; import com.ycl.factory.IndexCalculationFactory; +import com.ycl.platform.domain.form.VideoExportForm; import com.ycl.platform.domain.result.HK.*; import com.ycl.platform.domain.result.SYS.TMonitorResult; import com.ycl.platform.domain.result.UY.MonitorQualifyResult; @@ -39,7 +40,9 @@ public void siteOnlineTask() { log.info("寮�濮嬭绠楃偣浣嶅湪绾跨巼"); - List<TMonitorResult> tMonitorResults = monitorMapper.selectMonitorResult(CheckConstants.Rule_Category_Face,null); + VideoExportForm form = new VideoExportForm(); + form.setCameraFunType(Integer.valueOf(CheckConstants.Rule_Category_Face+"")); + List<TMonitorResult> tMonitorResults = monitorMapper.selectMonitorResult(form); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_SiteOnline); calculator.calculate(tMonitorResults); log.info("缁撴潫璁$畻瑙嗗浘搴撳鎺ョǔ瀹氭��"); diff --git a/ycl-server/src/main/java/com/ycl/task/MonitorTask.java b/ycl-server/src/main/java/com/ycl/task/MonitorTask.java index c22d088..eb38895 100644 --- a/ycl-server/src/main/java/com/ycl/task/MonitorTask.java +++ b/ycl-server/src/main/java/com/ycl/task/MonitorTask.java @@ -62,10 +62,9 @@ private RedisTemplate redisTemplate; //鍚屾鐐逛綅鍦ㄧ嚎鐜囧埌mongo - //TODO锛氬姞瀹氭椂浠诲姟12.杩囧紑濮� public void siteOnline() { log.info("寮�濮嬪悓姝ョ偣浣嶅湪绾跨巼鍒癿ongo"); - List<TMonitorResult> tMonitorResults = monitorMapper.selectMonitorResult(null,null); + List<TMonitorResult> tMonitorResults = monitorMapper.selectMonitorResult(null); if (!CollectionUtils.isEmpty(tMonitorResults)) { //濡傛灉瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎 Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); diff --git a/ycl-server/src/main/java/com/ycl/task/VideoTask.java b/ycl-server/src/main/java/com/ycl/task/VideoTask.java index edbee39..cd921d7 100644 --- a/ycl-server/src/main/java/com/ycl/task/VideoTask.java +++ b/ycl-server/src/main/java/com/ycl/task/VideoTask.java @@ -6,6 +6,7 @@ import com.ycl.platform.domain.entity.CheckIndexVideo; import com.ycl.platform.domain.entity.ImageResourceSecurity; import com.ycl.platform.domain.entity.ImageResourceSecurityDetail; +import com.ycl.platform.domain.form.VideoExportForm; import com.ycl.platform.domain.result.SYS.TMonitorResult; import com.ycl.platform.domain.result.UY.*; import com.ycl.platform.domain.vo.PlatformOnlineVO; @@ -57,7 +58,9 @@ public void siteOnlineTask() { log.info("寮�濮嬭绠楃偣浣嶅湪绾跨巼"); - List<TMonitorResult> tMonitorResults = monitorMapper.selectMonitorResult(CheckConstants.Rule_Category_Video,null); + VideoExportForm form = new VideoExportForm(); + form.setCameraFunType(Integer.valueOf(CheckConstants.Rule_Category_Video+"")); + List<TMonitorResult> tMonitorResults = monitorMapper.selectMonitorResult(form); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_SiteOnline); calculator.calculate(tMonitorResults); log.info("缁撴潫璁$畻鐐逛綅鍦ㄧ嚎鐜�"); diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml index fd81b85..193ef44 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml @@ -182,6 +182,18 @@ #{deptId} </foreach> </if> + <if test="provinceTag!=null"> + and p.province_tag = #{provinceTag} + </if> + <if test="importantTag!=null"> + and p.important_tag = #{importantTag} + </if> + <if test="importantCommandImageTag!=null"> + and p.important_command_image_tag = #{importantCommandImageTag} + </if> + <if test="deptTag!=null"> + and p.dept_tag =#{deptTag} + </if> </where> </select> <select id="selectTMonitorById" parameterType="Long" resultType="com.ycl.platform.domain.vo.TMonitorVO"> -- Gitblit v1.8.0