From 50fb447c68f6581426975146a9164064f7f3fc3c Mon Sep 17 00:00:00 2001 From: yangzhe123 <2824096059@qq.com> Date: Mon, 3 Nov 2025 16:47:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=AA=80=E6=A0=91=E5=B2=97?= =?UTF-8?q?=E7=9A=84=E6=B8=97=E6=B5=81=EF=BC=8C=E6=B8=97=E5=8E=8B=E3=80=82?= =?UTF-8?q?=E4=BD=8D=E7=A7=BB=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/gunshi/Tests.java | 77 ++ .../controller/AttDamProfileController.java | 1 + .../hsz/controller/DebugController.java | 31 + .../controller/ForecastProjectController.java | 2 +- .../hsz/controller/HiddenInfoController.java | 15 + .../hsz/controller/JcskByBController.java | 35 + .../hsz/controller/JcskByBDController.java | 55 + .../hsz/controller/JcskByRController.java | 103 ++ .../hsz/controller/JcskGnssBController.java | 98 ++ .../hsz/controller/JcskGnssRController.java | 141 +++ .../hsz/controller/JcskSlBController.java | 98 ++ .../hsz/controller/JcskSlRController.java | 70 ++ .../hsz/controller/JcskSyBController.java | 108 ++ .../hsz/controller/JcskSyRController.java | 166 +++ .../MentenceFarmerRecordController.java | 28 +- .../OsmoticFlowDeviceController.java | 6 +- .../controller/OsmoticFlowRController.java | 6 +- .../OsmoticPressDeviceController.java | 6 +- .../controller/OsmoticPressRController.java | 356 +++---- .../OsmoticShiftDeviceController.java | 6 +- .../controller/OsmoticShiftRController.java | 232 ++--- .../controller/TermiteSurveyController.java | 6 +- .../dto/ArtificialJcskGnssDeleteDto.java | 16 + .../entity/dto/ArtificialJcskSyDeleteDto.java | 18 + .../hsz/entity/dto/BusinessRuleDto.java | 33 + .../hsz/entity/dto/DispatchSchemeDto.java | 36 + .../hsz/entity/dto/ProjectSafetyDto.java | 33 + .../project/hsz/entity/dto/SqlRequest.java | 9 + .../project/hsz/entity/dto/StGateRDto.java | 19 + .../project/hsz/entity/so/JcskByBDPageSo.java | 21 + .../project/hsz/entity/so/JcskByRPageSo.java | 41 + .../hsz/entity/so/JcskGnssBPageSo.java | 20 + .../hsz/entity/so/JcskGnssRPageSo.java | 32 + .../project/hsz/entity/so/JcskSlBPageSo.java | 25 + .../project/hsz/entity/so/JcskSlRPageSo.java | 28 + .../project/hsz/entity/so/JcskSyBPageSo.java | 23 + .../project/hsz/entity/so/JcskSyRPageSo.java | 29 + .../project/hsz/entity/so/OsmoticQuerySo.java | 5 +- .../hsz/entity/so/WaterDevicePageSo.java | 27 + .../project/hsz/entity/vo/DmDvcdVo.java | 16 + .../project/hsz/entity/vo/GnssCdAndCdVo.java | 13 + .../hsz/entity/vo/HomeJcskGnssBVo.java | 38 + .../project/hsz/entity/vo/HomeJcskSYBVo.java | 26 + .../project/hsz/entity/vo/HomeJcskSlBVo.java | 26 + .../hsz/entity/vo/JcskByInspectDetailVo.java | 8 + .../hsz/entity/vo/JcskByRProcessVo.java | 28 + .../hsz/entity/vo/JcskGnessListVo.java | 64 ++ .../project/hsz/entity/vo/JcskGnssRHisVo.java | 64 ++ .../project/hsz/entity/vo/JcskSlRHisVo.java | 79 ++ .../project/hsz/entity/vo/JcskSyRHisVo.java | 77 ++ .../project/hsz/entity/vo/JcskSyRVo.java | 27 + .../hsz/entity/vo/OsmoticChartDetailVo2.java | 28 + .../hsz/entity/vo/OsmoticChartVo2.java | 50 + .../hsz/entity/vo/OsmoticShiftListVo2.java | 59 ++ .../hsz/entity/vo/OsmoticShiftValueVo2.java | 50 + .../hsz/entity/vo/OsmoticShiftVo2.java | 20 + .../hsz/entity/vo/OsmoticStationVo2.java | 20 + .../hsz/entity/vo/OsmoticValueVo2.java | 36 + .../project/hsz/entity/vo/SyStcdMpcdVo.java | 13 + .../project/hsz/mapper/InspectTaskMapper.java | 15 + .../project/hsz/mapper/JcskByBDMapper.java | 39 + .../project/hsz/mapper/JcskByBMapper.java | 9 + .../hsz/mapper/JcskByInspectTaskMapper.java | 9 + .../hsz/mapper/JcskByRProcessMapper.java | 10 + .../project/hsz/mapper/JcskGnssBMapper.java | 59 ++ .../hsz/mapper/JcskGnssREightAmMapper.java | 23 + .../project/hsz/mapper/JcskGnssRMapper.java | 231 +++++ .../project/hsz/mapper/JcskSlBMapper.java | 160 +++ .../hsz/mapper/JcskSlREightAmMapper.java | 19 + .../project/hsz/mapper/JcskSlRMapper.java | 82 ++ .../project/hsz/mapper/JcskSyBMapper.java | 59 ++ .../hsz/mapper/JcskSyREightAmMapper.java | 21 + .../project/hsz/mapper/JcskSyRMapper.java | 361 +++++++ .../hsz/mapper/OsmoticWarnRMapper.java | 12 +- .../project/hsz/mapper/StFlowRMapper.java | 44 + .../project/hsz/mapper/StWaterRMapper.java | 6 + .../hsz/mapper/WaterDataTermitesMapper.java | 185 ++++ .../project/hsz/mapper/WaterDeviceMapper.java | 9 + .../gunshi/project/hsz/model/HiddenInfo.java | 7 + .../com/gunshi/project/hsz/model/JcskByB.java | 208 ++++ .../gunshi/project/hsz/model/JcskByBD.java | 71 ++ .../project/hsz/model/JcskByInspectTask.java | 52 + .../com/gunshi/project/hsz/model/JcskByR.java | 123 +++ .../project/hsz/model/JcskByRProcess.java | 39 + .../gunshi/project/hsz/model/JcskGnssB.java | 53 + .../gunshi/project/hsz/model/JcskGnssR.java | 89 ++ .../project/hsz/model/JcskGnssREightAm.java | 30 + .../com/gunshi/project/hsz/model/JcskSlB.java | 114 ++ .../com/gunshi/project/hsz/model/JcskSlR.java | 82 ++ .../project/hsz/model/JcskSlREightAm.java | 74 ++ .../com/gunshi/project/hsz/model/JcskSyB.java | 138 +++ .../com/gunshi/project/hsz/model/JcskSyR.java | 94 ++ .../project/hsz/model/JcskSyREightAm.java | 78 ++ .../hsz/model/MentenceFarmerRecord.java | 13 +- .../project/hsz/model/OsmoticWarnR.java | 4 + .../project/hsz/model/OsmoticWarnRule.java | 5 + .../com/gunshi/project/hsz/model/StFlowR.java | 59 ++ .../hsz/service/AttDamProfileService.java | 18 +- .../hsz/service/ForecastResultsService.java | 1 + .../hsz/service/HiddenInfoService.java | 24 + .../project/hsz/service/JcskByBDService.java | 42 + .../project/hsz/service/JcskByBService.java | 15 + .../hsz/service/JcskByInspectTaskService.java | 54 + .../hsz/service/JcskByRProcessService.java | 90 ++ .../project/hsz/service/JcskByRService.java | 118 +++ .../project/hsz/service/JcskGnssBService.java | 50 + .../project/hsz/service/JcskGnssRService.java | 551 ++++++++++ .../project/hsz/service/JcskSlBService.java | 53 + .../project/hsz/service/JcskSlRService.java | 27 + .../project/hsz/service/JcskSyBService.java | 55 + .../project/hsz/service/JcskSyRService.java | 777 ++++++++++++++ .../service/MentenceFarmerRecordService.java | 64 +- .../hsz/service/OsmoticPressRService.java | 970 +++++++++--------- .../hsz/service/OsmoticShiftRService.java | 666 ++++++------ .../hsz/service/OsmoticWarnRService.java | 18 +- .../hsz/service/OsmoticWarnRuleService.java | 335 ++++-- .../project/hsz/service/StFlowRService.java | 40 + .../project/hsz/service/StStbprpBService.java | 16 +- .../project/hsz/service/StWaterRService.java | 4 +- .../hsz/service/WaterDeviceService.java | 35 + .../project/hsz/timetask/DataTaskHsz.java | 144 --- .../project/hsz/timetask/JcskDataTask.java | 476 +++++++++ .../project/hsz/timetask/PaDataTask.java | 2 +- .../project/hsz/timetask/PptnRDataTask.java | 115 +++ .../project/hsz/timetask/StWaterDataTask.java | 308 ++++++ .../project/hsz/util/DateTransforUtil.java | 190 ++++ 126 files changed, 9322 insertions(+), 1425 deletions(-) create mode 100644 src/main/java/com/gunshi/Tests.java create mode 100644 src/main/java/com/gunshi/project/hsz/controller/DebugController.java create mode 100644 src/main/java/com/gunshi/project/hsz/controller/HiddenInfoController.java create mode 100644 src/main/java/com/gunshi/project/hsz/controller/JcskByBController.java create mode 100644 src/main/java/com/gunshi/project/hsz/controller/JcskByBDController.java create mode 100644 src/main/java/com/gunshi/project/hsz/controller/JcskByRController.java create mode 100644 src/main/java/com/gunshi/project/hsz/controller/JcskGnssBController.java create mode 100644 src/main/java/com/gunshi/project/hsz/controller/JcskGnssRController.java create mode 100644 src/main/java/com/gunshi/project/hsz/controller/JcskSlBController.java create mode 100644 src/main/java/com/gunshi/project/hsz/controller/JcskSlRController.java create mode 100644 src/main/java/com/gunshi/project/hsz/controller/JcskSyBController.java create mode 100644 src/main/java/com/gunshi/project/hsz/controller/JcskSyRController.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskGnssDeleteDto.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskSyDeleteDto.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/dto/BusinessRuleDto.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/dto/DispatchSchemeDto.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/dto/ProjectSafetyDto.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/dto/SqlRequest.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/dto/StGateRDto.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/so/JcskByBDPageSo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/so/JcskByRPageSo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/so/JcskGnssBPageSo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/so/JcskGnssRPageSo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/so/JcskSlBPageSo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/so/JcskSlRPageSo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/so/JcskSyBPageSo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/so/JcskSyRPageSo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/so/WaterDevicePageSo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/DmDvcdVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/GnssCdAndCdVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/HomeJcskGnssBVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/HomeJcskSYBVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/HomeJcskSlBVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/JcskByInspectDetailVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/JcskByRProcessVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/JcskGnessListVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/JcskGnssRHisVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/JcskSlRHisVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/JcskSyRHisVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/JcskSyRVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartDetailVo2.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartVo2.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftListVo2.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftValueVo2.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftVo2.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticStationVo2.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticValueVo2.java create mode 100644 src/main/java/com/gunshi/project/hsz/entity/vo/SyStcdMpcdVo.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/JcskByBDMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/JcskByBMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/JcskByInspectTaskMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/JcskByRProcessMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/JcskGnssBMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/JcskGnssREightAmMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/JcskGnssRMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/JcskSlBMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/JcskSlREightAmMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/JcskSlRMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/JcskSyBMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/JcskSyREightAmMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/JcskSyRMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/StFlowRMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/WaterDataTermitesMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/mapper/WaterDeviceMapper.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskByB.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskByBD.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskByInspectTask.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskByR.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskByRProcess.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskGnssB.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskGnssR.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskGnssREightAm.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskSlB.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskSlR.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskSlREightAm.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskSyB.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskSyR.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/JcskSyREightAm.java create mode 100644 src/main/java/com/gunshi/project/hsz/model/StFlowR.java create mode 100644 src/main/java/com/gunshi/project/hsz/service/JcskByBDService.java create mode 100644 src/main/java/com/gunshi/project/hsz/service/JcskByBService.java create mode 100644 src/main/java/com/gunshi/project/hsz/service/JcskByInspectTaskService.java create mode 100644 src/main/java/com/gunshi/project/hsz/service/JcskByRProcessService.java create mode 100644 src/main/java/com/gunshi/project/hsz/service/JcskByRService.java create mode 100644 src/main/java/com/gunshi/project/hsz/service/JcskGnssBService.java create mode 100644 src/main/java/com/gunshi/project/hsz/service/JcskGnssRService.java create mode 100644 src/main/java/com/gunshi/project/hsz/service/JcskSlBService.java create mode 100644 src/main/java/com/gunshi/project/hsz/service/JcskSlRService.java create mode 100644 src/main/java/com/gunshi/project/hsz/service/JcskSyBService.java create mode 100644 src/main/java/com/gunshi/project/hsz/service/JcskSyRService.java create mode 100644 src/main/java/com/gunshi/project/hsz/service/StFlowRService.java create mode 100644 src/main/java/com/gunshi/project/hsz/service/WaterDeviceService.java create mode 100644 src/main/java/com/gunshi/project/hsz/timetask/JcskDataTask.java create mode 100644 src/main/java/com/gunshi/project/hsz/timetask/PptnRDataTask.java create mode 100644 src/main/java/com/gunshi/project/hsz/timetask/StWaterDataTask.java create mode 100644 src/main/java/com/gunshi/project/hsz/util/DateTransforUtil.java diff --git a/src/main/java/com/gunshi/Tests.java b/src/main/java/com/gunshi/Tests.java new file mode 100644 index 0000000..abb2ecd --- /dev/null +++ b/src/main/java/com/gunshi/Tests.java @@ -0,0 +1,77 @@ +package com.gunshi; + +import java.util.LinkedList; +import java.util.Queue; +import java.util.concurrent.CountDownLatch; + +public class Tests extends Thread { + + static Queue queue = new LinkedList<>(); + static int maxSize = 10; + + public static void main(String[] args) throws Exception { +// Tests tc = new Tests(); +// // 创建生产者线程 +// Thread producer = new Thread(() -> { +// try { +// int value = 0; +// while (true) { +// tc.produce(); +// Thread.sleep(2000); // 模拟生产耗时 +// } +// } catch (Exception e) { +// Thread.currentThread().interrupt(); +// } +// }); +// +// // 创建消费者线程 +// Thread consumer = new Thread(() -> { +// try { +// while (true) { +// tc.customer(); +// Thread.sleep(1500); // 模拟消费耗时 +// } +// } catch (Exception e) { +// Thread.currentThread().interrupt(); +// } +// }); +// +// producer.start(); +// consumer.start(); + CountDownLatch countDownLatch = new CountDownLatch(3); + for (int i = 0; i < 3; i++) { + new Thread(() -> { + System.out.println("执行任务中。。。"); + try { + Thread.sleep(1000); + countDownLatch.countDown(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }).start(); + } + countDownLatch.await(); + System.out.println("所有任务执行完毕"); + } + + public synchronized void produce() throws Exception{ + while (queue.size() == maxSize){ + System.out.println("队列已满,生产者等待..."); + wait(); + } + queue.offer(0); + System.out.println("生产者生产。。" + "队列大小为:" + queue.size()); + notifyAll(); + } + + + public synchronized void customer() throws Exception{ + while(queue.size() == 0){ + System.out.println("队列无数据,等待生产者生产"); + wait(); + } + queue.poll(); + System.out.println("消费者消费。。" + "队列大小为:" + queue.size()); + notifyAll(); + } +} diff --git a/src/main/java/com/gunshi/project/hsz/controller/AttDamProfileController.java b/src/main/java/com/gunshi/project/hsz/controller/AttDamProfileController.java index e3c5781..a0d3374 100644 --- a/src/main/java/com/gunshi/project/hsz/controller/AttDamProfileController.java +++ b/src/main/java/com/gunshi/project/hsz/controller/AttDamProfileController.java @@ -95,6 +95,7 @@ public class AttDamProfileController extends AbstractCommonFileController{ @Operation(summary = "列表") @PostMapping("/list") public R> list() { + LambdaQueryWrapper wq = new LambdaQueryWrapper(); wq.orderByAsc(AttDamProfile::getProfileCode); List list = service.list(wq); diff --git a/src/main/java/com/gunshi/project/hsz/controller/DebugController.java b/src/main/java/com/gunshi/project/hsz/controller/DebugController.java new file mode 100644 index 0000000..361701c --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/controller/DebugController.java @@ -0,0 +1,31 @@ +package com.gunshi.project.hsz.controller; + +import com.gunshi.project.hsz.timetask.PaDataTask; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.ParseException; + +@Tag(name = "后门") +@RestController +@RequestMapping(value="/debug") +public class DebugController { + + + @Autowired + private PaDataTask paDataTask; + + + @GetMapping("/patask") + public String patask(){ + try { + paDataTask.PaDataCalc(); + return "成功"; + } catch (ParseException e) { + return "失败"; + } + } +} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ForecastProjectController.java b/src/main/java/com/gunshi/project/hsz/controller/ForecastProjectController.java index 7939a9a..b3c651b 100644 --- a/src/main/java/com/gunshi/project/hsz/controller/ForecastProjectController.java +++ b/src/main/java/com/gunshi/project/hsz/controller/ForecastProjectController.java @@ -185,7 +185,7 @@ public class ForecastProjectController { @Operation(summary = "pdf导出") - @GetMapping("export") + @PostMapping("export") public void export(@RequestParam("ids") List ids, HttpServletResponse response) { try { // 设置响应头 diff --git a/src/main/java/com/gunshi/project/hsz/controller/HiddenInfoController.java b/src/main/java/com/gunshi/project/hsz/controller/HiddenInfoController.java new file mode 100644 index 0000000..5e0c6b2 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/controller/HiddenInfoController.java @@ -0,0 +1,15 @@ +package com.gunshi.project.hsz.controller; + +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "维护养护-隐患点") +@RestController +@RequestMapping(value="/hiddeninfo") +public class HiddenInfoController extends AbstractCommonFileController { + @Override + public String getGroupId() { + return "hiddeninfo"; + } +} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskByBController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskByBController.java new file mode 100644 index 0000000..c9f1480 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/controller/JcskByBController.java @@ -0,0 +1,35 @@ +package com.gunshi.project.hsz.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.hsz.entity.so.WaterDevicePageSo; +import com.gunshi.project.hsz.model.JcskByB; +import com.gunshi.project.hsz.service.WaterDeviceService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "白蚁监测设备") +@RestController +@RequestMapping(value="/jcskByB") +public class JcskByBController { + @Autowired + private WaterDeviceService service; + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated WaterDevicePageSo page) { + return R.ok(service.pageQuery(page)); + } + +// @Operation(summary = "新增") +// public R insert(@Validated(Insert.class) @RequestBody JcskByB dto) { +// return R.ok(service.saveDate(dto)); +// } +} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskByBDController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskByBDController.java new file mode 100644 index 0000000..f77db03 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/controller/JcskByBDController.java @@ -0,0 +1,55 @@ +package com.gunshi.project.hsz.controller;//package com.gunshi.project.xyt.controller; +// +//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +//import com.gunshi.core.result.R; +//import com.gunshi.project.xyt.entity.so.JcskByBDPageSo; +//import com.gunshi.project.xyt.model.JcskByB; +//import com.gunshi.project.xyt.model.JcskByBD; +//import com.gunshi.project.xyt.service.JcskByBDService; +//import com.gunshi.project.xyt.service.JcskByBService; +//import io.swagger.v3.oas.annotations.Operation; +//import io.swagger.v3.oas.annotations.tags.Tag; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.validation.annotation.Validated; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.List; +// +//public class JcskByBDController { +// +// +// @Autowired +// private JcskByBDService jcskByBDService; +// +// @Autowired +// private JcskByBService jcskByBService; +// +// +// @Operation(summary = "分页") +// @PostMapping("/page") +// public R> page(@RequestBody @Validated JcskByBDPageSo page){ +// Page res = jcskByBDService.pageQuery(page); +// return R.ok(res); +// } +// +// @Operation(summary = "列表") +// @GetMapping("/list") +// public R> list(){ +// List res = jcskByBDService.list(); +// return R.ok(res); +// } +// +// @Operation(summary = "获取白蚁机箱设备") +// @GetMapping("/list/byDevice") +// public R> getJcskByBD(){ +// return R.ok(jcskByBService.lambdaQuery().list()); +// } +// +// @Operation(summary = "获取所有设备编码") +// @GetMapping("/list/device") +// public R> listDevices(){ +// List res = jcskByBDService.listDevices(); +// return R.ok(res); +// } +// +//} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskByRController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskByRController.java new file mode 100644 index 0000000..bfe4c1c --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/controller/JcskByRController.java @@ -0,0 +1,103 @@ +package com.gunshi.project.hsz.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.hsz.entity.so.JcskByRPageSo; +import com.gunshi.project.hsz.model.JcskByB; +import com.gunshi.project.hsz.model.JcskByBD; +import com.gunshi.project.hsz.model.JcskByR; +import com.gunshi.project.hsz.model.JcskByRProcess; +import com.gunshi.project.hsz.service.JcskByBDService; +import com.gunshi.project.hsz.service.JcskByBService; +import com.gunshi.project.hsz.service.JcskByRProcessService; +import com.gunshi.project.hsz.service.JcskByRService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Tag(name = "白蚁监测数据") +@RestController +@RequestMapping(value="/termite/survey") +public class JcskByRController { + + + @Autowired + private JcskByRService service; + + @Autowired + private JcskByRProcessService jcskByRProcessService; + + @Autowired + private JcskByBService jcskByBService; + + @Operation(summary = "分页") + @PostMapping("/pageDetail") + public R> page(@RequestBody @Validated JcskByRPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "统计白蚁有无") + @PostMapping("/count") + public R> count(@RequestBody @Validated JcskByRPageSo page){ + page.getPageSo().setPageSize(1000000); + Map countMap = new HashMap<>(); + countMap.put("totalPoint",0l); + countMap.put("hasAnt",0l); + countMap.put("notAnt",0l); + countMap.put("noData",0l); + Map res = service.pageQueryCount(page,countMap); + return R.ok(res); + } + + @Operation(summary = "根据测点编号查询时间范围内的所有数据") + @PostMapping("/detail") + public R> detailList(@RequestBody @Validated JcskByRPageSo page){ + return R.ok(service.detailList(page)); + } + + + @Autowired + private JcskByBDService jcskByBDService; + + + @Operation(summary = "获取所有白蚁测点信息") + @PostMapping("/list/allOrder") + public R> listAllOrder(@RequestBody JcskByRPageSo page){ + return R.ok(jcskByBDService.listAll(page.getObDate())); + } + + @Operation(summary = "获取白蚁机箱设备") + @GetMapping("/list/byDevice") + public R> getJcskByBD(){ + return R.ok(jcskByBService.lambdaQuery().list()); + } + + @Operation(summary = "获取所有设备编码") + @GetMapping("/list/device") + public R> listDevices(){ + List res = jcskByBDService.listDevices(); + return R.ok(res); + } + + @Operation(summary = "处理") + @PostMapping("/process") + public R process(@RequestBody JcskByRProcess jcskByRProcess){ + Boolean flag = jcskByRProcessService.process(jcskByRProcess); + return R.ok(flag); + } + + @Operation(summary = "查询所有测点最新的一条数据") + @GetMapping("/listNewData") + public R> listNewData(@RequestParam(value = "deviceId",required = false) String deviceId){ + List res = service.listNewData(deviceId); + return R.ok(res); + } + + +} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskGnssBController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskGnssBController.java new file mode 100644 index 0000000..daf7fb9 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/controller/JcskGnssBController.java @@ -0,0 +1,98 @@ +package com.gunshi.project.hsz.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.hsz.entity.so.JcskGnssBPageSo; +import com.gunshi.project.hsz.entity.vo.HomeJcskGnssBVo; +import com.gunshi.project.hsz.model.JcskGnssB; +import com.gunshi.project.hsz.service.JcskGnssBService; +import com.gunshi.project.hsz.validate.markers.Insert; +import com.gunshi.project.hsz.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +@Tag(name = "位移设备Controller") +@RestController +@RequestMapping(value="/osmoticShiftDevice") +public class JcskGnssBController { + + @Autowired + private JcskGnssBService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody JcskGnssB dto) { + if (Objects.nonNull(service.getById(dto.getCd()))) { + throw new IllegalArgumentException("当前编号已存在"); + } + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody JcskGnssB dto) { + if (Objects.isNull(service.getById(dto.getCd()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated JcskGnssBPageSo page) { + return R.ok(service.pageQuery(page)); + } + + + @Operation(summary = "详情和监测数据查询(暂无设备表,无法使用)") + @PostMapping("/getDetailsAndMonitoringDataList") + public R> getDetailsAndMonitoringDataList() { + return R.ok(service.getDetailsAndMonitoringDataList()); + } + + @Operation(summary = "根据id查询详细数据") + @GetMapping("/getDetailsById") + public R getDetailsById(@RequestParam(name = "id") String id) { + HomeJcskGnssBVo byId = service.getDetailsById(id); + return R.ok(byId); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + List list = service.lambdaQuery() + .orderByAsc(JcskGnssB::getCd) + .list(); + list.stream().forEach(o ->{ + o.setStationCode(o.getCd()); + }); + return R.ok(list); + } + + @Operation(summary = "获取位移的断面数据") + @GetMapping("/list/dm") + public R> listDm(){ + + List res = service.listDms(); + return R.ok(res); + } + +} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskGnssRController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskGnssRController.java new file mode 100644 index 0000000..dcd0d97 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/controller/JcskGnssRController.java @@ -0,0 +1,141 @@ +package com.gunshi.project.hsz.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.hsz.entity.dto.ArtificialJcskGnssDeleteDto; +import com.gunshi.project.hsz.entity.so.JcskGnssRPageSo; +import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; +import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; +import com.gunshi.project.hsz.entity.vo.*; +import com.gunshi.project.hsz.model.JcskGnssB; +import com.gunshi.project.hsz.model.JcskGnssR; +import com.gunshi.project.hsz.service.JcskGnssBService; +import com.gunshi.project.hsz.service.JcskGnssRService; +import com.gunshi.project.hsz.validate.markers.Insert; +import com.gunshi.project.hsz.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Tag(name = "位移R表") +@RestController +@RequestMapping(value="/osmoticShiftR") +public class JcskGnssRController { + + @Autowired + private JcskGnssRService service; + + @Autowired + private JcskGnssBService jcskGnssBService; + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated JcskGnssRPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "历史") + @PostMapping("/history") + public R> historyPage(@RequestBody @Validated JcskGnssRPageSo page) { + return R.ok(service.historyPage(page)); + } + + @Operation(summary = "人工分页") + @PostMapping("/artificial/page") + public R> artificialPage(@RequestBody @Validated JcskGnssRPageSo page) { + return R.ok(service.artificialPage(page)); + } + + @Operation(summary = "人工分页-导出") + @PostMapping("/artificial/export") + public void artificialExport(@RequestBody @Validated JcskGnssRPageSo page,HttpServletResponse response){ + service.artificialExport(page,response); + } + + + @Operation(summary = "新增") + @PostMapping("/artificial/insert") + public R insert(@Validated(Insert.class) @RequestBody JcskGnssR dto) { +// // 通过时间戳去除毫秒 +// long currentTime = System.currentTimeMillis(); +// long seconds = currentTime / 1000; // 去掉毫秒部分 +// Date dateWithoutMillis = new Date(seconds * 1000); // 转回毫秒时间戳 +// dto.setTm(dateWithoutMillis); + boolean result = service.saveData(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "获取人工录入测点") + @GetMapping("/artificial/tree") + public R> artificialTree() { + List res = jcskGnssBService.artificialTree(); + return R.ok(res); + } + + + @Operation(summary = "修改") + @PostMapping("/artificial/update") + public R update(@Validated(Update.class) @RequestBody JcskGnssR dto) { + boolean update = service.updateData(dto); + return R.ok(update ? dto : null); + } + + @Operation(summary = "删除") + @PostMapping("/artificial/delete") + public R del(@RequestBody @Validated ArtificialJcskGnssDeleteDto dto) { + boolean delete = service.deleteData(dto); + return R.ok(delete); + } + + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + + @Operation(summary = "获取断面对应测点编号") + @GetMapping("/tree") + public R> getChAndCd() { + List res = service.getChAndCd(); + return R.ok(res); + } + + + @Operation(summary = "年度位移统计(表格)") + @PostMapping("/year/stat") + public R> yearStat(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.yearStat(osmoticQuerySo)); + } + + @Operation(summary = "年度位移统计(全年度特征值统计)") + @PostMapping("/year/stat/value") + public R> yearStatValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.yearStatValue(osmoticQuerySo)); + } + + @Operation(summary = "年度位移统计导出") + @PostMapping( "/year/stat/export") + public void yearStatExport(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { + service.yearStatExport(osmoticQuerySo,response); + } + + @Operation(summary = "布置图-位移监测") + @GetMapping("/list/value") + public R> listValue() { + return R.ok(service.listValue()); + } + + @Operation(summary = "布置图-按测站查询位移监测数据") + @PostMapping("/detail/value") + public R> detailValue(@RequestBody @Validated OsmoticDetailQuerySo so) { + return R.ok(service.detailValue(so)); + } +} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskSlBController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskSlBController.java new file mode 100644 index 0000000..137cebd --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/controller/JcskSlBController.java @@ -0,0 +1,98 @@ +package com.gunshi.project.hsz.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.hsz.entity.so.JcskSlBPageSo; +import com.gunshi.project.hsz.entity.vo.HomeJcskSlBVo; +import com.gunshi.project.hsz.model.JcskSlB; +import com.gunshi.project.hsz.service.JcskSlBService; +import com.gunshi.project.hsz.validate.markers.Insert; +import com.gunshi.project.hsz.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +@Tag(name = "渗压测力点-设备基础信息") +@RestController +@RequestMapping(value="/osmoticFlowDevice") +public class JcskSlBController { + @Autowired + private JcskSlBService service; + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated JcskSlBPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody JcskSlB dto) { + if (Objects.nonNull(service.getById(dto.getMpcd()))) { + throw new IllegalArgumentException("当前编号已存在"); + } + + dto.setDtuptm(new Date()); + boolean result = service.save(dto); +// if (result){ +// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); +// } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody JcskSlB dto) { + if (Objects.isNull(service.getById(dto.getMpcd()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + dto.setDtuptm(null); + boolean result = service.updateById(dto); +// if (result){ +// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); +// } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + List list = service.lambdaQuery().list(); + list.stream().forEach(o ->{ + o.setStationCode(o.getDvcd()); + }); + return R.ok(list); + } + + + @Operation(summary = "详情和监测数据查询") + @PostMapping("/getDetailsAndMonitoringDataList") + public R> getDetailsAndMonitoringDataList() { + return R.ok(service.getDetailsAndMonitoringDataList()); + } + + @Operation(summary = "根据id查询详细数据") + @GetMapping("/getDetailsById") + public R getDetailsById(@RequestParam(name = "id") String id) { + HomeJcskSlBVo byId = service.getDetailsById(id.toString()); + return R.ok(byId); + } +} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskSlRController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskSlRController.java new file mode 100644 index 0000000..f2cef5f --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/controller/JcskSlRController.java @@ -0,0 +1,70 @@ +package com.gunshi.project.hsz.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.hsz.entity.so.JcskSlRPageSo; +import com.gunshi.project.hsz.entity.vo.JcskSlRHisVo; +import com.gunshi.project.hsz.model.JcskSlR; +import com.gunshi.project.hsz.service.JcskSlRService; +import com.gunshi.project.hsz.validate.markers.Insert; +import com.gunshi.project.hsz.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +@Tag(name = "渗流量(剔除异常)") +@RestController +@RequestMapping(value="/osmoticFlowR") +public class JcskSlRController { + + + @Autowired + private JcskSlRService service; + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated JcskSlRPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "分页") + @PostMapping("/history") + public R> historyPage(@RequestBody @Validated JcskSlRPageSo page) { + return R.ok(service.historyPage(page)); + } + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody JcskSlR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody JcskSlR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } +} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskSyBController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskSyBController.java new file mode 100644 index 0000000..4190890 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/controller/JcskSyBController.java @@ -0,0 +1,108 @@ +package com.gunshi.project.hsz.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.hsz.entity.so.JcskSyBPageSo; +import com.gunshi.project.hsz.entity.vo.HomeJcskSYBVo; +import com.gunshi.project.hsz.model.JcskSyB; +import com.gunshi.project.hsz.service.JcskSyBService; +import com.gunshi.project.hsz.validate.markers.Insert; +import com.gunshi.project.hsz.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Objects; + +@Tag(name = "测压管表") +@RestController +@RequestMapping(value="/osmoticPressDevice") +public class JcskSyBController extends AbstractCommonFileController { + + + @Autowired + private JcskSyBService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody JcskSyB dto) { + if (Objects.nonNull(service.getById(dto.getMpcd()))) { + throw new IllegalArgumentException("当前编号已存在"); + } + dto.setDtuptm(LocalDateTime.now()); + boolean result = service.save(dto); +// if (result){ +// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); +// } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody JcskSyB dto) { + if (Objects.isNull(service.getById(dto.getMpcd()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + dto.setDtuptm(LocalDateTime.now()); + boolean result = service.updateById(dto); +// if (result){ +// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); +// } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated JcskSyBPageSo page) { + return R.ok(service.pageQuery(page)); + } + + + + @Operation(summary = "详情和监测数据查询") + @PostMapping("/getDetailsAndMonitoringDataList") + public R> getDetailsAndMonitoringDataList() { + return R.ok(service.getDetailsAndMonitoringDataList()); + } + + @Operation(summary = "根据id查询详细数据") + @GetMapping("/getDetailsById") + public R getDetailsById(@RequestParam(name = "id") String id) { + HomeJcskSYBVo byId = service.getDetailsById(id); + return R.ok(byId); + } + + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + List list = service.lambdaQuery().list(); + list.stream().forEach(item -> { + item.setStationCode(item.getDvcd()); + }); + return R.ok(list); + } + + @Override + public String getGroupId() { + return "OsmoticPressDevice"; + } +} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskSyRController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskSyRController.java new file mode 100644 index 0000000..4d19cb3 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/controller/JcskSyRController.java @@ -0,0 +1,166 @@ +package com.gunshi.project.hsz.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; + +import com.gunshi.project.hsz.entity.dto.ArtificialJcskSyDeleteDto; +import com.gunshi.project.hsz.entity.so.JcskSyRPageSo; +import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; +import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; +import com.gunshi.project.hsz.entity.vo.*; +import com.gunshi.project.hsz.model.JcskSyR; +import com.gunshi.project.hsz.service.JcskSyRService; +import com.gunshi.project.hsz.validate.markers.Insert; +import com.gunshi.project.hsz.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +@Tag(name = "渗流压力水位") +@RestController +@RequestMapping(value="/osmoticPressR") +public class JcskSyRController { + @Autowired + private JcskSyRService service; + + @Operation(summary = "获取dvcd") + @GetMapping("/list/dvcd") + public R> listDvcd(){ + List res = service.listDvcd(); + return R.ok(res); + } + + @Operation(summary = "获取测站编码和测站编号") + @GetMapping("/list/stcdMpcd") + public R> listStcdMpcd(){ + return R.ok(service.listStcdMpcd()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated JcskSyRPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "人工分页") + @PostMapping("/artificial/page") + public R> artificialPage(@RequestBody @Validated JcskSyRPageSo page) { + return R.ok(service.artificialPage(page)); + } + + @Operation(summary = "人工分页-导出") + @PostMapping("/artificial/export") + public void artificialExport(@RequestBody @Validated JcskSyRPageSo page,HttpServletResponse response){ + service.artificialExport(page,response); + } + + @Operation(summary = "历史") + @PostMapping("/history") + public R> historyPage(@RequestBody @Validated JcskSyRPageSo page) { + return R.ok(service.historyPage(page)); + } + + + @Operation(summary = "新增") + @PostMapping("/artificial/insert") + public R insert(@Validated(Insert.class) @RequestBody JcskSyR dto) { +// // 通过时间戳去除毫秒 +// long currentTime = System.currentTimeMillis(); +// long seconds = currentTime / 1000; // 去掉毫秒部分 +// Date dateWithoutMillis = new Date(seconds * 1000); // 转回毫秒时间戳 +// dto.setTm(dateWithoutMillis); + boolean result = service.saveData(dto); + return R.ok(result ? dto : null); + } + + + @Operation(summary = "修改") + @PostMapping("/artificial/update") + public R update(@Validated(Update.class) @RequestBody JcskSyR dto) { + boolean update = service.updateData(dto); + return R.ok(update ? dto : null); + } + + @Operation(summary = "删除") + @PostMapping("/artificial/delete") + public R del(@RequestBody @Validated ArtificialJcskSyDeleteDto dto) { + boolean delete = service.deleteData(dto); + return R.ok(delete); + } + + @Operation(summary = "大屏-大坝安全监测统计") + @GetMapping("/stat") + public R> stat() { + return R.ok(service.stat()); + } + + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "布置图-渗压/渗流监测") + @GetMapping("/list/value") + public R> listValue(@Schema(name = "type",description = "类型(1渗压 2渗流)") @RequestParam("type") Integer type) { + return R.ok(service.listValue(type)); + } + + + + @Operation(summary = "布置图-按测站查询渗压/渗流监测数据") + @PostMapping("/detail/value") + public R> detailValue(@RequestBody @Validated OsmoticDetailQuerySo so) { + return R.ok(service.detailValue(so)); + } + + @Operation(summary = "测值查询(数据表)") + @PostMapping("/query/value") + public R> queryValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.queryValue(osmoticQuerySo,null)); + } + + @Operation(summary = "测值查询(多图单表)") + @PostMapping("/query/chart") + public R> queryChart(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.queryChart(osmoticQuerySo,null)); + } + + @Operation(summary = "浸润线查询") + @PostMapping("/infiltra/line") + public R> infiltraLine(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.infiltraLine(osmoticQuerySo)); + } + + @Operation(summary = "浸润线导出") + @PostMapping( "/export") + public void export(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { + service.export(osmoticQuerySo,response); + } + + @Operation(summary = "年度渗压/渗流统计(表格)") + @PostMapping("/year/stat") + public R> yearStat(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.yearStat(osmoticQuerySo)); + } + + @Operation(summary = "年度渗压/渗流统计(全年度特征值统计)") + @PostMapping("/year/stat/value") + public R> yearStatValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.yearStatValue(osmoticQuerySo)); + } + + @Operation(summary = "年度渗压/渗流统计导出") + @PostMapping( "/year/stat/export") + public void yearStatExport(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { + service.yearStatExport(osmoticQuerySo,response); + } +} diff --git a/src/main/java/com/gunshi/project/hsz/controller/MentenceFarmerRecordController.java b/src/main/java/com/gunshi/project/hsz/controller/MentenceFarmerRecordController.java index d505742..5177a64 100644 --- a/src/main/java/com/gunshi/project/hsz/controller/MentenceFarmerRecordController.java +++ b/src/main/java/com/gunshi/project/hsz/controller/MentenceFarmerRecordController.java @@ -6,6 +6,7 @@ import com.gunshi.core.result.R; import com.gunshi.project.hsz.entity.dto.ExportCommonDto; import com.gunshi.project.hsz.entity.so.MentenceFarmerRecordPageSo; import com.gunshi.project.hsz.model.ByLog; +import com.gunshi.project.hsz.model.HiddenInfo; import com.gunshi.project.hsz.model.MentenceFarmerRecord; import com.gunshi.project.hsz.service.FileAssociationsService; import com.gunshi.project.hsz.service.HiddenInfoService; @@ -48,6 +49,9 @@ public class MentenceFarmerRecordController extends AbstractCommonFileControlle boolean result = mentenceFarmerRecordService.saveDate(dto); if(result){ fileService.saveFile(dto.getFiles(),getGroupId(),dto.getId().toString()); + for (HiddenInfo detail : dto.getDetails()) { + hiddenInfoService.saveFile(detail.getFiles(),detail.getId().toString()); + } } return R.ok(result ? dto : null); } @@ -59,6 +63,9 @@ public class MentenceFarmerRecordController extends AbstractCommonFileControlle boolean flag = mentenceFarmerRecordService.update(dto); if (flag) { fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + for (HiddenInfo detail : dto.getDetails()) { + hiddenInfoService.saveFile(detail.getFiles(),detail.getId().toString()); + } } return R.ok(flag ? dto : null); } @@ -66,9 +73,12 @@ public class MentenceFarmerRecordController extends AbstractCommonFileControlle @Operation(summary = "删除") @GetMapping("/del/{id}") public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - boolean result = mentenceFarmerRecordService.delete(id); - if(result){ + List res = mentenceFarmerRecordService.delete(id); + if(res != null){ fileService.deleteFile(getGroupId(),id.toString()); + for (Long cid : res) { + hiddenInfoService.deleteFile(String.valueOf(cid)); + } } return R.ok(true); } @@ -78,9 +88,17 @@ public class MentenceFarmerRecordController extends AbstractCommonFileControlle public R> page(@RequestBody MentenceFarmerRecordPageSo pageSo) { Page byPage = mentenceFarmerRecordService.pageQuery(pageSo); if(!CollectionUtils.isEmpty(byPage.getRecords())){ - byPage.getRecords().forEach(o -> o.setFiles( - fileService.getFiles(getGroupId(),o.getId().toString()) - )); + byPage.getRecords().forEach(o ->{ + + o.setFiles( + fileService.getFiles(getGroupId(),o.getId().toString()) + ); + + List details = o.getDetails(); + details.forEach(detail -> { + detail.setFiles(hiddenInfoService.getFiles(detail.getId().toString())); + }); + }); } return R.ok(byPage); } diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowDeviceController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowDeviceController.java index 23cd903..e2644f3 100644 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowDeviceController.java +++ b/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowDeviceController.java @@ -29,9 +29,9 @@ import java.util.Objects; * author: xusan * date: 2024-07-08 17:40:37 */ -@Tag(name = "渗流设备表") -@RestController -@RequestMapping(value="/osmoticFlowDevice") +//@Tag(name = "渗流设备表") +//@RestController +//@RequestMapping(value="/osmoticFlowDevice") public class OsmoticFlowDeviceController extends AbstractCommonFileController{ @Autowired diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowRController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowRController.java index bc24221..e63cf0e 100644 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowRController.java +++ b/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowRController.java @@ -21,9 +21,9 @@ import java.util.List; * author: xusan * date: 2024-07-08 17:40:37 */ -@Tag(name = "渗流监测记录表") -@RestController -@RequestMapping(value="/osmoticFlowR") +//@Tag(name = "渗流监测记录表") +//@RestController +//@RequestMapping(value="/osmoticFlowR") public class OsmoticFlowRController { @Autowired diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticPressDeviceController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticPressDeviceController.java index 8ce1f4d..2db1904 100644 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticPressDeviceController.java +++ b/src/main/java/com/gunshi/project/hsz/controller/OsmoticPressDeviceController.java @@ -29,9 +29,9 @@ import java.util.Objects; * author: xusan * date: 2024-07-08 17:40:37 */ -@Tag(name = "渗压设备表") -@RestController -@RequestMapping(value="/osmoticPressDevice") +//@Tag(name = "渗压设备表") +//@RestController +//@RequestMapping(value="/osmoticPressDevice") public class OsmoticPressDeviceController extends AbstractCommonFileController{ @Autowired diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticPressRController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticPressRController.java index de8bf54..d5a3325 100644 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticPressRController.java +++ b/src/main/java/com/gunshi/project/hsz/controller/OsmoticPressRController.java @@ -1,178 +1,178 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; -import com.gunshi.project.hsz.entity.so.OsmoticQueryPageSo; -import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; -import com.gunshi.project.hsz.entity.vo.OsmoticChartVo; -import com.gunshi.project.hsz.entity.vo.OsmoticPressDetailVo; -import com.gunshi.project.hsz.entity.vo.OsmoticPressVo; -import com.gunshi.project.hsz.entity.vo.OsmoticStationVo; -import com.gunshi.project.hsz.model.OsmoticPressDevice; -import com.gunshi.project.hsz.model.OsmoticPressR; -import com.gunshi.project.hsz.service.OsmoticPressDeviceService; -import com.gunshi.project.hsz.service.OsmoticPressRService; -import com.gunshi.project.hsz.validate.markers.Insert; -import com.gunshi.project.hsz.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 描述: 渗压监测记录表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "渗压监测记录表") -@RestController -@RequestMapping(value="/osmoticPressR") -public class OsmoticPressRController { - - @Autowired - private OsmoticPressRService service; - - @Autowired - private OsmoticPressDeviceService osmoticPressDeviceService; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody OsmoticPressR dto) { -// // 通过时间戳去除毫秒 -// long currentTime = System.currentTimeMillis(); -// long seconds = currentTime / 1000; // 去掉毫秒部分 -// Date dateWithoutMillis = new Date(seconds * 1000); // 转回毫秒时间戳 -// dto.setTm(dateWithoutMillis); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody OsmoticPressR dto) { - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(OsmoticPressR::getTm, dto.getTm()) - .eq(OsmoticPressR::getStationCode, dto.getStationCode()) - .set(OsmoticPressR::getPress, dto.getPress()) - .set(OsmoticPressR::getVib, dto.getVib()) - .set(OsmoticPressR::getTemp, dto.getTemp()) - .set(OsmoticPressR::getValue, dto.getValue()) - .set(OsmoticPressR::getChan, dto.getChan()); - boolean update = service.update(null, wrapper); - return R.ok(update ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}/{tm}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id,@Schema(name = "tm") @PathVariable("tm") Serializable tm) { - if(Objects.isNull(id) || Objects.isNull(tm)){ - return R.ok(false); - } - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("station_code", id).eq("tm", tm); - return R.ok(service.remove(wrapper)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody OsmoticQueryPageSo osmoticQueryPageSo) { - Page osmoticPressRPage = service.queryPage(osmoticQueryPageSo); - List records = osmoticPressRPage.getRecords(); - if(CollectionUtils.isEmpty(records)){ - return R.ok(osmoticPressRPage); - } - List collect = records.stream().peek(e -> { - LambdaQueryWrapper wq = new LambdaQueryWrapper(); - wq.eq(OsmoticPressDevice::getStationCode, e.getStationCode()); - List list = osmoticPressDeviceService.list(wq); - if (CollectionUtils.isNotEmpty(list)) { - OsmoticPressDevice osmoticPressDevice = list.stream().findFirst().orElse(null); - e.setProfileCode(osmoticPressDevice.getProfileCode()); - } - }).collect(Collectors.toList()); - osmoticPressRPage.setRecords(collect); - return R.ok(osmoticPressRPage); - } - - @Operation(summary = "大屏-大坝安全监测统计") - @GetMapping("/stat") - public R> stat() { - return R.ok(service.stat()); - } - - @Operation(summary = "布置图-渗压/渗流监测") - @GetMapping("/list/value") - public R> listValue(@Schema(name = "type",description = "类型(1渗压 2渗流)") @RequestParam("type") Integer type) { - return R.ok(service.listValue(type)); - } - - @Operation(summary = "布置图-按测站查询渗压/渗流监测数据") - @PostMapping("/detail/value") - public R> detailValue(@RequestBody @Validated OsmoticDetailQuerySo so) { - return R.ok(service.detailValue(so)); - } - - @Operation(summary = "测值查询(数据表)") - @PostMapping("/query/value") - public R> queryValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.queryValue(osmoticQuerySo,null)); - } - - @Operation(summary = "测值查询(多图单表)") - @PostMapping("/query/chart") - public R> queryChart(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.queryChart(osmoticQuerySo,null)); - } - - @Operation(summary = "浸润线查询") - @PostMapping("/infiltra/line") - public R> infiltraLine(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.infiltraLine(osmoticQuerySo)); - } - - @Operation(summary = "浸润线导出") - @PostMapping( "/export") - public void export(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { - service.export(osmoticQuerySo,response); - } - - @Operation(summary = "年度渗压/渗流统计(表格)") - @PostMapping("/year/stat") - public R> yearStat(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.yearStat(osmoticQuerySo)); - } - - @Operation(summary = "年度渗压/渗流统计(全年度特征值统计)") - @PostMapping("/year/stat/value") - public R> yearStatValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.yearStatValue(osmoticQuerySo)); - } - - @Operation(summary = "年度渗压/渗流统计导出") - @PostMapping( "/year/stat/export") - public void yearStatExport(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { - service.yearStatExport(osmoticQuerySo,response); - } - -} \ No newline at end of file +//package com.gunshi.project.hsz.controller; +// +//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +//import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +//import com.gunshi.core.result.R; +//import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; +//import com.gunshi.project.hsz.entity.so.OsmoticQueryPageSo; +//import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; +//import com.gunshi.project.hsz.entity.vo.OsmoticChartVo; +//import com.gunshi.project.hsz.entity.vo.OsmoticPressDetailVo; +//import com.gunshi.project.hsz.entity.vo.OsmoticPressVo; +//import com.gunshi.project.hsz.entity.vo.OsmoticStationVo; +//import com.gunshi.project.hsz.model.OsmoticPressDevice; +//import com.gunshi.project.hsz.model.OsmoticPressR; +//import com.gunshi.project.hsz.service.OsmoticPressDeviceService; +//import com.gunshi.project.hsz.service.OsmoticPressRService; +//import com.gunshi.project.hsz.validate.markers.Insert; +//import com.gunshi.project.hsz.validate.markers.Update; +//import io.swagger.v3.oas.annotations.Operation; +//import io.swagger.v3.oas.annotations.media.Schema; +//import io.swagger.v3.oas.annotations.tags.Tag; +//import jakarta.servlet.http.HttpServletResponse; +//import org.apache.commons.collections4.CollectionUtils; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.validation.annotation.Validated; +//import org.springframework.web.bind.annotation.*; +// +//import java.io.Serializable; +//import java.util.List; +//import java.util.Map; +//import java.util.Objects; +//import java.util.stream.Collectors; +// +///** +// * 描述: 渗压监测记录表 +// * author: xusan +// * date: 2024-07-08 17:40:37 +// */ +////@Tag(name = "渗压监测记录表") +////@RestController +////@RequestMapping(value="/osmoticPressR") +//public class OsmoticPressRController { +// +// @Autowired +// private OsmoticPressRService service; +// +// @Autowired +// private OsmoticPressDeviceService osmoticPressDeviceService; +// +// +// @Operation(summary = "新增") +// @PostMapping("/insert") +// public R insert(@Validated(Insert.class) @RequestBody OsmoticPressR dto) { +//// // 通过时间戳去除毫秒 +//// long currentTime = System.currentTimeMillis(); +//// long seconds = currentTime / 1000; // 去掉毫秒部分 +//// Date dateWithoutMillis = new Date(seconds * 1000); // 转回毫秒时间戳 +//// dto.setTm(dateWithoutMillis); +// boolean result = service.save(dto); +// return R.ok(result ? dto : null); +// } +// +// @Operation(summary = "修改") +// @PostMapping("/update") +// public R update(@Validated(Update.class) @RequestBody OsmoticPressR dto) { +// LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); +// wrapper.eq(OsmoticPressR::getTm, dto.getTm()) +// .eq(OsmoticPressR::getStationCode, dto.getStationCode()) +// .set(OsmoticPressR::getPress, dto.getPress()) +// .set(OsmoticPressR::getVib, dto.getVib()) +// .set(OsmoticPressR::getTemp, dto.getTemp()) +// .set(OsmoticPressR::getValue, dto.getValue()) +// .set(OsmoticPressR::getChan, dto.getChan()); +// boolean update = service.update(null, wrapper); +// return R.ok(update ? dto : null); +// } +// +// @Operation(summary = "删除") +// @GetMapping("/del/{id}/{tm}") +// public R del(@Schema(name = "id") @PathVariable("id") Serializable id,@Schema(name = "tm") @PathVariable("tm") Serializable tm) { +// if(Objects.isNull(id) || Objects.isNull(tm)){ +// return R.ok(false); +// } +// QueryWrapper wrapper = new QueryWrapper<>(); +// wrapper.eq("station_code", id).eq("tm", tm); +// return R.ok(service.remove(wrapper)); +// } +// +// @Operation(summary = "列表") +// @PostMapping("/list") +// public R> list() { +// return R.ok(service.lambdaQuery().list()); +// } +// +// @Operation(summary = "分页") +// @PostMapping("/page") +// public R> page(@RequestBody OsmoticQueryPageSo osmoticQueryPageSo) { +// Page osmoticPressRPage = service.queryPage(osmoticQueryPageSo); +// List records = osmoticPressRPage.getRecords(); +// if(CollectionUtils.isEmpty(records)){ +// return R.ok(osmoticPressRPage); +// } +// List collect = records.stream().peek(e -> { +// LambdaQueryWrapper wq = new LambdaQueryWrapper(); +// wq.eq(OsmoticPressDevice::getStationCode, e.getStationCode()); +// List list = osmoticPressDeviceService.list(wq); +// if (CollectionUtils.isNotEmpty(list)) { +// OsmoticPressDevice osmoticPressDevice = list.stream().findFirst().orElse(null); +// e.setProfileCode(osmoticPressDevice.getProfileCode()); +// } +// }).collect(Collectors.toList()); +// osmoticPressRPage.setRecords(collect); +// return R.ok(osmoticPressRPage); +// } +// +// @Operation(summary = "大屏-大坝安全监测统计") +// @GetMapping("/stat") +// public R> stat() { +// return R.ok(service.stat()); +// } +// +// @Operation(summary = "布置图-渗压/渗流监测") +// @GetMapping("/list/value") +// public R> listValue(@Schema(name = "type",description = "类型(1渗压 2渗流)") @RequestParam("type") Integer type) { +// return R.ok(service.listValue(type)); +// } +// +// @Operation(summary = "布置图-按测站查询渗压/渗流监测数据") +// @PostMapping("/detail/value") +// public R> detailValue(@RequestBody @Validated OsmoticDetailQuerySo so) { +// return R.ok(service.detailValue(so)); +// } +// +// @Operation(summary = "测值查询(数据表)") +// @PostMapping("/query/value") +// public R> queryValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { +// return R.ok(service.queryValue(osmoticQuerySo,null)); +// } +// +// @Operation(summary = "测值查询(多图单表)") +// @PostMapping("/query/chart") +// public R> queryChart(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { +// return R.ok(service.queryChart(osmoticQuerySo,null)); +// } +// +// @Operation(summary = "浸润线查询") +// @PostMapping("/infiltra/line") +// public R> infiltraLine(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { +// return R.ok(service.infiltraLine(osmoticQuerySo)); +// } +// +// @Operation(summary = "浸润线导出") +// @PostMapping( "/export") +// public void export(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { +// service.export(osmoticQuerySo,response); +// } +// +// @Operation(summary = "年度渗压/渗流统计(表格)") +// @PostMapping("/year/stat") +// public R> yearStat(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { +// return R.ok(service.yearStat(osmoticQuerySo)); +// } +// +// @Operation(summary = "年度渗压/渗流统计(全年度特征值统计)") +// @PostMapping("/year/stat/value") +// public R> yearStatValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { +// return R.ok(service.yearStatValue(osmoticQuerySo)); +// } +// +// @Operation(summary = "年度渗压/渗流统计导出") +// @PostMapping( "/year/stat/export") +// public void yearStatExport(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { +// service.yearStatExport(osmoticQuerySo,response); +// } +// +//} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticShiftDeviceController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticShiftDeviceController.java index e9b446d..8f267e5 100644 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticShiftDeviceController.java +++ b/src/main/java/com/gunshi/project/hsz/controller/OsmoticShiftDeviceController.java @@ -23,9 +23,9 @@ import java.util.Objects; * author: xusan * date: 2024-07-08 17:40:37 */ -@Tag(name = "位移设备表") -@RestController -@RequestMapping(value="/osmoticShiftDevice") +//@Tag(name = "位移设备表") +//@RestController +//@RequestMapping(value="/osmoticShiftDevice") public class OsmoticShiftDeviceController { @Autowired diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticShiftRController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticShiftRController.java index 17c9196..3df3967 100644 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticShiftRController.java +++ b/src/main/java/com/gunshi/project/hsz/controller/OsmoticShiftRController.java @@ -1,116 +1,116 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; -import com.gunshi.project.hsz.entity.so.OsmoticQueryPageSo; -import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.model.OsmoticShiftR; -import com.gunshi.project.hsz.service.OsmoticShiftRService; -import com.gunshi.project.hsz.validate.markers.Insert; -import com.gunshi.project.hsz.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 位移监测记录表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "位移监测记录表") -@RestController -@RequestMapping(value="/osmoticShiftR") -public class OsmoticShiftRController { - - @Autowired - private OsmoticShiftRService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody OsmoticShiftR dto) { - // dto.setTm(new Date()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody OsmoticShiftR dto) { - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(OsmoticShiftR::getStationCode, dto.getStationCode()) - .eq(OsmoticShiftR::getTm, dto.getTm()) - .set(OsmoticShiftR::getX, dto.getX()) - .set(OsmoticShiftR::getY, dto.getY()) - .set(OsmoticShiftR::getH, dto.getH()); - boolean update = service.update(null, wrapper); - return R.ok(update ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}/{tm}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id,@Schema(name = "tm") @PathVariable("tm") Serializable tm) { - - if(Objects.isNull(id) || Objects.isNull(tm)){ - return R.ok(false); - } - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("station_code", id).eq("tm", tm); - return R.ok(service.remove(wrapper)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody OsmoticQueryPageSo osmoticQueryPageSo) { - return R.ok(service.queryPage(osmoticQueryPageSo)); - } - - @Operation(summary = "年度位移统计(表格)") - @PostMapping("/year/stat") - public R> yearStat(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.yearStat(osmoticQuerySo)); - } - - @Operation(summary = "年度位移统计(全年度特征值统计)") - @PostMapping("/year/stat/value") - public R> yearStatValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.yearStatValue(osmoticQuerySo)); - } - - @Operation(summary = "年度位移统计导出") - @PostMapping( "/year/stat/export") - public void yearStatExport(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { - service.yearStatExport(osmoticQuerySo,response); - } - - @Operation(summary = "布置图-位移监测") - @GetMapping("/list/value") - public R> listValue() { - return R.ok(service.listValue()); - } - - @Operation(summary = "布置图-按测站查询位移监测数据") - @PostMapping("/detail/value") - public R> detailValue(@RequestBody @Validated OsmoticDetailQuerySo so) { - return R.ok(service.detailValue(so)); - } - -} \ No newline at end of file +//package com.gunshi.project.hsz.controller; +// +//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +//import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +//import com.gunshi.core.result.R; +//import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; +//import com.gunshi.project.hsz.entity.so.OsmoticQueryPageSo; +//import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; +//import com.gunshi.project.hsz.entity.vo.*; +//import com.gunshi.project.hsz.model.OsmoticShiftR; +//import com.gunshi.project.hsz.service.OsmoticShiftRService; +//import com.gunshi.project.hsz.validate.markers.Insert; +//import com.gunshi.project.hsz.validate.markers.Update; +//import io.swagger.v3.oas.annotations.Operation; +//import io.swagger.v3.oas.annotations.media.Schema; +//import io.swagger.v3.oas.annotations.tags.Tag; +//import jakarta.servlet.http.HttpServletResponse; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.validation.annotation.Validated; +//import org.springframework.web.bind.annotation.*; +// +//import java.io.Serializable; +//import java.util.List; +//import java.util.Objects; +// +///** +// * 描述: 位移监测记录表 +// * author: xusan +// * date: 2024-07-08 17:40:37 +// */ +////@Tag(name = "位移监测记录表") +////@RestController +////@RequestMapping(value="/osmoticShiftR") +//public class OsmoticShiftRController { +// +// @Autowired +// private OsmoticShiftRService service; +// +// +// @Operation(summary = "新增") +// @PostMapping("/insert") +// public R insert(@Validated(Insert.class) @RequestBody OsmoticShiftR dto) { +// // dto.setTm(new Date()); +// boolean result = service.save(dto); +// return R.ok(result ? dto : null); +// } +// +// @Operation(summary = "修改") +// @PostMapping("/update") +// public R update(@Validated(Update.class) @RequestBody OsmoticShiftR dto) { +// LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); +// wrapper.eq(OsmoticShiftR::getStationCode, dto.getStationCode()) +// .eq(OsmoticShiftR::getTm, dto.getTm()) +// .set(OsmoticShiftR::getX, dto.getX()) +// .set(OsmoticShiftR::getY, dto.getY()) +// .set(OsmoticShiftR::getH, dto.getH()); +// boolean update = service.update(null, wrapper); +// return R.ok(update ? dto : null); +// } +// +// @Operation(summary = "删除") +// @GetMapping("/del/{id}/{tm}") +// public R del(@Schema(name = "id") @PathVariable("id") Serializable id,@Schema(name = "tm") @PathVariable("tm") Serializable tm) { +// +// if(Objects.isNull(id) || Objects.isNull(tm)){ +// return R.ok(false); +// } +// QueryWrapper wrapper = new QueryWrapper<>(); +// wrapper.eq("station_code", id).eq("tm", tm); +// return R.ok(service.remove(wrapper)); +// } +// +// @Operation(summary = "列表") +// @PostMapping("/list") +// public R> list() { +// return R.ok(service.lambdaQuery().list()); +// } +// +// @Operation(summary = "分页") +// @PostMapping("/page") +// public R> page(@RequestBody OsmoticQueryPageSo osmoticQueryPageSo) { +// return R.ok(service.queryPage(osmoticQueryPageSo)); +// } +// +// @Operation(summary = "年度位移统计(表格)") +// @PostMapping("/year/stat") +// public R> yearStat(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { +// return R.ok(service.yearStat(osmoticQuerySo)); +// } +// +// @Operation(summary = "年度位移统计(全年度特征值统计)") +// @PostMapping("/year/stat/value") +// public R> yearStatValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { +// return R.ok(service.yearStatValue(osmoticQuerySo)); +// } +// +// @Operation(summary = "年度位移统计导出") +// @PostMapping( "/year/stat/export") +// public void yearStatExport(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { +// service.yearStatExport(osmoticQuerySo,response); +// } +// +// @Operation(summary = "布置图-位移监测") +// @GetMapping("/list/value") +// public R> listValue() { +// return R.ok(service.listValue()); +// } +// +// @Operation(summary = "布置图-按测站查询位移监测数据") +// @PostMapping("/detail/value") +// public R> detailValue(@RequestBody @Validated OsmoticDetailQuerySo so) { +// return R.ok(service.detailValue(so)); +// } +// +//} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/TermiteSurveyController.java b/src/main/java/com/gunshi/project/hsz/controller/TermiteSurveyController.java index 3f11ccd..40a6c7c 100644 --- a/src/main/java/com/gunshi/project/hsz/controller/TermiteSurveyController.java +++ b/src/main/java/com/gunshi/project/hsz/controller/TermiteSurveyController.java @@ -28,9 +28,9 @@ import java.util.stream.Collectors; * author: xusan * date: 2024-08-28 10:29:58 */ -@Tag(name = "白蚁普查") -@RestController -@RequestMapping(value="/termite/survey") +//@Tag(name = "白蚁普查") +//@RestController +//@RequestMapping(value="/termite/survey") public class TermiteSurveyController extends AbstractCommonFileController{ @Autowired diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskGnssDeleteDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskGnssDeleteDto.java new file mode 100644 index 0000000..7d82c5a --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskGnssDeleteDto.java @@ -0,0 +1,16 @@ +package com.gunshi.project.hsz.entity.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +@Data +public class ArtificialJcskGnssDeleteDto { + + + private String cd; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date tm; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskSyDeleteDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskSyDeleteDto.java new file mode 100644 index 0000000..7ef2c05 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskSyDeleteDto.java @@ -0,0 +1,18 @@ +package com.gunshi.project.hsz.entity.dto; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +@Data +public class ArtificialJcskSyDeleteDto { + + private String stcd; + + private String mpcd; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date mstm; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/BusinessRuleDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/BusinessRuleDto.java new file mode 100644 index 0000000..b997983 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/dto/BusinessRuleDto.java @@ -0,0 +1,33 @@ +package com.gunshi.project.hsz.entity.dto; + + +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.hsz.entity.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class BusinessRuleDto extends GenericPageParams { + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) + private Date stm; + + + @Schema(description = "结束时间") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) + private Date etm; + + + @Schema(description = "规则名称") + private String name; + + @Schema(description = "规则类型 1 水资源调度,2 防洪调度,3 工程安全,4 应急抢险,5 其他") + private Integer type; + + @Schema(description = "状态") + private Integer status; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/DispatchSchemeDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/DispatchSchemeDto.java new file mode 100644 index 0000000..6973418 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/dto/DispatchSchemeDto.java @@ -0,0 +1,36 @@ +package com.gunshi.project.hsz.entity.dto; + +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.db.dto.PageSo; +import com.gunshi.project.hsz.entity.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class DispatchSchemeDto extends GenericPageParams { + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) + private Date stm; + + + @Schema(description = "结束时间") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) + private Date etm; + + + @Schema(description = "方案名称") + private String name; + + @Schema(description = "调度类型 1 防洪调度,2 兴利调度,3 生态调度,4 应急调度,5 其他") + private Integer type; + + @Schema(description = "状态") + private Integer status; + + PageSo pageSo = new PageSo(); + +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/ProjectSafetyDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/ProjectSafetyDto.java new file mode 100644 index 0000000..f06ffae --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/dto/ProjectSafetyDto.java @@ -0,0 +1,33 @@ +package com.gunshi.project.hsz.entity.dto; + + +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.hsz.entity.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class ProjectSafetyDto extends GenericPageParams { + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) + private Date stm; + + + @Schema(description = "结束时间") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) + private Date etm; + + + @Schema(description = "标题") + private String name; + + @Schema(description = "知识库类型 ") + private String type; + + @Schema(description = "状态") + private Integer status; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/SqlRequest.java b/src/main/java/com/gunshi/project/hsz/entity/dto/SqlRequest.java new file mode 100644 index 0000000..e373fdd --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/dto/SqlRequest.java @@ -0,0 +1,9 @@ +package com.gunshi.project.hsz.entity.dto; + + +import lombok.Data; + +@Data +public class SqlRequest { + private String sql; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/StGateRDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/StGateRDto.java new file mode 100644 index 0000000..6036e54 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/dto/StGateRDto.java @@ -0,0 +1,19 @@ +package com.gunshi.project.hsz.entity.dto; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class StGateRDto { + + private String stcd; + + private BigDecimal gtop; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime tm; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/JcskByBDPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/JcskByBDPageSo.java new file mode 100644 index 0000000..71152ab --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/so/JcskByBDPageSo.java @@ -0,0 +1,21 @@ +package com.gunshi.project.hsz.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskByBDPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "机箱编号 (一个机箱有多个设备)") + private String deviceId; + + @Schema(description = "设备编号") + private String order; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/JcskByRPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/JcskByRPageSo.java new file mode 100644 index 0000000..b7a493a --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/so/JcskByRPageSo.java @@ -0,0 +1,41 @@ +package com.gunshi.project.hsz.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.Date; + + +@Data +@Schema(description = "分页查询对象") +public class JcskByRPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + private DateTimeRangeSo dateTimeRangeSo; + + @Schema(description = "监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date obDate; + + @Schema(description = "设备编号") + private String deviceCode; + + @Schema(description = "测点编号") + private String order; + + @Schema(description = "有无白蚁入侵") + private Integer status; + + + + + +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/JcskGnssBPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/JcskGnssBPageSo.java new file mode 100644 index 0000000..1d9d82b --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/so/JcskGnssBPageSo.java @@ -0,0 +1,20 @@ +package com.gunshi.project.hsz.entity.so; + + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskGnssBPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "设备编码") + private String stationCode; + +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/JcskGnssRPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/JcskGnssRPageSo.java new file mode 100644 index 0000000..7b4799c --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/so/JcskGnssRPageSo.java @@ -0,0 +1,32 @@ +package com.gunshi.project.hsz.entity.so; + + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskGnssRPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "上报时间") + private DateTimeRangeSo dateTimeRangeSo; + + + @Schema(description = "测点编码") + private String cd; + + @Schema(description = "断面") + private String ch; + + @Schema(description = "录入方式") + private Integer isArtificial; + + +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/JcskSlBPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/JcskSlBPageSo.java new file mode 100644 index 0000000..a40e481 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/so/JcskSlBPageSo.java @@ -0,0 +1,25 @@ +package com.gunshi.project.hsz.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskSlBPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + + @Schema(description = "水库代码") + private String rscd; + + @Schema(description = "RTU编号") + private String stcd; + + @Schema(description = "测点编号") + private String mpcd; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/JcskSlRPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/JcskSlRPageSo.java new file mode 100644 index 0000000..8851682 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/so/JcskSlRPageSo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.hsz.entity.so; + + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskSlRPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + + @Schema(description = "上报时间") + private DateTimeRangeSo dateTimeRangeSo; + + @Schema(description = "断面") + private String dm; + + + @Schema(description = "测点") + private String dvcd; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/JcskSyBPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/JcskSyBPageSo.java new file mode 100644 index 0000000..9ef1f20 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/so/JcskSyBPageSo.java @@ -0,0 +1,23 @@ +package com.gunshi.project.hsz.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskSyBPageSo { + + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + + @Schema(description = "断面") + private String dm; + + @Schema(description = "测点编号") + private String mpcd; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/JcskSyRPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/JcskSyRPageSo.java new file mode 100644 index 0000000..d91f798 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/so/JcskSyRPageSo.java @@ -0,0 +1,29 @@ +package com.gunshi.project.hsz.entity.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskSyRPageSo { + + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + + @Schema(description = "上报时间") + private DateTimeRangeSo dateTimeRangeSo; + + @Schema(description = "测点编号") + private String dvcd; + + @Schema(description = "断面") + private String dm; + + +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/OsmoticQuerySo.java b/src/main/java/com/gunshi/project/hsz/entity/so/OsmoticQuerySo.java index 3c6a8cf..9f39ecd 100644 --- a/src/main/java/com/gunshi/project/hsz/entity/so/OsmoticQuerySo.java +++ b/src/main/java/com/gunshi/project/hsz/entity/so/OsmoticQuerySo.java @@ -22,7 +22,7 @@ public class OsmoticQuerySo { private Integer type = 1; @Schema(description = "年度") - private Integer year; + private String year; @Schema(description = "时间") private DateTimeRangeSo dateTimeRangeSo; @@ -32,4 +32,7 @@ public class OsmoticQuerySo { @Schema(description = "测点编号") private List<@NotEmpty String> stationCodes; + + @Schema(description = "wy (没啥用的字段)") + private String wy; } diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/WaterDevicePageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/WaterDevicePageSo.java new file mode 100644 index 0000000..21aba2d --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/so/WaterDevicePageSo.java @@ -0,0 +1,27 @@ +package com.gunshi.project.hsz.entity.so; + + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class WaterDevicePageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + + @Schema(description = "设备编码") + private String code; + + @Schema(description = "设备名称") + private String name; + + @Schema(description = "接入站点编码") + private String mnNo; + +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/DmDvcdVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/DmDvcdVo.java new file mode 100644 index 0000000..051cbf2 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/DmDvcdVo.java @@ -0,0 +1,16 @@ +package com.gunshi.project.hsz.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +public class DmDvcdVo { + + @Schema(description = "断面") + private String dm; + + @Schema(description = "断面编码") + private List dvcd; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/GnssCdAndCdVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/GnssCdAndCdVo.java new file mode 100644 index 0000000..b18fe5e --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/GnssCdAndCdVo.java @@ -0,0 +1,13 @@ +package com.gunshi.project.hsz.entity.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class GnssCdAndCdVo { + + private String ch; + + private List childrens; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeJcskGnssBVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeJcskGnssBVo.java new file mode 100644 index 0000000..5a5c16c --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeJcskGnssBVo.java @@ -0,0 +1,38 @@ +package com.gunshi.project.hsz.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.hsz.model.JcskGnssB; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +public class HomeJcskGnssBVo extends JcskGnssB { + + /** + * x方向 + */ + @Schema(description="x方向") + private String x; + + /** + * y方向 + */ + @Schema(description="y方向") + private String y; + + /** + * h方向 + */ + @Schema(description="h方向") + private String h; + + /** + * 监测时间 + */ + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeJcskSYBVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeJcskSYBVo.java new file mode 100644 index 0000000..bf60697 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeJcskSYBVo.java @@ -0,0 +1,26 @@ +package com.gunshi.project.hsz.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.hsz.model.JcskSyB; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +public class HomeJcskSYBVo extends JcskSyB { + + /** + * 管水位 + */ + @Schema(description="管水位") + private String value; + + /** + * 监测时间 + */ + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeJcskSlBVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeJcskSlBVo.java new file mode 100644 index 0000000..9587475 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeJcskSlBVo.java @@ -0,0 +1,26 @@ +package com.gunshi.project.hsz.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.hsz.model.JcskSlB; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +public class HomeJcskSlBVo extends JcskSlB { + + /** + * 管水位 + */ + @Schema(description="流量") + private String q; + + /** + * 监测时间 + */ + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/JcskByInspectDetailVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskByInspectDetailVo.java new file mode 100644 index 0000000..236dea6 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskByInspectDetailVo.java @@ -0,0 +1,8 @@ +package com.gunshi.project.hsz.entity.vo; + +import lombok.Data; + +@Data +public class JcskByInspectDetailVo { + +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/JcskByRProcessVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskByRProcessVo.java new file mode 100644 index 0000000..657395e --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskByRProcessVo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.hsz.entity.vo; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.hsz.model.InspectTask; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +public class JcskByRProcessVo extends InspectTask { + + @Schema(description = "设备编号") + private String order; + + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Schema(description = "监测时间") + private Date obDate; + + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Schema(description = "监测时间 + hours之后的结束时间") + private Date obResolveDate; + + + private Integer hours; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/JcskGnessListVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskGnessListVo.java new file mode 100644 index 0000000..653179d --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskGnessListVo.java @@ -0,0 +1,64 @@ +package com.gunshi.project.hsz.entity.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class JcskGnessListVo { + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String cd; + + @Schema(description = "桩号/断面") + private String ch; + + @Schema(description = "测点名称") + private String cdnm; + + @Schema(description = "测点编号/另一种叫法") + private String stationCode; + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + @Schema(description = "监测时间是否离当前时间超过2天(0否 1是)") + private Integer flag = 0; + + /** + * x方向 + */ + @Schema(description="e方向") + private BigDecimal de; + + @Schema(description = "e方向是否超过预警(0否 1是)") + private Integer xStatus = 0; + + /** + * y方向 + */ + @Schema(description="n方向") + private BigDecimal dn; + + @Schema(description = "n方向是否超过预警(0否 1是)") + private Integer yStatus = 0; + + /** + * h方向 + */ + @Schema(description="u方向") + private BigDecimal du; + + @Schema(description = "u方向是否超过预警(0否 1是)") + private Integer hStatus = 0; + + @JsonIgnore + private String direction; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/JcskGnssRHisVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskGnssRHisVo.java new file mode 100644 index 0000000..7248e93 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskGnssRHisVo.java @@ -0,0 +1,64 @@ +package com.gunshi.project.hsz.entity.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class JcskGnssRHisVo { + /** + * 水库编码设备编码 + */ + @TableField("res_cd") + private String resCd; + + /** + * 测点编码 + */ + @TableField("cd") + private String cd; + + @TableField(exist = false) + private String ch; + + /** + * e方向变形值,单位(mm) + */ + @TableField("de") + private BigDecimal de; + + /** + * n方向变形值,单位(mm) + */ + @TableField("dn") + private BigDecimal dn; + + /** + * u方向变形值,单位(mm) + */ + @TableField("du") + private BigDecimal du; + + /** + * 站点高程 + */ + @TableField("alt") + private BigDecimal alt; + + /** + * 监测时间 + */ + @TableField("tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date tm; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTm; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/JcskSlRHisVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskSlRHisVo.java new file mode 100644 index 0000000..9de7d91 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskSlRHisVo.java @@ -0,0 +1,79 @@ +package com.gunshi.project.hsz.entity.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class JcskSlRHisVo { + + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + @TableField(exist = false) + private String dm; + + @TableField(exist = false) + private String dvcd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + + @TableField("stcd") + private String stcd; + + /** + * 测量时间 + */ + @TableField("mstm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date mstm; + + /** + * 温度,单位℃ + */ + @TableField("tm") + private BigDecimal tm; + + /** + * 渗流量,单位l/s + */ + @TableField("spqn") + private BigDecimal spqn; + + /** + * 标准水温渗流量,单位l/s + */ + @TableField("stspqn") + private BigDecimal stspqn; + + /** + * 创建时间 + */ + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTm; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/JcskSyRHisVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskSyRHisVo.java new file mode 100644 index 0000000..77b0bd6 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskSyRHisVo.java @@ -0,0 +1,77 @@ +package com.gunshi.project.hsz.entity.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class JcskSyRHisVo { + + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + /** + * 测站编码 + */ + @TableField("stcd") + private String stcd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + /** + * 测量时间 + */ + @TableField("mstm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime mstm; + + /** + * 温度 + */ + @TableField("tm") + private BigDecimal tm; + + /** + * 渗流压力水位,单位m + */ + @TableField("spprwl") + private BigDecimal spprwl; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime updateTm; + + @TableField(exist = false) + @Schema(description = "断面编码") + private String dm; + + + @TableField(exist = false) + @Schema(description = "断面名称") + private String dmName; + + + @TableField(exist = false) + @Schema(description = "dvcd") + private String dvcd; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/JcskSyRVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskSyRVo.java new file mode 100644 index 0000000..9cf0a32 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/JcskSyRVo.java @@ -0,0 +1,27 @@ +package com.gunshi.project.hsz.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class JcskSyRVo { + @Schema(description="测点编码") + private String stationCode; + + @Schema(description = "断面名称") + private String profileName; + + @Schema(description="监测时间") + private String tm; + + @Schema(description="监测值") + private BigDecimal value; + + @Schema(description = "监测时间是否离当前时间超过2天(0否 1是)") + private Integer flag = 0; + + @Schema(description = "是否超过预警(0否 1是)") + private Integer status = 0; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartDetailVo2.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartDetailVo2.java new file mode 100644 index 0000000..4c9fc32 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartDetailVo2.java @@ -0,0 +1,28 @@ +package com.gunshi.project.hsz.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OsmoticChartDetailVo2 { + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + /** + * 库水位 + */ + @Schema(description="库水位") + private BigDecimal rz; + + /** + * 管水位 + */ + @Schema(description="管水位") + private BigDecimal value; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartVo2.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartVo2.java new file mode 100644 index 0000000..6fb7dc2 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartVo2.java @@ -0,0 +1,50 @@ +package com.gunshi.project.hsz.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class OsmoticChartVo2 { + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String cd; + + /** + * 最大值 + */ + @Schema(description="最大值") + private BigDecimal maxValue; + + /** + * 最大值时间 + */ + @Schema(description="最大值时间") + private String maxTm; + + /** + * 最小值 + */ + @Schema(description="最小值") + private BigDecimal minValue; + + /** + * 最小值时间 + */ + @Schema(description="最小值时间") + private String minTm; + + /** + * 变幅 + */ + @Schema(description="变幅") + private BigDecimal diff; + + @Schema(description = "数据") + private List detailVos; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftListVo2.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftListVo2.java new file mode 100644 index 0000000..ff1b873 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftListVo2.java @@ -0,0 +1,59 @@ +package com.gunshi.project.hsz.entity.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OsmoticShiftListVo2 { + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String cd; + + private String cdNm; + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + @Schema(description = "监测时间是否离当前时间超过2天(0否 1是)") + private Integer flag = 0; + + /** + * x方向 + */ + @Schema(description="x方向") + private BigDecimal de; + + @Schema(description = "x方向是否超过预警(0否 1是)") + private Integer xStatus = 0; + + /** + * y方向 + */ + @Schema(description="y方向") + private BigDecimal dn; + + @Schema(description = "y方向是否超过预警(0否 1是)") + private Integer yStatus = 0; + + /** + * h方向 + */ + @Schema(description="h方向") + private BigDecimal du; + + @Schema(description = "h方向是否超过预警(0否 1是)") + private Integer hStatus = 0; + + @JsonIgnore + private String direction; + +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftValueVo2.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftValueVo2.java new file mode 100644 index 0000000..56ac3b3 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftValueVo2.java @@ -0,0 +1,50 @@ +package com.gunshi.project.hsz.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OsmoticShiftValueVo2 { + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String cd; + + /** + * x方向 + */ + @Schema(description="e ->x方向") + private BigDecimal de; + + /** + * y方向 + */ + @Schema(description=" n ->y方向") + private BigDecimal dn; + + /** + * h方向 + */ + @Schema(description="u ->h方向") + private BigDecimal du; + + /** + * 库水位 + */ + @Schema(description="库水位") + private BigDecimal rz; + + + @Schema(description = "是否人工") + private Integer isArtificial; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftVo2.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftVo2.java new file mode 100644 index 0000000..5e3eb02 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftVo2.java @@ -0,0 +1,20 @@ +package com.gunshi.project.hsz.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +public class OsmoticShiftVo2 { + + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + @Schema(description="测值") + private List list; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticStationVo2.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticStationVo2.java new file mode 100644 index 0000000..64cd5fb --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticStationVo2.java @@ -0,0 +1,20 @@ +package com.gunshi.project.hsz.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class OsmoticStationVo2 extends StRzVo{ + + @Schema(description = "结果分析(0异常 1正常)") + private Integer status = 1; + + @Schema(description="测值") + private List list; + + @Schema(description = "降雨量") + private BigDecimal drp; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticValueVo2.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticValueVo2.java new file mode 100644 index 0000000..1f55f09 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticValueVo2.java @@ -0,0 +1,36 @@ +package com.gunshi.project.hsz.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OsmoticValueVo2 { + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String stationCode; + + /** + * 管水位 + */ + @Schema(description="管水位") + private BigDecimal value; + + /** + * 库水位 + */ + @Schema(description="库水位") + private BigDecimal rz; + + @Schema(description = "结果分析(0异常 1正常)") + private Integer status = 1; +} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/SyStcdMpcdVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/SyStcdMpcdVo.java new file mode 100644 index 0000000..712fb33 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/entity/vo/SyStcdMpcdVo.java @@ -0,0 +1,13 @@ +package com.gunshi.project.hsz.entity.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class SyStcdMpcdVo { + + private String stcd; + + private List mpcdList; +} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/InspectTaskMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/InspectTaskMapper.java index e8f9ca3..49b6c60 100644 --- a/src/main/java/com/gunshi/project/hsz/mapper/InspectTaskMapper.java +++ b/src/main/java/com/gunshi/project/hsz/mapper/InspectTaskMapper.java @@ -50,6 +50,21 @@ public interface InspectTaskMapper extends BaseMapper { """) Page pageQuery(Page page,@Param("obj") InspectTaskPageSo pageSo); + @Select(""" + select count(is_handle) as handleNum from inspect_task_detail where is_handle = 0 + AND task_id = #{taskId} + GROUP BY task_id +""") + Integer countIsHandle(@Param("taskId") Long taskId); + + + @Select(""" + select count(is_normal) as problemNum from inspect_task_detail where is_normal = 0 + AND task_id = #{taskId} + GROUP BY task_id +""") + Integer countIsNormal(@Param("taskId") Long taskId); + @Select(""" + """) + List getDetailsAndMonitoringDataList(); + + + + @Select(""" + + """) + HomeJcskGnssBVo getDetailsById(String id); + + + @Select(""" + select ch from jcsk_gnss_b where ch is not null + group by ch +""") + List listDms(); + + @Select(""" + select ch from jcsk_gnss_b group by ch +""") + List selectCH(); + + + @Select(""" + select cd from jcsk_gnss_b where ch = #{ch} +""") + List selectCDbyCh(@Param("ch") String ch); + + @Select(""" + select * from jcsk_gnss_b where ch is null order by cd asc +""") + List selectArtificial(); + +} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskGnssREightAmMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskGnssREightAmMapper.java new file mode 100644 index 0000000..2d1e654 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/mapper/JcskGnssREightAmMapper.java @@ -0,0 +1,23 @@ +package com.gunshi.project.hsz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.hsz.model.JcskGnssREightAm; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface JcskGnssREightAmMapper extends BaseMapper { + + @Select(""" + select t1.* + from jcsk_gnss_r_8am t1 join ( + select cd, max(tm) as tm + from jcsk_gnss_r_8am + GROUP BY cd + ) t2 on t1.cd = t2.cd and t1.tm = t2.tm; +""") + List queryNewDataTime(); + +} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskGnssRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskGnssRMapper.java new file mode 100644 index 0000000..2311d9a --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/mapper/JcskGnssRMapper.java @@ -0,0 +1,231 @@ +package com.gunshi.project.hsz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.hsz.entity.so.JcskGnssRPageSo; +import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; +import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; +import com.gunshi.project.hsz.entity.vo.JcskGnessListVo; +import com.gunshi.project.hsz.entity.vo.JcskGnssRHisVo; +import com.gunshi.project.hsz.entity.vo.OsmoticShiftListVo2; +import com.gunshi.project.hsz.entity.vo.OsmoticShiftValueVo2; +import com.gunshi.project.hsz.model.JcskGnssR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface JcskGnssRMapper extends BaseMapper { + +// @Select(""" +// +// """) +// List listValue(); + + + @Select(""" + + """) + List listValue(); + + @Select(""" + + """) + List queryWarn(@Param("obj") OsmoticQuerySo so); + + + @Select(""" + + """) + List queryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + @Select(""" + + """) + List queryReorganizeValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + + @Select(""" + + """) + List detailValue(@Param("obj") OsmoticDetailQuerySo so); + + @Select(""" + +""") + Page pageQuery(Page page, @Param("obj") JcskGnssRPageSo page1); + + + @Select(""" + +""") + Page historyPage(Page page, @Param("dto") JcskGnssRPageSo page1); + + + @Select(""" + +""") + Page artificialPage(Page page,@Param("dto") JcskGnssRPageSo page1); +} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskSlBMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskSlBMapper.java new file mode 100644 index 0000000..2bfbcdc --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/mapper/JcskSlBMapper.java @@ -0,0 +1,160 @@ +package com.gunshi.project.hsz.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; +import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; +import com.gunshi.project.hsz.entity.vo.HomeJcskSlBVo; +import com.gunshi.project.hsz.entity.vo.JcskSyRVo; +import com.gunshi.project.hsz.entity.vo.OsmoticPressDetailVo; +import com.gunshi.project.hsz.entity.vo.OsmoticValueVo2; +import com.gunshi.project.hsz.model.JcskSlB; +import com.gunshi.project.hsz.model.JcskSlR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + + +@Mapper +public interface JcskSlBMapper extends BaseMapper { + + @Select(""" + + """) + List getDetailsAndMonitoringDataList(); + + + @Select(""" + + """) + HomeJcskSlBVo getDetailsById(String id); + + + @Select(""" + select dvcd from jcsk_sl_b where dm = #{dm} +""") + List getDvcdByProfileCode(@Param("dm") String profileCode); + + + @Select( + """ + +""" + ) + List listValue(); + + + @Select(""" + + """) + List queryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + @Select(""" + + """) + List syncqueryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + @Select(""" + + """) + List query8AmValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + + @Select(""" + + """) + List detailValue(@Param("obj") OsmoticDetailQuerySo so); + + + @Select(""" + +""") + String selectDvcdByStcdAndMpcd(@Param("mpcd") String mpcd); +} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskSlREightAmMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskSlREightAmMapper.java new file mode 100644 index 0000000..ba0af45 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/mapper/JcskSlREightAmMapper.java @@ -0,0 +1,19 @@ +package com.gunshi.project.hsz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.hsz.model.JcskSlREightAm; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface JcskSlREightAmMapper extends BaseMapper { + @Select(""" + select t1.* + from jcsk_sl_r_8am t1 + join (select stcd,mpcd,max(mstm) as mstm from jcsk_sl_r_8am GROUP BY stcd,mpcd) as t2 + on t1.mstm = t2.mstm and t1.stcd = t2.stcd and t1.mpcd = t2.mpcd; +""") + List queryNewDataTime(); +} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskSlRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskSlRMapper.java new file mode 100644 index 0000000..0fe9541 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/mapper/JcskSlRMapper.java @@ -0,0 +1,82 @@ +package com.gunshi.project.hsz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.hsz.entity.so.JcskSlRPageSo; +import com.gunshi.project.hsz.entity.vo.JcskSlRHisVo; +import com.gunshi.project.hsz.model.JcskSlR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface JcskSlRMapper extends BaseMapper { + + + @Select(""" + +""") + Page pageQuery(Page page, @Param("dto") JcskSlRPageSo page1); + + + @Select(""" + +""") + Page historyPage(Page page, JcskSlRPageSo page1); + +} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskSyBMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskSyBMapper.java new file mode 100644 index 0000000..e5470e6 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/mapper/JcskSyBMapper.java @@ -0,0 +1,59 @@ +package com.gunshi.project.hsz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.hsz.entity.vo.HomeJcskSYBVo; +import com.gunshi.project.hsz.model.JcskSyB; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + + +@Mapper +public interface JcskSyBMapper extends BaseMapper { + + + @Select(""" + + """) + List getDetailsAndMonitoringDataList(); + + + @Select(""" + + """) + HomeJcskSYBVo getDetailsById(@Param("id") String id); + + + @Select(""" + SELECT dvcd from jcsk_sy_b where dm = #{dm} + ORDER BY LENGTH(dvcd) ASC,dvcd ASC; +""") + List getDvcdByProfileCode(@Param("dm") String profileCode); + + @Select(""" + +""") + String selectDvcdByStcdAndMpcd(@Param("stcd")String stcd,@Param("mpcd") String mpcd); +} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskSyREightAmMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskSyREightAmMapper.java new file mode 100644 index 0000000..c81c9ba --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/mapper/JcskSyREightAmMapper.java @@ -0,0 +1,21 @@ +package com.gunshi.project.hsz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.hsz.model.JcskSyREightAm; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface JcskSyREightAmMapper extends BaseMapper { + + @Select(""" +select t1.* +from jcsk_sy_r_8am t1 +join (select stcd,mpcd,max(mstm) as mstm from jcsk_sy_r_8am GROUP BY stcd,mpcd) as t2 +on t1.mstm = t2.mstm and t1.stcd = t2.stcd and t1.mpcd = t2.mpcd; +""") + List queryNewDataTime(); + +} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskSyRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskSyRMapper.java new file mode 100644 index 0000000..506e4e5 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/mapper/JcskSyRMapper.java @@ -0,0 +1,361 @@ +package com.gunshi.project.hsz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.hsz.entity.so.JcskSyRPageSo; +import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; +import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; +import com.gunshi.project.hsz.entity.vo.*; +import com.gunshi.project.hsz.model.JcskSyB; +import com.gunshi.project.hsz.model.JcskSyR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface JcskSyRMapper extends BaseMapper { + @Select( + """ + +""" + ) + List listValue(); + + + + @Select( + """ + +""" + ) + List flowListValue(); + + + @Select(""" + + """) + List queryWarn(@Param("obj") OsmoticQuerySo so); + + + @Select(""" + + """) + List detailValue(@Param("obj") OsmoticDetailQuerySo so); + + + @Select(""" + + """) + List queryLineRz(@Param("obj") OsmoticQuerySo osmoticQuerySo, @Param("stcd") String stcd); + + + @Select(""" + + """) + List queryDrp(@Param("year") Integer year,@Param("stcd") String stcd); + + + + @Select(""" + + """) + List queryRz(@Param("obj") OsmoticQuerySo osmoticQuerySo,@Param("stcd") String stcd); + + @Select(""" + + """) + List queryRz2(@Param("obj") OsmoticQuerySo osmoticQuerySo,@Param("stcd") String stcd); + + + @Select(""" + + """) + List queryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + @Select(""" + + """) + List query8AmValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + + @Select(""" + + """) + List syncqueryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + + + @Select(""" + + """) + List queryLineValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + + @Select(""" + +""") + Page queryPage(Page page, @Param("dto") JcskSyRPageSo pageSo); + + @Select(""" +select dm from jcsk_sy_b +GROUP BY dm +""") + List listDm(); + + + @Select(""" + select stcd,mpcd from jcsk_sy_b +""") + List listStcdMpcd(); + + + @Select(""" + select dvcd from jcsk_sy_b where dm = #{dm} +""") + List listDvcdByDm(@Param("dm") String dm); + + @Select(""" + +""") + Page historyPage(Page page, @Param("dto") JcskSyRPageSo page1); + + + @Select(""" + +""") + Page artificialPage(Page page,@Param("dto") JcskSyRPageSo page1); +} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWarnRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWarnRMapper.java index 4856e84..cee0534 100644 --- a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWarnRMapper.java +++ b/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWarnRMapper.java @@ -43,5 +43,15 @@ public interface OsmoticWarnRMapper extends BaseMapper { order by t.tm desc """) - Page queryPage(Page page,@Param("obj") WarnPageSo warnPageSo); + Page queryPage(Page page, @Param("obj") WarnPageSo warnPageSo); + + @Select(""" + +""") + OsmoticWarnR queryMaxTmByType(@Param("type") Integer type); } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StFlowRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StFlowRMapper.java new file mode 100644 index 0000000..8694216 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/mapper/StFlowRMapper.java @@ -0,0 +1,44 @@ +package com.gunshi.project.hsz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.hsz.model.StFlowR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; +import java.util.List; + +@Mapper +public interface StFlowRMapper extends BaseMapper { + + + @Select(""" + select t1.sttp,t2.* from + st_stbprp_b t1 + join (SELECT id, stcd, tm, inq, q, otq, crtime + FROM ( + SELECT *, + ROW_NUMBER() OVER (PARTITION BY stcd ORDER BY tm DESC) as rn + FROM st_flow_r + ) t + WHERE rn = 1) t2 on t1.stcd = t2.stcd +""") + List listNewData(); + + @Select(""" + select DISTINCT stcd from st_flow_r +""") + List listStcds(); + + @Select(""" + + """) + List getDataByStcdAndTm(@Param("stcd") String stcd, @Param("tm") Date tm); +} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StWaterRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StWaterRMapper.java index bb33a92..8fd321c 100644 --- a/src/main/java/com/gunshi/project/hsz/mapper/StWaterRMapper.java +++ b/src/main/java/com/gunshi/project/hsz/mapper/StWaterRMapper.java @@ -36,4 +36,10 @@ public interface StWaterRMapper extends BaseMapper { on t1.stcd = t2.stcd and t1.tm = t2.max_tm ; """) List getStcdLastWaterData(); + + @Select(""" + select * from st_water_r where stcd = #{stcd} order by tm desc limit 1 +""") + StWaterR selectNewDataByStcd(String stcd); + } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/WaterDataTermitesMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/WaterDataTermitesMapper.java new file mode 100644 index 0000000..a87f0f7 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/mapper/WaterDataTermitesMapper.java @@ -0,0 +1,185 @@ +package com.gunshi.project.hsz.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import com.gunshi.project.hsz.entity.so.JcskByRPageSo; +import com.gunshi.project.hsz.model.JcskByR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; +import java.util.List; + + +@Mapper +public interface WaterDataTermitesMapper extends BaseMapper { + + + /** + * 这段sql需求是 + * 查询某一天的白蚁数据,然后按测点进行分组,分组之后某一组数据内,如果status全部为0,表示没有白蚁,那么就取最新的那条数据即可 + * 如果某一组数据内 stauts有为1的,就是出现了白蚁的,那么就取最新的那一条有白蚁的数据 + * ROW_NUMBER 窗口函数的作用是根据order进行分组,当status为1时,优先显示,如果没有status为1的情况,那么就不管,同时按ob_date进行降序排列 + * 这样每次取到的数据,如果这一天之内某个测点(order)都没有status为1的数据,那么就去这个测站最新的那一条数据 + * 如果这一天之内某个测点(order)有status为1的数据,那么就去这个测点这一天之内status为1的最新的那一条数据 + * @param page + * @param jcskByRPageSo + * @return + */ + @Select(""" + +""") + Page pageQuery(Page page, @Param("obj") JcskByRPageSo jcskByRPageSo); + + + /** + * 这段sql,就是查询所有时间的,相当于上面那段sql的所有时间数据加起来 + * @param page + * @param queryWrapper + * @return + */ + @Select(""" + +""") + Page pageQueryWithNoDate(Page page, @Param("obj") JcskByRPageSo queryWrapper); + + + /** + * 根据取每个测点某一天内最新的那条数据(不用管status状态) + * @param page + * @param page1 + * @return + */ + @Select(""" + +""") + Page query(Page page,@Param("obj") JcskByRPageSo page1); + + + @Select(""" + + """) + List queryHasAntList(@Param("start") Date start, @Param("end") Date end); + + + @Select(""" + +""") + Page queryWithNoDate(Page page,@Param("obj") JcskByRPageSo page1); + + + @Select(""" + +""") + List listNewData(@Param("deviceId") String deviceId); +} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/WaterDeviceMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/WaterDeviceMapper.java new file mode 100644 index 0000000..bd9205a --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/mapper/WaterDeviceMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.hsz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.hsz.model.JcskByB; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WaterDeviceMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/hsz/model/HiddenInfo.java b/src/main/java/com/gunshi/project/hsz/model/HiddenInfo.java index 3fc92a5..c7c2b97 100644 --- a/src/main/java/com/gunshi/project/hsz/model/HiddenInfo.java +++ b/src/main/java/com/gunshi/project/hsz/model/HiddenInfo.java @@ -4,16 +4,20 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; @TableName("hidden_info") @Data public class HiddenInfo { @TableId("id") + @JsonSerialize(using = ToStringSerializer.class) private Long id; @TableField("mentence_farmer_record_id") @@ -42,4 +46,7 @@ public class HiddenInfo { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date resolveTime; + @TableField(exist = false) + private List files; + } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskByB.java b/src/main/java/com/gunshi/project/hsz/model/JcskByB.java new file mode 100644 index 0000000..9e05e1d --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskByB.java @@ -0,0 +1,208 @@ +package com.gunshi.project.hsz.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 白蚁设备表实体类 + * 数据源为WaterDevice + * 与r表通过device_id关联 + */ +@Data +@TableName("jcsk_by_b") +public class JcskByB { + /** + * 主键 + */ + @TableField("id") + private Integer id; + + /** + * 设备名称 + */ + @TableField("name") + private String name; + + /** + * 设备编码 + */ + @TableField("code") + private String code; + + /** + * 站点接入编码 + */ + @TableField("mn_no") + private String mnNo; + + /** + * 厂家id + */ + @TableField("factory_id") + private Integer factoryId; + + /** + * 服务站点id + */ + @TableField("station_id") + private Integer stationId; + + /** + * 服务站点名称 + */ + @TableField("station_name") + private String stationName; + + /** + * 创建时间 + */ + @TableField("created_at") + private Integer createdAt; + + /** + * 创建人id + */ + @TableField("created_user") + private Integer createdUser; + + /** + * 修改时间 + */ + @TableField("updated_at") + private Integer updatedAt; + + /** + * 修改人id + */ + @TableField("updated_user") + private Integer updatedUser; + + /** + * 状态 + */ + @TableField("status") + private Integer status; + + /** + * 纬度 + */ + @TableField("lat") + private BigDecimal lat; + + /** + * 经度 + */ + @TableField("lon") + private BigDecimal lon; + + /** + * 省份id + */ + @TableField("province_id") + private Long provinceId; + + /** + * 省份名称 + */ + @TableField("province_name") + private String provinceName; + + /** + * 城市id + */ + @TableField("city_id") + private Long cityId; + + /** + * 城市名称 + */ + @TableField("city_name") + private String cityName; + + /** + * 区域名称 + */ + @TableField("area_name") + private String areaName; + + /** + * 区域id + */ + @TableField("area_id") + private Long areaId; + + /** + * 设备类型 + */ + @TableField("type") + private Integer type; + + /** + * 设备类型详情 + */ + @TableField("send_type") + private String sendType; + + /** + * 联系人 + */ + @TableField("contact") + private String contact; + + /** + * 联系电话 + */ + @TableField("telephone") + private String telephone; + + /** + * 流域 + */ + @TableField("river") + private String river; + + /** + * 安装地点 + */ + @TableField("address") + private String address; + + /** + * 产品型号 + */ + @TableField("model") + private String model; + + /** + * 备注 + */ + @TableField("remark") + private String remark; + + /** + * 通信方式 + */ + @TableField("communication_type") + private Integer communicationType; + + /** + * 设备图片 + */ + @TableField("image_url") + private String imageUrl; + + /** + * 设备视频流地址的ip + */ + @TableField("video_ip") + private String videoIp; + + /** + * 设备视频id + */ + @TableField("video_id") + private String videoId; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskByBD.java b/src/main/java/com/gunshi/project/hsz/model/JcskByBD.java new file mode 100644 index 0000000..badbd13 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskByBD.java @@ -0,0 +1,71 @@ +package com.gunshi.project.hsz.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 设备站点关联表实体类 + * 对应表:jcsk_by_b_d + */ +@Data +@TableName("public.jcsk_by_b_d") +public class JcskByBD { + + /** + * 机箱 + */ + @TableField(value="device_id") + @Schema(description="设备编号") + private Integer deviceId; + + /** + * 站点编号 + */ + @TableField(value = "\"order\"") + @Schema(description = "测点编号") + private String order; + + /** + * 联网方式 + */ + @TableField(value = "inte_type") + @Schema(description = "联网方式") + private String inteType; + + /** + * 安装位置 + */ + @TableField(value = "fix_place") + @Schema(description = "安装位置") + private String fixPlace; + + /** + * 经度 + */ + @TableField(value = "lgtd") + @Schema(description = "经度") + private BigDecimal lgtd; + + /** + * 备注 + */ + @TableField(value = "remark") + @Schema(description = "备注") + private String remark; + + /** + * 纬度 + */ + @TableField(value = "lttd") + @Schema(description = "纬度") + private BigDecimal lttd; + + + @TableField(exist = false) + @Schema(description = "有无白蚁 1为有 0为无") + private Integer status; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskByInspectTask.java b/src/main/java/com/gunshi/project/hsz/model/JcskByInspectTask.java new file mode 100644 index 0000000..a6e38fd --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskByInspectTask.java @@ -0,0 +1,52 @@ +package com.gunshi.project.hsz.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * 巡检任务监测数据实体类 + * + * @author gunshiiot + * @TableName jcsk_by_inspect_task + */ +@Data +@TableName(value = "jcsk_by_inspect_task") +public class JcskByInspectTask { + + /** + * 设备id + */ + @TableField("\"order\"") + @Schema(description = "设备id") + private String order; + + /** + * 巡检任务id + */ + @TableField("inspect_task_id") + @Schema(description = "巡检任务id") + private Long inspectTaskId; + + /** + * 监测时间 + */ + @TableField("ob_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Schema(description = "监测时间") + private Date obDate; + + /** + * 结束时间 + */ + @TableField("ob_resolve_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Schema(description = "结束时间") + private Date obResolveDate; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskByR.java b/src/main/java/com/gunshi/project/hsz/model/JcskByR.java new file mode 100644 index 0000000..a39bf86 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskByR.java @@ -0,0 +1,123 @@ +package com.gunshi.project.hsz.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.project.hsz.entity.vo.JcskByRProcessVo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * 白蚁数据表实体类 + * 数据源为WaterDataTermites + */ +@Data +@TableName("jcsk_by_r") +public class JcskByR { + /** + * 设备编码 + */ + @TableField("mn_no") + private String mnNo; + + /** + * 白蚁蚁情状态,有白蚁入侵为1 + */ + @TableField("status") + private Integer status; + + /** + * 白蚁设备电量 + */ + @TableField("electricity") + private Integer electricity; + + /** + * 白蚁设备安装的点位顺序(测点编号) + */ + @TableField("\"order\"") + private String order; + + /** + * 创建时间 + */ + @TableField("created_at") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createdAt; + + /** + * 观测时间 + */ + @TableField("ob_time") + private String obTime; + + /** + * 观测时间2 + */ + @TableField("ob_date") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date obDate; + + /** + * 主键id + */ + @TableField("id") + private Integer id; + + /** + * 水库id + */ + @TableField("station_id") + private Integer stationId; + + /** + * 站点名称 + */ + @TableField("station_name") + private String stationName; + + /** + * 设备id + */ + @TableField("device_id") + private Integer deviceId; + + /** + * 设备名称 + */ + @TableField("device_name") + private String deviceName; + + /** + * 任务状态 + */ + @TableField("task_status") + private String taskStatus; + + /** + * 任务id + */ + @TableField("task_id") + private String taskId; + + /** + * 接收类型 + */ + @TableField("receive_type") + private Short receiveType; + + @Schema(description = "是否处理") + @TableField(exist = false) + private Boolean isProcess = false; + + @Schema(description = "是否有巡检任务") + @TableField(exist = false) + private Boolean hasInspectTask = false; + + + @Schema(description = "工单详情") + @TableField(exist = false) + private JcskByRProcessVo jcskByRProcessVo; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskByRProcess.java b/src/main/java/com/gunshi/project/hsz/model/JcskByRProcess.java new file mode 100644 index 0000000..ac436ad --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskByRProcess.java @@ -0,0 +1,39 @@ +package com.gunshi.project.hsz.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName(value = "jcsk_by_r_process") +public class JcskByRProcess { + + + @TableField("\"order\"") + @Schema(description = "设备编号") + private String order; + + @TableField("ob_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Schema(description = "监测时间") + private Date obDate; + + @TableField("ob_resolve_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Schema(description = "监测时间 + hours之后的结束时间") + private Date obResolveDate; + + @TableField("hours") + @Schema(description = "间隔小时") + private Integer hours; + + @TableField(exist = false) + @Schema(description = "巡检任务实体类") + private InspectTask inspectTask; +} diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskGnssB.java b/src/main/java/com/gunshi/project/hsz/model/JcskGnssB.java new file mode 100644 index 0000000..a96b37c --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskGnssB.java @@ -0,0 +1,53 @@ +package com.gunshi.project.hsz.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * 位移设备表 + * 数据源为AttWyCdBase + * 与r表通过rscd加cd关联 + */ +@Data +@TableName("jcsk_gnss_b") +public class JcskGnssB { + /** + * 测点编码 + */ + @TableField("cd") + private String cd; + + @TableField(exist = false) + private String stationCode; + + /** + * 测点名称 + */ + @TableField("cd_nm") + private String cdNm; + + /** + * 桩号 + */ + @TableField("ch") + private String ch; + + /** + * 测点类型(sl/wy/sy) + */ + @TableField("cd_type") + private String cdType; + + /** + * 水库编码 + */ + @TableField("res_cd") + private String resCd; + + /** + * 设备状态 + */ + @TableField("device_status") + private String deviceStatus; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskGnssR.java b/src/main/java/com/gunshi/project/hsz/model/JcskGnssR.java new file mode 100644 index 0000000..48c4c46 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskGnssR.java @@ -0,0 +1,89 @@ +package com.gunshi.project.hsz.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 位移数据表 + * 数据源为AttMqttCalcDataNormal + */ +@Data +@TableName("jcsk_gnss_r") +public class JcskGnssR { + /** + * 水库编码设备编码 + */ + @TableField("res_cd") + private String resCd; + + /** + * 测点编码 + */ + @TableField("cd") + private String cd; + + /** + * 人工录入cd,用于执行更新时用 + */ + @TableField(exist = false) + private String newUpdateCd; + + @TableField("is_artificial") + private Integer isArtificial; + + @TableField(exist = false) + private String ch; + + @TableField(exist = false) + private String cdnm; + + /** + * e方向变形值,单位(mm) + */ + @TableField("de") + private BigDecimal de; + + /** + * n方向变形值,单位(mm) + */ + @TableField("dn") + private BigDecimal dn; + + /** + * u方向变形值,单位(mm) + */ + @TableField("du") + private BigDecimal du; + + /** + * 站点高程 + */ + @TableField("alt") + private BigDecimal alt; + + /** + * 监测时间 + */ + @TableField("tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date tm; + + /** + * 人工录入时间,用于执行更新时用 + */ + @TableField(exist = false) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date newUpdateTm; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTm; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskGnssREightAm.java b/src/main/java/com/gunshi/project/hsz/model/JcskGnssREightAm.java new file mode 100644 index 0000000..51b0bd9 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskGnssREightAm.java @@ -0,0 +1,30 @@ +package com.gunshi.project.hsz.model; + + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "荆楚水库-位移整编表") +@TableName("public.jcsk_gnss_r_8am") +public class JcskGnssREightAm { + + private String cd; + + + private String tm; + + + private BigDecimal de; + + private BigDecimal dn; + + private BigDecimal du; + + private String res_cd; + + private BigDecimal alt; +} diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskSlB.java b/src/main/java/com/gunshi/project/hsz/model/JcskSlB.java new file mode 100644 index 0000000..ec527dd --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskSlB.java @@ -0,0 +1,114 @@ +package com.gunshi.project.hsz.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Date; + +/** + * 渗流测点表实体类 + * 数据源为DsmSpgSpqnmp + * 与r表通过rscd加mpcd关联 + */ +@Data +@TableName("jcsk_sl_b") +public class JcskSlB { + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + @TableField(exist = false) + private String stationCode; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + /** + * rtu编号 + */ + @TableField("stcd") + private String stcd; + + /** + * 桩号 + */ + @TableField("ch") + private String ch; + + /** + * 轴距,单位m + */ + @TableField("ofax") + private BigDecimal ofax; + + /** + * 高程,单位m + */ + @TableField("el") + private BigDecimal el; + + /** + * 安装日期 + */ + @TableField("indt") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private LocalDate indt; + + /** + * 仪器编号 + */ + @TableField("dvcd") + private String dvcd; + + /** + * 经度 + */ + @TableField("lgtd") + private BigDecimal lgtd; + + /** + * 纬度 + */ + @TableField("lttd") + private BigDecimal lttd; + + /** + * 备注 + */ + @TableField("rm") + private String rm; + + /** + * 资料更新时间 + */ + @TableField("dtuptm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date dtuptm; + + /** + * 断面 + */ + @TableField("dm") + private String dm; + + /** + * 是否填报 + */ + @TableField("is_tb") + private String isTb; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskSlR.java b/src/main/java/com/gunshi/project/hsz/model/JcskSlR.java new file mode 100644 index 0000000..fc94b99 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskSlR.java @@ -0,0 +1,82 @@ +package com.gunshi.project.hsz.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 渗流数据表实体类 + * 数据源为DsmSpgSpqnNormal + */ +@Data +@TableName("jcsk_sl_r") +public class JcskSlR { + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + + @TableField("stcd") + private String stcd; + + /** + * 测量时间 + */ + @TableField("mstm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date mstm; + + /** + * 温度,单位℃ + */ + @TableField("tm") + private BigDecimal tm; + + /** + * 渗流量,单位l/s + */ + @TableField("spqn") + private BigDecimal spqn; + + /** + * 标准水温渗流量,单位l/s + */ + @TableField("stspqn") + private BigDecimal stspqn; + + /** + * 创建时间 + */ + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTm; + + + @TableField(exist = false) + private String dvcd; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskSlREightAm.java b/src/main/java/com/gunshi/project/hsz/model/JcskSlREightAm.java new file mode 100644 index 0000000..0e38ef5 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskSlREightAm.java @@ -0,0 +1,74 @@ +package com.gunshi.project.hsz.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@TableName("jcsk_sl_r_8am") +public class JcskSlREightAm { + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + + @TableField("stcd") + private String stcd; + + /** + * 测量时间 + */ + @TableField("mstm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date mstm; + + /** + * 温度,单位℃ + */ + @TableField("tm") + private BigDecimal tm; + + /** + * 渗流量,单位l/s + */ + @TableField("spqn") + private BigDecimal spqn; + + /** + * 标准水温渗流量,单位l/s + */ + @TableField("stspqn") + private BigDecimal stspqn; + + /** + * 创建时间 + */ + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTm; +} diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskSyB.java b/src/main/java/com/gunshi/project/hsz/model/JcskSyB.java new file mode 100644 index 0000000..c2c0473 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskSyB.java @@ -0,0 +1,138 @@ +package com.gunshi.project.hsz.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 渗压测点表 + * 数据源为DsmSpgSpprmp + * 与r表通过rscd,stcd,mpcd关联 + */ +@Data +@TableName("jcsk_sy_b") +public class JcskSyB { + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + /** + * rtu编码 + */ + @TableField("stcd") + private String stcd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + /** + * 桩号 + */ + @TableField("ch") + private String ch; + + /** + * 轴距,单位m + */ + @TableField("ofax") + private BigDecimal ofax; + + /** + * 高程,单位m + */ + @TableField("el") + private BigDecimal el; + + /** + * 监测类型 + */ + @TableField("msps") + private String msps; + + /** + * 透水段底高程,单位m + */ + @TableField("pmbtel") + private BigDecimal pmbtel; + + /** + * 透水段顶高程,单位m + */ + @TableField("pmtpel") + private BigDecimal pmtpel; + + /** + * 坝面高程 + */ + @TableField("dsel") + private BigDecimal dsel; + + /** + * 安装日期 + */ + @TableField("indt") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private LocalDate indt; + + /** + * 仪器编号 + */ + @TableField("dvcd") + private String dvcd; + + /** + * 经度 + */ + @TableField("lgtd") + private BigDecimal lgtd; + + /** + * 纬度 + */ + @TableField("lttd") + private BigDecimal lttd; + + /** + * 备注 + */ + @TableField("rm") + private String rm; + + /** + * 资料更新时间 + */ + @TableField("dtuptm") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private LocalDateTime dtuptm; + + /** + * 断面 + */ + @TableField("dm") + private String dm; + + /** + * 是否填报 + */ + @TableField("is_tb") + private String isTb; + + @TableField(exist = false) + private String stationCode; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskSyR.java b/src/main/java/com/gunshi/project/hsz/model/JcskSyR.java new file mode 100644 index 0000000..5fd5242 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskSyR.java @@ -0,0 +1,94 @@ +package com.gunshi.project.hsz.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Date; + +/** + * 渗压数据表实体类 + * 数据源为DsmSpgSpprNormal + */ +@Data +@TableName("jcsk_sy_r") +public class JcskSyR { + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + /** + * stcd + */ + @TableField("stcd") + private String stcd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * mpcd + */ + @TableField("mpcd") + private String mpcd; + + /** + * 测量时间 + */ + @TableField("mstm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date mstm; + + /** + * 用于记录人工录入数据时的新时间 + */ + @TableField(exist = false) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateMstm; + + /** + * 温度 + */ + @TableField("tm") + private BigDecimal tm; + + /** + * 渗流压力水位,单位m + */ + @TableField("spprwl") + private BigDecimal spprwl; + + @TableField("is_artificial") + @Schema(description = "是否为人工录入 0不是 1是") + private Integer isArtificial; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime updateTm; + + @TableField(exist = false) + @Schema(description = "断面编码") + private String dm; + + + @TableField(exist = false) + @Schema(description = "断面名称") + private String dmName; + + + @TableField(exist = false) + @Schema(description = "测点编号") + private String dvcd; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskSyREightAm.java b/src/main/java/com/gunshi/project/hsz/model/JcskSyREightAm.java new file mode 100644 index 0000000..1d541b2 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/JcskSyREightAm.java @@ -0,0 +1,78 @@ +package com.gunshi.project.hsz.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@TableName("jcsk_sy_r_8am") +public class JcskSyREightAm { + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + /** + * 测站编码 + */ + @TableField("stcd") + private String stcd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + /** + * 测量时间 + */ + @TableField("mstm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime mstm; + + /** + * 温度 + */ + @TableField("tm") + private BigDecimal tm; + + /** + * 渗流压力水位,单位m + */ + @TableField("spprwl") + private BigDecimal spprwl; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime updateTm; + + @TableField(exist = false) + @Schema(description = "断面编码") + private String dm; + + + @TableField(exist = false) + @Schema(description = "断面名称") + private String dmName; + + + @TableField(exist = false) + @Schema(description = "dvcd") + private String dvcd; +} diff --git a/src/main/java/com/gunshi/project/hsz/model/MentenceFarmerRecord.java b/src/main/java/com/gunshi/project/hsz/model/MentenceFarmerRecord.java index 23a3c8e..63f1553 100644 --- a/src/main/java/com/gunshi/project/hsz/model/MentenceFarmerRecord.java +++ b/src/main/java/com/gunshi/project/hsz/model/MentenceFarmerRecord.java @@ -48,10 +48,15 @@ public class MentenceFarmerRecord { @Schema(description = "维护人员名称") private String mentencePersonName; - @TableField("mentence_time") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @Schema(description = "维护时间") - private Date mentenceTime; + @TableField("mentence_time_begin") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Schema(description = "维护时间开始") + private Date mentenceTimeBegin; + + @TableField("mentence_time_end") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Schema(description = "维护时间结束") + private Date mentenceTimeEnd; @TableField("fill_time") @Schema(description = "填报时间") diff --git a/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnR.java b/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnR.java index d249bda..e4b3bb0 100644 --- a/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnR.java +++ b/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnR.java @@ -81,4 +81,8 @@ public class OsmoticWarnR implements Serializable { @Schema(description="告警级别(1黄色 2红色)") private Integer level; + @TableField(value = "resolve_suggest") + @Schema(description = "处理建议") + private String resolveSuggest; + } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnRule.java b/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnRule.java index 7d3c8de..5609f37 100644 --- a/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnRule.java +++ b/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnRule.java @@ -178,6 +178,11 @@ public class OsmoticWarnRule implements Serializable { @Schema(description="value_two") private BigDecimal valueTwo; + + @TableField(value = "resolve_suggest") + @Schema(description = "处理建议") + private String resolveSuggest; + /** * 是否启用(0否 1是) */ diff --git a/src/main/java/com/gunshi/project/hsz/model/StFlowR.java b/src/main/java/com/gunshi/project/hsz/model/StFlowR.java new file mode 100644 index 0000000..eff058f --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/model/StFlowR.java @@ -0,0 +1,59 @@ +package com.gunshi.project.hsz.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 水厂流量表 (灌溉流量/水厂流量) + */ + +@Data +@TableName("public.st_flow_r") +public class StFlowR { + + @TableId(value = "id") + @Schema(description = "Id") + private Long id; + + + @TableField(value = "stcd") + @Schema(description = "站点编码") + private String stcd; + + @TableField(value = "tm") + @Schema(description = "观测时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime tm; + + @TableField(value = "inq") + private BigDecimal inq; + + @TableField(value = "q") + @Schema(description = "流量") + private BigDecimal q; + + @TableField(value = "otq") + private BigDecimal otq; + + @TableField(value = "crtime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime crtime; + + @Schema(description = "水量") + @TableField(exist = false) + private BigDecimal v; + + @Schema(description = "站点类型") + @TableField(exist = false) + private String sttp; + + @TableField(exist = false) + private ResMonthEcoFlow resMonthEcoFlow; +} diff --git a/src/main/java/com/gunshi/project/hsz/service/AttDamProfileService.java b/src/main/java/com/gunshi/project/hsz/service/AttDamProfileService.java index fede8c7..234fa12 100644 --- a/src/main/java/com/gunshi/project/hsz/service/AttDamProfileService.java +++ b/src/main/java/com/gunshi/project/hsz/service/AttDamProfileService.java @@ -27,17 +27,27 @@ import java.util.stream.Collectors; public class AttDamProfileService extends ServiceImpl { @Resource - private OsmoticPressDeviceAutoDao pressDeviceAutoDao; + private JcskSyBService jcskSyBService; + + @Resource + private JcskSlBService jcskSlBService; + + @Resource + private JcskGnssBService jcskGnssBService; + public List tree() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.orderByAsc(AttDamProfile::getProfileCode); List list = this.list(queryWrapper); List res = MyBeanUtil.collectionCopy(list,ProfilePressTreeVo.class); for(ProfilePressTreeVo vo : res){ - List pressList = pressDeviceAutoDao.list(new LambdaQueryWrapper() - .eq(OsmoticPressDevice::getProfileCode, vo.getProfileCode()).orderByAsc(OsmoticPressDevice::getStationCode)); - vo.setChildren(pressList.stream().map(OsmoticPressDevice::getStationCode).sorted().collect(Collectors.toList())); + List childrensy = jcskSyBService.getDvcdByProfileCode(vo.getProfileCode()); + vo.setChildren(childrensy); + //List pressList = pressDeviceAutoDao.list(new LambdaQueryWrapper() +// .eq(OsmoticPressDevice::getProfileCode, vo.getProfileCode()).orderByAsc(OsmoticPressDevice::getStationCode)); +// vo.setChildren(pressList.stream().map(OsmoticPressDevice::getStationCode).sorted().collect(Collectors.toList())); } return res; } diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastResultsService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastResultsService.java index 0e21678..eaccf12 100644 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastResultsService.java +++ b/src/main/java/com/gunshi/project/hsz/service/ForecastResultsService.java @@ -43,6 +43,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.stream.Collectors; diff --git a/src/main/java/com/gunshi/project/hsz/service/HiddenInfoService.java b/src/main/java/com/gunshi/project/hsz/service/HiddenInfoService.java index 47a9378..577f59b 100644 --- a/src/main/java/com/gunshi/project/hsz/service/HiddenInfoService.java +++ b/src/main/java/com/gunshi/project/hsz/service/HiddenInfoService.java @@ -4,14 +4,38 @@ package com.gunshi.project.hsz.service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gunshi.project.hsz.mapper.HiddenInfoMapper; import com.gunshi.project.hsz.mapper.MentenceFarmerRecordMapper; +import com.gunshi.project.hsz.model.FileAssociations; import com.gunshi.project.hsz.model.HiddenInfo; import com.gunshi.project.hsz.model.MentenceFarmerRecord; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service @Slf4j @Transactional(rollbackFor = Exception.class) public class HiddenInfoService extends ServiceImpl { + + @Autowired + private FileAssociationsService fileService; + + public String getGroupId(){ + return "hiddenInfo"; + } + + public void saveFile(List files, String businessId) { + fileService.saveFile(files,getGroupId(),businessId); + } + + public void deleteFile(String businessId) { + fileService.deleteFile(getGroupId(),businessId); + } + + public List getFiles(String businessId) { + List files = fileService.getFiles(getGroupId(), businessId); + return files; + } } diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskByBDService.java b/src/main/java/com/gunshi/project/hsz/service/JcskByBDService.java new file mode 100644 index 0000000..4baff6d --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/service/JcskByBDService.java @@ -0,0 +1,42 @@ +package com.gunshi.project.hsz.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.hsz.entity.so.JcskByBDPageSo; +import com.gunshi.project.hsz.mapper.JcskByBDMapper; +import com.gunshi.project.hsz.model.JcskByBD; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskByBDService extends ServiceImpl { + + public Page pageQuery(JcskByBDPageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(page.getDeviceId() != null){ + queryWrapper.eq(JcskByBD::getDeviceId, page.getDeviceId()); + } + if(page.getOrder() != null){ + queryWrapper.eq(JcskByBD::getOrder, page.getOrder()); + } + Page jcskByBDPage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); + return jcskByBDPage; + } + + public List listDevices() { + + return this.baseMapper.listDevices(); + } + + public List listAll(Date date) { + return this.baseMapper.listAll(date); + } +} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskByBService.java b/src/main/java/com/gunshi/project/hsz/service/JcskByBService.java new file mode 100644 index 0000000..12cf10e --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/service/JcskByBService.java @@ -0,0 +1,15 @@ +package com.gunshi.project.hsz.service; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.hsz.mapper.JcskByBMapper; +import com.gunshi.project.hsz.model.JcskByB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskByBService extends ServiceImpl { +} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskByInspectTaskService.java b/src/main/java/com/gunshi/project/hsz/service/JcskByInspectTaskService.java new file mode 100644 index 0000000..973f246 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/service/JcskByInspectTaskService.java @@ -0,0 +1,54 @@ +package com.gunshi.project.hsz.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.gunshi.project.hsz.mapper.InspectTaskMapper; +import com.gunshi.project.hsz.mapper.JcskByInspectTaskMapper; +import com.gunshi.project.hsz.model.InspectTask; +import com.gunshi.project.hsz.model.JcskByInspectTask; +import com.gunshi.project.hsz.model.JcskByR; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskByInspectTaskService extends ServiceImpl { + + @Autowired + private InspectTaskService inspectTaskService; + + @Autowired + private InspectTaskDetailService inspectTaskDetailService; + + @Autowired + private InspectTaskMapper inspectTaskMapper; + + public InspectTask queryInspectTask(JcskByR record) { + InspectTask res = null; + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + //测点编号+开始时间+结束时间 可以唯一确定一条关联数据 + queryWrapper.eq(JcskByInspectTask::getOrder, record.getOrder()); + queryWrapper.le(JcskByInspectTask::getObDate, record.getObDate()); // 任务开始时间 <= record的开始时间 + queryWrapper.ge(JcskByInspectTask::getObResolveDate, record.getObDate()); // 任务结束时间 >= record的开始时间 + JcskByInspectTask jcskByInspectTask = this.baseMapper.selectOne(queryWrapper); + if (jcskByInspectTask != null) { + //获取关联的巡检任务的ID + Long inspectTaskId = jcskByInspectTask.getInspectTaskId(); + //查询数据 + res = inspectTaskService.getById(inspectTaskId); + Integer countIsHandle = inspectTaskMapper.countIsHandle(inspectTaskId); + Integer countIsNormal = inspectTaskMapper.countIsNormal(inspectTaskId); + if(res != null){ + res.setProblemNum(countIsNormal); + res.setHandleNum(countIsHandle); + } + + } + return res; + } +} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskByRProcessService.java b/src/main/java/com/gunshi/project/hsz/service/JcskByRProcessService.java new file mode 100644 index 0000000..b5cebcb --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/service/JcskByRProcessService.java @@ -0,0 +1,90 @@ +package com.gunshi.project.hsz.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.hsz.mapper.JcskByInspectTaskMapper; +import com.gunshi.project.hsz.mapper.JcskByRProcessMapper; +import com.gunshi.project.hsz.model.InspectTask; +import com.gunshi.project.hsz.model.JcskByInspectTask; +import com.gunshi.project.hsz.model.JcskByR; +import com.gunshi.project.hsz.model.JcskByRProcess; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskByRProcessService extends ServiceImpl { + private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + @Autowired + private InspectTaskService inspectTaskService; + + @Autowired + private JcskByInspectTaskMapper jcskByInspectTaskMapper; + + public Boolean process(JcskByRProcess jcskByRProcess) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(JcskByRProcess::getOrder, jcskByRProcess.getOrder()); + queryWrapper.eq(JcskByRProcess::getObDate, jcskByRProcess.getObDate()); + //查询同一测点,同一时间是否处理过 + JcskByRProcess dbData = this.baseMapper.selectOne(queryWrapper); + + Date obDate = jcskByRProcess.getObDate(); + //endDate = obDate + 所填小时 + Date endDate = addHours(obDate, jcskByRProcess.getHours()); + jcskByRProcess.setObResolveDate(endDate); + if(dbData == null){ + this.baseMapper.insert(jcskByRProcess); + }else{ + this.baseMapper.update(jcskByRProcess,queryWrapper); + } + //是否填写巡检任务 + if(jcskByRProcess.getInspectTask() != null){ + InspectTask inspectTask = jcskByRProcess.getInspectTask(); + //保存巡检任务 + inspectTaskService.saveData(inspectTask); + //添加关联 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(JcskByInspectTask::getObDate, obDate); + lambdaQueryWrapper.eq(JcskByInspectTask::getOrder, jcskByRProcess.getOrder()); + JcskByInspectTask jcskByInspectTask = jcskByInspectTaskMapper.selectOne(lambdaQueryWrapper); + JcskByInspectTask entity = new JcskByInspectTask(); + entity.setOrder(jcskByRProcess.getOrder()); + entity.setObDate(obDate); + entity.setObResolveDate(endDate); + entity.setInspectTaskId(inspectTask.getId()); + if(jcskByInspectTask == null){ + jcskByInspectTaskMapper.insert(entity); + }else{ + jcskByInspectTaskMapper.update(entity,lambdaQueryWrapper); + } + } + return true; + } + + private Date addHours(Date date, int hours) { + if (date == null) return null; + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.HOUR_OF_DAY, hours); + return calendar.getTime(); + } + + public List queryCount(JcskByR record) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(JcskByRProcess::getOrder, record.getOrder()); + queryWrapper.ge(JcskByRProcess::getObResolveDate,record.getObDate()); + queryWrapper.le(JcskByRProcess::getObDate,record.getObDate()); + queryWrapper.orderByDesc(JcskByRProcess::getHours); + List res = this.baseMapper.selectList(queryWrapper); + return res; + } +} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskByRService.java b/src/main/java/com/gunshi/project/hsz/service/JcskByRService.java new file mode 100644 index 0000000..95f22da --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/service/JcskByRService.java @@ -0,0 +1,118 @@ +package com.gunshi.project.hsz.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.hsz.entity.so.JcskByRPageSo; +import com.gunshi.project.hsz.entity.vo.JcskByRProcessVo; +import com.gunshi.project.hsz.mapper.WaterDataTermitesMapper; +import com.gunshi.project.hsz.model.InspectTask; +import com.gunshi.project.hsz.model.JcskByR; +import com.gunshi.project.hsz.model.JcskByRProcess; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskByRService extends ServiceImpl { + + @Autowired + private JcskByRProcessService jcskByRProcessService; + + @Autowired + private JcskByInspectTaskService jcskByInspectTaskService; + + @Autowired + private JcskByBDService jcskByBDService; + + + + public Page pageQuery(JcskByRPageSo page) { + Page res; + if(page.getObDate() != null){ + res = this.baseMapper.query(page.getPageSo().toPage(), page); + }else{ + res = this.baseMapper.queryWithNoDate(page.getPageSo().toPage(), page); + } + for (JcskByR record : res.getRecords()) { + List list = jcskByRProcessService.queryCount(record); + if(list.size() > 0){ + record.setIsProcess(true); + } + //当为处理之后的情况下 + InspectTask inspectTask = jcskByInspectTaskService.queryInspectTask(record); + if(inspectTask != null){ + //设置存在巡检任务 + record.setHasInspectTask(true); + //设置巡检任务数据 + JcskByRProcessVo detailTask = new JcskByRProcessVo(); + BeanUtils.copyProperties(inspectTask,detailTask); + detailTask.setHours(list.get(0).getHours()); + detailTask.setObResolveDate(list.get(0).getObResolveDate()); + detailTask.setObDate(list.get(0).getObDate()); + record.setJcskByRProcessVo(detailTask); + } + } + return res; + } + + public Map pageQueryCount(JcskByRPageSo page, Map countMap) { + long hasAnt = 0; + long noData = 0; + long notAnt = 0; + long totalData = 0; + Page res; + if(page.getObDate() != null){ + res = this.baseMapper.pageQuery(page.getPageSo().toPage(), page); + }else{ + res = this.baseMapper.pageQueryWithNoDate(page.getPageSo().toPage(), page); + } + List records = res.getRecords(); + for (JcskByR record : records) { + if(record.getStatus() == 0 && record.getElectricity() != null && record.getElectricity() > 0){ + notAnt++; + }else if(record.getStatus() == 1 && record.getElectricity() != null && record.getElectricity() > 0){ + hasAnt++; + }else{ + noData++; + } + } + totalData = jcskByBDService.count(); + noData = totalData - hasAnt - notAnt; + countMap.put("hasAnt",hasAnt); + countMap.put("notAnt",notAnt); + countMap.put("noData",noData >=0 ? noData:0); + countMap.put("totalPoint",totalData); + return countMap; + } + + public Page detailList(JcskByRPageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(page.getOrder() != null){ + queryWrapper.eq(JcskByR::getOrder,page.getOrder()); + } else if (page.getDeviceCode() != null) { + queryWrapper.eq(JcskByR::getDeviceId,page.getDeviceCode()); + }else{ + throw new IllegalArgumentException("请传入设备编号,或者测站编号"); + } + if(page.getDateTimeRangeSo() != null){ + queryWrapper.between(JcskByR::getObDate,page.getDateTimeRangeSo().getStart(),page.getDateTimeRangeSo().getEnd()); + } + queryWrapper.orderByDesc(JcskByR::getStatus) + .orderByDesc(JcskByR::getObDate); + Page jcskByRPage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); + return jcskByRPage; + } + + public List listNewData(String deviceId) { + return this.baseMapper.listNewData(deviceId); + } +} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskGnssBService.java b/src/main/java/com/gunshi/project/hsz/service/JcskGnssBService.java new file mode 100644 index 0000000..4e4d9af --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/service/JcskGnssBService.java @@ -0,0 +1,50 @@ +package com.gunshi.project.hsz.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.hsz.entity.so.JcskGnssBPageSo; +import com.gunshi.project.hsz.entity.vo.HomeJcskGnssBVo; +import com.gunshi.project.hsz.mapper.JcskGnssBMapper; +import com.gunshi.project.hsz.model.JcskGnssB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskGnssBService extends ServiceImpl { + + + public Page pageQuery(JcskGnssBPageSo page) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(ObjectUtils.isNotNull(page.getStationCode())){ + queryWrapper.like(JcskGnssB::getCd, page.getStationCode()); + } + + Page res = this.page(page.getPageSo().toPage(), queryWrapper); + return res; + } + + public HomeJcskGnssBVo getDetailsById(String id) { + return baseMapper.getDetailsById(id); + } + + public List getDetailsAndMonitoringDataList() { + return baseMapper.getDetailsAndMonitoringDataList(); + } + + public List listDms() { + return this.baseMapper.listDms(); + } + + public List artificialTree() { + return baseMapper.selectArtificial(); + } +} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskGnssRService.java b/src/main/java/com/gunshi/project/hsz/service/JcskGnssRService.java new file mode 100644 index 0000000..1e38c61 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/service/JcskGnssRService.java @@ -0,0 +1,551 @@ +package com.gunshi.project.hsz.service; + +import cn.hutool.poi.excel.ExcelWriter; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.hsz.entity.dto.ArtificialJcskGnssDeleteDto; +import com.gunshi.project.hsz.entity.so.JcskGnssRPageSo; +import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; +import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; +import com.gunshi.project.hsz.entity.vo.*; +import com.gunshi.project.hsz.mapper.AttResBaseMapper; +import com.gunshi.project.hsz.mapper.JcskGnssBMapper; +import com.gunshi.project.hsz.mapper.JcskGnssRMapper; +import com.gunshi.project.hsz.mapper.JcskSyRMapper; +import com.gunshi.project.hsz.model.JcskGnssR; +import com.gunshi.project.hsz.util.DataHandleUtil; +import com.gunshi.project.hsz.util.DateUtil; +import com.gunshi.project.hsz.util.ExcelUtil; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskGnssRService extends ServiceImpl { + + @Resource + private AttResBaseMapper attResBaseMapper; + + @Autowired + private JcskSyRMapper jcskSyRMapper; + + @Autowired + private JcskGnssBMapper jcskGnssBMapper; + + private static final String X_PREFIX = "/E"; + private static final String Y_PREFIX = "/N"; + private static final String H_PREFIX = "/U"; + + + public Page pageQuery(JcskGnssRPageSo page) { + Page res = this.baseMapper.pageQuery(page.getPageSo().toPage(), page); + return res; + } + + public String getStcd() { + List attResBaseVos = attResBaseMapper.queryList(); + AttResBaseVo attResBaseVo = attResBaseVos.get(0); + return attResBaseVo == null ? "":attResBaseVo.getStcd(); + } + + public List listValue() { + List list = baseMapper.listValue(); + list.stream().forEach(o ->{ + o.setStationCode(o.getCd()); + }); + if(CollectionUtils.isEmpty(list)){ + return list; + } + OsmoticQuerySo so = new OsmoticQuerySo(); + List stationCodes = list.stream().map(JcskGnessListVo::getCd).collect(Collectors.toList()); + String maxTm = list.stream().filter(o->o.getTm() != null).max(Comparator.comparing(JcskGnessListVo::getTm)).get().getTm(); + String minTm = list.stream().filter(o->o.getTm() != null).min(Comparator.comparing(JcskGnessListVo::getTm)).get().getTm(); + so.setStationCodes(stationCodes); + DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); + dateTimeRangeSo.setStart(DateUtil.convertStringToDate(minTm)); + dateTimeRangeSo.setEnd(DateUtil.convertStringToDate(maxTm)); + so.setDateTimeRangeSo(dateTimeRangeSo); + List warnList = baseMapper.queryWarn(so); + list.stream().map(o->{ + if(o.getTm() != null && DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(o.getTm()), new Date()) > 48){ + o.setFlag(1); + } + Boolean a = warnList.stream().filter(t->t.getCd().equals(o.getCd()) && t.getTm().equals(o.getTm()) && t.getDirection().toUpperCase().equals("X")).findAny().isPresent(); + if(a){ + o.setXStatus(1); + } + Boolean b = warnList.stream().filter(t->t.getCd().equals(o.getCd()) && t.getTm().equals(o.getTm()) && t.getDirection().toUpperCase().equals("Y")).findAny().isPresent(); + if(b){ + o.setYStatus(1); + } + Boolean c = warnList.stream().filter(t->t.getCd().equals(o.getCd()) && t.getTm().equals(o.getTm()) && t.getDirection().toUpperCase().equals("H")).findAny().isPresent(); + if(c){ + o.setHStatus(1); + } + return o; + }).collect(Collectors.toList()); + return list; + } + + public List yearStat(OsmoticQuerySo osmoticQuerySo) { + List resList = new ArrayList<>(); + commonQueryHandle(osmoticQuerySo); + //查询位移监测记录 + List valueList = baseMapper.queryReorganizeValue(osmoticQuerySo); + List dateList = DateUtil.getDatesBetween(osmoticQuerySo.getDateTimeRangeSo().getStart(), osmoticQuerySo.getDateTimeRangeSo().getEnd(), false); + //数据处理 + for(String str : dateList){ + OsmoticShiftVo2 vo = new OsmoticShiftVo2(); + vo.setTm(str); + // 筛选出该日期8点的数据 + List collect = valueList.stream() + .filter(o -> { + if (o.getTm() != null && o.getTm().startsWith(str)) { + // 提取时间部分,检查是否为08:00:00 + String timePart = o.getTm().substring(11, 13); // 获取 HH:mm:ss 部分 + return "08".equals(timePart); + } + return false; + }) + .peek(o->o.setTm(str)) + .collect(Collectors.toList()); + vo.setList(collect); + resList.add(vo); + } + return resList; + } + + // 新增:生成指定年份的所有日期(确保只包含当年日期) + private List generateYearDates(Integer year) { + List dates = new ArrayList<>(); + LocalDate start = LocalDate.of(year, 1, 1); + LocalDate end = LocalDate.of(year, 12, 31); + + LocalDate current = start; + while (!current.isAfter(end)) { + dates.add(current.toString()); // 格式为yyyy-MM-dd + current = current.plusDays(1); + } + return dates; + } + + + private OsmoticQuerySo commonQueryHandle(OsmoticQuerySo osmoticQuerySo){ + String year = osmoticQuerySo.getYear(); + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date start = sdf.parse(year + "-01-01 00:00:00"); + Date end = sdf.parse(year + "-12-31 23:59:59"); // 建议使用 23:59:59 + + DateTimeRangeSo so = new DateTimeRangeSo(); + so.setStart(start); + so.setEnd(end); + osmoticQuerySo.setDateTimeRangeSo(so); + return osmoticQuerySo; + } catch (Exception e) { + throw new IllegalArgumentException("日期格式错误: " + year, e); + } + } + + public List yearStatValue(OsmoticQuerySo osmoticQuerySo) { + // 定义时间格式化器 + List resList = new ArrayList<>(); + try { + commonQueryHandle(osmoticQuerySo); + //查询位移监测记录 + List valueList = baseMapper.queryValue(osmoticQuerySo); + //按测站分组 + Map> map = valueList.stream().collect(Collectors.groupingBy(OsmoticShiftValueVo2::getCd)); + map.entrySet().forEach(o->{ + String key = o.getKey(); + List value = o.getValue(); + + OsmoticChartVo2 xVo = new OsmoticChartVo2(); + OsmoticShiftValueVo2 xMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo2::getDe)).get(); + OsmoticShiftValueVo2 xMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo2::getDe)).get(); + xVo.setCd(key + X_PREFIX); + xVo.setMaxValue(xMax.getDe()); + xVo.setMaxTm(xMax.getTm()); + xVo.setMinValue(xMin.getDe()); + xVo.setMinTm(xMin.getTm()); + xVo.setDiff(xMax.getDe().subtract(xMin.getDe())); + resList.add(xVo); + + OsmoticChartVo2 yVo = new OsmoticChartVo2(); + OsmoticShiftValueVo2 yMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo2::getDn)).get(); + OsmoticShiftValueVo2 yMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo2::getDn)).get(); + yVo.setCd(key + Y_PREFIX); + yVo.setMaxValue(yMax.getDn()); + yVo.setMaxTm(yMax.getTm()); + yVo.setMinValue(yMin.getDn()); + yVo.setMinTm(yMin.getTm()); + yVo.setDiff(yMax.getDn().subtract(yMin.getDn())); + resList.add(yVo); + + OsmoticChartVo2 hVo = new OsmoticChartVo2(); + OsmoticShiftValueVo2 hMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo2::getDu)).get(); + OsmoticShiftValueVo2 hMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo2::getDu)).get(); + hVo.setCd(key + H_PREFIX); + hVo.setMaxValue(hMax.getDu()); + hVo.setMaxTm(hMax.getTm()); + hVo.setMinValue(hMin.getDu()); + hVo.setMinTm(hMin.getTm()); + hVo.setDiff(hMax.getDu().subtract(hMin.getDu())); + resList.add(hVo); + + }); + } catch (Exception e) { + log.info("year/state/value报错"); + e.printStackTrace(); + throw new IllegalArgumentException("报错"); + } + return resList; + } + + public void yearStatExport(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { + String fileName = "年度位移统计"; + String sheetName = "年度位移统计"; + + //上方表格数据 + List resList = yearStat(osmoticQuerySo); + //下方特征值数据 + List chartList = yearStatValue(osmoticQuerySo); + List stationCodes = osmoticQuerySo.getStationCodes(); + //表头信息 + List> headList = new ArrayList<>(); + List heads1 = new ArrayList<>(); + heads1.add("序号"); + heads1.add("序号"); + headList.add(heads1); + + List heads2 = new ArrayList<>(); + heads2.add("监测日期"); + heads2.add("监测日期"); + headList.add(heads2); + + for(String code : stationCodes){ + List headsX = new ArrayList<>(); + headsX.add(code); + headsX.add("X"); + headList.add(headsX); + + List headsY = new ArrayList<>(); + headsY.add(code); + headsY.add("Y"); + headList.add(headsY); + + List headsH = new ArrayList<>(); + headsH.add(code); + headsH.add("H"); + headList.add(headsH); + } + + List> list = new ArrayList<>(); + for (int j = 0;j < resList.size(); j++) { + OsmoticShiftVo2 vo = resList.get(j); + Map test = new LinkedHashMap<>(); + test.put("t0",j+1); + test.put("t1", vo.getTm()); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + OsmoticShiftValueVo2 valueVo = vo.getList().stream().filter(o->code.equals(o.getCd())).findFirst().orElse(null); + test.put(code + X_PREFIX,valueVo != null ? valueVo.getDe() : ""); + test.put(code + Y_PREFIX,valueVo != null ? valueVo.getDn() : ""); + test.put(code + H_PREFIX,valueVo != null ? valueVo.getDu() : ""); + } + list.add(test); + } + + Map max = new LinkedHashMap<>(); + max.put("t0","全年度特征值统计"); + max.put("t1", "最大值"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + max.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxValue()); + max.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxValue()); + max.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxValue()); + } + list.add(max); + + Map maxTm = new LinkedHashMap<>(); + maxTm.put("t0","全年度特征值统计"); + maxTm.put("t1", "日期"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + maxTm.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxTm()); + maxTm.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxTm()); + maxTm.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxTm()); + } + list.add(maxTm); + + Map min = new LinkedHashMap<>(); + min.put("t0","全年度特征值统计"); + min.put("t1", "最小值"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + min.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinValue()); + min.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinValue()); + min.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinValue()); + } + list.add(min); + + Map minTm = new LinkedHashMap<>(); + minTm.put("t0","全年度特征值统计"); + minTm.put("t1", "日期"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + minTm.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinTm()); + minTm.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinTm()); + minTm.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinTm()); + } + list.add(minTm); + + Map diff = new LinkedHashMap<>(); + diff.put("t0","全年度特征值统计"); + diff.put("t1", "年变幅"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + diff.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getDiff()); + diff.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getDiff()); + diff.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getDiff()); + } + list.add(diff); + + ExcelUtil.exportExcel(headList, DataHandleUtil.tableData(list),2,new int[]{0},fileName,response,sheetName); + } + + public List detailValue(OsmoticDetailQuerySo so) { + List list = baseMapper.detailValue(so); + OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); + BeanUtils.copyProperties(so,osmoticQuerySo); + List stRzVos = jcskSyRMapper.queryLineRz(osmoticQuerySo,getStcd()); + return bindShiftDetail(list,stRzVos); + } + + private String getHourTime(String timeStr) { + try { + if (timeStr == null || timeStr.length() < 16) { + return timeStr; + } + // 假设时间格式为 "yyyy-MM-dd HH:mm:ss" + // 取到小时部分,分钟和秒设为00 + return timeStr.substring(0, 14) + "00:00"; + } catch (Exception e) { + return timeStr; + } + } + + + private List bindShiftDetail(List list, List stRzVos) { + // 分离人工录入数据和自动采集数据 + List manualData = list.stream() + .filter(v -> v.getIsArtificial() != null && v.getIsArtificial() == 1) + .collect(Collectors.toList()); + + List autoData = list.stream() + .filter(v -> v.getIsArtificial() == null || v.getIsArtificial() == 0) + .collect(Collectors.toList()); + + // 如果是人工录入数据,直接使用原始数据,不进行时间合并 + if (!manualData.isEmpty()) { + return manualData.stream() + .map(manual -> { + // 为人工录入数据匹配整点的库水位数据 + String hourTime = getHourTime(manual.getTm()); + stRzVos.stream() + .filter(rz -> hourTime.equals(rz.getTm())) + .findFirst() + .ifPresent(rz -> manual.setRz(rz.getRz())); + return manual; + }) + .sorted(Comparator.comparing(OsmoticShiftValueVo2::getTm).reversed()) + .collect(Collectors.toList()); + } + + // 如果是自动采集数据,保持原有逻辑 + HashSet timeSet = new HashSet<>(); + autoData.forEach(v -> timeSet.add(v.getTm())); + stRzVos.forEach(v -> timeSet.add(v.getTm())); + + List result = new ArrayList<>(); + timeSet.forEach(time -> { + OsmoticShiftValueVo2 vo = new OsmoticShiftValueVo2(); + vo.setTm(time); + result.add(vo); + }); + + List resList = result.stream().map(vo -> { + // 匹配库水位数据 - 自动数据也匹配整点库水位 + String hourTime = getHourTime(vo.getTm()); + stRzVos.stream() + .filter(rz -> hourTime.equals(rz.getTm())) + .findFirst() + .ifPresent(rz -> vo.setRz(rz.getRz())); + + // 匹配位移数据 + autoData.stream() + .filter(shift -> vo.getTm().equals(shift.getTm())) + .findFirst() + .ifPresent(shift -> { + vo.setDe(shift.getDe()); + vo.setDn(shift.getDn()); + vo.setDu(shift.getDu()); + vo.setIsArtificial(shift.getIsArtificial()); + }); + return vo; + }).collect(Collectors.toList()); + + // 过滤掉没有监测数据的记录(即位移数据为空的记录) + List filteredList = resList.stream() + .filter(vo -> vo.getDe() != null || vo.getDn() != null || vo.getDu() != null) + .collect(Collectors.toList()); + + return filteredList.stream() + .sorted(Comparator.comparing(OsmoticShiftValueVo2::getTm).reversed()) + .collect(Collectors.toList()); + } + + public List getChAndCd() { + List chs = jcskGnssBMapper.selectCH(); + List res = new ArrayList<>(); + for (String ch : chs) { + GnssCdAndCdVo vo = new GnssCdAndCdVo(); + vo.setCh(ch); + List cds = jcskGnssBMapper.selectCDbyCh(ch); + vo.setChildrens(cds); + res.add(vo); + } + return res; + } + + public Page historyPage(JcskGnssRPageSo page) { + return this.baseMapper.historyPage(page.getPageSo().toPage(),page); + } + + public Page artificialPage(JcskGnssRPageSo page) { + Page res = this.baseMapper.artificialPage(page.getPageSo().toPage(),page); + return res; + } + + /** + * 将Date转为String + * @param date + * @return + */ + public String transforDateToString(Date date) { + // 将Date转换为LocalDateTime + if(date == null){ + return null; + } + LocalDateTime localDateTime = date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String formattedDate = localDateTime.format(formatter); + return formattedDate; + } + + public void artificialExport(JcskGnssRPageSo page, HttpServletResponse response) { + Page res = this.baseMapper.artificialPage(page.getPageSo().toPage(), page); + List records = res.getRecords(); + + // 创建导出数据列表 + List> exportData = new ArrayList<>(); + for (JcskGnssR record : records) { + Map row = new HashMap<>(); + row.put("cd",record.getCd()); + row.put("isArtificial", record.getIsArtificial() != null && record.getIsArtificial() == 1 ? "人工录入" : "自动采集"); + row.put("updateTm", transforDateToString(record.getUpdateTm())); + row.put("x",record.getDe()); + row.put("y",record.getDn()); + row.put("h",record.getDu()); + row.put("tm",transforDateToString(record.getTm())); + exportData.add(row); + } + + // 通过工具类创建writer + ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(); + + // 自定义标题(去掉水库代码、水工建筑物编号、stcd、mpcd) + writer.addHeaderAlias("cd", "测点编号"); + writer.addHeaderAlias("tm", "监测时间"); + writer.addHeaderAlias("x", "X方向形变值(mm)"); + writer.addHeaderAlias("y", "Y方向形变值(mm)"); + writer.addHeaderAlias("h", "H方向形变值(mm)"); + writer.addHeaderAlias("isArtificial","录入方式"); + writer.addHeaderAlias("updateTm","更新时间"); + + // 只写出设置了别名的字段 + writer.setOnlyAlias(true); + + // 一次性写出内容 + writer.write(exportData, true); + + // 设置响应内容类型 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); + + try { + // 设置响应头信息 + String fileName = URLEncoder.encode("位移人工录入数据", "UTF-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); + + // 将writer对象刷新到响应输出流中 + writer.flush(response.getOutputStream(), true); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("导出Excel失败", e); + } finally { + // 关闭writer,释放内存 + writer.close(); + } + } + + public boolean saveData(JcskGnssR dto) { + + dto.setIsArtificial(1); + dto.setUpdateTm(new Date()); + int insert = this.baseMapper.insert(dto); + return insert > 0; + } + + public boolean updateData(JcskGnssR dto) { + dto.setUpdateTm(new Date()); + Date oldTm = dto.getTm(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(JcskGnssR::getIsArtificial, 1); + queryWrapper.eq(JcskGnssR::getTm, oldTm); + queryWrapper.eq(JcskGnssR::getCd, dto.getCd()); + dto.setCd(dto.getNewUpdateCd()); + dto.setTm(dto.getNewUpdateTm()); + int update = this.baseMapper.update(dto, queryWrapper); + return update > 0; + } + + public boolean deleteData(ArtificialJcskGnssDeleteDto dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(JcskGnssR::getIsArtificial, 1); + queryWrapper.eq(JcskGnssR::getTm, dto.getTm()); + queryWrapper.eq(JcskGnssR::getCd, dto.getCd()); + int delete = this.baseMapper.delete(queryWrapper); + return delete > 0; + } +} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskSlBService.java b/src/main/java/com/gunshi/project/hsz/service/JcskSlBService.java new file mode 100644 index 0000000..9b04f78 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/service/JcskSlBService.java @@ -0,0 +1,53 @@ +package com.gunshi.project.hsz.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.hsz.entity.so.JcskSlBPageSo; +import com.gunshi.project.hsz.entity.vo.HomeJcskSlBVo; +import com.gunshi.project.hsz.mapper.JcskSlBMapper; +import com.gunshi.project.hsz.model.JcskSlB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskSlBService extends ServiceImpl { + + + public Page pageQuery(JcskSlBPageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(ObjectUtils.isNotNull(page.getMpcd())){ + queryWrapper.like(JcskSlB::getMpcd, page.getMpcd()); + } + if(ObjectUtils.isNotNull(page.getRscd())){ + queryWrapper.like(JcskSlB::getRscd, page.getRscd()); + } + if(ObjectUtils.isNotNull(page.getStcd())){ + queryWrapper.like(JcskSlB::getStcd, page.getStcd()); + } + Page res = this.page(page.getPageSo().toPage(), queryWrapper); + return res; + } + + public List getDetailsAndMonitoringDataList() { + return baseMapper.getDetailsAndMonitoringDataList(); + } + + public HomeJcskSlBVo getDetailsById(String id) { + return baseMapper.getDetailsById(id); + } + + public List getDvcdByProfileCode(String profileCode) { + return this.baseMapper.getDvcdByProfileCode(profileCode); + } + + public String getDvcdByStcdAndMpcd(String mpcd) { + return this.baseMapper.selectDvcdByStcdAndMpcd(mpcd); + } +} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskSlRService.java b/src/main/java/com/gunshi/project/hsz/service/JcskSlRService.java new file mode 100644 index 0000000..2c477bc --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/service/JcskSlRService.java @@ -0,0 +1,27 @@ +package com.gunshi.project.hsz.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.hsz.entity.so.JcskSlRPageSo; +import com.gunshi.project.hsz.entity.vo.JcskSlRHisVo; +import com.gunshi.project.hsz.mapper.JcskSlRMapper; +import com.gunshi.project.hsz.model.JcskSlR; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskSlRService extends ServiceImpl { + + + public Page pageQuery(JcskSlRPageSo page) { + Page res = this.baseMapper.pageQuery(page.getPageSo().toPage(), page); + return res; + } + + public Page historyPage(JcskSlRPageSo page) { + return this.baseMapper.historyPage(page.getPageSo().toPage(),page); + } +} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskSyBService.java b/src/main/java/com/gunshi/project/hsz/service/JcskSyBService.java new file mode 100644 index 0000000..06ae3f0 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/service/JcskSyBService.java @@ -0,0 +1,55 @@ +package com.gunshi.project.hsz.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.hsz.entity.so.JcskSyBPageSo; +import com.gunshi.project.hsz.entity.vo.HomeJcskSYBVo; +import com.gunshi.project.hsz.mapper.JcskSyBMapper; +import com.gunshi.project.hsz.model.JcskSyB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskSyBService extends ServiceImpl { + + + + public Page pageQuery(JcskSyBPageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + if(ObjectUtils.isNotNull(page.getMpcd())){ + queryWrapper.like(JcskSyB::getMpcd,page.getMpcd()); + } + if(ObjectUtils.isNotNull(page.getDm())){ + queryWrapper.like(JcskSyB::getDm,page.getDm()); + } + Page res = this.page(page.getPageSo().toPage(), queryWrapper); + return res; + } + + public List getDetailsAndMonitoringDataList() { + return baseMapper.getDetailsAndMonitoringDataList(); + } + + public HomeJcskSYBVo getDetailsById(String id) { + return baseMapper.getDetailsById(id); + } + + public List getDvcdByProfileCode(String profileCode) { + + return this.baseMapper.getDvcdByProfileCode(profileCode); + } + + public String getDvcdByStcdAndMpcd(String stcd, String mpcd) { + return this.baseMapper.selectDvcdByStcdAndMpcd(stcd,mpcd); + } +} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskSyRService.java b/src/main/java/com/gunshi/project/hsz/service/JcskSyRService.java new file mode 100644 index 0000000..d34970a --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/service/JcskSyRService.java @@ -0,0 +1,777 @@ +package com.gunshi.project.hsz.service; + + +import cn.hutool.poi.excel.ExcelWriter; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.hsz.entity.dto.ArtificialJcskSyDeleteDto; +import com.gunshi.project.hsz.entity.so.JcskSyRPageSo; +import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; +import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; +import com.gunshi.project.hsz.entity.vo.*; +import com.gunshi.project.hsz.mapper.JcskSlBMapper; +import com.gunshi.project.hsz.mapper.JcskSyREightAmMapper; +import com.gunshi.project.hsz.mapper.JcskSyRMapper; +import com.gunshi.project.hsz.model.JcskSyB; +import com.gunshi.project.hsz.model.JcskSyR; +import com.gunshi.project.hsz.util.*; +import com.ruoyi.common.utils.StringUtils; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskSyRService extends ServiceImpl { + + @Autowired + private JcskSyBService jcskSyBService; + + @Autowired + private JcskGnssRService jcskGnssRService; + + @Autowired + private JcskSlBMapper jcskSlBMapper; + + + @Autowired + private AttDamProfileService attDamProfileService; + + @Autowired + private JcskSyREightAmMapper jcskSyREightAmMapper; + + + + public Page pageQuery(JcskSyRPageSo page) { + Page res = this.baseMapper.queryPage(page.getPageSo().toPage(),page); + return res; + } + + // 使用更现代的日期时间API + private Date parseDateSafe(String dateStr) { + if (dateStr == null) return null; + + // 移除可能的时区信息 + dateStr = dateStr.replace("T", " ").split("\\.")[0]; + + try { + LocalDateTime localDateTime = LocalDateTime.parse(dateStr, + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); + } catch (Exception e) { + try { + LocalDate localDate = LocalDate.parse(dateStr, + DateTimeFormatter.ofPattern("yyyy-MM-dd")); + return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); + } catch (Exception e2) { + throw new RuntimeException("无法解析日期: " + dateStr, e2); + } + } + } + + + public List listValue(Integer type) { + List list; + try { + if(type == 1){ + list = baseMapper.listValue(); + }else { + list = jcskSlBMapper.listValue(); + //list = baseMapper.flowListValue(); + } + OsmoticQuerySo so = new OsmoticQuerySo(); + List stationCodes = list.stream().map(JcskSyRVo::getStationCode).collect(Collectors.toList()); + if(list.stream().filter(o->o.getTm() != null).collect(Collectors.toList()).size() > 0 ){ + String maxTm = list.stream().filter(o->o.getTm() != null).max(Comparator.comparing(JcskSyRVo::getTm)).get().getTm().toString(); + String minTm = list.stream().filter(o->o.getTm() != null).min(Comparator.comparing(JcskSyRVo::getTm)).get().getTm().toString(); + so.setStationCodes(stationCodes); + DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); + dateTimeRangeSo.setStart(parseDateSafe(minTm)); + dateTimeRangeSo.setEnd(parseDateSafe(maxTm)); + so.setDateTimeRangeSo(dateTimeRangeSo); + List warnList = baseMapper.queryWarn(so); + list.stream().map(o->{ + if(o.getTm() != null && DateUtil.hoursBetweenDate(parseDateSafe(o.getTm().toString()), new Date()) > 48){ + o.setFlag(1); + } + Boolean b = warnList.stream().filter(t->t.getStationCode().equals(o.getStationCode()) && t.getTm().equals(o.getTm())).findAny().isPresent(); + if(b){ + o.setStatus(1); + } + String stationCode = o.getStationCode(); + LambdaQueryWrapper wq = new LambdaQueryWrapper(); + wq.eq(JcskSyB::getDvcd, stationCode); + List jcskSyBS = jcskSyBService.list(wq); + if(!jcskSyBS.isEmpty()){ + o.setProfileName(jcskSyBS.get(0).getDm().toString()); + } + return o; + }).collect(Collectors.toList()); + } + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + return list; + } + + public List detailValue(OsmoticDetailQuerySo so) { + List list; + if(so.getType() == 1){ + list = baseMapper.detailValue(so); + }else{ + list = jcskSlBMapper.detailValue(so); + } + if(so.getType() == 2){ + return list; + } + OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); + BeanUtils.copyProperties(so,osmoticQuerySo); + List stRzVos = baseMapper.queryLineRz(osmoticQuerySo,jcskGnssRService.getStcd()); + return bindPressDetail(list,stRzVos); + } + + /** + * 将时间转换为整点时间 + * 例如:2024-10-14 15:30:00 → 2024-10-14 15:00:00 + * 2024-10-14 15:45:25 → 2024-10-14 15:00:00 + */ + private String getHourTime(String timeStr) { + try { + if (timeStr == null || timeStr.length() < 16) { + return timeStr; + } + // 假设时间格式为 "yyyy-MM-dd HH:mm:ss" + // 取到小时部分,分钟和秒设为00 + return timeStr.substring(0, 14) + "00:00"; + } catch (Exception e) { + return timeStr; + } + } + + private List bindPressDetail(List list, List stRzVos) { + HashSet timeSet = new HashSet<>(); + list.forEach(v -> timeSet.add(v.getTm())); + stRzVos.forEach(v -> timeSet.add(v.getTm())); + + List result = new ArrayList<>(); + timeSet.forEach(time -> { + OsmoticPressDetailVo vo = new OsmoticPressDetailVo(); + vo.setTm(time); + result.add(vo); + }); + + List resList = result.stream().map(vo -> { + // 查询库水位数据:如果时间不是整点,使用整点时间查询 + String hourTimeForRz = getHourTime(vo.getTm()); + stRzVos.stream() + .filter(rz -> hourTimeForRz.equals(rz.getTm())) + .findFirst() + .ifPresent(rz -> vo.setRz(rz.getRz())); + + // 匹配压力数据:使用原始时间 + list.stream() + .filter(press -> vo.getTm().equals(press.getTm())) + .findFirst() + .ifPresent(press -> vo.setValue(press.getValue())); + + return vo; + }).collect(Collectors.toList()); + + // 修改为倒序排序 + return resList.stream() + .sorted(Comparator.comparing(OsmoticPressDetailVo::getTm).reversed()) + .collect(Collectors.toList()); + } + public Map stat() { + Map map = new HashMap<>(); + List press = this.listValue(1); + Integer pressSize = press.size(); + Long pressWarn = press.stream().filter(o -> o.getStatus() == 1).collect(Collectors.counting()); + + List flow = this.listValue(2); + Integer flowSize = flow.size(); + Long flowWarn = flow.stream().filter(o -> o.getStatus() == 1).collect(Collectors.counting()); + + List shift = jcskGnssRService.listValue(); + Integer shiftSize = shift.size(); + Long shiftWarn = shift.stream().filter(o -> o.getXStatus() == 1 || o.getYStatus() ==1 || o.getHStatus() == 1).collect(Collectors.counting()); + + Integer size = pressSize + flowSize + shiftSize; + Integer warn = Stream.of(pressWarn, flowWarn, shiftWarn).mapToInt(Long::intValue).sum(); + map.put(warn,size); + return map; + } + + + /** + * 测值查询,管水位和库水位数据固定查询每日早8点 + * @param osmoticQuerySo + * @return + */ + public List queryValue(OsmoticQuerySo osmoticQuerySo, Integer year) { + if(osmoticQuerySo.getType() == null) { + osmoticQuerySo.setType(1); + } + List resList = new ArrayList<>(); + if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(osmoticQuerySo.getStationCodes())){ + return resList; + } + String stcd = jcskGnssRService.getStcd(); + Boolean isDesc = true; + //查询测站降雨量 + Map drpMap = new HashMap<>(); + if(year != null){ + isDesc = false; + List drpList = baseMapper.queryDrp(year,stcd); + drpMap = drpList.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); + } + List dateList = DateUtil.getDatesBetween(osmoticQuerySo.getDateTimeRangeSo().getStart(), osmoticQuerySo.getDateTimeRangeSo().getEnd(),isDesc); + + //查询库水位 + List list = baseMapper.queryRz(osmoticQuerySo,stcd); + Map rzMap = list.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); + //查询测站管水位/渗流量 + List valueList; + if(osmoticQuerySo.getType() == 1){ + //渗压数据 + valueList = baseMapper.query8AmValue(osmoticQuerySo); + }else{ + //渗流数据 + valueList = jcskSlBMapper.query8AmValue(osmoticQuerySo); + } + //数据处理 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + for(String str : dateList){ + OsmoticStationVo2 vo = new OsmoticStationVo2(); + vo.setTm(str); + vo.setRz(rzMap.get(str)); + vo.setDrp(drpMap.get(str)); + List collect = valueList.stream() + .filter(o -> { + if (o.getTm() != null) { + // 将Date格式化为yyyy-MM-dd字符串进行比较 + String dateStr = o.getTm().substring(0,10); + return str.equals(dateStr); + } + return false; + }) + .peek(o->o.setTm(str)) + .collect(Collectors.toList()); + vo.setList(collect); + resList.add(vo); + } + return resList; + } + + public List queryChart(OsmoticQuerySo osmoticQuerySo,Integer year) { + List resList = new ArrayList<>(); + List stationCodes = osmoticQuerySo.getStationCodes(); + if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(stationCodes)){ + return resList; + } + String stcd = jcskGnssRService.getStcd(); + //查询库水位 + List list = baseMapper.queryRz2(osmoticQuerySo,stcd); + Map rzMap = list.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); + //查询测站管水位 + List valueList; + if(osmoticQuerySo.getType() == 1){ + //渗压数据 + valueList = baseMapper.queryValue(osmoticQuerySo); + }else{ + //渗流数据 + valueList = jcskSlBMapper.queryValue(osmoticQuerySo); + } + //按测站分组 + Map> map = valueList.stream().collect(Collectors.groupingBy(OsmoticValueVo2::getStationCode)); + for(String code : stationCodes){ + OsmoticChartVo2 vo = new OsmoticChartVo2(); + vo.setCd(code); + if(map.containsKey(code)){ + List voList = map.get(code); + OsmoticValueVo2 max = voList.stream().max(Comparator.comparing(OsmoticValueVo2::getValue)).get(); + OsmoticValueVo2 min = voList.stream().min(Comparator.comparing(OsmoticValueVo2::getValue)).get(); + vo.setCd(code); + vo.setMaxValue(max.getValue()); + vo.setMaxTm(max.getTm()); + vo.setMinValue(min.getValue()); + vo.setMinTm(min.getTm()); + vo.setDiff(max.getValue().subtract(min.getValue())); + if(year == null){ + vo.setDetailVos(bindData(MyBeanUtil.collectionCopy(list,OsmoticChartDetailVo.class),MyBeanUtil.collectionCopy(voList,OsmoticChartDetailVo.class))); + } + }else { + vo.setDetailVos(new ArrayList<>()); + } + if(vo.getDetailVos() != null){ + for (OsmoticChartDetailVo detailVo : vo.getDetailVos()) { + detailVo.setRz(rzMap.get(detailVo.getTm())); + } + }else{ + vo.setDetailVos(new ArrayList<>()); + } + + resList.add(vo); + } + //查询测站降雨量 + List drpList; + if(year != null){ + drpList = baseMapper.queryDrp(year,stcd); + OsmoticChartVo2 chartVo = new OsmoticChartVo2(); + chartVo.setCd("rz"); + if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(list)){ + StRzVo max = list.stream().max(Comparator.comparing(StRzVo::getRz)).get(); + StRzVo min = list.stream().min(Comparator.comparing(StRzVo::getRz)).get(); + chartVo.setMaxValue(max.getRz()); + chartVo.setMaxTm(max.getTm()); + chartVo.setMinValue(min.getRz()); + chartVo.setMinTm(min.getTm()); + chartVo.setDiff(max.getRz().subtract(min.getRz())); + resList.add(chartVo); + } + + if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(drpList)){ + OsmoticChartVo2 drpVo = new OsmoticChartVo2(); + drpVo.setCd("drp"); + StRzVo maxDrp = drpList.stream().max(Comparator.comparing(StRzVo::getRz)).get(); + StRzVo minDrp = drpList.stream().min(Comparator.comparing(StRzVo::getRz)).get(); + drpVo.setMaxValue(maxDrp.getRz()); + drpVo.setMaxTm(maxDrp.getTm()); + drpVo.setMinValue(minDrp.getRz()); + drpVo.setMinTm(minDrp.getTm()); + drpVo.setDiff(maxDrp.getRz().subtract(minDrp.getRz())); + resList.add(drpVo); + } + } + return resList; + } + + + + //根据监测时间合并管水位和库水位数据 + private List bindData(List tmRzList, List voList) { + HashSet strings = new HashSet<>(); + tmRzList.stream().forEach(v1 -> strings.add(v1.getTm())); + voList.stream().forEach(v1 -> strings.add(v1.getTm())); + + List result = new ArrayList<>(); + strings.stream().forEach(v1 ->{ + OsmoticChartDetailVo v = new OsmoticChartDetailVo(); + v.setTm(v1); + result.add(v); + }); + List list = result.stream().map(v1 -> { + tmRzList.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { + v1.setRz(v2.getRz()); + }); + + voList.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { + v1.setValue(v2.getValue()); + }); + return v1; + }).collect(Collectors.toList()); + return list.stream().sorted(Comparator.comparing(OsmoticChartDetailVo::getTm)).collect(Collectors.toList()); + } + + public List infiltraLine(OsmoticQuerySo osmoticQuerySo) { + List resList = new ArrayList<>(); + String stcd = jcskGnssRService.getStcd(); + //查询库水位 + List list = baseMapper.queryLineRz(osmoticQuerySo,stcd); + Map rzMap = list.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); + //查询测站管水位 + List valueList = baseMapper.queryLineValue(osmoticQuerySo); + //查询测站预警信息 + List warnList = baseMapper.queryWarn(osmoticQuerySo); + + valueList.stream().map(vo->{ + Boolean b = warnList.stream().filter(o->o.getStationCode().equals(vo.getStationCode()) && o.getTm().equals(vo.getTm())).findAny().isPresent(); + if(b){ + vo.setStatus(0); + } + return vo; + }).collect(Collectors.toList()); + + HashSet dateList = new HashSet<>(); + list.stream().forEach(v1 -> dateList.add(v1.getTm())); + valueList.stream().forEach(v1 -> dateList.add(v1.getTm())); + + // 过滤出整点时间数据 + List hourList = dateList.stream() + .filter(tm -> tm.matches(".*:00:00$")) // 匹配以:00:00结尾的时间 + .collect(Collectors.toList()); + + for(String str : hourList){ + OsmoticStationVo2 vo = new OsmoticStationVo2(); + vo.setTm(str); + vo.setRz(rzMap.get(str)); + List newList = valueList.stream().filter(o->str.equals(o.getTm())).collect(Collectors.toList()); + vo.setList(newList); + if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(newList) && newList.stream().filter(o->o.getStatus() == 0).findAny().isPresent()){ + vo.setStatus(0); + } + resList.add(vo); + } + return resList.stream().sorted(Comparator.comparing(OsmoticStationVo2::getTm).reversed()).collect(Collectors.toList()); + } + + public void export(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { + //通过断面查询渗压设备 + List stationCodes = osmoticQuerySo.getStationCodes(); + //表头信息 + List heads = new ArrayList<>(); + heads.add("序号"); + heads.add("时间"); + heads.add("库水位(m)"); + heads.addAll(stationCodes); + heads.add("结果分析"); + + //表格数据 + List resList = infiltraLine(osmoticQuerySo); + List> list = new ArrayList<>(); + for (int j = 0;j < resList.size(); j++) { + OsmoticStationVo2 vo = resList.get(j); + Map test = new LinkedHashMap<>(); + test.put("t0",j+1); + test.put("t1", vo.getTm()); + test.put("t2", vo.getRz()); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + OsmoticValueVo2 valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null); + test.put(code,valueVo != null ? valueVo.getValue() : ""); + } + test.put("t4", vo.getStatus() == 0 ? "异常":"正常"); + list.add(test); + } + List> hs = new ArrayList<>(); + for (String s : heads) { + hs.add(Arrays.asList(s)); + } + ExcelUtil.exportExcel(hs, DataHandleUtil.tableData(list), "浸润线", response, "浸润线"); + } + + private OsmoticQuerySo commonQueryHandle(OsmoticQuerySo osmoticQuerySo){ + String year = osmoticQuerySo.getYear(); + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date start = sdf.parse(year + "-01-01 00:00:00"); + Date end = sdf.parse(year + "-12-31 23:59:59"); // 建议使用 23:59:59 + + DateTimeRangeSo so = new DateTimeRangeSo(); + so.setStart(start); + so.setEnd(end); + osmoticQuerySo.setDateTimeRangeSo(so); + return osmoticQuerySo; + } catch (Exception e) { + throw new IllegalArgumentException("日期格式错误: " + year, e); + } + } + + public List yearStat(OsmoticQuerySo osmoticQuerySo) { + commonQueryHandle(osmoticQuerySo); + return queryValue(osmoticQuerySo,Integer.valueOf(osmoticQuerySo.getYear())); + } + + public List yearStatValue(OsmoticQuerySo osmoticQuerySo) { + commonQueryHandle(osmoticQuerySo); + return queryChart(osmoticQuerySo,Integer.valueOf(osmoticQuerySo.getYear())); + } + + public void yearStatExport(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { + String headName = osmoticQuerySo.getProfileName() + "断面测压管水位(m)"; + String fileName = "断面年度渗压统计"; + String sheetName = "年度渗压统计"; + if(osmoticQuerySo.getType() == 1){ + fileName = osmoticQuerySo.getProfileName() + fileName; + }else { + headName = "渗流量(L/s)"; + fileName = "年度渗流统计"; + sheetName = "年度渗流统计"; + } + + //上方表格数据 + List resList = yearStat(osmoticQuerySo); + //下方特征值数据 + List chartList = queryChart(osmoticQuerySo,Integer.valueOf(osmoticQuerySo.getYear())); + List stationCodes = osmoticQuerySo.getStationCodes(); + //表头信息 + List> headList = new ArrayList<>(); + List heads1 = new ArrayList<>(); + heads1.add("序号"); + heads1.add("序号"); + headList.add(heads1); + + List heads2 = new ArrayList<>(); + heads2.add("监测日期"); + heads2.add("监测日期"); + headList.add(heads2); + + for(String code : stationCodes){ + List heads = new ArrayList<>(); + heads.add(headName); + heads.add(code); + headList.add(heads); + } + + List heads3 = new ArrayList<>(); + heads3.add("库水位(m)"); + heads3.add("库水位(m)"); + headList.add(heads3); + + List heads4 = new ArrayList<>(); + heads4.add("降雨量(mm)"); + heads4.add("降雨量(mm)"); + headList.add(heads4); + + List> list = new ArrayList<>(); + for (int j = 0;j < resList.size(); j++) { + OsmoticStationVo2 vo = resList.get(j); + Map test = new LinkedHashMap<>(); + test.put("t0",j+1); + test.put("t1", vo.getTm()); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + OsmoticValueVo2 valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null); + test.put(code,valueVo != null ? valueVo.getValue() : ""); + } + test.put("t2", vo.getRz()); + test.put("t3", vo.getDrp()); + list.add(test); + } + + Map max = new LinkedHashMap<>(); + max.put("t0","全年度特征值统计"); + max.put("t1", "最大值"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + max.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getMaxValue()); + } + max.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getMaxValue()); + max.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getMaxValue()); + list.add(max); + + Map maxTm = new LinkedHashMap<>(); + maxTm.put("t0","全年度特征值统计"); + maxTm.put("t1", "日期"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + maxTm.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getMaxTm()); + } + maxTm.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getMaxTm()); + maxTm.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getMaxTm()); + list.add(maxTm); + + Map min = new LinkedHashMap<>(); + min.put("t0","全年度特征值统计"); + min.put("t1", "最小值"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + min.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getMinValue()); + } + min.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getMinValue()); + min.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getMinValue()); + list.add(min); + + Map minTm = new LinkedHashMap<>(); + minTm.put("t0","全年度特征值统计"); + minTm.put("t1", "日期"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + minTm.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getMinTm()); + } + minTm.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getMinTm()); + minTm.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getMinTm()); + list.add(minTm); + + Map diff = new LinkedHashMap<>(); + diff.put("t0","全年度特征值统计"); + diff.put("t1", "年变幅"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + diff.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getDiff()); + } + diff.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getDiff()); + diff.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getDiff()); + list.add(diff); + + ExcelUtil.exportExcel(headList, DataHandleUtil.tableData(list),2,new int[]{0},fileName,response,sheetName); + } + + public List listDvcd() { + List dms = this.baseMapper.listDm();//查询断面 + List res = new ArrayList<>(); + for (String dm : dms) { + DmDvcdVo vo = new DmDvcdVo(); + vo.setDm(dm); + vo.setDvcd(this.baseMapper.listDvcdByDm(dm)); + res.add(vo); + } + return res; + } + + public List listStcdMpcd() { + List syBList = this.baseMapper.listStcdMpcd(); + List syStcdMpcdVoList = new ArrayList<>(); + Map> groupMapData = syBList.stream().collect( + Collectors.groupingBy(JcskSyB::getStcd, Collectors.mapping(JcskSyB::getMpcd, Collectors.toList())) + ); + groupMapData.entrySet().stream().forEach(entry -> { + SyStcdMpcdVo entity = new SyStcdMpcdVo(); + entity.setStcd(entry.getKey()); + entity.setMpcdList(entry.getValue()); + syStcdMpcdVoList.add(entity); + }); + return syStcdMpcdVoList; + } + + public Page historyPage(JcskSyRPageSo page) { + return this.baseMapper.historyPage(page.getPageSo().toPage(),page); + } + + public boolean saveData(JcskSyR dto) { + List list = jcskSyBService.lambdaQuery().eq(JcskSyB::getDvcd, dto.getDvcd()).last("limit 1").list(); + JcskSyB jcskSyB = list.get(0); + dto.setStcd(jcskSyB.getStcd()); + dto.setMpcd(jcskSyB.getMpcd()); + dto.setIsArtificial(1); + dto.setUpdateTm(LocalDateTime.now()); + int insert = this.baseMapper.insert(dto); + return insert > 0; + } + + public boolean updateData(JcskSyR dto) { + List list = jcskSyBService.lambdaQuery().eq(JcskSyB::getDvcd, dto.getDvcd()).last("limit 1").list(); + JcskSyB jcskSyB = list.get(0); + String stcd = jcskSyB.getStcd(); + String mpcd = jcskSyB.getMpcd(); + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(JcskSyR::getMstm, dto.getMstm()) + .eq(JcskSyR::getMpcd, dto.getMpcd()) + .eq(JcskSyR::getStcd,dto.getStcd()) + .set(JcskSyR::getHycncd, dto.getHycncd()) + .set(JcskSyR::getRscd, dto.getRscd()) + .set(JcskSyR::getSpprwl, dto.getSpprwl()) + .set(JcskSyR::getTm, dto.getTm()) + .set(JcskSyR::getUpdateTm, new Date()) + .set(JcskSyR::getMpcd, mpcd) + .set(JcskSyR::getStcd, stcd) + .set(JcskSyR::getMstm,dto.getUpdateMstm()); + int update = this.baseMapper.update(wrapper); + return update > 0; + } + + public Page artificialPage(JcskSyRPageSo page) { + Page res = this.baseMapper.artificialPage(page.getPageSo().toPage(),page); + return res; + + } + public String transforDateToString(Date date) { + // 将Date转换为LocalDateTime + if(date == null){ + return null; + } + LocalDateTime localDateTime = date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String formattedDate = localDateTime.format(formatter); + return formattedDate; + } + + public void artificialExport(JcskSyRPageSo page, HttpServletResponse response) { + + Page res = this.baseMapper.artificialPage(page.getPageSo().toPage(), page); + List records = res.getRecords(); + + // 创建导出数据列表 + List> exportData = new ArrayList<>(); + for (JcskSyR record : records) { + Map row = new HashMap<>(); + row.put("mstm", transforDateToString(record.getMstm())); + row.put("tm", record.getTm()); + row.put("spprwl", record.getSpprwl()); + row.put("isArtificial", record.getIsArtificial() != null && record.getIsArtificial() == 1 ? "人工录入" : "自动采集"); + row.put("updateTm", DateTransforUtil.transforLocalDateTimeToString(record.getUpdateTm(),"yyyy-MM-dd HH:mm:ss")); + row.put("dm", record.getDm()); + row.put("dmName", record.getDmName()); + row.put("dvcd", record.getDvcd()); // 改为测点编号 + exportData.add(row); + } + + // 通过工具类创建writer + ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(); + + // 自定义标题(去掉水库代码、水工建筑物编号、stcd、mpcd) + writer.addHeaderAlias("dvcd", "测点编号"); + writer.addHeaderAlias("mstm", "测量时间"); + writer.addHeaderAlias("tm", "温度(℃)"); + writer.addHeaderAlias("spprwl", "渗流压力水位(m)"); + writer.addHeaderAlias("isArtificial", "录入方式"); + writer.addHeaderAlias("updateTm", "更新时间"); + writer.addHeaderAlias("dm", "断面编码"); + writer.addHeaderAlias("dmName", "断面名称"); + + // 只写出设置了别名的字段 + writer.setOnlyAlias(true); + + // 一次性写出内容 + writer.write(exportData, true); + + // 设置响应内容类型 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); + + try { + // 设置响应头信息 + String fileName = URLEncoder.encode("渗流压力人工录入数据", "UTF-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); + + // 将writer对象刷新到响应输出流中 + writer.flush(response.getOutputStream(), true); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("导出Excel失败", e); + } finally { + // 关闭writer,释放内存 + writer.close(); + } + } + + + public boolean deleteData(ArtificialJcskSyDeleteDto dto) { + if(StringUtils.isBlank(dto.getStcd())) { + throw new IllegalArgumentException("stcd不能为空"); + } + if(StringUtils.isBlank(dto.getMpcd())){ + throw new IllegalArgumentException("mpcd不能为空"); + } + if(dto.getMstm() == null){ + throw new IllegalArgumentException("时间不能为空"); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(JcskSyR::getStcd, dto.getStcd()); + queryWrapper.eq(JcskSyR::getMstm, dto.getMstm()); + queryWrapper.eq(JcskSyR::getMpcd,dto.getMpcd()); + queryWrapper.eq(JcskSyR::getIsArtificial,1); + int delete = this.baseMapper.delete(queryWrapper); + return delete > 0; + } +} diff --git a/src/main/java/com/gunshi/project/hsz/service/MentenceFarmerRecordService.java b/src/main/java/com/gunshi/project/hsz/service/MentenceFarmerRecordService.java index 2f134ea..67cb39d 100644 --- a/src/main/java/com/gunshi/project/hsz/service/MentenceFarmerRecordService.java +++ b/src/main/java/com/gunshi/project/hsz/service/MentenceFarmerRecordService.java @@ -30,10 +30,7 @@ import java.io.IOException; import java.io.Serializable; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collector; import java.util.stream.Collectors; @@ -105,16 +102,21 @@ public class MentenceFarmerRecordService extends ServiceImpl delete(Serializable id) { + List childrenIds = new ArrayList<>(); LambdaQueryWrapper queryHiddenWrapper = new LambdaQueryWrapper<>(); queryHiddenWrapper.eq(HiddenInfo::getMentenceFarmerRecordId,id); + List hiddenInfos = hiddenInfoMapper.selectList(queryHiddenWrapper); + hiddenInfos.forEach(hiddenInfo -> { + childrenIds.add(hiddenInfo.getId()); + }); int delete = hiddenInfoMapper.delete(queryHiddenWrapper); if(delete > 0){ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(MentenceFarmerRecord::getId, id); boolean result = remove(queryWrapper); } - return true; + return childrenIds; } public Page pageQuery(MentenceFarmerRecordPageSo pageSo) { @@ -238,7 +240,7 @@ public class MentenceFarmerRecordService extends ServiceImpl 0) { fillHiddenInfo(row, record.getDetails().get(0), styles); // 创建额外的行用于其他隐患信息 for (int i = 1; i < hiddenInfoCount; i++) { Row detailRow = sheet.createRow(currentRow + i); - // 为前7列创建空单元格并设置样式 - for (int col = 0; col <= 6; col++) { + // 为前8列创建空单元格并设置样式(因为现在有8列基础数据) + for (int col = 0; col <= 7; col++) { Cell emptyCell = detailRow.createCell(col); emptyCell.setCellValue(""); emptyCell.setCellStyle(styles.dataStyle); @@ -301,8 +306,8 @@ public class MentenceFarmerRecordService extends ServiceImpl -{ - @Autowired - private OsmoticShiftRService shiftRService; - - public Page queryPage(OsmoticQueryPageSo osmoticQueryPageSo) { - return baseMapper.queryPage(osmoticQueryPageSo.getPageSo().toPage(),osmoticQueryPageSo); - } - - /** - * 测值查询,管水位和库水位数据固定查询每日早8点 - * @param osmoticQuerySo - * @return - */ - public List queryValue(OsmoticQuerySo osmoticQuerySo,Integer year) { - if(osmoticQuerySo.getType() == null) { - osmoticQuerySo.setType(1); - } - List resList = new ArrayList<>(); - if(CollectionUtils.isEmpty(osmoticQuerySo.getStationCodes())){ - return resList; - } - String stcd = shiftRService.getStcd(); - Boolean isDesc = true; - //查询测站降雨量 - Map drpMap = new HashMap<>(); - if(year != null){ - isDesc = false; - List drpList = baseMapper.queryDrp(year,stcd); - drpMap = drpList.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); - } - List dateList = DateUtil.getDatesBetween(osmoticQuerySo.getDateTimeRangeSo().getStart(), osmoticQuerySo.getDateTimeRangeSo().getEnd(),isDesc); - - //查询库水位 - List list = baseMapper.queryRz(osmoticQuerySo,stcd); - Map rzMap = list.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); - //查询测站管水位/渗流量 - List valueList = baseMapper.queryValue(osmoticQuerySo); - //数据处理 - for(String str : dateList){ - OsmoticStationVo vo = new OsmoticStationVo(); - vo.setTm(str); - vo.setRz(rzMap.get(str)); - vo.setDrp(drpMap.get(str)); - vo.setList(valueList.stream().filter(o->str.equals(o.getTm())).map(t->{ - t.setRz(vo.getRz()); - return t; - }).collect(Collectors.toList())); - resList.add(vo); - } - return resList; - } - - public List queryChart(OsmoticQuerySo osmoticQuerySo,Integer year) { - List resList = new ArrayList<>(); - List stationCodes = osmoticQuerySo.getStationCodes(); - if(CollectionUtils.isEmpty(stationCodes)){ - return resList; - } - String stcd = shiftRService.getStcd(); - //查询库水位 - List list = baseMapper.queryRz(osmoticQuerySo,stcd); - //查询测站管水位 - List valueList = baseMapper.queryValue(osmoticQuerySo); - //按测站分组 - Map> map = valueList.stream().collect(Collectors.groupingBy(OsmoticValueVo::getStationCode)); - for(String code : stationCodes){ - OsmoticChartVo vo = new OsmoticChartVo(); - vo.setStationCode(code); - if(map.containsKey(code)){ - List voList = map.get(code); - OsmoticValueVo max = voList.stream().max(Comparator.comparing(OsmoticValueVo::getValue)).get(); - OsmoticValueVo min = voList.stream().min(Comparator.comparing(OsmoticValueVo::getValue)).get(); - vo.setStationCode(code); - vo.setMaxValue(max.getValue()); - vo.setMaxTm(max.getTm()); - vo.setMinValue(min.getValue()); - vo.setMinTm(min.getTm()); - vo.setDiff(max.getValue().subtract(min.getValue())); - if(year == null){ - vo.setDetailVos(bindData(MyBeanUtil.collectionCopy(list,OsmoticChartDetailVo.class),MyBeanUtil.collectionCopy(voList,OsmoticChartDetailVo.class))); - } - }else { - vo.setDetailVos(new ArrayList<>()); - } - resList.add(vo); - } - //查询测站降雨量 - List drpList; - if(year != null){ - drpList = baseMapper.queryDrp(year,stcd); - OsmoticChartVo chartVo = new OsmoticChartVo(); - chartVo.setStationCode("rz"); - if(CollectionUtils.isNotEmpty(list)){ - StRzVo max = list.stream().max(Comparator.comparing(StRzVo::getRz)).get(); - StRzVo min = list.stream().min(Comparator.comparing(StRzVo::getRz)).get(); - chartVo.setMaxValue(max.getRz()); - chartVo.setMaxTm(max.getTm()); - chartVo.setMinValue(min.getRz()); - chartVo.setMinTm(min.getTm()); - chartVo.setDiff(max.getRz().subtract(min.getRz())); - resList.add(chartVo); - } - - if(CollectionUtils.isNotEmpty(drpList)){ - OsmoticChartVo drpVo = new OsmoticChartVo(); - drpVo.setStationCode("drp"); - StRzVo maxDrp = drpList.stream().max(Comparator.comparing(StRzVo::getRz)).get(); - StRzVo minDrp = drpList.stream().min(Comparator.comparing(StRzVo::getRz)).get(); - drpVo.setMaxValue(maxDrp.getRz()); - drpVo.setMaxTm(maxDrp.getTm()); - drpVo.setMinValue(minDrp.getRz()); - drpVo.setMinTm(minDrp.getTm()); - drpVo.setDiff(maxDrp.getRz().subtract(minDrp.getRz())); - resList.add(drpVo); - } - } - return resList; - } - - - - //根据监测时间合并管水位和库水位数据 - private List bindData(List tmRzList, List voList) { - HashSet strings = new HashSet<>(); - tmRzList.stream().forEach(v1 -> strings.add(v1.getTm())); - voList.stream().forEach(v1 -> strings.add(v1.getTm())); - - List result = new ArrayList<>(); - strings.stream().forEach(v1 ->{ - OsmoticChartDetailVo v = new OsmoticChartDetailVo(); - v.setTm(v1); - result.add(v); - }); - - List list = result.stream().map(v1 -> { - tmRzList.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { - v1.setRz(v2.getRz()); - }); - - voList.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { - v1.setValue(v2.getValue()); - }); - return v1; - }).collect(Collectors.toList()); - return list.stream().sorted(Comparator.comparing(OsmoticChartDetailVo::getTm)).collect(Collectors.toList()); - } - - public List infiltraLine(OsmoticQuerySo osmoticQuerySo) { - List resList = new ArrayList<>(); - String stcd = shiftRService.getStcd(); - //查询库水位 - List list = baseMapper.queryLineRz(osmoticQuerySo,stcd); - Map rzMap = list.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); - //查询测站管水位 - List valueList = baseMapper.queryLineValue(osmoticQuerySo); - //查询测站预警信息 - List warnList = baseMapper.queryWarn(osmoticQuerySo); - valueList.stream().map(vo->{ - Boolean b = warnList.stream().filter(o->o.getStationCode().equals(vo.getStationCode()) && o.getTm().equals(vo.getTm())).findAny().isPresent(); - if(b){ - vo.setStatus(0); - } - return vo; - }).collect(Collectors.toList()); - HashSet dateList = new HashSet<>(); - list.stream().forEach(v1 -> dateList.add(v1.getTm())); - valueList.stream().forEach(v1 -> dateList.add(v1.getTm())); - for(String str : dateList){ - OsmoticStationVo vo = new OsmoticStationVo(); - vo.setTm(str); - vo.setRz(rzMap.get(str)); - List newList = valueList.stream().filter(o->str.equals(o.getTm())).collect(Collectors.toList()); - vo.setList(newList); - if(CollectionUtils.isNotEmpty(newList) && newList.stream().filter(o->o.getStatus() == 0).findAny().isPresent()){ - vo.setStatus(0); - } - resList.add(vo); - } - return resList.stream().sorted(Comparator.comparing(OsmoticStationVo::getTm)).collect(Collectors.toList()); - } - - - public void export(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { - //通过断面查询渗压设备 - List stationCodes = osmoticQuerySo.getStationCodes(); - //表头信息 - List heads = new ArrayList<>(); - heads.add("序号"); - heads.add("时间"); - heads.add("库水位(m)"); - heads.addAll(stationCodes); - heads.add("结果分析"); - - //表格数据 - List resList = infiltraLine(osmoticQuerySo); - List> list = new ArrayList<>(); - for (int j = 0;j < resList.size(); j++) { - OsmoticStationVo vo = resList.get(j); - Map test = new LinkedHashMap<>(); - test.put("t0",j+1); - test.put("t1", vo.getTm()); - test.put("t2", vo.getRz()); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - OsmoticValueVo valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null); - test.put(code,valueVo != null ? valueVo.getValue() : ""); - } - test.put("t4", vo.getStatus() == 0 ? "异常":"正常"); - list.add(test); - } - List> hs = new ArrayList<>(); - for (String s : heads) { - hs.add(Arrays.asList(s)); - } - ExcelUtil.exportExcel(hs, DataHandleUtil.tableData(list), "浸润线", response, "浸润线"); - } - - private OsmoticQuerySo commonQueryHandle(OsmoticQuerySo osmoticQuerySo){ - Integer year = osmoticQuerySo.getYear(); - Date start = DateUtil.convertStringToDate(year + "-01-01 00:00:00"); - Date end = DateUtil.convertStringToDate(year + "-12-31 00:00:00"); - DateTimeRangeSo so = new DateTimeRangeSo(); - so.setStart(start); - so.setEnd(end); - osmoticQuerySo.setDateTimeRangeSo(so); - return osmoticQuerySo; - } - - public List yearStat(OsmoticQuerySo osmoticQuerySo) { - commonQueryHandle(osmoticQuerySo); - return queryValue(osmoticQuerySo,osmoticQuerySo.getYear()); - } - - public List yearStatValue(OsmoticQuerySo osmoticQuerySo) { - commonQueryHandle(osmoticQuerySo); - return queryChart(osmoticQuerySo,osmoticQuerySo.getYear()); - } - - public void yearStatExport(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { - String headName = osmoticQuerySo.getProfileName() + "断面测压管水位(m)"; - String fileName = "断面年度渗压统计"; - String sheetName = "年度渗压统计"; - if(osmoticQuerySo.getType() == 1){ - fileName = osmoticQuerySo.getProfileName() + fileName; - }else { - headName = "渗流量(L/s)"; - fileName = "年度渗流统计"; - sheetName = "年度渗流统计"; - } - - //上方表格数据 - List resList = yearStat(osmoticQuerySo); - //下方特征值数据 - List chartList = queryChart(osmoticQuerySo,osmoticQuerySo.getYear()); - List stationCodes = osmoticQuerySo.getStationCodes(); - //表头信息 - List> headList = new ArrayList<>(); - List heads1 = new ArrayList<>(); - heads1.add("序号"); - heads1.add("序号"); - headList.add(heads1); - - List heads2 = new ArrayList<>(); - heads2.add("监测日期"); - heads2.add("监测日期"); - headList.add(heads2); - - for(String code : stationCodes){ - List heads = new ArrayList<>(); - heads.add(headName); - heads.add(code); - headList.add(heads); - } - - List heads3 = new ArrayList<>(); - heads3.add("库水位(m)"); - heads3.add("库水位(m)"); - headList.add(heads3); - - List heads4 = new ArrayList<>(); - heads4.add("降雨量(mm)"); - heads4.add("降雨量(mm)"); - headList.add(heads4); - - List> list = new ArrayList<>(); - for (int j = 0;j < resList.size(); j++) { - OsmoticStationVo vo = resList.get(j); - Map test = new LinkedHashMap<>(); - test.put("t0",j+1); - test.put("t1", vo.getTm()); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - OsmoticValueVo valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null); - test.put(code,valueVo != null ? valueVo.getValue() : ""); - } - test.put("t2", vo.getRz()); - test.put("t3", vo.getDrp()); - list.add(test); - } - - Map max = new LinkedHashMap<>(); - max.put("t0","全年度特征值统计"); - max.put("t1", "最大值"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - max.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getMaxValue()); - } - max.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getMaxValue()); - max.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getMaxValue()); - list.add(max); - - Map maxTm = new LinkedHashMap<>(); - maxTm.put("t0","全年度特征值统计"); - maxTm.put("t1", "日期"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - maxTm.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getMaxTm()); - } - maxTm.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getMaxTm()); - maxTm.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getMaxTm()); - list.add(maxTm); - - Map min = new LinkedHashMap<>(); - min.put("t0","全年度特征值统计"); - min.put("t1", "最小值"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - min.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getMinValue()); - } - min.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getMinValue()); - min.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getMinValue()); - list.add(min); - - Map minTm = new LinkedHashMap<>(); - minTm.put("t0","全年度特征值统计"); - minTm.put("t1", "日期"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - minTm.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getMinTm()); - } - minTm.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getMinTm()); - minTm.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getMinTm()); - list.add(minTm); - - Map diff = new LinkedHashMap<>(); - diff.put("t0","全年度特征值统计"); - diff.put("t1", "年变幅"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - diff.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getDiff()); - } - diff.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getDiff()); - diff.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getDiff()); - list.add(diff); - - ExcelUtil.exportExcel(headList, DataHandleUtil.tableData(list),2,new int[]{0},fileName,response,sheetName); - } - - public List listValue(Integer type) { - List list; - if(type == 1){ - list = baseMapper.listValue(); - }else { - list = baseMapper.flowListValue(); - } - OsmoticQuerySo so = new OsmoticQuerySo(); - List stationCodes = list.stream().map(OsmoticPressVo::getStationCode).collect(Collectors.toList()); - if(list.stream().filter(o->o.getTm() != null).collect(Collectors.toList()).size() > 0 ){ - String maxTm = list.stream().filter(o->o.getTm() != null).max(Comparator.comparing(OsmoticPressVo::getTm)).get().getTm(); - String minTm = list.stream().filter(o->o.getTm() != null).min(Comparator.comparing(OsmoticPressVo::getTm)).get().getTm(); - so.setStationCodes(stationCodes); - DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); - dateTimeRangeSo.setStart(DateUtil.convertStringToDate(minTm)); - dateTimeRangeSo.setEnd(DateUtil.convertStringToDate(maxTm)); - so.setDateTimeRangeSo(dateTimeRangeSo); - List warnList = baseMapper.queryWarn(so); - list.stream().map(o->{ - if(o.getTm() != null && DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(o.getTm()), new Date()) > 48){ - o.setFlag(1); - } - Boolean b = warnList.stream().filter(t->t.getStationCode().equals(o.getStationCode()) && t.getTm().equals(o.getTm())).findAny().isPresent(); - if(b){ - o.setStatus(1); - } - return o; - }).collect(Collectors.toList()); - } - return list; - } - - public List detailValue(OsmoticDetailQuerySo so) { - List list = baseMapper.detailValue(so); - if(so.getType() == 2){ - return list; - } - OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); - BeanUtils.copyProperties(so,osmoticQuerySo); - List stRzVos = baseMapper.queryLineRz(osmoticQuerySo,shiftRService.getStcd()); - return bindPressDetail(list,stRzVos); - } - - private List bindPressDetail(List list, List stRzVos) { - HashSet strings = new HashSet<>(); - list.stream().forEach(v1 -> strings.add(v1.getTm())); - stRzVos.stream().forEach(v1 -> strings.add(v1.getTm())); - - List result = new ArrayList<>(); - strings.stream().forEach(v1 ->{ - OsmoticPressDetailVo v = new OsmoticPressDetailVo(); - v.setTm(v1); - result.add(v); - }); - - List resList = result.stream().map(v1 -> { - stRzVos.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { - v1.setRz(v2.getRz()); - }); - - list.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { - v1.setValue(v2.getValue()); - }); - return v1; - }).collect(Collectors.toList()); - return resList.stream().sorted(Comparator.comparing(OsmoticPressDetailVo::getTm)).collect(Collectors.toList()); - } - - public Map stat() { - Map map = new HashMap<>(); - List press = this.listValue(1); - Integer pressSize = press.size(); - Long pressWarn = press.stream().filter(o -> o.getStatus() == 1).collect(Collectors.counting()); - - List flow = this.listValue(2); - Integer flowSize = flow.size(); - Long flowWarn = flow.stream().filter(o -> o.getStatus() == 1).collect(Collectors.counting()); - - List shift = shiftRService.listValue(); - Integer shiftSize = shift.size(); - Long shiftWarn = shift.stream().filter(o -> o.getXStatus() == 1 || o.getYStatus() ==1 || o.getHStatus() == 1).collect(Collectors.counting()); - - Integer size = pressSize + flowSize + shiftSize; - Integer warn = Stream.of(pressWarn, flowWarn, shiftWarn).mapToInt(Long::intValue).sum(); - map.put(warn,size); - return map; - } -} - - +//package com.gunshi.project.hsz.service; +// +//import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +//import com.gunshi.db.dto.DateTimeRangeSo; +//import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; +//import com.gunshi.project.hsz.entity.so.OsmoticQueryPageSo; +//import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; +//import com.gunshi.project.hsz.entity.vo.*; +//import com.gunshi.project.hsz.mapper.OsmoticPressRMapper; +//import com.gunshi.project.hsz.model.OsmoticPressR; +//import com.gunshi.project.hsz.util.DataHandleUtil; +//import com.gunshi.project.hsz.util.DateUtil; +//import com.gunshi.project.hsz.util.ExcelUtil; +//import com.gunshi.project.hsz.util.MyBeanUtil; +//import jakarta.servlet.http.HttpServletResponse; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.beans.BeanUtils; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Service; +//import org.springframework.transaction.annotation.Transactional; +// +//import java.math.BigDecimal; +//import java.util.*; +//import java.util.stream.Collectors; +//import java.util.stream.Stream; +// +///** +// * 描述: 渗压监测记录表 +// * author: xusan +// * date: 2024-07-08 17:30:37 +// */ +//@Service +//@Slf4j +//@Transactional(rollbackFor = Exception.class) +//public class OsmoticPressRService extends ServiceImpl +//{ +// @Autowired +// private OsmoticShiftRService shiftRService; +// +// public Page queryPage(OsmoticQueryPageSo osmoticQueryPageSo) { +// return baseMapper.queryPage(osmoticQueryPageSo.getPageSo().toPage(),osmoticQueryPageSo); +// } +// +// /** +// * 测值查询,管水位和库水位数据固定查询每日早8点 +// * @param osmoticQuerySo +// * @return +// */ +// public List queryValue(OsmoticQuerySo osmoticQuerySo,Integer year) { +// if(osmoticQuerySo.getType() == null) { +// osmoticQuerySo.setType(1); +// } +// List resList = new ArrayList<>(); +// if(CollectionUtils.isEmpty(osmoticQuerySo.getStationCodes())){ +// return resList; +// } +// String stcd = shiftRService.getStcd(); +// Boolean isDesc = true; +// //查询测站降雨量 +// Map drpMap = new HashMap<>(); +// if(year != null){ +// isDesc = false; +// List drpList = baseMapper.queryDrp(year,stcd); +// drpMap = drpList.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); +// } +// List dateList = DateUtil.getDatesBetween(osmoticQuerySo.getDateTimeRangeSo().getStart(), osmoticQuerySo.getDateTimeRangeSo().getEnd(),isDesc); +// +// //查询库水位 +// List list = baseMapper.queryRz(osmoticQuerySo,stcd); +// Map rzMap = list.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); +// //查询测站管水位/渗流量 +// List valueList = baseMapper.queryValue(osmoticQuerySo); +// //数据处理 +// for(String str : dateList){ +// OsmoticStationVo vo = new OsmoticStationVo(); +// vo.setTm(str); +// vo.setRz(rzMap.get(str)); +// vo.setDrp(drpMap.get(str)); +// vo.setList(valueList.stream().filter(o->str.equals(o.getTm())).map(t->{ +// t.setRz(vo.getRz()); +// return t; +// }).collect(Collectors.toList())); +// resList.add(vo); +// } +// return resList; +// } +// +// public List queryChart(OsmoticQuerySo osmoticQuerySo,Integer year) { +// List resList = new ArrayList<>(); +// List stationCodes = osmoticQuerySo.getStationCodes(); +// if(CollectionUtils.isEmpty(stationCodes)){ +// return resList; +// } +// String stcd = shiftRService.getStcd(); +// //查询库水位 +// List list = baseMapper.queryRz(osmoticQuerySo,stcd); +// //查询测站管水位 +// List valueList = baseMapper.queryValue(osmoticQuerySo); +// //按测站分组 +// Map> map = valueList.stream().collect(Collectors.groupingBy(OsmoticValueVo::getStationCode)); +// for(String code : stationCodes){ +// OsmoticChartVo vo = new OsmoticChartVo(); +// vo.setStationCode(code); +// if(map.containsKey(code)){ +// List voList = map.get(code); +// OsmoticValueVo max = voList.stream().max(Comparator.comparing(OsmoticValueVo::getValue)).get(); +// OsmoticValueVo min = voList.stream().min(Comparator.comparing(OsmoticValueVo::getValue)).get(); +// vo.setStationCode(code); +// vo.setMaxValue(max.getValue()); +// vo.setMaxTm(max.getTm()); +// vo.setMinValue(min.getValue()); +// vo.setMinTm(min.getTm()); +// vo.setDiff(max.getValue().subtract(min.getValue())); +// if(year == null){ +// vo.setDetailVos(bindData(MyBeanUtil.collectionCopy(list,OsmoticChartDetailVo.class),MyBeanUtil.collectionCopy(voList,OsmoticChartDetailVo.class))); +// } +// }else { +// vo.setDetailVos(new ArrayList<>()); +// } +// resList.add(vo); +// } +// //查询测站降雨量 +// List drpList; +// if(year != null){ +// drpList = baseMapper.queryDrp(year,stcd); +// OsmoticChartVo chartVo = new OsmoticChartVo(); +// chartVo.setStationCode("rz"); +// if(CollectionUtils.isNotEmpty(list)){ +// StRzVo max = list.stream().max(Comparator.comparing(StRzVo::getRz)).get(); +// StRzVo min = list.stream().min(Comparator.comparing(StRzVo::getRz)).get(); +// chartVo.setMaxValue(max.getRz()); +// chartVo.setMaxTm(max.getTm()); +// chartVo.setMinValue(min.getRz()); +// chartVo.setMinTm(min.getTm()); +// chartVo.setDiff(max.getRz().subtract(min.getRz())); +// resList.add(chartVo); +// } +// +// if(CollectionUtils.isNotEmpty(drpList)){ +// OsmoticChartVo drpVo = new OsmoticChartVo(); +// drpVo.setStationCode("drp"); +// StRzVo maxDrp = drpList.stream().max(Comparator.comparing(StRzVo::getRz)).get(); +// StRzVo minDrp = drpList.stream().min(Comparator.comparing(StRzVo::getRz)).get(); +// drpVo.setMaxValue(maxDrp.getRz()); +// drpVo.setMaxTm(maxDrp.getTm()); +// drpVo.setMinValue(minDrp.getRz()); +// drpVo.setMinTm(minDrp.getTm()); +// drpVo.setDiff(maxDrp.getRz().subtract(minDrp.getRz())); +// resList.add(drpVo); +// } +// } +// return resList; +// } +// +// +// +// //根据监测时间合并管水位和库水位数据 +// private List bindData(List tmRzList, List voList) { +// HashSet strings = new HashSet<>(); +// tmRzList.stream().forEach(v1 -> strings.add(v1.getTm())); +// voList.stream().forEach(v1 -> strings.add(v1.getTm())); +// +// List result = new ArrayList<>(); +// strings.stream().forEach(v1 ->{ +// OsmoticChartDetailVo v = new OsmoticChartDetailVo(); +// v.setTm(v1); +// result.add(v); +// }); +// +// List list = result.stream().map(v1 -> { +// tmRzList.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { +// v1.setRz(v2.getRz()); +// }); +// +// voList.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { +// v1.setValue(v2.getValue()); +// }); +// return v1; +// }).collect(Collectors.toList()); +// return list.stream().sorted(Comparator.comparing(OsmoticChartDetailVo::getTm)).collect(Collectors.toList()); +// } +// +// public List infiltraLine(OsmoticQuerySo osmoticQuerySo) { +// List resList = new ArrayList<>(); +// String stcd = shiftRService.getStcd(); +// //查询库水位 +// List list = baseMapper.queryLineRz(osmoticQuerySo,stcd); +// Map rzMap = list.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); +// //查询测站管水位 +// List valueList = baseMapper.queryLineValue(osmoticQuerySo); +// //查询测站预警信息 +// List warnList = baseMapper.queryWarn(osmoticQuerySo); +// valueList.stream().map(vo->{ +// Boolean b = warnList.stream().filter(o->o.getStationCode().equals(vo.getStationCode()) && o.getTm().equals(vo.getTm())).findAny().isPresent(); +// if(b){ +// vo.setStatus(0); +// } +// return vo; +// }).collect(Collectors.toList()); +// HashSet dateList = new HashSet<>(); +// list.stream().forEach(v1 -> dateList.add(v1.getTm())); +// valueList.stream().forEach(v1 -> dateList.add(v1.getTm())); +// for(String str : dateList){ +// OsmoticStationVo vo = new OsmoticStationVo(); +// vo.setTm(str); +// vo.setRz(rzMap.get(str)); +// List newList = valueList.stream().filter(o->str.equals(o.getTm())).collect(Collectors.toList()); +// vo.setList(newList); +// if(CollectionUtils.isNotEmpty(newList) && newList.stream().filter(o->o.getStatus() == 0).findAny().isPresent()){ +// vo.setStatus(0); +// } +// resList.add(vo); +// } +// return resList.stream().sorted(Comparator.comparing(OsmoticStationVo::getTm)).collect(Collectors.toList()); +// } +// +// +// public void export(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { +// //通过断面查询渗压设备 +// List stationCodes = osmoticQuerySo.getStationCodes(); +// //表头信息 +// List heads = new ArrayList<>(); +// heads.add("序号"); +// heads.add("时间"); +// heads.add("库水位(m)"); +// heads.addAll(stationCodes); +// heads.add("结果分析"); +// +// //表格数据 +// List resList = infiltraLine(osmoticQuerySo); +// List> list = new ArrayList<>(); +// for (int j = 0;j < resList.size(); j++) { +// OsmoticStationVo vo = resList.get(j); +// Map test = new LinkedHashMap<>(); +// test.put("t0",j+1); +// test.put("t1", vo.getTm()); +// test.put("t2", vo.getRz()); +// for(int i = 0;i < stationCodes.size();i++){ +// String code = stationCodes.get(i); +// OsmoticValueVo valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null); +// test.put(code,valueVo != null ? valueVo.getValue() : ""); +// } +// test.put("t4", vo.getStatus() == 0 ? "异常":"正常"); +// list.add(test); +// } +// List> hs = new ArrayList<>(); +// for (String s : heads) { +// hs.add(Arrays.asList(s)); +// } +// ExcelUtil.exportExcel(hs, DataHandleUtil.tableData(list), "浸润线", response, "浸润线"); +// } +// +// private OsmoticQuerySo commonQueryHandle(OsmoticQuerySo osmoticQuerySo){ +// Integer year = osmoticQuerySo.getYear(); +// Date start = DateUtil.convertStringToDate(year + "-01-01 00:00:00"); +// Date end = DateUtil.convertStringToDate(year + "-12-31 00:00:00"); +// DateTimeRangeSo so = new DateTimeRangeSo(); +// so.setStart(start); +// so.setEnd(end); +// osmoticQuerySo.setDateTimeRangeSo(so); +// return osmoticQuerySo; +// } +// +// public List yearStat(OsmoticQuerySo osmoticQuerySo) { +// commonQueryHandle(osmoticQuerySo); +// return queryValue(osmoticQuerySo,osmoticQuerySo.getYear()); +// } +// +// public List yearStatValue(OsmoticQuerySo osmoticQuerySo) { +// commonQueryHandle(osmoticQuerySo); +// return queryChart(osmoticQuerySo,osmoticQuerySo.getYear()); +// } +// +// public void yearStatExport(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { +// String headName = osmoticQuerySo.getProfileName() + "断面测压管水位(m)"; +// String fileName = "断面年度渗压统计"; +// String sheetName = "年度渗压统计"; +// if(osmoticQuerySo.getType() == 1){ +// fileName = osmoticQuerySo.getProfileName() + fileName; +// }else { +// headName = "渗流量(L/s)"; +// fileName = "年度渗流统计"; +// sheetName = "年度渗流统计"; +// } +// +// //上方表格数据 +// List resList = yearStat(osmoticQuerySo); +// //下方特征值数据 +// List chartList = queryChart(osmoticQuerySo,osmoticQuerySo.getYear()); +// List stationCodes = osmoticQuerySo.getStationCodes(); +// //表头信息 +// List> headList = new ArrayList<>(); +// List heads1 = new ArrayList<>(); +// heads1.add("序号"); +// heads1.add("序号"); +// headList.add(heads1); +// +// List heads2 = new ArrayList<>(); +// heads2.add("监测日期"); +// heads2.add("监测日期"); +// headList.add(heads2); +// +// for(String code : stationCodes){ +// List heads = new ArrayList<>(); +// heads.add(headName); +// heads.add(code); +// headList.add(heads); +// } +// +// List heads3 = new ArrayList<>(); +// heads3.add("库水位(m)"); +// heads3.add("库水位(m)"); +// headList.add(heads3); +// +// List heads4 = new ArrayList<>(); +// heads4.add("降雨量(mm)"); +// heads4.add("降雨量(mm)"); +// headList.add(heads4); +// +// List> list = new ArrayList<>(); +// for (int j = 0;j < resList.size(); j++) { +// OsmoticStationVo vo = resList.get(j); +// Map test = new LinkedHashMap<>(); +// test.put("t0",j+1); +// test.put("t1", vo.getTm()); +// for(int i = 0;i < stationCodes.size();i++){ +// String code = stationCodes.get(i); +// OsmoticValueVo valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null); +// test.put(code,valueVo != null ? valueVo.getValue() : ""); +// } +// test.put("t2", vo.getRz()); +// test.put("t3", vo.getDrp()); +// list.add(test); +// } +// +// Map max = new LinkedHashMap<>(); +// max.put("t0","全年度特征值统计"); +// max.put("t1", "最大值"); +// for(int i = 0;i < stationCodes.size();i++){ +// String code = stationCodes.get(i); +// max.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getMaxValue()); +// } +// max.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getMaxValue()); +// max.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getMaxValue()); +// list.add(max); +// +// Map maxTm = new LinkedHashMap<>(); +// maxTm.put("t0","全年度特征值统计"); +// maxTm.put("t1", "日期"); +// for(int i = 0;i < stationCodes.size();i++){ +// String code = stationCodes.get(i); +// maxTm.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getMaxTm()); +// } +// maxTm.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getMaxTm()); +// maxTm.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getMaxTm()); +// list.add(maxTm); +// +// Map min = new LinkedHashMap<>(); +// min.put("t0","全年度特征值统计"); +// min.put("t1", "最小值"); +// for(int i = 0;i < stationCodes.size();i++){ +// String code = stationCodes.get(i); +// min.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getMinValue()); +// } +// min.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getMinValue()); +// min.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getMinValue()); +// list.add(min); +// +// Map minTm = new LinkedHashMap<>(); +// minTm.put("t0","全年度特征值统计"); +// minTm.put("t1", "日期"); +// for(int i = 0;i < stationCodes.size();i++){ +// String code = stationCodes.get(i); +// minTm.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getMinTm()); +// } +// minTm.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getMinTm()); +// minTm.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getMinTm()); +// list.add(minTm); +// +// Map diff = new LinkedHashMap<>(); +// diff.put("t0","全年度特征值统计"); +// diff.put("t1", "年变幅"); +// for(int i = 0;i < stationCodes.size();i++){ +// String code = stationCodes.get(i); +// diff.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getDiff()); +// } +// diff.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getDiff()); +// diff.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getDiff()); +// list.add(diff); +// +// ExcelUtil.exportExcel(headList, DataHandleUtil.tableData(list),2,new int[]{0},fileName,response,sheetName); +// } +// +// public List listValue(Integer type) { +// List list; +// if(type == 1){ +// list = baseMapper.listValue(); +// }else { +// list = baseMapper.flowListValue(); +// } +// OsmoticQuerySo so = new OsmoticQuerySo(); +// List stationCodes = list.stream().map(OsmoticPressVo::getStationCode).collect(Collectors.toList()); +// if(list.stream().filter(o->o.getTm() != null).collect(Collectors.toList()).size() > 0 ){ +// String maxTm = list.stream().filter(o->o.getTm() != null).max(Comparator.comparing(OsmoticPressVo::getTm)).get().getTm(); +// String minTm = list.stream().filter(o->o.getTm() != null).min(Comparator.comparing(OsmoticPressVo::getTm)).get().getTm(); +// so.setStationCodes(stationCodes); +// DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); +// dateTimeRangeSo.setStart(DateUtil.convertStringToDate(minTm)); +// dateTimeRangeSo.setEnd(DateUtil.convertStringToDate(maxTm)); +// so.setDateTimeRangeSo(dateTimeRangeSo); +// List warnList = baseMapper.queryWarn(so); +// list.stream().map(o->{ +// if(o.getTm() != null && DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(o.getTm()), new Date()) > 48){ +// o.setFlag(1); +// } +// Boolean b = warnList.stream().filter(t->t.getStationCode().equals(o.getStationCode()) && t.getTm().equals(o.getTm())).findAny().isPresent(); +// if(b){ +// o.setStatus(1); +// } +// return o; +// }).collect(Collectors.toList()); +// } +// return list; +// } +// +// public List detailValue(OsmoticDetailQuerySo so) { +// List list = baseMapper.detailValue(so); +// if(so.getType() == 2){ +// return list; +// } +// OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); +// BeanUtils.copyProperties(so,osmoticQuerySo); +// List stRzVos = baseMapper.queryLineRz(osmoticQuerySo,shiftRService.getStcd()); +// return bindPressDetail(list,stRzVos); +// } +// +// private List bindPressDetail(List list, List stRzVos) { +// HashSet strings = new HashSet<>(); +// list.stream().forEach(v1 -> strings.add(v1.getTm())); +// stRzVos.stream().forEach(v1 -> strings.add(v1.getTm())); +// +// List result = new ArrayList<>(); +// strings.stream().forEach(v1 ->{ +// OsmoticPressDetailVo v = new OsmoticPressDetailVo(); +// v.setTm(v1); +// result.add(v); +// }); +// +// List resList = result.stream().map(v1 -> { +// stRzVos.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { +// v1.setRz(v2.getRz()); +// }); +// +// list.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { +// v1.setValue(v2.getValue()); +// }); +// return v1; +// }).collect(Collectors.toList()); +// return resList.stream().sorted(Comparator.comparing(OsmoticPressDetailVo::getTm)).collect(Collectors.toList()); +// } +// +// public Map stat() { +// Map map = new HashMap<>(); +// List press = this.listValue(1); +// Integer pressSize = press.size(); +// Long pressWarn = press.stream().filter(o -> o.getStatus() == 1).collect(Collectors.counting()); +// +// List flow = this.listValue(2); +// Integer flowSize = flow.size(); +// Long flowWarn = flow.stream().filter(o -> o.getStatus() == 1).collect(Collectors.counting()); +// +// List shift = shiftRService.listValue(); +// Integer shiftSize = shift.size(); +// Long shiftWarn = shift.stream().filter(o -> o.getXStatus() == 1 || o.getYStatus() ==1 || o.getHStatus() == 1).collect(Collectors.counting()); +// +// Integer size = pressSize + flowSize + shiftSize; +// Integer warn = Stream.of(pressWarn, flowWarn, shiftWarn).mapToInt(Long::intValue).sum(); +// map.put(warn,size); +// return map; +// } +//} +// +// diff --git a/src/main/java/com/gunshi/project/hsz/service/OsmoticShiftRService.java b/src/main/java/com/gunshi/project/hsz/service/OsmoticShiftRService.java index 2beb797..f980e38 100644 --- a/src/main/java/com/gunshi/project/hsz/service/OsmoticShiftRService.java +++ b/src/main/java/com/gunshi/project/hsz/service/OsmoticShiftRService.java @@ -1,333 +1,333 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; -import com.gunshi.project.hsz.entity.so.OsmoticQueryPageSo; -import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.mapper.AttResBaseMapper; -import com.gunshi.project.hsz.mapper.OsmoticPressRMapper; -import com.gunshi.project.hsz.mapper.OsmoticShiftRMapper; -import com.gunshi.project.hsz.model.OsmoticShiftR; -import com.gunshi.project.hsz.util.DataHandleUtil; -import com.gunshi.project.hsz.util.DateUtil; -import com.gunshi.project.hsz.util.ExcelUtil; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import java.util.stream.Collectors; - -/** - * 描述: 位移监测记录表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class OsmoticShiftRService extends ServiceImpl -{ - - @Resource - private OsmoticPressRMapper pressRMapper; - - @Resource - private AttResBaseMapper attResBaseMapper; - - private static final String X_PREFIX = "/X"; - private static final String Y_PREFIX = "/Y"; - private static final String H_PREFIX = "/H"; - - public Page queryPage(OsmoticQueryPageSo osmoticQueryPageSo) { - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - if(osmoticQueryPageSo.getDateTimeRangeSo() != null && osmoticQueryPageSo.getDateTimeRangeSo().getStart() != null){ - wrapper.ge(OsmoticShiftR::getTm,osmoticQueryPageSo.getDateTimeRangeSo().getStart()); - } - if(osmoticQueryPageSo.getDateTimeRangeSo() != null && osmoticQueryPageSo.getDateTimeRangeSo().getEnd() != null){ - wrapper.le(OsmoticShiftR::getTm,osmoticQueryPageSo.getDateTimeRangeSo().getEnd()); - } - if(StringUtils.isNotEmpty(osmoticQueryPageSo.getStationCode())){ - wrapper.eq(OsmoticShiftR::getStationCode,osmoticQueryPageSo.getStationCode()); - } - wrapper.orderByDesc(OsmoticShiftR::getTm); - return this.page(osmoticQueryPageSo.getPageSo().toPage(),wrapper); - } - - public List yearStat(OsmoticQuerySo osmoticQuerySo) { - List resList = new ArrayList<>(); - commonQueryHandle(osmoticQuerySo); - //查询位移监测记录 - List valueList = baseMapper.queryValue(osmoticQuerySo); - List dateList = DateUtil.getDatesBetween(osmoticQuerySo.getDateTimeRangeSo().getStart(), osmoticQuerySo.getDateTimeRangeSo().getEnd(), false); - //数据处理 - for(String str : dateList){ - OsmoticShiftVo vo = new OsmoticShiftVo(); - vo.setTm(str); - vo.setList(valueList.stream().filter(o->str.equals(o.getTm())).collect(Collectors.toList())); - resList.add(vo); - } - return resList; - } - - private OsmoticQuerySo commonQueryHandle(OsmoticQuerySo osmoticQuerySo){ - Integer year = osmoticQuerySo.getYear(); - Date start = DateUtil.convertStringToDate(year + "-01-01 00:00:00"); - Date end = DateUtil.convertStringToDate(year + "-12-31 00:00:00"); - DateTimeRangeSo so = new DateTimeRangeSo(); - so.setStart(start); - so.setEnd(end); - osmoticQuerySo.setDateTimeRangeSo(so); - return osmoticQuerySo; - } - - - public List yearStatValue(OsmoticQuerySo osmoticQuerySo) { - List resList = new ArrayList<>(); - commonQueryHandle(osmoticQuerySo); - //查询位移监测记录 - List valueList = baseMapper.queryValue(osmoticQuerySo); - //按测站分组 - Map> map = valueList.stream().collect(Collectors.groupingBy(OsmoticShiftValueVo::getStationCode)); - map.entrySet().forEach(o->{ - String key = o.getKey(); - List value = o.getValue(); - - OsmoticChartVo xVo = new OsmoticChartVo(); - OsmoticShiftValueVo xMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo::getX)).get(); - OsmoticShiftValueVo xMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo::getX)).get(); - xVo.setStationCode(key + X_PREFIX); - xVo.setMaxValue(xMax.getX()); - xVo.setMaxTm(xMax.getTm()); - xVo.setMinValue(xMin.getX()); - xVo.setMinTm(xMin.getTm()); - xVo.setDiff(xMax.getX().subtract(xMin.getX())); - resList.add(xVo); - - OsmoticChartVo yVo = new OsmoticChartVo(); - OsmoticShiftValueVo yMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo::getY)).get(); - OsmoticShiftValueVo yMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo::getY)).get(); - yVo.setStationCode(key + Y_PREFIX); - yVo.setMaxValue(yMax.getY()); - yVo.setMaxTm(yMax.getTm()); - yVo.setMinValue(yMin.getY()); - yVo.setMinTm(yMin.getTm()); - yVo.setDiff(yMax.getY().subtract(yMin.getY())); - resList.add(yVo); - - OsmoticChartVo hVo = new OsmoticChartVo(); - OsmoticShiftValueVo hMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo::getH)).get(); - OsmoticShiftValueVo hMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo::getH)).get(); - hVo.setStationCode(key + H_PREFIX); - hVo.setMaxValue(hMax.getH()); - hVo.setMaxTm(hMax.getTm()); - hVo.setMinValue(hMin.getH()); - hVo.setMinTm(hMin.getTm()); - hVo.setDiff(hMax.getH().subtract(hMin.getH())); - resList.add(hVo); - - }); - return resList; - } - - public void yearStatExport(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { - String fileName = "年度位移统计"; - String sheetName = "年度位移统计"; - - //上方表格数据 - List resList = yearStat(osmoticQuerySo); - //下方特征值数据 - List chartList = yearStatValue(osmoticQuerySo); - List stationCodes = osmoticQuerySo.getStationCodes(); - //表头信息 - List> headList = new ArrayList<>(); - List heads1 = new ArrayList<>(); - heads1.add("序号"); - heads1.add("序号"); - headList.add(heads1); - - List heads2 = new ArrayList<>(); - heads2.add("监测日期"); - heads2.add("监测日期"); - headList.add(heads2); - - for(String code : stationCodes){ - List headsX = new ArrayList<>(); - headsX.add(code); - headsX.add("X"); - headList.add(headsX); - - List headsY = new ArrayList<>(); - headsY.add(code); - headsY.add("Y"); - headList.add(headsY); - - List headsH = new ArrayList<>(); - headsH.add(code); - headsH.add("H"); - headList.add(headsH); - } - - List> list = new ArrayList<>(); - for (int j = 0;j < resList.size(); j++) { - OsmoticShiftVo vo = resList.get(j); - Map test = new LinkedHashMap<>(); - test.put("t0",j+1); - test.put("t1", vo.getTm()); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - OsmoticShiftValueVo valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null); - test.put(code + X_PREFIX,valueVo != null ? valueVo.getX() : ""); - test.put(code + Y_PREFIX,valueVo != null ? valueVo.getY() : ""); - test.put(code + H_PREFIX,valueVo != null ? valueVo.getH() : ""); - } - list.add(test); - } - - Map max = new LinkedHashMap<>(); - max.put("t0","全年度特征值统计"); - max.put("t1", "最大值"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - max.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMaxValue()); - max.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMaxValue()); - max.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMaxValue()); - } - list.add(max); - - Map maxTm = new LinkedHashMap<>(); - maxTm.put("t0","全年度特征值统计"); - maxTm.put("t1", "日期"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - maxTm.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMaxTm()); - maxTm.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMaxTm()); - maxTm.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMaxTm()); - } - list.add(maxTm); - - Map min = new LinkedHashMap<>(); - min.put("t0","全年度特征值统计"); - min.put("t1", "最小值"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - min.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMinValue()); - min.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMinValue()); - min.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMinValue()); - } - list.add(min); - - Map minTm = new LinkedHashMap<>(); - minTm.put("t0","全年度特征值统计"); - minTm.put("t1", "日期"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - minTm.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMinTm()); - minTm.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMinTm()); - minTm.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMinTm()); - } - list.add(minTm); - - Map diff = new LinkedHashMap<>(); - diff.put("t0","全年度特征值统计"); - diff.put("t1", "年变幅"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - diff.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getDiff()); - diff.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getDiff()); - diff.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getDiff()); - } - list.add(diff); - - ExcelUtil.exportExcel(headList, DataHandleUtil.tableData(list),2,new int[]{0},fileName,response,sheetName); - } - - public List listValue() { - List list = baseMapper.listValue(); - if(CollectionUtils.isEmpty(list)){ - return list; - } - OsmoticQuerySo so = new OsmoticQuerySo(); - List stationCodes = list.stream().map(OsmoticShiftListVo::getStationCode).collect(Collectors.toList()); - String maxTm = list.stream().filter(o->o.getTm() != null).max(Comparator.comparing(OsmoticShiftListVo::getTm)).get().getTm(); - String minTm = list.stream().filter(o->o.getTm() != null).min(Comparator.comparing(OsmoticShiftListVo::getTm)).get().getTm(); - so.setStationCodes(stationCodes); - DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); - dateTimeRangeSo.setStart(DateUtil.convertStringToDate(minTm)); - dateTimeRangeSo.setEnd(DateUtil.convertStringToDate(maxTm)); - so.setDateTimeRangeSo(dateTimeRangeSo); - List warnList = baseMapper.queryWarn(so); - list.stream().map(o->{ - if(o.getTm() != null && DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(o.getTm()), new Date()) > 48){ - o.setFlag(1); - } - Boolean a = warnList.stream().filter(t->t.getStationCode().equals(o.getStationCode()) && t.getTm().equals(o.getTm()) && t.getDirection().equals("X")).findAny().isPresent(); - if(a){ - o.setXStatus(1); - } - Boolean b = warnList.stream().filter(t->t.getStationCode().equals(o.getStationCode()) && t.getTm().equals(o.getTm()) && t.getDirection().equals("Y")).findAny().isPresent(); - if(b){ - o.setYStatus(1); - } - Boolean c = warnList.stream().filter(t->t.getStationCode().equals(o.getStationCode()) && t.getTm().equals(o.getTm()) && t.getDirection().equals("H")).findAny().isPresent(); - if(c){ - o.setHStatus(1); - } - return o; - }).collect(Collectors.toList()); - return list; - } - - public List detailValue(OsmoticDetailQuerySo so) { - List list = baseMapper.detailValue(so); - OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); - BeanUtils.copyProperties(so,osmoticQuerySo); - List stRzVos = pressRMapper.queryLineRz(osmoticQuerySo,getStcd()); - return bindShiftDetail(list,stRzVos); - } - - public String getStcd(){ - List attResBaseVos = attResBaseMapper.queryList(); - AttResBaseVo attResBaseVo = attResBaseVos.get(0); - return attResBaseVo == null ? "":attResBaseVo.getStcd(); - } - - private List bindShiftDetail(List list, List stRzVos) { - HashSet strings = new HashSet<>(); - list.stream().forEach(v1 -> strings.add(v1.getTm())); - stRzVos.stream().forEach(v1 -> strings.add(v1.getTm())); - - List result = new ArrayList<>(); - strings.stream().forEach(v1 ->{ - OsmoticShiftValueVo v = new OsmoticShiftValueVo(); - v.setTm(v1); - result.add(v); - }); - - List resList = result.stream().map(v1 -> { - stRzVos.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { - v1.setRz(v2.getRz()); - }); - - list.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { - v1.setX(v2.getX()); - v1.setY(v2.getY()); - v1.setH(v2.getH()); - }); - return v1; - }).collect(Collectors.toList()); - return resList.stream().sorted(Comparator.comparing(OsmoticShiftValueVo::getTm)).collect(Collectors.toList()); - } -} - - +//package com.gunshi.project.hsz.service; +// +//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +//import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +//import com.baomidou.mybatisplus.core.toolkit.StringUtils; +//import com.baomidou.mybatisplus.core.toolkit.Wrappers; +//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +//import com.gunshi.db.dto.DateTimeRangeSo; +//import com.gunshi.project.hsz.entity.so.OsmoticDetailQuerySo; +//import com.gunshi.project.hsz.entity.so.OsmoticQueryPageSo; +//import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; +//import com.gunshi.project.hsz.entity.vo.*; +//import com.gunshi.project.hsz.mapper.AttResBaseMapper; +//import com.gunshi.project.hsz.mapper.OsmoticPressRMapper; +//import com.gunshi.project.hsz.mapper.OsmoticShiftRMapper; +//import com.gunshi.project.hsz.model.OsmoticShiftR; +//import com.gunshi.project.hsz.util.DataHandleUtil; +//import com.gunshi.project.hsz.util.DateUtil; +//import com.gunshi.project.hsz.util.ExcelUtil; +//import jakarta.annotation.Resource; +//import jakarta.servlet.http.HttpServletResponse; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.beans.BeanUtils; +//import org.springframework.stereotype.Service; +//import org.springframework.transaction.annotation.Transactional; +// +//import java.util.*; +//import java.util.stream.Collectors; +// +///** +// * 描述: 位移监测记录表 +// * author: xusan +// * date: 2024-07-08 17:30:37 +// */ +//@Service +//@Slf4j +//@Transactional(rollbackFor = Exception.class) +//public class OsmoticShiftRService extends ServiceImpl +//{ +// +// @Resource +// private OsmoticPressRMapper pressRMapper; +// +// @Resource +// private AttResBaseMapper attResBaseMapper; +// +// private static final String X_PREFIX = "/X"; +// private static final String Y_PREFIX = "/Y"; +// private static final String H_PREFIX = "/H"; +// +// public Page queryPage(OsmoticQueryPageSo osmoticQueryPageSo) { +// LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); +// if(osmoticQueryPageSo.getDateTimeRangeSo() != null && osmoticQueryPageSo.getDateTimeRangeSo().getStart() != null){ +// wrapper.ge(OsmoticShiftR::getTm,osmoticQueryPageSo.getDateTimeRangeSo().getStart()); +// } +// if(osmoticQueryPageSo.getDateTimeRangeSo() != null && osmoticQueryPageSo.getDateTimeRangeSo().getEnd() != null){ +// wrapper.le(OsmoticShiftR::getTm,osmoticQueryPageSo.getDateTimeRangeSo().getEnd()); +// } +// if(StringUtils.isNotEmpty(osmoticQueryPageSo.getStationCode())){ +// wrapper.eq(OsmoticShiftR::getStationCode,osmoticQueryPageSo.getStationCode()); +// } +// wrapper.orderByDesc(OsmoticShiftR::getTm); +// return this.page(osmoticQueryPageSo.getPageSo().toPage(),wrapper); +// } +// +// public List yearStat(OsmoticQuerySo osmoticQuerySo) { +// List resList = new ArrayList<>(); +// commonQueryHandle(osmoticQuerySo); +// //查询位移监测记录 +// List valueList = baseMapper.queryValue(osmoticQuerySo); +// List dateList = DateUtil.getDatesBetween(osmoticQuerySo.getDateTimeRangeSo().getStart(), osmoticQuerySo.getDateTimeRangeSo().getEnd(), false); +// //数据处理 +// for(String str : dateList){ +// OsmoticShiftVo vo = new OsmoticShiftVo(); +// vo.setTm(str); +// vo.setList(valueList.stream().filter(o->str.equals(o.getTm())).collect(Collectors.toList())); +// resList.add(vo); +// } +// return resList; +// } +// +// private OsmoticQuerySo commonQueryHandle(OsmoticQuerySo osmoticQuerySo){ +// Integer year = osmoticQuerySo.getYear(); +// Date start = DateUtil.convertStringToDate(year + "-01-01 00:00:00"); +// Date end = DateUtil.convertStringToDate(year + "-12-31 00:00:00"); +// DateTimeRangeSo so = new DateTimeRangeSo(); +// so.setStart(start); +// so.setEnd(end); +// osmoticQuerySo.setDateTimeRangeSo(so); +// return osmoticQuerySo; +// } +// +// +// public List yearStatValue(OsmoticQuerySo osmoticQuerySo) { +// List resList = new ArrayList<>(); +// commonQueryHandle(osmoticQuerySo); +// //查询位移监测记录 +// List valueList = baseMapper.queryValue(osmoticQuerySo); +// //按测站分组 +// Map> map = valueList.stream().collect(Collectors.groupingBy(OsmoticShiftValueVo::getStationCode)); +// map.entrySet().forEach(o->{ +// String key = o.getKey(); +// List value = o.getValue(); +// +// OsmoticChartVo xVo = new OsmoticChartVo(); +// OsmoticShiftValueVo xMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo::getX)).get(); +// OsmoticShiftValueVo xMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo::getX)).get(); +// xVo.setStationCode(key + X_PREFIX); +// xVo.setMaxValue(xMax.getX()); +// xVo.setMaxTm(xMax.getTm()); +// xVo.setMinValue(xMin.getX()); +// xVo.setMinTm(xMin.getTm()); +// xVo.setDiff(xMax.getX().subtract(xMin.getX())); +// resList.add(xVo); +// +// OsmoticChartVo yVo = new OsmoticChartVo(); +// OsmoticShiftValueVo yMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo::getY)).get(); +// OsmoticShiftValueVo yMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo::getY)).get(); +// yVo.setStationCode(key + Y_PREFIX); +// yVo.setMaxValue(yMax.getY()); +// yVo.setMaxTm(yMax.getTm()); +// yVo.setMinValue(yMin.getY()); +// yVo.setMinTm(yMin.getTm()); +// yVo.setDiff(yMax.getY().subtract(yMin.getY())); +// resList.add(yVo); +// +// OsmoticChartVo hVo = new OsmoticChartVo(); +// OsmoticShiftValueVo hMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo::getH)).get(); +// OsmoticShiftValueVo hMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo::getH)).get(); +// hVo.setStationCode(key + H_PREFIX); +// hVo.setMaxValue(hMax.getH()); +// hVo.setMaxTm(hMax.getTm()); +// hVo.setMinValue(hMin.getH()); +// hVo.setMinTm(hMin.getTm()); +// hVo.setDiff(hMax.getH().subtract(hMin.getH())); +// resList.add(hVo); +// +// }); +// return resList; +// } +// +// public void yearStatExport(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { +// String fileName = "年度位移统计"; +// String sheetName = "年度位移统计"; +// +// //上方表格数据 +// List resList = yearStat(osmoticQuerySo); +// //下方特征值数据 +// List chartList = yearStatValue(osmoticQuerySo); +// List stationCodes = osmoticQuerySo.getStationCodes(); +// //表头信息 +// List> headList = new ArrayList<>(); +// List heads1 = new ArrayList<>(); +// heads1.add("序号"); +// heads1.add("序号"); +// headList.add(heads1); +// +// List heads2 = new ArrayList<>(); +// heads2.add("监测日期"); +// heads2.add("监测日期"); +// headList.add(heads2); +// +// for(String code : stationCodes){ +// List headsX = new ArrayList<>(); +// headsX.add(code); +// headsX.add("X"); +// headList.add(headsX); +// +// List headsY = new ArrayList<>(); +// headsY.add(code); +// headsY.add("Y"); +// headList.add(headsY); +// +// List headsH = new ArrayList<>(); +// headsH.add(code); +// headsH.add("H"); +// headList.add(headsH); +// } +// +// List> list = new ArrayList<>(); +// for (int j = 0;j < resList.size(); j++) { +// OsmoticShiftVo vo = resList.get(j); +// Map test = new LinkedHashMap<>(); +// test.put("t0",j+1); +// test.put("t1", vo.getTm()); +// for(int i = 0;i < stationCodes.size();i++){ +// String code = stationCodes.get(i); +// OsmoticShiftValueVo valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null); +// test.put(code + X_PREFIX,valueVo != null ? valueVo.getX() : ""); +// test.put(code + Y_PREFIX,valueVo != null ? valueVo.getY() : ""); +// test.put(code + H_PREFIX,valueVo != null ? valueVo.getH() : ""); +// } +// list.add(test); +// } +// +// Map max = new LinkedHashMap<>(); +// max.put("t0","全年度特征值统计"); +// max.put("t1", "最大值"); +// for(int i = 0;i < stationCodes.size();i++){ +// String code = stationCodes.get(i); +// max.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMaxValue()); +// max.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMaxValue()); +// max.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMaxValue()); +// } +// list.add(max); +// +// Map maxTm = new LinkedHashMap<>(); +// maxTm.put("t0","全年度特征值统计"); +// maxTm.put("t1", "日期"); +// for(int i = 0;i < stationCodes.size();i++){ +// String code = stationCodes.get(i); +// maxTm.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMaxTm()); +// maxTm.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMaxTm()); +// maxTm.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMaxTm()); +// } +// list.add(maxTm); +// +// Map min = new LinkedHashMap<>(); +// min.put("t0","全年度特征值统计"); +// min.put("t1", "最小值"); +// for(int i = 0;i < stationCodes.size();i++){ +// String code = stationCodes.get(i); +// min.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMinValue()); +// min.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMinValue()); +// min.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMinValue()); +// } +// list.add(min); +// +// Map minTm = new LinkedHashMap<>(); +// minTm.put("t0","全年度特征值统计"); +// minTm.put("t1", "日期"); +// for(int i = 0;i < stationCodes.size();i++){ +// String code = stationCodes.get(i); +// minTm.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMinTm()); +// minTm.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMinTm()); +// minTm.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getMinTm()); +// } +// list.add(minTm); +// +// Map diff = new LinkedHashMap<>(); +// diff.put("t0","全年度特征值统计"); +// diff.put("t1", "年变幅"); +// for(int i = 0;i < stationCodes.size();i++){ +// String code = stationCodes.get(i); +// diff.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getDiff()); +// diff.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getDiff()); +// diff.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getStationCode())).findFirst().orElseGet(OsmoticChartVo::new).getDiff()); +// } +// list.add(diff); +// +// ExcelUtil.exportExcel(headList, DataHandleUtil.tableData(list),2,new int[]{0},fileName,response,sheetName); +// } +// +// public List listValue() { +// List list = baseMapper.listValue(); +// if(CollectionUtils.isEmpty(list)){ +// return list; +// } +// OsmoticQuerySo so = new OsmoticQuerySo(); +// List stationCodes = list.stream().map(OsmoticShiftListVo::getStationCode).collect(Collectors.toList()); +// String maxTm = list.stream().filter(o->o.getTm() != null).max(Comparator.comparing(OsmoticShiftListVo::getTm)).get().getTm(); +// String minTm = list.stream().filter(o->o.getTm() != null).min(Comparator.comparing(OsmoticShiftListVo::getTm)).get().getTm(); +// so.setStationCodes(stationCodes); +// DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); +// dateTimeRangeSo.setStart(DateUtil.convertStringToDate(minTm)); +// dateTimeRangeSo.setEnd(DateUtil.convertStringToDate(maxTm)); +// so.setDateTimeRangeSo(dateTimeRangeSo); +// List warnList = baseMapper.queryWarn(so); +// list.stream().map(o->{ +// if(o.getTm() != null && DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(o.getTm()), new Date()) > 48){ +// o.setFlag(1); +// } +// Boolean a = warnList.stream().filter(t->t.getStationCode().equals(o.getStationCode()) && t.getTm().equals(o.getTm()) && t.getDirection().equals("X")).findAny().isPresent(); +// if(a){ +// o.setXStatus(1); +// } +// Boolean b = warnList.stream().filter(t->t.getStationCode().equals(o.getStationCode()) && t.getTm().equals(o.getTm()) && t.getDirection().equals("Y")).findAny().isPresent(); +// if(b){ +// o.setYStatus(1); +// } +// Boolean c = warnList.stream().filter(t->t.getStationCode().equals(o.getStationCode()) && t.getTm().equals(o.getTm()) && t.getDirection().equals("H")).findAny().isPresent(); +// if(c){ +// o.setHStatus(1); +// } +// return o; +// }).collect(Collectors.toList()); +// return list; +// } +// +// public List detailValue(OsmoticDetailQuerySo so) { +// List list = baseMapper.detailValue(so); +// OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); +// BeanUtils.copyProperties(so,osmoticQuerySo); +// List stRzVos = pressRMapper.queryLineRz(osmoticQuerySo,getStcd()); +// return bindShiftDetail(list,stRzVos); +// } +// +// public String getStcd(){ +// List attResBaseVos = attResBaseMapper.queryList(); +// AttResBaseVo attResBaseVo = attResBaseVos.get(0); +// return attResBaseVo == null ? "":attResBaseVo.getStcd(); +// } +// +// private List bindShiftDetail(List list, List stRzVos) { +// HashSet strings = new HashSet<>(); +// list.stream().forEach(v1 -> strings.add(v1.getTm())); +// stRzVos.stream().forEach(v1 -> strings.add(v1.getTm())); +// +// List result = new ArrayList<>(); +// strings.stream().forEach(v1 ->{ +// OsmoticShiftValueVo v = new OsmoticShiftValueVo(); +// v.setTm(v1); +// result.add(v); +// }); +// +// List resList = result.stream().map(v1 -> { +// stRzVos.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { +// v1.setRz(v2.getRz()); +// }); +// +// list.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { +// v1.setX(v2.getX()); +// v1.setY(v2.getY()); +// v1.setH(v2.getH()); +// }); +// return v1; +// }).collect(Collectors.toList()); +// return resList.stream().sorted(Comparator.comparing(OsmoticShiftValueVo::getTm)).collect(Collectors.toList()); +// } +//} +// +// diff --git a/src/main/java/com/gunshi/project/hsz/service/OsmoticWarnRService.java b/src/main/java/com/gunshi/project/hsz/service/OsmoticWarnRService.java index 7e4f4fa..0cf8ce9 100644 --- a/src/main/java/com/gunshi/project/hsz/service/OsmoticWarnRService.java +++ b/src/main/java/com/gunshi/project/hsz/service/OsmoticWarnRService.java @@ -12,7 +12,7 @@ import com.gunshi.project.hsz.entity.so.WarnSo; import com.gunshi.project.hsz.entity.vo.OsmoticWarnVo; import com.gunshi.project.hsz.mapper.OsmoticWarnRMapper; import com.gunshi.project.hsz.mapper.OsmoticWarnRuleMapper; -import com.gunshi.project.hsz.model.OsmoticShiftR; +import com.gunshi.project.hsz.model.JcskGnssR; import com.gunshi.project.hsz.model.OsmoticWarnR; import com.gunshi.project.hsz.model.OsmoticWarnRule; import jakarta.annotation.Resource; @@ -71,14 +71,14 @@ public class OsmoticWarnRService extends ServiceImpl rules = lambdaQuery().eq(OsmoticWarnRule::getStationCode, press.getStationCode()) + @Autowired + private JcskSyBService jcskSyBService; + public void checkWarn(JcskSyR flow) { + String stcd = flow.getStcd(); + String mpcd = flow.getMpcd(); + String stationCode = jcskSyBService.getDvcdByStcdAndMpcd(stcd,mpcd); + List rules = lambdaQuery().eq(OsmoticWarnRule::getStationCode,stationCode) .eq(OsmoticWarnRule::getType, OsmoticWarnRule.Type.PRESS.getType()) .eq(OsmoticWarnRule::getStatus, OsmoticWarnRule.Status.ENABLE.getStatus()) .list(); - } - - private boolean checkWarn(OsmoticPressR press, OsmoticWarnRule rule) { - BigDecimal valueToCompare = press.getValue(); - OsmoticWarnRule.Relation matchRel = OsmoticWarnRule.Relation.match(rule.getCondition()); - - OsmoticWarnRule.Condition cond1 = OsmoticWarnRule.Condition.match(rule.getConditionOne()); - if (cond1 == null) return false; - BigDecimal cond1value = rule.getValueOne(); - if (cond1value == null) return false; - boolean cond1Violating = isViolating(valueToCompare, cond1, cond1value); - - boolean cond2Violating = false; - if (matchRel != null) { - OsmoticWarnRule.Condition cond2 = OsmoticWarnRule.Condition.match(rule.getConditionTwo()); - if (cond2 != null) { - BigDecimal cond2value = rule.getValueTwo(); - if (cond2value != null) { - cond2Violating = isViolating(valueToCompare, cond2, cond2value); - } - } - } - - boolean shoudWarn = false; - if (matchRel == null) { - if (cond1Violating) { - shoudWarn = true; - } - } else { - if (matchRel == OsmoticWarnRule.Relation.AND) { - if (cond1Violating && cond2Violating) { - shoudWarn = true; - } - } else if (matchRel == OsmoticWarnRule.Relation.OR) { - if (cond1Violating || cond2Violating) { - shoudWarn = true; - } - } - } - - if (shoudWarn) { - insertWarn(press.getStationCode(), rule.getId(), press.getValue(), OsmoticWarnRule.Type.PRESS.getType(), rule.getLevel()); - return true; - } - return false; - } - - private void insertWarn(String stationCode, Long ruleId, BigDecimal value, Integer type, Integer level) { - OsmoticWarnR warn = new OsmoticWarnR(); - warn.setId(IdWorker.getId()); - warn.setTm(new Date()); - warn.setStationCode(stationCode); - warn.setRuleId(ruleId); - warn.setValue(value); - warn.setType(type); - warn.setLevel(level); - warnRService.save(warn); - } - - - private boolean isViolating(BigDecimal value, OsmoticWarnRule.Condition cond, BigDecimal condValue) { - return switch (cond) { - case GT -> value.compareTo(condValue) > 0; - case GTE -> value.compareTo(condValue) >= 0; - case LT -> value.compareTo(condValue) < 0; - case LTE -> value.compareTo(condValue) <= 0; - case EQ -> value.compareTo(condValue) == 0; - case NE -> value.compareTo(condValue) != 0; - }; - } - - /* - 位移要看x,y,h - */ - public void checkWarn(OsmoticShiftR shift) { - - } - - /* - 渗流只看流量q - */ - public void checkWarn(OsmoticFlowR flow) { - List rules = lambdaQuery().eq(OsmoticWarnRule::getStationCode, flow.getStationCode()) - .eq(OsmoticWarnRule::getType, OsmoticWarnRule.Type.PRESS.getType()) - .eq(OsmoticWarnRule::getStatus, OsmoticWarnRule.Status.ENABLE.getStatus()) - .list(); - BigDecimal valueToCompare = flow.getQ(); + BigDecimal valueToCompare = flow.getSpprwl(); for (OsmoticWarnRule rule : rules) { OsmoticWarnRule.Relation matchRel = OsmoticWarnRule.Relation.match(rule.getCondition()); @@ -178,10 +99,242 @@ public class OsmoticWarnRuleService extends ServiceImpl value.compareTo(condValue) > 0; + case GTE -> value.compareTo(condValue) >= 0; + case LT -> value.compareTo(condValue) < 0; + case LTE -> value.compareTo(condValue) <= 0; + case EQ -> value.compareTo(condValue) == 0; + case NE -> value.compareTo(condValue) != 0; + }; + } + + /* + 位移要看x,y,h + */ + @Autowired + private JcskGnssBService jcskGnssBService; + public void checkWarn(JcskGnssR shift) { + String stationCode = shift.getCd(); + List rules = lambdaQuery().eq(OsmoticWarnRule::getStationCode, stationCode) + .eq(OsmoticWarnRule::getType, OsmoticWarnRule.Type.SHIFT.getType()) + .eq(OsmoticWarnRule::getStatus, OsmoticWarnRule.Status.ENABLE.getStatus()) + .list(); + BigDecimal valueXToCompare = shift.getDe(); + BigDecimal valueYToCompare = shift.getDn(); + BigDecimal valueHToCompare = shift.getDu(); + for (OsmoticWarnRule rule : rules) { + OsmoticWarnRule.Relation matchRel = OsmoticWarnRule.Relation.match(rule.getCondition()); + + OsmoticWarnRule.Condition cond1 = OsmoticWarnRule.Condition.match(rule.getConditionOne()); + if (cond1 == null) continue; + BigDecimal cond1value = rule.getValueOne(); + if (cond1value == null) continue; + boolean cond1Violating; + if(rule.getDirection().contains("x")){ + cond1Violating = isViolating(valueXToCompare, cond1, cond1value); + }else if(rule.getDirection().contains("y")){ + cond1Violating = isViolating(valueYToCompare, cond1, cond1value); + }else{ + cond1Violating = isViolating(valueHToCompare, cond1, cond1value); + } + + boolean cond2Violating = false; + if (matchRel != null) { + OsmoticWarnRule.Condition cond2 = OsmoticWarnRule.Condition.match(rule.getConditionTwo()); + if (cond2 != null) { + BigDecimal cond2value = rule.getValueTwo(); + if(rule.getDirection().contains("x")){ + cond2Violating = isViolating(valueXToCompare, cond2, cond2value); + }else if(rule.getDirection().contains("y")){ + cond2Violating = isViolating(valueYToCompare, cond2, cond2value); + }else{ + cond2Violating = isViolating(valueHToCompare, cond2, cond2value); + } + } + } + + boolean shoudWarn = false; + if (matchRel == null) { + if (cond1Violating) { + shoudWarn = true; + } + } else { + if (matchRel == OsmoticWarnRule.Relation.AND) { + if (cond1Violating && cond2Violating) { + shoudWarn = true; + } + } else if (matchRel == OsmoticWarnRule.Relation.OR) { + if (cond1Violating || cond2Violating) { + shoudWarn = true; + } + } + } + + if (shoudWarn) { + if(rule.getDirection().contains("x")){ + insertWarn(stationCode, rule.getId(), shift.getDe(), OsmoticWarnRule.Type.SHIFT.getType(), rule.getLevel(),shift.getTm(), rule.getResolveSuggest()); + }else if(rule.getDirection().contains("y")){ + insertWarn(stationCode, rule.getId(), shift.getDn(), OsmoticWarnRule.Type.SHIFT.getType(), rule.getLevel(),shift.getTm(), rule.getResolveSuggest()); + }else{ + insertWarn(stationCode, rule.getId(), shift.getDu(), OsmoticWarnRule.Type.SHIFT.getType(), rule.getLevel(),shift.getTm(), rule.getResolveSuggest()); + } + + } + } + } + + + /* + 渗流只看流量q + */ + + @Autowired + private JcskSlBService jcskSlBService; + public void checkWarn(JcskSlR flow) { + String stcd = flow.getStcd(); + String mpcd = flow.getMpcd(); + String stationCode = jcskSlBService.getDvcdByStcdAndMpcd(mpcd); + List rules = lambdaQuery().eq(OsmoticWarnRule::getStationCode, stationCode) + .eq(OsmoticWarnRule::getType, OsmoticWarnRule.Type.FLOW.getType()) + .eq(OsmoticWarnRule::getStatus, OsmoticWarnRule.Status.ENABLE.getStatus()) + .list(); + BigDecimal valueToCompare = flow.getSpqn(); + for (OsmoticWarnRule rule : rules) { + OsmoticWarnRule.Relation matchRel = OsmoticWarnRule.Relation.match(rule.getCondition()); + + OsmoticWarnRule.Condition cond1 = OsmoticWarnRule.Condition.match(rule.getConditionOne()); + if (cond1 == null) continue; + BigDecimal cond1value = rule.getValueOne(); + if (cond1value == null) continue; + boolean cond1Violating = isViolating(valueToCompare, cond1, cond1value); + + boolean cond2Violating = false; + if (matchRel != null) { + OsmoticWarnRule.Condition cond2 = OsmoticWarnRule.Condition.match(rule.getConditionTwo()); + if (cond2 != null) { + BigDecimal cond2value = rule.getValueTwo(); + if (cond2value != null) { + cond2Violating = isViolating(valueToCompare, cond2, cond2value); + } + } + } + + boolean shoudWarn = false; + if (matchRel == null) { + if (cond1Violating) { + shoudWarn = true; + } + } else { + if (matchRel == OsmoticWarnRule.Relation.AND) { + if (cond1Violating && cond2Violating) { + shoudWarn = true; + } + } else if (matchRel == OsmoticWarnRule.Relation.OR) { + if (cond1Violating || cond2Violating) { + shoudWarn = true; + } + } + } + + if (shoudWarn) { + insertWarn(stationCode, rule.getId(), flow.getSpqn(), OsmoticWarnRule.Type.FLOW.getType(), rule.getLevel(),flow.getMstm(), rule.getResolveSuggest()); + } + } + } + + @Autowired + private JcskSyRService jcskSyRService; + + public void debug() { + List list = jcskSyRService.lambdaQuery().orderByDesc(JcskSyR::getMstm).list(); + + checkWarn(list.get(0)); + } + + public Date queryMaxTmByType(Integer type) { + OsmoticWarnR entity = warnRService.queryMaxTmByType(type); + return entity == null?null:entity.getTm(); + } } diff --git a/src/main/java/com/gunshi/project/hsz/service/StFlowRService.java b/src/main/java/com/gunshi/project/hsz/service/StFlowRService.java new file mode 100644 index 0000000..4068fe9 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/service/StFlowRService.java @@ -0,0 +1,40 @@ +package com.gunshi.project.hsz.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.hsz.mapper.StFlowRMapper; +import com.gunshi.project.hsz.model.StFlowR; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StFlowRService extends ServiceImpl { + + public StFlowR getNewDataByStcd(String stcd) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StFlowR::getStcd, stcd); + queryWrapper.orderByDesc(StFlowR::getTm); + queryWrapper.last("limit 1"); + StFlowR stFlowR = this.baseMapper.selectOne(queryWrapper); + return stFlowR; + } + + public List listNewData() { + return this.baseMapper.listNewData(); + } + + public List getStcdList() { + return this.baseMapper.listStcds(); + } + + public List getDataByStcdAndTm(String stcd, Date tm) { + return this.baseMapper.getDataByStcdAndTm(stcd,tm); + } +} diff --git a/src/main/java/com/gunshi/project/hsz/service/StStbprpBService.java b/src/main/java/com/gunshi/project/hsz/service/StStbprpBService.java index 3f1f7e0..dc63594 100644 --- a/src/main/java/com/gunshi/project/hsz/service/StStbprpBService.java +++ b/src/main/java/com/gunshi/project/hsz/service/StStbprpBService.java @@ -248,14 +248,14 @@ public class StStbprpBService extends ServiceImpl { //BigDecimal q = stZqrlBService.getQFromZqrl(rz, zqrlList); BigDecimal q = stZqrlBService.getQByZqrl(zqrlList,rz); complex.setQ(q); - complex.setSv(complex.getQ()); -// if (idx == 0) { -// complex.setSv(BigDecimal.ZERO); -// } else { -// //计算溢洪量 -// RsvrComplexVo complexPrev = complexList.get(idx - 1); -// complex.setSv(complexPrev.getSv().add(complex.getQ().multiply(BigDecimal.valueOf(60 * 60)))); -// } +// complex.setSv(complex.getQ()); + if (idx == 0) { + complex.setSv(BigDecimal.ZERO); + } else { + //计算溢洪量 + RsvrComplexVo complexPrev = complexList.get(idx - 1); + complex.setSv(complexPrev.getSv().add(complex.getQ().multiply(BigDecimal.valueOf(60 * 60)))); + } complexList.add(complex); idx++; diff --git a/src/main/java/com/gunshi/project/hsz/service/StWaterRService.java b/src/main/java/com/gunshi/project/hsz/service/StWaterRService.java index 78dc5d3..58945f0 100644 --- a/src/main/java/com/gunshi/project/hsz/service/StWaterRService.java +++ b/src/main/java/com/gunshi/project/hsz/service/StWaterRService.java @@ -30,8 +30,8 @@ public class StWaterRService extends ServiceImpl .collect(Collectors.groupingBy(StWaterR::getStcd, Collectors.mapping(StWaterR::getV, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)))); } - public List getStcdLastWaterData() { - return this.baseMapper.getStcdLastWaterData(); + public StWaterR selectNewDataByStcd(String stcd) { + return this.baseMapper.selectNewDataByStcd(stcd); } } diff --git a/src/main/java/com/gunshi/project/hsz/service/WaterDeviceService.java b/src/main/java/com/gunshi/project/hsz/service/WaterDeviceService.java new file mode 100644 index 0000000..04f2208 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/service/WaterDeviceService.java @@ -0,0 +1,35 @@ +package com.gunshi.project.hsz.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.gunshi.project.hsz.entity.so.WaterDevicePageSo; +import com.gunshi.project.hsz.mapper.WaterDeviceMapper; +import com.gunshi.project.hsz.model.JcskByB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class WaterDeviceService extends ServiceImpl { + + public Page pageQuery(WaterDevicePageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + if(ObjectUtils.isNotNull(page.getCode())){ + queryWrapper.eq(JcskByB::getCode, page.getCode()); + } + if(ObjectUtils.isNotNull(page.getName())){ + queryWrapper.like(JcskByB::getName, page.getName()); + } + if(ObjectUtils.isNotNull(page.getMnNo())){ + queryWrapper.like(JcskByB::getMnNo, page.getMnNo()); + } + Page res = this.page(page.getPageSo().toPage(), queryWrapper); + return res; + } + +} diff --git a/src/main/java/com/gunshi/project/hsz/timetask/DataTaskHsz.java b/src/main/java/com/gunshi/project/hsz/timetask/DataTaskHsz.java index bc5c00e..ca6da9e 100644 --- a/src/main/java/com/gunshi/project/hsz/timetask/DataTaskHsz.java +++ b/src/main/java/com/gunshi/project/hsz/timetask/DataTaskHsz.java @@ -239,150 +239,6 @@ public class DataTaskHsz { throw new RuntimeException(e); } } - - /** - * 定时获取供水量数据 - */ - //@Async - //@Scheduled(fixedRate = 70 , timeUnit = TimeUnit.MINUTES) - public void getWaterData(){ - Date now = new Date(); - System.out.println("供水量定时任务,执行时间:" + sdf.format(now)); - //获取供水量站点表中 每个站点的最新数据时间 - List stcdLast = stWaterRService.getStcdLastWaterData(); - OkHttpClient client = OkHttpUtil.build(); - String stcd1 = "";//干渠灌溉1 - String stcd2 = "";//干渠灌溉2 - String ecoStcd = "";//生态供水 - try { - if(ObjectUtils.isNotEmpty(stcdLast)){ - //对每个数据进行遍历 - for (StWaterR stWaterR : stcdLast) { - Date stm = stWaterR.getTm(); - Calendar calendar = Calendar.getInstance(); - if(ObjectUtils.isEmpty(stm)){ - //如果从来没有数据 - calendar.add(Calendar.DATE, -30); - }else{ - //同步过数据 - int diffDays = new BigDecimal((int) Math.ceil((now.getTime() - stm.getTime()) / (24 * 60 * 60 * 1000))).intValue(); - if (diffDays > 3) { - //如果时间差大于3天 - calendar.add(Calendar.DATE, -2); - calendar.add(Calendar.HOUR_OF_DAY, -20); - } else { - //小于三天 - calendar.setTime(stm); - calendar.add(Calendar.MINUTE, 1); - } - } - stm = calendar.getTime(); - //构建url - //TODO 这里还需要根据实际url来进行更改 - String url = jcskPath; - String waterRSource = ""; - url += jcskPathWaterRRoute + waterRSource; - //构建HTTP请求 - Response resp = client.newCall(new Request.Builder().url(url) - .post(new FormBody.Builder().add("stcd", stWaterR.getStcd()) - .add("stm", sdf.format(stm)) - .add("etm", sdf.format(now)) - .build()) - .header("Token", jcskToken) - .addHeader("Content-Type", "application/x-www-form-urlencoded") - .build()).execute(); - String respStr = resp.body().string(); - JSONObject jsonObject = JSONObject.parseObject(respStr.toLowerCase()); - if (!"200".equals(jsonObject.get("code").toString())) { - continue; - } - JSONArray data = jsonObject.getJSONArray("data"); - if(CollectionUtils.isNotEmpty(data)){ - List rList = data.toJavaList(StWaterR.class); - stWaterRService.saveBatch(rList); - //更新实时数据表 - StWaterR stWaterRLast = rList.get(rList.size() - 1); - StWaterRReal stWaterRReal = new StWaterRReal(); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.set("stcd", stWaterR.getStcd()) - .eq("tm",stWaterRLast.getTm()); - BeanUtils.copyProperties(stWaterRLast, stWaterRReal); - stWaterRRealService.saveOrUpdate(stWaterRReal); - //同步至供水整编表中 - // 使用 DateTimeFormatter(线程安全) - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH"); - Map> groupedByTime = rList.stream() - .collect(Collectors.groupingBy(waterR -> { - try { - Instant instant = waterR.getTm().toInstant(); - LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); - return localDateTime.format(formatter); - } catch (Exception e) { - return "未知时间"; - } - })); - - // 组装数据并保存 - List reorganizeList = new ArrayList<>(); - for (Map.Entry> entry : groupedByTime.entrySet()) { - String timeKey = entry.getKey(); - List timeData = entry.getValue(); - - StWaterRReorganize reorganize = new StWaterRReorganize(); - reorganize.setTm(timeKey); - - // 初始化各字段为0 - reorganize.setEcologyQ(BigDecimal.ZERO); - reorganize.setEcologyV(BigDecimal.ZERO); - reorganize.setMci1Q(BigDecimal.ZERO); - reorganize.setMci1V(BigDecimal.ZERO); - reorganize.setMci2Q(BigDecimal.ZERO); - reorganize.setMci2V(BigDecimal.ZERO); - reorganize.setSumV(BigDecimal.ZERO); - - // 按站点类型处理数据 - for (StWaterR waterR : timeData) { - String stcd = waterR.getStcd(); - BigDecimal q = waterR.getQ(); - BigDecimal v = waterR.getV(); - - if (ecoStcd.equals(stcd)) { - // 生态供水数据 - reorganize.setEcologyQ(q); - reorganize.setEcologyV(v); - } else if (stcd1.equals(stcd)) { - // 干渠灌溉1数据 - reorganize.setMci1Q(q); - reorganize.setMci1V(v); - } else if (stcd2.equals(stcd)) { - // 干渠灌溉2数据 - reorganize.setMci2Q(q); - reorganize.setMci2V(v); - } - } - - // 计算水量小计 - BigDecimal sumV = reorganize.getEcologyV() - .add(reorganize.getMci1V()) - .add(reorganize.getMci2V()); - reorganize.setSumV(sumV); - - reorganizeList.add(reorganize); - } - - // 批量保存到重组表 - if (!reorganizeList.isEmpty()) { - stWaterRReorganizeService.saveBatch(reorganizeList); - System.out.println("成功同步 " + reorganizeList.size() + " 条数据到重组表"); - } - } - } - } - }catch (Exception e){ - log.error("供水历史定时任务错误:", e.getMessage()); - } - } - /** * @description: 定时获取水库水情数据(历史、real) * @param diff --git a/src/main/java/com/gunshi/project/hsz/timetask/JcskDataTask.java b/src/main/java/com/gunshi/project/hsz/timetask/JcskDataTask.java new file mode 100644 index 0000000..8f88d93 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/timetask/JcskDataTask.java @@ -0,0 +1,476 @@ +package com.gunshi.project.hsz.timetask; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.hsz.entity.so.OsmoticQuerySo; +import com.gunshi.project.hsz.entity.vo.OsmoticShiftValueVo2; +import com.gunshi.project.hsz.mapper.JcskGnssREightAmMapper; +import com.gunshi.project.hsz.mapper.JcskSlBMapper; +import com.gunshi.project.hsz.mapper.JcskSlREightAmMapper; +import com.gunshi.project.hsz.mapper.JcskSyREightAmMapper; +import com.gunshi.project.hsz.model.*; +import com.gunshi.project.hsz.service.*; +import com.gunshi.project.hsz.util.DateUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.*; +import java.util.stream.Collectors; + +@EnableScheduling//开启定时任务 +@Component +@Slf4j +@Profile({"prod","dev","local"}) +public class JcskDataTask { + + + @Autowired + private JcskGnssREightAmMapper jcskGnssREightAmMapper; + + @Autowired + private JcskGnssRService jcskGnssRService; + + @Autowired + private JcskGnssBService service; + + @Autowired + private JcskSyREightAmMapper jcskSyREightAmMapper; + + @Autowired + private JcskSyRService jcskSyRService; + + @Autowired + private JcskSyBService jcskSyBService; + + @Autowired + private JcskSlBMapper jcskSlBMapper; + + @Autowired + private JcskSlREightAmMapper jcskSlREightAmMapper; + + @Autowired + private JcskSlBService jcskSlBService; + + @Autowired + private OsmoticWarnRuleService osmoticWarnRuleService; + + @Autowired + private JcskSlRService jcskSlRService; + + + + private static final Integer PRESS = 1; + + public static final Integer FLOW = 2; + + public static final Integer GNSS = 3; + + +// /** +// * 每5分钟扫描渗流。渗压、位移表 生成预警 +// */ +// @Scheduled(cron = "0 */30 * * * ?") +// @Async +// public void syncWarn(){ +// // 获取昨天的时间 +// Date yesterday = getYesterday(); +// Date syMaxTm = osmoticWarnRuleService.queryMaxTmByType(PRESS); +// if(syMaxTm==null){ +// syMaxTm = yesterday; +// } +// Date slMaxTm = osmoticWarnRuleService.queryMaxTmByType(FLOW); +// if(slMaxTm==null){ +// slMaxTm = yesterday; +// } +// Date gnssMaxTm = osmoticWarnRuleService.queryMaxTmByType(GNSS); +// if(gnssMaxTm==null){ +// gnssMaxTm = yesterday; +// } +// List syList = jcskSyRService.lambdaQuery().gt(JcskSyR::getMstm, syMaxTm).list(); +// List slList = jcskSlRService.lambdaQuery().gt(JcskSlR::getMstm, slMaxTm).list(); +// List gnssList = jcskGnssRService.lambdaQuery().gt(JcskGnssR::getTm, gnssMaxTm).list(); +// for (JcskSyR jcskSyR : syList) { +// osmoticWarnRuleService.checkWarn(jcskSyR); +// } +// for (JcskSlR jcskSlR : slList) { +// osmoticWarnRuleService.checkWarn(jcskSlR); +// } +// for (JcskGnssR jcskGnssR : gnssList) { +// osmoticWarnRuleService.checkWarn(jcskGnssR); +// } +// } + + private Date getYesterday() { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DAY_OF_YEAR, -1); + return calendar.getTime(); + } + + /** + * 同步渗流每日八点的数据 + */ +// @Scheduled(cron = "*/10 * * * * ?") + @Scheduled(cron = "0 17 8 * * ?") + @Async + public void syncSlREightAmData() { + OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); + DateTimeRangeSo so = new DateTimeRangeSo(); + List list = jcskSlBService.lambdaQuery().list(); + List cds = list.stream().map(JcskSlB::getDvcd).collect(Collectors.toList());//获取所有的测点编码(仪器编号) + osmoticQuerySo.setStationCodes(cds); + //获取整编表数量 + Long count = jcskSlREightAmMapper.selectCount(null); + List saveDatas = new ArrayList<>(); + List> syncData = new ArrayList<>(); + + if (count > 0) { + //增量同步 + //取最新的一个数据的时间,按每个测站测点分别同步 + for (JcskSlB jcskSlB : list) { + String mpcd = jcskSlB.getMpcd(); + String dvcd = jcskSlB.getDvcd(); + osmoticQuerySo.setStationCodes(Arrays.asList(dvcd)); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(JcskSlREightAm::getMpcd, mpcd) + .orderByDesc(JcskSlREightAm::getMstm).last("limit 1"); + JcskSlREightAm jcskGnssREightAm = jcskSlREightAmMapper.selectOne(wrapper); + + Calendar calendar = Calendar.getInstance(); + + if (jcskGnssREightAm != null) { + // 如果存在最新数据,从最新时间的第二天开始同步 + Date latestDate = jcskGnssREightAm.getMstm(); + calendar.setTime(latestDate); + calendar.add(Calendar.DAY_OF_MONTH, 1); // 加1天 + } else { + // 如果为空,设置同步时间为前一个星期 + calendar.add(Calendar.DAY_OF_MONTH, -7); // 减7天 + } + + // 设置时间范围为8:00:00开始 + calendar.set(Calendar.HOUR_OF_DAY, 8); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + Date start = calendar.getTime(); + + so.setStart(start); + so.setEnd(new Date()); + osmoticQuerySo.setDateTimeRangeSo(so); + List osmoticValueVo2s = jcskSlBMapper.syncqueryValue(osmoticQuerySo); + syncData.add(osmoticValueVo2s); + } + } else { + //全量同步 + osmoticQuerySo.setStationCodes(cds); + List osmoticValueVo2s = jcskSlBMapper.syncqueryValue(osmoticQuerySo); + syncData.add(osmoticValueVo2s); + } + + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf3 = new SimpleDateFormat("HH:mm"); + + if(syncData.size() > 0){ + for (List osmoticValueVo2s : syncData) { + //筛选出每天每个测点8-9点的数据 + List closestTo8AMList = osmoticValueVo2s.stream() + .filter(vo -> { + // 假设OsmoticShiftValueVo2中有getTm方法返回时间字符串 + String timeStr = sdf3.format(vo.getMstm()); + return timeStr.compareTo("08:00") >= 0 && timeStr.compareTo("09:00") <=0; + }) + .collect(Collectors.groupingBy(vo -> { + // 分组键:日期(yyyy-MM-dd) + 测站编码 + 测点编码 + // 假设OsmoticShiftValueVo2中有getCd方法返回测点编码 + String date = sdf2.format(vo.getMstm()); + return date + "_" + vo.getStcd() + "_" + vo.getMpcd(); + })) + .values().stream() + .map(group -> group.stream() + .min((vo1, vo2) -> { + String time1 = sdf3.format(vo1.getMstm()); + String time2 = sdf3.format(vo2.getMstm()); + + // 计算与08:00的时间差(分钟数) + int diff1 = Math.abs( + Integer.parseInt(time1.substring(0, 2)) * 60 + + Integer.parseInt(time1.substring(3, 5)) - + 8 * 60 + ); + + int diff2 = Math.abs( + Integer.parseInt(time2.substring(0, 2)) * 60 + + Integer.parseInt(time2.substring(3, 5)) - + 8 * 60 + ); + //获取最接近于八点的数据 + return Integer.compare(diff1, diff2); + }) + .orElse(null) + ) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + // 处理筛选后的数据 + for (JcskSlR data : closestTo8AMList) { + JcskSlREightAm entity = new JcskSlREightAm(); + BeanUtils.copyProperties(data, entity); + saveDatas.add(entity); + } + + if(saveDatas.size() > 0){ + jcskSlREightAmMapper.insert(saveDatas); + } + saveDatas.clear(); + } + } + } + + + + + /** + * 同步渗压每日八点的数据 + */ + //@Scheduled(cron = "*/10 * * * * ?") + @Scheduled(cron = "0 17 8 * * ?") + @Async + public void syncSyREightAmData() { + OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); + DateTimeRangeSo so = new DateTimeRangeSo(); + List list = jcskSyBService.lambdaQuery().list(); + List cds = list.stream().map(JcskSyB::getDvcd).collect(Collectors.toList()); + //获取整编表数量 + Long count = jcskSyREightAmMapper.selectCount(null); + List saveDatas = new ArrayList<>(); + List> syncData = new ArrayList<>(); + if (count > 0) { + //增量同步 + //取最新的一个数据的时间 + for (JcskSyB jcskSyB : list) { + String stcd = jcskSyB.getStcd(); + String mpcd = jcskSyB.getMpcd(); + String dvcd = jcskSyB.getDvcd(); + osmoticQuerySo.setStationCodes(Arrays.asList(dvcd)); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(JcskSyREightAm::getStcd, stcd) + .eq(JcskSyREightAm::getMpcd, mpcd) + .orderByDesc(JcskSyREightAm::getMstm).last("limit 1"); + JcskSyREightAm jcskGnssREightAm = jcskSyREightAmMapper.selectOne(wrapper); + + Calendar calendar = Calendar.getInstance(); + + if (jcskGnssREightAm != null) { + // 如果存在最新数据,从最新时间的第二天开始同步 + Date latestDate = Date.from(jcskGnssREightAm.getMstm().atZone(ZoneId.systemDefault()).toInstant()); + calendar.setTime(latestDate); + calendar.add(Calendar.DAY_OF_MONTH, 1); // 加1天 + } else { + // 如果为空,设置同步时间为前一个星期 + calendar.add(Calendar.DAY_OF_MONTH, -7); // 减7天 + } + // 设置时间范围为8:00:00开始 + calendar.set(Calendar.HOUR_OF_DAY, 8); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + Date start = calendar.getTime(); + + so.setStart(start); + so.setEnd(new Date()); + osmoticQuerySo.setDateTimeRangeSo(so); + List osmoticValueVo2s = jcskSyRService.getBaseMapper().syncqueryValue(osmoticQuerySo); + syncData.add(osmoticValueVo2s); + } + } else { + //全量同步 + osmoticQuerySo.setStationCodes(cds); + List osmoticValueVo2s = jcskSyRService.getBaseMapper().syncqueryValue(osmoticQuerySo); + syncData.add(osmoticValueVo2s); + } + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf3 = new SimpleDateFormat("HH:mm"); + if(syncData.size()>0){ + for (List osmoticValueVo2s : syncData) { + //筛选出每天每个测点8-9点的数据 + List closestTo8AMList = osmoticValueVo2s.stream() + .filter(vo -> { + // 假设OsmoticShiftValueVo2中有getTm方法返回时间字符串 + String timeStr = sdf3.format(vo.getMstm()); + return timeStr.compareTo("08:00") >= 0 && timeStr.compareTo("09:00") <=0; + }) + .collect(Collectors.groupingBy(vo -> { + // 分组键:日期(yyyy-MM-dd) + 测站编码 + 测点编码 + // 假设OsmoticShiftValueVo2中有getCd方法返回测点编码 + String date = sdf2.format(vo.getMstm()); + return date + "_" + vo.getStcd() + "_" + vo.getMpcd(); + })) + .values().stream() + .map(group -> group.stream() + .min((vo1, vo2) -> { + String time1 = sdf3.format(vo1.getMstm()); + String time2 = sdf3.format(vo2.getMstm()); + // 计算与08:00的时间差(分钟数) + int diff1 = Math.abs( + Integer.parseInt(time1.substring(0, 2)) * 60 + + Integer.parseInt(time1.substring(3, 5)) - + 8 * 60 + ); + + int diff2 = Math.abs( + Integer.parseInt(time2.substring(0, 2)) * 60 + + Integer.parseInt(time2.substring(3, 5)) - + 8 * 60 + ); + //获取最接近于八点的数据 + return Integer.compare(diff1, diff2); + }) + .orElse(null) + ) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + // 处理筛选后的数据 + for (JcskSyR data : closestTo8AMList) { + JcskSyREightAm entity = new JcskSyREightAm(); + BeanUtils.copyProperties(data, entity); + LocalDateTime localDateTime = data.getMstm().toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + entity.setMstm(localDateTime); + saveDatas.add(entity); + } + if(saveDatas.size()>0){ + jcskSyREightAmMapper.insert(saveDatas); + } + saveDatas.clear(); + } + } + } + + + + /** + * 同步位移监测每天最接近八点的数据 + */ + @Scheduled(cron = "0 17 8 * * ?") + //@Scheduled(cron = "*/30 * * * * ?") + @Async + public void syncGnssREightAmData() { + OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); + DateTimeRangeSo so = new DateTimeRangeSo(); + List list = service.lambdaQuery().list(); + List cds = list.stream().map(JcskGnssB::getCd).collect(Collectors.toList());//获取所有的测点编码 + //获取整编表数量 + Long count = jcskGnssREightAmMapper.selectCount(null); + List saveDatas = new ArrayList<>(); + List> syncData = new ArrayList<>(); + if (count > 0) { + //增量同步 + //取最新的一个数据的时间 + //获取每个cd的最新时间按cd进行同步 + for (String cd : cds) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(JcskGnssREightAm::getCd, cd) + .orderByDesc(JcskGnssREightAm::getTm).last("limit 1"); + osmoticQuerySo.setStationCodes(Arrays.asList(cd)); + JcskGnssREightAm jcskGnssREightAm = jcskGnssREightAmMapper.selectOne(wrapper); + + Calendar calendar = Calendar.getInstance(); + + if(jcskGnssREightAm != null){ + // 如果有历史数据,从最新时间的第二天开始同步 + String latestTm = jcskGnssREightAm.getTm(); + Date latestDate = DateUtil.convertStringToDate(latestTm); + calendar.setTime(latestDate); + calendar.add(Calendar.DAY_OF_MONTH, 1); // 加1天 + } else { + // 如果没有同步过数据,同步一个星期以前的数据 + calendar.add(Calendar.DAY_OF_MONTH, -7); // 减7天 + } + + // 设置时间范围为8:00:00开始 + calendar.set(Calendar.HOUR_OF_DAY, 8); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + Date start = calendar.getTime(); + so.setStart(start); + so.setEnd(new Date()); + osmoticQuerySo.setDateTimeRangeSo(so); + List shiftValueVo2s = jcskGnssRService.getBaseMapper().queryValue(osmoticQuerySo); + syncData.add(shiftValueVo2s); + } + + } else { + //全量同步 + osmoticQuerySo.setStationCodes(cds); + List shiftValueVo2s = jcskGnssRService.getBaseMapper().queryValue(osmoticQuerySo); + syncData.add(shiftValueVo2s); + } + + if(syncData.size()>0){ + //筛选出每天每个测点8-9点的数据 + for (List shiftValueVo2s : syncData) { + List closestTo8AMList = shiftValueVo2s.stream() + .filter(vo -> { + // 假设OsmoticShiftValueVo2中有getTm方法返回时间字符串 + String timePart = vo.getTm().substring(11, 16); // 提取HH:MM部分 + return timePart.compareTo("08:00") >= 0 && timePart.compareTo("09:00") <=0; + }) + .collect(Collectors.groupingBy(vo -> { + // 分组键:日期(yyyy-MM-dd) + 测点编码 + // 假设OsmoticShiftValueVo2中有getCd方法返回测点编码 + String date = vo.getTm().substring(0, 10); // 提取日期部分 + return date + "_" + vo.getCd(); + })) + .values().stream() + .map(group -> group.stream() + .min((vo1, vo2) -> { + String time1 = vo1.getTm().substring(11, 16); + String time2 = vo2.getTm().substring(11, 16); + + // 计算与08:00的时间差(分钟数) + int diff1 = Math.abs( + Integer.parseInt(time1.substring(0, 2)) * 60 + + Integer.parseInt(time1.substring(3, 5)) - + 8 * 60 + ); + + int diff2 = Math.abs( + Integer.parseInt(time2.substring(0, 2)) * 60 + + Integer.parseInt(time2.substring(3, 5)) - + 8 * 60 + ); + //获取最接近于八点的数据 + return Integer.compare(diff1, diff2); + }) + .orElse(null) + ) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + // 处理筛选后的数据 + for (OsmoticShiftValueVo2 data : closestTo8AMList) { + JcskGnssREightAm entity = new JcskGnssREightAm(); + BeanUtils.copyProperties(data, entity); + saveDatas.add(entity); + } + if(saveDatas.size()>0){ + jcskGnssREightAmMapper.insert(saveDatas); + } + saveDatas.clear(); + } + } + } + +} diff --git a/src/main/java/com/gunshi/project/hsz/timetask/PaDataTask.java b/src/main/java/com/gunshi/project/hsz/timetask/PaDataTask.java index eab9319..a2dd40a 100644 --- a/src/main/java/com/gunshi/project/hsz/timetask/PaDataTask.java +++ b/src/main/java/com/gunshi/project/hsz/timetask/PaDataTask.java @@ -44,7 +44,7 @@ import java.util.stream.Collectors; @EnableScheduling//开启定时任务 @Component @Slf4j -@Profile({"prod","dev"}) +@Profile({"prod","dev","local"}) public class PaDataTask { private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); diff --git a/src/main/java/com/gunshi/project/hsz/timetask/PptnRDataTask.java b/src/main/java/com/gunshi/project/hsz/timetask/PptnRDataTask.java new file mode 100644 index 0000000..842496c --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/timetask/PptnRDataTask.java @@ -0,0 +1,115 @@ +package com.gunshi.project.hsz.timetask; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.gunshi.project.hsz.model.StPptnR; +import com.gunshi.project.hsz.model.StPptnRD; +import com.gunshi.project.hsz.model.StPptnRH; +import com.gunshi.project.hsz.service.StPptnRDService; +import com.gunshi.project.hsz.service.StPptnRHService; +import com.gunshi.project.hsz.service.StPptnRRealService; +import com.gunshi.project.hsz.service.StPptnRService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + + +/** + * 降雨量数据 day表 和 hour表同不 + */ +@EnableScheduling//开启定时任务 +@Component +@Slf4j +@Profile({"prod","dev","local"}) +public class PptnRDataTask { + + // 实时雨情 + @Autowired + private StPptnRRealService stPptnRRealService; + + // 历史雨情 + @Autowired + private StPptnRService stPptnRService; + + // 小时雨情 + @Autowired + private StPptnRHService stPptnRHService; + + // 按天雨情 + @Autowired + private StPptnRDService stPptnRDService; + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + private static SimpleDateFormat sdfD = new SimpleDateFormat("yyyy-MM-dd"); + + + private static SimpleDateFormat sdfEight = new SimpleDateFormat("yyyy-MM-dd 08:00:00"); + + @Scheduled(fixedRate = 2, timeUnit = TimeUnit.MINUTES) + @Async + public void syncPptnRData(){ + try { + //获取所有站点最新的数据 + List stcdLastPptnData = stPptnRService.getStcdLastPptnData(); + if (CollectionUtils.isNotEmpty(stcdLastPptnData)){ + for (StPptnR stPptnR : stcdLastPptnData){ + String stcd = stPptnR.getStcd(); + // 整编降雨量天表数据 + //获取该站点在降雨量天表中最大的时间的数据 + StPptnRD maxDataD = stPptnRDService.getMaxData(stPptnR.getStcd()); + Date tmMax = maxDataD.getTm(); + maxDataD.setTm(sdf.parse(sdfEight.format(tmMax))); + //去历史表中查询大于该时间的数据 + List listD = stPptnRDService.reorganizePptnRDData(stPptnR.getStcd(), maxDataD); + if (CollectionUtils.isNotEmpty(listD)) { + if (listD.size() > 0) { + listD = listD.stream() + .map(user -> { + user.setYear(Integer.valueOf(sdfD.format(user.getTm()).substring(0, 4))); // 修改属性值 + return user; + }).collect(Collectors.toList()); + QueryWrapper deleteWrapper = new QueryWrapper<>(); + deleteWrapper.eq("stcd", stcd).ge("tm", tmMax); + stPptnRDService.remove(deleteWrapper); + stPptnRDService.saveBatch(listD); + } + } + + // 整编降雨量小时表数据 + StPptnRH maxDataH = stPptnRHService.getMaxData(stPptnR.getStcd()); + List listH = stPptnRHService.reorganizePptnRHData(stPptnR.getStcd(), maxDataH); + if (CollectionUtils.isNotEmpty(listH)) { + StPptnRH LastData = listH.get(0); + if (LastData.getTm().equals(maxDataH.getTm())) { + listH.remove(0); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("stcd", LastData.getStcd()).eq("tm", LastData.getTm()); + LastData.setDrp(LastData.getDrp()); + LastData.setChtm(maxDataH.getChtm()); + stPptnRHService.saveOrUpdate(LastData, updateWrapper); + } + if (listH.size() > 0) { + stPptnRHService.saveBatch(listH); + } + } + } + } + } catch (ParseException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/com/gunshi/project/hsz/timetask/StWaterDataTask.java b/src/main/java/com/gunshi/project/hsz/timetask/StWaterDataTask.java new file mode 100644 index 0000000..711f1ed --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/timetask/StWaterDataTask.java @@ -0,0 +1,308 @@ +package com.gunshi.project.hsz.timetask; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.project.hsz.model.StFlowR; +import com.gunshi.project.hsz.model.StWaterR; +import com.gunshi.project.hsz.model.StWaterRReal; +import com.gunshi.project.hsz.model.StWaterRReorganize; +import com.gunshi.project.hsz.service.StFlowRService; +import com.gunshi.project.hsz.service.StWaterRRealService; +import com.gunshi.project.hsz.service.StWaterRReorganizeService; +import com.gunshi.project.hsz.service.StWaterRService; +import com.gunshi.project.hsz.util.DateTransforUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.time.ZoneId; +import java.util.*; +import java.util.stream.Collectors; + + +@EnableScheduling//开启定时任务 +@Component +@Slf4j +@Profile({"prod","dev","local"}) +public class StWaterDataTask { + + + @Autowired + private StFlowRService stFlowRService; + + @Autowired + private StWaterRService stWaterRService; + + @Autowired + private StWaterRReorganizeService stWaterRReorganizeService; + + @Autowired + private StWaterRRealService stWaterRRealService; + + @Scheduled(fixedDelay = 75 * 60 * 1000) // 75分钟,单位毫秒 + @Async + public void syncFlowToWater(){ + List stcds = stFlowRService.getStcdList(); + //去供水量表查数据 + for (String stcd : stcds) { + List syncData = new ArrayList<>(); + StWaterR firstData = stWaterRService.selectNewDataByStcd(stcd); + if(firstData == null) { + //取全部数据 + List queryData = stFlowRService.getDataByStcdAndTm(stcd, null); + for (int i = 0; i < queryData.size(); i++) { + StWaterR entity = new StWaterR(); + entity.setStcd(stcd); + entity.setQ(queryData.get(i).getQ()); + entity.setTm(DateTransforUtil.transforLocalDateTimeToDate(queryData.get(i).getTm())); + BigDecimal v = BigDecimal.ZERO;//水量 + if (i == 0) { + v = BigDecimal.ZERO; + } else { + // 其他数据:与前一条数据的时间差 + long seconds = java.time.Duration.between( + queryData.get(i - 1).getTm(), + queryData.get(i).getTm() + ).getSeconds(); + v = queryData.get(i).getQ().multiply(new BigDecimal(seconds)); + } + entity.setV(v); + syncData.add(entity); + } + // 批量保存 + if (!syncData.isEmpty()) { + stWaterRService.saveBatch(syncData); + + //实时表更新 + StWaterR stWaterR = syncData.get(syncData.size() - 1); + StWaterRReal stWaterRReal = new StWaterRReal(); + BeanUtils.copyProperties(stWaterR, stWaterRReal); + boolean flag = stWaterRRealService.getBaseMapper().insertOrUpdate(stWaterRReal); + } + }else{ + List queryData = stFlowRService.getDataByStcdAndTm(stcd,firstData.getTm()); + for (int i = 0; i < queryData.size(); i++) { + StWaterR entity = new StWaterR(); + entity.setStcd(stcd); + entity.setQ(queryData.get(i).getQ()); + entity.setTm(DateTransforUtil.transforLocalDateTimeToDate(queryData.get(i).getTm())); + BigDecimal v = BigDecimal.ZERO;//水量 + if (i == 0) { + // 第一条数据:与firstData的时间差 + long seconds = java.time.Duration.between( + firstData.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(), + queryData.get(i).getTm() + ).getSeconds(); + v = queryData.get(i).getQ().multiply(new BigDecimal(seconds)); + }else { + // 其他数据:与前一条数据的时间差 + long seconds = java.time.Duration.between( + queryData.get(i-1).getTm(), + queryData.get(i).getTm() + ).getSeconds(); + v = queryData.get(i).getQ().multiply(new BigDecimal(seconds)); + } + entity.setV(v); + syncData.add(entity); + } + // 批量保存 + if (!syncData.isEmpty()) { + stWaterRService.saveBatch(syncData); + //实时表更新 + StWaterR stWaterR = syncData.get(syncData.size() - 1); + StWaterRReal stWaterRReal = new StWaterRReal(); + BeanUtils.copyProperties(stWaterR, stWaterRReal); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StWaterRReal::getStcd, stWaterR.getStcd()); + boolean remove = stWaterRRealService.remove(queryWrapper); + stWaterRRealService.save(stWaterRReal); + } + } + } + } + + @Scheduled(fixedDelay = 76 * 60 * 1000) // 75分钟,单位毫秒 + @Async + public void syncWaterToReorganize(){ + List list = stWaterRReorganizeService.lambdaQuery() + .orderByDesc(StWaterRReorganize::getTm).last("limit 1").list(); + List syncData = new ArrayList<>(); + + if(!list.isEmpty()){ + StWaterRReorganize stWaterRReorganize = list.get(0);//查询最新的一条整编数据 + String tm = stWaterRReorganize.getTm();//varchar 13 例如 2025-01-01 01 + + // 将字符串时间转换为Date用于查询 + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH"); + Date startTime; + try { + Date lastTime = formatter.parse(tm); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(lastTime); + calendar.add(Calendar.HOUR, 1); // 从下个小时开始 + startTime = calendar.getTime(); + } catch (Exception e) { + log.error("时间转换错误", e); + return; + } + + // 查询st_water_r表中大于该时间的数据 + List waterData = stWaterRService.lambdaQuery() + .ge(StWaterR::getTm, startTime) + .orderByAsc(StWaterR::getTm) + .list(); + + // 按小时分组,每个小时每个站点取最新记录 + Map> hourlyData = waterData.stream() + .collect(Collectors.groupingBy( + data -> { + // 按小时分组,格式:yyyy-MM-dd HH + SimpleDateFormat hourFormatter = new SimpleDateFormat("yyyy-MM-dd HH"); + return hourFormatter.format(data.getTm()); + }, + Collectors.groupingBy( + StWaterR::getStcd, + Collectors.collectingAndThen( + Collectors.maxBy(Comparator.comparing(StWaterR::getTm)), + Optional::get + ) + ) + )); + + // 处理每个小时的数据 + for (Map.Entry> hourEntry : hourlyData.entrySet()) { + String hourKey = hourEntry.getKey(); // 格式:2025-10-16 16 + Map stationData = hourEntry.getValue(); + + StWaterRReorganize reorganize = new StWaterRReorganize(); + reorganize.setTm(hourKey); + + // 获取三个站点的数据(根据实际情况调整站点代码) + StWaterR ecologyData = stationData.get("333"); // 生态供水 + StWaterR mci1Data = stationData.get("444"); // 干渠灌溉1 + StWaterR mci2Data = stationData.get("555"); // 干渠灌溉2 + + // 设置生态供水数据 + if (ecologyData != null) { + reorganize.setEcologyQ(ecologyData.getQ()); + reorganize.setEcologyV(ecologyData.getV()); + } else { + reorganize.setEcologyQ(BigDecimal.ZERO); + reorganize.setEcologyV(BigDecimal.ZERO); + } + + // 设置干渠灌溉1数据 + if (mci1Data != null) { + reorganize.setMci1Q(mci1Data.getQ()); + reorganize.setMci1V(mci1Data.getV()); + } else { + reorganize.setMci1Q(BigDecimal.ZERO); + reorganize.setMci1V(BigDecimal.ZERO); + } + + // 设置干渠灌溉2数据 + if (mci2Data != null) { + reorganize.setMci2Q(mci2Data.getQ()); + reorganize.setMci2V(mci2Data.getV()); + } else { + reorganize.setMci2Q(BigDecimal.ZERO); + reorganize.setMci2V(BigDecimal.ZERO); + } + + // 计算水量小计(三个站点的总和) + BigDecimal sumV = reorganize.getEcologyV() + .add(reorganize.getMci1V()) + .add(reorganize.getMci2V()); + reorganize.setSumV(sumV); + + syncData.add(reorganize); + } + + } else { + //全量同步 + List allWaterData = stWaterRService.lambdaQuery() + .orderByAsc(StWaterR::getTm) + .list(); + + // 按小时分组,每个小时每个站点取最新记录 + Map> hourlyData = allWaterData.stream() + .collect(Collectors.groupingBy( + data -> { + SimpleDateFormat hourFormatter = new SimpleDateFormat("yyyy-MM-dd HH"); + return hourFormatter.format(data.getTm()); + }, + Collectors.groupingBy( + StWaterR::getStcd, + Collectors.collectingAndThen( + Collectors.maxBy(Comparator.comparing(StWaterR::getTm)), + Optional::get + ) + ) + )); + + // 处理每个小时的数据 + for (Map.Entry> hourEntry : hourlyData.entrySet()) { + String hourKey = hourEntry.getKey(); + Map stationData = hourEntry.getValue(); + + StWaterRReorganize reorganize = new StWaterRReorganize(); + reorganize.setTm(hourKey); + + // 获取三个站点的数据 + StWaterR ecologyData = stationData.get("333"); // 生态供水 + StWaterR mci1Data = stationData.get("444"); // 干渠灌溉1 + StWaterR mci2Data = stationData.get("555"); // 干渠灌溉2 + + // 设置生态供水数据 + if (ecologyData != null) { + reorganize.setEcologyQ(ecologyData.getQ()); + reorganize.setEcologyV(ecologyData.getV()); + } else { + reorganize.setEcologyQ(BigDecimal.ZERO); + reorganize.setEcologyV(BigDecimal.ZERO); + } + + // 设置干渠灌溉1数据 + if (mci1Data != null) { + reorganize.setMci1Q(mci1Data.getQ()); + reorganize.setMci1V(mci1Data.getV()); + } else { + reorganize.setMci1Q(BigDecimal.ZERO); + reorganize.setMci1V(BigDecimal.ZERO); + } + + // 设置干渠灌溉2数据 + if (mci2Data != null) { + reorganize.setMci2Q(mci2Data.getQ()); + reorganize.setMci2V(mci2Data.getV()); + } else { + reorganize.setMci2Q(BigDecimal.ZERO); + reorganize.setMci2V(BigDecimal.ZERO); + } + + // 计算水量小计(三个站点的总和) + BigDecimal sumV = reorganize.getEcologyV() + .add(reorganize.getMci1V()) + .add(reorganize.getMci2V()); + reorganize.setSumV(sumV); + + syncData.add(reorganize); + } + } + + // 批量保存数据 + if (!syncData.isEmpty()) { + stWaterRReorganizeService.saveBatch(syncData); + } + } + + + + +} diff --git a/src/main/java/com/gunshi/project/hsz/util/DateTransforUtil.java b/src/main/java/com/gunshi/project/hsz/util/DateTransforUtil.java new file mode 100644 index 0000000..fd93a58 --- /dev/null +++ b/src/main/java/com/gunshi/project/hsz/util/DateTransforUtil.java @@ -0,0 +1,190 @@ +package com.gunshi.project.hsz.util; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.Date; + +public class DateTransforUtil { + + // 默认日期时间格式 + private static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; + private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd"; + + /** + * 将Date转换为字符串(默认格式:yyyy-MM-dd HH:mm:ss) + */ + public static String transforDateToString(Date date) { + if (date == null) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT); + return transforDateToString(date, formatter); + } + + /** + * 将Date转换为字符串(指定格式) + */ + public static String transforDateToString(Date date, DateTimeFormatter formatter) { + if (date == null) { + return null; + } + LocalDateTime localDateTime = date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + return localDateTime.format(formatter); + } + + /** + * 将Date转换为字符串(指定格式字符串) + */ + public static String transforDateToString(Date date, String pattern) { + if (date == null) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); + return transforDateToString(date, formatter); + } + + /** + * 将字符串转换为Date(指定格式) + */ + public static Date transforStringToDate(String date, DateTimeFormatter formatter) { + if (date == null || date.trim().isEmpty()) { + return null; + } + LocalDateTime localDateTime = LocalDateTime.parse(date, formatter); + return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); + } + + /** + * 将字符串转换为Date(默认格式:yyyy-MM-dd HH:mm:ss) + */ + public static Date transforStringToDate(String date) { + if (date == null || date.trim().isEmpty()) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT); + return transforStringToDate(date, formatter); + } + + /** + * 将字符串转换为Date(指定格式字符串) + */ + public static Date transforStringToDate(String date, String pattern) { + if (date == null || date.trim().isEmpty()) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); + return transforStringToDate(date, formatter); + } + + /** + * 将LocalDateTime转换为字符串(默认格式:yyyy-MM-dd HH:mm:ss) + */ + public static String transforLocalDateTimeToString(LocalDateTime date) { + if (date == null) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT); + return date.format(formatter); + } + + /** + * 将LocalDateTime转换为字符串(指定格式) + */ + public static String transforLocalDateTimeToString(LocalDateTime date, DateTimeFormatter formatter) { + if (date == null) { + return null; + } + return date.format(formatter); + } + + /** + * 将LocalDateTime转换为字符串(指定格式字符串) + */ + public static String transforLocalDateTimeToString(LocalDateTime date, String pattern) { + if (date == null) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); + return date.format(formatter); + } + + /** + * 将字符串转换为LocalDateTime(默认格式:yyyy-MM-dd HH:mm:ss) + */ + public static LocalDateTime transforStringToLocalDateTime(String date) { + if (date == null || date.trim().isEmpty()) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT); + return LocalDateTime.parse(date, formatter); + } + + /** + * 将字符串转换为LocalDateTime(指定格式) + */ + public static LocalDateTime transforStringToLocalDateTime(String date, DateTimeFormatter formatter) { + if (date == null || date.trim().isEmpty()) { + return null; + } + return LocalDateTime.parse(date, formatter); + } + + /** + * 将字符串转换为LocalDateTime(指定格式字符串) + */ + public static LocalDateTime transforStringToLocalDateTime(String date, String pattern) { + if (date == null || date.trim().isEmpty()) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); + return LocalDateTime.parse(date, formatter); + } + + /** + * 将Date转换为LocalDateTime + */ + public static LocalDateTime transforDateToLocalDateTime(Date date) { + if (date == null) { + return null; + } + return date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + } + + /** + * 将LocalDateTime转换为Date + */ + public static Date transforLocalDateTimeToDate(LocalDateTime date) { + if (date == null) { + return null; + } + return Date.from(date.atZone(ZoneId.systemDefault()).toInstant()); + } + + /** + * 将LocalDate转换为Date + */ + public static Date transforLocalDateToDate(LocalDate date) { + if (date == null) { + return null; + } + return Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); + } + + /** + * 将Date转换为LocalDate + */ + public static LocalDate transforDateToLocalDate(Date date) { + if (date == null) { + return null; + } + return date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + } +} \ No newline at end of file