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