Procházet zdrojové kódy

内蒙山洪运维系统-项目迁移到公司GIT服务器

dylan před 2 roky
rodič
revize
d857528849
100 změnil soubory, kde provedl 5493 přidání a 1460 odebrání
  1. 0 21
      .editorconfig
  2. 0 27
      .gitignore
  3. 2 2
      README.md
  4. binární
      lib/netcdfAll-5.5.3.jar
  5. 41 0
      src/main/java/org/springblade/config/MultipartConfig.java
  6. 2 0
      src/main/java/org/springblade/constant/BusinessConstant.java
  7. 43 0
      src/main/java/org/springblade/constant/RedisBusinessConstant.java
  8. 3 2
      src/main/java/org/springblade/enums/WarningStatusEnum.java
  9. 0 111
      src/main/java/org/springblade/etl/EtlTaskManager.java
  10. 0 866
      src/main/java/org/springblade/etl/controller/TestController.java
  11. 1 1
      src/main/java/org/springblade/etl/mapper/EtlAdCdMapper.java
  12. 7 2
      src/main/java/org/springblade/etl/mapper/EtlAdCdMapper.xml
  13. 1 1
      src/main/java/org/springblade/etl/service/IEtlAdCdService.java
  14. 2 2
      src/main/java/org/springblade/etl/service/impl/EtlAdCdServiceImpl.java
  15. 337 0
      src/main/java/org/springblade/jobtask/RainDataCountProcessor.java
  16. 725 0
      src/main/java/org/springblade/jobtask/ReportCountProcessor.java
  17. 279 0
      src/main/java/org/springblade/jobtask/RtuUpCountProcessor.java
  18. 40 0
      src/main/java/org/springblade/jobtask/TaskManager.java
  19. 379 0
      src/main/java/org/springblade/jobtask/TestDataProcessor.java
  20. 416 0
      src/main/java/org/springblade/jobtask/WarnCheckProcessor.java
  21. 13 4
      src/main/java/org/springblade/modules/baseinfo/project/wrapper/ProjectInfoWrapper.java
  22. 6 2
      src/main/java/org/springblade/modules/baseinfo/region/controller/BaseInfoRegionController.java
  23. 15 12
      src/main/java/org/springblade/modules/baseinfo/rtu/controller/RtuBaseInfoController.java
  24. 4 0
      src/main/java/org/springblade/modules/baseinfo/rtu/dto/RtuInfoDTO.java
  25. 2 2
      src/main/java/org/springblade/modules/baseinfo/rtu/mapper/RtuInfoMapper.xml
  26. 9 5
      src/main/java/org/springblade/modules/baseinfo/rtu/wrapper/RtuInfoWrapper.java
  27. 198 46
      src/main/java/org/springblade/modules/business/check/order/controller/RtuCheckOrderController.java
  28. 31 1
      src/main/java/org/springblade/modules/business/check/order/dto/CheckOrderInfoDTO.java
  29. 40 14
      src/main/java/org/springblade/modules/business/check/order/entity/CheckOrderInfoEntity.java
  30. 2 1
      src/main/java/org/springblade/modules/business/check/order/mapper/RtuCheckOrderMapper.java
  31. 159 43
      src/main/java/org/springblade/modules/business/check/order/mapper/RtuCheckOrderMapper.xml
  32. 4 1
      src/main/java/org/springblade/modules/business/check/order/service/IRtuCheckOrderService.java
  33. 8 12
      src/main/java/org/springblade/modules/business/check/order/service/impl/RtuCheckOrderServiceImpl.java
  34. 5 1
      src/main/java/org/springblade/modules/business/check/order/vo/CheckOrderCountVO.java
  35. 45 6
      src/main/java/org/springblade/modules/business/check/order/vo/CheckOrderInfoVO.java
  36. 7 0
      src/main/java/org/springblade/modules/business/check/order/vo/OrgCheckOrderCountVO.java
  37. 106 129
      src/main/java/org/springblade/modules/business/check/order/wrapper/RtuCheckOrderWrapper.java
  38. 40 15
      src/main/java/org/springblade/modules/business/check/process/controller/RtuOrderProcessController.java
  39. 26 6
      src/main/java/org/springblade/modules/business/check/process/mapper/RtuOrderProcessMapper.java
  40. 46 4
      src/main/java/org/springblade/modules/business/check/process/mapper/RtuOrderProcessMapper.xml
  41. 8 0
      src/main/java/org/springblade/modules/business/check/process/service/IRtuOrderProcessService.java
  42. 5 0
      src/main/java/org/springblade/modules/business/check/process/service/impl/RtuOrderProcessServiceImpl.java
  43. 44 0
      src/main/java/org/springblade/modules/business/check/process/vo/OrderProcessInfoVO.java
  44. 13 3
      src/main/java/org/springblade/modules/business/check/process/wrapper/RtuOrderProcessWrapper.java
  45. 40 1
      src/main/java/org/springblade/modules/business/data/controller/RtuDataRainController.java
  46. 1 1
      src/main/java/org/springblade/modules/business/data/controller/RtuDataRiverController.java
  47. 115 0
      src/main/java/org/springblade/modules/business/data/controller/RtuDataWaterLevelController.java
  48. 3 0
      src/main/java/org/springblade/modules/business/data/dto/RtuDataRainDTO.java
  49. 24 0
      src/main/java/org/springblade/modules/business/data/dto/RtuDataRsvrDTO.java
  50. 75 0
      src/main/java/org/springblade/modules/business/data/dto/RtuDataWaterLevelDTO.java
  51. 142 0
      src/main/java/org/springblade/modules/business/data/entity/RtuDataGroundStoreEntity.java
  52. 86 0
      src/main/java/org/springblade/modules/business/data/entity/RtuDataRainH12Entity.java
  53. 86 0
      src/main/java/org/springblade/modules/business/data/entity/RtuDataRainH1Entity.java
  54. 86 0
      src/main/java/org/springblade/modules/business/data/entity/RtuDataRainH24Entity.java
  55. 86 0
      src/main/java/org/springblade/modules/business/data/entity/RtuDataRainH3Entity.java
  56. 86 0
      src/main/java/org/springblade/modules/business/data/entity/RtuDataRainH6Entity.java
  57. 86 0
      src/main/java/org/springblade/modules/business/data/entity/RtuDataRainStoreEntity.java
  58. 79 0
      src/main/java/org/springblade/modules/business/data/entity/RtuDataRiverStoreEntity.java
  59. 79 0
      src/main/java/org/springblade/modules/business/data/entity/RtuDataRsvrStoreEntity.java
  60. 93 0
      src/main/java/org/springblade/modules/business/data/entity/RtuDataWaterLevelEntity.java
  61. 93 0
      src/main/java/org/springblade/modules/business/data/entity/RtuDataWaterLevelStoreEntity.java
  62. 1 3
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataGroundMapper.java
  63. 0 28
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataGroundMapper.xml
  64. 31 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataGroundStoreMapper.java
  65. 69 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataGroundStoreMapper.xml
  66. 24 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH12Mapper.java
  67. 15 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH12Mapper.xml
  68. 24 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH1Mapper.java
  69. 15 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH1Mapper.xml
  70. 23 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH24Mapper.java
  71. 15 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH24Mapper.xml
  72. 23 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH3Mapper.java
  73. 15 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH3Mapper.xml
  74. 23 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH6Mapper.java
  75. 15 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH6Mapper.xml
  76. 0 3
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainMapper.java
  77. 34 31
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainMapper.xml
  78. 33 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainStoreMapper.java
  79. 104 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainStoreMapper.xml
  80. 3 1
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRiverMapper.java
  81. 5 31
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRiverMapper.xml
  82. 34 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRiverStoreMapper.java
  83. 74 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRiverStoreMapper.xml
  84. 34 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRsvrStoreMapper.java
  85. 48 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataRsvrStoreMapper.xml
  86. 35 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataWaterLevelMapper.java
  87. 72 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataWaterLevelMapper.xml
  88. 32 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataWaterLevelStoreMapper.java
  89. 81 0
      src/main/java/org/springblade/modules/business/data/mapper/RtuDataWaterLevelStoreMapper.xml
  90. 1 3
      src/main/java/org/springblade/modules/business/data/service/IRtuDataGroundService.java
  91. 33 0
      src/main/java/org/springblade/modules/business/data/service/IRtuDataGroundStoreService.java
  92. 25 0
      src/main/java/org/springblade/modules/business/data/service/IRtuDataRainH12Service.java
  93. 25 0
      src/main/java/org/springblade/modules/business/data/service/IRtuDataRainH1Service.java
  94. 24 0
      src/main/java/org/springblade/modules/business/data/service/IRtuDataRainH24Service.java
  95. 24 0
      src/main/java/org/springblade/modules/business/data/service/IRtuDataRainH3Service.java
  96. 24 0
      src/main/java/org/springblade/modules/business/data/service/IRtuDataRainH6Service.java
  97. 1 7
      src/main/java/org/springblade/modules/business/data/service/IRtuDataRainService.java
  98. 46 0
      src/main/java/org/springblade/modules/business/data/service/IRtuDataRainStoreService.java
  99. 1 9
      src/main/java/org/springblade/modules/business/data/service/IRtuDataRiverService.java
  100. 33 0
      src/main/java/org/springblade/modules/business/data/service/IRtuDataRiverStoreService.java

+ 0 - 21
.editorconfig

@@ -1,21 +0,0 @@
-# http://editorconfig.org
-root = true
-
-# 空格替代Tab缩进在各种编辑工具下效果一致
-[*]
-indent_style = space
-indent_size = 4
-charset = utf-8
-end_of_line = lf
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.java]
-indent_style = tab
-
-[*.{json,yml}]
-indent_size = 2
-
-[*.md]
-insert_final_newline = false
-trim_trailing_whitespace = false

+ 0 - 27
.gitignore

@@ -1,27 +0,0 @@
-# maven #
-target
-
-logs
-
-# windows #
-Thumbs.db
-
-# Mac #
-.DS_Store
-
-# eclipse #
-.settings
-.project
-.classpath
-.log
-*.class
-
-# idea #
-.idea
-*.iml
-
-# Package Files #
-*.jar
-*.war
-*.ear
-/target

+ 2 - 2
README.md

@@ -1,5 +1,5 @@
 ## 项目介绍
-兴安盟水资源运维系统
+内蒙山洪运维系统
 
 ## 项目模块介绍
-项目改造
+

binární
lib/netcdfAll-5.5.3.jar


+ 41 - 0
src/main/java/org/springblade/config/MultipartConfig.java

@@ -0,0 +1,41 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2023/10/8
+ */
+package org.springblade.config;
+
+import cn.hutool.core.io.FileUtil;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.web.servlet.MultipartConfigFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.servlet.MultipartConfigElement;
+
+/***
+ * Date:2023/10/8
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Configuration
+public class MultipartConfig {
+	@Value("${spring.servlet.multipart.location}")
+	private String tmpLocation;
+
+	@Bean
+	public MultipartConfigElement multipartConfigElement() {
+		MultipartConfigFactory factory = new MultipartConfigFactory();
+		System.out.println("******************************* MultipartConfigElement");
+		// 若没有该目录,则创建,此处使用了第三方插件的FileUtil,各位可以使用原生File实现该逻辑
+		if (!FileUtil.exist(tmpLocation)) {
+			FileUtil.mkdir(tmpLocation);
+		}
+		factory.setLocation(tmpLocation);
+		return factory.createMultipartConfig();
+	}
+}

+ 2 - 0
src/main/java/org/springblade/constant/BusinessConstant.java

@@ -74,4 +74,6 @@ public class BusinessConstant {
 	public static final String ACCOUNT_PW_SUFFIX="@8282";
 
 	public static final Long DEPT_ROOT_ID =0L;
+
+	public static final Long DEPT_NM_ID=1123598813738675201L;
 }

+ 43 - 0
src/main/java/org/springblade/constant/RedisBusinessConstant.java

@@ -0,0 +1,43 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 山洪灾害运维系统
+ * 创建日期:2023/8/15
+ */
+package org.springblade.constant;
+
+/*** 
+ * Date:2023/8/15
+ * Title: REDIS常量定义
+ * Description: REDIS定义
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public class RedisBusinessConstant {
+
+	public static final  String KEY_RTU_RUN_INFO ="rtu.up.run.info.";
+
+	public static final  String KEY_RTU_RUN_INFO_LAST_TIME ="last_up_time";
+
+	public static final  String KEY_RTU_RUN_INFO_OFFLINE_CHECK_POINT_TIME ="warn_offline_check_point_datetime";
+
+	public static final  String KEY_RTU_RUN_INFO_WARN_KIND ="warn_kind_";
+
+	public static final  String KEY_SURF_DATA ="surf.data.";
+
+	public static final  String KEY_ETL_RAIN_UP_LAST ="etl.rain.up.last.";
+
+	public static final  String KEY_ETL_RAIN_HOUR_UP_LAST ="etl.rain.hour.up.last.";
+
+	public static final  String KEY_ETL_RIVER_UP_LAST ="etl.river.up.last.";
+
+	public static final  String KEY_ETL_RIVER_HOUR_UP_LAST ="etl.river.hour.up.last.";
+
+	public static final  String KEY_ETL_RSVR_UP_LAST ="etl.rsvr.up.last.";
+
+	public static final  String KEY_ETL_RSVR_HOUR_UP_LAST ="etl.rsvr.hour.up.last.";
+
+	public static final  String KEY_ETL_GROUND_UP_LAST ="etl.ground.up.last.";
+
+}

+ 3 - 2
src/main/java/org/springblade/enums/WarningStatusEnum.java

@@ -1,13 +1,14 @@
 package org.springblade.enums;
 
 public enum WarningStatusEnum {
+
 	/**
-	 * 关闭
+	 * 开启
 	 */
 	STATUS_HAPPEN(0, "预警中"),
 
 	/**
-	 * 开启
+	 * 关闭
 	 */
 	STATUS_CLOSE(1, "恢复");
 

+ 0 - 111
src/main/java/org/springblade/etl/EtlTaskManager.java

@@ -1,111 +0,0 @@
-/**
- * Copyright
- * All right reserved.
- * 项目名称:
- * 创建日期:2022/5/23
- */
-package org.springblade.etl;
-
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.stereotype.Component;
-
-
-/***
- * Date:2022/5/22
- * Title:  ETL模块
- * Description: 定时任务管理
- * @author swp
- * @version 1.0
- * Remark:认为有必要的其他信息
- */
-@Slf4j
-@Component
-@EnableScheduling
-public class EtlTaskManager {
-
-	/**
-	 * 公共线程池
-	 **/
-//	private static ThreadFactory publicThreadFactory = new ThreadFactoryBuilder().setNameFormat("etl-thread-pool-%d").build();
-//	private static ExecutorService publicThreadPool = new ThreadPoolExecutor(1, 1,
-//		0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(1024), publicThreadFactory, new ThreadPoolExecutor.AbortPolicy());
-
-
-	@Autowired
-	private KafkaTemplate<String, String> kafkaTemplate;
-
-	@Autowired
-	private RedisTemplate redisTemplate;
-//
-//	@Resource
-//	private IEtlRainDataService etlRainDataService;
-//
-//	@Resource
-//	private IRtuDataRainService rtuDataRainService;
-//
-//	@Resource
-//	private IEtlRiverDataService etlRiverDataService;
-//
-//	@Resource
-//	private IRtuDataRiverService rtuDataRiverService;
-//
-//	@Resource
-//	private IEtlRsvrDataService etlRsvrDataService;
-//
-//	@Resource
-//	private IRtuDataRsvrService rtuDataRsvrService;
-//
-//	@Resource
-//	private IEtlGroundDataService etlGroundDataService;
-//
-//	@Resource
-//	private IRtuDataGroundService rtuDataGroundService;
-//
-//	@Resource
-//	private IEtlMvAttStBaseService etlMvAttStBaseService;
-//
-//	@Resource
-//	private IMvAttStBaseService mvAttStBaseService;
-//
-//	@Resource
-//	private IRtuBaseInfoService rtuBaseInfoService;
-
-	@Value("${spring.task-config.etl-task}")
-	boolean etlTask;
-//
-//	@Resource
-//	private TaskManager taskManager;
-
-//	@Scheduled(cron = "0 0 0/1 * * ?")
-//	public void attStBaseReadTask() {
-//		try {
-//			if (etlTask) {
-//				EtlMvAttStBaseDataTask mvAttStBaseDataTask = new EtlMvAttStBaseDataTask(etlMvAttStBaseService, mvAttStBaseService);
-//				FutureTask<Integer> futureTask = new FutureTask<>(mvAttStBaseDataTask);
-//				taskManager.submitTask(futureTask);
-//			}
-//		} catch (Exception e) {
-//			log.error("{}", e.getMessage());
-//		}
-//	}
-
-//	@Scheduled(cron = "0 0/5 * * * ?")
-//	public void rtuDataReadTask() {
-//		try {
-//			if (etlTask) {
-//				EtlRtuDataTask etlRtuDataTask = new EtlRtuDataTask(kafkaTemplate, redisTemplate, rtuBaseInfoService, etlRainDataService, rtuDataRainService, etlRiverDataService, rtuDataRiverService, etlRsvrDataService, rtuDataRsvrService, etlGroundDataService, rtuDataGroundService);
-//				FutureTask<Integer> futureTask = new FutureTask<>(etlRtuDataTask);
-//				taskManager.submitTask(futureTask);
-//			}
-//		} catch (Exception e) {
-//			log.error("{}", e.getMessage());
-//		}
-//	}
-
-}

+ 0 - 866
src/main/java/org/springblade/etl/controller/TestController.java

@@ -1,866 +0,0 @@
-/**
- * Copyright 2019 DH
- * All right reserved.
- * 项目名称: 大恒泰山系统
- * 创建日期:2022/8/22
- */
-package org.springblade.etl.controller;
-
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-
-import io.swagger.annotations.Api;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.etl.entity.EtlRainDataEntity;
-
-import org.springblade.etl.entity.EtlRsvrDataEntity;
-
-import org.springblade.etl.service.IEtlRainDataService;
-
-import org.springblade.modules.baseinfo.rtu.service.IRtuBaseInfoService;
-import org.springblade.modules.business.warning.service.IRtuWarningService;
-import org.springblade.task.SurfDataProcessTask;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.core.ValueOperations;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import ucar.nc2.NetcdfFile;
-import ucar.nc2.NetcdfFiles;
-
-import javax.annotation.Resource;
-
-import java.util.*;
-
-
-/***
- * Date:2022/8/22
- * Title:行政区划管理
- * Description:对本文件的详细描述,原则上不能少于30字
- * @author dylan
- * @version 1.0
- * Remark:认为有必要的其他信息
- */
-@RestController
-@RequestMapping("galaxy-test/test")
-@AllArgsConstructor
-@Api(value = "业务字典", tags = "业务字典")
-@Slf4j
-public class TestController extends BladeController {
-	private final IRtuBaseInfoService rtuBaseInfoService;
-	private final IEtlRainDataService etlRainDataService;
-
-	private final IRtuWarningService rtuWarningService;
-
-	@Resource
-	private RedisTemplate redisTemplate;
-	@Autowired
-	private KafkaTemplate<String, String> kafkaTemplate;
-
-	@Resource
-	private SurfDataProcessTask surfDataProcessTask;
-
-
-	@GetMapping("/data/rain")
-	@ApiOperationSupport(order = 1)
-	public R<String> addRain(@RequestParam(name = "rtuCode") String rtuCode) {
-		try {
-			String filename = "D:\\tmp\\test\\Z_SURF_C_BABJ_20230517112343_P_CMPA_RT_BEHT_0P01_HOR-PRE-2023051711.GRB2";
-
-
-			//NetcdfFile netcdfFile = NetcdfFiles.open(filename, null);
-			NetcdfFile netcdfFile = NetcdfFiles.open(filename);
-			///	ImmutableList<Variable> variables = netcdfFile.getVariables();
-			//	surfDataProcessTask.submit(filename,Func.formatDateTime(new Date()));
-
-//			log.info("***************************");
-//			log.info("{}",	netcdfFile.getFileTypeId());
-//			log.info("***************************");
-//			log.info("{}",	netcdfFile.getTitle());
-//			log.info("***************************");
-//			log.info("{}",	netcdfFile.getDetailInfo());
-//			log.info("***************************");
-//			log.info("{}",netcdfFile.getLocation());
-//			log.info("***************************");
-			//	ImmutableDescriptor
-			//ImmutableList<Variable> variables = netcdfFile.getVariables();
-//			ImmutableList<Attribute> attributeIterator =	netcdfFile.getGlobalAttributes();
-//			for(Attribute a:attributeIterator){
-//				log.info("***************************");
-//				log.info("Attribute {},{},{}",a.getName(),a.getStringValue(),a.getDataType().toString());
-//			}
-
-			//	List<String> lons = new LinkedList<>();
-//			List<String> lats = new LinkedList<>();
-//			List<String> times = new LinkedList<>();
-//
-//			List<Map<String, String>> values = new LinkedList<>();
-//
-//			for (Variable v : variables) {
-//				log.info("***************************");
-//				log.info("{},{},{}", v.getFullName(), v.getDataType().toString(), v.getDimensionsString());
-//				log.info("***************************");
-//				if (v.getFullName().equals("lon")) {
-//					log.info("lon size {}", v.getSize());
-//					Array datas = v.read();
-//					Index index = datas.getIndex();
-//					int[] shapelist = v.getShape();
-//					for (int i = 0; i < shapelist[0]; i++) {
-//						float lonv = datas.getFloat(index.set(i));
-//						lons.add(Func.toStr(lonv));
-//					}
-//				}
-//				log.info("***************************");
-//				if (v.getFullName().equals("lat")) {
-//					log.info("lat size {}", v.getSize());
-//					Array datas = v.read();
-//					Index index = datas.getIndex();
-//					int[] shapelist = v.getShape();
-//					for (int i = 0; i < shapelist[0]; i++) {
-//						float latv = datas.getFloat(index.set(i));
-//						lats.add(Func.toStr(latv));
-//					}
-//				}
-//				log.info("***************************");
-//				if (v.getFullName().equals("time")) {
-//					log.info("time size {}", v.getSize());
-//					Array datas = v.read();
-//					Index index = datas.getIndex();
-//					int[] shapelist = v.getShape();
-//					for (int i = 0; i < shapelist[0]; i++) {
-//						double timev = datas.getDouble(index.set(i));
-//						times.add(Func.toStr(timev));
-//					}
-//				}
-//				log.info("***************************");
-//				if (v.getFullName().equals("reftime")) {
-//					log.info("reftime size {}", v.getSize());
-////					Array datas = v.read();
-////					Index index= datas.getIndex();
-////					int[] shapelist= v.getShape();
-////					for (int i = 0; i < shapelist[0]; i++) {
-////						double timev=	datas.getDouble(index.set(i));
-////						times.add(Func.toStr(timev));
-////					}
-//				}
-//
-//
-//				log.info("***************************");
-//				if (v.getFullName().equals("Total_precipitation_surface")) {
-//					log.info("surface size {}", v.getSize());
-//					Array datas = v.read();
-//					int[] shapelist = v.getShape();
-//					Index index = datas.getIndex();
-//					//按时间
-//					for (int i = 0; i < shapelist[0]; i++) {
-//						// 按维度
-//						for (int n = 0; n < shapelist[1]; n++) {
-//							// 按经度
-//							for (int k = 0; k < 100; k++) {
-//								// 按照对应索引获取数据并转换为string类型添加到数组中
-//								float dval = datas.getFloat(index.set(i, n, k));
-//								log.info("shape {} {} {}", i, n, k);
-//								log.info("time,lat,lon,value:    {},{},{}", lats.get(n), lons.get(k), dval);
-//							}
-//						}
-//					}
-//				}
-//
-//			}
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		return R.data("ok");
-	}
-
-	@GetMapping("/data/rain/1")
-	@ApiOperationSupport(order = 1)
-	public R<String> addRain1() {
-		EtlRainDataEntity etlRainDataEntity = new EtlRainDataEntity();
-		Calendar calendar = Calendar.getInstance();
-		//calendar.set(Calendar.HOUR_OF_DAY, 1);
-		calendar.set(Calendar.MINUTE, 0);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01710140");
-		etlRainDataEntity.setIntv(1.0);
-		etlRainDataEntity.setDrp(3.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-		return R.data("ok");
-	}
-
-	@GetMapping("/data/rain/2")
-	@ApiOperationSupport(order = 1)
-	public R<String> addRain2() {
-		EtlRainDataEntity etlRainDataEntity = new EtlRainDataEntity();
-		Calendar calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 2);
-		calendar.set(Calendar.MINUTE, 0);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01740030");
-		etlRainDataEntity.setIntv(1.0);
-		etlRainDataEntity.setDrp(3.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-		return R.data("ok");
-	}
-
-	@GetMapping("/data/rain/3")
-	@ApiOperationSupport(order = 1)
-	public R<String> addRain3() {
-		EtlRainDataEntity etlRainDataEntity = new EtlRainDataEntity();
-		Calendar calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 3);
-		calendar.set(Calendar.MINUTE, 0);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01740030");
-		etlRainDataEntity.setIntv(1.0);
-		etlRainDataEntity.setDrp(3.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-		return R.data("ok");
-	}
-
-	@GetMapping("/data/rain/4")
-	@ApiOperationSupport(order = 1)
-	public R<String> addRain4() {
-		EtlRainDataEntity etlRainDataEntity = new EtlRainDataEntity();
-		Calendar calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 4);
-		calendar.set(Calendar.MINUTE, 0);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-		return R.data("ok");
-	}
-
-	@GetMapping("/data/rain/5")
-	@ApiOperationSupport(order = 1)
-	public R<String> addRain5() {
-		EtlRainDataEntity etlRainDataEntity = new EtlRainDataEntity();
-		Calendar calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 5);
-		calendar.set(Calendar.MINUTE, 0);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(1.0);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-		return R.data("ok");
-	}
-
-	@GetMapping("/data/river/0")
-	@ApiOperationSupport(order = 1)
-	public R<String> addriver0() {
-		ValueOperations<String, String> ops = redisTemplate.opsForValue();
-		String key = "etl.river.40516502.up.5min";
-		JSONArray array = new JSONArray();
-		ops.set(key, array.toJSONString());
-		return R.data("ok");
-	}
-
-	@GetMapping("/data/river/1")
-	@ApiOperationSupport(order = 1)
-	public R<String> addriver1() {
-
-		EtlRsvrDataEntity etlRsvrDataEntity = new EtlRsvrDataEntity();
-
-		Calendar calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 9);
-		calendar.set(Calendar.MINUTE, 0);
-		calendar.set(Calendar.SECOND, 0);
-		etlRsvrDataEntity.setTm(calendar.getTime());
-
-		calendar.set(Calendar.HOUR_OF_DAY, 11);
-		calendar.set(Calendar.MINUTE, 0);
-		calendar.set(Calendar.SECOND, 0);
-		etlRsvrDataEntity.setFromDate(calendar.getTime());
-
-		etlRsvrDataEntity.setRtuCode("20911190");
-		etlRsvrDataEntity.setRz(0.05);
-
-
-		kafkaTemplate.send("topic-etl-rsvr-data", JSONObject.toJSONString(etlRsvrDataEntity));
-		return R.data("ok");
-	}
-
-	@GetMapping("/data/river/2")
-	@ApiOperationSupport(order = 1)
-	public R<String> addriver2() {
-		EtlRsvrDataEntity etlRsvrDataEntity = new EtlRsvrDataEntity();
-
-		Calendar calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 9);
-		calendar.set(Calendar.MINUTE, 10);
-		calendar.set(Calendar.SECOND, 0);
-		etlRsvrDataEntity.setTm(calendar.getTime());
-
-		calendar.set(Calendar.HOUR_OF_DAY, 12);
-		calendar.set(Calendar.MINUTE, 0);
-		calendar.set(Calendar.SECOND, 0);
-
-		etlRsvrDataEntity.setFromDate(calendar.getTime());
-
-		etlRsvrDataEntity.setRtuCode("01718530");
-		etlRsvrDataEntity.setRz(0.05);
-
-
-		kafkaTemplate.send("topic-etl-rsvr-data", JSONObject.toJSONString(etlRsvrDataEntity));
-		return R.data("ok");
-
-
-	}
-
-	@GetMapping("/data/river/3")
-	@ApiOperationSupport(order = 1)
-	public R<String> addriver3() {
-		EtlRsvrDataEntity etlRsvrDataEntity = new EtlRsvrDataEntity();
-
-		Calendar calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 12);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRsvrDataEntity.setTm(calendar.getTime());
-
-		calendar.set(Calendar.MINUTE, 27);
-
-		etlRsvrDataEntity.setFromDate(calendar.getTime());
-
-		etlRsvrDataEntity.setRtuCode("20911190");
-		etlRsvrDataEntity.setRz(0.05);
-
-
-		kafkaTemplate.send("topic-etl-rsvr-data", JSONObject.toJSONString(etlRsvrDataEntity));
-		return R.data("ok");
-
-
-	}
-
-	@GetMapping("/data/river/4")
-	@ApiOperationSupport(order = 1)
-	public R<String> addriver4() {
-		EtlRsvrDataEntity etlRsvrDataEntity = new EtlRsvrDataEntity();
-
-		Calendar calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 12);
-		calendar.set(Calendar.MINUTE, 20);
-		calendar.set(Calendar.SECOND, 0);
-		etlRsvrDataEntity.setTm(calendar.getTime());
-
-		calendar.set(Calendar.MINUTE, 35);
-
-		etlRsvrDataEntity.setFromDate(calendar.getTime());
-
-		etlRsvrDataEntity.setRtuCode("20911190");
-		etlRsvrDataEntity.setRz(0.05);
-
-
-		kafkaTemplate.send("topic-etl-rsvr-data", JSONObject.toJSONString(etlRsvrDataEntity));
-		return R.data("ok");
-
-
-	}
-
-	@GetMapping("/data/rain/hour/0")
-	@ApiOperationSupport(order = 1)
-	public R<String> addrainhour0() {
-		String key = "etl.rain.01751310.up.hour";
-
-		ValueOperations<String, String> ops = redisTemplate.opsForValue();
-
-		JSONArray array = new JSONArray();
-		ops.set(key, array.toJSONString());
-		return R.data("ok");
-	}
-
-	@GetMapping("/data/rain/hour")
-	@ApiOperationSupport(order = 1)
-	public R<String> addrainhour() {
-		EtlRainDataEntity etlRainDataEntity = new EtlRainDataEntity();
-		Calendar calendar = Calendar.getInstance();
-		calendar.set(Calendar.DAY_OF_MONTH, 9);
-		calendar.set(Calendar.HOUR_OF_DAY, 12);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.DAY_OF_MONTH, 9);
-		calendar.set(Calendar.HOUR_OF_DAY, 13);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.DAY_OF_MONTH, 9);
-		calendar.set(Calendar.HOUR_OF_DAY, 13);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-//		 etlRainDataEntity= new EtlRainDataEntity();
-//		 calendar=Calendar.getInstance();
-//		calendar.set(Calendar.DAY_OF_MONTH,9);
-//		calendar.set(Calendar.HOUR_OF_DAY,14);
-//		calendar.set(Calendar.MINUTE,15);
-//		calendar.set(Calendar.SECOND,0);
-//		etlRainDataEntity.setTm(calendar.getTime());
-//		calendar.set(Calendar.MINUTE,27);
-//		etlRainDataEntity.setFromDate(calendar.getTime());
-//		etlRainDataEntity.setRtuCode("01751310");
-//		etlRainDataEntity.setIntv(0.05);
-//		etlRainDataEntity.setDrp(1.0);
-//		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-//		 etlRainDataEntity= new EtlRainDataEntity();
-//		 calendar=Calendar.getInstance();
-//		calendar.set(Calendar.DAY_OF_MONTH,9);
-//		calendar.set(Calendar.HOUR_OF_DAY,15);
-//		calendar.set(Calendar.MINUTE,15);
-//		calendar.set(Calendar.SECOND,0);
-//		etlRainDataEntity.setTm(calendar.getTime());
-//		calendar.set(Calendar.MINUTE,27);
-//		etlRainDataEntity.setFromDate(calendar.getTime());
-//		etlRainDataEntity.setRtuCode("01751310");
-//		etlRainDataEntity.setIntv(0.05);
-//		etlRainDataEntity.setDrp(1.0);
-//		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-//		 etlRainDataEntity= new EtlRainDataEntity();
-//		 calendar=Calendar.getInstance();
-//		calendar.set(Calendar.DAY_OF_MONTH,9);
-//		calendar.set(Calendar.HOUR_OF_DAY,16);
-//		calendar.set(Calendar.MINUTE,15);
-//		calendar.set(Calendar.SECOND,0);
-//		etlRainDataEntity.setTm(calendar.getTime());
-//		calendar.set(Calendar.MINUTE,27);
-//		etlRainDataEntity.setFromDate(calendar.getTime());
-//		etlRainDataEntity.setRtuCode("01751310");
-//		etlRainDataEntity.setIntv(0.05);
-//		etlRainDataEntity.setDrp(1.0);
-//		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.DAY_OF_MONTH, 9);
-		calendar.set(Calendar.HOUR_OF_DAY, 17);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.DAY_OF_MONTH, 9);
-		calendar.set(Calendar.HOUR_OF_DAY, 18);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-//		 etlRainDataEntity= new EtlRainDataEntity();
-//		 calendar=Calendar.getInstance();
-//		calendar.set(Calendar.DAY_OF_MONTH,9);
-//		calendar.set(Calendar.HOUR_OF_DAY,19);
-//		calendar.set(Calendar.MINUTE,15);
-//		calendar.set(Calendar.SECOND,0);
-//		etlRainDataEntity.setTm(calendar.getTime());
-//		calendar.set(Calendar.MINUTE,27);
-//		etlRainDataEntity.setFromDate(calendar.getTime());
-//		etlRainDataEntity.setRtuCode("01751310");
-//		etlRainDataEntity.setIntv(0.05);
-//		etlRainDataEntity.setDrp(1.0);
-//		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-//		 etlRainDataEntity= new EtlRainDataEntity();
-//		 calendar=Calendar.getInstance();
-//		calendar.set(Calendar.DAY_OF_MONTH,9);
-//		calendar.set(Calendar.HOUR_OF_DAY,20);
-//		calendar.set(Calendar.MINUTE,15);
-//		calendar.set(Calendar.SECOND,0);
-//		etlRainDataEntity.setTm(calendar.getTime());
-//		calendar.set(Calendar.MINUTE,27);
-//		etlRainDataEntity.setFromDate(calendar.getTime());
-//		etlRainDataEntity.setRtuCode("01751310");
-//		etlRainDataEntity.setIntv(0.05);
-//		etlRainDataEntity.setDrp(1.0);
-//		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.DAY_OF_MONTH, 9);
-		calendar.set(Calendar.HOUR_OF_DAY, 21);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.DAY_OF_MONTH, 9);
-		calendar.set(Calendar.HOUR_OF_DAY, 22);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.DAY_OF_MONTH, 9);
-		calendar.set(Calendar.HOUR_OF_DAY, 23);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 0);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 1);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 2);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 3);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 4);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 5);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 6);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 7);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-//		etlRainDataEntity= new EtlRainDataEntity();
-//		calendar=Calendar.getInstance();
-//		calendar.set(Calendar.HOUR_OF_DAY,8);
-//		calendar.set(Calendar.MINUTE,15);
-//		calendar.set(Calendar.SECOND,0);
-//		etlRainDataEntity.setTm(calendar.getTime());
-//		calendar.set(Calendar.MINUTE,27);
-//		etlRainDataEntity.setFromDate(calendar.getTime());
-//		etlRainDataEntity.setRtuCode("01751310");
-//		etlRainDataEntity.setIntv(0.05);
-//		etlRainDataEntity.setDrp(1.0);
-//		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 9);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 10);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 11);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 12);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 13);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-//
-//		etlRainDataEntity= new EtlRainDataEntity();
-//		calendar=Calendar.getInstance();
-//		calendar.set(Calendar.HOUR_OF_DAY,14);
-//		calendar.set(Calendar.MINUTE,15);
-//		calendar.set(Calendar.SECOND,0);
-//		etlRainDataEntity.setTm(calendar.getTime());
-//		calendar.set(Calendar.MINUTE,27);
-//		etlRainDataEntity.setFromDate(calendar.getTime());
-//		etlRainDataEntity.setRtuCode("01751310");
-//		etlRainDataEntity.setIntv(0.05);
-//		etlRainDataEntity.setDrp(1.0);
-//		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 15);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 16);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-//
-//
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 17);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 18);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 19);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-
-		etlRainDataEntity = new EtlRainDataEntity();
-		calendar = Calendar.getInstance();
-		calendar.set(Calendar.HOUR_OF_DAY, 20);
-		calendar.set(Calendar.MINUTE, 15);
-		calendar.set(Calendar.SECOND, 0);
-		etlRainDataEntity.setTm(calendar.getTime());
-		calendar.set(Calendar.MINUTE, 27);
-		etlRainDataEntity.setFromDate(calendar.getTime());
-		etlRainDataEntity.setRtuCode("01751310");
-		etlRainDataEntity.setIntv(0.05);
-		etlRainDataEntity.setDrp(1.0);
-		kafkaTemplate.send("topic-etl-rain-data", JSONObject.toJSONString(etlRainDataEntity));
-
-		return R.data("ok");
-	}
-}

+ 1 - 1
src/main/java/org/springblade/etl/mapper/EtlAdCdMapper.java

@@ -23,5 +23,5 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 public interface EtlAdCdMapper extends BaseMapper<EtlAdCdEntity> {
-	List<EtlAdCdEntity> selectList(@Param("parentCode") String parentCode);
+	List<EtlAdCdEntity> selectList(@Param("entity") EtlAdCdEntity entity);
 }

+ 7 - 2
src/main/java/org/springblade/etl/mapper/EtlAdCdMapper.xml

@@ -19,8 +19,13 @@
         FROM
         etl_ad_cd_b d
         WHERE 1=1
-        <if test="parentCode!=null">
-            and d.SUPERIORADCD = #{parentCode}
+
+        <if test="entity.adcd!=null">
+            and d.ADCD = #{entity.adcd}
+        </if>
+
+        <if test="entity.superioradcd!=null">
+            and d.SUPERIORADCD = #{entity.superioradcd}
         </if>
 
     </select>

+ 1 - 1
src/main/java/org/springblade/etl/service/IEtlAdCdService.java

@@ -23,5 +23,5 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 public interface IEtlAdCdService extends BaseService<EtlAdCdEntity> {
-	List<EtlAdCdEntity> selectList(String parentCode);
+	List<EtlAdCdEntity> selectList(EtlAdCdEntity entity);
 }

+ 2 - 2
src/main/java/org/springblade/etl/service/impl/EtlAdCdServiceImpl.java

@@ -30,7 +30,7 @@ import java.util.List;
 public class EtlAdCdServiceImpl extends BaseServiceImpl<EtlAdCdMapper, EtlAdCdEntity> implements IEtlAdCdService {
 
 	@Override
-	public List<EtlAdCdEntity> selectList(String parentCode) {
-		return baseMapper.selectList(parentCode);
+	public List<EtlAdCdEntity> selectList(EtlAdCdEntity entity) {
+		return baseMapper.selectList(entity);
 	}
 }

+ 337 - 0
src/main/java/org/springblade/jobtask/RainDataCountProcessor.java

@@ -0,0 +1,337 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 山洪灾害运维系统
+ * 创建日期:2023/8/4
+ */
+package org.springblade.jobtask;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.extern.slf4j.Slf4j;
+import org.glassfish.jersey.internal.guava.ThreadFactoryBuilder;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.modules.business.data.dto.RtuDataRainDTO;
+import org.springblade.modules.business.data.entity.*;
+import org.springblade.modules.business.data.service.*;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.concurrent.*;
+
+/***
+ * Date:2023/8/4
+ * Title: 雨量统计
+ * Description:统计雨量5分钟数据,生成1小时、3小时、6小时、12小时及24小时成果表
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Slf4j
+@Component
+@EnableScheduling
+public class RainDataCountProcessor {
+
+	private static ThreadFactory rainDataCountThreadFactory = new ThreadFactoryBuilder().setNameFormat("rain-data-count-thread-pool-%d").build();
+	private static ExecutorService rainDataCountThreadPool = new ThreadPoolExecutor(1, 1,
+		0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(1024), rainDataCountThreadFactory, new ThreadPoolExecutor.AbortPolicy());
+
+	@Resource
+	private IRtuDataRainH1Service h1Service;
+
+	@Resource
+	private IRtuDataRainH3Service h3Service;
+
+	@Resource
+	private IRtuDataRainH6Service h6Service;
+
+	@Resource
+	private IRtuDataRainH12Service h12Service;
+
+	@Resource
+	private IRtuDataRainH24Service h24Service;
+
+	@Resource
+	private IRtuDataRainStoreService rainStoreService;
+
+	@Resource
+	private IRtuDataRainService rainService;
+
+	@Value("${spring.task-config.rain-count-task}")
+	private boolean rainCountTaskRun;
+
+	@Scheduled(cron = "0 0/5 * * * * ")
+	public void rainDataCountTask() {
+		try {
+			if (rainCountTaskRun) {
+				Date dt = new Date();
+				log.info("雨量统计任务创建 {}", Func.formatDateTime(dt));
+				RainDataCountTask task = new RainDataCountTask(dt);
+				FutureTask<Integer> futureTask = new FutureTask<>(task);
+				rainDataCountThreadPool.execute(futureTask);
+			}
+		} catch (Exception e) {
+			log.error("{}", e.getMessage());
+		}
+	}
+
+	private RtuDataRainH1Entity updateH1RainData(Date countTime, String rtuCode, Double drp) {
+		try {
+			LambdaQueryWrapper<RtuDataRainH1Entity> rainh1Wrapper = Wrappers.<RtuDataRainH1Entity>query().lambda();
+			rainh1Wrapper.eq(RtuDataRainH1Entity::getIsDeleted, 0);
+			rainh1Wrapper.eq(RtuDataRainH1Entity::getRtuCode, rtuCode);
+			RtuDataRainH1Entity rainH1Entity = h1Service.getOne(rainh1Wrapper);
+			if (null == rainH1Entity) {
+				rainH1Entity = new RtuDataRainH1Entity();
+				rainH1Entity.setRtuCode(rtuCode);
+			}
+			rainH1Entity.setDrp(drp);
+			rainH1Entity.setTm(countTime);
+			rainH1Entity.setFromTime(countTime);
+			return rainH1Entity;
+		} catch (Exception e) {
+			log.error(e.getMessage());
+			return null;
+		}
+	}
+
+	private RtuDataRainH3Entity updateH3RainData(Date countTime, String rtuCode, Double drp) {
+		try {
+			LambdaQueryWrapper<RtuDataRainH3Entity> rainh3Wrapper = Wrappers.<RtuDataRainH3Entity>query().lambda();
+			rainh3Wrapper.eq(RtuDataRainH3Entity::getIsDeleted, 0);
+			rainh3Wrapper.eq(RtuDataRainH3Entity::getRtuCode, rtuCode);
+			RtuDataRainH3Entity rainH3Entity = h3Service.getOne(rainh3Wrapper);
+			if (null == rainH3Entity) {
+				rainH3Entity = new RtuDataRainH3Entity();
+				rainH3Entity.setRtuCode(rtuCode);
+			}
+			rainH3Entity.setDrp(drp);
+			rainH3Entity.setTm(countTime);
+			rainH3Entity.setFromTime(countTime);
+			return rainH3Entity;
+		} catch (Exception e) {
+			log.error(e.getMessage());
+			return null;
+		}
+	}
+
+	private RtuDataRainH6Entity updateH6RainData(Date countTime, String rtuCode, Double drp) {
+		try {
+			LambdaQueryWrapper<RtuDataRainH6Entity> rainh6Wrapper = Wrappers.<RtuDataRainH6Entity>query().lambda();
+			rainh6Wrapper.eq(RtuDataRainH6Entity::getIsDeleted, 0);
+			rainh6Wrapper.eq(RtuDataRainH6Entity::getRtuCode, rtuCode);
+			RtuDataRainH6Entity rainH6Entity = h6Service.getOne(rainh6Wrapper);
+			if (null == rainH6Entity) {
+				rainH6Entity = new RtuDataRainH6Entity();
+				rainH6Entity.setRtuCode(rtuCode);
+			}
+			rainH6Entity.setDrp(drp);
+			rainH6Entity.setTm(countTime);
+			rainH6Entity.setFromTime(countTime);
+			return rainH6Entity;
+		} catch (Exception e) {
+			log.error(e.getMessage());
+			return null;
+		}
+	}
+
+	private RtuDataRainH12Entity updateH12RainData(Date countTime, String rtuCode, Double drp) {
+		try {
+			LambdaQueryWrapper<RtuDataRainH12Entity> rainh12Wrapper = Wrappers.<RtuDataRainH12Entity>query().lambda();
+			rainh12Wrapper.eq(RtuDataRainH12Entity::getIsDeleted, 0);
+			rainh12Wrapper.eq(RtuDataRainH12Entity::getRtuCode, rtuCode);
+			RtuDataRainH12Entity rainH12Entity = h12Service.getOne(rainh12Wrapper);
+			if (null == rainH12Entity) {
+				rainH12Entity = new RtuDataRainH12Entity();
+				rainH12Entity.setRtuCode(rtuCode);
+			}
+			rainH12Entity.setDrp(drp);
+			rainH12Entity.setTm(countTime);
+			rainH12Entity.setFromTime(countTime);
+			return rainH12Entity;
+		} catch (Exception e) {
+			log.error(e.getMessage());
+			return null;
+		}
+	}
+
+	private RtuDataRainH24Entity updateH24RainData(Date countTime, String rtuCode, Double drp) {
+		try {
+			LambdaQueryWrapper<RtuDataRainH24Entity> rainh24Wrapper = Wrappers.<RtuDataRainH24Entity>query().lambda();
+			rainh24Wrapper.eq(RtuDataRainH24Entity::getIsDeleted, 0);
+			rainh24Wrapper.eq(RtuDataRainH24Entity::getRtuCode, rtuCode);
+			RtuDataRainH24Entity rainH24Entity = h24Service.getOne(rainh24Wrapper);
+			if (null == rainH24Entity) {
+				rainH24Entity = new RtuDataRainH24Entity();
+				rainH24Entity.setRtuCode(rtuCode);
+			}
+			rainH24Entity.setDrp(drp);
+			rainH24Entity.setTm(countTime);
+			rainH24Entity.setFromTime(countTime);
+			return rainH24Entity;
+		} catch (Exception e) {
+			log.error(e.getMessage());
+			return null;
+		}
+	}
+
+	private class RainDataCountTask implements Callable<Integer> {
+
+		private Date countTime;
+
+		public RainDataCountTask(Date countTime) {
+			this.countTime = countTime;
+		}
+
+		@Override
+		public Integer call() throws Exception {
+			try {
+				log.info("雨量统计任务开始执行 {}", Func.formatDateTime(countTime));
+				LambdaQueryWrapper<RtuDataRainEntity> dataWrapper = Wrappers.<RtuDataRainEntity>query().lambda();
+				dataWrapper.eq(RtuDataRainEntity::getIsDeleted, 0);
+				List<RtuDataRainEntity> list = rainService.list(dataWrapper);
+				if (null != list && list.size() > 0) {
+					List<RtuDataRainH1Entity> h1EntityList = new LinkedList<>();
+					List<RtuDataRainH3Entity> h3EntityList = new LinkedList<>();
+					List<RtuDataRainH6Entity> h6EntityList = new LinkedList<>();
+					List<RtuDataRainH12Entity> h12EntityList = new LinkedList<>();
+					List<RtuDataRainH24Entity> h24EntityList = new LinkedList<>();
+					Calendar calendar = Calendar.getInstance();
+					//近1小时
+					calendar.setTime(countTime);
+					calendar.set(Calendar.SECOND, 0);
+					calendar.add(Calendar.HOUR_OF_DAY, -1);
+					log.info("近1小时统计时间 {}", Func.formatDateTime(calendar.getTime()));
+					Date h1Time = calendar.getTime();
+					//近3小时
+					calendar.setTime(countTime);
+					calendar.set(Calendar.SECOND, 0);
+					calendar.add(Calendar.HOUR_OF_DAY, -3);
+					log.info("近3小时统计时间 {}", Func.formatDateTime(calendar.getTime()));
+					Date h3Time = calendar.getTime();
+					//近6小时
+					calendar.setTime(countTime);
+					calendar.set(Calendar.SECOND, 0);
+					calendar.add(Calendar.HOUR_OF_DAY, -6);
+					log.info("近6小时统计时间 {}", Func.formatDateTime(calendar.getTime()));
+					Date h6Time = calendar.getTime();
+					//近12小时
+					calendar.setTime(countTime);
+					calendar.set(Calendar.SECOND, 0);
+					calendar.add(Calendar.HOUR_OF_DAY, -12);
+					log.info("近12小时统计时间 {}", Func.formatDateTime(calendar.getTime()));
+					Date h12Time = calendar.getTime();
+					//近24小时
+					calendar.setTime(countTime);
+					calendar.set(Calendar.SECOND, 0);
+					calendar.add(Calendar.HOUR_OF_DAY, -24);
+					log.info("近24小时统计时间 {}", Func.formatDateTime(countTime));
+					Date h24Time = calendar.getTime();
+					for (RtuDataRainEntity entity : list) {
+						//log.info("upcount code {}", entity.getRtuCode());
+						Double h1Drp = 0.0;
+						Double h3Drp = 0.0;
+						Double h6Drp = 0.0;
+						Double h12Drp = 0.0;
+						Double h24Drp = 0.0;
+
+//						RtuDataRainDTO dataRainDTO = new RtuDataRainDTO();
+//						dataRainDTO.setRtuCode(entity.getRtuCode());
+//						dataRainDTO.setBeginTime(h1Time);
+//						Double drp = rainStoreService.rainDrpCount(dataRainDTO);
+//						if (null != drp) {
+//							h1Drp = drp;
+//						}
+//						dataRainDTO.setBeginTime(h3Time);
+//						drp = rainStoreService.rainDrpCount(dataRainDTO);
+//						if (null != drp) {
+//							h3Drp = drp;
+//						}
+//						dataRainDTO.setBeginTime(h6Time);
+//						drp = rainStoreService.rainDrpCount(dataRainDTO);
+//						if (null != drp) {
+//							h6Drp = drp;
+//						}
+//						dataRainDTO.setBeginTime(h12Time);
+//						drp = rainStoreService.rainDrpCount(dataRainDTO);
+//						if (null != drp) {
+//							h12Drp = drp;
+//						}
+//						dataRainDTO.setBeginTime(h24Time);
+//						drp = rainStoreService.rainDrpCount(dataRainDTO);
+//						if (null != drp) {
+//							h24Drp = drp;
+//						}
+
+
+						RtuDataRainDTO dataRainDTO = new RtuDataRainDTO();
+						dataRainDTO.setRtuCode(entity.getRtuCode());
+						dataRainDTO.setBeginTime(h24Time);
+						List<RtuDataRainStoreEntity> rainStoreEntityList = rainStoreService.selectList(dataRainDTO);
+						if (rainStoreEntityList != null && rainStoreEntityList.size() > 0) {
+							for (RtuDataRainStoreEntity rainStoreEntity : rainStoreEntityList) {
+								//近1小时
+								if (rainStoreEntity.getTm().after(h1Time)) {
+									h1Drp += rainStoreEntity.getDrp();
+								}
+								//近3小时
+								if (rainStoreEntity.getTm().after(h3Time)) {
+									h3Drp += rainStoreEntity.getDrp();
+								}
+								//近6小时
+								if (rainStoreEntity.getTm().after(h6Time)) {
+									h6Drp += rainStoreEntity.getDrp();
+								}
+								//近12小时
+								if (rainStoreEntity.getTm().after(h12Time)) {
+									h12Drp += rainStoreEntity.getDrp();
+								}
+								//近24小时
+								h24Drp += rainStoreEntity.getDrp();
+							}
+						}
+
+						RtuDataRainH1Entity h1Entity = updateH1RainData(countTime, entity.getRtuCode(), h1Drp);
+						if (h1Entity != null) {
+							h1EntityList.add(h1Entity);
+						}
+						RtuDataRainH3Entity h3Entity = updateH3RainData(countTime, entity.getRtuCode(), h3Drp);
+						if (h3Entity != null) {
+							h3EntityList.add(h3Entity);
+						}
+						RtuDataRainH6Entity h6Entity = updateH6RainData(countTime, entity.getRtuCode(), h6Drp);
+						if (h6Entity != null) {
+							h6EntityList.add(h6Entity);
+						}
+						RtuDataRainH12Entity h12Entity = updateH12RainData(countTime, entity.getRtuCode(), h12Drp);
+						if (h12Entity != null) {
+							h12EntityList.add(h12Entity);
+						}
+						RtuDataRainH24Entity h24Entity = updateH24RainData(countTime, entity.getRtuCode(), h24Drp);
+						if (h24Entity != null) {
+							h24EntityList.add(h24Entity);
+						}
+					}
+					h1Service.saveOrUpdateBatch(h1EntityList);
+					h3Service.saveOrUpdateBatch(h3EntityList);
+					h6Service.saveOrUpdateBatch(h6EntityList);
+					h12Service.saveOrUpdateBatch(h12EntityList);
+					h24Service.saveOrUpdateBatch(h24EntityList);
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+				log.error("雨量数据统计任务异常 {}", e.getMessage());
+			} finally {
+				log.error("雨量数据统计任务完成 {} 毫秒", System.currentTimeMillis() - countTime.getTime());
+			}
+			return 0;
+		}
+	}
+}

+ 725 - 0
src/main/java/org/springblade/jobtask/ReportCountProcessor.java

@@ -0,0 +1,725 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 山洪灾害运维系统
+ * 创建日期:2023/8/7
+ */
+package org.springblade.jobtask;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.extern.slf4j.Slf4j;
+import org.glassfish.jersey.internal.guava.ThreadFactoryBuilder;
+import org.springblade.constant.BusinessConstant;
+import org.springblade.constant.DictBusinessConstant;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.enums.OrderCloseEnum;
+import org.springblade.enums.OrderConfirmEnum;
+import org.springblade.enums.OrderStatusEnum;
+import org.springblade.enums.WarnKindEnum;
+import org.springblade.modules.baseinfo.dict.entity.DictInfoEntity;
+import org.springblade.modules.baseinfo.dict.service.IBaseInfoDictService;
+import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.org.service.IDeptRegionService;
+import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
+import org.springblade.modules.baseinfo.region.service.IBaseInfoRegionService;
+import org.springblade.modules.baseinfo.rtu.dto.RtuInfoDTO;
+import org.springblade.modules.baseinfo.rtu.service.IRtuBaseInfoService;
+import org.springblade.modules.business.check.order.dto.CheckOrderInfoDTO;
+import org.springblade.modules.business.check.order.service.IRtuCheckOrderService;
+import org.springblade.modules.business.check.process.service.IRtuOrderProcessService;
+import org.springblade.modules.business.check.process.vo.OrderProcessInfoVO;
+import org.springblade.modules.business.rtumanage.dto.RtuStatusDTO;
+import org.springblade.modules.business.rtumanage.service.IRtuManageService;
+import org.springblade.modules.business.warning.dto.RtuWarningInfoDTO;
+import org.springblade.modules.business.warning.entity.RtuWarningInfoEntity;
+import org.springblade.modules.business.warning.service.IRtuWarningService;
+import org.springblade.modules.report.entity.*;
+import org.springblade.modules.report.service.*;
+import org.springblade.modules.system.entity.Dept;
+import org.springblade.modules.system.service.IDeptService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.*;
+
+/***
+ * Date:2023/8/7
+ * Title:报表统计
+ * Description:按自治区进行周报统计、按盟市统计维修任务信息
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Slf4j
+@Component
+@EnableScheduling
+public class ReportCountProcessor {
+	private static ThreadFactory reportCountThreadFactory = new ThreadFactoryBuilder().setNameFormat("report-count-thread-pool-%d").build();
+	private static ExecutorService reportCountThreadPool = new ThreadPoolExecutor(1, 1,
+		0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(1024), reportCountThreadFactory, new ThreadPoolExecutor.AbortPolicy());
+
+
+	@Resource
+	private IWeekOrgCountService weekReportService;
+
+	@Resource
+	private IWeekOrgRtuFailureService weekOrgRtuFailureService;
+
+	@Resource
+	private IWeekOrgCheckOrderService weekOrgCheckOrderService;
+
+	@Resource
+	private IWeekOrgRtuUpService weekOrgRtuUpService;
+
+	@Resource
+	private IWeekOrgCheckOrderReportService weekOrgCheckOrderReportService;
+
+	@Resource
+	private IWeekOrgEquipmentReplaceService weekOrgEquipmentReplaceService;
+
+	@Resource
+	private IWeekOrgCheckOrderDayService orgCheckOrderDayService;
+
+	@Resource
+	private IRtuBaseInfoService rtuBaseInfoService;
+
+	@Resource
+	private IRtuCheckOrderService checkOrderService;
+
+	@Resource
+	private IRtuOrderProcessService orderProcessService;
+
+	@Resource
+	private IRtuWarningService rtuWarningService;
+
+	@Resource
+	private IBaseInfoDictService dictService;
+
+	@Resource
+	private IDeptRegionService deptRegionService;
+
+	@Resource
+	private IBaseInfoRegionService regionService;
+
+	@Resource
+	private IDeptService deptService;
+
+	@Resource
+	private IRtuManageService rtuManageService;
+
+	@Value("${spring.task-config.report-task}")
+	private boolean reportTaskRun;
+
+	@Scheduled(cron = "10 0 0 * * MON")
+	public void reportWeekOrgCountTask() {
+		if (reportTaskRun) {
+			Date dt = new Date();
+			log.info("周报表统计任务创建 {}", Func.formatDateTime(dt));
+			WeekOrgCountTask task = new WeekOrgCountTask(dt);
+			FutureTask<Integer> futureTask = new FutureTask<>(task);
+			reportCountThreadPool.execute(futureTask);
+		}
+	}
+
+	@Scheduled(cron = "20 0 0 0/1 * *")
+	public void reportWeekOrgOrderDayCountTask() {
+		if (reportTaskRun) {
+			Date dt = new Date();
+			log.info("盟市按日维修任务数据统计任务创建 {}", Func.formatDateTime(dt));
+			WeekOrgDayCountTask task = new WeekOrgDayCountTask(dt);
+			FutureTask<Integer> futureTask = new FutureTask<>(task);
+			reportCountThreadPool.execute(futureTask);
+		}
+	}
+
+	@Scheduled(cron = "30 0 0 1 * * ")
+	public void reportMonthCountTask() {
+		try {
+			if (reportTaskRun) {
+				Date dt = new Date();
+				log.info("月统计任务创建 {}", Func.formatDateTime(dt));
+			}
+		} catch (Exception e) {
+			log.error("{}", e.getMessage());
+		}
+	}
+
+	private class WeekOrgDayCountTask implements Callable<Integer> {
+		private Date reportTime;
+
+		public WeekOrgDayCountTask(Date reportTime) {
+			this.reportTime = reportTime;
+		}
+
+		@Override
+		public Integer call() throws Exception {
+			try {
+				log.info("盟市周统计,按天统计维修任务 {} {}", Func.formatDateTime(reportTime), Func.formatDateTime(new Date()));
+				Calendar calendar = Calendar.getInstance();
+				calendar.setTime(reportTime);
+				calendar.set(Calendar.HOUR_OF_DAY, 0);
+				calendar.set(Calendar.MINUTE, 0);
+				calendar.set(Calendar.SECOND, 0);
+				calendar.set(Calendar.MILLISECOND, 0);
+				calendar.add(Calendar.DAY_OF_MONTH, -1);
+				log.info("统计日期  {}", Func.formatDateTime(calendar.getTime()));
+				LambdaQueryWrapper<WeekOrgCheckOrderDayInfoEntity> wrapper = Wrappers.<WeekOrgCheckOrderDayInfoEntity>query().lambda();
+				wrapper.eq(WeekOrgCheckOrderDayInfoEntity::getIsDeleted, 0);
+				wrapper.eq(WeekOrgCheckOrderDayInfoEntity::getCountTime, calendar.getTime());
+				long size = orgCheckOrderDayService.count(wrapper);
+				if (size == 0) {
+					calendar.setTime(reportTime);
+					calendar.set(Calendar.HOUR_OF_DAY, 0);
+					calendar.set(Calendar.MINUTE, 0);
+					calendar.set(Calendar.SECOND, 0);
+					calendar.set(Calendar.MILLISECOND, 0);
+					Date endTm = calendar.getTime();
+					calendar.add(Calendar.DAY_OF_MONTH, -1);
+					int day = calendar.get(Calendar.DAY_OF_WEEK);
+					String weekName = "";
+					if (1 == day) {
+						weekName = "周日";
+					} else if (2 == day) {
+						weekName = "周一";
+					} else if (3 == day) {
+						weekName = "周二";
+					} else if (4 == day) {
+						weekName = "周三";
+					} else if (5 == day) {
+						weekName = "周四";
+					} else if (6 == day) {
+						weekName = "周五";
+					} else if (7 == day) {
+						weekName = "周六";
+					}
+					Date startTm = calendar.getTime();
+					log.info("统计日期区间  {} {}", Func.formatDateTime(startTm), Func.formatDateTime(endTm));
+					String adCode = BusinessConstant.REGION_NM_ADCODE;
+					WeekOrgCheckOrderDayInfoEntity dayInfoEntity = new WeekOrgCheckOrderDayInfoEntity();
+					dayInfoEntity.setCountTime(calendar.getTime());
+					dayInfoEntity.setWeekName(weekName);
+					//任务总数
+					CheckOrderInfoDTO checkOrderInfoDTO = new CheckOrderInfoDTO();
+					checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+					checkOrderInfoDTO.setAdCode(adCode);
+					checkOrderInfoDTO.setReportEndDate(endTm);
+					long count = checkOrderService.orderCount(checkOrderInfoDTO);
+					dayInfoEntity.setOrderCount((int) count);
+
+					//未确认任务
+					checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CREATE.getCode());
+					checkOrderInfoDTO.setReportEndDate(endTm);
+					count = checkOrderService.orderCount(checkOrderInfoDTO);
+					dayInfoEntity.setUnconfirmOrderCount((int) count);
+
+					//处理中任务
+					checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+					checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+					checkOrderInfoDTO.setReportEndDate(endTm);
+					DictInfoEntity biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+					if (biz != null) {
+						checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+					}
+					long unCloseOrderCount = checkOrderService.unCloseOrderCount(checkOrderInfoDTO);
+					dayInfoEntity.setProcessingOrderCount((int) unCloseOrderCount);
+
+					//已处理维修任务数量
+					checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+					checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+					checkOrderInfoDTO.setReportStartDate(startTm);
+					checkOrderInfoDTO.setReportEndDate(endTm);
+					DictInfoEntity orderProcessDict = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_PROCESS.getCode());
+					if (orderProcessDict != null) {
+						checkOrderInfoDTO.setOrderStatusKey(orderProcessDict.getId());
+					}
+					long reports = checkOrderService.reportCount(checkOrderInfoDTO);
+					dayInfoEntity.setReportOrderCount((int) reports);
+
+					orgCheckOrderDayService.save(dayInfoEntity);
+				}
+
+			} catch (Exception e) {
+				e.printStackTrace();
+				log.error(e.getMessage());
+			} finally {
+				log.info("盟市周统计,按天统计维修任务,运行完成 {}", Func.formatDateTime(new Date()));
+			}
+			return 0;
+		}
+	}
+
+	private class WeekOrgCountTask implements Callable<Integer> {
+
+		private Date reportTime;
+
+		public WeekOrgCountTask(Date reportTime) {
+			this.reportTime = reportTime;
+		}
+
+		@Override
+		public Integer call() throws Exception {
+			try {
+				log.info("盟市周统计 {} {}", Func.formatDateTime(reportTime), Func.formatDateTime(new Date()));
+				Calendar calendar = Calendar.getInstance();
+				calendar.setTime(reportTime);
+				calendar.add(Calendar.WEEK_OF_MONTH, 0);
+				calendar.set(Calendar.DAY_OF_WEEK, 2);
+				calendar.set(Calendar.HOUR_OF_DAY, 0);
+				calendar.set(Calendar.MINUTE, 0);
+				calendar.set(Calendar.SECOND, 0);
+				calendar.set(Calendar.MILLISECOND, 0);
+				//统计第几周
+				int week = calendar.get(Calendar.WEEK_OF_MONTH);
+				if (week == 1) {
+					week = 4;
+				} else {
+					week = week - 1;
+				}
+				LambdaQueryWrapper<WeekOrgCountInfoEntity> wrapper = Wrappers.<WeekOrgCountInfoEntity>query().lambda();
+				wrapper.eq(WeekOrgCountInfoEntity::getIsDeleted, 0);
+				wrapper.eq(WeekOrgCountInfoEntity::getReportTime, calendar.getTime());
+				List<WeekOrgCountInfoEntity> weekReportInfoEntityList = weekReportService.list(wrapper);
+				if (null == weekReportInfoEntityList || weekReportInfoEntityList.size() == 0) {
+					String adCode = BusinessConstant.REGION_NM_ADCODE;
+					//生成周报主记录
+					WeekOrgCountInfoEntity entity = new WeekOrgCountInfoEntity();
+					entity.setName("weekorgcount.ureport.xml");
+					entity.setReportTime(calendar.getTime());
+					SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy年MM月dd日");
+					calendar.setTime(reportTime);
+					calendar.add(Calendar.WEEK_OF_MONTH, -1);
+					calendar.set(Calendar.DAY_OF_WEEK, 2);
+					calendar.set(Calendar.HOUR_OF_DAY, 0);
+					calendar.set(Calendar.MINUTE, 0);
+					calendar.set(Calendar.SECOND, 0);
+					calendar.set(Calendar.MILLISECOND, 0);
+					entity.setReportStartTime(calendar.getTime());
+					String weekTm1 = timeFormat.format(calendar.getTime());
+					calendar.add(Calendar.DAY_OF_MONTH, 6);
+					String weekTm2 = timeFormat.format(calendar.getTime());
+					calendar.add(Calendar.DAY_OF_MONTH, 1);
+					entity.setReportEndTime(calendar.getTime());
+					entity.setReportTitle("统计时间:" + weekTm1 + "-" + weekTm2 + "第" + week + "周");
+					//测站总数
+					RtuInfoDTO rtuInfoDTO = new RtuInfoDTO();
+					rtuInfoDTO.setAdCode(adCode);
+					long rtuCount = rtuBaseInfoService.rtuCount(rtuInfoDTO);
+					entity.setRtuCount((int) rtuCount);
+					//任务总数
+					CheckOrderInfoDTO checkOrderInfoDTO = new CheckOrderInfoDTO();
+					checkOrderInfoDTO.setAdCode(adCode);
+					checkOrderInfoDTO.setReportEndDate(entity.getReportEndTime());
+					checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+					long count = checkOrderService.orderCount(checkOrderInfoDTO);
+					entity.setCheckOrderCount((int) count);
+					//未确认任务
+					checkOrderInfoDTO = new CheckOrderInfoDTO();
+					checkOrderInfoDTO.setAdCode(adCode);
+					checkOrderInfoDTO.setReportEndDate(entity.getReportEndTime());
+					checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CREATE.getCode());
+					count = checkOrderService.orderCount(checkOrderInfoDTO);
+					entity.setUnconfirmOrderCount((int) count);
+					//处理中任务
+					checkOrderInfoDTO = new CheckOrderInfoDTO();
+					checkOrderInfoDTO.setAdCode(adCode);
+					checkOrderInfoDTO.setReportEndDate(entity.getReportEndTime());
+					checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+					checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+					DictInfoEntity biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+					if (biz != null) {
+						checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+					}
+					count = checkOrderService.orderCount(checkOrderInfoDTO);
+					entity.setProcessingOrderCount((int) count);
+					//本周已处理维修任务数量
+					checkOrderInfoDTO = new CheckOrderInfoDTO();
+					checkOrderInfoDTO.setAdCode(adCode);
+					checkOrderInfoDTO.setReportStartDate(entity.getReportStartTime());
+					checkOrderInfoDTO.setReportEndDate(entity.getReportEndTime());
+					count = checkOrderService.orderReportCount(checkOrderInfoDTO);
+					entity.setReportCheckOrderCount((int) count);
+					//异常测站
+					RtuWarningInfoDTO warningInfoDTO = new RtuWarningInfoDTO();
+					warningInfoDTO.setAdCode(adCode);
+					warningInfoDTO.setEndDate(entity.getReportEndTime());
+					long warnCount = rtuWarningService.warningRtuCount(warningInfoDTO);
+					entity.setWarnRtuCount((int) warnCount);
+					//离线测站
+					warningInfoDTO = new RtuWarningInfoDTO();
+					warningInfoDTO.setAdCode(adCode);
+					warningInfoDTO.setEndDate(entity.getReportEndTime());
+					long offlineCount = rtuWarningService.warningOfflineRtuCount(warningInfoDTO);
+					entity.setOfflineRtuCount((int) offlineCount);
+					//其他异常测站
+					entity.setOthersWarnRtuCount((int) (warnCount - offlineCount));
+					weekReportService.save(entity);
+
+					//统计一周故障
+					Map<String, Integer> failureCountMap = new HashMap<>();
+					failureCountMap.put("rtu", 0);
+					failureCountMap.put("rainSensor", 0);
+					failureCountMap.put("waterLevelSensor", 0);
+					failureCountMap.put("groundLevelSensor", 0);
+					failureCountMap.put("bt", 0);
+					failureCountMap.put("sun", 0);
+					failureCountMap.put("net", 0);
+					failureCountMap.put("signl", 0);
+					checkOrderInfoDTO = new CheckOrderInfoDTO();
+					checkOrderInfoDTO.setAdCode(adCode);
+					checkOrderInfoDTO.setReportStartDate(entity.getReportStartTime());
+					checkOrderInfoDTO.setReportEndDate(entity.getReportEndTime());
+					DictInfoEntity orderProcessDict = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_PROCESS.getCode());
+					if (orderProcessDict != null) {
+						checkOrderInfoDTO.setOrderStatusKey(orderProcessDict.getId());
+					}
+					List<OrderProcessInfoVO> processInfoVOList = orderProcessService.selectReportList(checkOrderInfoDTO);
+					if (null != processInfoVOList && processInfoVOList.size() > 0) {
+						for (OrderProcessInfoVO processInfoVO : processInfoVOList) {
+							StringBuilder stringBuffer = new StringBuilder();
+							if (null != processInfoVO.getRtuStatus() && processInfoVO.getRtuStatus() == 1) {
+								stringBuffer.append("站点故障;");
+							}
+							if (null != processInfoVO.getRtuReplace() && processInfoVO.getRtuReplace() == 1) {
+								int v = failureCountMap.get("rtu");
+								v += 1;
+								failureCountMap.put("rtu", v);
+								stringBuffer.append("更换RTU;");
+							}
+							if (null != processInfoVO.getRainSensorReplace() && processInfoVO.getRainSensorReplace() == 1) {
+								int v = failureCountMap.get("rainSensor");
+								v += 1;
+								failureCountMap.put("rainSensor", v);
+								stringBuffer.append("更换雨量计;");
+							}
+							if (null != processInfoVO.getWaterSensorReplace() && processInfoVO.getWaterSensorReplace() == 1) {
+								int v = failureCountMap.get("waterLevelSensor");
+								v += 1;
+								failureCountMap.put("waterLevelSensor", v);
+								stringBuffer.append("更换水位计;");
+							}
+							if (null != processInfoVO.getGroundSensorReplace() && processInfoVO.getGroundSensorReplace() == 1) {
+								int v = failureCountMap.get("groundLevelSensor");
+								v += 1;
+								failureCountMap.put("groundLevelSensor", v);
+								stringBuffer.append("更换墒情计;");
+							}
+							if (null != processInfoVO.getBatteryReplace() && processInfoVO.getBatteryReplace() == 1) {
+								int v = failureCountMap.get("bt");
+								v += 1;
+								failureCountMap.put("bt", v);
+								stringBuffer.append("更换蓄电池;");
+							}
+							if (null != processInfoVO.getSunPowerReplace() && processInfoVO.getSunPowerReplace() == 1) {
+								int v = failureCountMap.get("sun");
+								v += 1;
+								failureCountMap.put("sun", v);
+								stringBuffer.append("更换太阳能板;");
+							}
+							if (null != processInfoVO.getNetworkOverdue() && processInfoVO.getNetworkOverdue() == 1) {
+								int v = failureCountMap.get("net");
+								v += 1;
+								failureCountMap.put("net", v);
+								stringBuffer.append("物联网卡欠费;");
+							}
+							if (null != processInfoVO.getNetworkStatus() && processInfoVO.getNetworkStatus() == 1) {
+								int v = failureCountMap.get("signl");
+								v += 1;
+								failureCountMap.put("signl", v);
+								stringBuffer.append("网络故障;");
+							}
+
+							//一周站点维修信息清单
+							WeekOrgCheckOrderReportInfoEntity reportInfoEntity = new WeekOrgCheckOrderReportInfoEntity();
+							reportInfoEntity.setReportId(entity.getId());
+							reportInfoEntity.setOrgName(processInfoVO.getAdCity());
+							reportInfoEntity.setRtuName(processInfoVO.getRtuName());
+							reportInfoEntity.setOrderId(processInfoVO.getOrderId());
+							if (null != processInfoVO.getWarnId()) {
+								RtuWarningInfoEntity rtuWarningInfoEntity = rtuWarningService.getById(processInfoVO.getWarnId());
+								if (null != rtuWarningInfoEntity) {
+									String warnKinds = "";
+									if (WarnKindEnum.WARN_CLOCK.getCode() == rtuWarningInfoEntity.getWarningKind()) {
+										warnKinds = "测站时钟异常";
+									} else if (WarnKindEnum.WARN_UP_MIN_DELAY.getCode() == rtuWarningInfoEntity.getWarningKind()) {
+										warnKinds = "5分钟上报延时";
+									} else if (WarnKindEnum.WARN_OFFLINE.getCode() == rtuWarningInfoEntity.getWarningKind()) {
+										warnKinds = "测站离线";
+									} else if (WarnKindEnum.WARN_RAIN_MISS_OUT.getCode() == rtuWarningInfoEntity.getWarningKind()) {
+										warnKinds = "雨量站小时报漏报";
+									} else if (WarnKindEnum.WARN_WL_MISS_OUT.getCode() == rtuWarningInfoEntity.getWarningKind()) {
+										warnKinds = "水位站小时报漏报";
+									} else if (WarnKindEnum.WARN_OUTLIER_VALUE.getCode() == rtuWarningInfoEntity.getWarningKind()) {
+										warnKinds = "雨量疑似异常值";
+									} else if (WarnKindEnum.WARN_RAIN_UP_HOUR_DELAY.getCode() == rtuWarningInfoEntity.getWarningKind()) {
+										warnKinds = "雨量站小时上报延时";
+									} else if (WarnKindEnum.WARN_WL_UP_HOUR_DELAY.getCode() == rtuWarningInfoEntity.getWarningKind()) {
+										warnKinds = "水位站小时上报延时";
+									}
+									reportInfoEntity.setWarnInfo(warnKinds);
+								}
+							}
+							if (stringBuffer.toString().length() > 0) {
+								reportInfoEntity.setProcessDesc(stringBuffer.toString());
+							} else {
+								reportInfoEntity.setProcessDesc(processInfoVO.getProcessDesc());
+							}
+							weekOrgCheckOrderReportService.save(reportInfoEntity);
+						}
+					}
+					WeekOrgRtuFailureInfoEntity failureInfoEntity = new WeekOrgRtuFailureInfoEntity();
+					failureInfoEntity.setReportId(entity.getId());
+					failureInfoEntity.setEquipmentName("RTU");
+					failureInfoEntity.setFailureCount(failureCountMap.get("rtu"));
+					weekOrgRtuFailureService.save(failureInfoEntity);
+					failureInfoEntity = new WeekOrgRtuFailureInfoEntity();
+					failureInfoEntity.setReportId(entity.getId());
+					failureInfoEntity.setEquipmentName("雨量计");
+					failureInfoEntity.setFailureCount(failureCountMap.get("rainSensor"));
+					weekOrgRtuFailureService.save(failureInfoEntity);
+					failureInfoEntity = new WeekOrgRtuFailureInfoEntity();
+					failureInfoEntity.setReportId(entity.getId());
+					failureInfoEntity.setEquipmentName("水位计");
+					failureInfoEntity.setFailureCount(failureCountMap.get("waterLevelSensor"));
+					weekOrgRtuFailureService.save(failureInfoEntity);
+					failureInfoEntity = new WeekOrgRtuFailureInfoEntity();
+					failureInfoEntity.setReportId(entity.getId());
+					failureInfoEntity.setEquipmentName("墒情计");
+					failureInfoEntity.setFailureCount(failureCountMap.get("groundLevelSensor"));
+					weekOrgRtuFailureService.save(failureInfoEntity);
+					failureInfoEntity = new WeekOrgRtuFailureInfoEntity();
+					failureInfoEntity.setReportId(entity.getId());
+					failureInfoEntity.setEquipmentName("蓄电池");
+					failureInfoEntity.setFailureCount(failureCountMap.get("bt"));
+					weekOrgRtuFailureService.save(failureInfoEntity);
+					failureInfoEntity = new WeekOrgRtuFailureInfoEntity();
+					failureInfoEntity.setReportId(entity.getId());
+					failureInfoEntity.setEquipmentName("太阳能板");
+					failureInfoEntity.setFailureCount(failureCountMap.get("sun"));
+					weekOrgRtuFailureService.save(failureInfoEntity);
+					failureInfoEntity = new WeekOrgRtuFailureInfoEntity();
+					failureInfoEntity.setReportId(entity.getId());
+					failureInfoEntity.setEquipmentName("物联网卡欠费");
+					failureInfoEntity.setFailureCount(failureCountMap.get("net"));
+					weekOrgRtuFailureService.save(failureInfoEntity);
+					failureInfoEntity = new WeekOrgRtuFailureInfoEntity();
+					failureInfoEntity.setReportId(entity.getId());
+					failureInfoEntity.setEquipmentName("网络信号故障");
+					failureInfoEntity.setFailureCount(failureCountMap.get("signl"));
+					weekOrgRtuFailureService.save(failureInfoEntity);
+
+					//统计维修任务、上报率
+					LambdaQueryWrapper<Dept> deptwrapper = Wrappers.<Dept>query().lambda();
+					deptwrapper.eq(Dept::getIsDeleted, 0);
+					deptwrapper.eq(Dept::getParentId, Func.toLong(BusinessConstant.DEPT_NM_ID));
+					List<Dept> root = deptService.list(deptwrapper);
+					for (Dept dept : root) {
+						WeekOrgCheckOrderInfoEntity weekOrgCheckOrderInfoEntity = new WeekOrgCheckOrderInfoEntity();
+						weekOrgCheckOrderInfoEntity.setReportId(entity.getId());
+						weekOrgCheckOrderInfoEntity.setOrgName(dept.getDeptName());
+						LambdaQueryWrapper<DeptRegionEntity> deptLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
+						deptLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, dept.getId());
+						DeptRegionEntity deptRegionEntity = deptRegionService.getOne(deptLambdaQueryWrapper);
+						LambdaQueryWrapper<RegionInfoEntity> nodeQueryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
+						nodeQueryWrapper.eq(RegionInfoEntity::getAdcd, deptRegionEntity.getAdcd());
+						RegionInfoEntity nodeRegion = regionService.getOne(nodeQueryWrapper);
+						int excludecode = 0;
+						if (nodeRegion.getParentCode().equals(BusinessConstant.REGION_NM_ADCODE)) {
+							excludecode = 1;
+						}
+						//按盟市统计维修任务
+						checkOrderInfoDTO = new CheckOrderInfoDTO();
+						checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
+						checkOrderInfoDTO.setExcludeCode(excludecode);
+						checkOrderInfoDTO.setReportEndDate(entity.getReportEndTime());
+						//任务数量
+						checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+						long orderCount = checkOrderService.orderCount(checkOrderInfoDTO);
+						weekOrgCheckOrderInfoEntity.setOrderCount((int) orderCount);
+						//未确认
+						checkOrderInfoDTO = new CheckOrderInfoDTO();
+						checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
+						checkOrderInfoDTO.setExcludeCode(excludecode);
+						checkOrderInfoDTO.setReportEndDate(entity.getReportEndTime());
+						checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+						checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CREATE.getCode());
+						count = checkOrderService.unconfirmOrderCount(checkOrderInfoDTO);
+						weekOrgCheckOrderInfoEntity.setUnconfirmOrderCount((int) count);
+						//处理中
+						checkOrderInfoDTO = new CheckOrderInfoDTO();
+						checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
+						checkOrderInfoDTO.setExcludeCode(excludecode);
+						checkOrderInfoDTO.setReportEndDate(entity.getReportEndTime());
+						checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+						checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+						biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+						if (biz != null) {
+							checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+						}
+						count = checkOrderService.unCloseOrderCount(checkOrderInfoDTO);
+						weekOrgCheckOrderInfoEntity.setProcessingOrderCount((int) count);
+						//已处理
+						checkOrderInfoDTO = new CheckOrderInfoDTO();
+						checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
+						checkOrderInfoDTO.setExcludeCode(excludecode);
+						checkOrderInfoDTO.setReportStartDate(entity.getReportStartTime());
+						checkOrderInfoDTO.setReportEndDate(entity.getReportEndTime());
+						long reportCount = checkOrderService.orderReportCount(checkOrderInfoDTO);
+						weekOrgCheckOrderInfoEntity.setReportOrderCount((int) reportCount);
+						weekOrgCheckOrderService.save(weekOrgCheckOrderInfoEntity);
+
+						//盟市上报率统计
+						WeekOrgRtuUpInfoEntity weekOrgRtuUpInfoEntity = new WeekOrgRtuUpInfoEntity();
+						weekOrgRtuUpInfoEntity.setReportId(entity.getId());
+						weekOrgRtuUpInfoEntity.setOrgName(dept.getDeptName());
+						rtuInfoDTO = new RtuInfoDTO();
+						rtuInfoDTO.setAdCode(deptRegionEntity.getAdcd());
+						rtuInfoDTO.setExcludeCode(excludecode);
+						count = rtuBaseInfoService.rtuCount(rtuInfoDTO);
+						weekOrgRtuUpInfoEntity.setRtuCount(count);
+						RtuStatusDTO rtuStatusDTO = new RtuStatusDTO();
+						rtuStatusDTO.setAdCode(deptRegionEntity.getAdcd());
+						rtuStatusDTO.setExcludeCode(excludecode);
+						rtuStatusDTO.setBeginTime(entity.getReportStartTime());
+						rtuStatusDTO.setEndTime(entity.getReportEndTime());
+						count = rtuManageService.rtuUpDataCount(rtuStatusDTO);
+						weekOrgRtuUpInfoEntity.setUpCount(count);
+						weekOrgRtuUpService.save(weekOrgRtuUpInfoEntity);
+
+						//一周站点设备更换信息
+						Map<String, Integer> orgEquipmentReplace = new HashMap<>();
+						orgEquipmentReplace.put("rtu", 0);
+						orgEquipmentReplace.put("rainSensor", 0);
+						orgEquipmentReplace.put("waterLevelSensor", 0);
+						orgEquipmentReplace.put("groundLevelSensor", 0);
+						orgEquipmentReplace.put("bt", 0);
+						orgEquipmentReplace.put("sun", 0);
+						orgEquipmentReplace.put("net", 0);
+						checkOrderInfoDTO = new CheckOrderInfoDTO();
+						checkOrderInfoDTO.setExcludeCode(excludecode);
+						checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
+						checkOrderInfoDTO.setReportStartDate(entity.getReportStartTime());
+						checkOrderInfoDTO.setReportEndDate(entity.getReportEndTime());
+						if (orderProcessDict != null) {
+							checkOrderInfoDTO.setOrderStatusKey(orderProcessDict.getId());
+						}
+						processInfoVOList = orderProcessService.selectReportList(checkOrderInfoDTO);
+						if (null != processInfoVOList && processInfoVOList.size() > 0) {
+							for (OrderProcessInfoVO processInfoVO : processInfoVOList) {
+								if (null != processInfoVO.getRtuReplace() && processInfoVO.getRtuReplace() == 1) {
+									int v = orgEquipmentReplace.get("rtu");
+									v += 1;
+									orgEquipmentReplace.put("rtu", v);
+								}
+								if (null != processInfoVO.getRainSensorReplace() && processInfoVO.getRainSensorReplace() == 1) {
+									int v = orgEquipmentReplace.get("rainSensor");
+									v += 1;
+									orgEquipmentReplace.put("rainSensor", v);
+								}
+								if (null != processInfoVO.getWaterSensorReplace() && processInfoVO.getWaterSensorReplace() == 1) {
+									int v = orgEquipmentReplace.get("waterLevelSensor");
+									v += 1;
+									orgEquipmentReplace.put("waterLevelSensor", v);
+								}
+								if (null != processInfoVO.getGroundSensorReplace() && processInfoVO.getGroundSensorReplace() == 1) {
+									int v = orgEquipmentReplace.get("groundLevelSensor");
+									v += 1;
+									orgEquipmentReplace.put("groundLevelSensor", v);
+								}
+								if (null != processInfoVO.getBatteryReplace() && processInfoVO.getBatteryReplace() == 1) {
+									int v = orgEquipmentReplace.get("bt");
+									v += 1;
+									orgEquipmentReplace.put("bt", v);
+								}
+								if (null != processInfoVO.getSunPowerReplace() && processInfoVO.getSunPowerReplace() == 1) {
+									int v = orgEquipmentReplace.get("sun");
+									v += 1;
+									orgEquipmentReplace.put("sun", v);
+								}
+								if (null != processInfoVO.getNetworkOverdue() && processInfoVO.getNetworkOverdue() == 1) {
+									int v = orgEquipmentReplace.get("net");
+									v += 1;
+									orgEquipmentReplace.put("net", v);
+								}
+							}
+						}
+						//一周站点更换信息清单
+						int replaceCount = orgEquipmentReplace.get("rtu");
+						if (replaceCount > 0) {
+							WeekOrgEquipmentReplaceInfoEntity equipmentReplaceInfoEntity = new WeekOrgEquipmentReplaceInfoEntity();
+							equipmentReplaceInfoEntity.setReportId(entity.getId());
+							equipmentReplaceInfoEntity.setOrgName(dept.getDeptName());
+							equipmentReplaceInfoEntity.setEquipmentName("RTU");
+							equipmentReplaceInfoEntity.setReplaceCount(replaceCount);
+							weekOrgEquipmentReplaceService.save(equipmentReplaceInfoEntity);
+						}
+						replaceCount = orgEquipmentReplace.get("rainSensor");
+						if (replaceCount > 0) {
+							WeekOrgEquipmentReplaceInfoEntity equipmentReplaceInfoEntity = new WeekOrgEquipmentReplaceInfoEntity();
+							equipmentReplaceInfoEntity.setReportId(entity.getId());
+							equipmentReplaceInfoEntity.setOrgName(dept.getDeptName());
+							equipmentReplaceInfoEntity.setEquipmentName("雨量计");
+							equipmentReplaceInfoEntity.setReplaceCount(replaceCount);
+							weekOrgEquipmentReplaceService.save(equipmentReplaceInfoEntity);
+						}
+						replaceCount = orgEquipmentReplace.get("waterLevelSensor");
+						if (replaceCount > 0) {
+							WeekOrgEquipmentReplaceInfoEntity equipmentReplaceInfoEntity = new WeekOrgEquipmentReplaceInfoEntity();
+							equipmentReplaceInfoEntity.setReportId(entity.getId());
+							equipmentReplaceInfoEntity.setOrgName(dept.getDeptName());
+							equipmentReplaceInfoEntity.setEquipmentName("水位计");
+							equipmentReplaceInfoEntity.setReplaceCount(replaceCount);
+							weekOrgEquipmentReplaceService.save(equipmentReplaceInfoEntity);
+						}
+						replaceCount = orgEquipmentReplace.get("groundLevelSensor");
+						if (replaceCount > 0) {
+							WeekOrgEquipmentReplaceInfoEntity equipmentReplaceInfoEntity = new WeekOrgEquipmentReplaceInfoEntity();
+							equipmentReplaceInfoEntity.setReportId(entity.getId());
+							equipmentReplaceInfoEntity.setOrgName(dept.getDeptName());
+							equipmentReplaceInfoEntity.setEquipmentName("墒情计");
+							equipmentReplaceInfoEntity.setReplaceCount(replaceCount);
+							weekOrgEquipmentReplaceService.save(equipmentReplaceInfoEntity);
+						}
+						replaceCount = orgEquipmentReplace.get("bt");
+						if (replaceCount > 0) {
+							WeekOrgEquipmentReplaceInfoEntity equipmentReplaceInfoEntity = new WeekOrgEquipmentReplaceInfoEntity();
+							equipmentReplaceInfoEntity.setReportId(entity.getId());
+							equipmentReplaceInfoEntity.setOrgName(dept.getDeptName());
+							equipmentReplaceInfoEntity.setEquipmentName("蓄电池");
+							equipmentReplaceInfoEntity.setReplaceCount(replaceCount);
+							weekOrgEquipmentReplaceService.save(equipmentReplaceInfoEntity);
+						}
+						replaceCount = orgEquipmentReplace.get("sun");
+						if (replaceCount > 0) {
+							WeekOrgEquipmentReplaceInfoEntity equipmentReplaceInfoEntity = new WeekOrgEquipmentReplaceInfoEntity();
+							equipmentReplaceInfoEntity.setReportId(entity.getId());
+							equipmentReplaceInfoEntity.setOrgName(dept.getDeptName());
+							equipmentReplaceInfoEntity.setEquipmentName("太阳能板");
+							equipmentReplaceInfoEntity.setReplaceCount(replaceCount);
+							weekOrgEquipmentReplaceService.save(equipmentReplaceInfoEntity);
+						}
+						replaceCount = orgEquipmentReplace.get("net");
+						if (replaceCount > 0) {
+							WeekOrgEquipmentReplaceInfoEntity equipmentReplaceInfoEntity = new WeekOrgEquipmentReplaceInfoEntity();
+							equipmentReplaceInfoEntity.setReportId(entity.getId());
+							equipmentReplaceInfoEntity.setOrgName(dept.getDeptName());
+							equipmentReplaceInfoEntity.setEquipmentName("物联网卡欠费");
+							equipmentReplaceInfoEntity.setReplaceCount(replaceCount);
+							weekOrgEquipmentReplaceService.save(equipmentReplaceInfoEntity);
+						}
+					}
+				}
+			} catch (Exception e) {
+				log.error("{}", e.getMessage());
+			} finally {
+				log.info("周统计结束 {}", Func.formatDateTime(new Date()));
+			}
+			return 0;
+		}
+	}
+}

+ 279 - 0
src/main/java/org/springblade/jobtask/RtuUpCountProcessor.java

@@ -0,0 +1,279 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 山洪灾害运维系统
+ * 创建日期:2023/8/21
+ */
+package org.springblade.jobtask;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.extern.slf4j.Slf4j;
+import org.glassfish.jersey.internal.guava.ThreadFactoryBuilder;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
+import org.springblade.modules.baseinfo.rtu.service.IRtuBaseInfoService;
+import org.springblade.modules.business.data.dto.*;
+import org.springblade.modules.business.data.service.*;
+import org.springblade.modules.business.upcount.dto.RtuUpCountInfoDTO;
+import org.springblade.modules.business.upcount.entity.RtuUpCountInfoEntity;
+import org.springblade.modules.business.upcount.service.IRtuUpCountService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.*;
+
+/***
+ * Date:2023/8/21
+ * Title: 测站上报率统计
+ * Description:按小时统计上报率,按天统计上报率
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Slf4j
+@Component
+@EnableScheduling
+public class RtuUpCountProcessor {
+	private static ThreadFactory upCountThreadFactory = new ThreadFactoryBuilder().setNameFormat("up-count-thread-pool-%d").build();
+	private static ExecutorService upCountThreadPool = new ThreadPoolExecutor(1, 1,
+		0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(1024), upCountThreadFactory, new ThreadPoolExecutor.AbortPolicy());
+
+	@Resource
+	private IRtuUpCountService upCountService;
+
+	@Resource
+	private IRtuBaseInfoService rtuBaseInfoService;
+
+	@Resource
+	private IRtuDataRainStoreService rainStoreService;
+
+	@Resource
+	private IRtuDataWaterLevelStoreService waterLevelStoreService;
+
+	@Resource
+	private IRtuDataGroundStoreService groundStoreService;
+
+	@Value("${spring.task-config.rtu-datagram-up-task}")
+	private boolean rtuDatagramUpRun;
+
+
+	@Scheduled(cron = "10 0 0/1 * * *")
+	public void upHourCountTask() {
+		if(rtuDatagramUpRun) {
+			log.info("按小时上报率统计任务创建 {}", Func.formatDateTime(new Date()));
+			UpHourCountTask task = new UpHourCountTask(LocalDateTime.now());
+			FutureTask<Integer> futureTask = new FutureTask<>(task);
+			upCountThreadPool.execute(futureTask);
+		}
+	}
+
+	@Scheduled(cron = "20 0 0 0/1 * *")
+	public void upDayCountTask() {
+		if(rtuDatagramUpRun) {
+			log.info("按天上报率统计任务创建 {}", Func.formatDateTime(new Date()));
+			UpDayCountTask task = new UpDayCountTask(LocalDateTime.now());
+			FutureTask<Integer> futureTask = new FutureTask<>(task);
+			upCountThreadPool.execute(futureTask);
+		}
+	}
+
+	private class UpHourCountTask implements Callable<Integer> {
+		private LocalDateTime checkTime;
+
+		public UpHourCountTask(LocalDateTime checkTime) {
+			this.checkTime = checkTime;
+		}
+
+		@Override
+		public Integer call() throws Exception {
+			LambdaQueryWrapper<RtuInfoEntity> rtuWrapper = Wrappers.<RtuInfoEntity>query().lambda();
+			rtuWrapper.eq(RtuInfoEntity::getIsDeleted, 0);
+			List<RtuInfoEntity> list = rtuBaseInfoService.list(rtuWrapper);
+			for (RtuInfoEntity entity : list) {
+				//统计雨量站
+				if (entity.getIsRain() != null && entity.getIsRain() == 1) {
+					LambdaQueryWrapper<RtuUpCountInfoEntity> wrapper = Wrappers.<RtuUpCountInfoEntity>query().lambda();
+					wrapper.eq(RtuUpCountInfoEntity::getRtuCode, entity.getRtuCode());
+					wrapper.eq(RtuUpCountInfoEntity::getTimeKind, 1);
+					wrapper.eq(RtuUpCountInfoEntity::getUpKind, 1);
+					LocalDateTime et = checkTime.withMinute(0).withSecond(0).withNano(0);
+					LocalDateTime st = et.minusHours(1);
+					wrapper.eq(RtuUpCountInfoEntity::getCountTime, Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+					long count = upCountService.count(wrapper);
+					if (count == 0) {
+						RtuDataRainDTO dataRainDTO = new RtuDataRainDTO();
+						dataRainDTO.setRtuCode(entity.getRtuCode());
+						dataRainDTO.setBeginTime(Date.from(st.atZone(ZoneId.systemDefault()).toInstant()));
+						dataRainDTO.setEndTime(Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+						long upCount = rainStoreService.rtuUpDataCount(dataRainDTO);
+						RtuUpCountInfoEntity rtuUpCountInfoEntity = new RtuUpCountInfoEntity();
+						rtuUpCountInfoEntity.setRtuCode(entity.getRtuCode());
+						rtuUpCountInfoEntity.setTimeKind(1);
+						rtuUpCountInfoEntity.setUpKind(1);
+						rtuUpCountInfoEntity.setCountTime(Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+						rtuUpCountInfoEntity.setUpCount((int) upCount);
+						upCountService.save(rtuUpCountInfoEntity);
+					}
+				}
+				//统计水位
+				if ((entity.getIsRes() != null && entity.getIsRes() == 1) || (entity.getIsRiver() != null && entity.getIsRiver() == 1)) {
+					LambdaQueryWrapper<RtuUpCountInfoEntity> wrapper = Wrappers.<RtuUpCountInfoEntity>query().lambda();
+					wrapper.eq(RtuUpCountInfoEntity::getRtuCode, entity.getRtuCode());
+					wrapper.eq(RtuUpCountInfoEntity::getTimeKind, 1);
+					wrapper.eq(RtuUpCountInfoEntity::getUpKind, 3);
+					LocalDateTime et = checkTime.withMinute(0).withSecond(0).withNano(0);
+					LocalDateTime st = et.minusHours(1);
+					wrapper.eq(RtuUpCountInfoEntity::getCountTime, Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+					long count = upCountService.count(wrapper);
+					if (count == 0) {
+						RtuDataWaterLevelDTO dto = new RtuDataWaterLevelDTO();
+						dto.setRtuCode(entity.getRtuCode());
+						dto.setBeginTime(Date.from(st.atZone(ZoneId.systemDefault()).toInstant()));
+						dto.setEndTime(Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+						long upCount = waterLevelStoreService.rtuUpDataCount(dto);
+						RtuUpCountInfoEntity rtuUpCountInfoEntity = new RtuUpCountInfoEntity();
+						rtuUpCountInfoEntity.setRtuCode(entity.getRtuCode());
+						rtuUpCountInfoEntity.setTimeKind(1);
+						rtuUpCountInfoEntity.setUpKind(3);
+						rtuUpCountInfoEntity.setCountTime(Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+						rtuUpCountInfoEntity.setUpCount((int) upCount);
+						upCountService.save(rtuUpCountInfoEntity);
+					}
+				}
+				//墒情
+				if (entity.getIsGround() != null && entity.getIsGround() == 1) {
+					LambdaQueryWrapper<RtuUpCountInfoEntity> wrapper = Wrappers.<RtuUpCountInfoEntity>query().lambda();
+					wrapper.eq(RtuUpCountInfoEntity::getRtuCode, entity.getRtuCode());
+					wrapper.eq(RtuUpCountInfoEntity::getTimeKind, 1);
+					wrapper.eq(RtuUpCountInfoEntity::getUpKind, 4);
+					LocalDateTime et = checkTime.withMinute(0).withSecond(0).withNano(0);
+					LocalDateTime st = et.minusHours(1);
+					wrapper.eq(RtuUpCountInfoEntity::getCountTime, Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+					long count = upCountService.count(wrapper);
+					if (count == 0) {
+						RtuDataGroundDTO dataGroundDTO = new RtuDataGroundDTO();
+						dataGroundDTO.setRtuCode(entity.getRtuCode());
+						dataGroundDTO.setBeginTime(Date.from(st.atZone(ZoneId.systemDefault()).toInstant()));
+						dataGroundDTO.setEndTime(Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+						long upCount = groundStoreService.rtuUpDataCount(dataGroundDTO);
+						RtuUpCountInfoEntity rtuUpCountInfoEntity = new RtuUpCountInfoEntity();
+						rtuUpCountInfoEntity.setRtuCode(entity.getRtuCode());
+						rtuUpCountInfoEntity.setTimeKind(1);
+						rtuUpCountInfoEntity.setUpKind(4);
+						rtuUpCountInfoEntity.setCountTime(Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+						rtuUpCountInfoEntity.setUpCount((int) upCount);
+						upCountService.save(rtuUpCountInfoEntity);
+					}
+				}
+			}
+			return 0;
+		}
+	}
+
+	private class UpDayCountTask implements Callable<Integer> {
+		private LocalDateTime checkTime;
+
+		public UpDayCountTask(LocalDateTime checkTime) {
+			this.checkTime = checkTime;
+		}
+
+		@Override
+		public Integer call() throws Exception {
+			LambdaQueryWrapper<RtuInfoEntity> rtuWrapper = Wrappers.<RtuInfoEntity>query().lambda();
+			rtuWrapper.eq(RtuInfoEntity::getIsDeleted, 0);
+			List<RtuInfoEntity> list = rtuBaseInfoService.list(rtuWrapper);
+			for (RtuInfoEntity entity : list) {
+				//统计雨量站
+				if (entity.getIsRain() != null && entity.getIsRain() == 1) {
+					LambdaQueryWrapper<RtuUpCountInfoEntity> wrapper = Wrappers.<RtuUpCountInfoEntity>query().lambda();
+					wrapper.eq(RtuUpCountInfoEntity::getRtuCode, entity.getRtuCode());
+					wrapper.eq(RtuUpCountInfoEntity::getTimeKind, 2);
+					wrapper.eq(RtuUpCountInfoEntity::getUpKind, 1);
+					LocalDateTime et = checkTime.withHour(0).withMinute(0).withSecond(0).withNano(0);
+					LocalDateTime st = et.minusDays(1);
+					wrapper.eq(RtuUpCountInfoEntity::getCountTime, Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+					long count = upCountService.count(wrapper);
+					if (count == 0) {
+						RtuUpCountInfoDTO dto = new RtuUpCountInfoDTO();
+						dto.setRtuCode(entity.getRtuCode());
+						dto.setUpKind(1);
+						dto.setTimeKind(1);
+						dto.setBeginTime(Date.from(st.atZone(ZoneId.systemDefault()).toInstant()));
+						dto.setEndTime(Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+						long upCount = upCountService.upCount(dto);
+						RtuUpCountInfoEntity rtuUpCountInfoEntity = new RtuUpCountInfoEntity();
+						rtuUpCountInfoEntity.setRtuCode(entity.getRtuCode());
+						rtuUpCountInfoEntity.setTimeKind(2);
+						rtuUpCountInfoEntity.setUpKind(1);
+						rtuUpCountInfoEntity.setCountTime(Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+						rtuUpCountInfoEntity.setUpCount((int) upCount);
+						upCountService.save(rtuUpCountInfoEntity);
+					}
+				}
+				//统计水位
+				if ((entity.getIsRes() != null && entity.getIsRes() == 1) || (entity.getIsRiver() != null && entity.getIsRiver() == 1)) {
+					LambdaQueryWrapper<RtuUpCountInfoEntity> wrapper = Wrappers.<RtuUpCountInfoEntity>query().lambda();
+					wrapper.eq(RtuUpCountInfoEntity::getRtuCode, entity.getRtuCode());
+					wrapper.eq(RtuUpCountInfoEntity::getTimeKind, 2);
+					wrapper.eq(RtuUpCountInfoEntity::getUpKind, 3);
+					LocalDateTime et = checkTime.withHour(0).withMinute(0).withSecond(0).withNano(0);
+					LocalDateTime st = et.minusDays(1);
+					wrapper.eq(RtuUpCountInfoEntity::getCountTime, Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+					long count = upCountService.count(wrapper);
+					if (count == 0) {
+						RtuUpCountInfoDTO dto = new RtuUpCountInfoDTO();
+						dto.setRtuCode(entity.getRtuCode());
+						dto.setUpKind(3);
+						dto.setTimeKind(1);
+						dto.setBeginTime(Date.from(st.atZone(ZoneId.systemDefault()).toInstant()));
+						dto.setEndTime(Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+						long upCount = upCountService.upCount(dto);
+						RtuUpCountInfoEntity rtuUpCountInfoEntity = new RtuUpCountInfoEntity();
+						rtuUpCountInfoEntity.setRtuCode(entity.getRtuCode());
+						rtuUpCountInfoEntity.setTimeKind(2);
+						rtuUpCountInfoEntity.setUpKind(3);
+						rtuUpCountInfoEntity.setCountTime(Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+						rtuUpCountInfoEntity.setUpCount((int) upCount);
+						upCountService.save(rtuUpCountInfoEntity);
+					}
+				}
+				//墒情
+				if (entity.getIsGround() != null && entity.getIsGround() == 1) {
+					LambdaQueryWrapper<RtuUpCountInfoEntity> wrapper = Wrappers.<RtuUpCountInfoEntity>query().lambda();
+					wrapper.eq(RtuUpCountInfoEntity::getRtuCode, entity.getRtuCode());
+					wrapper.eq(RtuUpCountInfoEntity::getTimeKind, 2);
+					wrapper.eq(RtuUpCountInfoEntity::getUpKind, 4);
+					LocalDateTime et = checkTime.withHour(0).withMinute(0).withSecond(0).withNano(0);
+					LocalDateTime st = et.minusDays(1);
+					wrapper.eq(RtuUpCountInfoEntity::getCountTime, Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+					long count = upCountService.count(wrapper);
+					if (count == 0) {
+						RtuUpCountInfoDTO dto = new RtuUpCountInfoDTO();
+						dto.setRtuCode(entity.getRtuCode());
+						dto.setUpKind(4);
+						dto.setTimeKind(1);
+						dto.setBeginTime(Date.from(st.atZone(ZoneId.systemDefault()).toInstant()));
+						dto.setEndTime(Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+						long upCount = upCountService.upCount(dto);
+						RtuUpCountInfoEntity rtuUpCountInfoEntity = new RtuUpCountInfoEntity();
+						rtuUpCountInfoEntity.setRtuCode(entity.getRtuCode());
+						rtuUpCountInfoEntity.setTimeKind(2);
+						rtuUpCountInfoEntity.setUpKind(4);
+						rtuUpCountInfoEntity.setCountTime(Date.from(et.atZone(ZoneId.systemDefault()).toInstant()));
+						rtuUpCountInfoEntity.setUpCount((int) upCount);
+						upCountService.save(rtuUpCountInfoEntity);
+					}
+				}
+			}
+			return 0;
+		}
+	}
+}

+ 40 - 0
src/main/java/org/springblade/jobtask/TaskManager.java

@@ -0,0 +1,40 @@
+/**
+ * Copyright
+ * All right reserved.
+ * 项目名称:运维系统
+ * 创建日期:2022/5/23
+ */
+package org.springblade.jobtask;
+
+
+import lombok.extern.slf4j.Slf4j;
+import org.glassfish.jersey.internal.guava.ThreadFactoryBuilder;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.*;
+
+/***
+ * Date:2022/5/22
+ * Title: 任务执行线程池
+ * Description:任务执行线程池
+ * @author swp
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Slf4j
+@Component
+@EnableScheduling
+public class TaskManager {
+
+	/**
+	 * 公共线程池
+	 **/
+	private static ThreadFactory publicThreadFactory = new ThreadFactoryBuilder().setNameFormat("task-thread-pool-%d").build();
+	private static ExecutorService publicThreadPool = new ThreadPoolExecutor(1, 2,
+		0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(1024), publicThreadFactory, new ThreadPoolExecutor.AbortPolicy());
+
+	public void submitTask(FutureTask<Integer> futureTask) {
+		publicThreadPool.execute(futureTask);
+	}
+}

+ 379 - 0
src/main/java/org/springblade/jobtask/TestDataProcessor.java

@@ -0,0 +1,379 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称:
+ * 创建日期:2023/8/4
+ */
+package org.springblade.jobtask;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.extern.slf4j.Slf4j;
+import org.glassfish.jersey.internal.guava.ThreadFactoryBuilder;
+import org.springblade.etl.entity.EtlGroundDataEntity;
+import org.springblade.etl.entity.EtlRainDataEntity;
+import org.springblade.etl.entity.EtlRiverDataEntity;
+import org.springblade.etl.entity.EtlRsvrDataEntity;
+import org.springblade.modules.baseinfo.rtu.dto.RtuInfoDTO;
+import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
+import org.springblade.modules.baseinfo.rtu.service.IRtuBaseInfoService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.kafka.core.KafkaTemplate;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.*;
+
+/***
+ * Date:2023/8/4
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Slf4j
+@Component
+@EnableScheduling
+public class TestDataProcessor {
+
+
+	private static ThreadFactory testDataThreadFactory = new ThreadFactoryBuilder().setNameFormat("test-data-task-thread-pool-%d").build();
+	private static ExecutorService testDataThreadPool = new ThreadPoolExecutor(1, 2,
+		0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(1024), testDataThreadFactory, new ThreadPoolExecutor.AbortPolicy());
+
+	@Value("${spring.task-config.test-task}")
+	private boolean testTaskRun;
+
+	@Resource
+	private KafkaTemplate<String, String> kafkaTemplate;
+
+	@Resource
+	private IRtuBaseInfoService rtuBaseInfoService;
+
+	/**
+	 * 测试线程,5分钟执行一次
+	 */
+	@Scheduled(cron = "5 0/5 * * * * ")
+	public void testMinTask() {
+		try {
+			if (testTaskRun) {
+//				Calendar calendar = Calendar.getInstance();
+//				int min = calendar.get(Calendar.MINUTE);
+//				if (min > 0) {
+//					TestDataTask warningTask = new TestDataTask(new Date());
+//					FutureTask<Integer> futureTask = new FutureTask<>(warningTask);
+//					testDataThreadPool.execute(futureTask);
+//				}
+			}
+		} catch (Exception e) {
+			log.error("{}", e.getMessage());
+		}
+	}
+
+	/**
+	 * 测试线程,1小时执行一次
+	 */
+	@Scheduled(cron = "10 0 0/1 * * * ")
+	public void testHourTask() {
+		try {
+			if (testTaskRun) {
+//				TestDataHourTask warningTask = new TestDataHourTask(new Date());
+//				FutureTask<Integer> futureTask = new FutureTask<>(warningTask);
+//				testDataThreadPool.execute(futureTask);
+			}
+		} catch (Exception e) {
+			log.error("{}", e.getMessage());
+		}
+	}
+
+	private class TestDataTask implements Callable<Integer> {
+		private Date dt;
+
+		public TestDataTask(Date dt) {
+			this.dt = dt;
+		}
+
+		@Override
+		public Integer call() throws Exception {
+			try {
+				LambdaQueryWrapper<RtuInfoEntity> dataWrapper = Wrappers.<RtuInfoEntity>query().lambda();
+				dataWrapper.eq(RtuInfoEntity::getIsDeleted, 0);
+				List<RtuInfoEntity> list = rtuBaseInfoService.list(dataWrapper);
+				for (RtuInfoEntity entity : list) {
+					//log.info("test data {}", entity.getRtuCode());
+//					if (entity.getRtuCode().equals("01718525") || entity.getRtuCode().equals("01718530") || entity.getRtuCode().equals("01718550") || entity.getRtuCode().equals("01740030")) {
+//						continue;
+//					}
+//					if (entity.getRtuCode().equals("01740040") || entity.getRtuCode().equals("01740110") || entity.getRtuCode().equals("01740150") || entity.getRtuCode().equals("01740160")) {
+//						continue;
+//					}
+
+					if (entity.getIsRain() != null && entity.getIsRain() == 1) {
+						String topic = "topic-etl-rain-data";
+						EtlRainDataEntity lastRainDataEntity = new EtlRainDataEntity();
+						lastRainDataEntity.setRtuCode(entity.getRtuCode());
+
+						lastRainDataEntity.setDrp(1.5);
+						Calendar calendar = Calendar.getInstance();
+						calendar.setTime(dt);
+						calendar.set(Calendar.SECOND, 0);
+						//	lastRainDataEntity.setTm(calendar.getTime());
+//						if (entity.getRtuCode().equals("01740330")) {
+//							calendar.set(Calendar.SECOND, 1);
+//							lastRainDataEntity.setFromDate(calendar.getTime());
+//							calendar.set(Calendar.SECOND, 0);
+//							calendar.add(Calendar.MINUTE, -15);
+//							lastRainDataEntity.setTm(calendar.getTime());
+//						} else if (entity.getRtuCode().equals("40517675")) {
+//							calendar.set(Calendar.SECOND, 1);
+//							lastRainDataEntity.setFromDate(calendar.getTime());
+//							calendar.set(Calendar.SECOND, 0);
+//							calendar.add(Calendar.MINUTE, -20);
+//							lastRainDataEntity.setTm(calendar.getTime());
+//						} else if (entity.getRtuCode().equals("01751240")) {
+//							calendar.set(Calendar.SECOND, 1);
+//							lastRainDataEntity.setFromDate(calendar.getTime());
+//							calendar.set(Calendar.SECOND, 0);
+//							calendar.add(Calendar.MINUTE, -20);
+//							lastRainDataEntity.setTm(calendar.getTime());
+//						} else {
+						lastRainDataEntity.setTm(calendar.getTime());
+						calendar.set(Calendar.SECOND, 1);
+						lastRainDataEntity.setFromDate(calendar.getTime());
+						//}
+//						lastRainDataEntity.setTm(calendar.getTime());
+//						calendar.set(Calendar.SECOND, 1);
+//						lastRainDataEntity.setFromDate(calendar.getTime());
+
+						lastRainDataEntity.setIntv(0.05);
+						//通过KAFKA发送最新一条数据
+						String jsonText = JSONObject.toJSONString(lastRainDataEntity);
+						kafkaTemplate.send(topic, jsonText);
+					}
+					if (entity.getIsRes() != null && entity.getIsRes() == 1) {
+						String topic = "topic-etl-rsvr-data";
+						EtlRsvrDataEntity rsvrDataEntity = new EtlRsvrDataEntity();
+						rsvrDataEntity.setRtuCode(entity.getRtuCode());
+
+						rsvrDataEntity.setRz(15.0);
+						Calendar calendar = Calendar.getInstance();
+						calendar.setTime(dt);
+						calendar.set(Calendar.SECOND, 0);
+
+
+						rsvrDataEntity.setTm(calendar.getTime());
+						calendar.set(Calendar.SECOND, 1);
+						rsvrDataEntity.setFromDate(calendar.getTime());
+
+
+						//通过KAFKA发送最新一条数据
+						String jsonText = JSONObject.toJSONString(rsvrDataEntity);
+						kafkaTemplate.send(topic, jsonText);
+					}
+					if (entity.getIsRiver() != null && entity.getIsRiver() == 1) {
+						String topic = "topic-etl-river-data";
+						EtlRiverDataEntity riverDataEntity = new EtlRiverDataEntity();
+						riverDataEntity.setRtuCode(entity.getRtuCode());
+
+						riverDataEntity.setZ(1.5);
+						Calendar calendar = Calendar.getInstance();
+						calendar.setTime(dt);
+						calendar.set(Calendar.SECOND, 0);
+
+						;
+						riverDataEntity.setTm(calendar.getTime());
+						calendar.set(Calendar.SECOND, 1);
+						riverDataEntity.setFromDate(calendar.getTime());
+
+
+						//通过KAFKA发送最新一条数据
+						String jsonText = JSONObject.toJSONString(riverDataEntity);
+						kafkaTemplate.send(topic, jsonText);
+					}
+				}
+
+			} catch (Exception e) {
+				e.printStackTrace();
+				log.error("测试数据任务异常 {}", e.getMessage());
+			}
+			return 0;
+		}
+	}
+
+
+	private class TestDataHourTask implements Callable<Integer> {
+		private Date dt;
+
+		public TestDataHourTask(Date dt) {
+			this.dt = dt;
+		}
+
+		@Override
+		public Integer call() throws Exception {
+			try {
+				RtuInfoDTO dto = new RtuInfoDTO();
+				List<RtuInfoEntity> list = rtuBaseInfoService.rtuList(dto);
+				for (RtuInfoEntity entity : list) {
+//					if (entity.getRtuCode().equals("01718525") || entity.getRtuCode().equals("01718530") || entity.getRtuCode().equals("01718550") || entity.getRtuCode().equals("01740030")) {
+//						continue;
+//					}
+//					if (entity.getRtuCode().equals("01740040") || entity.getRtuCode().equals("01740110") || entity.getRtuCode().equals("01740150") || entity.getRtuCode().equals("01740160")) {
+//						continue;
+//					}
+//					if (entity.getRtuCode().equals("01717200")) {
+//						log.info("01717200");
+//					}
+					if (entity.getIsRain() != null && entity.getIsRain() == 1) {
+						String topic = "topic-etl-rain-data";
+						EtlRainDataEntity lastRainDataEntity = new EtlRainDataEntity();
+						lastRainDataEntity.setRtuCode(entity.getRtuCode());
+						lastRainDataEntity.setDrp(1.5);
+						Calendar calendar = Calendar.getInstance();
+						calendar.setTime(dt);
+						calendar.set(Calendar.SECOND, 0);
+						calendar.set(Calendar.MINUTE, 0);
+//						if (entity.getRtuCode().equals("40509005")) {
+//							calendar.set(Calendar.SECOND, 1);
+//							lastRainDataEntity.setFromDate(calendar.getTime());
+//
+//
+//							calendar.add(Calendar.HOUR_OF_DAY, -1);
+//							calendar.add(Calendar.MINUTE, -1);
+//							lastRainDataEntity.setTm(calendar.getTime());
+//
+//						} else {
+						lastRainDataEntity.setTm(calendar.getTime());
+						calendar.set(Calendar.SECOND, 1);
+						lastRainDataEntity.setFromDate(calendar.getTime());
+						//}
+						lastRainDataEntity.setIntv(1.0);
+						//通过KAFKA发送最新一条数据
+						String jsonText = JSONObject.toJSONString(lastRainDataEntity);
+						kafkaTemplate.send(topic, jsonText);
+					}
+					if (entity.getIsRes() != null && entity.getIsRes() == 1) {
+						String topic = "topic-etl-rsvr-data";
+						EtlRsvrDataEntity rsvrDataEntity = new EtlRsvrDataEntity();
+						rsvrDataEntity.setRtuCode(entity.getRtuCode());
+						rsvrDataEntity.setRz(15.0);
+						Calendar calendar = Calendar.getInstance();
+						calendar.setTime(dt);
+						calendar.set(Calendar.SECOND, 0);
+						calendar.set(Calendar.MINUTE, 0);
+//						if (entity.getRtuCode().equals("10001001")) {
+//							calendar.set(Calendar.SECOND, 1);
+//							rsvrDataEntity.setFromDate(calendar.getTime());
+//
+//							calendar.add(Calendar.HOUR_OF_DAY, -1);
+//							calendar.add(Calendar.MINUTE, -1);
+//							rsvrDataEntity.setTm(calendar.getTime());
+//
+//						}
+//						 if (entity.getRtuCode().equals("01710140")) {
+//							calendar.set(Calendar.SECOND, 1);
+//							rsvrDataEntity.setFromDate(calendar.getTime());
+//
+//							calendar.add(Calendar.HOUR_OF_DAY, -1);
+//							calendar.add(Calendar.MINUTE, -1);
+//							rsvrDataEntity.setTm(calendar.getTime());
+//
+//
+//						} else {
+						rsvrDataEntity.setTm(calendar.getTime());
+						calendar.set(Calendar.SECOND, 1);
+						rsvrDataEntity.setFromDate(calendar.getTime());
+						//}
+
+						//通过KAFKA发送最新一条数据
+						String jsonText = JSONObject.toJSONString(rsvrDataEntity);
+						kafkaTemplate.send(topic, jsonText);
+					}
+					if (entity.getIsRiver() != null && entity.getIsRiver() == 1) {
+						String topic = "topic-etl-river-data";
+						EtlRiverDataEntity riverDataEntity = new EtlRiverDataEntity();
+						riverDataEntity.setRtuCode(entity.getRtuCode());
+						riverDataEntity.setZ(1.5);
+						Calendar calendar = Calendar.getInstance();
+						calendar.setTime(dt);
+						calendar.set(Calendar.SECOND, 0);
+						calendar.set(Calendar.MINUTE, 0);
+//						if (entity.getRtuCode().equals("11300640")) {
+//							calendar.set(Calendar.SECOND, 1);
+//							riverDataEntity.setFromDate(calendar.getTime());
+//
+//
+//							calendar.add(Calendar.HOUR_OF_DAY, -1);
+//							calendar.add(Calendar.MINUTE, -1);
+//							riverDataEntity.setTm(calendar.getTime());
+//
+//						} else if (entity.getRtuCode().equals("10215700")) {
+//							calendar.set(Calendar.SECOND, 1);
+//							riverDataEntity.setFromDate(calendar.getTime());
+//
+//
+//							calendar.add(Calendar.HOUR_OF_DAY, -1);
+//							calendar.add(Calendar.MINUTE, -1);
+//							riverDataEntity.setTm(calendar.getTime());
+//
+//						} else {
+						riverDataEntity.setTm(calendar.getTime());
+						calendar.set(Calendar.SECOND, 1);
+						riverDataEntity.setFromDate(calendar.getTime());
+						//	}
+
+						//通过KAFKA发送最新一条数据
+						String jsonText = JSONObject.toJSONString(riverDataEntity);
+						kafkaTemplate.send(topic, jsonText);
+					}
+					if (entity.getIsGround() != null && entity.getIsGround() == 1) {
+						String topic = "topic-etl-ground-data";
+						EtlGroundDataEntity groundDataEntity = new EtlGroundDataEntity();
+						groundDataEntity.setRtuCode(entity.getRtuCode());
+						groundDataEntity.setMoco10cm(23.5);
+						groundDataEntity.setMoco20cm(20.5);
+						groundDataEntity.setMoco30cm(12.5);
+						groundDataEntity.setMoco40cm(11.5);
+						groundDataEntity.setMoco50cm(10.5);
+						groundDataEntity.setMoco60cm(3.5);
+						groundDataEntity.setMoco80cm(3.2);
+						groundDataEntity.setMoco100cm(3.0);
+						Calendar calendar = Calendar.getInstance();
+						calendar.setTime(dt);
+						calendar.set(Calendar.SECOND, 0);
+						calendar.set(Calendar.MINUTE, 0);
+//						if (entity.getRtuCode().equals("102A0020")) {
+//							calendar.set(Calendar.SECOND, 1);
+//							groundDataEntity.setFromDate(calendar.getTime());
+//
+//							calendar.add(Calendar.HOUR_OF_DAY, -1);
+//							calendar.add(Calendar.MINUTE, -1);
+//							groundDataEntity.setTm(calendar.getTime());
+//
+//						} else {
+						groundDataEntity.setTm(calendar.getTime());
+						calendar.set(Calendar.SECOND, 1);
+						groundDataEntity.setFromDate(calendar.getTime());
+						//	}
+
+						//通过KAFKA发送最新一条数据
+						String jsonText = JSONObject.toJSONString(groundDataEntity);
+						kafkaTemplate.send(topic, jsonText);
+					}
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+				log.error("测试数据任务异常 {}", e.getMessage());
+			}
+			return 0;
+		}
+	}
+}

+ 416 - 0
src/main/java/org/springblade/jobtask/WarnCheckProcessor.java

@@ -0,0 +1,416 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 山洪灾害运维系统
+ * 创建日期:2023/8/4
+ */
+package org.springblade.jobtask;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.extern.slf4j.Slf4j;
+import org.glassfish.jersey.internal.guava.ThreadFactoryBuilder;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.enums.WarningActiveEnum;
+import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
+import org.springblade.modules.baseinfo.rtu.service.IRtuBaseInfoService;
+import org.springblade.modules.business.warning.entity.RtuWarnSettingEntity;
+import org.springblade.modules.business.warning.service.IRtuWarnSettingService;
+import org.springblade.modules.business.warning.service.IRtuWarningService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.*;
+
+/***
+ * Date:2023/8/4
+ * Title: 预警统计功能
+ * Description: 雨量5分钟延时预警、离线预警、漏报预警、延时预警、时钟预警、异常值预警
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Slf4j
+@Component
+@EnableScheduling
+public class WarnCheckProcessor {
+	private static ThreadFactory warnCheckThreadFactory = new ThreadFactoryBuilder().setNameFormat("warn-check-thread-pool-%d").build();
+	private static ExecutorService warnCheckThreadPool = new ThreadPoolExecutor(1, 1,
+		0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(1024), warnCheckThreadFactory, new ThreadPoolExecutor.AbortPolicy());
+
+	@Value("${spring.task-config.warning-check-task}")
+	private boolean warnCheckTaskRun;
+
+	@Value("${spring.warn-config.delay-duration}")
+	private Integer hourDelayduration;
+
+	@Value("${spring.warn-config.delay-min-duration}")
+	private Integer minDelayduration;
+
+	@Value("${spring.warn-config.missout}")
+	private Integer missOutNum;
+
+	@Resource
+	private IRtuBaseInfoService rtuBaseInfoService;
+
+	@Resource
+	private IRtuWarningService rtuWarningService;
+
+	@Resource
+	private IRtuWarnSettingService rtuWarnSettingService;
+
+	/**
+	 * 每5分钟执行一次
+	 */
+	@Scheduled(cron = "10 0/5 * * * * ")
+	public void warnMinTask() {
+		try {
+			if (warnCheckTaskRun) {
+				log.info("雨量5分钟延时预警统计任务创建 {}", Func.formatDateTime(new Date()));
+				LocalDateTime now = LocalDateTime.now();
+				WarningCheckMinTask warningTask = new WarningCheckMinTask(now.withSecond(0).withNano(0));
+				FutureTask<Integer> futureTask = new FutureTask<>(warningTask);
+				warnCheckThreadPool.execute(futureTask);
+			}
+		} catch (Exception e) {
+			log.error("{}", e.getMessage());
+		}
+	}
+
+	/**
+	 * 每10分钟执行一次
+	 */
+	@Scheduled(cron = "20 0/10 * * * * ")
+	public void warnHourTask() {
+		try {
+			if (warnCheckTaskRun) {
+				log.info("预警统计任务创建 {}", Func.formatDateTime(new Date()));
+				LocalDateTime now = LocalDateTime.now();
+				WarningCheckTask warningTask = new WarningCheckTask(now.withSecond(0).withNano(0));
+				FutureTask<Integer> futureTask = new FutureTask<>(warningTask);
+				warnCheckThreadPool.execute(futureTask);
+			}
+		} catch (Exception e) {
+			log.error("{}", e.getMessage());
+		}
+	}
+
+	private class WarningCheckMinTask implements Callable<Integer> {
+
+		private LocalDateTime checkTime;
+
+		public WarningCheckMinTask(LocalDateTime checkTime) {
+			this.checkTime = checkTime;
+		}
+
+		@Override
+		public Integer call() throws Exception {
+			long startTime = System.currentTimeMillis();
+			try {
+				log.info("每5分钟预警检测任务开始执行 {}", Func.formatDateTime(checkTime));
+				//测站检测参数
+				RtuWarnSettingEntity warnSettingEntity = new RtuWarnSettingEntity();
+				//预警开关
+				warnSettingEntity.setWarnActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				warnSettingEntity.setWarnClockActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				warnSettingEntity.setWarnOfflineActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				warnSettingEntity.setWarnMissOutActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				warnSettingEntity.setWarnOutlierValueActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				warnSettingEntity.setWarnHourUpDelayActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				warnSettingEntity.setWarnMinUpDelayActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				//延时,小时
+				warnSettingEntity.setWarnRainDelayHourDuration(hourDelayduration);
+				warnSettingEntity.setWarnRiverDelayHourDuration(hourDelayduration);
+				warnSettingEntity.setWarnRsvrDelayHourDuration(hourDelayduration);
+				warnSettingEntity.setWarnGroundDelayHourDuration(hourDelayduration);
+				//延时,分钟
+				warnSettingEntity.setWarnRainDelayMinDuration(minDelayduration);
+				warnSettingEntity.setWarnRiverDelayMinDuration(minDelayduration);
+				warnSettingEntity.setWarnRsvrDelayMinDuration(minDelayduration);
+				warnSettingEntity.setWarnGroundDelayMinDuration(minDelayduration);
+				//延时,离线
+				warnSettingEntity.setWarnRainOfflineDuration(minDelayduration);
+				warnSettingEntity.setWarnRiverOfflineDuration(minDelayduration);
+				warnSettingEntity.setWarnRsvrOfflineDuration(minDelayduration);
+				warnSettingEntity.setWarnGroundOfflineDuration(minDelayduration);
+				//漏报,预警数量
+				warnSettingEntity.setWarnMissNum(missOutNum);
+				//读取预警配置
+				LambdaQueryWrapper<RtuWarnSettingEntity> warnSettingWrapper = Wrappers.<RtuWarnSettingEntity>query().lambda();
+				warnSettingWrapper.eq(RtuWarnSettingEntity::getIsDeleted, 0);
+				List<RtuWarnSettingEntity> warnSettingEntityList = rtuWarnSettingService.list(warnSettingWrapper);
+				if (null != warnSettingEntityList && warnSettingEntityList.size() > 0) {
+					if (warnSettingEntityList.get(0).getWarnActive() != null) {
+						warnSettingEntity.setWarnActive(warnSettingEntityList.get(0).getWarnActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnClockActive() != null) {
+						warnSettingEntity.setWarnClockActive(warnSettingEntityList.get(0).getWarnClockActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnOfflineActive() != null) {
+						warnSettingEntity.setWarnOfflineActive(warnSettingEntityList.get(0).getWarnOfflineActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnMissOutActive() != null) {
+						warnSettingEntity.setWarnMissOutActive(warnSettingEntityList.get(0).getWarnMissOutActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnOutlierValueActive() != null) {
+						warnSettingEntity.setWarnOutlierValueActive(warnSettingEntityList.get(0).getWarnOutlierValueActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnHourUpDelayActive() != null) {
+						warnSettingEntity.setWarnHourUpDelayActive(warnSettingEntityList.get(0).getWarnHourUpDelayActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnMinUpDelayActive() != null) {
+						warnSettingEntity.setWarnMinUpDelayActive(warnSettingEntityList.get(0).getWarnMinUpDelayActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnRainDelayHourDuration() != null) {
+						warnSettingEntity.setWarnRainDelayHourDuration(warnSettingEntityList.get(0).getWarnRainDelayHourDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRiverDelayHourDuration() != null) {
+						warnSettingEntity.setWarnRiverDelayHourDuration(warnSettingEntityList.get(0).getWarnRiverDelayHourDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRsvrDelayHourDuration() != null) {
+						warnSettingEntity.setWarnRsvrDelayHourDuration(warnSettingEntityList.get(0).getWarnRsvrDelayHourDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnGroundDelayHourDuration() != null) {
+						warnSettingEntity.setWarnGroundDelayHourDuration(warnSettingEntityList.get(0).getWarnGroundDelayHourDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRainDelayMinDuration() != null) {
+						warnSettingEntity.setWarnRainDelayMinDuration(warnSettingEntityList.get(0).getWarnRainDelayMinDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRiverDelayMinDuration() != null) {
+						warnSettingEntity.setWarnRiverDelayMinDuration(warnSettingEntityList.get(0).getWarnRiverDelayMinDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRsvrDelayMinDuration() != null) {
+						warnSettingEntity.setWarnRsvrDelayMinDuration(warnSettingEntityList.get(0).getWarnRsvrDelayMinDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnGroundDelayMinDuration() != null) {
+						warnSettingEntity.setWarnGroundDelayMinDuration(warnSettingEntityList.get(0).getWarnGroundDelayMinDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRainOfflineDuration() != null) {
+						warnSettingEntity.setWarnRainOfflineDuration(warnSettingEntityList.get(0).getWarnRainOfflineDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRiverOfflineDuration() != null) {
+						warnSettingEntity.setWarnRiverOfflineDuration(warnSettingEntityList.get(0).getWarnRiverOfflineDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRsvrOfflineDuration() != null) {
+						warnSettingEntity.setWarnRsvrOfflineDuration(warnSettingEntityList.get(0).getWarnRsvrOfflineDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnGroundOfflineDuration() != null) {
+						warnSettingEntity.setWarnGroundOfflineDuration(warnSettingEntityList.get(0).getWarnGroundOfflineDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnMissNum() != null) {
+						warnSettingEntity.setWarnMissNum(warnSettingEntityList.get(0).getWarnMissNum());
+					}
+				}
+				//开始检测
+				if (warnSettingEntity.getWarnActive() == WarningActiveEnum.ACTIVE_OPEN.getCode()) {
+					LambdaQueryWrapper<RtuInfoEntity> dataWrapper = Wrappers.<RtuInfoEntity>query().lambda();
+					dataWrapper.eq(RtuInfoEntity::getIsDeleted, 0);
+					dataWrapper.orderByAsc(RtuInfoEntity::getRtuCode);
+					List<RtuInfoEntity> list = rtuBaseInfoService.list(dataWrapper);
+					if (null != list && list.size() > 0) {
+						for (RtuInfoEntity entity : list) {
+							if (warnSettingEntity.getWarnMinUpDelayActive() == WarningActiveEnum.ACTIVE_OPEN.getCode()) {
+
+								if (entity.getIsRain() == 1) {
+									//雨量报5分钟延时检测
+									rtuWarningService.checkRtuRainUpDelayStatus(entity, warnSettingEntity, checkTime);
+								}
+							}
+						}
+					}
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+				log.error("每5分钟预警检测任务异常 {}", e.getMessage());
+			} finally {
+				log.info("每5分钟预警检测任务完成 {} 毫秒", System.currentTimeMillis() - startTime);
+			}
+			return 0;
+		}
+	}
+
+	private class WarningCheckTask implements Callable<Integer> {
+
+		private LocalDateTime checkTime;
+
+		public WarningCheckTask(LocalDateTime checkTime) {
+			this.checkTime = checkTime;
+		}
+
+		@Override
+		public Integer call() throws Exception {
+			long startTime = System.currentTimeMillis();
+			try {
+				log.info("每小时预警检测任务开始执行 {}", Func.formatDateTime(checkTime));
+				//测站检测参数
+				RtuWarnSettingEntity warnSettingEntity = new RtuWarnSettingEntity();
+				//预警开关
+				warnSettingEntity.setWarnActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				warnSettingEntity.setWarnClockActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				warnSettingEntity.setWarnOfflineActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				warnSettingEntity.setWarnMissOutActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				warnSettingEntity.setWarnOutlierValueActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				warnSettingEntity.setWarnHourUpDelayActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				warnSettingEntity.setWarnMinUpDelayActive(WarningActiveEnum.ACTIVE_OFF.getCode());
+				//延时,小时
+				warnSettingEntity.setWarnRainDelayHourDuration(hourDelayduration);
+				warnSettingEntity.setWarnRiverDelayHourDuration(hourDelayduration);
+				warnSettingEntity.setWarnRsvrDelayHourDuration(hourDelayduration);
+				warnSettingEntity.setWarnGroundDelayHourDuration(hourDelayduration);
+				//延时,分钟
+				warnSettingEntity.setWarnRainDelayMinDuration(minDelayduration);
+				warnSettingEntity.setWarnRiverDelayMinDuration(minDelayduration);
+				warnSettingEntity.setWarnRsvrDelayMinDuration(minDelayduration);
+				warnSettingEntity.setWarnGroundDelayMinDuration(minDelayduration);
+				//延时,离线
+				warnSettingEntity.setWarnRainOfflineDuration(minDelayduration);
+				warnSettingEntity.setWarnRiverOfflineDuration(minDelayduration);
+				warnSettingEntity.setWarnRsvrOfflineDuration(minDelayduration);
+				warnSettingEntity.setWarnGroundOfflineDuration(minDelayduration);
+				//漏报,预警数量
+				warnSettingEntity.setWarnMissNum(missOutNum);
+				//读取预警配置
+				LambdaQueryWrapper<RtuWarnSettingEntity> warnSettingWrapper = Wrappers.<RtuWarnSettingEntity>query().lambda();
+				warnSettingWrapper.eq(RtuWarnSettingEntity::getIsDeleted, 0);
+				List<RtuWarnSettingEntity> warnSettingEntityList = rtuWarnSettingService.list(warnSettingWrapper);
+				if (null != warnSettingEntityList && warnSettingEntityList.size() > 0) {
+					if (warnSettingEntityList.get(0).getWarnActive() != null) {
+						warnSettingEntity.setWarnActive(warnSettingEntityList.get(0).getWarnActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnClockActive() != null) {
+						warnSettingEntity.setWarnClockActive(warnSettingEntityList.get(0).getWarnClockActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnOfflineActive() != null) {
+						warnSettingEntity.setWarnOfflineActive(warnSettingEntityList.get(0).getWarnOfflineActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnMissOutActive() != null) {
+						warnSettingEntity.setWarnMissOutActive(warnSettingEntityList.get(0).getWarnMissOutActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnOutlierValueActive() != null) {
+						warnSettingEntity.setWarnOutlierValueActive(warnSettingEntityList.get(0).getWarnOutlierValueActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnHourUpDelayActive() != null) {
+						warnSettingEntity.setWarnHourUpDelayActive(warnSettingEntityList.get(0).getWarnHourUpDelayActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnMinUpDelayActive() != null) {
+						warnSettingEntity.setWarnMinUpDelayActive(warnSettingEntityList.get(0).getWarnMinUpDelayActive());
+					}
+					if (warnSettingEntityList.get(0).getWarnRainDelayHourDuration() != null) {
+						warnSettingEntity.setWarnRainDelayHourDuration(warnSettingEntityList.get(0).getWarnRainDelayHourDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRiverDelayHourDuration() != null) {
+						warnSettingEntity.setWarnRiverDelayHourDuration(warnSettingEntityList.get(0).getWarnRiverDelayHourDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRsvrDelayHourDuration() != null) {
+						warnSettingEntity.setWarnRsvrDelayHourDuration(warnSettingEntityList.get(0).getWarnRsvrDelayHourDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnGroundDelayHourDuration() != null) {
+						warnSettingEntity.setWarnGroundDelayHourDuration(warnSettingEntityList.get(0).getWarnGroundDelayHourDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRainDelayMinDuration() != null) {
+						warnSettingEntity.setWarnRainDelayMinDuration(warnSettingEntityList.get(0).getWarnRainDelayMinDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRiverDelayMinDuration() != null) {
+						warnSettingEntity.setWarnRiverDelayMinDuration(warnSettingEntityList.get(0).getWarnRiverDelayMinDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRsvrDelayMinDuration() != null) {
+						warnSettingEntity.setWarnRsvrDelayMinDuration(warnSettingEntityList.get(0).getWarnRsvrDelayMinDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnGroundDelayMinDuration() != null) {
+						warnSettingEntity.setWarnGroundDelayMinDuration(warnSettingEntityList.get(0).getWarnGroundDelayMinDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRainOfflineDuration() != null) {
+						warnSettingEntity.setWarnRainOfflineDuration(warnSettingEntityList.get(0).getWarnRainOfflineDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRiverOfflineDuration() != null) {
+						warnSettingEntity.setWarnRiverOfflineDuration(warnSettingEntityList.get(0).getWarnRiverOfflineDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnRsvrOfflineDuration() != null) {
+						warnSettingEntity.setWarnRsvrOfflineDuration(warnSettingEntityList.get(0).getWarnRsvrOfflineDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnGroundOfflineDuration() != null) {
+						warnSettingEntity.setWarnGroundOfflineDuration(warnSettingEntityList.get(0).getWarnGroundOfflineDuration());
+					}
+					if (warnSettingEntityList.get(0).getWarnMissNum() != null) {
+						warnSettingEntity.setWarnMissNum(warnSettingEntityList.get(0).getWarnMissNum());
+					}
+				}
+				//开始检测
+				if (warnSettingEntity.getWarnActive() == WarningActiveEnum.ACTIVE_OPEN.getCode()) {
+					LambdaQueryWrapper<RtuInfoEntity> dataWrapper = Wrappers.<RtuInfoEntity>query().lambda();
+					dataWrapper.eq(RtuInfoEntity::getIsDeleted, 0);
+					dataWrapper.orderByAsc(RtuInfoEntity::getRtuCode);
+					List<RtuInfoEntity> list = rtuBaseInfoService.list(dataWrapper);
+					if (null != list && list.size() > 0) {
+						for (RtuInfoEntity entity : list) {
+							boolean isOffline = false;
+							if (warnSettingEntity.getWarnOfflineActive() == WarningActiveEnum.ACTIVE_OPEN.getCode()) {
+								//检测离线状态
+								isOffline = rtuWarningService.checkRtuOfflineStatus(entity, warnSettingEntity, checkTime);
+							}
+							if (warnSettingEntity.getWarnClockActive() == WarningActiveEnum.ACTIVE_OPEN.getCode()) {
+								//检测测站时钟状态
+								if (!isOffline) {
+									rtuWarningService.checkRtuClockStatus(entity, warnSettingEntity, checkTime);
+								}
+							}
+							if (warnSettingEntity.getWarnMissOutActive() == WarningActiveEnum.ACTIVE_OPEN.getCode()) {
+								//离线时,不检测漏报异常
+								if (!isOffline) {
+									if (entity.getIsRain() == 1) {
+										//雨量站小时漏报检测
+										rtuWarningService.checkRtuRainMissOutStatus(entity, warnSettingEntity, checkTime);
+									}
+									if (entity.getIsRiver() == 1) {
+										//河道站小时漏报检测
+										rtuWarningService.checkRtuRiverMissOutStatus(entity, warnSettingEntity, checkTime);
+									}
+									if (entity.getIsRes() == 1) {
+										//水库站小时漏报检测
+										rtuWarningService.checkRtuRsvrMissOutStatus(entity, warnSettingEntity, checkTime);
+									}
+								}
+							}
+							if (warnSettingEntity.getWarnHourUpDelayActive() == WarningActiveEnum.ACTIVE_OPEN.getCode()) {
+								if (!isOffline) {
+									if (entity.getIsRain() == 1) {
+										//雨量小时报延时检测
+										rtuWarningService.checkRtuRainUpHourDelayStatus(entity, warnSettingEntity, checkTime);
+									}
+									if (entity.getIsRiver() == 1) {
+										//河道小时报延时检测
+										rtuWarningService.checkRtuRiverUpHourDelayStatus(entity, warnSettingEntity, checkTime);
+									}
+									if (entity.getIsRes() == 1) {
+										//水库小时报延时检测
+										rtuWarningService.checkRtuRsvrUpHourDelayStatus(entity, warnSettingEntity, checkTime);
+									}
+								}
+							}
+							if (warnSettingEntity.getWarnOutlierValueActive() == WarningActiveEnum.ACTIVE_OPEN.getCode()) {
+								if (!isOffline) {
+									if (entity.getIsRain() == 1) {
+										//疑似异常值
+										rtuWarningService.checkRtuOutlierValueStatus(entity, warnSettingEntity, checkTime);
+									}
+								}
+							}
+						}
+					}
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+				log.error("预警检测任务异常 {}", e.getMessage());
+			} finally {
+				log.info("预警检测任务完成 {} 毫秒", System.currentTimeMillis() - startTime);
+			}
+			return 0;
+		}
+	}
+}

+ 13 - 4
src/main/java/org/springblade/modules/baseinfo/project/wrapper/ProjectInfoWrapper.java

@@ -1,17 +1,19 @@
 /**
  * Copyright 2019 DH
  * All right reserved.
- * 项目名称: 大恒泰山系统
+ * 项目名称: 运维系统
  * 创建日期:2022/8/22
  */
 package org.springblade.modules.baseinfo.project.wrapper;
 
-import org.springblade.common.cache.DictBizCache;
+
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.SpringUtil;
 import org.springblade.modules.baseinfo.project.entity.ProjectInfoEntity;
 import org.springblade.modules.baseinfo.project.vo.ProjectInfoVO;
 import org.springblade.modules.system.entity.DictBiz;
+import org.springblade.modules.system.service.IDictBizService;
 
 import java.util.Objects;
 
@@ -28,20 +30,27 @@ public class ProjectInfoWrapper extends BaseEntityWrapper<ProjectInfoEntity, Pro
 		return new ProjectInfoWrapper();
 	}
 
+	private static IDictBizService dictBizService;
 
+	private static IDictBizService getDictBizService() {
+		if (dictBizService == null) {
+			dictBizService = SpringUtil.getBean(IDictBizService.class);
+		}
+		return dictBizService;
+	}
 
 	@Override
 	public ProjectInfoVO entityVO(ProjectInfoEntity entity) {
 
 		ProjectInfoVO projectInfoVO = Objects.requireNonNull(BeanUtil.copy(entity, ProjectInfoVO.class));
 		if (entity.getAgreementId() != null){
-			DictBiz biz = DictBizCache.getById(entity.getAgreementId());
+			DictBiz biz = getDictBizService().getById(entity.getAgreementId());
 			if (null != biz){
 				projectInfoVO.setAgreementName(biz.getDictValue());
 			}
 		}
 		if (entity.getPowerTypeId() != null){
-			DictBiz biz = DictBizCache.getById(entity.getPowerTypeId());
+			DictBiz biz = getDictBizService().getById(entity.getPowerTypeId());
 			if (null != biz){
 				projectInfoVO.setPowerTypeName(biz.getDictValue());
 			}

+ 6 - 2
src/main/java/org/springblade/modules/baseinfo/region/controller/BaseInfoRegionController.java

@@ -488,7 +488,9 @@ public class BaseInfoRegionController extends BladeController {
 			updateWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
 			baseInfoRegionService.remove(updateWrapper);
 		}
-		List<EtlAdCdEntity> list = etlAdCdService.selectList("0");
+		EtlAdCdEntity dto = new EtlAdCdEntity();
+		dto.setSuperioradcd("0");
+		List<EtlAdCdEntity> list = etlAdCdService.selectList(dto);
 		if (null != list && list.size() == 1) {
 			String code = list.get(0).getAdcd();
 			LambdaQueryWrapper<RegionInfoEntity> requestWrapper = Wrappers.<RegionInfoEntity>query().lambda();
@@ -517,7 +519,9 @@ public class BaseInfoRegionController extends BladeController {
 		if (currLevel > level) {
 			return true;
 		}
-		List<EtlAdCdEntity> list = etlAdCdService.selectList(parentCode);
+		EtlAdCdEntity dto = new EtlAdCdEntity();
+		dto.setSuperioradcd(parentCode);
+		List<EtlAdCdEntity> list = etlAdCdService.selectList(dto);
 		if (null != list && list.size() > 0) {
 			for (EtlAdCdEntity adCdEntity : list) {
 				LambdaQueryWrapper<RegionInfoEntity> requestWrapper = Wrappers.<RegionInfoEntity>query().lambda();

+ 15 - 12
src/main/java/org/springblade/modules/baseinfo/rtu/controller/RtuBaseInfoController.java

@@ -13,7 +13,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
-import org.springblade.common.cache.DictBizCache;
 import org.springblade.constant.BusinessConstant;
 import org.springblade.core.boot.ctrl.BladeController;
 
@@ -98,7 +97,7 @@ public class RtuBaseInfoController extends BladeController {
 			rtuInfoDTO.setIsRain(1);
 		} else if (rtuInfoDTO.getRtuKind() != null && "2".equals(rtuInfoDTO.getRtuKind())) {
 			rtuInfoDTO.setIsRiver(1);
-			rtuInfoDTO.setIsRes(1);
+			//rtuInfoDTO.setIsRes(1);
 		} else if (rtuInfoDTO.getRtuKind() != null && "3".equals(rtuInfoDTO.getRtuKind())) {
 			rtuInfoDTO.setIsGround(1);
 		} else if (rtuInfoDTO.getRtuKind() != null && "4".equals(rtuInfoDTO.getRtuKind())) {
@@ -152,7 +151,7 @@ public class RtuBaseInfoController extends BladeController {
 			rtuInfoDTO.setIsRain(1);
 		} else if (rtuInfoDTO.getRtuKind() != null && "2".equals(rtuInfoDTO.getRtuKind())) {
 			rtuInfoDTO.setIsRiver(1);
-			rtuInfoDTO.setIsRes(1);
+			//rtuInfoDTO.setIsRes(1);
 		} else if (rtuInfoDTO.getRtuKind() != null && "3".equals(rtuInfoDTO.getRtuKind())) {
 			rtuInfoDTO.setIsGround(1);
 		} else if (rtuInfoDTO.getRtuKind() != null && "4".equals(rtuInfoDTO.getRtuKind())) {
@@ -273,10 +272,12 @@ public class RtuBaseInfoController extends BladeController {
 				if ("1".equals(kind)) {
 					dto.setIsRain(1);
 				} else if ("2".equals(kind)) {
-					dto.setIsRes(1);
+					dto.setIsRiver(1);
 				} else if ("3".equals(kind)) {
-					dto.setIsGround(1);
+					dto.setIsRes(1);
 				} else if ("4".equals(kind)) {
+					dto.setIsGround(1);
+				} else if ("5".equals(kind)) {
 					dto.setIsVideo(1);
 				}
 			}
@@ -319,10 +320,12 @@ public class RtuBaseInfoController extends BladeController {
 				if ("1".equals(kind)) {
 					dto.setIsRain(1);
 				} else if ("2".equals(kind)) {
-					dto.setIsRes(1);
+					dto.setIsRiver(1);
 				} else if ("3".equals(kind)) {
-					dto.setIsGround(1);
+					dto.setIsRes(1);
 				} else if ("4".equals(kind)) {
+					dto.setIsGround(1);
+				} else if ("5".equals(kind)) {
 					dto.setIsVideo(1);
 				}
 			}
@@ -365,10 +368,12 @@ public class RtuBaseInfoController extends BladeController {
 				if ("1".equals(kind)) {
 					dto.setIsRain(1);
 				} else if ("2".equals(kind)) {
-					dto.setIsRes(1);
+					dto.setIsRiver(1);
 				} else if ("3".equals(kind)) {
-					dto.setIsGround(1);
+					dto.setIsRes(1);
 				} else if ("4".equals(kind)) {
+					dto.setIsGround(1);
+				} else if ("5".equals(kind)) {
 					dto.setIsVideo(1);
 				}
 			}
@@ -399,12 +404,10 @@ public class RtuBaseInfoController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页")
 	public R<List<DictBiz>> dictList(@RequestParam String code) {
-		List<DictBiz> dicts = DictBizCache.getList(code);
-
+		List<DictBiz> dicts = dictBizService.getList(code);
 		return R.data(dicts);
 	}
 
-
 	/**
 	 * 按机构统计测站信息
 	 *

+ 4 - 0
src/main/java/org/springblade/modules/baseinfo/rtu/dto/RtuInfoDTO.java

@@ -6,10 +6,14 @@
  */
 package org.springblade.modules.baseinfo.rtu.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 
 /***

+ 2 - 2
src/main/java/org/springblade/modules/baseinfo/rtu/mapper/RtuInfoMapper.xml

@@ -154,7 +154,7 @@
             and n.is_rain = #{rtuInfoDTO.isRain}
         </if>
         <if test="rtuInfoDTO.isRiver!=null">
-            and n.is_river = #{rtuInfoDTO.isRiver}
+            and (n.is_river = #{rtuInfoDTO.isRiver} or  n.is_res = #{rtuInfoDTO.isRiver})
         </if>
         <if test="rtuInfoDTO.isRes!=null">
             and n.is_res = #{rtuInfoDTO.isRes}
@@ -269,7 +269,7 @@
             and n.is_rain = #{rtuInfoDTO.isRain}
         </if>
         <if test="rtuInfoDTO.isRiver!=null">
-            and n.is_river = #{rtuInfoDTO.isRiver}
+            and (n.is_river = #{rtuInfoDTO.isRiver} or  n.is_res = #{rtuInfoDTO.isRiver})
         </if>
         <if test="rtuInfoDTO.isRes!=null">
             and n.is_res = #{rtuInfoDTO.isRes}

+ 9 - 5
src/main/java/org/springblade/modules/baseinfo/rtu/wrapper/RtuInfoWrapper.java

@@ -65,32 +65,36 @@ public class RtuInfoWrapper extends BaseEntityWrapper<RtuInfoEntity, RtuInfoVO>
 			rtuKindDesc = "雨量站";
 			siteKinds.add("1");
 		}
-		if (entity.getIsRes() != null && entity.getIsRes() == 1) {
+
+		if (entity.getIsRiver() != null && entity.getIsRiver() == 1) {
 			if (rtuKindDesc.length() > 0) {
 				rtuKindDesc += "/";
 			}
 			rtuKindDesc += "水位站";
 			siteKinds.add("2");
-		} else if (entity.getIsRiver() != null && entity.getIsRiver() == 1) {
+		}
+
+		if (entity.getIsRes() != null && entity.getIsRes() == 1) {
 			if (rtuKindDesc.length() > 0) {
 				rtuKindDesc += "/";
 			}
 			rtuKindDesc += "水位站";
-			siteKinds.add("2");
+			siteKinds.add("3");
 		}
+
 		if (entity.getIsGround() != null && entity.getIsGround() == 1) {
 			if (rtuKindDesc.length() > 0) {
 				rtuKindDesc += "/";
 			}
 			rtuKindDesc += "墒情站";
-			siteKinds.add("3");
+			siteKinds.add("4");
 		}
 		if (entity.getIsVideo() != null && entity.getIsVideo() == 1) {
 			if (rtuKindDesc.length() > 0) {
 				rtuKindDesc += "/";
 			}
 			rtuKindDesc += "视频站";
-			siteKinds.add("4");
+			siteKinds.add("5");
 		}
 		entity.setRtuKindDesc(rtuKindDesc);
 		String[] kinds = siteKinds.toArray(new String[siteKinds.size()]);

+ 198 - 46
src/main/java/org/springblade/modules/business/check/order/controller/RtuCheckOrderController.java

@@ -95,6 +95,7 @@ public class RtuCheckOrderController extends BladeController {
 	private final ICheckOrderSettingService checkOrderSettingService;
 	private final IBaseInfoRegionService regionService;
 	private final IBaseInfoDictService dictService;
+
 	/**
 	 * 工单查询,分页
 	 */
@@ -107,13 +108,16 @@ public class RtuCheckOrderController extends BladeController {
 		@ApiImplicitParam(name = "orderClose", value = "是否关闭", paramType = "query", dataType = "int"),
 		@ApiImplicitParam(name = "servicePersonId", value = "运维人员", paramType = "query", dataType = "long"),
 		@ApiImplicitParam(name = "deptId", value = "部门ID", paramType = "query", dataType = "long"),
-		@ApiImplicitParam(name = "warnKind", value = "异常类型", paramType = "query", dataType = "int")
+		@ApiImplicitParam(name = "warnKind", value = "异常类型", paramType = "query", dataType = "int"),
+		@ApiImplicitParam(name = "orderReportStatus", value = "是否维修", paramType = "query", dataType = "int"),
 	})
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "分页", notes = "传入实体类CheckOrderInfoDTO")
 	public R<IPage<CheckOrderInfoVO>> page(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO, Query query) {
 		BladeUser user = AuthUtil.getUser();
-		if (checkOrderInfoDTO.getDeptId() != null) {
+		if (checkOrderInfoDTO.getServicePersonId() != null) {
+			checkOrderInfoDTO.setOrderConfirmUser(checkOrderInfoDTO.getServicePersonId());
+		} else if (checkOrderInfoDTO.getDeptId() != null) {
 			LambdaQueryWrapper<DeptRegionEntity> deptLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
 			deptLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
 			deptLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, checkOrderInfoDTO.getDeptId());
@@ -133,16 +137,48 @@ public class RtuCheckOrderController extends BladeController {
 					checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
 				}
 			}
-			if (BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
-				if (checkOrderInfoDTO.getOrderConfirm() != null && checkOrderInfoDTO.getOrderConfirm() == 1) {
-					checkOrderInfoDTO.setContactUser(user.getUserId());
-				}
-			}
+		//	if (BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
+				//	if (checkOrderInfoDTO.getOrderConfirm() != null && checkOrderInfoDTO.getOrderConfirm() == 1) {
+				//checkOrderInfoDTO.setOrderConfirmUser(user.getUserId());
+				//	}
+		//	}
 		}
-		if (checkOrderInfoDTO.getAdCode()!=null){
-			RegionTreeNodeEntity nodeEntity= this.regionService.getRegionNode(user.getRoleName(),user.getDeptId(),checkOrderInfoDTO.getAdCode());
+		if (checkOrderInfoDTO.getAdCode() != null) {
+			RegionTreeNodeEntity nodeEntity = this.regionService.getRegionNode(user.getRoleName(), user.getDeptId(), checkOrderInfoDTO.getAdCode());
 			checkOrderInfoDTO.setExcludeCode(nodeEntity.getExclude());
 		}
+		if (checkOrderInfoDTO.getOrderStatus() != null) {
+			if (checkOrderInfoDTO.getOrderStatus() == 1) {
+				DictInfoEntity biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CREATE.getCode());
+				if (biz != null) {
+					checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+				}
+			} else if (checkOrderInfoDTO.getOrderStatus() == 2) {
+				DictInfoEntity biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+				if (biz != null) {
+					checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+				}
+			} else if (checkOrderInfoDTO.getOrderStatus() == 3) {
+				DictInfoEntity biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_PROCESS.getCode());
+				if (biz != null) {
+					checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+				}
+			}
+		}
+//		if (checkOrderInfoDTO.getOrderReportStatus()!=null){
+//			if(checkOrderInfoDTO.getOrderReportStatus()==0){
+//				DictInfoEntity biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+//				if (biz != null) {
+//					checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+//				}
+//			}else if(checkOrderInfoDTO.getOrderReportStatus()==1){
+//				DictInfoEntity biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_PROCESS.getCode());
+//				if (biz != null) {
+//					checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+//				}
+//			}
+//		}
+
 		if (checkOrderInfoDTO.getWarnKind() != null) {
 			IPage<CheckOrderInfoVO> pages = rtuCheckOrderService.selectWarnPage(Condition.getPage(query), checkOrderInfoDTO);
 			List<CheckOrderInfoVO> list = pages.getRecords();
@@ -184,7 +220,7 @@ public class RtuCheckOrderController extends BladeController {
 	}
 
 	/**
-	 * 未确认工单列表,不分页,最多返回10条数据
+	 * 最新未确认工单列表,不分页,最多返回10条数据
 	 */
 	@GetMapping("/unconfirm/last/list")
 	@ApiImplicitParams({
@@ -194,7 +230,7 @@ public class RtuCheckOrderController extends BladeController {
 	})
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "不分页", notes = "传入实体类CheckOrderInfoDTO")
-	public R<List<CheckOrderInfoVO>> unconfirmOrderList(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO) {
+	public R<List<CheckOrderInfoVO>> unconfirmLastOrderList(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO) {
 		BladeUser user = AuthUtil.getUser();
 		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
 			if (checkOrderInfoDTO.getAdCode() == null) {
@@ -209,8 +245,8 @@ public class RtuCheckOrderController extends BladeController {
 				checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
 			}
 		}
-		if (checkOrderInfoDTO.getAdCode()!=null){
-			RegionTreeNodeEntity nodeEntity= this.regionService.getRegionNode(user.getRoleName(),user.getDeptId(),checkOrderInfoDTO.getAdCode());
+		if (checkOrderInfoDTO.getAdCode() != null) {
+			RegionTreeNodeEntity nodeEntity = this.regionService.getRegionNode(user.getRoleName(), user.getDeptId(), checkOrderInfoDTO.getAdCode());
 			checkOrderInfoDTO.setExcludeCode(nodeEntity.getExclude());
 		}
 		List<CheckOrderInfoVO> list = rtuCheckOrderService.unconfirmOrderList(checkOrderInfoDTO);
@@ -220,6 +256,78 @@ public class RtuCheckOrderController extends BladeController {
 		return R.data(list);
 	}
 
+	/**
+	 * 未确认工单列表,分页
+	 */
+	@GetMapping("/unconfirm/page")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
+		@ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string"),
+		@ApiImplicitParam(name = "adCode", value = "行政区划编码", paramType = "query", dataType = "string"),
+		@ApiImplicitParam(name = "orderConfirm", value = "是否确认", paramType = "query", dataType = "int"),
+		@ApiImplicitParam(name = "orderClose", value = "是否关闭", paramType = "query", dataType = "int"),
+		@ApiImplicitParam(name = "servicePersonId", value = "运维人员", paramType = "query", dataType = "long"),
+		@ApiImplicitParam(name = "deptId", value = "部门ID", paramType = "query", dataType = "long"),
+		@ApiImplicitParam(name = "warnKind", value = "异常类型", paramType = "query", dataType = "int"),
+	})
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入实体类CheckOrderInfoDTO")
+	public R<IPage<CheckOrderInfoVO>> unconfirmOrderPage(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO, Query query) {
+		BladeUser user = AuthUtil.getUser();
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			if (checkOrderInfoDTO.getAdCode() == null) {
+				checkOrderInfoDTO.setAdCode(BusinessConstant.REGION_NM_ADCODE);
+			}
+		} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
+			if (checkOrderInfoDTO.getAdCode() == null) {
+				LambdaQueryWrapper<DeptRegionEntity> deptRegionEntityLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
+				deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
+				deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, Func.toLong(user.getDeptId()));
+				DeptRegionEntity deptRegionEntity = deptRegionService.getOne(deptRegionEntityLambdaQueryWrapper);
+				checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
+			}
+		}
+		checkOrderInfoDTO.setOrderConfirm(0);
+		checkOrderInfoDTO.setOrderClose(0);
+		if (checkOrderInfoDTO.getAdCode() != null) {
+			RegionTreeNodeEntity nodeEntity = this.regionService.getRegionNode(user.getRoleName(), user.getDeptId(), checkOrderInfoDTO.getAdCode());
+			checkOrderInfoDTO.setExcludeCode(nodeEntity.getExclude());
+		}
+		if (checkOrderInfoDTO.getOrderStatus() != null) {
+			if (checkOrderInfoDTO.getOrderStatus() == 1) {
+				DictInfoEntity biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CREATE.getCode());
+				if (biz != null) {
+					checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+				}
+			} else if (checkOrderInfoDTO.getOrderStatus() == 2) {
+				DictInfoEntity biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+				if (biz != null) {
+					checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+				}
+			} else if (checkOrderInfoDTO.getOrderStatus() == 3) {
+				DictInfoEntity biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_PROCESS.getCode());
+				if (biz != null) {
+					checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+				}
+			}
+		}
+		if (checkOrderInfoDTO.getWarnKind() != null) {
+			IPage<CheckOrderInfoVO> pages = rtuCheckOrderService.selectWarnPage(Condition.getPage(query), checkOrderInfoDTO);
+			List<CheckOrderInfoVO> list = pages.getRecords();
+			for (CheckOrderInfoVO v : list) {
+				RtuCheckOrderWrapper.build().entityVO(v);
+			}
+			return R.data(pages);
+		} else {
+			IPage<CheckOrderInfoVO> pages = rtuCheckOrderService.selectPage(Condition.getPage(query), checkOrderInfoDTO);
+			List<CheckOrderInfoVO> list = pages.getRecords();
+			for (CheckOrderInfoVO v : list) {
+				RtuCheckOrderWrapper.build().entityVO(v);
+			}
+			return R.data(pages);
+		}
+	}
+
 	@GetMapping("/confirm/delay/page")
 	@ApiImplicitParams({
 		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
@@ -243,8 +351,8 @@ public class RtuCheckOrderController extends BladeController {
 				checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
 			}
 		}
-		if (checkOrderInfoDTO.getAdCode()!=null){
-			RegionTreeNodeEntity nodeEntity= this.regionService.getRegionNode(user.getRoleName(),user.getDeptId(),checkOrderInfoDTO.getAdCode());
+		if (checkOrderInfoDTO.getAdCode() != null) {
+			RegionTreeNodeEntity nodeEntity = this.regionService.getRegionNode(user.getRoleName(), user.getDeptId(), checkOrderInfoDTO.getAdCode());
 			checkOrderInfoDTO.setExcludeCode(nodeEntity.getExclude());
 		}
 
@@ -269,6 +377,7 @@ public class RtuCheckOrderController extends BladeController {
 
 	/**
 	 * 按页查询维修任务历史信息
+	 *
 	 * @param checkOrderInfoDTO
 	 * @param query
 	 * @return
@@ -278,6 +387,9 @@ public class RtuCheckOrderController extends BladeController {
 		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
 		@ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string"),
 		@ApiImplicitParam(name = "adCode", value = "行政区划编码", paramType = "query", dataType = "string"),
+		@ApiImplicitParam(name = "warnKind", value = "异常类型", paramType = "query", dataType = "int"),
+		@ApiImplicitParam(name = "orderCloseType", value = "关闭类别", paramType = "query", dataType = "int"),
+		@ApiImplicitParam(name = "orderReportStatus", value = "是否维修", paramType = "query", dataType = "int"),
 	})
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "分页", notes = "传入实体类CheckOrderInfoDTO")
@@ -296,8 +408,8 @@ public class RtuCheckOrderController extends BladeController {
 				checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
 			}
 		}
-		if (checkOrderInfoDTO.getAdCode()!=null){
-			RegionTreeNodeEntity nodeEntity= this.regionService.getRegionNode(user.getRoleName(),user.getDeptId(),checkOrderInfoDTO.getAdCode());
+		if (checkOrderInfoDTO.getAdCode() != null) {
+			RegionTreeNodeEntity nodeEntity = this.regionService.getRegionNode(user.getRoleName(), user.getDeptId(), checkOrderInfoDTO.getAdCode());
 			checkOrderInfoDTO.setExcludeCode(nodeEntity.getExclude());
 		}
 		IPage<CheckOrderHistroyVO> pages = rtuCheckOrderService.selectHistoryPage(Condition.getPage(query), checkOrderInfoDTO);
@@ -481,6 +593,7 @@ public class RtuCheckOrderController extends BladeController {
 		detail.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
 		detail.setUpdateTime(new Date());
 		detail.setUpdateUser(user.getUserId());
+		detail.setOrderCloseType(1);
 		rtuCheckOrderService.updateById(detail);
 		OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
 		processInfoEntity.setOrderId(detail.getId());
@@ -510,6 +623,7 @@ public class RtuCheckOrderController extends BladeController {
 			}
 		}
 		RtuStatusEntity rtuStatusEntity = new RtuStatusEntity();
+		rtuStatusEntity.setLastUpTime(new Date());
 		rtuStatusEntity.setRunStatusId(EquipmentStatusEnum.STATUS_RUN.getCode());
 		this.rtuManageService.updateRtuStatus(rtuStatusEntity);
 		return R.success("工单关闭已操作成功!");
@@ -599,6 +713,7 @@ public class RtuCheckOrderController extends BladeController {
 		//更新测站状态
 		RtuStatusEntity statusEntity = new RtuStatusEntity();
 		statusEntity.setRtuCode(checkOrderInfoDTO.getRtuCode());
+		statusEntity.setLastUpTime(new Date());
 		statusEntity.setRunStatusId(EquipmentStatusEnum.STATUS_FAILURE.getCode());
 		rtuManageService.updateRtuStatus(statusEntity);
 
@@ -655,17 +770,40 @@ public class RtuCheckOrderController extends BladeController {
 			CheckOrderCountVO vo = new CheckOrderCountVO();
 			vo.setUserId(u.getId());
 			vo.setServicePersonName(u.getRealName());
+			//任务数量
 			LambdaQueryWrapper<CheckOrderInfoEntity> queryWrapper = Wrappers.<CheckOrderInfoEntity>query().lambda();
 			queryWrapper.eq(CheckOrderInfoEntity::getIsDeleted, 0);
 			queryWrapper.eq(CheckOrderInfoEntity::getOrderConfirm, OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+			queryWrapper.eq(CheckOrderInfoEntity::getOrderClose, OrderCloseEnum.ACTIVE_OPEN.getCode());
 			queryWrapper.eq(CheckOrderInfoEntity::getOrderConfirmUser, u.getId());
 			long count = rtuCheckOrderService.count(queryWrapper);
 			vo.setOrderCount(count);
-			LambdaQueryWrapper<OrderProcessInfoEntity> reportQueryWrapper = Wrappers.<OrderProcessInfoEntity>query().lambda();
-			reportQueryWrapper.eq(OrderProcessInfoEntity::getIsDeleted, 0);
-			reportQueryWrapper.eq(OrderProcessInfoEntity::getCreateUser, u.getId());
-			count = rtuOrderProcessService.count(reportQueryWrapper);
-			vo.setProcessingOrderCount(count);
+			CheckOrderInfoDTO checkOrderInfoDTO = new CheckOrderInfoDTO();
+			checkOrderInfoDTO.setOrderConfirmUser(u.getId());
+			//处理中
+			checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+			checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+			DictInfoEntity biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+			if (biz != null) {
+				checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+			}
+			Long unCloseOrderCount = rtuCheckOrderService.unCloseOrderCount(checkOrderInfoDTO);
+			vo.setProcessingOrderCount(unCloseOrderCount);
+			//已处理
+			checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+			checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+			biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_PROCESS.getCode());
+			if (biz != null) {
+				checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+			}
+			Long reportCount = rtuCheckOrderService.reportCount(checkOrderInfoDTO);
+			vo.setReportOrderCount(reportCount);
+
+//			LambdaQueryWrapper<OrderProcessInfoEntity> reportQueryWrapper = Wrappers.<OrderProcessInfoEntity>query().lambda();
+//			reportQueryWrapper.eq(OrderProcessInfoEntity::getIsDeleted, 0);
+//			reportQueryWrapper.eq(OrderProcessInfoEntity::getCreateUser, u.getId());
+//			upcount = rtuOrderProcessService.upcount(reportQueryWrapper);
+//			vo.setProcessingOrderCount(upcount);
 			countList.add(vo);
 		}
 		return R.data(countList);
@@ -692,49 +830,54 @@ public class RtuCheckOrderController extends BladeController {
 		wrapper.eq(Dept::getParentId, Func.toLong(user.getDeptId()));
 		List<Dept> root = this.deptService.list(wrapper);
 		for (Dept dept : root) {
-
 			LambdaQueryWrapper<DeptRegionEntity> deptLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
-			//deptLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
 			if (user.getRoleName().equals(BusinessConstant.ROLE_SYS_ADMIN)) {
 				deptLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, dept.getId());
-			}else{
+			} else {
 				deptLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, Func.toLong(user.getDeptId()));
 			}
 			DeptRegionEntity deptRegionEntity = this.deptRegionService.getOne(deptLambdaQueryWrapper);
 			LambdaQueryWrapper<RegionInfoEntity> nodeQueryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
 			nodeQueryWrapper.eq(RegionInfoEntity::getAdcd, deptRegionEntity.getAdcd());
 			RegionInfoEntity nodeRegion = this.regionService.getOne(nodeQueryWrapper);
-
-			int excludecode=0;
-			if (nodeRegion.getParentCode().equals(BusinessConstant.REGION_NM_ADCODE)){
-				excludecode=1;
+			int excludecode = 0;
+			if (nodeRegion.getParentCode().equals(BusinessConstant.REGION_NM_ADCODE)) {
+				excludecode = 1;
 			}
-
 			OrgCheckOrderCountVO orgCheckOrderCountVO = new OrgCheckOrderCountVO();
 			orgCheckOrderCountVO.setDeptId(dept.getId());
 			orgCheckOrderCountVO.setOrgName(dept.getDeptName());
 			CheckOrderInfoDTO checkOrderInfoDTO = new CheckOrderInfoDTO();
-
-
 			checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
-			checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
-
 			checkOrderInfoDTO.setExcludeCode(excludecode);
-
+			//任务数量
+			checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
 			Long orderCount = rtuCheckOrderService.orderCount(checkOrderInfoDTO);
 			orgCheckOrderCountVO.setOrderCount(orderCount);
-			checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+			//未确认
 			checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
-
-
+			checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CREATE.getCode());
+			long count = rtuCheckOrderService.unconfirmOrderCount(checkOrderInfoDTO);
+			orgCheckOrderCountVO.setUnconfirmOrderCount(count);
+			//处理中
+			checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+			checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+			DictInfoEntity biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+			if (biz != null) {
+				checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+			}
 			Long unCloseOrderCount = rtuCheckOrderService.unCloseOrderCount(checkOrderInfoDTO);
 			orgCheckOrderCountVO.setProcessingOrderCount(unCloseOrderCount);
-			checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CREATE.getCode());
+			//已处理
 			checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+			checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+			biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_PROCESS.getCode());
+			if (biz != null) {
+				checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+			}
+			Long reportCount = rtuCheckOrderService.reportCount(checkOrderInfoDTO);
+			orgCheckOrderCountVO.setReportOrderCount(reportCount);
 
-
-			long count = rtuCheckOrderService.unconfirmOrderCount(checkOrderInfoDTO);
-			orgCheckOrderCountVO.setUnconfirmOrderCount(count);
 			list.add(orgCheckOrderCountVO);
 		}
 		return R.data(list);
@@ -749,16 +892,23 @@ public class RtuCheckOrderController extends BladeController {
 		}
 		checkOrderInfoDTO.setOrderClose(0);
 		BladeUser user = AuthUtil.getUser();
-		RtuInfoDTO rtuInfoDTO=new RtuInfoDTO();
+		RtuInfoDTO rtuInfoDTO = new RtuInfoDTO();
 		rtuInfoDTO.setAdCode(checkOrderInfoDTO.getAdCode());
 		RegionTreeNodeEntity node = this.regionService.getRegionNode(user.getRoleName(), user.getDeptId(), checkOrderInfoDTO.getAdCode());
 		if (null != node) {
 			rtuInfoDTO.setExcludeCode(node.getExclude());
 			checkOrderInfoDTO.setExcludeCode(node.getExclude());
 		}
-		Long rtuCount=rtuBaseInfoService.rtuCount(rtuInfoDTO);
+		Long rtuCount = rtuBaseInfoService.rtuCount(rtuInfoDTO);
+		checkOrderInfoDTO.setOrderClose(0);
 		Long orderCount = rtuCheckOrderService.orderCount(checkOrderInfoDTO);
+
 		Long unConfirmOrderCount = rtuCheckOrderService.unconfirmOrderCount(checkOrderInfoDTO);
+
+		DictInfoEntity biz = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+		if (biz != null) {
+			checkOrderInfoDTO.setOrderStatusKey(biz.getId());
+		}
 		Long unCloseOrderCount = rtuCheckOrderService.unCloseOrderCount(checkOrderInfoDTO);
 		Map<String, Object> data = new HashMap<>();
 		data.put("rtuCount", rtuCount);
@@ -767,8 +917,10 @@ public class RtuCheckOrderController extends BladeController {
 		data.put("orderProcessing", unCloseOrderCount);
 
 		DictInfoEntity dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_PROCESS.getCode());
-		checkOrderInfoDTO.setOrderStatusKey(dictInfoEntity.getId());
-		Long reports= rtuCheckOrderService.reportCount(checkOrderInfoDTO);
+		if (dictInfoEntity != null) {
+			checkOrderInfoDTO.setOrderStatusKey(dictInfoEntity.getId());
+		}
+		Long reports = rtuCheckOrderService.reportCount(checkOrderInfoDTO);
 		data.put("reportOrder", reports);
 
 		checkOrderInfoDTO.setOrderConfirm(1);

+ 31 - 1
src/main/java/org/springblade/modules/business/check/order/dto/CheckOrderInfoDTO.java

@@ -6,10 +6,14 @@
  */
 package org.springblade.modules.business.check.order.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.modules.business.check.order.entity.CheckOrderInfoEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /***
  * Date:2022/8/22
@@ -54,7 +58,6 @@ public class CheckOrderInfoDTO extends CheckOrderInfoEntity {
 	@ApiModelProperty(value = "运维人员ID")
 	private Long servicePersonId;
 
-
 	/**
 	 * 维修任务确认超时设置
 	 */
@@ -85,6 +88,33 @@ public class CheckOrderInfoDTO extends CheckOrderInfoEntity {
 	@ApiModelProperty("排序字段")
 	private String prop;
 
+	/**
+	 * 行政区划排除
+	 */
 	@ApiModelProperty(value = "行政区划排除")
 	private Integer excludeCode;
+
+	/**
+	 * 维护状态
+	 */
+	@ApiModelProperty(value = "维护状态")
+	private Integer orderStatus;
+
+	/**
+	 * 维修填报 0 无填报 1 已填报
+	 */
+	@ApiModelProperty(value = "维修填报")
+	private Integer orderReportStatus;
+
+	/**
+	 * 任务填报日期区间-开始日期
+	 */
+	@ApiModelProperty("开始时间")
+	private Date reportStartDate;
+
+	/**
+	 * 任务填报日期区间-结束日期,不包括
+	 */
+	@ApiModelProperty("结束时间")
+	private Date reportEndDate;
 }

+ 40 - 14
src/main/java/org/springblade/modules/business/check/order/entity/CheckOrderInfoEntity.java

@@ -8,6 +8,8 @@ package org.springblade.modules.business.check.order.entity;
 
 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.NullSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -45,12 +47,14 @@ public class CheckOrderInfoEntity extends BaseEntity {
 	 * 工单来源,字典
 	 */
 	@ApiModelProperty("工单来源")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
 	private Long orderFromKey;
 
 	/**
 	 * 工单状态,字典
 	 */
 	@ApiModelProperty("工单状态")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
 	private Long orderStatusKey;
 
 	/**
@@ -59,28 +63,25 @@ public class CheckOrderInfoEntity extends BaseEntity {
 	@ApiModelProperty(value = "工单说明")
 	private String orderDesc;
 
-	/**
-	 * 工单确认人
-	 */
-	@ApiModelProperty(value = "工单确认人")
-	private Long orderConfirmUser;
-
 	/**
 	 * 预警ID
 	 */
 	@ApiModelProperty(value = "预警ID")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
 	private Long warnId;
 
 	/**
 	 * 工单关闭
 	 */
 	@ApiModelProperty(value = "工单关闭")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
 	private Integer orderClose;
 
 	/**
 	 * 工单确认
 	 */
 	@ApiModelProperty(value = "工单确认")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
 	private Integer orderConfirm;
 
 	/**
@@ -97,22 +98,47 @@ public class CheckOrderInfoEntity extends BaseEntity {
 	private Date orderConfirmTime;
 
 	/**
-	 * 联系电话
+	 * 工单负责人员
 	 */
-	@ApiModelProperty(value = "联系电话")
-	private String contactPhone;
+	@ApiModelProperty(value = "工单负责人员")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Long contactUser;
 
 	/**
-	 * 负责人
+	 * 工单负责人员联系电话
 	 */
-	@ApiModelProperty(value = "负责人")
-	private Long contactUser;
+	@ApiModelProperty(value = "工单负责人员联系电话")
+	private String contactPhone;
 
 	/**
-	 * 任务填报人
+	 * 维修填报人员
 	 */
-	@ApiModelProperty(value = "任务填报人")
+	@ApiModelProperty(value = "维修填报人员")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
 	private Long processUser;
 
+	@ApiModelProperty(value = "填报时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date orderProcessTime;
+
+	/**
+	 * 工单确认人员
+	 */
+	@ApiModelProperty(value = "工单确认人员")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Long orderConfirmUser;
+
+	/**
+	 * 关闭类型 0 系统自动关闭 1 人工关闭
+	 */
+	@ApiModelProperty(value = "关闭类型")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer orderCloseType;
 
 }

+ 2 - 1
src/main/java/org/springblade/modules/business/check/order/mapper/RtuCheckOrderMapper.java

@@ -88,7 +88,7 @@ public interface RtuCheckOrderMapper extends BaseMapper<CheckOrderInfoEntity> {
 	 * @param checkOrderInfoDTO
 	 * @return
 	 */
-	List<CheckOrderCountVO> orderReportCount(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
+	List<CheckOrderCountVO> orderReportCountList(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
 
 	/**
 	 * 任务数量
@@ -107,6 +107,7 @@ public interface RtuCheckOrderMapper extends BaseMapper<CheckOrderInfoEntity> {
 	Long reportCount(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
 
 
+	Long orderReportCount(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
 	/**
 	 * 查询维修任务历史信息
 	 * @param page

+ 159 - 43
src/main/java/org/springblade/modules/business/check/order/mapper/RtuCheckOrderMapper.xml

@@ -17,7 +17,8 @@
         <result column="contact_user" property="contactUser"/>
         <result column="contact_phone" property="contactPhone"/>
         <result column="process_user" property="processUser"/>
-
+        <result column="order_process_time" property="orderProcessTime"/>
+        <result column="order_close_type" property="orderCloseType"/>
     </resultMap>
 
     <!-- 通用查询映射结果 -->
@@ -50,8 +51,11 @@
         <result column="process_user" property="processUser"/>
         <result column="processor_name" property="processorName"/>
         <result column="process_user_name" property="processUserName"/>
-
-
+        <result column="process_user_phone" property="processUserPhone"/>
+        <result column="order_confirm_user_name" property="orderConfirmUserName"/>
+        <result column="order_confirm_user_phone" property="orderConfirmUserPhone"/>
+        <result column="order_process_time" property="orderProcessTime"/>
+        <result column="order_close_type" property="orderCloseType"/>
     </resultMap>
 
     <resultMap id="checkOrderCountVOResultMap" type="org.springblade.modules.business.check.order.vo.CheckOrderCountVO">
@@ -60,7 +64,8 @@
         <result column="processing_order_count" property="processingOrderCount"/>
     </resultMap>
 
-    <resultMap id="checkOrderHistroyVOResultMap" type="org.springblade.modules.business.check.order.vo.CheckOrderHistroyVO">
+    <resultMap id="checkOrderHistroyVOResultMap"
+               type="org.springblade.modules.business.check.order.vo.CheckOrderHistroyVO">
         <result column="rtu_code" property="rtuCode"/>
         <result column="rtu_name" property="rtuName"/>
         <result column="order_count" property="orderCount"/>
@@ -76,12 +81,14 @@
         <result column="location_desc" property="locationDesc"/>
         <result column="ad_city" property="adCity"/>
         <result column="ad_dist" property="adDist"/>
+
     </resultMap>
 
     <select id="allOrders" resultMap="checkOrderInfoVOResultMap">
         SELECT
-        o.*,u.real_name AS processor_name,u.phone AS contact_phone,i.rtu_name,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist,u2.real_name
-        AS contact_user_name,u3.real_name AS process_user_name
+        o.*,u.real_name AS processor_name,u.phone AS
+        contact_phone,i.rtu_name,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist,u2.real_name
+        AS contact_user_name,u3.real_name AS process_user_name,u3.phone as process_user_phone
         FROM
         rtu_failure_check_order o
         LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code and i.is_deleted=0
@@ -106,6 +113,12 @@
         <if test="checkOrderInfoDTO.orderClose!=null">
             and o.order_close = #{checkOrderInfoDTO.orderClose}
         </if>
+        <if test="checkOrderInfoDTO.reportStartDate!=null">
+            and o.order_process_time &gt;= #{checkOrderInfoDTO.reportStartDate}
+        </if>
+        <if test="checkOrderInfoDTO.reportEndDate!=null">
+            and o.order_process_time &lt; #{checkOrderInfoDTO.reportEndDate}
+        </if>
         <if test="checkOrderInfoDTO.excludeCode!=null and checkOrderInfoDTO.excludeCode==1">
             and a.exclude_ad = 0
         </if>
@@ -118,8 +131,10 @@
 
     <select id="selectPage" resultMap="checkOrderInfoVOResultMap">
         SELECT
-        o.*,u.real_name AS processor_name,i.rtu_name,i.is_rain,i.is_river,i.is_res,i.is_ground,i.is_video,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist,u2.real_name
-        AS contact_user_name,a.adcd,a.ancestors,u3.real_name AS process_user_name
+        o.*,u.real_name AS
+        processor_name,i.rtu_name,i.is_rain,i.is_river,i.is_res,i.is_ground,i.is_video,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist,u2.real_name
+        AS contact_user_name,a.adcd,a.ancestors,u3.real_name AS process_user_name,u3.phone as process_user_phone,u4.real_name AS
+        order_confirm_user_name,u4.phone AS order_confirm_user_phone
         FROM
         rtu_failure_check_order o
         LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code and i.is_deleted=0
@@ -128,6 +143,7 @@
         LEFT JOIN blade_user u ON u.id = o.update_user and u.is_deleted=0
         LEFT JOIN blade_user u2 ON u2.id = o.contact_user and u2.is_deleted=0
         LEFT JOIN blade_user u3 ON u3.id = o.process_user and u3.is_deleted=0
+        LEFT JOIN blade_user u4 ON u4.id = o.order_confirm_user and u4.is_deleted=0
         WHERE
         o.is_deleted = 0
         <if test="checkOrderInfoDTO.rtuCode!=null">
@@ -139,12 +155,24 @@
         <if test="checkOrderInfoDTO.contactUser!=null">
             and o.contact_user = #{checkOrderInfoDTO.contactUser}
         </if>
+        <if test="checkOrderInfoDTO.orderConfirmUser!=null">
+            and o.order_confirm_user = #{checkOrderInfoDTO.orderConfirmUser}
+        </if>
         <if test="checkOrderInfoDTO.orderConfirm!=null">
             and o.order_confirm = #{checkOrderInfoDTO.orderConfirm}
         </if>
         <if test="checkOrderInfoDTO.orderClose!=null">
             and o.order_close = #{checkOrderInfoDTO.orderClose}
         </if>
+        <if test="checkOrderInfoDTO.orderStatusKey!=null">
+            and o.order_status_key = #{checkOrderInfoDTO.orderStatusKey}
+        </if>
+        <if test="checkOrderInfoDTO.orderReportStatus!=null and  checkOrderInfoDTO.orderReportStatus==0">
+            and o.process_user is null
+        </if>
+        <if test="checkOrderInfoDTO.orderReportStatus!=null and  checkOrderInfoDTO.orderReportStatus==1">
+            and o.process_user is not null
+        </if>
         <if test="checkOrderInfoDTO.excludeCode!=null and checkOrderInfoDTO.excludeCode==1">
             and a.exclude_ad = 0
         </if>
@@ -157,35 +185,45 @@
 
     <select id="selectHistoryPage" resultMap="checkOrderHistroyVOResultMap">
         SELECT
-            orders.rtu_code,
-            orders.order_count,
-            a.adcd,
-            a.ancestors,
-            i.rtu_name,i.is_rain,i.is_river,i.is_res,i.is_ground,i.is_video,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist
+        orders.rtu_code,
+        orders.order_count,
+        a.adcd,
+        a.ancestors,
+        i.rtu_name,i.is_rain,i.is_river,i.is_res,i.is_ground,i.is_video,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist
         FROM
-            (
-            SELECT
-                o.rtu_code,
-                count( * ) order_count
-            FROM
-                rtu_failure_check_order o
-            WHERE
-                o.is_deleted = 0
-                AND o.order_confirm = 1
-                AND o.order_close = 1
-            GROUP BY
-                o.rtu_code
-            ) orders
-            LEFT JOIN rtu_info i ON i.rtu_code = orders.rtu_code and i.is_deleted=0
-            LEFT JOIN data_ad_cd_b a ON a.adcd = i.ad_code and a.is_deleted=0
+        (
+        SELECT
+        o.rtu_code,
+        count( * ) order_count
+        FROM
+        rtu_failure_check_order o
         WHERE
-            1 = 1
+        o.is_deleted = 0
+        AND o.order_confirm = 1
+        AND o.order_close = 1
+        <if test="checkOrderInfoDTO.orderReportStatus!=null and  checkOrderInfoDTO.orderReportStatus==0">
+            and o.process_user is null
+        </if>
+        <if test="checkOrderInfoDTO.orderReportStatus!=null and  checkOrderInfoDTO.orderReportStatus==1">
+            and o.process_user is not null
+        </if>
+        <if test="checkOrderInfoDTO.orderCloseType!=null">
+            and o.order_close_type = #{checkOrderInfoDTO.orderCloseType}
+        </if>
+        GROUP BY
+        o.rtu_code
+        ) orders
+        LEFT JOIN rtu_info i ON i.rtu_code = orders.rtu_code and i.is_deleted=0
+        LEFT JOIN data_ad_cd_b a ON a.adcd = i.ad_code and a.is_deleted=0
+        WHERE
+        1 = 1
         <if test="checkOrderInfoDTO.rtuCode!=null">
             and orders.rtu_code like concat(concat('%', #{checkOrderInfoDTO.rtuCode}), '%')
         </if>
         <if test="checkOrderInfoDTO.rtuName!=null">
             and i.rtu_name like concat(concat('%', #{checkOrderInfoDTO.rtuName}), '%')
         </if>
+
         <if test="checkOrderInfoDTO.excludeCode!=null and checkOrderInfoDTO.excludeCode==1">
             and a.exclude_ad = 0
         </if>
@@ -209,22 +247,27 @@
             </otherwise>
         </choose>
 
-  </select>
+    </select>
 
     <select id="selectWarnPage" resultMap="checkOrderInfoVOResultMap">
         SELECT
-        o.*,u.real_name AS processor_name,i.rtu_name,i.is_rain,i.is_river,i.is_res,i.is_ground,i.is_video,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist,u2.real_name
-        AS contact_user_name,a.adcd,a.ancestors,u3.real_name AS process_user_name
+        o.*,u.real_name AS
+        processor_name,i.rtu_name,i.is_rain,i.is_river,i.is_res,i.is_ground,i.is_video,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist,u2.real_name
+        AS contact_user_name,a.adcd,a.ancestors,u3.real_name AS process_user_name,u4.real_name AS
+        order_confirm_user_name,u4.phone AS order_confirm_user_phone
         FROM
         rtu_failure_check_order o
         LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code and i.is_deleted=0
+        LEFT JOIN blade_dict_biz d ON d.id = o.order_status_key and d.is_deleted=0
         LEFT JOIN rtu_warning w ON w.rtu_code = o.rtu_code and w.is_deleted = 0
         LEFT JOIN data_ad_cd_b a ON a.adcd = i.ad_code and a.is_deleted=0
         LEFT JOIN blade_user u ON u.id = o.update_user and u.is_deleted=0
         LEFT JOIN blade_user u2 ON u2.id = o.contact_user and u2.is_deleted=0
         LEFT JOIN blade_user u3 ON u3.id = o.process_user and u3.is_deleted=0
+        LEFT JOIN blade_user u4 ON u4.id = o.order_confirm_user and u4.is_deleted=0
         WHERE
         o.is_deleted = 0
+        AND w.warning_status =0
         and w.warning_kind = #{checkOrderInfoDTO.warnKind}
         <if test="checkOrderInfoDTO.rtuCode!=null">
             and o.rtu_code like concat(concat('%', #{checkOrderInfoDTO.rtuCode}), '%')
@@ -235,12 +278,18 @@
         <if test="checkOrderInfoDTO.contactUser!=null">
             and o.contact_user = #{checkOrderInfoDTO.contactUser}
         </if>
+        <if test="checkOrderInfoDTO.orderConfirmUser!=null">
+            and o.order_confirm_user = #{checkOrderInfoDTO.orderConfirmUser}
+        </if>
         <if test="checkOrderInfoDTO.orderConfirm!=null">
             and o.order_confirm = #{checkOrderInfoDTO.orderConfirm}
         </if>
         <if test="checkOrderInfoDTO.orderClose!=null">
             and o.order_close = #{checkOrderInfoDTO.orderClose}
         </if>
+        <if test="checkOrderInfoDTO.orderStatusKey!=null">
+            and o.order_status_key = #{checkOrderInfoDTO.orderStatusKey}
+        </if>
         <if test="checkOrderInfoDTO.excludeCode!=null and checkOrderInfoDTO.excludeCode==1">
             and a.exclude_ad = 0
         </if>
@@ -248,20 +297,22 @@
             and (a.adcd =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE
             is_deleted =0 and ancestors like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
         </if>
-        order by o.order_confirm ,o.order_close,o.create_time
+        order by d.dict_key desc , o.update_time desc
     </select>
 
     <select id="selectMyPage" resultMap="checkOrderInfoVOResultMap">
         SELECT
-        o.*,u.real_name AS processor_name,i.rtu_name,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist,u2.real_name AS
-        contact_user_name,a.adcd,a.ancestors,u3.real_name AS process_user_name
+        o.*,i.rtu_name,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist,a.adcd,a.ancestors,confirmUser.real_name AS
+        contact_user_name,confirmUser.phone AS order_confirm_user_phone,processorUser.real_name AS
+        process_user_name,processorUser.phone AS process_user_phone,contactUser.real_name AS
+        contactUserName,contactUser.phone AS contact_phone
         FROM
         rtu_failure_check_order o
         LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code and i.is_deleted=0
         LEFT JOIN data_ad_cd_b a ON a.adcd = i.ad_code and a.is_deleted=0
-        LEFT JOIN blade_user u ON u.id = o.update_user and u.is_deleted=0
-        LEFT JOIN blade_user u2 ON u2.id = o.contact_user and u2.is_deleted=0
-        LEFT JOIN blade_user u3 ON u3.id = o.process_user and u3.is_deleted=0
+        LEFT JOIN blade_user confirmUser ON confirmUser.id = o.order_confirm_user and confirmUser.is_deleted=0
+        LEFT JOIN blade_user contactUser ON contactUser.id = o.contact_user and contactUser.is_deleted=0
+        LEFT JOIN blade_user processorUser ON processorUser.id = o.process_user and processorUser.is_deleted=0
         WHERE
         o.is_deleted = 0
         <if test="checkOrderInfoDTO.rtuCode!=null">
@@ -273,6 +324,9 @@
         <if test="checkOrderInfoDTO.contactUser!=null">
             and o.contact_user = #{checkOrderInfoDTO.contactUser}
         </if>
+        <if test="checkOrderInfoDTO.orderConfirmUser!=null">
+            and o.order_confirm_user = #{checkOrderInfoDTO.orderConfirmUser}
+        </if>
         <if test="checkOrderInfoDTO.orderConfirm!=null">
             and o.order_confirm = #{checkOrderInfoDTO.orderConfirm}
         </if>
@@ -339,6 +393,47 @@
         <if test="checkOrderInfoDTO.contactUser!=null">
             and o.contact_user = #{checkOrderInfoDTO.contactUser}
         </if>
+        <if test="checkOrderInfoDTO.orderConfirmUser!=null">
+            and o.order_confirm_user = #{checkOrderInfoDTO.orderConfirmUser}
+        </if>
+        <if test="checkOrderInfoDTO.orderStatusKey!=null">
+            and o.order_status_key = #{checkOrderInfoDTO.orderStatusKey}
+        </if>
+        <if test="checkOrderInfoDTO.reportEndDate!=null">
+            and o.create_time &lt; #{checkOrderInfoDTO.reportEndDate}
+        </if>
+        <if test="checkOrderInfoDTO.excludeCode!=null and checkOrderInfoDTO.excludeCode==1">
+            and a.exclude_ad = 0
+        </if>
+        <if test="checkOrderInfoDTO.adCode!=null">
+            and (a.adcd =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE
+            is_deleted =0 and ancestors like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
+        </if>
+    </select>
+
+
+    <select id="orderReportCount" resultType="java.lang.Long">
+        SELECT
+        count(*)
+        FROM
+        rtu_failure_check_order o
+        LEFT JOIN rtu_info i ON o.rtu_code = i.rtu_code and i.is_deleted=0
+        LEFT JOIN data_ad_cd_b a ON a.adcd = i.ad_code and a.is_deleted=0
+        WHERE
+        o.is_deleted = 0
+            and o.order_close = 0
+            and o.order_confirm = 1
+            and o.process_user is not null
+            and o.order_process_time is not null
+        <if test="checkOrderInfoDTO.orderStatusKey!=null">
+            and o.order_status_key = #{checkOrderInfoDTO.orderStatusKey}
+        </if>
+        <if test="checkOrderInfoDTO.reportStartDate!=null">
+            and o.order_process_time &gt;= #{checkOrderInfoDTO.reportStartDate}
+        </if>
+        <if test="checkOrderInfoDTO.reportEndDate!=null">
+            and o.order_process_time &lt; #{checkOrderInfoDTO.reportEndDate}
+        </if>
         <if test="checkOrderInfoDTO.excludeCode!=null and checkOrderInfoDTO.excludeCode==1">
             and a.exclude_ad = 0
         </if>
@@ -359,6 +454,15 @@
         o.is_deleted = 0
         and o.order_close =0
         and o.order_confirm=1
+        <if test="checkOrderInfoDTO.orderConfirmUser!=null">
+            and o.order_confirm_user = #{checkOrderInfoDTO.orderConfirmUser}
+        </if>
+        <if test="checkOrderInfoDTO.orderStatusKey!=null">
+            and o.order_status_key = #{checkOrderInfoDTO.orderStatusKey}
+        </if>
+        <if test="checkOrderInfoDTO.reportEndDate!=null">
+            and o.create_time &lt; #{checkOrderInfoDTO.reportEndDate}
+        </if>
         <if test="checkOrderInfoDTO.excludeCode!=null and checkOrderInfoDTO.excludeCode==1">
             and a.exclude_ad = 0
         </if>
@@ -371,7 +475,8 @@
 
     <select id="unconfirmOrderList" resultMap="checkOrderInfoVOResultMap">
         SELECT
-        o.*,u.real_name AS processor_name,i.rtu_name,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist,u3.real_name AS process_user_name
+        o.*,u.real_name AS processor_name,i.rtu_name,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist,u3.real_name AS
+        process_user_name
         FROM
         rtu_failure_check_order o
         LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code and i.is_deleted=0
@@ -381,6 +486,7 @@
         WHERE
         o.is_deleted = 0
         and o.order_confirm = 0
+        and o.order_close =0
         <if test="checkOrderInfoDTO.rtuCode!=null">
             and o.rtu_code like concat(concat('%', #{checkOrderInfoDTO.rtuCode}), '%')
         </if>
@@ -408,6 +514,7 @@
         WHERE
         o.is_deleted = 0
         and o.order_confirm = 0
+        and o.order_close =0
         <if test="checkOrderInfoDTO.excludeCode!=null and checkOrderInfoDTO.excludeCode==1">
             and a.exclude_ad = 0
         </if>
@@ -426,10 +533,19 @@
         LEFT JOIN data_ad_cd_b a ON a.adcd = i.ad_code and a.is_deleted=0
         WHERE
         o.is_deleted = 0
-        and o.order_confirm = 1 and o.order_close=0
-
+        and o.order_close=0
+        and o.order_confirm=1
+        <if test="checkOrderInfoDTO.orderConfirmUser!=null">
+            and o.order_confirm_user = #{checkOrderInfoDTO.orderConfirmUser}
+        </if>
         <if test="checkOrderInfoDTO.orderStatusKey!=null">
-            AND o.id in (select order_id from  rtu_failure_check_order_process where is_deleted=0 and order_status_key =#{checkOrderInfoDTO.orderStatusKey} group by order_id)
+            and o.order_status_key = #{checkOrderInfoDTO.orderStatusKey}
+        </if>
+        <if test="checkOrderInfoDTO.reportStartDate!=null">
+            and o.order_process_time &gt;= #{checkOrderInfoDTO.reportStartDate}
+        </if>
+        <if test="checkOrderInfoDTO.reportEndDate!=null">
+            and o.order_process_time &lt; #{checkOrderInfoDTO.reportEndDate}
         </if>
         <if test="checkOrderInfoDTO.excludeCode!=null and checkOrderInfoDTO.excludeCode==1">
             and a.exclude_ad = 0
@@ -440,7 +556,7 @@
         </if>
     </select>
 
-    <select id="orderReportCount" resultMap="checkOrderCountVOResultMap">
+    <select id="orderReportCountList" resultMap="checkOrderCountVOResultMap">
         SELECT u.real_name,u.id,o.order_count,o2.processing_order_count FROM blade_user u LEFT JOIN
         (SELECT order_confirm_user,count(id) as order_count FROM rtu_failure_check_order WHERE is_deleted=0 AND
         order_confirm_user is not null AND order_confirm =1 GROUP BY order_confirm_user) o

+ 4 - 1
src/main/java/org/springblade/modules/business/check/order/service/IRtuCheckOrderService.java

@@ -7,6 +7,7 @@
 package org.springblade.modules.business.check.order.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.modules.business.check.order.dto.CheckOrderInfoDTO;
 import org.springblade.modules.business.check.order.entity.CheckOrderInfoEntity;
@@ -93,7 +94,7 @@ public interface IRtuCheckOrderService extends BaseService<CheckOrderInfoEntity>
 	 * @param checkOrderInfoDTO
 	 * @return
 	 */
-	List<CheckOrderCountVO> orderReportCount( CheckOrderInfoDTO checkOrderInfoDTO);
+	List<CheckOrderCountVO> orderReportCountList( CheckOrderInfoDTO checkOrderInfoDTO);
 
 
 	/**
@@ -110,6 +111,8 @@ public interface IRtuCheckOrderService extends BaseService<CheckOrderInfoEntity>
 	 */
 	Long unCloseOrderCount(CheckOrderInfoDTO checkOrderInfoDTO);
 
+	Long orderReportCount(CheckOrderInfoDTO checkOrderInfoDTO);
+
 	Long reportCount(CheckOrderInfoDTO checkOrderInfoDTO);
 	/**
 	 * 关闭维修任务

+ 8 - 12
src/main/java/org/springblade/modules/business/check/order/service/impl/RtuCheckOrderServiceImpl.java

@@ -130,8 +130,8 @@ public class RtuCheckOrderServiceImpl extends BaseServiceImpl<RtuCheckOrderMappe
 	}
 
 	@Override
-	public List<CheckOrderCountVO> orderReportCount(CheckOrderInfoDTO checkOrderInfoDTO) {
-		return baseMapper.orderReportCount(checkOrderInfoDTO);
+	public List<CheckOrderCountVO> orderReportCountList(CheckOrderInfoDTO checkOrderInfoDTO) {
+		return baseMapper.orderReportCountList(checkOrderInfoDTO);
 	}
 
 	@Override
@@ -144,6 +144,11 @@ public class RtuCheckOrderServiceImpl extends BaseServiceImpl<RtuCheckOrderMappe
 		return baseMapper.unCloseOrderCount(checkOrderInfoDTO);
 	}
 
+	@Override
+	public Long orderReportCount(CheckOrderInfoDTO checkOrderInfoDTO) {
+		return this.baseMapper.orderReportCount(checkOrderInfoDTO);
+	}
+
 	@Override
 	public Long reportCount(CheckOrderInfoDTO checkOrderInfoDTO) {
 		return baseMapper.reportCount(checkOrderInfoDTO);
@@ -159,6 +164,7 @@ public class RtuCheckOrderServiceImpl extends BaseServiceImpl<RtuCheckOrderMappe
 		if (null != checkOrderInfoEntity) {
 			DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE.getCode());
 			//更新工单状态
+			checkOrderInfoEntity.setOrderCloseType(checkOrderInfoDTO.getOrderCloseType());
 			checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
 			checkOrderInfoEntity.setOrderClose(OrderCloseEnum.ACTIVE_CLOSE.getCode());
 			checkOrderInfoEntity.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
@@ -167,22 +173,12 @@ public class RtuCheckOrderServiceImpl extends BaseServiceImpl<RtuCheckOrderMappe
 			this.updateById(checkOrderInfoEntity);
 			//增加工单处理关闭记
 			OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
-//			LambdaQueryWrapper<RtuWarningInfoEntity> warningWrapper = Wrappers.<RtuWarningInfoEntity>query().lambda();
-//			warningWrapper.eq(RtuWarningInfoEntity::getIsDeleted, 0);
 			if (null != checkOrderInfoEntity.getWarnId()) {
 				RtuWarningInfoEntity rtuWarningInfoEntity = rtuWarningService.getById(checkOrderInfoEntity.getWarnId());
 				processInfoEntity.setProcessDesc(rtuWarningInfoEntity.getWarningRecoveryDesc());
 			} else {
 				processInfoEntity.setProcessDesc("由系统自动关闭维修任务");
 			}
-//			warningWrapper.eq(RtuWarningInfoEntity::getId, checkOrderInfoDTO.getWarnId());
-//			warningWrapper.eq(RtuWarningInfoEntity::getWarningStatus, WarningStatusEnum.STATUS_HAPPEN.getCode());
-//			List<RtuWarningInfoEntity> warningInfoEntityList = rtuWarningService.list(warningWrapper);
-//			if (checkOrderInfoEntity.getWarnId().equals(checkOrderInfoDTO.getWarnId())){
-//				processInfoEntity.setProcessDesc("由系统自动关闭维修任务:"+checkOrderInfoDTO.getOrderDesc());
-//			}else{
-//				processInfoEntity.setProcessDesc("由系统自动关闭维修任务:"+checkOrderInfoDTO.getOrderDesc());
-//			}
 			processInfoEntity.setOrderId(checkOrderInfoEntity.getId());
 			processInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
 			processInfoEntity.setCreateUser(BusinessConstant.SYS_ADMIN_ID);

+ 5 - 1
src/main/java/org/springblade/modules/business/check/order/vo/CheckOrderCountVO.java

@@ -47,5 +47,9 @@ public class CheckOrderCountVO extends BaseEntity {
 	private Long processingOrderCount;
 
 
-
+	/**
+	 * 已处理工单数量
+	 */
+	@ApiModelProperty(value = "已处理工单数量")
+	private Long reportOrderCount;
 }

+ 45 - 6
src/main/java/org/springblade/modules/business/check/order/vo/CheckOrderInfoVO.java

@@ -10,6 +10,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.NullSerializer;
 import io.swagger.annotations.ApiModelProperty;
+import io.swagger.models.auth.In;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.modules.business.check.order.entity.CheckOrderInfoEntity;
@@ -83,16 +84,11 @@ public class CheckOrderInfoVO extends CheckOrderInfoEntity {
 	@ApiModelProperty(value = "处理人")
 	private String processorName;
 
-	/**
-	 * 负责人名称
-	 */
-	@ApiModelProperty(value = "负责人名称")
-	private String contactUserName;
-
 	/**
 	 * 是否确认
 	 */
 	@ApiModelProperty(value = "是否确认")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
 	private Integer isConfirm;
 
 	/**
@@ -197,6 +193,7 @@ public class CheckOrderInfoVO extends CheckOrderInfoEntity {
 	 * 维护状态
 	 */
 	@ApiModelProperty(value = "维护状态")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
 	private Integer orderStatus;
 
 	/**
@@ -241,10 +238,52 @@ public class CheckOrderInfoVO extends CheckOrderInfoEntity {
 	@ApiModelProperty(value = "开卡单位")
 	private String networkPayer;
 
+	/**
+	 * 工单负责人员名称
+	 */
+	@ApiModelProperty(value = "工单负责人员名称")
+	private String contactUserName;
+
+	/**
+	 * 运维单位管理员名称
+	 */
+	@ApiModelProperty(value = "运维单位管理员名称")
+	private String manageCompanyAdminName;
+
+	/**
+	 * 运维单位管理员联系电话
+	 */
+	@ApiModelProperty(value = "运维单位管理员联系电话")
+	private String manageCompanyAdminPhone;
 
 	/**
 	 * 填报人名称
 	 */
 	@ApiModelProperty(value = "填报人名称")
 	private String processUserName;
+
+	/**
+	 * 填报人联系电话
+	 */
+	@ApiModelProperty(value = "填报人联系电话")
+	private String processUserPhone;
+
+	/**
+	 * 确认人名称
+	 */
+	@ApiModelProperty(value = "确认人名称")
+	private String orderConfirmUserName;
+
+	/**
+	 * 确认人电话
+	 */
+	@ApiModelProperty(value = "确认人电话")
+	private String orderConfirmUserPhone;
+
+	/**
+	 * 维修填报 0 无填报 1 已填报
+	 */
+	@ApiModelProperty(value = "维修填报")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer orderReportStatus;
 }

+ 7 - 0
src/main/java/org/springblade/modules/business/check/order/vo/OrgCheckOrderCountVO.java

@@ -51,4 +51,11 @@ public class OrgCheckOrderCountVO extends BaseEntity {
 	 */
 	@ApiModelProperty(value = "未确认任务数量")
 	private Long unconfirmOrderCount;
+
+	/**
+	 * 已处理工单数量
+	 */
+	@ApiModelProperty(value = "已处理工单数量")
+	private Long reportOrderCount;
+
 }

+ 106 - 129
src/main/java/org/springblade/modules/business/check/order/wrapper/RtuCheckOrderWrapper.java

@@ -8,22 +8,30 @@ package org.springblade.modules.business.check.order.wrapper;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.springblade.common.cache.DictBizCache;
 import org.springblade.constant.BusinessConstant;
+import org.springblade.constant.DictBusinessConstant;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.enums.OrderConfirmEnum;
+import org.springblade.enums.OrderStatusEnum;
 import org.springblade.enums.WarnKindEnum;
+import org.springblade.modules.baseinfo.dict.entity.DictInfoEntity;
+import org.springblade.modules.baseinfo.dict.service.IBaseInfoDictService;
 import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
 import org.springblade.modules.baseinfo.org.service.IDeptRegionService;
 import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
 import org.springblade.modules.baseinfo.region.service.IBaseInfoRegionService;
 import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
 import org.springblade.modules.baseinfo.rtu.service.IRtuBaseInfoService;
+import org.springblade.modules.business.check.order.dto.CheckOrderInfoDTO;
 import org.springblade.modules.business.check.order.entity.CheckOrderInfoEntity;
+import org.springblade.modules.business.check.order.service.IRtuCheckOrderService;
 import org.springblade.modules.business.check.order.vo.CheckOrderHistroyVO;
 import org.springblade.modules.business.check.order.vo.CheckOrderInfoVO;
+import org.springblade.modules.business.check.process.service.IRtuOrderProcessService;
+import org.springblade.modules.business.check.process.vo.OrderProcessInfoVO;
 import org.springblade.modules.business.warning.entity.RtuWarningInfoEntity;
 import org.springblade.modules.business.warning.service.IRtuWarningService;
 import org.springblade.modules.system.entity.Dept;
@@ -124,6 +132,23 @@ public class RtuCheckOrderWrapper extends BaseEntityWrapper<CheckOrderInfoEntity
 		return regionService;
 	}
 
+	private static IBaseInfoDictService baseInfoDictService;
+
+	private static IBaseInfoDictService getBaseInfoDictService() {
+		if (baseInfoDictService == null) {
+			baseInfoDictService = SpringUtil.getBean(IBaseInfoDictService.class);
+		}
+		return baseInfoDictService;
+	}
+
+	private static IRtuOrderProcessService orderProcessService;
+
+	private static IRtuOrderProcessService getOrderProcessService() {
+		if (orderProcessService == null) {
+			orderProcessService = SpringUtil.getBean(IRtuOrderProcessService.class);
+		}
+		return orderProcessService;
+	}
 
 	@Override
 	public CheckOrderInfoVO entityVO(CheckOrderInfoEntity entity) {
@@ -138,10 +163,10 @@ public class RtuCheckOrderWrapper extends BaseEntityWrapper<CheckOrderInfoEntity
 		LambdaQueryWrapper<RegionInfoEntity> regionQueryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
 		regionQueryWrapper.eq(RegionInfoEntity::getAdcd, rtuInfoEntity.getAdCode());
 		RegionInfoEntity regionInfoEntity = getRegionService().getOne(regionQueryWrapper);
-		String ancestors = regionInfoEntity.getAncestors()+","+rtuInfoEntity.getAdCode();
+		String ancestors = regionInfoEntity.getAncestors() + "," + rtuInfoEntity.getAdCode();
 		String[] ancestorsList = ancestors.split(",");
-		for (int i=2;i<ancestorsList.length;i++){
-			String adCode=ancestorsList[i];
+		if (ancestorsList.length >= 3) {
+			String adCode = ancestorsList[2];
 			LambdaQueryWrapper<DeptRegionEntity> wrapper = Wrappers.<DeptRegionEntity>query().lambda();
 			wrapper.eq(DeptRegionEntity::getAdcd, adCode);
 			List<DeptRegionEntity> deptRegionEntities = getDeptRegionService().list(wrapper);
@@ -151,7 +176,6 @@ public class RtuCheckOrderWrapper extends BaseEntityWrapper<CheckOrderInfoEntity
 					if (null != dept) {
 						if (dept.getDeptCategory() == 1) {
 							vo.setManageCompany(dept.getDeptName());
-							break;
 						}
 					}
 				}
@@ -161,6 +185,9 @@ public class RtuCheckOrderWrapper extends BaseEntityWrapper<CheckOrderInfoEntity
 	}
 
 	public CheckOrderInfoVO entityVO(CheckOrderInfoVO vo) {
+		//处理人
+		vo.setProcessorName(vo.getContactUserName());
+		//行政区划名称
 		String areaName = "";
 		if (null != vo.getAdCity()) {
 			areaName += vo.getAdCity();
@@ -172,53 +199,89 @@ public class RtuCheckOrderWrapper extends BaseEntityWrapper<CheckOrderInfoEntity
 			areaName += vo.getAdDist();
 		}
 		vo.setAreaName(areaName);
+		//工单来源名称
+		if (vo.getOrderFromKey() != null) {
+			DictBiz biz = getDictBizService().getById(vo.getOrderFromKey());
+			vo.setOrderFromName(biz.getDictValue());
+		}
+		//工单状态名称
+		if (vo.getOrderStatusKey() != null) {
+			DictBiz biz = getDictBizService().getById(vo.getOrderStatusKey());
+			vo.setOrderStatusName(biz.getDictValue());
+		}
 
-		DictBiz biz = DictBizCache.getById(vo.getOrderFromKey());
-		vo.setOrderFromName(biz.getDictValue());
-		biz = DictBizCache.getById(vo.getOrderStatusKey());
-		vo.setOrderStatusName(biz.getDictValue());
+		//工单状态代码
+		if (vo.getOrderStatusKey() != null) {
+			DictBiz dictInfoEntity = getDictBizService().getById(vo.getOrderStatusKey());
+			vo.setOrderStatus(Func.toInt(dictInfoEntity.getDictKey()));
+		}
+		//是否已经确认
 		if (vo.getOrderConfirmUser() != null) {
 			vo.setIsConfirm(1);
 		} else {
 			vo.setIsConfirm(0);
 		}
-		if (vo.getOrderConfirmTime() != null) {
-			Duration duration = Func.between(vo.getOrderConfirmTime(), new Date());
-			long second = duration.getSeconds();
-			String taskTime = "";
+		//维修填报
+		if (vo.getProcessUser() != null) {
+			vo.setOrderReportStatus(1);
+		} else {
+			vo.setOrderReportStatus(0);
+		}
+		//计算任务创建时长
+		Duration duration = Func.between(vo.getCreateTime(), new Date());
+		long second = duration.getSeconds();
+		String taskTime = "";
+		if (second >= 60 * 60) {
+			if (second >= 24 * 60 * 60) {
+				taskTime = "" + second / (24 * 60 * 60) + "天";
+				second = second % (24 * 60 * 60);
+			}
 			if (second >= 60 * 60) {
-				if (second >= 24 * 60 * 60) {
-					taskTime = "" + second / (24 * 60 * 60) + "天";
-					second = second % (24 * 60 * 60);
-				}
+				taskTime += "" + second / (60 * 60) + "小时";
+				second = second % (60 * 60);
+			}
+			if (second >= 60) {
+				taskTime += "" + second / (60) + "分";
+			}
+		} else {
+			taskTime = "1小时内";
+		}
+		vo.setTaskCreateDuration(taskTime);
+		//计算维修时长
+		if (vo.getOrderConfirm() == OrderConfirmEnum.ACTIVE_CONFIRM.getCode()) {
+			if (vo.getOrderConfirmTime() != null) {
+				duration = Func.between(vo.getOrderConfirmTime(), new Date());
+				second = duration.getSeconds();
+				taskTime = "";
 				if (second >= 60 * 60) {
-					taskTime += "" + second / (60 * 60) + "小时";
-					second = second % (60 * 60);
-				}
-				if (second >= 60) {
-					taskTime += "" + second / (60) + "分";
+					if (second >= 24 * 60 * 60) {
+						taskTime = "" + second / (24 * 60 * 60) + "天";
+						second = second % (24 * 60 * 60);
+					}
+					if (second >= 60 * 60) {
+						taskTime += "" + second / (60 * 60) + "小时";
+						second = second % (60 * 60);
+					}
+					if (second >= 60) {
+						taskTime += "" + second / (60) + "分";
+					}
+				} else {
+					taskTime = "1小时内";
 				}
-			} else {
-				taskTime = "1小时内";
+				vo.setTaskProcessDuration(taskTime);
 			}
-			vo.setTaskProcessDuration(taskTime);
 		}
-		if (vo.getOrderStatusKey() != null) {
-			DictBiz dictInfoEntity = getDictBizService().getById(vo.getOrderStatusKey());
-			vo.setOrderStatus(Func.toInt(dictInfoEntity.getDictKey()));
-		}
-
-
+		//运维公司、运维管理员信息
 		LambdaQueryWrapper<RtuInfoEntity> rtuLambdaQueryWrapper = Wrappers.<RtuInfoEntity>query().lambda();
 		rtuLambdaQueryWrapper.eq(RtuInfoEntity::getRtuCode, vo.getRtuCode());
 		RtuInfoEntity rtuInfoEntity = getRtuBaseInfoService().getOne(rtuLambdaQueryWrapper);
 		LambdaQueryWrapper<RegionInfoEntity> regionQueryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
 		regionQueryWrapper.eq(RegionInfoEntity::getAdcd, rtuInfoEntity.getAdCode());
 		RegionInfoEntity regionInfoEntity = getRegionService().getOne(regionQueryWrapper);
-		String ancestors = regionInfoEntity.getAncestors()+","+rtuInfoEntity.getAdCode();
+		String ancestors = regionInfoEntity.getAncestors() + "," + rtuInfoEntity.getAdCode();
 		String[] ancestorsList = ancestors.split(",");
-		for (int i=2;i<ancestorsList.length;i++){
-			String adCode=ancestorsList[i];
+		if (ancestorsList.length >= 3) {
+			String adCode = ancestorsList[2];
 			LambdaQueryWrapper<DeptRegionEntity> wrapper = Wrappers.<DeptRegionEntity>query().lambda();
 			wrapper.eq(DeptRegionEntity::getAdcd, adCode);
 			List<DeptRegionEntity> deptRegionEntities = getDeptRegionService().list(wrapper);
@@ -227,112 +290,27 @@ public class RtuCheckOrderWrapper extends BaseEntityWrapper<CheckOrderInfoEntity
 					Dept dept = getDeptService().getById(deptRegionEntity.getDeptId());
 					if (null != dept) {
 						if (dept.getDeptCategory() == 1) {
-							vo.setManageCompany(dept.getDeptName());
 							vo.setManageCompany(dept.getDeptName());
 							//查找运维公司负责人
-							if (vo.getOrderConfirm() == 0) {
-								LambdaQueryWrapper<User> userLambdaQueryWrapper = Wrappers.<User>query().lambda();
-								userLambdaQueryWrapper.eq(User::getIsDeleted, 0);
-								userLambdaQueryWrapper.eq(User::getDeptId, dept.getId());
-								List<User> userList = getUserService().list(userLambdaQueryWrapper);
-								for (User u : userList) {
-									Role role = getRoleService().getById(u.getRoleId());
-									if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(role.getRoleAlias())) {
-										vo.setContactUserName(u.getRealName());
-										vo.setContactPhone(u.getPhone());
-										break;
-									}
+							LambdaQueryWrapper<User> userLambdaQueryWrapper = Wrappers.<User>query().lambda();
+							userLambdaQueryWrapper.eq(User::getDeptId, dept.getId());
+							List<User> userList = getUserService().list(userLambdaQueryWrapper);
+							for (User u : userList) {
+								Role role = getRoleService().getById(u.getRoleId());
+								if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(role.getRoleAlias())) {
+									vo.setManageCompanyAdminName(u.getRealName());
+									vo.setManageCompanyAdminPhone(u.getPhone());
 								}
 							}
-							break;
 						}
 					}
 				}
 			}
 		}
-
-
-
-//		String ancestors = vo.getAncestors();
-//		if (null != ancestors && ancestors.length() > 0) {
-//			String[] ancestorsList = ancestors.split(",");
-//			String adCode;
-//			if (ancestorsList.length >= 3) {
-//				adCode = ancestorsList[2];
-//			} else {
-//				adCode = vo.getAdCode();
-//			}
-//			if (null != adCode) {
-//				LambdaQueryWrapper<DeptRegionEntity> wrapper = Wrappers.<DeptRegionEntity>query().lambda();
-//				wrapper.eq(DeptRegionEntity::getIsDeleted, 0);
-//				wrapper.eq(DeptRegionEntity::getAdcd, adCode);
-//				List<DeptRegionEntity> deptRegionEntities = getDeptRegionService().list(wrapper);
-//				if (null != deptRegionEntities && deptRegionEntities.size() > 0) {
-//					String manageCompany = "";
-//					for (DeptRegionEntity deptRegionEntity : deptRegionEntities) {
-//						Dept dept = getDeptService().getById(deptRegionEntity.getDeptId());
-//						if (null != dept) {
-//							//查找运维公司负责人
-//							if (vo.getOrderConfirm() == 0) {
-//								LambdaQueryWrapper<User> userLambdaQueryWrapper = Wrappers.<User>query().lambda();
-//								userLambdaQueryWrapper.eq(User::getIsDeleted, 0);
-//								userLambdaQueryWrapper.eq(User::getDeptId, dept.getId());
-//								List<User> userList = getUserService().list(userLambdaQueryWrapper);
-//								for (User u : userList) {
-//									Role role = getRoleService().getById(u.getRoleId());
-//									if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(role.getRoleAlias())) {
-//										vo.setContactUserName(u.getRealName());
-//										vo.setContactPhone(u.getPhone());
-//										break;
-//									}
-//								}
-//							}
-//
-//						}
-//					}
-//				}
-//			}
-//		}
-
-//		LambdaQueryWrapper<RtuInfoEntity> rtuLambdaQueryWrapper = Wrappers.<RtuInfoEntity>query().lambda();
-//		rtuLambdaQueryWrapper.eq(RtuInfoEntity::getIsDeleted, 0);
-//		rtuLambdaQueryWrapper.eq(RtuInfoEntity::getRtuCode, vo.getRtuCode());
-//		RtuInfoEntity rtuInfoEntity=getRtuBaseInfoService().getOne(rtuLambdaQueryWrapper);
-//		vo.setManageCompany(rtuInfoEntity.getManageCompany());
-
-		Duration duration = Func.between(vo.getCreateTime(), new Date());
-		long second = duration.getSeconds();
-		String taskTime = "";
-		if (second >= 60 * 60) {
-			if (second >= 24 * 60 * 60) {
-				taskTime = "" + second / (24 * 60 * 60) + "天";
-				second = second % (24 * 60 * 60);
-			}
-			if (second >= 60 * 60) {
-				taskTime += "" + second / (60 * 60) + "小时";
-				second = second % (60 * 60);
-			}
-			if (second >= 60) {
-				taskTime += "" + second / (60) + "分";
-			}
-		} else {
-			taskTime = "1小时内";
-		}
-		vo.setTaskCreateDuration(taskTime);
+		//预警信息
 		RtuWarningInfoEntity rtuWarningInfoEntity = getRtuWarningService().getById(vo.getWarnId());
-		//LambdaQueryWrapper<RtuWarningInfoEntity> queryWrapper = Wrappers.<RtuWarningInfoEntity>query().lambda();
-		//queryWrapper.eq(RtuWarningInfoEntity::getIsDeleted, 0);
-		//queryWrapper.eq(RtuWarningInfoEntity::getId,vo.getWarnId());
-		//queryWrapper.eq(RtuWarningInfoEntity::getRtuCode, vo.getRtuCode());
-		//queryWrapper.eq(RtuWarningInfoEntity::getWarningStatus, 0);
-		//List<RtuWarningInfoEntity> rtuWarningInfoEntityList = getRtuWarningService().list(queryWrapper);
-		//if (null != rtuWarningInfoEntityList && rtuWarningInfoEntityList.size() > 0) {
 		if (null != rtuWarningInfoEntity) {
 			String warnKinds = "";
-			//for (RtuWarningInfoEntity rtuWarningInfoEntity : rtuWarningInfoEntityList) {
-			//	if (warnKinds.length() > 0) {
-			//	warnKinds += "/";
-			//	}
 			if (WarnKindEnum.WARN_CLOCK.getCode() == rtuWarningInfoEntity.getWarningKind()) {
 				warnKinds += "测站时钟异常";
 			} else if (WarnKindEnum.WARN_UP_MIN_DELAY.getCode() == rtuWarningInfoEntity.getWarningKind()) {
@@ -350,7 +328,6 @@ public class RtuCheckOrderWrapper extends BaseEntityWrapper<CheckOrderInfoEntity
 			} else if (WarnKindEnum.WARN_WL_UP_HOUR_DELAY.getCode() == rtuWarningInfoEntity.getWarningKind()) {
 				warnKinds += "水位站小时上报延时";
 			}
-			//}
 			vo.setWarnKindInfo(warnKinds);
 		}
 		return vo;

+ 40 - 15
src/main/java/org/springblade/modules/business/check/process/controller/RtuOrderProcessController.java

@@ -1,7 +1,7 @@
 /**
  * Copyright 2019 DH
  * All right reserved.
- * 项目名称: 大恒泰山系统
+ * 项目名称: 运维系统
  * 创建日期:2022/8/22
  */
 package org.springblade.modules.business.check.process.controller;
@@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
-import org.springblade.common.cache.DictBizCache;
 import org.springblade.constant.BusinessConstant;
 import org.springblade.constant.DictBusinessConstant;
 import org.springblade.core.boot.ctrl.BladeController;
@@ -30,6 +29,7 @@ import org.springblade.modules.baseinfo.dict.entity.DictInfoEntity;
 import org.springblade.modules.baseinfo.dict.service.IBaseInfoDictService;
 import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
 import org.springblade.modules.baseinfo.org.service.IDeptRegionService;
+import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
 import org.springblade.modules.baseinfo.region.entity.RegionTreeNodeEntity;
 import org.springblade.modules.baseinfo.region.service.IBaseInfoRegionService;
 import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
@@ -45,6 +45,7 @@ import org.springblade.modules.business.check.process.wrapper.RtuOrderProcessWra
 import org.springblade.modules.resource.builder.oss.OssBuilder;
 import org.springblade.modules.system.entity.DictBiz;
 import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.service.IDictBizService;
 import org.springblade.modules.system.service.IUserService;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -74,6 +75,8 @@ public class RtuOrderProcessController extends BladeController {
 	private final IDeptRegionService deptRegionService;
 	private final IRtuBaseInfoService rtuBaseInfoService;
 	private final IBaseInfoRegionService regionService;
+	private final IDictBizService dictBizService;
+
 	@Resource
 	private OssBuilder ossBuilder;
 	/**
@@ -87,9 +90,9 @@ public class RtuOrderProcessController extends BladeController {
 	@ApiOperation(value = "不分页", notes = "传入checkOrderInfoDTO")
 	public R<List<OrderProcessInfoVO>> list(CheckOrderInfoDTO checkOrderInfoDTO) {
 		List<OrderProcessInfoVO> list = rtuOrderProcessService.selectList(checkOrderInfoDTO);
-		CheckOrderInfoEntity checkOrderInfoEntity = checkOrderService.getById(checkOrderInfoDTO.getId());
+		//CheckOrderInfoEntity checkOrderInfoEntity = checkOrderService.getById(checkOrderInfoDTO.getId());
 		for (OrderProcessInfoVO v : list) {
-			v.setTaskCreateTime(checkOrderInfoEntity.getCreateTime());
+			//v.setTaskCreateTime(checkOrderInfoEntity.getCreateTime());
 			RtuOrderProcessWrapper.build().entityVO(v);
 		}
 		return R.data(list);
@@ -124,24 +127,45 @@ public class RtuOrderProcessController extends BladeController {
 	@ApiOperation(value = "分页")
 	public R<List<OrderProcessInfoVO>> todayList(@ApiIgnore OrderProcessInfoDTO processInfoDTO) {
 		BladeUser user = AuthUtil.getUser();
+		int excludecode = 0;
 		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
 			processInfoDTO.setAdCode(BusinessConstant.REGION_NM_ADCODE);
 		} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
-			LambdaQueryWrapper<DeptRegionEntity> deptRegionEntityLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
-			deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
-			deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, Func.toLong(user.getDeptId()));
-			DeptRegionEntity deptRegionEntity = deptRegionService.getOne(deptRegionEntityLambdaQueryWrapper);
+			DeptRegionEntity deptRegionEntity = deptRegionService.getRegionByDeptId(Func.toLong(user.getDeptId()));
+//			LambdaQueryWrapper<DeptRegionEntity> deptRegionEntityLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
+//			deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
+//			deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, Func.toLong(user.getDeptId()));
+//			DeptRegionEntity deptRegionEntity = deptRegionService.getOne(deptRegionEntityLambdaQueryWrapper);
 			if (null == deptRegionEntity){
 				return R.data(null);
 			}
 			processInfoDTO.setAdCode(deptRegionEntity.getAdcd());
-		}
 
-		if (processInfoDTO.getAdCode()!=null){
-			RegionTreeNodeEntity nodeEntity= this.regionService.getRegionNode(user.getRoleName(),user.getDeptId(),processInfoDTO.getAdCode());
-			processInfoDTO.setExcludeCode(nodeEntity.getExclude());
+			//DeptRegionEntity deptRegionEntity = deptRegionService.getRegionByDeptId(Func.toLong(user.getDeptId()));
+
+			LambdaQueryWrapper<RegionInfoEntity> nodeQueryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
+			nodeQueryWrapper.eq(RegionInfoEntity::getAdcd, deptRegionEntity.getAdcd());
+			RegionInfoEntity nodeRegion = this.regionService.getOne(nodeQueryWrapper);
+
+			if (nodeRegion.getParentCode().equals(BusinessConstant.REGION_NM_ADCODE)) {
+				excludecode = 1;
+			}
 		}
 
+//		if (processInfoDTO.getAdCode()!=null){
+//			DeptRegionEntity deptRegionEntity = deptRegionService.getRegionByDeptId(Func.toLong(user.getDeptId()));
+//
+//			LambdaQueryWrapper<RegionInfoEntity> nodeQueryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
+//			nodeQueryWrapper.eq(RegionInfoEntity::getAdcd, deptRegionEntity.getAdcd());
+//			RegionInfoEntity nodeRegion = this.regionService.getOne(nodeQueryWrapper);
+//			int excludecode = 0;
+//			if (nodeRegion.getParentCode().equals(BusinessConstant.REGION_NM_ADCODE)) {
+//				excludecode = 1;
+//			}
+//			RegionTreeNodeEntity nodeEntity= this.regionService.getRegionNode(user.getRoleName(),user.getDeptId(),processInfoDTO.getAdCode());
+//
+//		}
+		processInfoDTO.setExcludeCode(excludecode);
 		Date date = new Date();
 		String dt = Func.formatDateTime(date);
 		processInfoDTO.setCreateTime(Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd")));
@@ -209,7 +233,7 @@ public class RtuOrderProcessController extends BladeController {
 			User user = userService.getById(checkOrderInfoEntity.getOrderConfirmUser());
 			vo.setOrderConfirmUserName(user.getRealName());
 		}
-		DictBiz biz = DictBizCache.getById(checkOrderInfoEntity.getOrderFromKey());
+		DictBiz biz = dictBizService.getById(checkOrderInfoEntity.getOrderFromKey());
 		vo.setOrderFromText(biz.getDictValue());
 		return R.data(vo);
 	}
@@ -223,12 +247,13 @@ public class RtuOrderProcessController extends BladeController {
 	public R save(@RequestBody OrderProcessInfoEntity orderProcessInfoEntity) {
 		BladeUser user = AuthUtil.getUser();
 		CheckOrderInfoEntity checkOrderInfoEntity = checkOrderService.getById(orderProcessInfoEntity.getOrderId());
-
 		DictInfoEntity dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_PROCESS.getCode());
 		checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
 		checkOrderInfoEntity.setOrderDesc(orderProcessInfoEntity.getProcessDesc());
 		checkOrderInfoEntity.setProcessUser(user.getUserId());
-		checkOrderService.updateOrderStatus(checkOrderInfoEntity);
+		checkOrderInfoEntity.setOrderProcessTime(new Date());
+		checkOrderService.updateById(checkOrderInfoEntity);
+		//checkOrderService.updateOrderStatus(checkOrderInfoEntity);
 
 		orderProcessInfoEntity.setOrderStatusKey(checkOrderInfoEntity.getOrderStatusKey());
 		rtuOrderProcessService.save(orderProcessInfoEntity);

+ 26 - 6
src/main/java/org/springblade/modules/business/check/process/mapper/RtuOrderProcessMapper.java

@@ -1,7 +1,7 @@
 /**
  * Copyright 2019 DH
  * All right reserved.
- * 项目名称: 大恒泰山系统
+ * 项目名称:
  * 创建日期:2022/8/22
  */
 package org.springblade.modules.business.check.process.mapper;
@@ -13,8 +13,6 @@ import org.springblade.modules.business.check.order.dto.CheckOrderInfoDTO;
 import org.springblade.modules.business.check.process.dto.OrderProcessInfoDTO;
 import org.springblade.modules.business.check.process.entity.OrderProcessInfoEntity;
 import org.springblade.modules.business.check.process.vo.OrderProcessInfoVO;
-import org.springblade.modules.business.equipment.inspection.report.dto.EquipmentInspectionReportDTO;
-import org.springblade.modules.business.equipment.inspection.report.vo.EquipmentInspectionReportVO;
 
 import java.util.List;
 
@@ -27,9 +25,21 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 public interface RtuOrderProcessMapper  extends BaseMapper<OrderProcessInfoEntity> {
+	/**
+	 * 查询上报任务信息
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
 	List<OrderProcessInfoVO> selectList(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
 
+	/**
+	 * 按页查询上报任务信息
+	 * @param page
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
 	List<OrderProcessInfoVO> selectPage(IPage page, @Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
+
 	/**
 	 * 查询当天提交的工单填报信息
 	 * @param processInfoDTO
@@ -37,7 +47,6 @@ public interface RtuOrderProcessMapper  extends BaseMapper<OrderProcessInfoEntit
 	 */
 	List<OrderProcessInfoVO> selectTodayProcessList(@Param("processInfoDTO") OrderProcessInfoDTO processInfoDTO);
 
-
 	/**
 	 * 分页,查询当天提交的工单填报信息
 	 * @param page
@@ -46,6 +55,13 @@ public interface RtuOrderProcessMapper  extends BaseMapper<OrderProcessInfoEntit
 	 */
 	List<OrderProcessInfoVO> selectTodayProcessPage(IPage page,@Param("processInfoDTO") OrderProcessInfoDTO processInfoDTO);
 
+	/**
+	 * 查询当天上报任务数量
+	 * @param processInfoDTO
+	 * @return
+	 */
+	long todayProcessCount(@Param("processInfoDTO") OrderProcessInfoDTO processInfoDTO);
+
 	/**
 	 * 查询维修任务上报时无网络信号列表
 	 *
@@ -55,6 +71,10 @@ public interface RtuOrderProcessMapper  extends BaseMapper<OrderProcessInfoEntit
 	 */
 	List<OrderProcessInfoVO> selectNoNetworkSignalPage(IPage page, @Param("processInfoDTO") OrderProcessInfoDTO processInfoDTO);
 
-
-	long todayProcessCount(@Param("processInfoDTO") OrderProcessInfoDTO processInfoDTO);
+	/**
+	 * 查询已填报任务信息
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	List<OrderProcessInfoVO> selectReportList(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
 }

+ 46 - 4
src/main/java/org/springblade/modules/business/check/process/mapper/RtuOrderProcessMapper.xml

@@ -145,15 +145,25 @@
         <result column="ad_city" property="adCity"/>
         <result column="ad_dist" property="adDist"/>
 
+        <result column="is_rain" property="isRain"/>
+        <result column="is_river" property="isRiver"/>
+        <result column="is_res" property="isRes"/>
+        <result column="is_ground" property="isGround"/>
+
+        <result column="is_satellite" property="isSatellite"/>
+
+        <result column="warn_id" property="warnId"/>
+
     </resultMap>
 
     <select id="selectList" resultMap="orderProcessInfoVOResultMap">
         SELECT
-        p.*,u.real_name,o.order_confirm_user
+        p.*,u.real_name,o.order_confirm_user,r.is_rain,r.is_river,r.is_res,r.is_ground,r.is_satellite,r.rtu_name,o.rtu_code
         FROM
         rtu_failure_check_order_process p
-        LEFT JOIN blade_user u ON u.id = p.update_user and u.is_deleted=0
         LEFT JOIN rtu_failure_check_order o ON o.id = p.order_id and o.is_deleted=0
+        LEFT JOIN rtu_info r ON r.rtu_code = o.rtu_code and r.is_deleted=0
+        LEFT JOIN blade_user u ON u.id = p.update_user and u.is_deleted=0
         WHERE
         p.is_deleted = 0
         <if test="checkOrderInfoDTO.id!=null">
@@ -162,13 +172,45 @@
         order by p.create_time
     </select>
 
-    <select id="selectPage" resultMap="orderProcessInfoVOResultMap">
+    <select id="selectReportList" resultMap="orderProcessInfoVOResultMap">
         SELECT
-        p.*,u.real_name
+        p.*,u.real_name,o.order_confirm_user,r.is_rain,r.is_river,r.is_res,r.is_ground,r.is_satellite,r.rtu_name,o.rtu_code,o.warn_id,a.adnm AS ad_city
         FROM
         rtu_failure_check_order_process p
+        LEFT JOIN rtu_failure_check_order o ON o.id = p.order_id and o.is_deleted=0
+        LEFT JOIN rtu_info r ON r.rtu_code = o.rtu_code and r.is_deleted=0
         LEFT JOIN blade_user u ON u.id = p.update_user and u.is_deleted=0
+        LEFT JOIN data_ad_cd_b a ON a.adcd = r.ad_code and a.is_deleted=0
+        WHERE
+        p.is_deleted = 0
+        AND o.process_user is not null
+        <if test="checkOrderInfoDTO.reportStartDate!=null">
+            and p.create_time &gt;= #{checkOrderInfoDTO.reportStartDate}
+        </if>
+        <if test="checkOrderInfoDTO.reportEndDate!=null">
+            and p.create_time &lt; #{checkOrderInfoDTO.reportEndDate}
+        </if>
+        <if test="checkOrderInfoDTO.orderStatusKey!=null">
+            and p.order_status_key = #{checkOrderInfoDTO.orderStatusKey}
+        </if>
+        <if test="checkOrderInfoDTO.excludeCode!=null and checkOrderInfoDTO.excludeCode==1">
+            and a.exclude_ad = 0
+        </if>
+        <if test="checkOrderInfoDTO.adCode!=null">
+            and (a.adcd =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE is_deleted =0 and ancestors  like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
+        </if>
+        order by a.adnm ,r.rtu_code
+    </select>
+
 
+    <select id="selectPage" resultMap="orderProcessInfoVOResultMap">
+        SELECT
+        p.*,u.real_name,r.is_rain,r.is_river,r.is_res,r.is_ground,r.is_satellite
+        FROM
+        rtu_failure_check_order_process p
+        LEFT JOIN blade_user u ON u.id = p.update_user and u.is_deleted=0
+        LEFT JOIN rtu_failure_check_order o ON o.id = p.order_id and o.is_deleted=0
+        LEFT JOIN rtu_info r ON r.rtu_code = o.rtu_code and r.is_deleted=0
         WHERE
         p.is_deleted = 0
         <if test="checkOrderInfoDTO.id!=null">

+ 8 - 0
src/main/java/org/springblade/modules/business/check/process/service/IRtuOrderProcessService.java

@@ -7,6 +7,7 @@
 package org.springblade.modules.business.check.process.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.modules.business.check.order.dto.CheckOrderInfoDTO;
 import org.springblade.modules.business.check.process.dto.OrderProcessInfoDTO;
@@ -62,4 +63,11 @@ public interface IRtuOrderProcessService extends BaseService<OrderProcessInfoEnt
 	 * @return
 	 */
 	IPage<OrderProcessInfoVO> selectNoNetworkSignalPage(IPage<OrderProcessInfoVO> page, OrderProcessInfoDTO processInfoDTO);
+
+	/**
+	 * 查询已填报任务信息
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	List<OrderProcessInfoVO> selectReportList(CheckOrderInfoDTO checkOrderInfoDTO);
 }

+ 5 - 0
src/main/java/org/springblade/modules/business/check/process/service/impl/RtuOrderProcessServiceImpl.java

@@ -59,5 +59,10 @@ public class RtuOrderProcessServiceImpl  extends BaseServiceImpl<RtuOrderProcess
 		return page.setRecords(baseMapper.selectNoNetworkSignalPage(page, processInfoDTO));
 	}
 
+	@Override
+	public List<OrderProcessInfoVO> selectReportList(CheckOrderInfoDTO checkOrderInfoDTO) {
+		return this.baseMapper.selectReportList(checkOrderInfoDTO);
+	}
+
 
 }

+ 44 - 0
src/main/java/org/springblade/modules/business/check/process/vo/OrderProcessInfoVO.java

@@ -7,6 +7,8 @@
 package org.springblade.modules.business.check.process.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.NullSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -117,4 +119,46 @@ public class OrderProcessInfoVO extends OrderProcessInfoEntity {
 	 */
 	@ApiModelProperty(value = "运维单位")
 	private String manageCompany;
+
+	/**
+	 * 是否雨量站
+	 */
+	@ApiModelProperty(value = "是否雨量站")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer isRain;
+
+	/**
+	 * 是否河道站
+	 */
+	@ApiModelProperty(value = "是否河道站")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer isRiver;
+
+	/**
+	 * 是否水库站
+	 */
+	@ApiModelProperty(value = "是否水库站")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer isRes;
+
+	/**
+	 * 是否墒情站
+	 */
+	@ApiModelProperty(value = "是否墒情站")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer isGround;
+
+	/**
+	 * 是否北斗通信
+	 */
+	@ApiModelProperty(value = "是否北斗通信")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer isSatellite;
+
+	/**
+	 * 预警ID
+	 */
+	@ApiModelProperty(value = "预警ID")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Long warnId;
 }

+ 13 - 3
src/main/java/org/springblade/modules/business/check/process/wrapper/RtuOrderProcessWrapper.java

@@ -1,14 +1,13 @@
 /**
  * Copyright 2019 DH
  * All right reserved.
- * 项目名称: 大恒泰山系统
+ * 项目名称: 运维系统
  * 创建日期:2022/8/22
  */
 package org.springblade.modules.business.check.process.wrapper;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.springblade.common.cache.DictBizCache;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
@@ -20,6 +19,7 @@ import org.springblade.modules.business.check.process.vo.OrderProcessInfoVO;
 import org.springblade.modules.system.entity.Dept;
 import org.springblade.modules.system.entity.DictBiz;
 import org.springblade.modules.system.service.IDeptService;
+import org.springblade.modules.system.service.IDictBizService;
 
 import java.time.Duration;
 import java.util.List;
@@ -56,6 +56,16 @@ public class RtuOrderProcessWrapper extends BaseEntityWrapper<OrderProcessInfoEn
 		return deptService;
 	}
 
+	private static IDictBizService dictBizService;
+
+	private static IDictBizService getDictBizService() {
+		if (dictBizService == null) {
+			dictBizService = SpringUtil.getBean(IDictBizService.class);
+		}
+		return dictBizService;
+	}
+
+
 	@Override
 	public OrderProcessInfoVO entityVO(OrderProcessInfoEntity entity) {
 		OrderProcessInfoVO orderProcessInfoVO = Objects.requireNonNull(BeanUtil.copy(entity, OrderProcessInfoVO.class));
@@ -64,7 +74,7 @@ public class RtuOrderProcessWrapper extends BaseEntityWrapper<OrderProcessInfoEn
 
 	public OrderProcessInfoVO entityVO(OrderProcessInfoVO orderProcessInfoVO) {
 		if (null != orderProcessInfoVO.getOrderStatusKey()) {
-			DictBiz biz = DictBizCache.getById(orderProcessInfoVO.getOrderStatusKey());
+			DictBiz biz =  getDictBizService().getById(orderProcessInfoVO.getOrderStatusKey());
 			orderProcessInfoVO.setOrderStatusName(biz.getDictValue());
 		}
 		if (orderProcessInfoVO.getTaskCreateTime() != null) {

+ 40 - 1
src/main/java/org/springblade/modules/business/data/controller/RtuDataRainController.java

@@ -36,7 +36,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
-
+import java.util.List;
 
 
 /***
@@ -63,6 +63,7 @@ public class RtuDataRainController extends BladeController {
 		@ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string"),
 		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
 		@ApiImplicitParam(name = "adCode", value = "行政区划编码", paramType = "query", dataType = "string"),
+		@ApiImplicitParam(name = "rainCountType", value = "雨量统计类型", paramType = "query", dataType = "int"),
 	})
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页")
@@ -88,6 +89,44 @@ public class RtuDataRainController extends BladeController {
 			}
 		}
 		IPage<RtuDataRainVO> pages = dataRainService.selectPage(Condition.getPage(query), rtuDataRainDTO);
+		List<RtuDataRainVO> list = pages.getRecords();
+		for(RtuDataRainVO vo:list){
+			if(rtuDataRainDTO.getRainCountType()!=null){
+				if(rtuDataRainDTO.getRainCountType()==1){
+					vo.setIntvLable("近1小时");
+					vo.setDrp(vo.getH1drp());
+					vo.setTm(vo.getH1tm());
+				}else if(rtuDataRainDTO.getRainCountType()==3){
+					vo.setIntvLable("近3小时");
+					vo.setDrp(vo.getH3drp());
+					vo.setTm(vo.getH3tm());
+				}else if(rtuDataRainDTO.getRainCountType()==6){
+					vo.setIntvLable("近6小时");
+					vo.setDrp(vo.getH6drp());
+					vo.setTm(vo.getH6tm());
+				}else if(rtuDataRainDTO.getRainCountType()==12){
+					vo.setIntvLable("近12小时");
+					vo.setDrp(vo.getH12drp());
+					vo.setTm(vo.getH12tm());
+				}else if(rtuDataRainDTO.getRainCountType()==24){
+					vo.setIntvLable("近24小时");
+					vo.setDrp(vo.getH24drp());
+					vo.setTm(vo.getH24tm());
+				}else{
+					if(vo.getIntv() !=null && vo.getIntv()==0.05){
+						vo.setIntvLable("5分钟");
+					}else if(vo.getIntv()!=null &&  vo.getIntv()==1.0){
+						vo.setIntvLable("小时");
+					}
+				}
+			}else{
+				if(vo.getIntv() !=null && vo.getIntv()==0.05){
+					vo.setIntvLable("5分钟");
+				}else if(vo.getIntv()!=null &&  vo.getIntv()==1.0){
+					vo.setIntvLable("小时");
+				}
+			}
+		}
 		return R.data(pages);
 	}
 

+ 1 - 1
src/main/java/org/springblade/modules/business/data/controller/RtuDataRiverController.java

@@ -51,7 +51,7 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 @RestController
-@RequestMapping("galaxy-business/rtu/data/river")
+@RequestMapping("galaxy-business/disclaim/rtu/data/river")
 @AllArgsConstructor
 @Api(value = "河道水情实时数据管理", tags = "测站实时数据管理")
 public class RtuDataRiverController extends BladeController {

+ 115 - 0
src/main/java/org/springblade/modules/business/data/controller/RtuDataWaterLevelController.java

@@ -0,0 +1,115 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.constant.BusinessConstant;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.org.service.IDeptRegionService;
+import org.springblade.modules.baseinfo.region.entity.RegionTreeNodeEntity;
+import org.springblade.modules.baseinfo.region.service.IBaseInfoRegionService;
+import org.springblade.modules.business.data.dto.RtuDataWaterLevelDTO;
+import org.springblade.modules.business.data.entity.RtuDataWaterLevelEntity;
+import org.springblade.modules.business.data.service.IRtuDataWaterLevelService;
+import org.springblade.modules.business.data.vo.RtuDataWaterLevelVO;
+import org.springblade.modules.business.data.wrapper.RtuDataWaterLevelWrapper;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.List;
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@RestController
+@RequestMapping("galaxy-business/rtu/data/river")
+@AllArgsConstructor
+@Api(value = "河道水情实时数据管理", tags = "测站实时数据管理")
+public class RtuDataWaterLevelController extends BladeController {
+	private final IRtuDataWaterLevelService waterLevelService;
+	private final IDeptRegionService deptRegionService;
+	private final IBaseInfoRegionService regionService;
+
+	/**
+	 * 分页
+	 */
+	@GetMapping("/page")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string"),
+		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
+		@ApiImplicitParam(name = "adCode", value = "行政区划编码", paramType = "query", dataType = "string"),
+	})
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页")
+	public R<IPage<RtuDataWaterLevelVO>> page(@ApiIgnore RtuDataWaterLevelDTO dto, Query query) {
+		BladeUser user = AuthUtil.getUser();
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			if (dto.getAdCode() == null) {
+				dto.setAdCode(BusinessConstant.REGION_NM_ADCODE);
+			}
+		} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
+			if (dto.getAdCode() == null) {
+				LambdaQueryWrapper<DeptRegionEntity> deptRegionEntityLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
+				deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
+				deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, Func.toLong(user.getDeptId()));
+				DeptRegionEntity deptRegionEntity = deptRegionService.getOne(deptRegionEntityLambdaQueryWrapper);
+				dto.setAdCode(deptRegionEntity.getAdcd());
+			}
+		}
+		if (dto.getAdCode() != null) {
+			RegionTreeNodeEntity node = this.regionService.getRegionNode(user.getRoleName(), user.getDeptId(), dto.getAdCode());
+			if (null != node) {
+				dto.setExcludeCode(node.getExclude());
+			}
+		}
+		IPage<RtuDataWaterLevelVO> pages = waterLevelService.selectPage(Condition.getPage(query), dto);
+		List<RtuDataWaterLevelVO> list = pages.getRecords();
+		for (RtuDataWaterLevelVO vo : list) {
+			RtuDataWaterLevelWrapper.build().entityVO(vo);
+		}
+		return R.data(pages);
+	}
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
+	})
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入 RtuDataWaterLevelEntity")
+	public R<RtuDataWaterLevelEntity> detail(RtuDataWaterLevelEntity entity) {
+		LambdaQueryWrapper<RtuDataWaterLevelEntity> wrapper = Wrappers.<RtuDataWaterLevelEntity>query().lambda();
+		wrapper.eq(RtuDataWaterLevelEntity::getRtuCode, entity.getRtuCode());
+		RtuDataWaterLevelEntity waterLevelEntity = waterLevelService.getOne(wrapper);
+		return R.data(waterLevelEntity);
+	}
+}

+ 3 - 0
src/main/java/org/springblade/modules/business/data/dto/RtuDataRainDTO.java

@@ -84,4 +84,7 @@ public class RtuDataRainDTO extends RtuDataRainEntity {
 
 	@ApiModelProperty(value = "行政区划排除")
 	private Integer excludeCode;
+
+	@ApiModelProperty(value = "雨量统计类型")
+	private Integer rainCountType;
 }

+ 24 - 0
src/main/java/org/springblade/modules/business/data/dto/RtuDataRsvrDTO.java

@@ -6,11 +6,15 @@
  */
 package org.springblade.modules.business.data.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.core.mp.base.BaseEntity;
 import org.springblade.modules.business.data.entity.RtuDataRsvrEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /***
  * Date:2022/8/30
@@ -49,4 +53,24 @@ public class RtuDataRsvrDTO extends RtuDataRsvrEntity {
 
 	@ApiModelProperty(value = "行政区划排除")
 	private Integer excludeCode;
+
+	@ApiModelProperty("开始时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date beginTime;
+
+	@ApiModelProperty("结束时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date endTime;
 }

+ 75 - 0
src/main/java/org/springblade/modules/business/data/dto/RtuDataWaterLevelDTO.java

@@ -0,0 +1,75 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称:
+ * 创建日期:2023/8/22
+ */
+package org.springblade.modules.business.data.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.modules.business.data.entity.RtuDataWaterLevelEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/***
+ * Date:2023/8/22
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class RtuDataWaterLevelDTO extends RtuDataWaterLevelEntity {
+	/**
+	 * 测站名称
+	 */
+	@ApiModelProperty("测站名称")
+	private String rtuName;
+
+	/**
+	 * 行政区划编码
+	 */
+	@ApiModelProperty("行政区划编码")
+	private String adCode;
+
+	/**
+	 * 排序,ascending"  descending
+	 */
+	@ApiModelProperty("排序")
+	private String order;
+
+	/**
+	 * 排序字段
+	 */
+	@ApiModelProperty("排序字段")
+	private String prop;
+
+	@ApiModelProperty("开始时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date beginTime;
+
+	@ApiModelProperty("结束时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date endTime;
+
+	@ApiModelProperty(value = "行政区划排除")
+	private Integer excludeCode;
+}

+ 142 - 0
src/main/java/org/springblade/modules/business/data/entity/RtuDataGroundStoreEntity.java

@@ -0,0 +1,142 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.entity;
+
+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.NullSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("data_att_st_somo")
+public class RtuDataGroundStoreEntity extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 租户ID
+	 */
+	@ApiModelProperty("租户ID")
+	private String tenantId;
+
+	/**
+	 * 测站编码
+	 */
+	@ApiModelProperty("测站编码")
+	private String rtuCode;
+
+	/**
+	 * 时间
+	 */
+	@ApiModelProperty("时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date tm;
+
+	/**
+	 * 垂线平均含水量
+	 */
+	@ApiModelProperty("垂线平均含水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double vtavslm;
+
+	/**
+	 * 表层含水量
+	 */
+	@ApiModelProperty("表层含水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double srlslm;
+
+	/**
+	 * 10CM深度含水量
+	 */
+	@ApiModelProperty("10CM深度含水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double slm10;
+
+	/**
+	 * 20CM深度含水量
+	 */
+	@ApiModelProperty("20CM深度含水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double slm20;
+
+	/**
+	 * 30CM深度含水量
+	 */
+	@ApiModelProperty("30CM深度含水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double slm30;
+
+	/**
+	 * 40CM深度含水量
+	 */
+	@ApiModelProperty("40CM深度含水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double slm40;
+
+	/**
+	 * 50CM深度含水量
+	 */
+	@ApiModelProperty("50CM深度含水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double slm50;
+
+	/**
+	 * 60CM深度含水量
+	 */
+	@ApiModelProperty("60CM深度含水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double slm60;
+
+	/**
+	 * 80CM深度含水量
+	 */
+	@ApiModelProperty("80CM深度含水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double slm80;
+
+	/**
+	 * 100CM深度含水量
+	 */
+	@ApiModelProperty("100CM深度含水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double slm100;
+
+	/**
+	 * 东华数据库入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date fromTime;
+}

+ 86 - 0
src/main/java/org/springblade/modules/business/data/entity/RtuDataRainH12Entity.java

@@ -0,0 +1,86 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.entity;
+
+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.NullSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("data_att_st_prec_h12_cache")
+public class RtuDataRainH12Entity extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 租户ID
+	 */
+	@ApiModelProperty("租户ID")
+	private String tenantId;
+
+	/**
+	 * 测站编码
+	 */
+	@ApiModelProperty("测站编码")
+	private String rtuCode;
+
+	/**
+	 * 时间
+	 */
+	@ApiModelProperty("时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date tm;
+
+	/**
+	 * 降水量
+	 */
+	@ApiModelProperty("降水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double drp;
+
+	/**
+	 * 时段长
+	 */
+	@ApiModelProperty("时段长")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double intv;
+
+	/**
+	 * 东华数据库入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date fromTime;
+}

+ 86 - 0
src/main/java/org/springblade/modules/business/data/entity/RtuDataRainH1Entity.java

@@ -0,0 +1,86 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.entity;
+
+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.NullSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("data_att_st_prec_h1_cache")
+public class RtuDataRainH1Entity extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 租户ID
+	 */
+	@ApiModelProperty("租户ID")
+	private String tenantId;
+
+	/**
+	 * 测站编码
+	 */
+	@ApiModelProperty("测站编码")
+	private String rtuCode;
+
+	/**
+	 * 时间
+	 */
+	@ApiModelProperty("时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date tm;
+
+	/**
+	 * 降水量
+	 */
+	@ApiModelProperty("降水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double drp;
+
+	/**
+	 * 时段长
+	 */
+	@ApiModelProperty("时段长")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double intv;
+
+	/**
+	 * 东华数据库入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date fromTime;
+}

+ 86 - 0
src/main/java/org/springblade/modules/business/data/entity/RtuDataRainH24Entity.java

@@ -0,0 +1,86 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.entity;
+
+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.NullSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("data_att_st_prec_h24_cache")
+public class RtuDataRainH24Entity extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 租户ID
+	 */
+	@ApiModelProperty("租户ID")
+	private String tenantId;
+
+	/**
+	 * 测站编码
+	 */
+	@ApiModelProperty("测站编码")
+	private String rtuCode;
+
+	/**
+	 * 时间
+	 */
+	@ApiModelProperty("时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date tm;
+
+	/**
+	 * 降水量
+	 */
+	@ApiModelProperty("降水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double drp;
+
+	/**
+	 * 时段长
+	 */
+	@ApiModelProperty("时段长")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double intv;
+
+	/**
+	 * 东华数据库入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date fromTime;
+}

+ 86 - 0
src/main/java/org/springblade/modules/business/data/entity/RtuDataRainH3Entity.java

@@ -0,0 +1,86 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.entity;
+
+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.NullSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("data_att_st_prec_h3_cache")
+public class RtuDataRainH3Entity extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 租户ID
+	 */
+	@ApiModelProperty("租户ID")
+	private String tenantId;
+
+	/**
+	 * 测站编码
+	 */
+	@ApiModelProperty("测站编码")
+	private String rtuCode;
+
+	/**
+	 * 时间
+	 */
+	@ApiModelProperty("时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date tm;
+
+	/**
+	 * 降水量
+	 */
+	@ApiModelProperty("降水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double drp;
+
+	/**
+	 * 时段长
+	 */
+	@ApiModelProperty("时段长")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double intv;
+
+	/**
+	 * 东华数据库入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date fromTime;
+}

+ 86 - 0
src/main/java/org/springblade/modules/business/data/entity/RtuDataRainH6Entity.java

@@ -0,0 +1,86 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.entity;
+
+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.NullSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("data_att_st_prec_h6_cache")
+public class RtuDataRainH6Entity extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 租户ID
+	 */
+	@ApiModelProperty("租户ID")
+	private String tenantId;
+
+	/**
+	 * 测站编码
+	 */
+	@ApiModelProperty("测站编码")
+	private String rtuCode;
+
+	/**
+	 * 时间
+	 */
+	@ApiModelProperty("时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date tm;
+
+	/**
+	 * 降水量
+	 */
+	@ApiModelProperty("降水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double drp;
+
+	/**
+	 * 时段长
+	 */
+	@ApiModelProperty("时段长")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double intv;
+
+	/**
+	 * 东华数据库入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date fromTime;
+}

+ 86 - 0
src/main/java/org/springblade/modules/business/data/entity/RtuDataRainStoreEntity.java

@@ -0,0 +1,86 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.entity;
+
+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.NullSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("data_att_st_prec")
+public class RtuDataRainStoreEntity extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 租户ID
+	 */
+	@ApiModelProperty("租户ID")
+	private String tenantId;
+
+	/**
+	 * 测站编码
+	 */
+	@ApiModelProperty("测站编码")
+	private String rtuCode;
+
+	/**
+	 * 时间
+	 */
+	@ApiModelProperty("时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date tm;
+
+	/**
+	 * 降水量
+	 */
+	@ApiModelProperty("降水量")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double drp;
+
+	/**
+	 * 时段长
+	 */
+	@ApiModelProperty("时段长")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double intv;
+
+	/**
+	 * 东华数据库入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date fromTime;
+}

+ 79 - 0
src/main/java/org/springblade/modules/business/data/entity/RtuDataRiverStoreEntity.java

@@ -0,0 +1,79 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.entity;
+
+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.NullSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("data_att_st_waco_ware")
+public class RtuDataRiverStoreEntity extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 租户ID
+	 */
+	@ApiModelProperty("租户ID")
+	private String tenantId;
+
+	/**
+	 * 测站编码
+	 */
+	@ApiModelProperty("测站编码")
+	private String rtuCode;
+
+	/**
+	 * 时间
+	 */
+	@ApiModelProperty("时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date tm;
+
+	/**
+	 * 河道水位
+	 */
+	@ApiModelProperty("河道水位")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double z;
+
+	/**
+	 * 东华数据库入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date fromTime;
+}

+ 79 - 0
src/main/java/org/springblade/modules/business/data/entity/RtuDataRsvrStoreEntity.java

@@ -0,0 +1,79 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.entity;
+
+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.NullSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("data_att_st_res_ware")
+public class RtuDataRsvrStoreEntity extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 租户ID
+	 */
+	@ApiModelProperty("租户ID")
+	private String tenantId;
+
+	/**
+	 * 测站编码
+	 */
+	@ApiModelProperty("测站编码")
+	private String rtuCode;
+
+	/**
+	 * 时间
+	 */
+	@ApiModelProperty("时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date tm;
+
+	/**
+	 * 库上水位
+	 */
+	@ApiModelProperty("库上水位")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double rz;
+
+	/**
+	 * 东华数据库入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date fromTime;
+}

+ 93 - 0
src/main/java/org/springblade/modules/business/data/entity/RtuDataWaterLevelEntity.java

@@ -0,0 +1,93 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称:
+ * 创建日期:2023/8/22
+ */
+package org.springblade.modules.business.data.entity;
+
+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.NullSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/***
+ * Date:2023/8/22
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("data_att_st_river_reservoir_level_cache")
+public class RtuDataWaterLevelEntity extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 租户ID
+	 */
+	@ApiModelProperty("租户ID")
+	private String tenantId;
+
+	/**
+	 * 测站编码
+	 */
+	@ApiModelProperty("测站编码")
+	private String rtuCode;
+
+	/**
+	 * 时间
+	 */
+	@ApiModelProperty("时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date tm;
+
+	/**
+	 * 东华数据库入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date fromTime;
+
+	/**
+	 * 水位
+	 */
+	@ApiModelProperty("水位")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double waterLevel;
+
+	/**
+	 * 是否河道站
+	 */
+	@ApiModelProperty(value = "是否河道站")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer isRiver;
+
+	/**
+	 * 是否水库站
+	 */
+	@ApiModelProperty(value = "是否水库站")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer isRes;
+}

+ 93 - 0
src/main/java/org/springblade/modules/business/data/entity/RtuDataWaterLevelStoreEntity.java

@@ -0,0 +1,93 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称:
+ * 创建日期:2023/8/22
+ */
+package org.springblade.modules.business.data.entity;
+
+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.NullSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/***
+ * Date:2023/8/22
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("data_att_st_river_reservoir_level")
+public class RtuDataWaterLevelStoreEntity extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 租户ID
+	 */
+	@ApiModelProperty("租户ID")
+	private String tenantId;
+
+	/**
+	 * 测站编码
+	 */
+	@ApiModelProperty("测站编码")
+	private String rtuCode;
+
+	/**
+	 * 时间
+	 */
+	@ApiModelProperty("时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date tm;
+
+	/**
+	 * 东华数据库入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date fromTime;
+
+	/**
+	 * 水位
+	 */
+	@ApiModelProperty("水位")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double waterLevel;
+
+	/**
+	 * 是否河道站
+	 */
+	@ApiModelProperty(value = "是否河道站")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer isRiver;
+
+	/**
+	 * 是否水库站
+	 */
+	@ApiModelProperty(value = "是否水库站")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer isRes;
+}

+ 1 - 3
src/main/java/org/springblade/modules/business/data/mapper/RtuDataGroundMapper.java

@@ -1,7 +1,7 @@
 /**
  * Copyright 2019 DH
  * All right reserved.
- * 项目名称: 大恒泰山系统
+ * 项目名称:
  * 创建日期:2022/8/28
  */
 package org.springblade.modules.business.data.mapper;
@@ -32,6 +32,4 @@ public interface RtuDataGroundMapper extends BaseMapper<RtuDataGroundEntity> {
 	 * @return List<RtuInfoVO>
 	 */
 	List<RtuDataGroundVO> selectPage(IPage page, @Param("groundDTO") RtuDataGroundDTO groundDTO);
-
-	long rtuUpDataCount(@Param("groundDTO") RtuDataGroundDTO groundDTO);
 }

+ 0 - 28
src/main/java/org/springblade/modules/business/data/mapper/RtuDataGroundMapper.xml

@@ -79,32 +79,4 @@
             </otherwise>
         </choose>
     </select>
-
-    <select id="rtuUpDataCount" resultType="java.lang.Long">
-        SELECT
-        count( * )
-        FROM
-        (
-        SELECT
-        w.rtu_code
-        FROM
-        data_att_st_somo_cache w
-        LEFT JOIN rtu_info r ON w.rtu_code = r.rtu_code
-        AND r.is_deleted = 0
-        LEFT JOIN data_ad_cd_b a ON a.adcd = r.ad_code
-        AND a.is_deleted = 0
-        WHERE
-        w.is_deleted = 0
-        AND w.tm >= #{groundDTO.beginTime}
-        AND w.tm &lt; #{groundDTO.endTime}
-        <if test="groundDTO.excludeCode!=null and groundDTO.excludeCode==1">
-            and a.exclude_ad = 0
-        </if>
-        <if test="groundDTO.adCode!=null">
-            and (a.adcd =#{groundDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE is_deleted =0 and ancestors like concat(concat('%', #{groundDTO.adCode}), '%')))
-        </if>
-        GROUP BY
-        w.rtu_code
-        ) a
-    </select>
 </mapper>

+ 31 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataGroundStoreMapper.java

@@ -0,0 +1,31 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称:
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.modules.business.data.dto.RtuDataGroundDTO;
+import org.springblade.modules.business.data.dto.RtuDataRainDTO;
+import org.springblade.modules.business.data.entity.RtuDataGroundStoreEntity;
+import org.springblade.modules.business.data.entity.RtuDataRainStoreEntity;
+
+import java.util.List;
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface RtuDataGroundStoreMapper extends BaseMapper<RtuDataGroundStoreEntity> {
+
+	long rtuUpDataCount(@Param("groundDTO") RtuDataGroundDTO groundDTO);
+
+	List<RtuDataGroundStoreEntity> selectList(@Param("dto") RtuDataGroundDTO dto);
+}

+ 69 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataGroundStoreMapper.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.business.data.mapper.RtuDataGroundStoreMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="rtuGroundDataResultMap" type="org.springblade.modules.business.data.entity.RtuDataGroundStoreEntity">
+        <result column="rtu_code" property="rtuCode"/>
+        <result column="tm" property="tm"/>
+        <result column="vtavslm" property="vtavslm"/>
+        <result column="srlslm" property="srlslm"/>
+        <result column="slm10" property="slm10"/>
+        <result column="slm20" property="slm20"/>
+        <result column="slm30" property="slm30"/>
+        <result column="slm40" property="slm40"/>
+        <result column="slm50" property="slm50"/>
+        <result column="slm40" property="slm40"/>
+        <result column="slm60" property="slm60"/>
+        <result column="slm80" property="slm80"/>
+        <result column="slm100" property="slm100"/>
+        <result column="from_time" property="fromTime"/>
+    </resultMap>
+
+    <select id="selectList" resultMap="rtuGroundDataResultMap">
+        SELECT
+        w.*
+        FROM
+        data_att_st_somo w
+        WHERE
+        w.is_deleted = 0
+        <if test="dto.beginTime!=null">
+            AND w.tm >= #{dto.beginTime}
+        </if>
+        <if test="dto.endTime!=null">
+            AND w.tm &lt; #{dto.endTime}
+        </if>
+        <if test="dto.rtuCode!=null">
+            and w.rtu_code = #{dto.rtuCode}
+        </if>
+        order by w.tm
+    </select>
+
+    <select id="rtuUpDataCount" resultType="java.lang.Long">
+        SELECT
+        count( * )
+        FROM
+        (
+        SELECT
+        w.rtu_code
+        FROM
+        data_att_st_somo w
+        LEFT JOIN rtu_info r ON w.rtu_code = r.rtu_code
+        AND r.is_deleted = 0
+        LEFT JOIN data_ad_cd_b a ON a.adcd = r.ad_code
+        AND a.is_deleted = 0
+        WHERE
+        w.is_deleted = 0
+        AND w.tm >= #{groundDTO.beginTime}
+        AND w.tm &lt; #{groundDTO.endTime}
+        <if test="groundDTO.excludeCode!=null and groundDTO.excludeCode==1">
+            and a.exclude_ad = 0
+        </if>
+        <if test="groundDTO.adCode!=null">
+            and (a.adcd =#{groundDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE is_deleted =0 and ancestors like concat(concat('%', #{groundDTO.adCode}), '%')))
+        </if>
+        GROUP BY
+        w.rtu_code
+        ) a
+    </select>
+</mapper>

+ 24 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH12Mapper.java

@@ -0,0 +1,24 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.modules.business.data.entity.RtuDataRainH12Entity;
+
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface RtuDataRainH12Mapper extends BaseMapper<RtuDataRainH12Entity> {
+
+}

+ 15 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH12Mapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.business.data.mapper.RtuDataRainH12Mapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="rtuRainDataResultMap" type="org.springblade.modules.business.data.entity.RtuDataRainH12Entity">
+        <result column="rtu_code" property="rtuCode"/>
+        <result column="tm" property="tm"/>
+        <result column="drp" property="drp"/>
+        <result column="intv" property="intv"/>
+        <result column="from_time" property="fromTime"/>
+    </resultMap>
+
+
+</mapper>

+ 24 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH1Mapper.java

@@ -0,0 +1,24 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.modules.business.data.entity.RtuDataRainH1Entity;
+
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface RtuDataRainH1Mapper extends BaseMapper<RtuDataRainH1Entity> {
+
+}

+ 15 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH1Mapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.business.data.mapper.RtuDataRainH1Mapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="rtuRainDataResultMap" type="org.springblade.modules.business.data.entity.RtuDataRainH1Entity">
+        <result column="rtu_code" property="rtuCode"/>
+        <result column="tm" property="tm"/>
+        <result column="drp" property="drp"/>
+        <result column="intv" property="intv"/>
+        <result column="from_time" property="fromTime"/>
+    </resultMap>
+
+
+</mapper>

+ 23 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH24Mapper.java

@@ -0,0 +1,23 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.modules.business.data.entity.RtuDataRainH24Entity;
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface RtuDataRainH24Mapper extends BaseMapper<RtuDataRainH24Entity> {
+
+}

+ 15 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH24Mapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.business.data.mapper.RtuDataRainH24Mapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="rtuRainDataResultMap" type="org.springblade.modules.business.data.entity.RtuDataRainH24Entity">
+        <result column="rtu_code" property="rtuCode"/>
+        <result column="tm" property="tm"/>
+        <result column="drp" property="drp"/>
+        <result column="intv" property="intv"/>
+        <result column="from_time" property="fromTime"/>
+    </resultMap>
+
+
+</mapper>

+ 23 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH3Mapper.java

@@ -0,0 +1,23 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.modules.business.data.entity.RtuDataRainH3Entity;
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface RtuDataRainH3Mapper extends BaseMapper<RtuDataRainH3Entity> {
+
+}

+ 15 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH3Mapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.business.data.mapper.RtuDataRainH3Mapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="rtuRainDataResultMap" type="org.springblade.modules.business.data.entity.RtuDataRainH3Entity">
+        <result column="rtu_code" property="rtuCode"/>
+        <result column="tm" property="tm"/>
+        <result column="drp" property="drp"/>
+        <result column="intv" property="intv"/>
+        <result column="from_time" property="fromTime"/>
+    </resultMap>
+
+
+</mapper>

+ 23 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH6Mapper.java

@@ -0,0 +1,23 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.modules.business.data.entity.RtuDataRainH6Entity;
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface RtuDataRainH6Mapper extends BaseMapper<RtuDataRainH6Entity> {
+
+}

+ 15 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainH6Mapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.business.data.mapper.RtuDataRainH6Mapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="rtuRainDataResultMap" type="org.springblade.modules.business.data.entity.RtuDataRainH6Entity">
+        <result column="rtu_code" property="rtuCode"/>
+        <result column="tm" property="tm"/>
+        <result column="drp" property="drp"/>
+        <result column="intv" property="intv"/>
+        <result column="from_time" property="fromTime"/>
+    </resultMap>
+
+
+</mapper>

+ 0 - 3
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainMapper.java

@@ -31,7 +31,4 @@ public interface RtuDataRainMapper extends BaseMapper<RtuDataRainEntity> {
 	 * @return List<RtuInfoVO>
 	 */
 	List<RtuDataRainVO> selectPage(IPage page, @Param("rtuDataRainDTO") RtuDataRainDTO rtuDataRainDTO);
-
-	long rtuUpDataCount(@Param("rainDTO") RtuDataRainDTO rainDTO);
-
 }

+ 34 - 31
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainMapper.xml

@@ -19,15 +19,30 @@
         <result column="ad_city" property="adCity"/>
         <result column="ad_dist" property="adDist"/>
         <result column="from_time" property="fromTime"/>
+        <result column="h1tm" property="h1tm"/>
+        <result column="h1drp" property="h1drp"/>
+        <result column="h3tm" property="h3tm"/>
+        <result column="h3drp" property="h3drp"/>
+        <result column="h6tm" property="h6tm"/>
+        <result column="h6drp" property="h6drp"/>
+        <result column="h12tm" property="h12tm"/>
+        <result column="h12drp" property="h12drp"/>
+        <result column="h24tm" property="h24tm"/>
+        <result column="h24drp" property="h24drp"/>
     </resultMap>
 
 
     <select id="selectPage" resultMap="rtuRainDataVOResultMap">
         SELECT
-        n.*,
+        n.*,h1.tm AS h1tm,h1.drp AS h1drp,h3.tm AS h3tm,h3.drp AS h3drp,h6.tm AS h6tm,h6.drp AS h6drp,h12.tm AS h12tm,h12.drp AS h12drp,h24.tm AS h24tm,h24.drp AS h24drp,
         r.rtu_name,r.ad_city,r.ad_dist
         FROM
         data_att_st_prec_cache n
+        LEFT JOIN data_att_st_prec_h1_cache h1 ON h1.rtu_code = n.rtu_code and h1.is_deleted=0
+        LEFT JOIN data_att_st_prec_h3_cache h3 ON h3.rtu_code = n.rtu_code and h3.is_deleted=0
+        LEFT JOIN data_att_st_prec_h6_cache h6 ON h6.rtu_code = n.rtu_code and h6.is_deleted=0
+        LEFT JOIN data_att_st_prec_h12_cache h12 ON h12.rtu_code = n.rtu_code and h12.is_deleted=0
+        LEFT JOIN data_att_st_prec_h24_cache h24 ON h24.rtu_code = n.rtu_code and h24.is_deleted=0
         LEFT JOIN rtu_info r ON n.rtu_code = r.rtu_code and r.is_deleted=0
         LEFT JOIN data_ad_cd_b a ON a.adcd = r.ad_code and a.is_deleted=0
         WHERE
@@ -62,38 +77,26 @@
                     order by n.drp desc
                 </if>
             </when>
+            <when test="rtuDataRainDTO.rainCountType!=null">
+                <if test="rtuDataRainDTO.rainCountType == 1">
+                    order by h1.drp desc
+                </if>
+                <if test="rtuDataRainDTO.rainCountType == 3">
+                    order by h3.drp desc
+                </if>
+                <if test="rtuDataRainDTO.rainCountType == 6">
+                    order by h6.drp desc
+                </if>
+                <if test="rtuDataRainDTO.rainCountType == 12">
+                    order by h12.drp desc
+                </if>
+                <if test="rtuDataRainDTO.rainCountType == 24">
+                    order by h24.drp desc
+                </if>
+            </when>
             <otherwise>
-                order by r.ad_code , r.rtu_code
+                order by  n.drp desc,n.tm desc
             </otherwise>
         </choose>
     </select>
-
-    <select id="rtuUpDataCount" resultType="java.lang.Long">
-        SELECT
-        count( * )
-        FROM
-        (
-        SELECT
-        w.rtu_code
-        FROM
-        data_att_st_prec_cache w
-        LEFT JOIN rtu_info r ON w.rtu_code = r.rtu_code
-        AND r.is_deleted = 0
-        LEFT JOIN data_ad_cd_b a ON a.adcd = r.ad_code
-        AND a.is_deleted = 0
-        WHERE
-        w.is_deleted = 0
-        AND w.tm >= #{rainDTO.beginTime}
-        AND w.tm &lt; #{rainDTO.endTime}
-        <if test="rainDTO.excludeCode!=null and rainDTO.excludeCode==1">
-            and a.exclude_ad = 0
-        </if>
-        <if test="rainDTO.adCode!=null">
-            and (a.adcd =#{rainDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE is_deleted =0 and
-            ancestors like concat(concat('%', #{rainDTO.adCode}), '%')))
-        </if>
-        GROUP BY
-        w.rtu_code
-        ) a
-    </select>
 </mapper>

+ 33 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainStoreMapper.java

@@ -0,0 +1,33 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.modules.business.data.dto.RtuDataRainDTO;
+import org.springblade.modules.business.data.entity.RtuDataRainStoreEntity;
+
+import java.util.List;
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface RtuDataRainStoreMapper extends BaseMapper<RtuDataRainStoreEntity> {
+	List<RtuDataRainStoreEntity> selectList(@Param("dto") RtuDataRainDTO dto);
+
+	Long rtuUpDataCount(@Param("rainDTO") RtuDataRainDTO rainDTO);
+
+	Double rainDrpCount(@Param("rainDTO") RtuDataRainDTO rainDTO);
+
+	List<RtuDataRainStoreEntity> selectLast(@Param("dto") RtuDataRainDTO dto);
+}

+ 104 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRainStoreMapper.xml

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.business.data.mapper.RtuDataRainStoreMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="rtuRainDataResultMap" type="org.springblade.modules.business.data.entity.RtuDataRainStoreEntity">
+        <result column="rtu_code" property="rtuCode"/>
+        <result column="tm" property="tm"/>
+        <result column="drp" property="drp"/>
+        <result column="intv" property="intv"/>
+        <result column="from_time" property="fromTime"/>
+    </resultMap>
+
+    <select id="rtuUpDataCount" resultType="java.lang.Long">
+        SELECT
+        count( * )
+        FROM
+        (
+        SELECT
+        w.rtu_code
+        FROM
+        data_att_st_prec w
+        LEFT JOIN rtu_info r ON w.rtu_code = r.rtu_code
+        AND r.is_deleted = 0
+        LEFT JOIN data_ad_cd_b a ON a.adcd = r.ad_code
+        AND a.is_deleted = 0
+        WHERE
+        w.is_deleted = 0
+        AND w.tm >= #{rainDTO.beginTime}
+        AND w.tm &lt; #{rainDTO.endTime}
+        <if test="rainDTO.excludeCode!=null and rainDTO.excludeCode==1">
+            and a.exclude_ad = 0
+        </if>
+        <if test="rainDTO.adCode!=null">
+            and (a.adcd =#{rainDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE is_deleted =0 and
+            ancestors like concat(concat('%', #{rainDTO.adCode}), '%')))
+        </if>
+        GROUP BY
+        w.rtu_code
+        ) a
+    </select>
+
+    <select id="rainDrpCount" resultType="java.lang.Double">
+        SELECT
+        sum(w.drp)
+        FROM
+        data_att_st_prec w
+        WHERE
+        w.is_deleted = 0
+        AND w.intv = 0.05 AND w.drp is not null
+        <if test="rainDTO.beginTime!=null">
+            AND w.tm >= #{rainDTO.beginTime}
+        </if>
+        <if test="rainDTO.endTime!=null">
+            AND w.tm &lt; #{rainDTO.endTime}
+        </if>
+        <if test="rainDTO.rtuCode!=null">
+            and w.rtu_code = #{rainDTO.rtuCode}
+        </if>
+    </select>
+
+    <select id="selectList" resultMap="rtuRainDataResultMap">
+        SELECT
+        w.*
+        FROM
+        data_att_st_prec w
+        WHERE
+        w.is_deleted = 0
+        AND w.drp is not null
+        <if test="dto.intv!=null">
+            AND w.intv = #{dto.intv}
+        </if>
+        <if test="dto.intv==null">
+            AND w.intv = 0.05
+        </if>
+        <if test="dto.beginTime!=null">
+            AND w.tm >= #{dto.beginTime}
+        </if>
+        <if test="dto.endTime!=null">
+            AND w.tm &lt; #{dto.endTime}
+        </if>
+        <if test="dto.rtuCode!=null">
+            and w.rtu_code = #{dto.rtuCode}
+        </if>
+        order by w.tm
+    </select>
+
+    <select id="selectLast" resultMap="rtuRainDataResultMap">
+        SELECT
+        w.*
+        FROM
+        data_att_st_prec w
+        WHERE
+        w.is_deleted = 0
+        AND w.drp is not null
+        <if test="dto.endTime!=null">
+            AND w.tm &lt; #{dto.endTime}
+        </if>
+        <if test="dto.rtuCode!=null">
+            and w.rtu_code = #{dto.rtuCode}
+        </if>
+        order by w.tm desc limit 1
+    </select>
+</mapper>

+ 3 - 1
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRiverMapper.java

@@ -10,8 +10,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.modules.business.data.dto.RtuDataGroundDTO;
+import org.springblade.modules.business.data.dto.RtuDataRainDTO;
 import org.springblade.modules.business.data.dto.RtuDataRiverDTO;
+import org.springblade.modules.business.data.entity.RtuDataRainStoreEntity;
 import org.springblade.modules.business.data.entity.RtuDataRiverEntity;
+import org.springblade.modules.business.data.entity.RtuDataRiverStoreEntity;
 import org.springblade.modules.business.data.vo.RtuDataRiverVO;
 
 
@@ -36,5 +39,4 @@ public interface RtuDataRiverMapper extends BaseMapper<RtuDataRiverEntity> {
 
 	List<RtuDataRiverVO> selectWaterPage(IPage page, @Param("riverDTO") RtuDataRiverDTO riverDTO);
 
-	long rtuUpDataCount(@Param("riverDTO") RtuDataRiverDTO riverDTO);
 }

+ 5 - 31
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRiverMapper.xml

@@ -58,6 +58,7 @@
     <select id="selectWaterPage" resultMap="rtuWaterDataVOResultMap">
         SELECT r.rtu_code,r.rtu_name,res.rz,w.z,res.tm rsvrTm,w.tm,r.ad_city,r.ad_dist
         FROM rtu_info r
+        LEFT JOIN  rtu_status n ON n.rtu_code = r.rtu_code and  n.is_deleted = 0
         LEFT JOIN data_att_st_res_ware_cache res  on res.rtu_code = r.rtu_code and res.is_deleted=0
         LEFT JOIN data_att_st_waco_ware_cache w on w.rtu_code = r.rtu_code and w.is_deleted=0
         LEFT JOIN data_ad_cd_b a ON a.adcd = r.ad_code and a.is_deleted=0
@@ -76,45 +77,18 @@
         </if>
         <choose>
             <when test="riverDTO.order!=null and riverDTO.order=='ascending'">
-                <if test="riverDTO.prop!=null ">
-                    order by res.tm,w.tm
+                <if test="riverDTO.prop!=null">
+                    order by n.last_up_time
                 </if>
             </when>
             <when test="riverDTO.order!=null and riverDTO.order=='descending'">
                 <if test="riverDTO.prop!=null ">
-                    order by res.tm desc,w.tm desc
+                    order by n.last_up_time desc
                 </if>
             </when>
             <otherwise>
-                order by r.ad_code,r.rtu_code
+                order by n.last_up_time desc
             </otherwise>
         </choose>
     </select>
-
-    <select id="rtuUpDataCount" resultType="java.lang.Long">
-        SELECT
-        count( * )
-        FROM
-        (
-        SELECT
-        r.rtu_code
-        FROM
-        rtu_info r
-        LEFT JOIN data_att_st_res_ware_cache res ON res.rtu_code = r.rtu_code AND res.tm >= #{riverDTO.beginTime} AND res.tm &lt; #{riverDTO.endTime}
-        AND res.is_deleted = 0
-        LEFT JOIN data_att_st_waco_ware_cache w ON w.rtu_code = r.rtu_code  AND w.tm >= #{riverDTO.beginTime} AND w.tm &lt; #{riverDTO.endTime}
-        AND w.is_deleted = 0
-        LEFT JOIN data_ad_cd_b a ON a.adcd = r.ad_code
-        AND a.is_deleted = 0
-        WHERE
-        r.is_deleted = 0
-        AND ( r.is_res = 1 OR r.is_river = 1 )
-        AND ( res.tm IS NOT NULL OR w.tm IS NOT NULL )
-        <if test="riverDTO.adCode!=null">
-            and (a.adcd =#{riverDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE ancestors  like concat(concat('%', #{riverDTO.adCode}), '%')))
-        </if>
-        GROUP BY
-        r.rtu_code
-        ) a
-    </select>
 </mapper>

+ 34 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRiverStoreMapper.java

@@ -0,0 +1,34 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称:
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.modules.business.data.dto.RtuDataRainDTO;
+import org.springblade.modules.business.data.dto.RtuDataRiverDTO;
+import org.springblade.modules.business.data.entity.RtuDataRainStoreEntity;
+import org.springblade.modules.business.data.entity.RtuDataRiverStoreEntity;
+
+import java.util.List;
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface RtuDataRiverStoreMapper extends BaseMapper<RtuDataRiverStoreEntity> {
+
+	long rtuUpDataCount(@Param("riverDTO") RtuDataRiverDTO riverDTO);
+
+	List<RtuDataRiverStoreEntity> selectList(@Param("dto") RtuDataRiverDTO dto);
+
+	List<RtuDataRiverStoreEntity> selectLast(@Param("dto") RtuDataRiverDTO dto);
+}

+ 74 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRiverStoreMapper.xml

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.business.data.mapper.RtuDataRiverStoreMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="rtuRiverDataEntityResultMap" type="org.springblade.modules.business.data.entity.RtuDataRiverStoreEntity">
+        <result column="rtu_code" property="rtuCode"/>
+        <result column="tm" property="tm"/>
+        <result column="z" property="z"/>
+        <result column="from_time" property="fromTime"/>
+    </resultMap>
+
+    <select id="selectList" resultMap="rtuRiverDataEntityResultMap">
+        SELECT
+        w.*
+        FROM
+        data_att_st_waco_ware w
+        WHERE
+        w.is_deleted = 0
+        <if test="dto.beginTime!=null">
+            AND w.tm >= #{dto.beginTime}
+        </if>
+        <if test="dto.endTime!=null">
+            AND w.tm &lt; #{dto.endTime}
+        </if>
+        <if test="dto.rtuCode!=null">
+            and w.rtu_code = #{dto.rtuCode}
+        </if>
+        order by w.tm
+    </select>
+
+    <select id="selectLast" resultMap="rtuRiverDataEntityResultMap">
+        SELECT
+        w.*
+        FROM
+        data_att_st_waco_ware w
+        WHERE
+        w.is_deleted = 0
+        <if test="dto.endTime!=null">
+            AND w.tm &lt; #{dto.endTime}
+        </if>
+        <if test="dto.rtuCode!=null">
+            and w.rtu_code = #{dto.rtuCode}
+        </if>
+        order by w.tm desc limit 1
+    </select>
+
+    <select id="rtuUpDataCount" resultType="java.lang.Long">
+        SELECT
+        count( * )
+        FROM
+        (
+        SELECT
+        r.rtu_code
+        FROM
+        rtu_info r
+        LEFT JOIN data_att_st_res_ware res ON res.rtu_code = r.rtu_code AND res.tm >= #{riverDTO.beginTime} AND res.tm &lt; #{riverDTO.endTime}
+        AND res.is_deleted = 0
+        LEFT JOIN data_att_st_waco_ware w ON w.rtu_code = r.rtu_code  AND w.tm >= #{riverDTO.beginTime} AND w.tm &lt; #{riverDTO.endTime}
+        AND w.is_deleted = 0
+        LEFT JOIN data_ad_cd_b a ON a.adcd = r.ad_code
+        AND a.is_deleted = 0
+        WHERE
+        r.is_deleted = 0
+        AND ( r.is_res = 1 OR r.is_river = 1 )
+        AND ( res.tm IS NOT NULL OR w.tm IS NOT NULL )
+        <if test="riverDTO.adCode!=null">
+            and (a.adcd =#{riverDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE ancestors  like concat(concat('%', #{riverDTO.adCode}), '%')))
+        </if>
+        GROUP BY
+        r.rtu_code
+        ) a
+    </select>
+</mapper>

+ 34 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRsvrStoreMapper.java

@@ -0,0 +1,34 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称:
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.modules.business.data.dto.RtuDataRainDTO;
+import org.springblade.modules.business.data.dto.RtuDataRiverDTO;
+import org.springblade.modules.business.data.dto.RtuDataRsvrDTO;
+import org.springblade.modules.business.data.entity.RtuDataRainStoreEntity;
+import org.springblade.modules.business.data.entity.RtuDataRiverStoreEntity;
+import org.springblade.modules.business.data.entity.RtuDataRsvrStoreEntity;
+
+import java.util.List;
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface RtuDataRsvrStoreMapper extends BaseMapper<RtuDataRsvrStoreEntity> {
+	List<RtuDataRsvrStoreEntity> selectList(@Param("dto") RtuDataRsvrDTO dto);
+
+	List<RtuDataRsvrStoreEntity> selectLast(@Param("dto") RtuDataRsvrDTO dto);
+
+}

+ 48 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataRsvrStoreMapper.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.business.data.mapper.RtuDataRsvrStoreMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="rtuRsvrDataEntityResultMap" type="org.springblade.modules.business.data.entity.RtuDataRsvrStoreEntity">
+        <result column="rtu_code" property="rtuCode"/>
+        <result column="tm" property="tm"/>
+        <result column="rz" property="rz"/>
+        <result column="from_time" property="fromTime"/>
+    </resultMap>
+
+    <select id="selectList" resultMap="rtuRsvrDataEntityResultMap">
+        SELECT
+        w.*
+        FROM
+        data_att_st_res_ware w
+        WHERE
+        w.is_deleted = 0
+        <if test="dto.beginTime!=null">
+            AND w.tm >= #{dto.beginTime}
+        </if>
+        <if test="dto.endTime!=null">
+            AND w.tm &lt; #{dto.endTime}
+        </if>
+        <if test="dto.rtuCode!=null">
+            and w.rtu_code = #{dto.rtuCode}
+        </if>
+        order by w.tm
+    </select>
+
+    <select id="selectLast" resultMap="rtuRsvrDataEntityResultMap">
+        SELECT
+        w.*
+        FROM
+        data_att_st_res_ware w
+        WHERE
+        w.is_deleted = 0
+        <if test="dto.endTime!=null">
+            AND w.tm &lt; #{dto.endTime}
+        </if>
+        <if test="dto.rtuCode!=null">
+            and w.rtu_code = #{dto.rtuCode}
+        </if>
+        order by w.tm desc limit 1
+    </select>
+
+</mapper>

+ 35 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataWaterLevelMapper.java

@@ -0,0 +1,35 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称:
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.modules.business.data.dto.RtuDataWaterLevelDTO;
+import org.springblade.modules.business.data.entity.RtuDataWaterLevelEntity;
+import org.springblade.modules.business.data.vo.RtuDataWaterLevelVO;
+
+import java.util.List;
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface RtuDataWaterLevelMapper extends BaseMapper<RtuDataWaterLevelEntity> {
+	/**
+	 * 自定义分页
+	 *
+	 * @param page 分页
+	 * @return List<RtuDataWaterLevelVO>
+	 */
+	List<RtuDataWaterLevelVO> selectPage(IPage page, @Param("dto") RtuDataWaterLevelDTO dto);
+
+}

+ 72 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataWaterLevelMapper.xml

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.business.data.mapper.RtuDataWaterLevelMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="waterLevelDataEntityResultMap" type="org.springblade.modules.business.data.entity.RtuDataWaterLevelEntity">
+        <result column="rtu_code" property="rtuCode"/>
+        <result column="tm" property="tm"/>
+        <result column="water_level" property="waterLevel"/>
+        <result column="is_river" property="isRiver"/>
+        <result column="is_res" property="isRes"/>
+        <result column="from_time" property="fromTime"/>
+    </resultMap>
+
+
+    <resultMap id="rtuWaterDataVOResultMap" type="org.springblade.modules.business.data.vo.RtuDataWaterLevelVO">
+        <result column="rtu_code" property="rtuCode"/>
+        <result column="tm" property="tm"/>
+        <result column="water_level" property="waterLevel"/>
+        <result column="is_river" property="isRiver"/>
+        <result column="is_res" property="isRes"/>
+        <result column="from_time" property="fromTime"/>
+        <result column="ad_city" property="adCity"/>
+        <result column="ad_dist" property="adDist"/>
+    </resultMap>
+
+    <select id="selectPage" resultMap="rtuWaterDataVOResultMap">
+        SELECT
+        n.*,
+        r.rtu_name,r.ad_city,r.ad_dist
+        FROM
+        data_att_st_river_reservoir_level_cache n
+        LEFT JOIN  rtu_info r ON n.rtu_code = r.rtu_code and r.is_deleted=0
+        LEFT JOIN  data_ad_cd_b a ON a.adcd = r.ad_code and a.is_deleted=0
+        WHERE
+        n.is_deleted = 0
+        <if test="dto.rtuName!=null ">
+            and r.rtu_name LIKE concat(concat('%', #{dto.rtuName}), '%')
+        </if>
+        <if test="dto.rtuCode!=null">
+            and n.rtu_code like concat(concat('%', #{dto.rtuCode}), '%')
+        </if>
+        <if test="dto.isRiver!=null">
+            and n.is_river = #{dto.isRiver}
+        </if>
+        <if test="dto.isRes!=null">
+            and n.is_res = #{dto.isRes}
+        </if>
+        <if test="dto.excludeCode!=null and dto.excludeCode==1">
+            and a.exclude_ad = 0
+        </if>
+        <if test="dto.adCode!=null">
+            and (a.adcd =#{dto.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE is_deleted =0 and ancestors like concat(concat('%', #{dto.adCode}), '%')))
+        </if>
+        <choose>
+            <when test="dto.order!=null and dto.order=='ascending'">
+                <if test="dto.prop!=null">
+                    order by n.tm
+                </if>
+            </when>
+            <when test="dto.order!=null and dto.order=='descending'">
+                <if test="dto.prop!=null ">
+                    order by n.tm desc
+                </if>
+            </when>
+            <otherwise>
+                order by n.tm desc
+            </otherwise>
+        </choose>
+    </select>
+
+</mapper>

+ 32 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataWaterLevelStoreMapper.java

@@ -0,0 +1,32 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称:
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.modules.business.data.dto.RtuDataWaterLevelDTO;
+import org.springblade.modules.business.data.entity.RtuDataWaterLevelStoreEntity;
+
+import java.util.List;
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface RtuDataWaterLevelStoreMapper extends BaseMapper<RtuDataWaterLevelStoreEntity> {
+
+	long rtuUpDataCount(@Param("dto") RtuDataWaterLevelDTO dto);
+
+	List<RtuDataWaterLevelStoreEntity> selectList(@Param("dto") RtuDataWaterLevelDTO dto);
+
+	List<RtuDataWaterLevelStoreEntity> selectLast(@Param("dto") RtuDataWaterLevelDTO dto);
+}

+ 81 - 0
src/main/java/org/springblade/modules/business/data/mapper/RtuDataWaterLevelStoreMapper.xml

@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.business.data.mapper.RtuDataWaterLevelStoreMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="waterLevelDataEntityResultMap" type="org.springblade.modules.business.data.entity.RtuDataWaterLevelStoreEntity">
+        <result column="rtu_code" property="rtuCode"/>
+        <result column="tm" property="tm"/>
+        <result column="water_level" property="waterLevel"/>
+        <result column="is_river" property="isRiver"/>
+        <result column="is_res" property="isRes"/>
+        <result column="from_time" property="fromTime"/>
+    </resultMap>
+
+    <select id="selectList" resultMap="waterLevelDataEntityResultMap">
+        SELECT
+        w.*
+        FROM
+        data_att_st_river_reservoir_level w
+        WHERE
+        w.is_deleted = 0
+        <if test="dto.beginTime!=null">
+            AND w.tm >= #{dto.beginTime}
+        </if>
+        <if test="dto.endTime!=null">
+            AND w.tm &lt; #{dto.endTime}
+        </if>
+        <if test="dto.rtuCode!=null">
+            and w.rtu_code = #{dto.rtuCode}
+        </if>
+        order by w.tm
+    </select>
+
+    <select id="selectLast" resultMap="waterLevelDataEntityResultMap">
+        SELECT
+        w.*
+        FROM
+        data_att_st_river_reservoir_level w
+        WHERE
+        w.is_deleted = 0
+        <if test="dto.endTime!=null">
+            AND w.tm &lt; #{dto.endTime}
+        </if>
+        <if test="dto.rtuCode!=null">
+            and w.rtu_code = #{dto.rtuCode}
+        </if>
+        order by w.tm desc limit 1
+    </select>
+
+    <select id="rtuUpDataCount" resultType="java.lang.Long">
+        SELECT
+        count( * )
+        FROM
+        (
+        SELECT
+        n.rtu_code
+        FROM
+        data_att_st_river_reservoir_level n
+        LEFT JOIN rtu_info r ON r.rtu_code = n.rtu_code AND r.is_deleted = 0
+        LEFT JOIN data_ad_cd_b a ON a.adcd = r.ad_code AND a.is_deleted = 0
+        WHERE
+        n.is_deleted = 0
+        AND n.tm >= #{dto.beginTime}
+        AND n.tm &lt; #{dto.endTime}
+        <if test="dto.isRiver!=null">
+            and n.is_river = #{dto.isRiver}
+        </if>
+        <if test="dto.isRes!=null">
+            and n.is_res = #{dto.isRes}
+        </if>
+        <if test="dto.excludeCode!=null and dto.excludeCode==1">
+            and a.exclude_ad = 0
+        </if>
+        <if test="dto.adCode!=null">
+            and (a.adcd =#{dto.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE ancestors  like concat(concat('%', #{dto.adCode}), '%')))
+        </if>
+        GROUP BY
+        n.rtu_code
+        ) a
+    </select>
+</mapper>

+ 1 - 3
src/main/java/org/springblade/modules/business/data/service/IRtuDataGroundService.java

@@ -1,7 +1,7 @@
 /**
  * Copyright 2019 DH
  * All right reserved.
- * 项目名称: 大恒泰山系统
+ * 项目名称:
  * 创建日期:2022/8/28
  */
 package org.springblade.modules.business.data.service;
@@ -36,6 +36,4 @@ public interface IRtuDataGroundService extends BaseService<RtuDataGroundEntity>
 	 * @return
 	 */
 	boolean updateGroundInfo(EtlGroundDataEntity etlGroundDataEntity);
-
-	long rtuUpDataCount(RtuDataGroundDTO groundDTO);
 }

+ 33 - 0
src/main/java/org/springblade/modules/business/data/service/IRtuDataGroundStoreService.java

@@ -0,0 +1,33 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称:
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.service;
+
+
+import org.apache.ibatis.annotations.Param;
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.etl.entity.EtlGroundDataEntity;
+import org.springblade.modules.business.data.dto.RtuDataGroundDTO;
+import org.springblade.modules.business.data.entity.RtuDataGroundStoreEntity;
+
+import java.util.List;
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface IRtuDataGroundStoreService extends BaseService<RtuDataGroundStoreEntity> {
+
+	boolean saveGroundData(EtlGroundDataEntity etlGroundDataEntity);
+
+	long rtuUpDataCount(RtuDataGroundDTO groundDTO);
+
+	List<RtuDataGroundStoreEntity> selectList(RtuDataGroundDTO dto);
+}

+ 25 - 0
src/main/java/org/springblade/modules/business/data/service/IRtuDataRainH12Service.java

@@ -0,0 +1,25 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.service;
+
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.modules.business.data.entity.RtuDataRainH12Entity;
+
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface IRtuDataRainH12Service extends BaseService<RtuDataRainH12Entity> {
+
+}

+ 25 - 0
src/main/java/org/springblade/modules/business/data/service/IRtuDataRainH1Service.java

@@ -0,0 +1,25 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.service;
+
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.modules.business.data.entity.RtuDataRainH1Entity;
+
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface IRtuDataRainH1Service extends BaseService<RtuDataRainH1Entity> {
+
+}

+ 24 - 0
src/main/java/org/springblade/modules/business/data/service/IRtuDataRainH24Service.java

@@ -0,0 +1,24 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.service;
+
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.modules.business.data.entity.RtuDataRainH24Entity;
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface IRtuDataRainH24Service extends BaseService<RtuDataRainH24Entity> {
+
+}

+ 24 - 0
src/main/java/org/springblade/modules/business/data/service/IRtuDataRainH3Service.java

@@ -0,0 +1,24 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.service;
+
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.modules.business.data.entity.RtuDataRainH3Entity;
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface IRtuDataRainH3Service extends BaseService<RtuDataRainH3Entity> {
+
+}

+ 24 - 0
src/main/java/org/springblade/modules/business/data/service/IRtuDataRainH6Service.java

@@ -0,0 +1,24 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 运维系统
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.service;
+
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.modules.business.data.entity.RtuDataRainH6Entity;
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface IRtuDataRainH6Service extends BaseService<RtuDataRainH6Entity> {
+
+}

+ 1 - 7
src/main/java/org/springblade/modules/business/data/service/IRtuDataRainService.java

@@ -1,7 +1,7 @@
 /**
  * Copyright 2019 DH
  * All right reserved.
- * 项目名称: 大恒泰山系统
+ * 项目名称:
  * 创建日期:2022/8/28
  */
 package org.springblade.modules.business.data.service;
@@ -10,9 +10,7 @@ package org.springblade.modules.business.data.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.etl.entity.EtlRainDataEntity;
-import org.springblade.modules.business.data.dto.RtuDataGroundDTO;
 import org.springblade.modules.business.data.dto.RtuDataRainDTO;
-import org.springblade.modules.business.data.dto.RtuDataRiverDTO;
 import org.springblade.modules.business.data.entity.RtuDataRainEntity;
 import org.springblade.modules.business.data.vo.RtuDataRainVO;
 
@@ -38,8 +36,4 @@ public interface IRtuDataRainService extends BaseService<RtuDataRainEntity> {
 	 * @return
 	 */
 	boolean updateRainInfo(EtlRainDataEntity etlRainDataEntity);
-
-	long rtuUpDataCount(RtuDataRainDTO rainDTO);
-
-
 }

+ 46 - 0
src/main/java/org/springblade/modules/business/data/service/IRtuDataRainStoreService.java

@@ -0,0 +1,46 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称:
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.service;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.etl.entity.EtlRainDataEntity;
+import org.springblade.modules.baseinfo.rtu.dto.RtuInfoDTO;
+import org.springblade.modules.baseinfo.rtu.vo.RtuInfoVO;
+import org.springblade.modules.business.data.dto.RtuDataRainDTO;
+import org.springblade.modules.business.data.entity.RtuDataRainStoreEntity;
+
+import java.util.List;
+
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface IRtuDataRainStoreService extends BaseService<RtuDataRainStoreEntity> {
+
+	List<RtuDataRainStoreEntity> selectList(RtuDataRainDTO dto);
+
+	List<RtuDataRainStoreEntity> selectLast(RtuDataRainDTO dto);
+
+	/**
+	 * 持久化保存雨量数据
+	 * @param etlRainDataEntity
+	 * @return
+	 */
+    boolean saveRainData(EtlRainDataEntity etlRainDataEntity);
+
+    Long rtuUpDataCount(RtuDataRainDTO rainDTO);
+
+	Double rainDrpCount(RtuDataRainDTO rainDTO);
+}

+ 1 - 9
src/main/java/org/springblade/modules/business/data/service/IRtuDataRiverService.java

@@ -1,23 +1,19 @@
 /**
  * Copyright 2019 DH
  * All right reserved.
- * 项目名称: 大恒泰山系统
+ * 项目名称:
  * 创建日期:2022/8/28
  */
 package org.springblade.modules.business.data.service;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.apache.ibatis.annotations.Param;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.etl.entity.EtlRiverDataEntity;
-import org.springblade.modules.business.data.dto.RtuDataGroundDTO;
 import org.springblade.modules.business.data.dto.RtuDataRiverDTO;
 import org.springblade.modules.business.data.entity.RtuDataRiverEntity;
 import org.springblade.modules.business.data.vo.RtuDataRiverVO;
 
-import java.util.List;
-
 /***
  * Date:2022/8/28
  * Title:文件所属模块(必须填写)
@@ -42,8 +38,4 @@ public interface IRtuDataRiverService extends BaseService<RtuDataRiverEntity> {
 	boolean updateRiverInfo(EtlRiverDataEntity etlRiverDataEntity);
 
 	IPage<RtuDataRiverVO> selectWaterPage(IPage<RtuDataRiverVO> page, RtuDataRiverDTO rtuDataRiverDTO);
-
-	long rtuUpDataCount(RtuDataRiverDTO riverDTO);
-
-
 }

+ 33 - 0
src/main/java/org/springblade/modules/business/data/service/IRtuDataRiverStoreService.java

@@ -0,0 +1,33 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称:
+ * 创建日期:2022/8/28
+ */
+package org.springblade.modules.business.data.service;
+
+import org.apache.ibatis.annotations.Param;
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.etl.entity.EtlRiverDataEntity;
+import org.springblade.modules.business.data.dto.RtuDataRainDTO;
+import org.springblade.modules.business.data.dto.RtuDataRiverDTO;
+import org.springblade.modules.business.data.entity.RtuDataRainStoreEntity;
+import org.springblade.modules.business.data.entity.RtuDataRiverStoreEntity;
+
+import java.util.List;
+
+/***
+ * Date:2022/8/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface IRtuDataRiverStoreService extends BaseService<RtuDataRiverStoreEntity> {
+	boolean saveRiverData(EtlRiverDataEntity etlRiverDataEntity);
+	long rtuUpDataCount(RtuDataRiverDTO riverDTO);
+	List<RtuDataRiverStoreEntity> selectList(RtuDataRiverDTO dto);
+	List<RtuDataRiverStoreEntity> selectLast(RtuDataRiverDTO dto);
+
+}

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů