From d6ae4bd543971312b51ba0e40b2565f63ed682e0 Mon Sep 17 00:00:00 2001
From: huangzhen <867217663@qq.com>
Date: 星期四, 28 十二月 2023 16:14:28 +0800
Subject: [PATCH] 气体浓度加入方位

---
 src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/GasConcentration.java                  |    2 +
 src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasWarnLogServiceImpl.java       |   11 ++++-
 src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/resp/GasPageRespDTO.java               |    2 +
 src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/DailyReportSchedule.java             |    7 ++-
 src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/MonitorDataServiceImpl.java      |    4 +-
 src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/WindRoseByTimeReqDTO.java          |    6 +++
 src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/UploadGasConcentrationReqDTO.java  |    2 +
 src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/resp/GasLineChartRespDTO.java          |    2 +
 src/main/java/com/gkhy/fourierSpecialGasMonitor/controller/GasCategoryController.java         |    8 ++++
 src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/query/GasPageQuery.java                |    2 +
 src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/HeartbeatSchedule.java               |    7 ++-
 src/main/java/com/gkhy/fourierSpecialGasMonitor/service/GasConcentrationService.java          |    4 +
 src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java |   24 +++++++++++
 src/main/java/com/gkhy/fourierSpecialGasMonitor/enums/WindRoseEnum.java                       |    6 +++
 src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/GasLineChartReqDTO.java            |    2 +
 15 files changed, 78 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/controller/GasCategoryController.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/controller/GasCategoryController.java
index b0e0751..368eb6e 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/controller/GasCategoryController.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/controller/GasCategoryController.java
@@ -31,6 +31,10 @@
     @Autowired
     private RedissonClient redissonClient;
 
+    /**
+     * @decription 新增气体
+     * @author Mr.huang
+     */
     @PostMapping("/add")
     @RepeatedClick
     public Result createGasCategory(@RequestBody CreateGasCategoryReqDTO reqDto){
@@ -38,6 +42,10 @@
         return result;
     }
 
+    /**
+     * @decription 更新气体
+     * @author Mr.huang
+     */
     @PostMapping("/update")
     @RepeatedClick
     public Result updateGasCategory(@RequestBody UpdateGasCategoryReqDTO reqDto){
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/GasConcentration.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/GasConcentration.java
index 6d5f4e2..a41b9e5 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/GasConcentration.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/GasConcentration.java
@@ -21,6 +21,8 @@
 
     private LocalDateTime dataReceivingTime;
 
+    private Integer position;
+
     private int type;
 
     private String lng;
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/query/GasPageQuery.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/query/GasPageQuery.java
index 7855241..be65510 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/query/GasPageQuery.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/query/GasPageQuery.java
@@ -17,4 +17,6 @@
     private LocalDateTime endTime;
 
     private Integer gasName;
+
+    private Integer position;
 }
\ No newline at end of file
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/GasLineChartReqDTO.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/GasLineChartReqDTO.java
index 6683094..d3d9f4b 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/GasLineChartReqDTO.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/GasLineChartReqDTO.java
@@ -18,4 +18,6 @@
     private LocalDateTime endTime;
 
     private Integer gasName;
+
+    private Integer position;
 }
\ No newline at end of file
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/UploadGasConcentrationReqDTO.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/UploadGasConcentrationReqDTO.java
index 0c23d6b..7833003 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/UploadGasConcentrationReqDTO.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/UploadGasConcentrationReqDTO.java
@@ -18,6 +18,8 @@
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime time;
 
+    private Integer position;
+
     private int type;
 
     private String lng;
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/WindRoseByTimeReqDTO.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/WindRoseByTimeReqDTO.java
index d6c7264..18ed53b 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/WindRoseByTimeReqDTO.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/req/WindRoseByTimeReqDTO.java
@@ -2,6 +2,8 @@
 
 import lombok.Data;
 
+import java.time.LocalDateTime;
+
 /**
  * @author Mr.huang
  * @decription
@@ -11,4 +13,8 @@
 public class WindRoseByTimeReqDTO {
 
     private Integer countTime;
+
+    private LocalDateTime startTime;
+
+    private LocalDateTime endTime;
 }
\ No newline at end of file
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/resp/GasLineChartRespDTO.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/resp/GasLineChartRespDTO.java
index aad097c..96c01af 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/resp/GasLineChartRespDTO.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/resp/GasLineChartRespDTO.java
@@ -19,6 +19,8 @@
 
     private LocalDateTime time;
 
+    private Integer position;
+
     private int type;
 
     private String lng;
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/resp/GasPageRespDTO.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/resp/GasPageRespDTO.java
index 0ac9d85..aeffd8b 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/resp/GasPageRespDTO.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/resp/GasPageRespDTO.java
@@ -19,6 +19,8 @@
 
     private LocalDateTime time;
 
+    private Integer position;
+
     private int type;
 
     private String lng;
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/enums/WindRoseEnum.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/enums/WindRoseEnum.java
index 6cb971d..05edc06 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/enums/WindRoseEnum.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/enums/WindRoseEnum.java
@@ -47,6 +47,12 @@
             LocalDateTime startTime = now.minusHours(24);
             return new WindRoseTimeSlotQuery(startTime,now);
         }
+    },
+    CUSTOM_TIME(5,"自定义") {
+        @Override
+        public WindRoseTimeSlotQuery getTimeSlotByStrategy() {
+            return null;
+        }
     };
 
     private Integer state;
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/DailyReportSchedule.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/DailyReportSchedule.java
index 1a3bad1..8da4f36 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/DailyReportSchedule.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/DailyReportSchedule.java
@@ -92,8 +92,7 @@
     @Autowired
     private MonitorDailyReportService monitorDailyReportService;
 
-    //@Scheduled(cron = "0 0 2 * * ?") //每天两点执行一次
-    @Scheduled(cron = "0/30 * * * * ?")
+    @Scheduled(cron = "0 0 2 * * ?") //每天两点执行一次
     @Async(value = "SocketTaskExecutor")
     public void generateDailyReport() {
         LocalDateTime now = LocalDateTime.now();
@@ -235,6 +234,10 @@
         logger.info("【##】日报生成成功!!! ,时间:"+endTime+",所耗时间: "+execTime+"s");
     }
 
+    /**
+     * @decription 画柱形图
+     * @author Mr.huang
+     */
     public void drawBarChart(List<GasFlux> gasFluxes,String fileurl,String series,String molecularFormula,Integer i,Integer j) {
         List<String> collect = gasFluxes.stream()
                 .map(gasFlux -> gasFlux.getTime().format(lineChartXDataDisplay))
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/HeartbeatSchedule.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/HeartbeatSchedule.java
index c067a09..33ea153 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/HeartbeatSchedule.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/HeartbeatSchedule.java
@@ -25,7 +25,7 @@
  * @decription
  * @date 2023/8/8 10:49
  */
-//@Component
+@Component
 public class HeartbeatSchedule {
 
     @Autowired
@@ -43,12 +43,13 @@
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
 
-    @Scheduled(cron = "0/1 * * * * ?") // 每秒执行一次
+
+    @Scheduled(cron = "0/30 * * * * ?")
     @Async(value = "SocketTaskExecutor")
     public void gasConcentrationStatus() {
         GasConcentration gasConcentration = gasConcentrationService.getLastData();
         if (gasConcentration != null){
-            LocalDateTime lastReceiveTime = gasConcentration.getDataReceivingTime().plusMinutes(1);
+            LocalDateTime lastReceiveTime = gasConcentration.getDataReceivingTime().plusMinutes(2);
             if (LocalDateTime.now().compareTo(lastReceiveTime) > 0){
                 try {
                     heartbeatExcWebsocketServer.sendInfo(HeartbeatExecEnum.GAS_CONCENTRATION.getStatus()+"",null);
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/GasConcentrationService.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/GasConcentrationService.java
index b47ccc2..c3355fa 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/GasConcentrationService.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/GasConcentrationService.java
@@ -18,7 +18,9 @@
 
     List<GasConcentration> listDatabyTimeSlot(LocalDateTime startTime, LocalDateTime endTime);
 
-    Page<GasConcentration> listDatabyTimeSlotAndPage(PageQuery<GasPageQuery> pageQuery);
+    Page<GasConcentration> listDatabyTimeSlotAndPositionAndPage(PageQuery<GasPageQuery> pageQuery);
 
     Page<GasConcentration> gasAtmospherePage(PageQuery<GasAtmospherePageQuery> pageQuery);
+
+    List<GasConcentration> listDatabyTimeSlotAndPosition(LocalDateTime startTime, LocalDateTime endTime, Integer position);
 }
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java
index b27996e..6f1f5d4 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java
@@ -64,13 +64,16 @@
     }
 
     @Override
-    public Page<GasConcentration> listDatabyTimeSlotAndPage(PageQuery<GasPageQuery> pageQuery) {
+    public Page<GasConcentration> listDatabyTimeSlotAndPositionAndPage(PageQuery<GasPageQuery> pageQuery) {
         Pageable pageable = PageRequest.of(pageQuery.getPageIndex()-1, pageQuery.getPageSize(), Sort.Direction.DESC, "time");
         Specification<GasConcentration> specification = new Specification<GasConcentration>() {
             @Override
             public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) {
                 Set<Predicate> predicateList = new HashSet<>();
                 GasPageQuery searchParams = pageQuery.getSearchParams();
+                if (searchParams != null && searchParams.getPosition() != null){
+                    predicateList.add(criteriaBuilder.equal(root.get("position").as(Integer.class),searchParams.getPosition()));
+                }
                 if (searchParams != null && searchParams.getStartTime() != null && searchParams.getEndTime() != null){
                     predicateList.add(criteriaBuilder.between(root.get("time").as(LocalDateTime.class),searchParams.getStartTime(),searchParams.getEndTime()));
                 }
@@ -98,4 +101,23 @@
         Page<GasConcentration> pageResult = gasConcentrationRepository.findAll(specification,pageable);
         return pageResult;
     }
+
+    @Override
+    public List<GasConcentration> listDatabyTimeSlotAndPosition(LocalDateTime startTime, LocalDateTime endTime, Integer position) {
+        if (startTime == null || endTime == null)
+            throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"时间区段值不能为空");
+        Specification<GasConcentration> specification = new Specification<GasConcentration>() {
+            @Override
+            public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) {
+                Set<Predicate> predicateList = new HashSet<>();
+                if (position != null){
+                    predicateList.add(criteriaBuilder.equal(root.get("position").as(Integer.class),position));
+                }
+                predicateList.add(criteriaBuilder.between(root.get("time").as(LocalDateTime.class),startTime,endTime));
+                return criteriaBuilder.and(predicateList.toArray(new Predicate[predicateList.size()]));
+            }
+        };
+        List<GasConcentration> gasConcentrations = gasConcentrationRepository.findAll(specification);
+        return gasConcentrations;
+    }
 }
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasWarnLogServiceImpl.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasWarnLogServiceImpl.java
index ace5444..8fda170 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasWarnLogServiceImpl.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasWarnLogServiceImpl.java
@@ -201,9 +201,16 @@
         if (reqDTO == null && reqDTO .getCountTime() == null)
             throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL,"参数不能为空");
         Integer countTime = reqDTO.getCountTime();
-        WindRoseTimeSlotQuery query = WindRoseEnum.getQueryObject(countTime).getTimeSlotByStrategy();
+        List<GasConcentration> gasConcentrations;
+        if (reqDTO.getCountTime().equals(WindRoseEnum.CUSTOM_TIME.getState())){
+            if (reqDTO.getStartTime() == null && reqDTO.getEndTime() == null)
+                throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL,"参数不能为空");
+            gasConcentrations = gasConcentrationRepository.findAllByDataReceivingTimeBetweenOrderByDataReceivingTimeDesc(reqDTO.getStartTime(), reqDTO.getEndTime());
+        }else {
+            WindRoseTimeSlotQuery query = WindRoseEnum.getQueryObject(countTime).getTimeSlotByStrategy();
+             gasConcentrations = gasConcentrationRepository.findAllByDataReceivingTimeBetweenOrderByDataReceivingTimeDesc(query.getStartTime(), query.getEndTime());
+        }
         Result result = Result.success();
-        List<GasConcentration> gasConcentrations = gasConcentrationRepository.findAllByDataReceivingTimeBetweenOrderByDataReceivingTimeDesc(query.getStartTime(), query.getEndTime());
         if (CollectionUtils.isEmpty(gasConcentrations))
             return result;
         List<WindRoseByTimeRespDTO> collect = gasConcentrations.stream().map(gasConcentration -> {
diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/MonitorDataServiceImpl.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/MonitorDataServiceImpl.java
index 889ead1..43db9ca 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/MonitorDataServiceImpl.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/MonitorDataServiceImpl.java
@@ -67,7 +67,7 @@
             startTime = zeroTime;
             endTime = nowTime;
         }
-        List<GasConcentration> gasConcentrationList =  gasConcentrationService.listDatabyTimeSlot(startTime,endTime);
+        List<GasConcentration> gasConcentrationList =  gasConcentrationService.listDatabyTimeSlotAndPosition(startTime,endTime,reqDto.getPosition());
         if (CollectionUtils.isEmpty(gasConcentrationList))
             return success;
         GasCategory gasCategory = gasCategoryService.findById(reqDto.getGasName());
@@ -124,7 +124,7 @@
         searchResult.setPageIndex(pageQuery.getPageIndex());
         searchResult.setPageSize(pageQuery.getPageSize());
         searchResult.setSuccess();
-        Page<GasConcentration> pageResult =  gasConcentrationService.listDatabyTimeSlotAndPage(pageQuery);
+        Page<GasConcentration> pageResult =  gasConcentrationService.listDatabyTimeSlotAndPositionAndPage(pageQuery);
         if (CollectionUtils.isEmpty(pageResult.getContent()))
             return searchResult;
         searchResult.setTotal(pageResult.getTotalElements());

--
Gitblit v1.9.2