diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSyBMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSyBMapper.java index 73019a4..0de6313 100644 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSyBMapper.java +++ b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSyBMapper.java @@ -57,4 +57,11 @@ public interface JcskSyBMapper extends BaseMapper { """) String selectDvcdByStcdAndMpcd(@Param("stcd")String stcd,@Param("mpcd") String mpcd); + + + @Select(""" + select DISTINCT(t1.dvcd) from jcsk_sy_b t1 +""") + List selectAllDvcd(); + } diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskByR.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskByR.java index b3a9c59..d921ad5 100644 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskByR.java +++ b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskByR.java @@ -2,6 +2,7 @@ package com.gunshi.project.hsz.common.model; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; import com.gunshi.project.hsz.common.model.vo.JcskByRProcessVo; import io.swagger.v3.oas.annotations.media.Schema; @@ -59,6 +60,7 @@ public class JcskByR { * 观测时间2 */ @TableField("ob_date") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime obDate; /** diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskGnssR.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskGnssR.java index 88fa8b8..fb38c5a 100644 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskGnssR.java +++ b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskGnssR.java @@ -64,6 +64,7 @@ public class JcskGnssR { * 监测时间 */ @TableField("tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime tm; /** diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSyR.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSyR.java index c10cab5..f697ccd 100644 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSyR.java +++ b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSyR.java @@ -48,6 +48,7 @@ public class JcskSyR { * 测量时间 */ @TableField("mstm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime mstm; /** @@ -79,6 +80,7 @@ public class JcskSyR { * 更新时间 */ @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime updateTm; diff --git a/src/main/java/com/gunshi/project/hsz/controller/DebugController.java b/src/main/java/com/gunshi/project/hsz/controller/DebugController.java index fa2bf97..8855d3c 100644 --- a/src/main/java/com/gunshi/project/hsz/controller/DebugController.java +++ b/src/main/java/com/gunshi/project/hsz/controller/DebugController.java @@ -28,6 +28,16 @@ public class DebugController { @Autowired private WarningRuleTask warningRuleTask; + @GetMapping("/syRegressionCaculate") + public String syRegressionCaculate(){ + try { + jcskDataTask.calculate(); + return "SUCCESS"; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + @GetMapping("/warnRule") public String warningRuleTast(){ try { diff --git a/src/main/java/com/gunshi/project/hsz/model/ForecastDispatchPlan.java b/src/main/java/com/gunshi/project/hsz/model/ForecastDispatchPlan.java index 32c2d1e..d490607 100644 --- a/src/main/java/com/gunshi/project/hsz/model/ForecastDispatchPlan.java +++ b/src/main/java/com/gunshi/project/hsz/model/ForecastDispatchPlan.java @@ -65,7 +65,7 @@ public class ForecastDispatchPlan implements Serializable { @Schema(description = "开始时间") @NotNull(message = "开始时间不能为空") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime startTime; + private LocalDateTime startTm; /** * 结束时间 @@ -74,7 +74,7 @@ public class ForecastDispatchPlan implements Serializable { @Schema(description = "结束时间") @NotNull(message = "结束时间不能为空") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime endTime; + private LocalDateTime endTm; /** * 制定时间 diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastDispatchPlanService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastDispatchPlanService.java index 1dcf17d..14747fe 100644 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastDispatchPlanService.java +++ b/src/main/java/com/gunshi/project/hsz/service/ForecastDispatchPlanService.java @@ -54,6 +54,7 @@ public class ForecastDispatchPlanService extends ServiceImpl forecastDispatchPlanPage = this.baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); + queryWrapper.orderByDesc(ForecastDispatchPlan::getCreateTime); for (ForecastDispatchPlan record : forecastDispatchPlanPage.getRecords()) { List forecastDispatchCommandList = forecastDispatchCommandService.lambdaQuery().eq(ForecastDispatchCommand::getPlanId, record.getId()).list(); record.setForecastDispatchCommands(forecastDispatchCommandList); @@ -233,8 +234,8 @@ public class ForecastDispatchPlanService extends ServiceImpl { public String getDvcdByStcdAndMpcd(String stcd, String mpcd) { return this.baseMapper.selectDvcdByStcdAndMpcd(stcd,mpcd); } + + public List getAllDvcd() { + return this.baseMapper.selectAllDvcd(); + } } diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskSyRService.java b/src/main/java/com/gunshi/project/hsz/service/JcskSyRService.java index 33a1dee..ad0141b 100644 --- a/src/main/java/com/gunshi/project/hsz/service/JcskSyRService.java +++ b/src/main/java/com/gunshi/project/hsz/service/JcskSyRService.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gunshi.db.dto.DateTimeRangeSo; import com.gunshi.project.hsz.common.model.JcskSyR; import com.gunshi.project.hsz.common.model.vo.*; +import com.gunshi.project.hsz.common.util.LocalDateTimeConverter; import com.gunshi.project.hsz.entity.dto.ArtificialJcskSyDeleteDto; import com.gunshi.project.hsz.common.model.so.JcskSyRPageSo; import com.gunshi.project.hsz.common.model.so.OsmoticDetailQuerySo; @@ -796,139 +797,228 @@ public class JcskSyRService extends ServiceImpl { * @return */ public ProjectSafeCalculateVo calculate(@NotNull ProjectSafeCalculateDto dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - ProjectSafeCalculateVo res = new ProjectSafeCalculateVo(); - //根据dvcd查询stcd和mpcd - queryWrapper.eq(JcskSyB::getDvcd, dto.getDvcd()); - JcskSyB jcskSyB = jcskSyBService.getBaseMapper().selectOne(queryWrapper); - String stcd = jcskSyB.getStcd(); - String mpcd = jcskSyB.getMpcd(); - //取得这个时间段得所有八点得数据 - LambdaQueryWrapper eightAmLambdaQueryWrapper = new LambdaQueryWrapper<>(); - eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getStcd, stcd); - eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getMpcd, mpcd); - eightAmLambdaQueryWrapper.ge(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getStart()); - eightAmLambdaQueryWrapper.le(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getEnd()); - eightAmLambdaQueryWrapper.orderByAsc(JcskSyREightAm::getMstm); - List jcskSyREightAms = jcskSyREightAmMapper.selectList(eightAmLambdaQueryWrapper); - AttResBase attResBase = attResBaseService.list().get(0); - OsmoticQuerySo querySo = new OsmoticQuerySo(); - querySo.setDateTimeRangeSo(dto.getDateTimeRangeSo()); - List stRzVos = baseMapper.qeury8AmRz(querySo,attResBase.getStcd()); - Map rzMap = stRzVos.stream() - .collect(Collectors.toMap( - StRzVo::getTm, // key: 时间 - StRzVo::getRz, // value: 水位 - (existing, replacement) -> existing // 如果key冲突,保留已存在的 - )); - //组合成为 时间 库水位 管道水位的数据 - List data = new ArrayList<>(); - Iterator iterator = jcskSyREightAms.iterator(); - while (iterator.hasNext()) { - JcskSyREightAm eightAm = iterator.next(); - if(eightAm.getMstm() == null || eightAm.getSpprwl() == null){ - iterator.remove(); - } - OsmoticPressDetailVo detailVo = new OsmoticPressDetailVo(); - - // 设置监测时间和监测值(管道水位) - String mstmStr = eightAm.getMstm().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - detailVo.setTm(mstmStr); - detailVo.setValue(eightAm.getSpprwl()); - - // 查找对应的库水位 - BigDecimal rzValue = findClosestRzValue(rzMap, mstmStr); - if(rzValue == null){ - iterator.remove(); - } - detailVo.setRz(rzValue); - //获取数据清洗规则 - SyDataCheckRule rule = syDataCheckRuleService.getByDvcd(dto.getDvcd()); - if(rule != null && rule.getIsAvailable() == 1){ - //校验这条数据是否符合规则 - if(rzValue.compareTo(rule.getRz()) >=0){ - //如果当前库水位大于等于设置库水位,则跳过这条数据 + /** + * 首先startTime和endTime有没有数据 + * + * */ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SyRegressionData::getDvcd,dto.getDvcd()); + wrapper.eq(SyRegressionData::getStartTime,dto.getDateTimeRangeSo().getStart()); + wrapper.eq(SyRegressionData::getEndTime,dto.getDateTimeRangeSo().getEnd()); + wrapper.orderByAsc(SyRegressionData::getOrder); + List queryData = syRegressionDataService.getBaseMapper().selectList(wrapper); + if(!queryData.isEmpty()){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + ProjectSafeCalculateVo res = new ProjectSafeCalculateVo(); + //根据dvcd查询stcd和mpcd + queryWrapper.eq(JcskSyB::getDvcd, dto.getDvcd()); + JcskSyB jcskSyB = jcskSyBService.getBaseMapper().selectOne(queryWrapper); + String stcd = jcskSyB.getStcd(); + String mpcd = jcskSyB.getMpcd(); + //取得这个时间段得所有八点得数据 + LambdaQueryWrapper eightAmLambdaQueryWrapper = new LambdaQueryWrapper<>(); + eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getStcd, stcd); + eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getMpcd, mpcd); + eightAmLambdaQueryWrapper.ge(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getStart()); + eightAmLambdaQueryWrapper.le(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getEnd()); + eightAmLambdaQueryWrapper.orderByAsc(JcskSyREightAm::getMstm); + List jcskSyREightAms = jcskSyREightAmMapper.selectList(eightAmLambdaQueryWrapper); + AttResBase attResBase = attResBaseService.list().get(0); + OsmoticQuerySo querySo = new OsmoticQuerySo(); + DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); + dateTimeRangeSo.setStart(dto.getDateTimeRangeSo().getStart()); + dateTimeRangeSo.setEnd(dto.getDateTimeRangeSo().getEnd()); + querySo.setDateTimeRangeSo(dateTimeRangeSo); + List stRzVos = baseMapper.qeury8AmRz(querySo,attResBase.getStcd()); + Map rzMap = stRzVos.stream() + .collect(Collectors.toMap( + StRzVo::getTm, // key: 时间 + StRzVo::getRz, // value: 水位 + (existing, replacement) -> existing // 如果key冲突,保留已存在的 + )); + //组合成为 时间 库水位 管道水位的数据 + List data = new ArrayList<>(); + Iterator iterator = jcskSyREightAms.iterator(); + while (iterator.hasNext()) { + JcskSyREightAm eightAm = iterator.next(); + if(eightAm.getMstm() == null || eightAm.getSpprwl() == null){ iterator.remove(); } - if(eightAm.getSpprwl().compareTo(rule.getSyValue()) <=0){ - //如果当前监测值小于等于设置值,则跳过这套数据 + OsmoticPressDetailVo detailVo = new OsmoticPressDetailVo(); + + // 设置监测时间和监测值(管道水位) + String mstmStr = eightAm.getMstm().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + detailVo.setTm(mstmStr); + detailVo.setValue(eightAm.getSpprwl()); + + // 查找对应的库水位 + BigDecimal rzValue = findClosestRzValue(rzMap, mstmStr); + if(rzValue == null){ iterator.remove(); } + detailVo.setRz(rzValue); + //获取数据清洗规则 + SyDataCheckRule rule = syDataCheckRuleService.getByDvcd(dto.getDvcd()); + if(rule != null && rule.getIsAvailable() == 1){ + //校验这条数据是否符合规则 + if(rzValue.compareTo(rule.getRz()) >=0){ + //如果当前库水位大于等于设置库水位,则跳过这条数据 + iterator.remove(); + } + if(eightAm.getSpprwl().compareTo(rule.getSyValue()) <=0){ + //如果当前监测值小于等于设置值,则跳过这套数据 + iterator.remove(); + } + } + data.add(detailVo); } - data.add(detailVo); - } - if(data.isEmpty()){ + if(data.isEmpty()){ + return res; + } + res.setDatas(data); + res.setOne(queryData.get(0) != null?queryData.get(0).getRegressionEquation():null); + res.setTwo(queryData.get(1) != null?queryData.get(1).getRegressionEquation():null); + res.setThree(queryData.get(2) != null?queryData.get(2).getRegressionEquation():null); + res.setFour(queryData.get(3) != null?queryData.get(3).getRegressionEquation():null); + return res; + }else{ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + ProjectSafeCalculateVo res = new ProjectSafeCalculateVo(); + //根据dvcd查询stcd和mpcd + queryWrapper.eq(JcskSyB::getDvcd, dto.getDvcd()); + JcskSyB jcskSyB = jcskSyBService.getBaseMapper().selectOne(queryWrapper); + String stcd = jcskSyB.getStcd(); + String mpcd = jcskSyB.getMpcd(); + //取得这个时间段得所有八点得数据 + LambdaQueryWrapper eightAmLambdaQueryWrapper = new LambdaQueryWrapper<>(); + eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getStcd, stcd); + eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getMpcd, mpcd); + eightAmLambdaQueryWrapper.ge(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getStart()); + eightAmLambdaQueryWrapper.le(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getEnd()); + eightAmLambdaQueryWrapper.orderByAsc(JcskSyREightAm::getMstm); + List jcskSyREightAms = jcskSyREightAmMapper.selectList(eightAmLambdaQueryWrapper); + AttResBase attResBase = attResBaseService.list().get(0); + OsmoticQuerySo querySo = new OsmoticQuerySo(); + DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); + dateTimeRangeSo.setStart(dto.getDateTimeRangeSo().getStart()); + dateTimeRangeSo.setEnd(dto.getDateTimeRangeSo().getEnd()); + querySo.setDateTimeRangeSo(dateTimeRangeSo); + List stRzVos = baseMapper.qeury8AmRz(querySo,attResBase.getStcd()); + Map rzMap = stRzVos.stream() + .collect(Collectors.toMap( + StRzVo::getTm, // key: 时间 + StRzVo::getRz, // value: 水位 + (existing, replacement) -> existing // 如果key冲突,保留已存在的 + )); + //组合成为 时间 库水位 管道水位的数据 + List data = new ArrayList<>(); + Iterator iterator = jcskSyREightAms.iterator(); + while (iterator.hasNext()) { + JcskSyREightAm eightAm = iterator.next(); + if(eightAm.getMstm() == null || eightAm.getSpprwl() == null){ + iterator.remove(); + } + OsmoticPressDetailVo detailVo = new OsmoticPressDetailVo(); + + // 设置监测时间和监测值(管道水位) + String mstmStr = eightAm.getMstm().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + detailVo.setTm(mstmStr); + detailVo.setValue(eightAm.getSpprwl()); + + // 查找对应的库水位 + BigDecimal rzValue = findClosestRzValue(rzMap, mstmStr); + if(rzValue == null){ + iterator.remove(); + } + detailVo.setRz(rzValue); + //获取数据清洗规则 + SyDataCheckRule rule = syDataCheckRuleService.getByDvcd(dto.getDvcd()); + if(rule != null && rule.getIsAvailable() == 1){ + //校验这条数据是否符合规则 + if(rzValue.compareTo(rule.getRz()) >=0){ + //如果当前库水位大于等于设置库水位,则跳过这条数据 + iterator.remove(); + } + if(eightAm.getSpprwl().compareTo(rule.getSyValue()) <=0){ + //如果当前监测值小于等于设置值,则跳过这套数据 + iterator.remove(); + } + } + data.add(detailVo); + } + if(data.isEmpty()){ + return res; + } + res.setDatas(data); + List saves = new ArrayList<>(); + RegressionEquation first = RegressionAnalysis.calculateLinear(data); + LocalDateTime createTime = LocalDateTime.now(); + if(first != null){ + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(SyRegressionData::getDvcd, dto.getDvcd()); + query.eq(SyRegressionData::getOrder,1); + syRegressionDataService.remove(query); + res.setOne(first.toString()); + SyRegressionData syRegressionData = new SyRegressionData(); + syRegressionData.setOrder(1); + syRegressionData.setRegressionEquation(first.toString()); + syRegressionData.setDvcd(dto.getDvcd()); + syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); + syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); + syRegressionData.setCreateTime(createTime); + saves.add(syRegressionData); + } + RegressionEquation second = RegressionAnalysis.calculateQuadratic(data); + if(second != null){ + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(SyRegressionData::getDvcd, dto.getDvcd()); + query.eq(SyRegressionData::getOrder,2); + syRegressionDataService.remove(query); + res.setTwo(second.toString()); + SyRegressionData syRegressionData = new SyRegressionData(); + syRegressionData.setOrder(2); + syRegressionData.setRegressionEquation(second.toString()); + syRegressionData.setDvcd(dto.getDvcd()); + syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); + syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); + syRegressionData.setCreateTime(createTime); + saves.add(syRegressionData); + } + RegressionEquation three = RegressionAnalysis.calculateCubic(data); + if(three != null){ + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(SyRegressionData::getDvcd, dto.getDvcd()); + query.eq(SyRegressionData::getOrder,3); + syRegressionDataService.remove(query); + res.setThree(three.toString()); + SyRegressionData syRegressionData = new SyRegressionData(); + syRegressionData.setOrder(3); + syRegressionData.setRegressionEquation(three.toString()); + syRegressionData.setDvcd(dto.getDvcd()); + syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); + syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); + syRegressionData.setCreateTime(createTime); + saves.add(syRegressionData); + } + RegressionEquation four = RegressionAnalysis.calculateQuartic(data); + if(four != null){ + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(SyRegressionData::getDvcd, dto.getDvcd()); + query.eq(SyRegressionData::getOrder,4); + syRegressionDataService.remove(query); + res.setFour(four.toString()); + SyRegressionData syRegressionData = new SyRegressionData(); + syRegressionData.setOrder(4); + syRegressionData.setRegressionEquation(four.toString()); + syRegressionData.setDvcd(dto.getDvcd()); + syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); + syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); + syRegressionData.setCreateTime(createTime); + saves.add(syRegressionData); + } + syRegressionDataService.saveBatch(saves); return res; } - List saves = new ArrayList<>(); - RegressionEquation first = RegressionAnalysis.calculateLinear(data); - LocalDateTime createTime = LocalDateTime.now(); - if(first != null){ - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(SyRegressionData::getDvcd, dto.getDvcd()); - query.eq(SyRegressionData::getOrder,1); - syRegressionDataService.remove(query); - res.setOne(first.toString()); - SyRegressionData syRegressionData = new SyRegressionData(); - syRegressionData.setOrder(1); - syRegressionData.setRegressionEquation(first.toString()); - syRegressionData.setDvcd(dto.getDvcd()); - syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); - syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); - syRegressionData.setCreateTime(createTime); - saves.add(syRegressionData); - } - RegressionEquation second = RegressionAnalysis.calculateQuadratic(data); - if(second != null){ - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(SyRegressionData::getDvcd, dto.getDvcd()); - query.eq(SyRegressionData::getOrder,2); - syRegressionDataService.remove(query); - res.setTwo(second.toString()); - SyRegressionData syRegressionData = new SyRegressionData(); - syRegressionData.setOrder(2); - syRegressionData.setRegressionEquation(second.toString()); - syRegressionData.setDvcd(dto.getDvcd()); - syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); - syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); - syRegressionData.setCreateTime(createTime); - saves.add(syRegressionData); - } - RegressionEquation three = RegressionAnalysis.calculateCubic(data); - if(three != null){ - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(SyRegressionData::getDvcd, dto.getDvcd()); - query.eq(SyRegressionData::getOrder,3); - syRegressionDataService.remove(query); - res.setThree(three.toString()); - SyRegressionData syRegressionData = new SyRegressionData(); - syRegressionData.setOrder(3); - syRegressionData.setRegressionEquation(three.toString()); - syRegressionData.setDvcd(dto.getDvcd()); - syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); - syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); - syRegressionData.setCreateTime(createTime); - saves.add(syRegressionData); - } - RegressionEquation four = RegressionAnalysis.calculateQuartic(data); - if(four != null){ - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(SyRegressionData::getDvcd, dto.getDvcd()); - query.eq(SyRegressionData::getOrder,4); - syRegressionDataService.remove(query); - res.setFour(four.toString()); - SyRegressionData syRegressionData = new SyRegressionData(); - syRegressionData.setOrder(4); - syRegressionData.setRegressionEquation(four.toString()); - syRegressionData.setDvcd(dto.getDvcd()); - syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); - syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); - syRegressionData.setCreateTime(createTime); - saves.add(syRegressionData); - } - res.setDatas(data); - syRegressionDataService.saveBatch(saves); - return res; } /** diff --git a/src/main/java/com/gunshi/project/hsz/service/RiceRqWaterService.java b/src/main/java/com/gunshi/project/hsz/service/RiceRqWaterService.java index 2b828d8..17bb82c 100644 --- a/src/main/java/com/gunshi/project/hsz/service/RiceRqWaterService.java +++ b/src/main/java/com/gunshi/project/hsz/service/RiceRqWaterService.java @@ -307,7 +307,7 @@ public class RiceRqWaterService extends ServiceImpl icWaterForecastPage = icWaterForecastService.getBaseMapper().selectPage(pageSo.getPageSo().toPage(), queryWrapper); for (IcWaterForecast record : icWaterForecastPage.getRecords()) { List icWaterForecastDetails = icWaterForecastDetailService.listByForecastId(record.getId()); @@ -340,6 +341,7 @@ public class RiceSupportBalanceService extends ServiceImpl riceRqWaterPage = riceRqWaterService.getBaseMapper().selectPage(pageSo.getPageSo().toPage(), queryWrapper); List records = riceRqWaterPage.getRecords(); for (RiceRqWater record : records) { diff --git a/src/main/java/com/gunshi/project/hsz/timetask/JcskDataTask.java b/src/main/java/com/gunshi/project/hsz/timetask/JcskDataTask.java index fdcb029..f65d168 100644 --- a/src/main/java/com/gunshi/project/hsz/timetask/JcskDataTask.java +++ b/src/main/java/com/gunshi/project/hsz/timetask/JcskDataTask.java @@ -2,10 +2,14 @@ package com.gunshi.project.hsz.timetask; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.core.result.R; import com.gunshi.db.dto.DateTimeRangeSo; import com.gunshi.project.hsz.common.model.*; import com.gunshi.project.hsz.common.model.so.OsmoticQuerySo; import com.gunshi.project.hsz.common.model.vo.OsmoticShiftValueVo2; +import com.gunshi.project.hsz.common.util.LocalDateTimeConverter; +import com.gunshi.project.hsz.entity.dto.ProjectSafeCalculateDto; +import com.gunshi.project.hsz.entity.vo.ProjectSafeCalculateVo; import com.gunshi.project.hsz.mapper.JcskGnssREightAmMapper; import com.gunshi.project.hsz.common.mapper.JcskSlBMapper; import com.gunshi.project.hsz.mapper.JcskSlREightAmMapper; @@ -14,6 +18,7 @@ import com.gunshi.project.hsz.model.*; import com.gunshi.project.hsz.service.*; import com.gunshi.project.hsz.util.DateTransforUtil; import com.gunshi.project.hsz.util.DateUtil; +import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -22,6 +27,8 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.text.SimpleDateFormat; import java.time.LocalDateTime; @@ -78,6 +85,24 @@ public class JcskDataTask { public static final Integer GNSS = 3; +// @Scheduled(cron = "0 30 8 * * ?") + @Async + public void calculate(){ + List dvcds = jcskSyBService.getAllDvcd(); + for (String dvcd : dvcds) { + ProjectSafeCalculateDto dto = new ProjectSafeCalculateDto(); + LocalDateTime now = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(0); + LocalDateTime lastYear = now.minusYears(1); + lastYear = lastYear.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0); + DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); + dateTimeRangeSo.setStart(LocalDateTimeConverter.toDate(lastYear)); + dateTimeRangeSo.setEnd(LocalDateTimeConverter.toDate(now)); + dto.setDateTimeRangeSo(dateTimeRangeSo); + dto.setDvcd(dvcd); + ProjectSafeCalculateVo ans = jcskSyRService.calculate(dto); + } + } + // /** // * 每5分钟扫描渗流。渗压、位移表 生成预警