diff --git a/hzims-service/suichang/pom.xml b/hzims-service/suichang/pom.xml
new file mode 100644
index 0000000..90c6d8d
--- /dev/null
+++ b/hzims-service/suichang/pom.xml
@@ -0,0 +1,81 @@
+
+
+ 4.0.0
+
+ com.hnac.hzims
+ hzims-service
+ 4.0.0-SNAPSHOT
+
+
+ suichang
+
+
+ 8
+ 8
+ UTF-8
+
+
+
+
+
+ org.springblade
+ blade-core-boot
+
+
+ org.springblade
+ blade-starter-swagger
+
+
+ org.springblade
+ blade-starter-oss-all
+
+
+ com.baomidou
+ dynamic-datasource-spring-boot-starter
+
+
+ org.springblade
+ blade-core-test
+ test
+
+
+ org.springblade
+ blade-core-auto
+ compile
+
+
+ com.hnac.hzims
+ suichang-api
+ ${hzims.project.version}
+
+
+
+ com.hnac.hzinfo.data
+ hzinfo-data-sdk
+
+
+
+ org.springblade
+ blade-resource-api
+
+
+
+ com.hnac.hzims
+ hzims-operational-api
+ ${hzims.project.version}
+
+
+ com.xuxueli
+ xxl-job-core
+ 2.1.2
+
+
+ com.hnac.hzims
+ message-alarm-api
+ ${hzims.project.version}
+
+
+
+
\ No newline at end of file
diff --git a/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/SuiChangApplication.java b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/SuiChangApplication.java
new file mode 100644
index 0000000..ad2abbf
--- /dev/null
+++ b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/SuiChangApplication.java
@@ -0,0 +1,32 @@
+package com.hnac.hzims.suichang;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springblade.core.cloud.feign.EnableBladeFeign;
+import org.springblade.core.launch.BladeApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.cloud.client.SpringCloudApplication;
+import org.springframework.context.annotation.ComponentScan;
+
+@EnableBladeFeign(basePackages = {"org.springblade", "com.hnac"})
+@SpringCloudApplication
+@MapperScan("com.hnac.hzims.**.mapper.**")
+@ComponentScan(basePackages = {"com.hnac.hzims.*"})
+public class SuiChangApplication extends SpringBootServletInitializer {
+ public final static String APP_NAME = "suichang";
+
+// static {
+// System.setProperty("spring.cloud.nacos.discovery.server-addr", "http://43.139.178.151:8848");
+// System.setProperty("spring.cloud.nacos.config.server-addr", "http://43.139.178.151:8848");
+// System.setProperty("spring.cloud.nacos.username", "nacos");
+// System.setProperty("spring.cloud.nacos.password", "nacos");
+// }
+ public static void main(String[] args) {
+ BladeApplication.run(APP_NAME, SuiChangApplication.class, args);
+ }
+
+ @Override
+ protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
+ return BladeApplication.createSpringApplicationBuilder(builder, APP_NAME, SuiChangApplication.class);
+ }
+}
\ No newline at end of file
diff --git a/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/EcologicalFlowController.java b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/EcologicalFlowController.java
new file mode 100644
index 0000000..83dc86c
--- /dev/null
+++ b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/EcologicalFlowController.java
@@ -0,0 +1,111 @@
+package com.hnac.hzims.suichang.controller;
+
+import com.hnac.hzims.suichang.service.EcologicalFlowService;
+import com.hnac.hzims.suichang.service.RealMonitorService;
+import com.hnac.hzims.suichang.util.MemoryPagination;
+import com.hnac.hzims.suichang.vo.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 遂昌生态流量
+ *
+ * @author liangfan
+ */
+@RestController
+@RequestMapping("/ecologicalFlow")
+@Api(value = "遂昌生态流量", tags = "遂昌生态流量接口")
+public class EcologicalFlowController {
+
+ @Autowired
+ private EcologicalFlowService ecologicalFlowService;
+
+ @Autowired
+ private RealMonitorService realMonitorService;
+
+ @RequestMapping(value = "/getEcologicalFlowIndexInfo", method = {RequestMethod.POST})
+ @ApiOperation(notes = "遂昌生态流量", value = "遂昌生态流量")
+ public R getEcologicalFlowIndexInfo() {
+ EcologicalFlowVo vo = ecologicalFlowService.getEcologicalFlowIndexInfo();
+ return R.data(vo);
+ }
+
+ @RequestMapping(value = "/getAvgMonitorInfo", method = {RequestMethod.POST})
+ @ApiOperation(notes = "实时监测日均流量", value = "实时监测日均流量")
+ public R getAvgMonitorInfo() {
+ return R.data(realMonitorService.getAvgMonitorInfo());
+ }
+
+ @RequestMapping(value = "/getAvgMonitorCountInfo", method = {RequestMethod.POST})
+ @ApiOperation(notes = "生态流量监管-日均流量", value = "生态流量监管-日均流量")
+ public R getAvgMonitorCountInfo(@RequestBody AvgMonitorReq req) {
+ List resultList = realMonitorService.getAvgMonitorCountInfo(req);
+ // 内存分页
+ HashMap map = new HashMap<>();
+ resultList = MemoryPagination.pagination(resultList, req.getCurrent(), req.getSize());
+ map.put("records", resultList);
+ map.put("total", resultList.size());
+ return R.data(map);
+ }
+
+ @RequestMapping(value = "/getRealMonitorInfo", method = {RequestMethod.GET})
+ @ApiOperation(notes = "实时流量页面", value = "实时流量页面")
+ public R getRealMonitorInfo(String name, Query query) {
+ RealMonitorRes res = realMonitorService.getRealMonitorInfo(name);
+ List resultList = res.getRealMonitorVos();
+ HashMap map = new HashMap<>();
+ resultList = MemoryPagination.pagination(resultList, query.getCurrent(), query.getSize());
+ map.put("records", resultList);
+ map.put("total", resultList.size());
+ map.put("reportCount", res.getReportCount());
+ return R.data(map);
+ }
+
+ @RequestMapping(value = "/getRealMonitorSingleInfo", method = {RequestMethod.POST})
+ @ApiOperation(notes = "单个电站实时流量明细", value = "单个电站实时流量明细")
+ public R getRealMonitorSingleInfo(@RequestBody RealMonitorSingleInfoReq req) {
+ List resultList = realMonitorService.getRealMonitorSingleInfo(req);
+ HashMap map = new HashMap<>();
+ resultList = MemoryPagination.pagination(resultList, req.getCurrent(), req.getSize());
+ map.put("records", resultList);
+ map.put("total", resultList.size());
+ return R.data(map);
+ }
+
+ @RequestMapping(value = "/exportRealMonitorInfo", method = {RequestMethod.GET})
+ @ApiOperation(notes = "导出实时流量页面数据", value = "导出实时流量页面数据")
+ public void exportRealMonitorInfo(HttpServletResponse response, String name) {
+ realMonitorService.exportRealMonitorInfo(response, name);
+ }
+
+ @RequestMapping(value = "/exportRealMonitorSingleInfo", method = {RequestMethod.GET})
+ @ApiOperation(notes = "导出单个电站实时流量明细", value = "导出单个电站实时流量明细")
+ public void exportRealMonitorSingleInfo(HttpServletResponse response, RealMonitorSingleInfoReq req) {
+ realMonitorService.exportRealMonitorSingleInfo(response, req);
+ }
+
+ @RequestMapping(value = "/exportAvgMonitorCountInfo", method = {RequestMethod.GET})
+ @ApiOperation(notes = "导出生态流量监管-日均流量", value = "导出生态流量监管-日均流量")
+ public void exportAvgMonitorCountInfo(HttpServletResponse response, AvgMonitorReq req) {
+ realMonitorService.exportAvgMonitorCountInfo(response, req);
+ }
+
+ @RequestMapping(value = "/getRealData", method = {RequestMethod.GET})
+ public R test(String deviceCode) {
+ return R.data(realMonitorService.getRealData(deviceCode));
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/ExamController.java b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/ExamController.java
new file mode 100644
index 0000000..e42c01e
--- /dev/null
+++ b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/ExamController.java
@@ -0,0 +1,72 @@
+package com.hnac.hzims.suichang.controller;
+
+import com.hnac.hzims.common.logs.utils.StringUtils;
+import com.hnac.hzims.suichang.service.ExamStationDataService;
+import com.hnac.hzims.suichang.util.MemoryPagination;
+import com.hnac.hzims.suichang.vo.ExamStationFlowDataReq;
+import com.hnac.hzims.suichang.vo.ExamStationFlowReportDayVo;
+import com.hnac.hzims.suichang.vo.ExamStationFlowReportVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Author: liangfan
+ * @Date: 2024-03-15 15:08
+ * @Description:
+ */
+@RestController
+@RequestMapping("/exam")
+@Api(value = "遂昌生态流量-考核管理", tags = "遂昌生态流量-考核管理")
+public class ExamController {
+
+ @Autowired
+ private ExamStationDataService examStationDataService;
+
+ @RequestMapping(value = "/examStationFlowReportByTime", method = {RequestMethod.GET})
+ @ApiOperation(notes = "电站月考核", value = "电站月考核")
+ public R examStatisticsFlowReportByTime(ExamStationFlowDataReq req) {
+ List resultList =
+ examStationDataService.examStationFlowReportByTime(req);
+ HashMap map = new HashMap<>();
+ resultList = MemoryPagination.pagination(resultList, req.getCurrent(), req.getSize());
+ map.put("records", resultList);
+ map.put("total", resultList.size());
+ return R.data(map);
+ }
+
+
+ @RequestMapping(value = "/exportExamStationFlowReportByTime", method = {RequestMethod.GET})
+ @ApiOperation(notes = "电站月考核", value = "电站月考核")
+ public void exportExamStationFlowReportByTime(HttpServletResponse response, ExamStationFlowDataReq req) {
+ examStationDataService.exportExamStationFlowReportByTime(response, req);
+ }
+
+
+ @RequestMapping(value = "/examStationFlowReportOfDay", method = {RequestMethod.GET})
+ @ApiOperation(notes = "电站日考核", value = "电站日考核")
+ public R examStationFlowReportOfDay(ExamStationFlowDataReq req) {
+ List resultList = examStationDataService.examStationFlowReportOfDay(req);
+ String isPass = req.getIsPass();
+ // 条件过滤
+ if (StringUtils.isNotBlank(req.getIsPass())) {
+ resultList =
+ resultList.stream().filter(o -> o.getStatus().equals(isPass)).collect(Collectors.toList());
+ }
+ HashMap map = new HashMap<>();
+ resultList = MemoryPagination.pagination(resultList, req.getCurrent(), req.getSize());
+ map.put("records", resultList);
+ map.put("total", resultList.size());
+ return R.data(map);
+ }
+
+}
diff --git a/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/FlowWarnController.java b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/FlowWarnController.java
new file mode 100644
index 0000000..07113f3
--- /dev/null
+++ b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/FlowWarnController.java
@@ -0,0 +1,41 @@
+package com.hnac.hzims.suichang.controller;
+
+import com.hnac.hzims.suichang.service.FlowWarnService;
+import com.hnac.hzims.suichang.vo.FlowWarnQueryDTO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 遂昌生态流量
+ *
+ * @author liangfan
+ */
+@RestController
+@RequestMapping("/flowWarn")
+@Api(value = "遂昌生态流量预警信息", tags = "遂昌生态流量预警信息")
+public class FlowWarnController {
+ @Autowired
+ private FlowWarnService flowWarnService;
+
+ @RequestMapping(value = "/getFlowWarnList", method = {RequestMethod.GET})
+ @ApiOperation(notes = "大屏遂昌生态流量预警信息", value = "大屏遂昌生态流量预警信息")
+ public R getFlowWarnList(FlowWarnQueryDTO dto, Query query) {
+ return R.data(flowWarnService.getFlowWarnList(dto, query));
+ }
+
+
+ @RequestMapping(value = "/warningPush", method = {RequestMethod.GET})
+ @ApiOperation(notes = "大屏遂昌生态流量预警信息", value = "大屏遂昌生态流量预警信息")
+ public R warningPush(FlowWarnQueryDTO dto) {
+ return R.data(flowWarnService.warningPush(dto));
+ }
+
+
+}
\ No newline at end of file
diff --git a/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/ImageAndVideoController.java b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/ImageAndVideoController.java
new file mode 100644
index 0000000..4888796
--- /dev/null
+++ b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/ImageAndVideoController.java
@@ -0,0 +1,69 @@
+package com.hnac.hzims.suichang.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.hnac.hzims.suichang.service.ImageAndVideoService;
+import com.hnac.hzims.suichang.vo.ImageReq;
+import com.hnac.hzims.suichang.vo.MissingImagesRes;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author: liangfan
+ * @Date: 2024-03-15 15:08
+ * @Description:
+ */
+@RestController
+@RequestMapping("/imageAndVideo")
+@Api(value = "图片和视频", tags = "图片和视频")
+public class ImageAndVideoController {
+
+ @Autowired
+ private ImageAndVideoService imageAndVideoService;
+
+ @RequestMapping(value = "/getMissingImagesInfo", method = {RequestMethod.GET})
+ @ApiOperation(notes = "照片缺失率", value = "照片缺失率")
+ public R> getMissingImagesInfo(ImageReq req, Query query) {
+ return R.data(imageAndVideoService.getMissingImagesInfo(req, query));
+ }
+
+ @RequestMapping(value = "/missingPush", method = {RequestMethod.GET})
+ @ApiOperation(notes = "照片缺失日期及数据", value = "照片缺失日期及数据")
+ public R missingPush(ImageReq req) {
+ return R.data(imageAndVideoService.missingPush(req));
+ }
+
+ @RequestMapping(value = "/getImageInfoStatus", method = {RequestMethod.POST})
+ @ApiOperation(notes = "照片缺失率详情", value = "照片缺失率详情")
+ public R getImageInfoStatus(@RequestBody ImageReq req) {
+ return R.data(imageAndVideoService.getImageInfoStatus(req));
+ }
+
+ @RequestMapping(value = "/getImageInfoByDeviceCode", method = {RequestMethod.GET})
+ @ApiOperation(notes = "根据DeviceCode及时间查询照片", value = "根据DeviceCode及时间查询照片")
+ public R getImageInfoByDeviceCode(ImageReq req, Query query) {
+ return R.data(imageAndVideoService.getImageInfoByDeviceCode(req, query));
+ }
+
+
+ @RequestMapping(value = "/selectNewestImage", method = {RequestMethod.GET})
+ @ApiOperation(notes = "泄放照片", value = "泄放照片")
+ public R selectNewestImage(ImageReq req, Query query) {
+ return R.data(imageAndVideoService.selectNewestImage(req, query));
+ }
+
+
+ @RequestMapping(value = "/getStationVideoType", method = {RequestMethod.GET, RequestMethod.POST})
+ @ApiOperation(value = "获取视频byType", notes = "获取视频byType")
+ public R getStationTree(String videoType) {
+ return R.data(imageAndVideoService.getStationVideoType(videoType));
+ }
+
+
+}
diff --git a/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/StatisticsFlowDataController.java b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/StatisticsFlowDataController.java
new file mode 100644
index 0000000..d6477e7
--- /dev/null
+++ b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/controller/StatisticsFlowDataController.java
@@ -0,0 +1,56 @@
+package com.hnac.hzims.suichang.controller;
+
+import com.hnac.hzims.suichang.service.StatisticsDataService;
+import com.hnac.hzims.suichang.util.MemoryPagination;
+import com.hnac.hzims.suichang.vo.StatisticsFlowDataDetailVo;
+import com.hnac.hzims.suichang.vo.StatisticsFlowDataReq;
+import com.hnac.hzims.suichang.vo.StatisticsFlowDataVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @Author: liangfan
+ * @Date: 2024-03-14 16:18
+ * @Description:
+ */
+@RestController
+@RequestMapping("/statisticsData")
+@Api(value = "遂昌生态流量-统计报表", tags = "遂昌生态流量-统计报表")
+public class StatisticsFlowDataController {
+
+ @Autowired
+ private StatisticsDataService statisticsDataService;
+
+ @RequestMapping(value = "/statisticsFlowReportByTime", method = {RequestMethod.GET})
+ @ApiOperation(notes = "", value = "")
+ public R statisticsFlowReportByTime(StatisticsFlowDataReq req) {
+ StatisticsFlowDataVo res = statisticsDataService.statisticsFlowReportByTime(req);
+ List resultList = res.getDetail();
+ HashMap map = new HashMap<>();
+ // 内存分页
+ resultList = MemoryPagination.pagination(resultList, req.getCurrent(), req.getSize());
+ map.put("areaName", res.getAreaName());
+ map.put("examCount", res.getExamCount());
+ map.put("passCount", res.getPassCount());
+ map.put("passPre", res.getPassPre());
+ map.put("records", resultList);
+ map.put("total", resultList.size());
+ return R.data(map);
+ }
+
+ @RequestMapping(value = "/exportStatisticsFlowReportByTime", method = {RequestMethod.GET})
+ @ApiOperation(notes = "", value = "")
+ public void exportStatisticsFlowReportByTime(HttpServletResponse response, StatisticsFlowDataReq req) {
+ statisticsDataService.exportStatisticsFlowReportByTime(response, req);
+ }
+
+}
diff --git a/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/feign/SuichangClient.java b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/feign/SuichangClient.java
new file mode 100644
index 0000000..6997961
--- /dev/null
+++ b/hzims-service/suichang/src/main/java/com/hnac/hzims/suichang/feign/SuichangClient.java
@@ -0,0 +1,43 @@
+package com.hnac.hzims.suichang.feign;
+
+import com.hnac.hzims.suichang.mapper.EcologicalFlowMapper;
+import com.hnac.hzims.suichang.service.EcologicalFlowService;
+import com.hnac.hzims.suichang.vo.StationQueryReq;
+import com.hnac.hzims.suichang.vo.StationVo;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/suichangClient")
+@Slf4j
+@RequiredArgsConstructor
+public class SuichangClient implements ISuichangClient {
+
+ @Autowired
+ private EcologicalFlowMapper ecologicalFlowMapper;
+ @Autowired
+ private EcologicalFlowService ecologicalFlowService;
+
+ @Override
+ @PostMapping(GET_STATION_BY_REQ)
+ public List getStationListByReq(StationQueryReq req) {
+ return ecologicalFlowMapper.getStationListByReq(req);
+ }
+
+ @Override
+ @PostMapping(GET_DATA)
+ public List