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