Selaa lähdekoodia

内蒙山洪灾害运维系统版本提交

dylan 3 vuotta sitten
vanhempi
commit
6b71ee5d7a
100 muutettua tiedostoa jossa 5870 lisäystä ja 1419 poistoa
  1. 86 32
      pom.xml
  2. 53 18
      src/main/java/org/springblade/constant/BusinessConstant.java
  3. 0 7
      src/main/java/org/springblade/constant/DictBusinessConstant.java
  4. 125 0
      src/main/java/org/springblade/enums/WarnKindEnum.java
  5. 10 25
      src/main/java/org/springblade/etl/EtlGroundDataTask.java
  6. 3 2
      src/main/java/org/springblade/etl/EtlMvAttStBaseDataTask.java
  7. 0 14
      src/main/java/org/springblade/etl/EtlRegionDataTask.java
  8. 0 10
      src/main/java/org/springblade/etl/EtlRiverDataTask.java
  9. 194 0
      src/main/java/org/springblade/etl/EtlRtuDataTask.java
  10. 65 204
      src/main/java/org/springblade/etl/EtlTaskManager.java
  11. 2 4
      src/main/java/org/springblade/etl/EtlWarningTask.java
  12. 921 40
      src/main/java/org/springblade/etl/controller/TestController.java
  13. 54 11
      src/main/java/org/springblade/etl/entity/EtlGroundDataEntity.java
  14. 29 2
      src/main/java/org/springblade/etl/entity/EtlRainDataEntity.java
  15. 78 2
      src/main/java/org/springblade/etl/entity/EtlRiverDataEntity.java
  16. 72 2
      src/main/java/org/springblade/etl/entity/EtlRsvrDataEntity.java
  17. 81 0
      src/main/java/org/springblade/etl/entity/EtlTaskInfoEntity.java
  18. 14 12
      src/main/java/org/springblade/etl/mapper/EtlGroundDataMapper.xml
  19. 1 1
      src/main/java/org/springblade/etl/mapper/EtlRainDataMapper.xml
  20. 1 1
      src/main/java/org/springblade/etl/mapper/EtlRiverDataMapper.xml
  21. 1 1
      src/main/java/org/springblade/etl/mapper/EtlRsvrDataMapper.xml
  22. 24 0
      src/main/java/org/springblade/etl/mapper/EtlTaskInfoMapper.java
  23. 15 0
      src/main/java/org/springblade/etl/mapper/EtlTaskInfoMapper.xml
  24. 24 0
      src/main/java/org/springblade/etl/service/IEtlTaskInfoService.java
  25. 28 0
      src/main/java/org/springblade/etl/service/impl/EtlTaskInfoServiceImpl.java
  26. 0 20
      src/main/java/org/springblade/modules/baseinfo/dict/controller/BaseInfoDictController.java
  27. 0 2
      src/main/java/org/springblade/modules/baseinfo/dict/mapper/DictInfoMapper.java
  28. 0 2
      src/main/java/org/springblade/modules/baseinfo/dict/mapper/DictInfoMapper.xml
  29. 0 2
      src/main/java/org/springblade/modules/baseinfo/dict/service/IBaseInfoDictService.java
  30. 0 4
      src/main/java/org/springblade/modules/baseinfo/dict/service/impl/BaseInfoDictServiceImpl.java
  31. 133 36
      src/main/java/org/springblade/modules/baseinfo/org/controller/BaseInfoOrgController.java
  32. 30 0
      src/main/java/org/springblade/modules/baseinfo/org/dto/OrgInfoDTO.java
  33. 9 27
      src/main/java/org/springblade/modules/baseinfo/org/entity/DeptRegionEntity.java
  34. 4 6
      src/main/java/org/springblade/modules/baseinfo/org/mapper/DeptRegionMapper.java
  35. 11 0
      src/main/java/org/springblade/modules/baseinfo/org/mapper/DeptRegionMapper.xml
  36. 0 16
      src/main/java/org/springblade/modules/baseinfo/org/mapper/OrgInfoMapper.xml
  37. 4 5
      src/main/java/org/springblade/modules/baseinfo/org/service/IDeptRegionService.java
  38. 6 7
      src/main/java/org/springblade/modules/baseinfo/org/service/impl/DeptRegionServiceImpl.java
  39. 17 5
      src/main/java/org/springblade/modules/baseinfo/org/vo/OrgInfoVO.java
  40. 41 5
      src/main/java/org/springblade/modules/baseinfo/org/wrapper/OrgInfoWrapper.java
  41. 6 6
      src/main/java/org/springblade/modules/baseinfo/project/controller/ProjectBaseInfoController.java
  42. 6 0
      src/main/java/org/springblade/modules/baseinfo/project/entity/ProjectInfoEntity.java
  43. 1 14
      src/main/java/org/springblade/modules/baseinfo/project/mapper/ProjectInfoMapper.xml
  44. 1 7
      src/main/java/org/springblade/modules/baseinfo/project/mapper/ProjectWarningSettingMapper.xml
  45. 2 0
      src/main/java/org/springblade/modules/baseinfo/project/wrapper/ProjectInfoWrapper.java
  46. 73 36
      src/main/java/org/springblade/modules/baseinfo/region/controller/BaseInfoRegionController.java
  47. 0 7
      src/main/java/org/springblade/modules/baseinfo/region/mapper/OrgRegionInfoMapper.xml
  48. 0 9
      src/main/java/org/springblade/modules/baseinfo/region/mapper/RegionInfoMapper.xml
  49. 337 0
      src/main/java/org/springblade/modules/baseinfo/rtu/controller/RtuBaseInfoController.java
  50. 44 0
      src/main/java/org/springblade/modules/baseinfo/rtu/dto/RtuInfoDTO.java
  51. 358 0
      src/main/java/org/springblade/modules/baseinfo/rtu/entity/RtuInfoEntity.java
  52. 40 0
      src/main/java/org/springblade/modules/baseinfo/rtu/mapper/RtuInfoMapper.java
  53. 98 76
      src/main/java/org/springblade/modules/baseinfo/rtu/mapper/RtuInfoMapper.xml
  54. 40 0
      src/main/java/org/springblade/modules/baseinfo/rtu/service/IRtuBaseInfoService.java
  55. 103 0
      src/main/java/org/springblade/modules/baseinfo/rtu/service/impl/RtuBaseInfoServiceImpl.java
  56. 136 0
      src/main/java/org/springblade/modules/baseinfo/rtu/vo/RtuInfoVO.java
  57. 50 0
      src/main/java/org/springblade/modules/baseinfo/rtu/vo/RtuStatisticsInfoVO.java
  58. 67 0
      src/main/java/org/springblade/modules/baseinfo/rtu/wrapper/RtuInfoWrapper.java
  59. 0 222
      src/main/java/org/springblade/modules/baseinfo/servicePerson/controller/ProjectServicePersonController.java
  60. 321 0
      src/main/java/org/springblade/modules/baseinfo/servicePerson/controller/ServicePersonController.java
  61. 1 1
      src/main/java/org/springblade/modules/baseinfo/servicePerson/mapper/ServicePersonMapper.java
  62. 9 22
      src/main/java/org/springblade/modules/baseinfo/servicePerson/mapper/ServicePersonMapper.xml
  63. 1 1
      src/main/java/org/springblade/modules/baseinfo/servicePerson/service/IServicePersonService.java
  64. 3 3
      src/main/java/org/springblade/modules/baseinfo/servicePerson/service/impl/ServicePersonServiceImpl.java
  65. 0 35
      src/main/java/org/springblade/modules/baseinfo/servicePerson/wrapper/ProjectServicePersonWrapper.java
  66. 54 0
      src/main/java/org/springblade/modules/baseinfo/servicePerson/wrapper/ServicePersonWrapper.java
  67. 24 0
      src/main/java/org/springblade/modules/baseinfo/stbase/mapper/MvAttStBaseMapper.java
  68. 13 0
      src/main/java/org/springblade/modules/baseinfo/stbase/mapper/MvAttStBaseMapper.xml
  69. 313 187
      src/main/java/org/springblade/modules/business/check/order/controller/RtuCheckOrderController.java
  70. 18 0
      src/main/java/org/springblade/modules/business/check/order/dto/CheckOrderInfoDTO.java
  71. 0 2
      src/main/java/org/springblade/modules/business/check/order/entity/CheckOrderInfoEntity.java
  72. 32 0
      src/main/java/org/springblade/modules/business/check/order/entity/CheckOrderSettingEntity.java
  73. 24 0
      src/main/java/org/springblade/modules/business/check/order/mapper/CheckOrderSettingMapper.java
  74. 11 0
      src/main/java/org/springblade/modules/business/check/order/mapper/CheckOrderSettingMapper.xml
  75. 58 2
      src/main/java/org/springblade/modules/business/check/order/mapper/RtuCheckOrderMapper.java
  76. 179 60
      src/main/java/org/springblade/modules/business/check/order/mapper/RtuCheckOrderMapper.xml
  77. 23 0
      src/main/java/org/springblade/modules/business/check/order/service/ICheckOrderSettingService.java
  78. 71 0
      src/main/java/org/springblade/modules/business/check/order/service/IRtuCheckOrderService.java
  79. 28 0
      src/main/java/org/springblade/modules/business/check/order/service/impl/CheckOrderSettingServiceImpl.java
  80. 187 0
      src/main/java/org/springblade/modules/business/check/order/service/impl/RtuCheckOrderServiceImpl.java
  81. 1 1
      src/main/java/org/springblade/modules/business/check/order/vo/CheckOrderCountVO.java
  82. 62 7
      src/main/java/org/springblade/modules/business/check/order/vo/CheckOrderInfoVO.java
  83. 7 1
      src/main/java/org/springblade/modules/business/check/order/vo/OrgCheckOrderCountVO.java
  84. 181 51
      src/main/java/org/springblade/modules/business/check/order/wrapper/RtuCheckOrderWrapper.java
  85. 193 68
      src/main/java/org/springblade/modules/business/check/process/controller/RtuOrderProcessController.java
  86. 18 0
      src/main/java/org/springblade/modules/business/check/process/dto/OrderProcessInfoDTO.java
  87. 16 0
      src/main/java/org/springblade/modules/business/check/process/entity/OrderProcessInfoEntity.java
  88. 23 0
      src/main/java/org/springblade/modules/business/check/process/mapper/RtuOrderProcessMapper.java
  89. 106 22
      src/main/java/org/springblade/modules/business/check/process/mapper/RtuOrderProcessMapper.xml
  90. 21 0
      src/main/java/org/springblade/modules/business/check/process/service/IRtuOrderProcessService.java
  91. 17 0
      src/main/java/org/springblade/modules/business/check/process/service/impl/RtuOrderProcessServiceImpl.java
  92. 49 1
      src/main/java/org/springblade/modules/business/check/process/vo/OrderProcessInfoVO.java
  93. 85 9
      src/main/java/org/springblade/modules/business/check/process/wrapper/RtuOrderProcessWrapper.java
  94. 73 0
      src/main/java/org/springblade/modules/business/count/entity/RtuUpTimeCountInfoEntity.java
  95. 29 15
      src/main/java/org/springblade/modules/business/data/controller/RtuDataGroundController.java
  96. 38 10
      src/main/java/org/springblade/modules/business/data/controller/RtuDataRainController.java
  97. 42 7
      src/main/java/org/springblade/modules/business/data/controller/RtuDataRiverController.java
  98. 37 10
      src/main/java/org/springblade/modules/business/data/controller/RtuDataRsvrController.java
  99. 2 1
      src/main/java/org/springblade/modules/business/data/dto/RtuDataGroundDTO.java
  100. 2 1
      src/main/java/org/springblade/modules/business/data/dto/RtuDataRainDTO.java

+ 86 - 32
pom.xml

@@ -10,7 +10,6 @@
     <packaging>jar</packaging>
     <version>1.0-SNAPSHOT</version>
     <description>系统平台-山洪灾害监测预警平台运维系统</description>
-    <url></url>
 
     <properties>
         <bladex.project.id>blade-api</bladex.project.id>
@@ -63,53 +62,80 @@
             <artifactId>lombok</artifactId>
             <scope>provided</scope>
         </dependency>
-
-
         <dependency>
-            <groupId>org.springblade</groupId>
-            <artifactId>BladeX-Boot-Common</artifactId>
-            <version>${bladex.project.version}</version>
+            <groupId>edu.ucar</groupId>
+            <artifactId>netcdfAll</artifactId>
+            <version>5.5.3</version>
         </dependency>
         <dependency>
             <groupId>org.springblade</groupId>
-            <artifactId>BladeX-Boot-Base</artifactId>
+            <artifactId>BladeX-Boot-Common</artifactId>
             <version>${bladex.project.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springblade</groupId>
+                    <artifactId>blade-starter-report</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.springblade</groupId>
+                    <artifactId>blade-starter-flowable</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.springblade</groupId>
+                    <artifactId>blade-starter-oss</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
+
         <dependency>
             <groupId>org.springblade</groupId>
-            <artifactId>BladeX-Boot-Flow</artifactId>
+            <artifactId>BladeX-Boot-Base</artifactId>
             <version>${bladex.project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-amqp</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.kafka</groupId>
-            <artifactId>spring-kafka</artifactId>
-            <version>2.5.14.RELEASE</version>
             <exclusions>
                 <exclusion>
-                    <groupId>org.apache.kafka</groupId>
-                    <artifactId>kafka-clients</artifactId>
+                    <groupId>org.springblade</groupId>
+                    <artifactId>BladeX-Boot-Common</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
+        <!--<dependency>-->
+        <!--<groupId>org.springblade</groupId>-->
+        <!--<artifactId>BladeX-Boot-Flow</artifactId>-->
+        <!--<version>${bladex.project.version}</version>-->
+        <!--</dependency>-->
+        <!--<dependency>-->
+        <!--<groupId>org.springframework.boot</groupId>-->
+        <!--<artifactId>spring-boot-starter-amqp</artifactId>-->
+        <!--</dependency>-->
         <dependency>
-            <groupId>org.apache.kafka</groupId>
-            <artifactId>kafka-clients</artifactId>
-            <version>3.0.0</version>
-
+            <groupId>org.springframework.kafka</groupId>
+            <artifactId>spring-kafka</artifactId>
         </dependency>
+        <!--<dependency>-->
+        <!--<groupId>org.springframework.kafka</groupId>-->
+        <!--<artifactId>spring-kafka</artifactId>-->
+        <!--<version>2.5.14.RELEASE</version>-->
+        <!--<exclusions>-->
+        <!--<exclusion>-->
+        <!--<groupId>org.apache.kafka</groupId>-->
+        <!--<artifactId>kafka-clients</artifactId>-->
+        <!--</exclusion>-->
+        <!--</exclusions>-->
+        <!--</dependency>-->
+        <!--<dependency>-->
+        <!--<groupId>org.apache.kafka</groupId>-->
+        <!--<artifactId>kafka-clients</artifactId>-->
+        <!--<version>3.0.0</version>-->
+        <!--</dependency>-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-websocket</artifactId>
-            <!--<exclusions>
+            <exclusions>
                 <exclusion>
                     <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-web</artifactId>
+                    <artifactId>spring-boot-starter-tomcat</artifactId>
                 </exclusion>
-            </exclusions>-->
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.springblade</groupId>
@@ -120,29 +146,27 @@
             <artifactId>jersey-common</artifactId>
             <version>2.28</version>
         </dependency>
+
         <!--<dependency>-->
-            <!--<groupId>cn.afterturn</groupId>-->
-            <!--<artifactId>easypoi-spring-boot-starter</artifactId>-->
-            <!--<version>4.1.2</version>-->
+        <!--<groupId>cn.afterturn</groupId>-->
+        <!--<artifactId>easypoi-spring-boot-starter</artifactId>-->
+        <!--<version>4.1.2</version>-->
         <!--</dependency>-->
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>easyexcel</artifactId>
             <version>${revision}</version>
         </dependency>
-
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>easyexcel-core</artifactId>
             <version>${revision}</version>
         </dependency>
-
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>easyexcel-support</artifactId>
             <version>${revision}</version>
         </dependency>
-
         <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi</artifactId>
@@ -163,6 +187,27 @@
             <artifactId>ooxml-schemas</artifactId>
             <version>1.4</version>
         </dependency>
+        <!-- 二维码生成 -->
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>core</artifactId>
+            <version>3.3.3</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>javase</artifactId>
+            <version>3.3.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.rocksdb</groupId>
+            <artifactId>rocksdbjni</artifactId>
+            <version>5.5.1</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-net</groupId>
+            <artifactId>commons-net</artifactId>
+            <version>3.8.0</version>
+        </dependency>
     </dependencies>
 
     <build>
@@ -232,6 +277,15 @@
             <id>nexus</id>
             <url>http://nexus.zhkrc.com/repository/maven-public/</url>
         </repository>
+        <!--<repository>-->
+        <!--<id>osgeo</id>-->
+        <!--<name>repo.osgeo.org</name>-->
+        <!--<url>https://repo.osgeo.org/repository/release/</url>-->
+        <!--<snapshots>-->
+        <!--<enabled>false</enabled>-->
+        <!--</snapshots>-->
+        <!--<releases><enabled>true</enabled></releases>-->
+        <!--</repository>-->
     </repositories>
 
     <pluginRepositories>

+ 53 - 18
src/main/java/org/springblade/constant/BusinessConstant.java

@@ -16,25 +16,60 @@ package org.springblade.constant;
  * Remark:认为有必要的其他信息
  */
 public class BusinessConstant {
+	/**
+	 * 超级管理员角色
+	 */
 	public static final  String ROLE_SUPER_ADMIN ="administrator";
-
-	public static final  String ROLE_ADMIN ="admin";
-
+	/**
+	 * 系统管理员角色
+	 */
+	public static final  String ROLE_SYS_ADMIN ="sys_admin";
+	/**
+	 * 盟市机构管理员角色
+	 */
 	public static final  String ROLE_ORG_ADMIN ="org_admin";
-
-	public static final  String ROLE_ORG_SERVICE_PERSON ="org_servcie_person";
-
-	public static final  String ROLE_ORG_ADMIN_ID ="1123598816738675204";
-
-	public static final  String ROLE_ORG_SERVICE_PERSON_ID ="1123598816738675205";
-
-	public static final  String SERVICE_PERSON_POST_ID ="1562994107637354498";
-
-	public static final String ACCOUNT_PW_SUFFIX="@2022";
-
-	public static final Long ORG_ADMIN_ID=1123598813738675201L;
-
+	/**
+	 * 运维公司管理员角色
+	 */
+	public static final  String ROLE_COMPANY_ADMIN ="company_admin";
+	/**
+	 * 运维公司技术人员角色
+	 */
+	public static final  String ROLE_COMPANY_SERVICE_PERSON ="company_servcie_person";
+	/**
+	 * 盟市机构管理员角色ID
+	 */
+	public static final  String ROLE_ORG_ADMIN_ID ="1641334028382662657";
+	/**
+	 * 公司运维管理员角色ID
+	 */
+	public static final  String ROLE_COMPANY_ADMIN_ID ="1641334149732265985";
+	/**
+	 * 公司运维人员角色ID
+	 */
+	public static final  String ROLE_COMPANY_SERVICE_PERSON_ID ="1641334272017199106";
+	/**
+	 * 管理岗位
+	 */
+	public static final  String POST_ADMIN_ID ="1562989286284906498";
+	/**
+	 * 技术员岗位
+	 */
+	public static final  String POST_SERVICE_PERSON_ID ="1562994107637354498";
+	/**
+	 * 系统管理员用户ID
+	 */
 	public static final Long SYS_ADMIN_ID =1499007300681326593L;
-
-	public static final String DEPT_NM_ADCODE="150000000000000";
+	/**
+	 * 根行政区划编码
+	 */
+	public static final String REGION_ROOT_ADCODE="00";
+	/**
+	 * 自治区行政区划编码
+	 */
+	public static final String REGION_NM_ADCODE="150000000000000";
+	/**
+	 * 帐号密码后缀
+	 */
+	public static final String ACCOUNT_PW_SUFFIX="@8282";
 }

+ 0 - 7
src/main/java/org/springblade/constant/DictBusinessConstant.java

@@ -18,11 +18,4 @@ package org.springblade.constant;
 public class DictBusinessConstant {
 	public static final  String ORDER_STATUS_CODE ="rtu_check_order_status";
 	public static final  String ORDER_FROM_CODE ="rtu_check_order_from";
-
-	public static final  String WATER_LEVEL_TYPE_DICT_CODE ="rtu_check_order_from";
-
-	public static final  long ORDER_STATUS_KEY_CREATE =1561664032518283266L;
-	public static final  long ORDER_STATUS_KEY_CONFIRM =1563384333744525313L;
-	public static final  long ORDER_STATUS_KEY_PROCESS =1561664210792980482L;
-	public static final  long ORDER_STATUS_KEY_CLOSE =1561664272864485377L;
 }

+ 125 - 0
src/main/java/org/springblade/enums/WarnKindEnum.java

@@ -0,0 +1,125 @@
+package org.springblade.enums;
+
+public enum WarnKindEnum {
+
+	/**
+	 * 测站离线
+	 */
+	WARN_OFFLINE(1, "测站离线"),
+
+	/**
+	 * 测站时钟异常
+	 */
+	WARN_CLOCK(2, "测站时钟异常"),
+
+	/**
+	 * 测站雨量小时报漏报
+	 */
+	WARN_RAIN_MISS_OUT(3, "测站雨量小时报漏报"),
+
+	/**
+	 * 测站水位小时报漏报
+	 */
+	WARN_WL_MISS_OUT(4, "测站水位小时报漏报"),
+
+	/**
+	 * 5分钟上报延时
+	 */
+	WARN_UP_MIN_DELAY(5, "雨量5分钟上报延时"),
+
+	/**
+	 * 小时上报延时
+	 */
+	WARN_RAIN_UP_HOUR_DELAY(6, "雨量站小时上报延时"),
+
+	/**
+	 * 水位站小时上报延时
+	 */
+	WARN_WL_UP_HOUR_DELAY(7, "水位站小时上报延时"),
+
+	/**
+	 * 雨量疑似异常值
+	 */
+	WARN_OUTLIER_VALUE(8, "雨量疑似异常值");
+
+	private int code;
+
+	private String name;
+
+	private WarnKindEnum(int code, String name) {
+		this.code = code;
+		this.name = name;
+	}
+
+	/**
+	 * Function:根据code来获取对应的name
+	 * Author: Admin
+	 * Date:2021/6/26
+	 *
+	 * @param code
+	 * @return java.lang.String
+	 * @throws Exception
+	 */
+	public static String getName(int code) {
+		for (WarnKindEnum type : WarnKindEnum.values()) {
+			if (type.code == code) {
+				return type.name;
+			}
+		}
+		return "";
+	}
+
+	/**
+	 * Function:根据code来获取对应的枚举常量
+	 * Author: Admin
+	 * Date:2021/6/26
+	 *
+	 * @param code
+	 * @return com.zhgzjg.web.enums.DeleteFlag
+	 * @throws Exception
+	 */
+	public static WarnKindEnum getEnumByCode(int code) {
+		for (WarnKindEnum type : WarnKindEnum.values()) {
+			if (type.code == code) {
+				return type;
+			}
+		}
+		return null;
+	}
+
+
+	/**
+	 * Function:根据name来获取对应的枚举常量
+	 * Author: Admin
+	 * Date:2021/6/26
+	 *
+	 * @param name
+	 * @return com.zhgzjg.web.enums.DeleteFlag
+	 * @throws Exception
+	 */
+	public static WarnKindEnum getEnumByName(String name) {
+		for (WarnKindEnum type : WarnKindEnum.values()) {
+			if (type.name.equals(name)) {
+				return type;
+			}
+		}
+		return null;
+	}
+
+
+	public int getCode() {
+		return code;
+	}
+
+	public void setCode(int code) {
+		this.code = code;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+}

+ 10 - 25
src/main/java/org/springblade/etl/EtlGroundDataTask.java

@@ -9,30 +9,14 @@ package org.springblade.etl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.tool.jackson.JsonUtil;
-import org.springblade.core.tool.utils.ConcurrentDateFormat;
-import org.springblade.core.tool.utils.Func;
 import org.springblade.etl.dto.EtlGroundDataDTO;
 import org.springblade.etl.entity.EtlGroundDataEntity;
-import org.springblade.etl.entity.EtlRainDataEntity;
-import org.springblade.etl.entity.EtlRiverDataEntity;
 import org.springblade.etl.service.IEtlGroundDataService;
-import org.springblade.etl.service.IEtlRainDataService;
 import org.springblade.modules.business.data.entity.RtuDataGroundEntity;
-import org.springblade.modules.business.data.entity.RtuDataRainEntity;
-import org.springblade.modules.business.data.entity.RtuDataRiverEntity;
 import org.springblade.modules.business.data.service.IRtuDataGroundService;
-import org.springblade.modules.business.data.service.IRtuDataRainService;
-import org.springblade.modules.business.rtumanage.entity.RtuStatusEntity;
-import org.springframework.data.redis.core.HashOperations;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.kafka.core.KafkaTemplate;
 
-import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
-import java.util.concurrent.Callable;
 
 /***
  * Date:2022/5/22
@@ -61,15 +45,16 @@ public class EtlGroundDataTask {
 				groundDataEntity.setStatus(1);
 				groundDataEntity.setIsDeleted(0);
 			}
-			groundDataEntity.setSlm10(entity.getSlm10());
-			groundDataEntity.setSlm20(entity.getSlm20());
-			groundDataEntity.setSlm30(entity.getSlm30());
-			groundDataEntity.setSlm40(entity.getSlm40());
-			groundDataEntity.setSlm60(entity.getSlm60());
-			groundDataEntity.setSlm80(entity.getSlm80());
-			groundDataEntity.setSlm100(entity.getSlm100());
-			groundDataEntity.setSrlslm(entity.getSrlslm());
-			groundDataEntity.setVtavslm(entity.getVtavslm());
+			groundDataEntity.setSlm10(entity.getMoco10cm());
+			groundDataEntity.setSlm20(entity.getMoco20cm());
+			groundDataEntity.setSlm30(entity.getMoco30cm());
+			groundDataEntity.setSlm40(entity.getMoco40cm());
+			groundDataEntity.setSlm50(entity.getMoco50cm());
+			groundDataEntity.setSlm60(entity.getMoco60cm());
+			groundDataEntity.setSlm80(entity.getMoco80cm());
+			groundDataEntity.setSlm100(entity.getMoco100cm());
+			groundDataEntity.setSrlslm(entity.getSurfMoco());
+			groundDataEntity.setVtavslm(entity.getVertAverMoco());
 			groundDataEntity.setTm(entity.getTm());
 			rtuDataGroundService.saveOrUpdate(groundDataEntity);
 

+ 3 - 2
src/main/java/org/springblade/etl/EtlMvAttStBaseDataTask.java

@@ -21,8 +21,8 @@ import java.util.concurrent.Callable;
 
 /***
  * Date:2022/5/22
- * Title: 环境辐射与气象监测系统(KRS) 模块
- * Description:MODBUS TCP 协议传输 ,读取任务
+ * Title: 测站基础数据
+ * Description:
  * @author swp
  * @version 1.0
  * Remark:认为有必要的其他信息
@@ -41,6 +41,7 @@ public class EtlMvAttStBaseDataTask implements Callable<Integer> {
 	@Override
 	public Integer call() {
 		try {
+
 			log.info("测站数据抽取开始**************");
 			List<EtlMvAttStBaseEntity> list = etlMvAttStBaseService.selectList();
 			if (list != null && list.size() > 0) {

+ 0 - 14
src/main/java/org/springblade/etl/EtlRegionDataTask.java

@@ -7,25 +7,11 @@
 package org.springblade.etl;
 
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.tool.utils.ConcurrentDateFormat;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.etl.dto.EtlGroundDataDTO;
-import org.springblade.etl.entity.EtlAdCdEntity;
-import org.springblade.etl.entity.EtlGroundDataEntity;
 import org.springblade.etl.service.IEtlAdCdService;
-import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
 import org.springblade.modules.baseinfo.region.service.IBaseInfoRegionService;
-import org.springblade.modules.business.data.entity.RtuDataGroundEntity;
-import org.springblade.modules.system.service.IRegionService;
-import org.springframework.data.redis.core.HashOperations;
 import org.springframework.data.redis.core.RedisTemplate;
 
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
 import java.util.concurrent.Callable;
 
 /***

+ 0 - 10
src/main/java/org/springblade/etl/EtlRiverDataTask.java

@@ -9,24 +9,14 @@ package org.springblade.etl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.tool.jackson.JsonUtil;
-import org.springblade.core.tool.utils.ConcurrentDateFormat;
-import org.springblade.core.tool.utils.Func;
 import org.springblade.etl.dto.EtlRiverDataDTO;
 import org.springblade.etl.entity.EtlRiverDataEntity;
 import org.springblade.etl.service.IEtlRiverDataService;
 import org.springblade.modules.business.data.entity.RtuDataRiverEntity;
 import org.springblade.modules.business.data.service.IRtuDataRiverService;
-import org.springblade.modules.business.rtumanage.entity.RtuStatusEntity;
-import org.springframework.data.redis.core.HashOperations;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.kafka.core.KafkaTemplate;
 
-import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
-import java.util.concurrent.Callable;
 
 /***
  * Date:2022/5/22

+ 194 - 0
src/main/java/org/springblade/etl/EtlRtuDataTask.java

@@ -0,0 +1,194 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2023/2/21
+ */
+package org.springblade.etl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.tool.jackson.JsonUtil;
+import org.springblade.core.tool.utils.ConcurrentDateFormat;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.etl.dto.EtlGroundDataDTO;
+import org.springblade.etl.dto.EtlRainDataDTO;
+import org.springblade.etl.dto.EtlRiverDataDTO;
+import org.springblade.etl.dto.EtlRsvrDataDTO;
+import org.springblade.etl.service.*;
+import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
+import org.springblade.modules.baseinfo.rtu.service.IRtuBaseInfoService;
+import org.springblade.modules.business.data.entity.RtuDataGroundEntity;
+import org.springblade.modules.business.data.entity.RtuDataRainEntity;
+import org.springblade.modules.business.data.entity.RtuDataRiverEntity;
+import org.springblade.modules.business.data.entity.RtuDataRsvrEntity;
+import org.springblade.modules.business.data.service.IRtuDataGroundService;
+import org.springblade.modules.business.data.service.IRtuDataRainService;
+import org.springblade.modules.business.data.service.IRtuDataRiverService;
+import org.springblade.modules.business.data.service.IRtuDataRsvrService;
+import org.springblade.modules.business.rtumanage.entity.RtuStatusEntity;
+import org.springframework.data.redis.core.HashOperations;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.kafka.core.KafkaTemplate;
+
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+/***
+ * Date:2023/2/21
+ * Title: ETL数据处理任务模块
+ * Description:处理雨情数据、河道水位数据、水库水位数据、墒情数据
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Slf4j
+public class EtlRtuDataTask implements Callable<Integer> {
+	private KafkaTemplate<String, String> kafkaTemplate;
+	private RedisTemplate redisTemplate;
+	private IRtuBaseInfoService rtuBaseInfoService;
+	private IEtlRainDataService etlRainDataService;
+	private IRtuDataRainService rtuDataRainService;
+	private IEtlRiverDataService etlRiverDataService;
+	private IRtuDataRiverService rtuDataRiverService;
+	private IEtlRsvrDataService etlRsvrDataService;
+	private IRtuDataRsvrService rtuDataRsvrService;
+	private IEtlGroundDataService etlGroundDataService;
+	private IRtuDataGroundService rtuDataGroundService;
+
+	EtlRtuDataTask(
+		KafkaTemplate<String, String> kafkaTemplate,
+		RedisTemplate redisTemplate,
+		IRtuBaseInfoService rtuBaseInfoService,
+		IEtlRainDataService etlRainDataService,
+		IRtuDataRainService rtuDataRainService,
+		IEtlRiverDataService etlRiverDataService,
+		IRtuDataRiverService rtuDataRiverService,
+		IEtlRsvrDataService etlRsvrDataService,
+		IRtuDataRsvrService rtuDataRsvrService,
+		IEtlGroundDataService etlGroundDataService,
+		IRtuDataGroundService rtuDataGroundService) {
+		this.kafkaTemplate = kafkaTemplate;
+		this.redisTemplate = redisTemplate;
+		this.rtuBaseInfoService = rtuBaseInfoService;
+		this.etlRainDataService = etlRainDataService;
+		this.rtuDataRainService = rtuDataRainService;
+		this.etlRiverDataService = etlRiverDataService;
+		this.rtuDataRiverService = rtuDataRiverService;
+		this.etlRsvrDataService = etlRsvrDataService;
+		this.rtuDataRsvrService = rtuDataRsvrService;
+		this.etlGroundDataService = etlGroundDataService;
+		this.rtuDataGroundService = rtuDataGroundService;
+	}
+
+	@Override
+	public Integer call() {
+		try {
+			log.info("测站定时报数据抽取开始**************");
+			long st = System.currentTimeMillis();
+			HashOperations<String, String, String> opsHash = redisTemplate.opsForHash();
+			LambdaQueryWrapper<RtuInfoEntity> wrapper = Wrappers.<RtuInfoEntity>query().lambda();
+			wrapper.eq(RtuInfoEntity::getIsDeleted, 0);
+			List<RtuInfoEntity> rtuInfoEntityList = rtuBaseInfoService.list(wrapper);
+			for (RtuInfoEntity rtuInfoEntity : rtuInfoEntityList) {
+				Date rtuUpTm = null;
+				//读取最新一条雨情数据
+				EtlRainDataDTO etlRainDataDTO = new EtlRainDataDTO();
+				etlRainDataDTO.setRtuCode(rtuInfoEntity.getRtuCode());
+				if (opsHash.hasKey("etl_rtu_rain_read_time", rtuInfoEntity.getRtuCode())) {
+					String dt = opsHash.get("etl_rtu_rain_read_time", rtuInfoEntity.getRtuCode());
+					Date lastDate = Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd HH:mm:ss"));
+					etlRainDataDTO.setLastTime(lastDate);
+				}
+				RtuDataRainEntity rtuDataRainEntity = EtlRainDataTask.dataSync(etlRainDataDTO, etlRainDataService, rtuDataRainService);
+				if (null != rtuDataRainEntity) {
+					//保存时间
+					String dt = Func.formatDateTime(rtuDataRainEntity.getTm());
+					opsHash.put("etl_rtu_rain_read_time", rtuInfoEntity.getRtuCode(), dt);
+					//最后上报时间
+					rtuUpTm = rtuDataRainEntity.getTm();
+				}
+				//读取最新一条河道数据
+				EtlRiverDataDTO etlRiverDataDTO = new EtlRiverDataDTO();
+				etlRiverDataDTO.setRtuCode(rtuInfoEntity.getRtuCode());
+				if (opsHash.hasKey("etl_rtu_river_read_time", rtuInfoEntity.getRtuCode())) {
+					String dt = opsHash.get("etl_rtu_river_read_time", rtuInfoEntity.getRtuCode());
+					Date lastDate = Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd HH:mm:ss"));
+					etlRiverDataDTO.setLastTime(lastDate);
+				}
+				RtuDataRiverEntity rtuDataRiverEntity = EtlRiverDataTask.dataSync(etlRiverDataDTO, etlRiverDataService, rtuDataRiverService);
+				if (null != rtuDataRiverEntity) {
+					//保存时间
+					String dt = Func.formatDateTime(rtuDataRiverEntity.getTm());
+					opsHash.put("etl_rtu_river_read_time", rtuInfoEntity.getRtuCode(), dt);
+					//最后上报时间
+					if (rtuUpTm != null) {
+						if (rtuDataRiverEntity.getTm().after(rtuUpTm)) {
+							rtuUpTm = rtuDataRiverEntity.getTm();
+						}
+					} else {
+						rtuUpTm = rtuDataRiverEntity.getTm();
+					}
+				}
+				//读取最新一条水库数据
+				EtlRsvrDataDTO etlRsvrDataDTO = new EtlRsvrDataDTO();
+				etlRsvrDataDTO.setRtuCode(rtuInfoEntity.getRtuCode());
+				if (opsHash.hasKey("etl_rtu_rsvr_read_time", rtuInfoEntity.getRtuCode())) {
+					String dt = opsHash.get("etl_rtu_rsvr_read_time", rtuInfoEntity.getRtuCode());
+					Date lastDate = Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd HH:mm:ss"));
+					etlRsvrDataDTO.setLastTime(lastDate);
+				}
+				RtuDataRsvrEntity rsvrDataEntity = EtlRsvrDataTask.dataSync(etlRsvrDataDTO, etlRsvrDataService, rtuDataRsvrService);
+				if (null != rsvrDataEntity) {
+					//保存时间
+					String dt = Func.formatDateTime(rsvrDataEntity.getTm());
+					opsHash.put("etl_rtu_rsvr_read_time", rtuInfoEntity.getRtuCode(), dt);
+					//最后上报时间
+					if (rtuUpTm != null) {
+						if (rsvrDataEntity.getTm().after(rtuUpTm)) {
+							rtuUpTm = rsvrDataEntity.getTm();
+						}
+					} else {
+						rtuUpTm = rsvrDataEntity.getTm();
+					}
+				}
+				//读取最新一条墒情数据
+				EtlGroundDataDTO groundDataDTO = new EtlGroundDataDTO();
+				groundDataDTO.setRtuCode(rtuInfoEntity.getRtuCode());
+				if (opsHash.hasKey("etl_rtu_ground_read_time", rtuInfoEntity.getRtuCode())) {
+					String dt = opsHash.get("etl_rtu_ground_read_time", rtuInfoEntity.getRtuCode());
+					Date lastDate = Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd HH:mm:ss"));
+					groundDataDTO.setLastTime(lastDate);
+				}
+				RtuDataGroundEntity groundDataEntity = EtlGroundDataTask.dataSync(groundDataDTO, etlGroundDataService, rtuDataGroundService);
+				if (null != groundDataEntity) {
+					//保存时间
+					String dt = Func.formatDateTime(groundDataEntity.getTm());
+					opsHash.put("etl_rtu_ground_read_time", rtuInfoEntity.getRtuCode(), dt);
+					//最后上报时间
+					if (rtuUpTm != null) {
+						if (groundDataEntity.getTm().after(rtuUpTm)) {
+							rtuUpTm = groundDataEntity.getTm();
+						}
+					} else {
+						rtuUpTm = groundDataEntity.getTm();
+					}
+				}
+				//更新测站最近上报时间
+				if (null != rtuUpTm) {
+					RtuStatusEntity statusEntity = new RtuStatusEntity();
+					statusEntity.setLastUpTime(rtuUpTm);
+					statusEntity.setRtuCode(rtuInfoEntity.getRtuCode());
+					kafkaTemplate.send("ywxt.rtu.status", JsonUtil.toJson(statusEntity));
+				}
+			}
+			long et = System.currentTimeMillis();
+			log.info("测站定时报数据抽取完成 {}", (et - st) / 1000);
+		} catch (Exception e) {
+			log.error("实时数据统计任务异常 {}", e.getMessage());
+		}
+		return 0;
+	}
+}

+ 65 - 204
src/main/java/org/springblade/etl/EtlTaskManager.java

@@ -8,40 +8,13 @@ package org.springblade.etl;
 
 
 import lombok.extern.slf4j.Slf4j;
-import org.glassfish.jersey.internal.guava.ThreadFactoryBuilder;
-import org.springblade.core.tool.jackson.JsonUtil;
-import org.springblade.core.tool.utils.ConcurrentDateFormat;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.etl.dto.EtlGroundDataDTO;
-import org.springblade.etl.dto.EtlRainDataDTO;
-import org.springblade.etl.dto.EtlRiverDataDTO;
-import org.springblade.etl.dto.EtlRsvrDataDTO;
-import org.springblade.etl.service.*;
-import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
-import org.springblade.modules.baseinfo.rtu.service.IRtuBaseInfoService;
-import org.springblade.modules.baseinfo.stbase.service.IMvAttStBaseService;
-import org.springblade.modules.business.data.entity.RtuDataGroundEntity;
-import org.springblade.modules.business.data.entity.RtuDataRainEntity;
-import org.springblade.modules.business.data.entity.RtuDataRiverEntity;
-import org.springblade.modules.business.data.entity.RtuDataRsvrEntity;
-import org.springblade.modules.business.data.service.IRtuDataGroundService;
-import org.springblade.modules.business.data.service.IRtuDataRainService;
-import org.springblade.modules.business.data.service.IRtuDataRiverService;
-import org.springblade.modules.business.data.service.IRtuDataRsvrService;
-import org.springblade.modules.business.rtumanage.entity.RtuStatusEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.redis.core.HashOperations;
 import org.springframework.data.redis.core.RedisTemplate;
 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.util.Date;
-import java.util.List;
-import java.util.concurrent.*;
 
 /***
  * Date:2022/5/22
@@ -59,9 +32,9 @@ 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());
+//	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
@@ -69,182 +42,70 @@ public class EtlTaskManager {
 
 	@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;
+//
+//	@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;
-
-	@Scheduled(cron = "0 0/5 * * * * ")
-	public void attStBaseReadTask() {
-		try {
-			if (etlTask) {
-				log.info("ETL-测站-定时同步任务开始执行*********************");
-				EtlMvAttStBaseDataTask mvAttStBaseDataTask = new EtlMvAttStBaseDataTask(etlMvAttStBaseService, mvAttStBaseService);
-				FutureTask<Integer> futureTask = new FutureTask<>(mvAttStBaseDataTask);
-				publicThreadPool.execute(futureTask);
-			}
-		} catch (Exception e) {
-			log.error("{}", e.getMessage());
-		}
-	}
-
-	@Scheduled(cron = "0 0/5 * * * * ")
-	public void rtuDataReadTask() {
-		try {
-			if (etlTask) {
-				log.info("ETL-数据-定时同步任务开始执行*********************");
-				EtlRtuDataTask etlRtuDataTask = new EtlRtuDataTask();
-				FutureTask<Integer> futureTask = new FutureTask<>(etlRtuDataTask);
-				publicThreadPool.execute(futureTask);
-			}
-		} catch (Exception e) {
-			log.error("{}", e.getMessage());
-		}
-	}
-
-	private class EtlRtuDataTask implements Callable<Integer> {
-
-		@Override
-		public Integer call() {
-			try {
-				log.info("测站定时报数据抽取开始**************");
-				HashOperations<String, String, String> opsHash = redisTemplate.opsForHash();
-				List<RtuInfoEntity> rtuInfoEntityList = rtuBaseInfoService.list();
-				for (RtuInfoEntity rtuInfoEntity : rtuInfoEntityList) {
-					Date rtuUpTm = null;
-					//读取最新一条雨情数据
-					EtlRainDataDTO etlRainDataDTO = new EtlRainDataDTO();
-					etlRainDataDTO.setRtuCode(rtuInfoEntity.getRtuCode());
-					if (opsHash.hasKey("etl_rtu_rain_read_time", rtuInfoEntity.getRtuCode())) {
-						String dt = opsHash.get("etl_rtu_rain_read_time", rtuInfoEntity.getRtuCode());
-						Date lastDate = Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd HH:mm:ss"));
-						etlRainDataDTO.setLastTime(lastDate);
-					}
-					RtuDataRainEntity rtuDataRainEntity = EtlRainDataTask.dataSync(etlRainDataDTO, etlRainDataService, rtuDataRainService);
-					if (null != rtuDataRainEntity) {
-						//保存时间
-						String dt = Func.formatDateTime(rtuDataRainEntity.getTm());
-						opsHash.put("etl_rtu_rain_read_time", rtuInfoEntity.getRtuCode(), dt);
-						//最后上报时间
-						if (rtuUpTm != null) {
-							if (rtuDataRainEntity.getTm().after(rtuUpTm)) {
-								rtuUpTm = rtuDataRainEntity.getTm();
-							}
-						} else {
-							rtuUpTm = rtuDataRainEntity.getTm();
-						}
-					}
-					//读取最新一条河道数据
-					EtlRiverDataDTO etlRiverDataDTO = new EtlRiverDataDTO();
-					etlRiverDataDTO.setRtuCode(rtuInfoEntity.getRtuCode());
-					if (opsHash.hasKey("etl_rtu_river_read_time", rtuInfoEntity.getRtuCode())) {
-						String dt = opsHash.get("etl_rtu_river_read_time", rtuInfoEntity.getRtuCode());
-						Date lastDate = Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd HH:mm:ss"));
-						etlRiverDataDTO.setLastTime(lastDate);
-					}
-					RtuDataRiverEntity rtuDataRiverEntity = EtlRiverDataTask.dataSync(etlRiverDataDTO, etlRiverDataService, rtuDataRiverService);
-					if (null != rtuDataRiverEntity) {
-						//保存时间
-						String dt = Func.formatDateTime(rtuDataRiverEntity.getTm());
-						opsHash.put("etl_rtu_river_read_time", rtuInfoEntity.getRtuCode(), dt);
-						//最后上报时间
-						if (rtuUpTm != null) {
-							if (rtuDataRiverEntity.getTm().after(rtuUpTm)) {
-								rtuUpTm = rtuDataRiverEntity.getTm();
-							}
-						} else {
-							rtuUpTm = rtuDataRiverEntity.getTm();
-						}
-					}
-					//读取最新一条水库数据
-					EtlRsvrDataDTO etlRsvrDataDTO = new EtlRsvrDataDTO();
-					etlRsvrDataDTO.setRtuCode(rtuInfoEntity.getRtuCode());
-					if (opsHash.hasKey("etl_rtu_rsvr_read_time", rtuInfoEntity.getRtuCode())) {
-						String dt = opsHash.get("etl_rtu_rsvr_read_time", rtuInfoEntity.getRtuCode());
-						Date lastDate = Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd HH:mm:ss"));
-						etlRsvrDataDTO.setLastTime(lastDate);
-					}
-					RtuDataRsvrEntity rsvrDataEntity = EtlRsvrDataTask.dataSync(etlRsvrDataDTO, etlRsvrDataService, rtuDataRsvrService);
-					if (null != rsvrDataEntity) {
-						//保存时间
-						String dt = Func.formatDateTime(rsvrDataEntity.getTm());
-						opsHash.put("etl_rtu_rsvr_read_time", rtuInfoEntity.getRtuCode(), dt);
-						//最后上报时间
-						if (rtuUpTm != null) {
-							if (rsvrDataEntity.getTm().after(rtuUpTm)) {
-								rtuUpTm = rsvrDataEntity.getTm();
-							}
-						} else {
-							rtuUpTm = rsvrDataEntity.getTm();
-						}
-					}
-					//读取最新一条墒情数据
-					EtlGroundDataDTO groundDataDTO = new EtlGroundDataDTO();
-					groundDataDTO.setRtuCode(rtuInfoEntity.getRtuCode());
-					if (opsHash.hasKey("etl_rtu_ground_read_time", rtuInfoEntity.getRtuCode())) {
-						String dt = opsHash.get("etl_rtu_ground_read_time", rtuInfoEntity.getRtuCode());
-						Date lastDate = Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd HH:mm:ss"));
-						groundDataDTO.setLastTime(lastDate);
-					}
-					RtuDataGroundEntity groundDataEntity = EtlGroundDataTask.dataSync(groundDataDTO, etlGroundDataService, rtuDataGroundService);
-					if (null != groundDataEntity) {
-						//保存时间
-						String dt = Func.formatDateTime(groundDataEntity.getTm());
-						opsHash.put("etl_rtu_ground_read_time", rtuInfoEntity.getRtuCode(), dt);
-						//最后上报时间
-						if (rtuUpTm != null) {
-							if (groundDataEntity.getTm().after(rtuUpTm)) {
-								rtuUpTm = groundDataEntity.getTm();
-							}
-						} else {
-							rtuUpTm = groundDataEntity.getTm();
-						}
-					}
-					//更新测站最近上报时间
-					if (null != rtuUpTm) {
-						RtuStatusEntity statusEntity = new RtuStatusEntity();
-						statusEntity.setLastUpTime(rtuUpTm);
-						statusEntity.setRtuCode(rtuInfoEntity.getRtuCode());
-						kafkaTemplate.send("ywxt.rtu.status", JsonUtil.toJson(statusEntity));
-					}
-				}
-			} catch (Exception e) {
-				log.error("实时数据统计任务异常 {}", e.getMessage());
-			}
-			return 0;
-		}
-	}
+//
+//	@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());
+//		}
+//	}
 
 }

+ 2 - 4
src/main/java/org/springblade/etl/EtlWarningTask.java

@@ -18,16 +18,14 @@ import org.springblade.modules.business.warning.service.IRtuWarningService;
 import org.springframework.data.redis.core.HashOperations;
 import org.springframework.data.redis.core.RedisTemplate;
 
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.Callable;
 
 /***
  * Date:2022/5/22
- * Title: 环境辐射与气象监测系统(KRS) 模块
- * Description:MODBUS TCP 协议传输 ,读取任务
+ * Title: 预警数据抽取
+ * Description:
  * @author swp
  * @version 1.0
  * Remark:认为有必要的其他信息

+ 921 - 40
src/main/java/org/springblade/etl/controller/TestController.java

@@ -6,45 +6,41 @@
  */
 package org.springblade.etl.controller;
 
-import cn.hutool.core.date.DateUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.mp.support.Condition;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.jackson.JsonUtil;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.enums.EquipmentStatusEnum;
 import org.springblade.etl.entity.EtlRainDataEntity;
+
 import org.springblade.etl.entity.EtlRsvrDataEntity;
+
 import org.springblade.etl.service.IEtlRainDataService;
-import org.springblade.modules.baseinfo.org.service.IBaseInfoOrgService;
-import org.springblade.modules.baseinfo.project.entity.ProjectInfoEntity;
-import org.springblade.modules.baseinfo.project.vo.ProjectInfoVO;
-import org.springblade.modules.baseinfo.project.wrapper.ProjectInfoWrapper;
-import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
+
 import org.springblade.modules.baseinfo.rtu.service.IRtuBaseInfoService;
-import org.springblade.modules.business.data.entity.RtuDataGroundEntity;
-import org.springblade.modules.business.data.entity.RtuDataRainEntity;
-import org.springblade.modules.business.data.entity.RtuDataRiverEntity;
-import org.springblade.modules.business.data.entity.RtuDataRsvrEntity;
-import org.springblade.modules.business.rtumanage.entity.RtuStatusEntity;
-import org.springblade.modules.business.warning.entity.RtuWarningInfoEntity;
-import org.springblade.modules.system.entity.DictBiz;
-import org.springblade.modules.system.service.IDeptService;
+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 java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import javax.annotation.Resource;
+
+import java.util.*;
 
 
 /***
@@ -64,29 +60,914 @@ 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) {
-		Calendar calendar = Calendar.getInstance();
+		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() {
+
+	//	surfDataProcessTask.submitTask("Z_SURF_C_BABJ_20230517080534_P_CMPA_RT_BEHT_0P01_HOR-PRE-2023051708.GRB2");
+//		EtlRainDataEntity etlRainDataEntity = new EtlRainDataEntity();
+//
+//		Calendar calendar = Calendar.getInstance();
+//		calendar.set(Calendar.HOUR_OF_DAY, 12);
 //		calendar.set(Calendar.MINUTE, 0);
 //		calendar.set(Calendar.SECOND, 0);
-		LambdaQueryWrapper<RtuInfoEntity> wrapper = Wrappers.<RtuInfoEntity>query().lambda();
-		wrapper.eq(RtuInfoEntity::getRtuCode, rtuCode);
-		wrapper.eq(RtuInfoEntity::getIsDeleted, 0);
-		RtuInfoEntity rtuInfoEntity = rtuBaseInfoService.getOne(wrapper);
-		if (rtuInfoEntity.getIsRain() == 1) {
-			EtlRainDataEntity etlRainDataEntity = new EtlRainDataEntity();
-			etlRainDataEntity.setGuid(Func.randomUUID());
-			java.util.Random random = new java.util.Random();
-			Double drp = random.nextDouble();
-			etlRainDataEntity.setDrp(drp);
-			etlRainDataEntity.setRtuCode(rtuInfoEntity.getRtuCode());
-			etlRainDataEntity.setTm(calendar.getTime());
-			etlRainDataEntity.setIntv(1.0);
-			etlRainDataService.saveTestData(etlRainDataEntity);
+//		etlRainDataEntity.setTm(calendar.getTime());
+//
+//		calendar.set(Calendar.MINUTE, 11);
+//
+//		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 etlRainDataEntity=new EtlRainDataEntity();
+//		etlRainDataEntity.setRtuCode("01751300");
+//		etlRainDataEntity.setIntv(1.0);
+//		etlRainDataEntity.setDrp(2.0);
+//		etlRainDataEntity.setTm(new Date());
+//		etlRainDataEntity.setFromDate(new Date());
+
+		//rtuWarningService.checkRtuOutlierValueStatus(etlRainDataEntity);
+		return R.data("ok");
+	}
+
+	@GetMapping("/data/rain/2")
+	@ApiOperationSupport(order = 1)
+	public R<String> addRain2() {
+		//	try {
+
+		//101.851139
+		//39.044694
+		//surf left top  0.0 39.039997  101.85
+		//surf left bottom  0.0 39.039997  101.86
+		//surf right top  0.0 39.05  101.85
+		//surf right bottom  0.0 39.05  101.86
+
+
+		String rtuCode = "01751300";
+
+		ValueOperations<String, String> ops = redisTemplate.opsForValue();
+		String key = rtuCode + ".surf.lefttop.value";
+		String value1 = ops.get(key);
+		key = rtuCode + ".surf.lefttop.lon";
+		String ltLon = ops.get(key);
+		key = rtuCode + ".surf.lefttop.lat";
+		String ltLat = ops.get(key);
+
+		key = rtuCode + ".surf.leftbottom.value";
+		String value2 = ops.get(key);
+		key = rtuCode + ".surf.leftbottom.lon";
+		String lbLon = ops.get(key);
+		key = rtuCode + ".surf.leftbottom.lat";
+		String lbLat = ops.get(key);
+
+		key = rtuCode + ".surf.righttop.value";
+		String value3 = ops.get(key);
+		key = rtuCode + ".surf.righttop.lon";
+		String rtLon = ops.get(key);
+		key = rtuCode + ".surf.righttop.lat";
+		String rtLat = ops.get(key);
+
+		key = rtuCode + ".surf.rightbottom.value";
+		String value4 = ops.get(key);
+		key = rtuCode + ".surf.rightbottom.lon";
+		String rbLon = ops.get(key);
+		key = rtuCode + ".surf.rightbottom.lat";
+		String rbLat = ops.get(key);
+
+		if (null != value1 && null != value2 && null != value3 && null != value4) {
+			float count = Func.toFloat(value1) + Func.toFloat(value2) + Func.toFloat(value3) + Func.toFloat(value4);
+			count = count / 4;
+			log.info("测站编码{} 纬度 {} 经度{}",rtuCode,39.044694,101.851139);
+			log.info("网格左上角 值  {} 纬度 {} 经度 {} ",value1,ltLat,ltLon);
+			log.info("网格左下角 值  {} 纬度 {} 经度 {} ",value2,lbLat,lbLon);
+			log.info("网格右上角 值  {} 纬度 {} 经度 {} ",value3,rtLat,rtLon);
+			log.info("网格右下角 值  {} 纬度 {} 经度 {} ",value4,rbLat,rbLon);
+
+			log.info("网格内降雨平均值 {}",count);
+
+		}else{
+			log.info("no surf info");
 		}
-		String timeStartText = DateUtil.format(new Date(), "yyyy年MM月dd日 HH时mm分ss秒");
-		log.info("模似数据生成{}", timeStartText);
+
+
+		//surfDataProcessTask.getSurfValue("94.65","34.899998");
+//		} catch (RocksDBException e) {
+//			e.printStackTrace();
+//		} catch (IOException e) {
+//			e.printStackTrace();
+//		} catch (ClassNotFoundException e) {
+//			e.printStackTrace();
+//		}
+//		EtlRainDataEntity etlRainDataEntity = new EtlRainDataEntity();
+//
+//		Calendar calendar = Calendar.getInstance();
+//		calendar.set(Calendar.HOUR_OF_DAY, 12);
+//		calendar.set(Calendar.MINUTE, 5);
+//		calendar.set(Calendar.SECOND, 0);
+//		etlRainDataEntity.setTm(calendar.getTime());
+//
+//		calendar.set(Calendar.MINUTE, 5);
+//
+//		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/3")
+	@ApiOperationSupport(order = 1)
+	public R<String> addRain3() {
+		EtlRainDataEntity etlRainDataEntity = new EtlRainDataEntity();
+
+		Calendar calendar = Calendar.getInstance();
+		calendar.set(Calendar.HOUR_OF_DAY, 14);
+		calendar.set(Calendar.MINUTE, 0);
+		calendar.set(Calendar.SECOND, 0);
+		etlRainDataEntity.setTm(calendar.getTime());
+
+	//	calendar.set(Calendar.MINUTE, 22);
+
+		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, 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));
+		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, 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(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");
 	}
 }

+ 54 - 11
src/main/java/org/springblade/etl/entity/EtlGroundDataEntity.java

@@ -6,7 +6,7 @@
  */
 package org.springblade.etl.entity;
 
-import com.baomidou.mybatisplus.annotation.TableName;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -26,7 +26,6 @@ import java.util.Date;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("etl_att_st_somo")
 public class EtlGroundDataEntity extends BaseEntity {
 	private static final long serialVersionUID = 1L;
 
@@ -45,58 +44,102 @@ public class EtlGroundDataEntity extends BaseEntity {
 	)
 	private Date tm;
 
+	@ApiModelProperty("扩展关键字 ")
+	private String extKey;
+
 	/**
 	 * 垂线平均含水量
 	 */
 	@ApiModelProperty("垂线平均含水量")
-	private Double vtavslm;
+	private Double vertAverMoco;
 
 	/**
 	 * 表层含水量
 	 */
 	@ApiModelProperty("表层含水量")
-	private Double srlslm;
+	private Double surfMoco;
 
 	/**
 	 * 10CM深度含水量
 	 */
 	@ApiModelProperty("10CM深度含水量")
-	private Double slm10;
+	private Double moco10cm;
 
 	/**
 	 * 20CM深度含水量
 	 */
 	@ApiModelProperty("20CM深度含水量")
-	private Double slm20;
+	private Double moco20cm;
 
 	/**
 	 * 30CM深度含水量
 	 */
 	@ApiModelProperty("30CM深度含水量")
-	private Double slm30;
+	private Double moco30cm;
 
 	/**
 	 * 40CM深度含水量
 	 */
 	@ApiModelProperty("40CM深度含水量")
-	private Double slm40;
+	private Double moco40cm;
+
+	/**
+	 * 50CM深度含水量
+	 */
+	@ApiModelProperty("50CM深度含水量")
+	private Double moco50cm;
 
 	/**
 	 * 60CM深度含水量
 	 */
 	@ApiModelProperty("60CM深度含水量")
-	private Double slm60;
+	private Double moco60cm;
 
 	/**
 	 * 80CM深度含水量
 	 */
 	@ApiModelProperty("80CM深度含水量")
-	private Double slm80;
+	private Double moco80cm;
 
 	/**
 	 * 100CM深度含水量
 	 */
 	@ApiModelProperty("100CM深度含水量")
-	private Double slm100;
+	private Double moco100cm;
+
+	@ApiModelProperty("作物种类 ")
+	private String cropType;
+
+	@ApiModelProperty("作物生长期 ")
+	private String cropGrow;
+
+	@ApiModelProperty("作物水分状态 ")
+	private String cropWat;
+
+	@ApiModelProperty("土壤含水量测法 ")
+	private String soilMocoMeth;
+
+	/**
+	 * 入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
+	)
+	private Date fromDate;
 
+	/**
+	 * 终止时间
+	 */
+	@ApiModelProperty("终止时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
+	)
+	private Date toDate;
 }

+ 29 - 2
src/main/java/org/springblade/etl/entity/EtlRainDataEntity.java

@@ -6,7 +6,6 @@
  */
 package org.springblade.etl.entity;
 
-import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -26,7 +25,6 @@ import java.util.Date;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("etl_att_st_prec")
 public class EtlRainDataEntity extends BaseEntity {
 	private static final long serialVersionUID = 1L;
 
@@ -51,6 +49,12 @@ public class EtlRainDataEntity extends BaseEntity {
 	@ApiModelProperty("降水量")
 	private Double drp;
 
+	/**
+	 * 累计降水量
+	 */
+	@ApiModelProperty("累计降水量")
+	private Double accDrp;
+
 	/**
 	 * 时段长
 	 */
@@ -75,4 +79,27 @@ public class EtlRainDataEntity extends BaseEntity {
 	@ApiModelProperty("天气状况")
 	private String wth;
 
+	/**
+	 * 入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
+	)
+	private Date fromDate;
+
+	/**
+	 * 终止时间
+	 */
+	@ApiModelProperty("终止时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
+	)
+	private Date toDate;
 }

+ 78 - 2
src/main/java/org/springblade/etl/entity/EtlRiverDataEntity.java

@@ -6,7 +6,7 @@
  */
 package org.springblade.etl.entity;
 
-import com.baomidou.mybatisplus.annotation.TableName;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -26,7 +26,6 @@ import java.util.Date;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("etl_att_st_waco_ware")
 public class EtlRiverDataEntity extends BaseEntity {
 	private static final long serialVersionUID = 1L;
 
@@ -51,4 +50,81 @@ public class EtlRiverDataEntity extends BaseEntity {
 	@ApiModelProperty("河道水位")
 	private Double z;
 
+	/**
+	 * 流量
+	 */
+	@ApiModelProperty("流量")
+	private Double q;
+
+	/**
+	 * 断面过水面积
+	 */
+	@ApiModelProperty("断面过水面积")
+	private Double xsa;
+
+	/**
+	 * 断面平均流速
+	 */
+	@ApiModelProperty("断面平均流速")
+	private Double xsavv;
+
+	/**
+	 * 断面最大流速
+	 */
+	@ApiModelProperty("断面最大流速")
+	private Double xsnxv;
+
+	/**
+	 * 河水特征码
+	 */
+	@ApiModelProperty("河水特征码")
+	private String plwchrcd;
+
+	/**
+	 * 水势
+	 */
+	@ApiModelProperty("水势")
+	private String wptn;
+
+	/**
+	 * 测流方法
+	 */
+	@ApiModelProperty("测流方法")
+	private String msqmt;
+
+	/**
+	 * 测积方法
+	 */
+	@ApiModelProperty("测积方法")
+	private String msamt;
+
+	/**
+	 * 测速方法
+	 */
+	@ApiModelProperty("测速方法")
+	private String msvmt;
+
+	/**
+	 * 入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
+	)
+	private Date fromDate;
+
+	/**
+	 * 终止时间
+	 */
+	@ApiModelProperty("终止时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
+	)
+	private Date toDate;
 }

+ 72 - 2
src/main/java/org/springblade/etl/entity/EtlRsvrDataEntity.java

@@ -6,7 +6,7 @@
  */
 package org.springblade.etl.entity;
 
-import com.baomidou.mybatisplus.annotation.TableName;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -26,7 +26,6 @@ import java.util.Date;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("etl_att_st_res_ware")
 public class EtlRsvrDataEntity extends BaseEntity {
 	private static final long serialVersionUID = 1L;
 
@@ -51,4 +50,75 @@ public class EtlRsvrDataEntity extends BaseEntity {
 	@ApiModelProperty("库上水位")
 	private Double rz;
 
+	/**
+	 * 蓄水量
+	 */
+	@ApiModelProperty("蓄水量")
+	private Double w;
+
+	/**
+	 * 入库流量
+	 */
+	@ApiModelProperty("入库流量")
+	private Double inq;
+
+	/**
+	 * 库下水位
+	 */
+	@ApiModelProperty("库下水位")
+	private Double blrz;
+
+	/**
+	 * 出库流量
+	 */
+	@ApiModelProperty("出库流量")
+	private Double otq;
+
+	/**
+	 * 库水特征码
+	 */
+	@ApiModelProperty("库水特征码")
+	private String rwchrcd;
+
+	/**
+	 * 库水水势
+	 */
+	@ApiModelProperty("库水水势")
+	private String rwptn;
+
+	/**
+	 * 入流时段长
+	 */
+	@ApiModelProperty("入流时段长")
+	private Double inqdr;
+
+	/**
+	 * 测流方法
+	 */
+	@ApiModelProperty("测流方法")
+	private String msqmt;
+
+	/**
+	 * 入库时间
+	 */
+	@ApiModelProperty("入库时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
+	)
+	private Date fromDate;
+
+	/**
+	 * 终止时间
+	 */
+	@ApiModelProperty("终止时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
+	)
+	private Date toDate;
 }

+ 81 - 0
src/main/java/org/springblade/etl/entity/EtlTaskInfoEntity.java

@@ -0,0 +1,81 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2023/4/20
+ */
+package org.springblade.etl.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+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.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/***
+ * Date:2023/4/20
+ * Title: ETL模块-任务执行信息实体类
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("etl_task_info")
+public class EtlTaskInfoEntity extends BaseEntity {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 租户ID
+	 */
+	@ApiModelProperty("租户ID")
+	private String tenantId;
+
+	/**
+	 * 任务类型
+	 */
+	@ApiModelProperty("任务类型")
+	private String taskType;
+
+	/**
+	 * 执行时间
+	 */
+	@ApiModelProperty("执行时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss",
+		timezone = "GMT+8"
+	)
+	private Date taskExecuteTime;
+
+	/**
+	 * 执行时长
+	 */
+	@ApiModelProperty("执行时长")
+	private Integer taskExecuteLong;
+
+	/**
+	 * 基准测站数量
+	 */
+	@ApiModelProperty("基准测站数量")
+	private Integer rtuCount;
+
+	/**
+	 * 采集的数据数量
+	 */
+	@ApiModelProperty("采集的数据数量")
+	private Integer collectDataCount;
+
+	/**
+	 * 说明
+	 */
+	@ApiModelProperty("说明")
+	private String remark;
+}

+ 14 - 12
src/main/java/org/springblade/etl/mapper/EtlGroundDataMapper.xml

@@ -6,16 +6,18 @@
     <resultMap id="groundDataEntityResultMap" type="org.springblade.etl.entity.EtlGroundDataEntity">
         <result column="GUID" property="guid"/>
         <result column="ST_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="SLM60" property="slm60"/>
-        <result column="SLM80" property="slm80"/>
-        <result column="SLM100" property="slm100"/>
+        <result column="MEAS_DATE" property="tm"/>
+        <result column="VERT_AVER_MOCO" property="vtavslm"/>
+        <result column="SURF_MOCO" property="srlslm"/>
+        <result column="MOCO_10CM" property="slm10"/>
+        <result column="MOCO_20CM" property="slm20"/>
+        <result column="MOCO_30CM" property="slm30"/>
+        <result column="MOCO_40CM" property="slm40"/>
+        <result column="MOCO_50CM" property="slm50"/>
+        <result column="MOCO_60CM" property="slm60"/>
+        <result column="MOCO_80CM" property="slm80"/>
+        <result column="MOCO_10CM" property="slm100"/>
+
     </resultMap>
 
 
@@ -29,9 +31,9 @@
             and d.ST_CODE = #{etlGroundDataDTO.rtuCode}
         </if>
         <if test="etlGroundDataDTO.lastTime!=null">
-            and d.TM > #{etlGroundDataDTO.lastTime}
+            and d.MEAS_DATE > #{etlGroundDataDTO.lastTime}
         </if>
-        order  by d.tm desc
+        order  by d.MEAS_DATE desc
         limit 1
     </select>
 </mapper>

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

@@ -27,7 +27,7 @@
         <if test="etlRainDataDTO.lastTime!=null">
             and d.TM > #{etlRainDataDTO.lastTime}
         </if>
-        order  by d.TM desc
+        order by d.TM desc
         limit 1
     </select>
 

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

@@ -24,7 +24,7 @@
         <if test="etlRiverDataDTO.lastTime!=null">
             and d.TM > #{etlRiverDataDTO.lastTime}
         </if>
-        order  by d.tm desc
+        order by d.TM desc
         limit 1
     </select>
 </mapper>

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

@@ -23,7 +23,7 @@
         <if test="etlRsvrDataDTO.lastTime!=null">
             and d.TM > #{etlRsvrDataDTO.lastTime}
         </if>
-        order  by d.tm desc
+        order by d.TM desc
         limit 1
     </select>
 </mapper>

+ 24 - 0
src/main/java/org/springblade/etl/mapper/EtlTaskInfoMapper.java

@@ -0,0 +1,24 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/22
+ */
+package org.springblade.etl.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.etl.entity.EtlTaskInfoEntity;
+
+
+
+/***
+ * Date:2022/8/22
+ * Title:ETL模块-ETL任务执行信息映射
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface EtlTaskInfoMapper extends BaseMapper<EtlTaskInfoEntity> {
+
+}

+ 15 - 0
src/main/java/org/springblade/etl/mapper/EtlTaskInfoMapper.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.etl.mapper.EtlTaskInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="taskInfoResultMap" type="org.springblade.etl.entity.EtlTaskInfoEntity">
+        <result column="task_type" property="taskType"/>
+        <result column="task_execute_time" property="taskExecuteTime"/>
+        <result column="task_execute_long" property="taskExecuteLong"/>
+        <result column="rtu_count" property="rtuCount"/>
+        <result column="collect_data_count" property="collectDataCount"/>
+        <result column="remark" property="remark"/>
+    </resultMap>
+
+</mapper>

+ 24 - 0
src/main/java/org/springblade/etl/service/IEtlTaskInfoService.java

@@ -0,0 +1,24 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/9/8
+ */
+package org.springblade.etl.service;
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.etl.entity.EtlTaskInfoEntity;
+
+
+
+/***
+ * Date:2022/9/8
+ * Title:ETL模块-ETL任务执行管理
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface IEtlTaskInfoService extends BaseService<EtlTaskInfoEntity> {
+
+}

+ 28 - 0
src/main/java/org/springblade/etl/service/impl/EtlTaskInfoServiceImpl.java

@@ -0,0 +1,28 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/9/8
+ */
+package org.springblade.etl.service.impl;
+
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.etl.entity.EtlTaskInfoEntity;
+import org.springblade.etl.mapper.EtlTaskInfoMapper;
+import org.springblade.etl.service.IEtlTaskInfoService;
+import org.springframework.stereotype.Service;
+
+
+
+/***
+ * Date:2022/9/8
+ * Title:ETL模块-ETL任务执行管理
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Service
+public class EtlTaskInfoServiceImpl extends BaseServiceImpl<EtlTaskInfoMapper, EtlTaskInfoEntity> implements IEtlTaskInfoService {
+
+}

+ 0 - 20
src/main/java/org/springblade/modules/baseinfo/dict/controller/BaseInfoDictController.java

@@ -6,30 +6,12 @@
  */
 package org.springblade.modules.baseinfo.dict.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.springblade.constant.BusinessConstant;
 import org.springblade.core.boot.ctrl.BladeController;
-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.service.IBaseInfoOrgService;
-import org.springblade.modules.baseinfo.org.vo.OrgInfoVO;
-import org.springblade.modules.baseinfo.org.wrapper.OrgInfoWrapper;
-import org.springblade.modules.system.entity.Dept;
-import org.springblade.modules.system.service.IDeptService;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.LinkedList;
-import java.util.List;
-
 
 /***
  * Date:2022/8/22
@@ -44,7 +26,5 @@ import java.util.List;
 @AllArgsConstructor
 @Api(value = "业务字典", tags = "业务字典")
 public class BaseInfoDictController extends BladeController {
-	private final IBaseInfoOrgService orgService;
-	private final IDeptService deptService;
 
 }

+ 0 - 2
src/main/java/org/springblade/modules/baseinfo/dict/mapper/DictInfoMapper.java

@@ -9,8 +9,6 @@ package org.springblade.modules.baseinfo.dict.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.modules.baseinfo.dict.entity.DictInfoEntity;
-import org.springblade.modules.baseinfo.org.entity.OrgInfoEntity;
-import org.springblade.modules.system.entity.DictBiz;
 
 /***
  * Date:2022/8/22

+ 0 - 2
src/main/java/org/springblade/modules/baseinfo/dict/mapper/DictInfoMapper.xml

@@ -4,8 +4,6 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="baseinfoDictResultMap" type="org.springblade.modules.baseinfo.dict.entity.DictInfoEntity">
-        <result column="id" property="id"/>
-        <result column="is_deleted" property="isDeleted"/>
         <result column="parent_id" property="parentId"/>
         <result column="code" property="code"/>
         <result column="dict_key" property="dictKey"/>

+ 0 - 2
src/main/java/org/springblade/modules/baseinfo/dict/service/IBaseInfoDictService.java

@@ -8,8 +8,6 @@ package org.springblade.modules.baseinfo.dict.service;
 
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.modules.baseinfo.dict.entity.DictInfoEntity;
-import org.springblade.modules.baseinfo.org.entity.OrgInfoEntity;
-import org.springblade.modules.system.entity.DictBiz;
 
 /***
  * Date:2022/8/22

+ 0 - 4
src/main/java/org/springblade/modules/baseinfo/dict/service/impl/BaseInfoDictServiceImpl.java

@@ -10,10 +10,6 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.modules.baseinfo.dict.entity.DictInfoEntity;
 import org.springblade.modules.baseinfo.dict.mapper.DictInfoMapper;
 import org.springblade.modules.baseinfo.dict.service.IBaseInfoDictService;
-import org.springblade.modules.baseinfo.org.entity.OrgInfoEntity;
-import org.springblade.modules.baseinfo.org.mapper.OrgInfoMapper;
-import org.springblade.modules.baseinfo.org.service.IBaseInfoOrgService;
-import org.springblade.modules.system.entity.DictBiz;
 import org.springframework.stereotype.Service;
 
 /***

+ 133 - 36
src/main/java/org/springblade/modules/baseinfo/org/controller/BaseInfoOrgController.java

@@ -7,51 +7,39 @@
 package org.springblade.modules.baseinfo.org.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+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.*;
 import lombok.AllArgsConstructor;
 import org.springblade.constant.BusinessConstant;
 import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.launch.constant.AppConstant;
 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.etl.entity.EtlAdCdEntity;
-import org.springblade.etl.service.IEtlAdCdService;
-import org.springblade.modules.baseinfo.org.entity.OrgInfoEntity;
-import org.springblade.modules.baseinfo.org.service.IBaseInfoOrgService;
+import org.springblade.modules.baseinfo.org.dto.OrgInfoDTO;
+import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.org.service.IDeptRegionService;
 import org.springblade.modules.baseinfo.org.vo.OrgInfoVO;
 import org.springblade.modules.baseinfo.org.wrapper.OrgInfoWrapper;
-import org.springblade.modules.baseinfo.region.dto.RegionInfoDTO;
 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.region.vo.RegionInfoVO;
-import org.springblade.modules.baseinfo.region.wrapper.RegionInfoNodeWrapper;
-import org.springblade.modules.baseinfo.region.wrapper.RegionInfoWrapper;
-import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
-import org.springblade.modules.baseinfo.servicePerson.vo.OrgPersonContactVO;
-import org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO;
 import org.springblade.modules.system.entity.Dept;
 import org.springblade.modules.system.service.IDeptService;
-import org.springblade.modules.system.service.IRegionService;
-import org.springblade.modules.system.vo.DeptVO;
-import org.springblade.modules.system.wrapper.DeptWrapper;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
 
-import java.util.LinkedList;
 import java.util.List;
 
 
 /***
  * Date:2022/8/22
- * Title:行政区划管理
- * Description:对本文件的详细描述,原则上不能少于30字
- * @author dylan
+ * Title: 组织机构管理
+ * Description:系统管理员管理盟市,盟市管理员管理运维单位
+ * @author swp
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
@@ -60,27 +48,136 @@ import java.util.List;
 @AllArgsConstructor
 @Api(value = "运维单位管理", tags = "运维单位管理")
 public class BaseInfoOrgController extends BladeController {
-	private final IBaseInfoOrgService orgService;
 	private final IDeptService deptService;
-
+	private final IDeptRegionService deptRegionService;
 
 	@GetMapping("/list")
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "分页")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "分页")
 	public R<List<OrgInfoVO>> list() {
 		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			Dept dept = deptService.getById(Func.toLong(user.getDeptId()));
-			List<Dept> list = new LinkedList<>();
-			list.add(dept);
-			return R.data(OrgInfoWrapper.build().listVO(list));
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName())) {
+			LambdaQueryWrapper<Dept> wrapper = Wrappers.<Dept>query().lambda();
+			wrapper.eq(Dept::getIsDeleted, 0);
+			wrapper.eq(Dept::getParentId, Func.toLong(user.getDeptId()));
+			List<Dept> pages = deptService.list(wrapper);
+			return R.data(OrgInfoWrapper.build().listVO(pages));
+		} else {
+			return R.data(null);
+		}
+	}
+
+	/**
+	 * 多表联合查询自定义分页
+	 */
+	@GetMapping("/page")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "deptName", value = "机构名称", paramType = "query", dataType = "string"),
+	})
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "分页")
+	public R<IPage<OrgInfoVO>> page(@ApiIgnore Dept entity, Query query) {
+		BladeUser user = AuthUtil.getUser();
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName())) {
+			LambdaQueryWrapper<Dept> wrapper = Wrappers.<Dept>query().lambda();
+			wrapper.eq(Dept::getIsDeleted, 0);
+			wrapper.eq(Dept::getParentId, Func.toLong(user.getDeptId()));
+			if (entity.getDeptName() != null && entity.getDeptName().length() > 0) {
+				wrapper.like(Dept::getDeptName, entity.getDeptName());
+			}
+			IPage<Dept> pages = deptService.page(Condition.getPage(query), wrapper);
+			return R.data(OrgInfoWrapper.build().pageVO(pages));
+		} else {
+			return R.data(null);
+		}
+	}
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "详情", notes = "传入 Dept")
+	public R<Dept> detail(Dept dept) {
+		Dept vo = deptService.getById(dept.getId());
+		return R.data(vo);
+	}
+
+
+	/**
+	 * 新增
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "新增", notes = "传入 Dept")
+	@Transactional
+	public R save(@RequestBody OrgInfoDTO dept) {
+		BladeUser user = AuthUtil.getUser();
+		dept.setFullName(dept.getDeptName());
+		dept.setParentId(Func.toLong(user.getDeptId()));
+		Dept parentDept = deptService.getById(Func.toLong(user.getDeptId()));
+		dept.setAncestors(parentDept.getAncestors() + "," + parentDept.getId());
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			dept.setDeptCategory(2);
+		} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName())) {
+			dept.setDeptCategory(1);
+		}
+		if (deptService.save(dept)) {
+			DeptRegionEntity deptRegionEntity = new DeptRegionEntity();
+			deptRegionEntity.setDeptId(dept.getId());
+			if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+				deptRegionEntity.setAdcd(dept.getAdcd());
+			} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName())) {
+				LambdaQueryWrapper<DeptRegionEntity> deptRegionEntityLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
+				deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
+				deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, Func.toLong(user.getDeptId()));
+				DeptRegionEntity orgAdmindRegion = deptRegionService.getOne(deptRegionEntityLambdaQueryWrapper);
+				deptRegionEntity.setAdcd(orgAdmindRegion.getAdcd());
+			}
+			if (deptRegionService.save(deptRegionEntity)) {
+				return R.status(true);
+			} else {
+				return R.status(false);
+			}
 		} else {
-			LambdaQueryWrapper<Dept> queryWrapper = Wrappers.<Dept>query().lambda();
-			queryWrapper.eq(Dept::getIsDeleted, 0);
-			queryWrapper.eq(Dept::getParentId, BusinessConstant.ORG_ADMIN_ID);
-			List<Dept> list = deptService.list(queryWrapper);
-			return R.data(OrgInfoWrapper.build().listVO(list));
+			return R.status(false);
 		}
 	}
 
+	/**
+	 * 修改
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "修改", notes = "传入 Dept")
+	public R update(@RequestBody Dept dept) {
+		return R.status(deptService.updateById(dept));
+	}
+
+	/**
+	 * 新增或修改
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入 Dept")
+	public R submit(@RequestBody Dept dept) {
+		return R.status(deptService.saveOrUpdate(dept));
+	}
+
+	/**
+	 * 删除
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ID数组")
+	public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
+		if (null == ids) {
+			return R.status(false);
+		}
+		List<Long> list = Func.toLongList(ids);
+		for (Long id : list) {
+			deptService.removeById(id);
+		}
+		return R.status(true);
+	}
 }

+ 30 - 0
src/main/java/org/springblade/modules/baseinfo/org/dto/OrgInfoDTO.java

@@ -0,0 +1,30 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2023/2/22
+ */
+package org.springblade.modules.baseinfo.org.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.modules.system.entity.Dept;
+
+/***
+ * Date:2023/2/22
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class OrgInfoDTO extends Dept {
+	/**
+	 * 区划
+	 */
+	@ApiModelProperty(value = "区划")
+	private String adcd;
+}

+ 9 - 27
src/main/java/org/springblade/modules/baseinfo/org/entity/OrgInfoEntity.java → src/main/java/org/springblade/modules/baseinfo/org/entity/DeptRegionEntity.java

@@ -14,14 +14,14 @@ import org.springblade.core.mp.base.BaseEntity;
 
 
 /**
- * 运维单位实体
+ * 机构与行政区划绑定信息实体类
  *
  * @author swp
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("blade_dept")
-public class OrgInfoEntity extends BaseEntity {
+@TableName("blade_dept_region")
+public class DeptRegionEntity extends BaseEntity {
 
 	private static final long serialVersionUID = 1L;
 
@@ -32,32 +32,14 @@ public class OrgInfoEntity extends BaseEntity {
 	private String tenantId;
 
 	/**
-	 * 父主键
+	 * 机构ID
 	 */
-	@ApiModelProperty(value = "父主键")
-	private Long parentId;
+	@ApiModelProperty(value = "机构ID")
+	private Long deptId;
 
 	/**
-	 * 祖级列表
+	 * 行政区划编码
 	 */
-	@ApiModelProperty(value = "祖级列表")
-	private String ancestors;
-
-	/**
-	 * 部门类型
-	 */
-	@ApiModelProperty(value = "部门类型")
-	private Integer deptCategory;
-
-	/**
-	 * 部门名
-	 */
-	@ApiModelProperty(value = "部门名")
-	private String deptName;
-
-	/**
-	 * 部门全称
-	 */
-	@ApiModelProperty(value = "部门全称")
-	private String fullName;
+	@ApiModelProperty(value = "行政区划编码")
+	private String adcd;
 }

+ 4 - 6
src/main/java/org/springblade/modules/baseinfo/org/mapper/OrgInfoMapper.java → src/main/java/org/springblade/modules/baseinfo/org/mapper/DeptRegionMapper.java

@@ -2,22 +2,20 @@
  * Copyright 2019 DH
  * All right reserved.
  * 项目名称: 大恒泰山系统
- * 创建日期:2022/8/22
+ * 创建日期:2023/2/23
  */
 package org.springblade.modules.baseinfo.org.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.modules.baseinfo.org.entity.OrgInfoEntity;
-import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
+import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
 
 /***
- * Date:2022/8/22
+ * Date:2023/2/23
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
  * @author dylan
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface OrgInfoMapper extends BaseMapper<OrgInfoEntity> {
-
+public interface DeptRegionMapper extends BaseMapper<DeptRegionEntity> {
 }

+ 11 - 0
src/main/java/org/springblade/modules/baseinfo/org/mapper/DeptRegionMapper.xml

@@ -0,0 +1,11 @@
+<?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.baseinfo.org.mapper.DeptRegionMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="baseinfoOrgResultMap" type="org.springblade.modules.baseinfo.org.entity.DeptRegionEntity">
+        <result column="dept_id" property="deptId"/>
+        <result column="adcd" property="adcd"/>
+    </resultMap>
+
+</mapper>

+ 0 - 16
src/main/java/org/springblade/modules/baseinfo/org/mapper/OrgInfoMapper.xml

@@ -1,16 +0,0 @@
-<?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.baseinfo.org.mapper.OrgInfoMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="baseinfoOrgResultMap" type="org.springblade.modules.baseinfo.org.entity.OrgInfoEntity">
-        <result column="id" property="id"/>
-        <result column="is_deleted" property="isDeleted"/>
-        <result column="parent_id" property="parentId"/>
-        <result column="ancestors" property="ancestors"/>
-        <result column="dept_category" property="deptCategory"/>
-        <result column="dept_name" property="deptName"/>
-        <result column="full_name" property="fullName"/>
-    </resultMap>
-
-</mapper>

+ 4 - 5
src/main/java/org/springblade/modules/baseinfo/org/service/IBaseInfoOrgService.java → src/main/java/org/springblade/modules/baseinfo/org/service/IDeptRegionService.java

@@ -2,21 +2,20 @@
  * Copyright 2019 DH
  * All right reserved.
  * 项目名称: 大恒泰山系统
- * 创建日期:2022/8/22
+ * 创建日期:2023/2/23
  */
 package org.springblade.modules.baseinfo.org.service;
 
 import org.springblade.core.mp.base.BaseService;
-import org.springblade.modules.baseinfo.org.entity.OrgInfoEntity;
+import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
 
 /***
- * Date:2022/8/22
+ * Date:2023/2/23
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
  * @author dylan
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface IBaseInfoOrgService extends BaseService<OrgInfoEntity> {
-
+public interface IDeptRegionService extends BaseService<DeptRegionEntity> {
 }

+ 6 - 7
src/main/java/org/springblade/modules/baseinfo/org/service/impl/BaseInfoOrgServiceImpl.java → src/main/java/org/springblade/modules/baseinfo/org/service/impl/DeptRegionServiceImpl.java

@@ -2,18 +2,18 @@
  * Copyright 2019 DH
  * All right reserved.
  * 项目名称: 大恒泰山系统
- * 创建日期:2022/8/22
+ * 创建日期:2023/2/23
  */
 package org.springblade.modules.baseinfo.org.service.impl;
 
 import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.modules.baseinfo.org.entity.OrgInfoEntity;
-import org.springblade.modules.baseinfo.org.mapper.OrgInfoMapper;
-import org.springblade.modules.baseinfo.org.service.IBaseInfoOrgService;
+import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.org.mapper.DeptRegionMapper;
+import org.springblade.modules.baseinfo.org.service.IDeptRegionService;
 import org.springframework.stereotype.Service;
 
 /***
- * Date:2022/8/22
+ * Date:2023/2/23
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
  * @author dylan
@@ -21,6 +21,5 @@ import org.springframework.stereotype.Service;
  * Remark:认为有必要的其他信息
  */
 @Service
-public class BaseInfoOrgServiceImpl extends BaseServiceImpl<OrgInfoMapper, OrgInfoEntity> implements IBaseInfoOrgService {
-
+public class DeptRegionServiceImpl  extends BaseServiceImpl<DeptRegionMapper, DeptRegionEntity> implements IDeptRegionService {
 }

+ 17 - 5
src/main/java/org/springblade/modules/baseinfo/org/vo/OrgInfoVO.java

@@ -9,8 +9,7 @@ package org.springblade.modules.baseinfo.org.vo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.springblade.modules.baseinfo.org.entity.OrgInfoEntity;
-import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
+import org.springblade.modules.system.entity.Dept;
 
 /***
  * Date:2022/8/22
@@ -22,11 +21,24 @@ import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class OrgInfoVO extends OrgInfoEntity {
+public class OrgInfoVO extends Dept {
+
 	/**
-	 * 字典名称
+	 * 机构名称
 	 */
-	@ApiModelProperty(value = "字典名称")
+	@ApiModelProperty(value = "机构名称")
 	private String dictValue;
 
+	/**
+	 * 区划编码
+	 */
+	@ApiModelProperty(value = "区划编码")
+	private String adcd;
+
+
+	/**
+	 * 区划名称
+	 */
+	@ApiModelProperty(value = "区划名称")
+	private String adnm;
 }

+ 41 - 5
src/main/java/org/springblade/modules/baseinfo/org/wrapper/OrgInfoWrapper.java

@@ -12,7 +12,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 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.org.entity.OrgInfoEntity;
+import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.org.service.IDeptRegionService;
 import org.springblade.modules.baseinfo.org.vo.OrgInfoVO;
 import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
 import org.springblade.modules.baseinfo.region.service.IBaseInfoRegionService;
@@ -35,12 +36,47 @@ public class OrgInfoWrapper extends BaseEntityWrapper<Dept, OrgInfoVO> {
 		return new OrgInfoWrapper();
 	}
 
+	private static IBaseInfoRegionService baseInfoRegionService;
+
+	private static IBaseInfoRegionService getBaseInfoRegionService() {
+		if (baseInfoRegionService == null) {
+			baseInfoRegionService = SpringUtil.getBean(IBaseInfoRegionService.class);
+		}
+		return baseInfoRegionService;
+	}
+
+	private static IDeptRegionService deptRegionService;
+
+	private static IDeptRegionService getDeptRegionService() {
+		if (deptRegionService == null) {
+			deptRegionService = SpringUtil.getBean(IDeptRegionService.class);
+		}
+		return deptRegionService;
+	}
+
+
 	@Override
 	public OrgInfoVO entityVO(Dept entity) {
-		OrgInfoVO orgInfoVO = new OrgInfoVO();
-		orgInfoVO.setId(entity.getId());
-		orgInfoVO.setDictValue(entity.getDeptName());
-		return orgInfoVO;
+		if(null != entity) {
+			OrgInfoVO orgInfoVO = Objects.requireNonNull(BeanUtil.copy(entity, OrgInfoVO.class));
+			orgInfoVO.setDictValue(entity.getDeptName());
+			LambdaQueryWrapper<DeptRegionEntity> deptRegionEntityLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
+			deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
+			deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, entity.getId());
+			DeptRegionEntity deptRegionEntity = getDeptRegionService().getOne(deptRegionEntityLambdaQueryWrapper);
+			if (deptRegionEntity!= null){
+				LambdaQueryWrapper<RegionInfoEntity> regionInfoEntityLambdaQueryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
+				regionInfoEntityLambdaQueryWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
+				regionInfoEntityLambdaQueryWrapper.eq(RegionInfoEntity::getAdcd, deptRegionEntity.getAdcd());
+				RegionInfoEntity regionInfoEntity = getBaseInfoRegionService().getOne(regionInfoEntityLambdaQueryWrapper);
+				if(null != regionInfoEntity) {
+					orgInfoVO.setAdcd(regionInfoEntity.getAdcd());
+					orgInfoVO.setAdnm(regionInfoEntity.getAdnm());
+				}
+			}
+			return orgInfoVO;
+		}
+		return null;
 	}
 
 }

+ 6 - 6
src/main/java/org/springblade/modules/baseinfo/project/controller/ProjectBaseInfoController.java

@@ -72,9 +72,9 @@ public class ProjectBaseInfoController extends BladeController {
 	public R<List<ProjectInfoVO>> orglist() {
 		LambdaQueryWrapper<ProjectInfoEntity> wrapper = Wrappers.<ProjectInfoEntity>query().lambda();
 		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_ADMIN.equals(user.getRoleName())) {
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
 
-		} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
+		} else if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
 			wrapper.eq(ProjectInfoEntity::getOrgId, user.getDeptId());
 		}
 		wrapper.eq(ProjectInfoEntity::getIsDeleted, 0);
@@ -94,9 +94,9 @@ public class ProjectBaseInfoController extends BladeController {
 	@ApiOperation(value = "分页")
 	public R<IPage<ProjectInfoVO>> page(@ApiIgnore  ProjectInfoEntity entity, Query query) {
 		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_ADMIN.equals(user.getRoleName())) {
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
 
-		} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
+		} else if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
 			entity.setOrgId(Func.toLong(user.getDeptId()));
 		}
 		IPage<ProjectInfoVO> pages = projectBaseInfoService.selectPage(entity, Condition.getPage(query));
@@ -190,7 +190,7 @@ public class ProjectBaseInfoController extends BladeController {
 	public R<List<ProjectTreeNodeEntity>> projectTree() {
 		BladeUser user = AuthUtil.getUser();
 		List<ProjectTreeNodeEntity> tree = new LinkedList<>();
-		if (BusinessConstant.ROLE_ADMIN.equals(user.getRoleName())) {
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
 			LambdaQueryWrapper<Dept> wrapper = Wrappers.<Dept>query().lambda();
 			wrapper.eq(Dept::getParentId, 0);
 			Dept dept = this.deptService.getOne(wrapper);
@@ -228,7 +228,7 @@ public class ProjectBaseInfoController extends BladeController {
 				}
 			}
 
-		} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
+		} else if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
 
 			ProjectTreeNodeEntity root = new ProjectTreeNodeEntity();
 			root.setText("北京大恒");

+ 6 - 0
src/main/java/org/springblade/modules/baseinfo/project/entity/ProjectInfoEntity.java

@@ -59,6 +59,12 @@ public class ProjectInfoEntity extends BaseEntity {
 	@ApiModelProperty(value = "联系电话")
 	private String contactPhone;
 
+	/**
+	 * 邮箱
+	 */
+	@ApiModelProperty(value = "邮箱")
+	private String mail;
+
 	/**
 	 * 规约ID
 	 */

+ 1 - 14
src/main/java/org/springblade/modules/baseinfo/project/mapper/ProjectInfoMapper.xml

@@ -4,13 +4,6 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="projectInfoResultMap" type="org.springblade.modules.baseinfo.project.entity.ProjectInfoEntity">
-        <result column="id" property="id"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
         <result column="project_name" property="projectName"/>
         <result column="org_id" property="orgId"/>
         <result column="manage_name" property="manageName"/>
@@ -26,13 +19,7 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="projectInfoVOResultMap" type="org.springblade.modules.baseinfo.project.vo.ProjectInfoVO">
-        <result column="id" property="id"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
+
         <result column="project_name" property="projectName"/>
         <result column="org_id" property="orgId"/>
         <result column="dept_name" property="orgName"/>

+ 1 - 7
src/main/java/org/springblade/modules/baseinfo/project/mapper/ProjectWarningSettingMapper.xml

@@ -4,13 +4,7 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="projectInfoResultMap" type="org.springblade.modules.baseinfo.project.entity.ProjectWarningSettingEntity">
-        <result column="id" property="id"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
+
         <result column="project_id" property="projectId"/>
         <result column="warning_active" property="warningActive"/>
         <result column="datagram_delay_time" property="datagramDelayTime"/>

+ 2 - 0
src/main/java/org/springblade/modules/baseinfo/project/wrapper/ProjectInfoWrapper.java

@@ -28,6 +28,8 @@ public class ProjectInfoWrapper extends BaseEntityWrapper<ProjectInfoEntity, Pro
 		return new ProjectInfoWrapper();
 	}
 
+
+
 	@Override
 	public ProjectInfoVO entityVO(ProjectInfoEntity entity) {
 

+ 73 - 36
src/main/java/org/springblade/modules/baseinfo/region/controller/BaseInfoRegionController.java

@@ -23,6 +23,8 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.etl.entity.EtlAdCdEntity;
 import org.springblade.etl.service.IEtlAdCdService;
+import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.org.service.IDeptRegionService;
 import org.springblade.modules.baseinfo.region.dto.RegionInfoDTO;
 import org.springblade.modules.baseinfo.region.entity.OrgRegionInfoEntity;
 import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
@@ -31,7 +33,6 @@ import org.springblade.modules.baseinfo.region.service.IBaseInfoRegionService;
 import org.springblade.modules.baseinfo.region.service.IOrgRegionInfoService;
 import org.springblade.modules.baseinfo.region.vo.RegionInfoVO;
 import org.springblade.modules.baseinfo.region.wrapper.RegionInfoWrapper;
-import org.springblade.modules.manage.task.DataTaskManager;
 import org.springblade.modules.system.service.IDeptService;
 import org.springblade.modules.system.service.IRegionService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,7 +41,6 @@ import org.springframework.data.redis.core.ValueOperations;
 import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
-import javax.annotation.Resource;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -58,15 +58,42 @@ import java.util.List;
 @AllArgsConstructor
 @Api(value = "行政区划管理", tags = "行政区划管理")
 public class BaseInfoRegionController extends BladeController {
-	private final IBaseInfoRegionService iBaseInfoRegionService;
+	private final IBaseInfoRegionService baseInfoRegionService;
 	private final IDeptService deptService;
 	private final IRegionService regionService;
 	private final IEtlAdCdService etlAdCdService;
 	private final IOrgRegionInfoService iOrgRegionInfoService;
+	private final IDeptRegionService deptRegionService;
+
 	@Autowired
 	private RedisTemplate redisTemplate;
-	@Autowired
-	private DataTaskManager dataTaskManager;
+
+
+
+	@GetMapping("/children/list")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "分页")
+	public R<List<RegionInfoEntity>> childrenList() {
+		BladeUser user = AuthUtil.getUser();
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			LambdaQueryWrapper<RegionInfoEntity> wrapper = Wrappers.<RegionInfoEntity>query().lambda();
+			wrapper.eq(RegionInfoEntity::getIsDeleted, 0);
+			wrapper.eq(RegionInfoEntity::getParentCode, BusinessConstant.REGION_NM_ADCODE);
+			List<RegionInfoEntity> list = baseInfoRegionService.list(wrapper);
+			return R.data(list);
+		} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_ADMIN.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);
+			LambdaQueryWrapper<RegionInfoEntity> regionInfoEntityLambdaQueryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
+			regionInfoEntityLambdaQueryWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
+			regionInfoEntityLambdaQueryWrapper.eq(RegionInfoEntity::getParentCode, deptRegionEntity.getAdcd());
+			List<RegionInfoEntity> list = baseInfoRegionService.list(regionInfoEntityLambdaQueryWrapper);
+			return R.data(list);
+		}
+		return R.data(null);
+	}
 
 	@GetMapping("/lazy-tree")
 	@ApiImplicitParams({
@@ -77,12 +104,12 @@ public class BaseInfoRegionController extends BladeController {
 	public R<List<RegionTreeNodeEntity>> lazyTree(@ApiIgnore OrgRegionInfoEntity orgRegionInfoEntity) {
 		List<RegionTreeNodeEntity> nodeEntities = new LinkedList<>();
 		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
+		if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
 			LambdaQueryWrapper<OrgRegionInfoEntity> queryWrapper = Wrappers.<OrgRegionInfoEntity>query().lambda();
 			if (orgRegionInfoEntity.getAdcd() != null) {
 				queryWrapper.eq(OrgRegionInfoEntity::getParentCode, orgRegionInfoEntity.getAdcd());
 			} else {
-				queryWrapper.eq(OrgRegionInfoEntity::getParentCode, BusinessConstant.DEPT_NM_ADCODE);
+				queryWrapper.eq(OrgRegionInfoEntity::getParentCode, BusinessConstant.REGION_NM_ADCODE);
 			}
 			queryWrapper.eq(OrgRegionInfoEntity::getDeptId, Func.toLong(user.getDeptId()));
 			queryWrapper.eq(OrgRegionInfoEntity::getRegionActive, 1);
@@ -104,9 +131,9 @@ public class BaseInfoRegionController extends BladeController {
 			if (orgRegionInfoEntity.getAdcd() != null) {
 				queryWrapper.eq(RegionInfoEntity::getParentCode, orgRegionInfoEntity.getAdcd());
 			} else {
-				queryWrapper.eq(RegionInfoEntity::getParentCode, BusinessConstant.DEPT_NM_ADCODE);
+				queryWrapper.eq(RegionInfoEntity::getParentCode, BusinessConstant.REGION_NM_ADCODE);
 			}
-			List<RegionInfoEntity> list = iBaseInfoRegionService.list(queryWrapper);
+			List<RegionInfoEntity> list = baseInfoRegionService.list(queryWrapper);
 			for (RegionInfoEntity entity : list) {
 				RegionTreeNodeEntity nodeEntity = new RegionTreeNodeEntity();
 				nodeEntity.setId(entity.getAdcd());
@@ -127,18 +154,17 @@ public class BaseInfoRegionController extends BladeController {
 		ValueOperations<String, String> opsHash = redisTemplate.opsForValue();
 		List<RegionTreeNodeEntity> nodeEntities = new LinkedList<>();
 		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			String regionJson = opsHash.get("region." + user.getDeptId());
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			String regionJson = opsHash.get("region.admin");
 			if (null != regionJson) {
 				nodeEntities = JSON.parseObject(regionJson, new TypeReference<List<RegionTreeNodeEntity>>() {
 				});
 			} else {
-				LambdaQueryWrapper<OrgRegionInfoEntity> queryWrapper = Wrappers.<OrgRegionInfoEntity>query().lambda();
-				queryWrapper.eq(OrgRegionInfoEntity::getParentCode, "00");
-				queryWrapper.eq(OrgRegionInfoEntity::getDeptId, Func.toLong(user.getDeptId()));
-				queryWrapper.eq(OrgRegionInfoEntity::getRegionActive, 1);
-				List<OrgRegionInfoEntity> list = iOrgRegionInfoService.list(queryWrapper);
-				for (OrgRegionInfoEntity entity : list) {
+				LambdaQueryWrapper<RegionInfoEntity> queryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
+				queryWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
+				queryWrapper.eq(RegionInfoEntity::getParentCode, BusinessConstant.REGION_ROOT_ADCODE);
+				List<RegionInfoEntity> list = baseInfoRegionService.list(queryWrapper);
+				for (RegionInfoEntity entity : list) {
 					RegionTreeNodeEntity nodeEntity = new RegionTreeNodeEntity();
 					nodeEntity.setId(entity.getAdcd());
 					nodeEntity.setValue(entity.getAdcd());
@@ -154,16 +180,26 @@ public class BaseInfoRegionController extends BladeController {
 					}
 					nodeEntities.add(nodeEntity);
 				}
+				opsHash.set("region.admin", JSON.toJSONString(nodeEntities));
 			}
 		} else {
-			String regionJson = opsHash.get("region.admin");
+			String regionJson = opsHash.get("region." + user.getDeptId());
 			if (null != regionJson) {
 				nodeEntities = JSON.parseObject(regionJson, new TypeReference<List<RegionTreeNodeEntity>>() {
 				});
 			} else {
+				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);
 				LambdaQueryWrapper<RegionInfoEntity> queryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
-				queryWrapper.eq(RegionInfoEntity::getParentCode, "00");
-				List<RegionInfoEntity> list = iBaseInfoRegionService.list(queryWrapper);
+				queryWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
+				if (null == deptRegionEntity){
+					queryWrapper.eq(RegionInfoEntity::getAdcd, BusinessConstant.REGION_NM_ADCODE);
+				}else{
+					queryWrapper.eq(RegionInfoEntity::getAdcd, deptRegionEntity.getAdcd());
+				}
+				List<RegionInfoEntity> list = baseInfoRegionService.list(queryWrapper);
 				for (RegionInfoEntity entity : list) {
 					RegionTreeNodeEntity nodeEntity = new RegionTreeNodeEntity();
 					nodeEntity.setId(entity.getAdcd());
@@ -180,6 +216,7 @@ public class BaseInfoRegionController extends BladeController {
 					}
 					nodeEntities.add(nodeEntity);
 				}
+				opsHash.set("region." + user.getDeptId(), JSON.toJSONString(nodeEntities));
 			}
 		}
 		return R.data(nodeEntities);
@@ -220,7 +257,7 @@ public class BaseInfoRegionController extends BladeController {
 	private boolean getChildren(RegionTreeNodeEntity nodeEntity, RegionInfoEntity regionInfoEntity) {
 		LambdaQueryWrapper<RegionInfoEntity> queryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
 		queryWrapper.eq(RegionInfoEntity::getParentCode, regionInfoEntity.getAdcd());
-		List<RegionInfoEntity> list = iBaseInfoRegionService.list(queryWrapper);
+		List<RegionInfoEntity> list = baseInfoRegionService.list(queryWrapper);
 		if (null != list && list.size() > 0) {
 			List<RegionTreeNodeEntity> nodeEntities = new LinkedList<>();
 			for (RegionInfoEntity entity : list) {
@@ -253,7 +290,7 @@ public class BaseInfoRegionController extends BladeController {
 	public R<RegionInfoVO> detail(RegionInfoDTO regionInfoDTO) {
 		regionInfoDTO.setAdcd(regionInfoDTO.getCode());
 		regionInfoDTO.setIsDeleted(0);
-		RegionInfoEntity detail = iBaseInfoRegionService.getOne(Condition.getQueryWrapper(regionInfoDTO));
+		RegionInfoEntity detail = baseInfoRegionService.getOne(Condition.getQueryWrapper(regionInfoDTO));
 		return R.data(RegionInfoWrapper.build().entityVO(detail));
 	}
 
@@ -267,14 +304,14 @@ public class BaseInfoRegionController extends BladeController {
 		LambdaQueryWrapper<RegionInfoEntity> queryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
 		queryWrapper.eq(RegionInfoEntity::getAdcd, regionInfoDTO.getCode());
 		queryWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
-		RegionInfoEntity entity = iBaseInfoRegionService.getOne(queryWrapper);
+		RegionInfoEntity entity = baseInfoRegionService.getOne(queryWrapper);
 		boolean status = false;
 		if (entity != null) {
 			entity.setAdcd(regionInfoDTO.getCode());
 			entity.setAdnm(regionInfoDTO.getName());
 			entity.setStatus(1);
 			entity.setIsDeleted(0);
-			status = iBaseInfoRegionService.updateById(entity);
+			status = baseInfoRegionService.updateById(entity);
 		} else {
 			entity = new RegionInfoEntity();
 			entity.setAdcd(regionInfoDTO.getCode());
@@ -283,9 +320,9 @@ public class BaseInfoRegionController extends BladeController {
 			entity.setStatus(1);
 			entity.setIsDeleted(0);
 			entity.setAncestors(regionInfoDTO.getAncestors() + "," + regionInfoDTO.getParentCode());
-			status = iBaseInfoRegionService.save(entity);
+			status = baseInfoRegionService.save(entity);
 		}
-		dataTaskManager.deptUpdateTask();
+//		dataTaskManager.deptUpdateTask();
 		return R.status(status);
 	}
 
@@ -298,8 +335,8 @@ public class BaseInfoRegionController extends BladeController {
 	public R remove(@ApiParam(value = "主键集合") @RequestParam String id) {
 		LambdaUpdateWrapper<RegionInfoEntity> queryWrapper = Wrappers.<RegionInfoEntity>update().lambda();
 		queryWrapper.eq(RegionInfoEntity::getAdcd, id);
-		boolean temp = iBaseInfoRegionService.remove(queryWrapper);
-		dataTaskManager.deptUpdateTask();
+		boolean temp = baseInfoRegionService.remove(queryWrapper);
+//		dataTaskManager.deptUpdateTask();
 		return R.status(temp);
 	}
 
@@ -318,7 +355,7 @@ public class BaseInfoRegionController extends BladeController {
 			LambdaUpdateWrapper<RegionInfoEntity> updateWrapper = Wrappers.<RegionInfoEntity>update().lambda();
 			updateWrapper.ne(RegionInfoEntity::getAdcd, "00");
 			updateWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
-			iBaseInfoRegionService.remove(updateWrapper);
+			baseInfoRegionService.remove(updateWrapper);
 		}
 		List<EtlAdCdEntity> list = etlAdCdService.selectList("0");
 		if (null != list && list.size() == 1) {
@@ -326,10 +363,10 @@ public class BaseInfoRegionController extends BladeController {
 			LambdaQueryWrapper<RegionInfoEntity> requestWrapper = Wrappers.<RegionInfoEntity>query().lambda();
 			requestWrapper.eq(RegionInfoEntity::getAdcd, code);
 			requestWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
-			RegionInfoEntity regionInfoEntity = iBaseInfoRegionService.getOne(requestWrapper);
+			RegionInfoEntity regionInfoEntity = baseInfoRegionService.getOne(requestWrapper);
 			if (null != regionInfoEntity) {
 				regionInfoEntity.setAdnm(list.get(0).getAdnm());
-				iBaseInfoRegionService.updateById(regionInfoEntity);
+				baseInfoRegionService.updateById(regionInfoEntity);
 			} else {
 				regionInfoEntity = new RegionInfoEntity();
 				regionInfoEntity.setAdcd(code);
@@ -338,11 +375,11 @@ public class BaseInfoRegionController extends BladeController {
 				regionInfoEntity.setAncestors("00");
 				regionInfoEntity.setStatus(1);
 				regionInfoEntity.setIsDeleted(0);
-				iBaseInfoRegionService.save(regionInfoEntity);
+				baseInfoRegionService.save(regionInfoEntity);
 			}
 			importAdcd(regionInfoDTO.getRegionLevel(), 2, code, "00," + code);
 		}
-		dataTaskManager.deptUpdateTask();
+//		dataTaskManager.deptUpdateTask();
 		return R.status(true);
 	}
 
@@ -356,10 +393,10 @@ public class BaseInfoRegionController extends BladeController {
 				LambdaQueryWrapper<RegionInfoEntity> requestWrapper = Wrappers.<RegionInfoEntity>query().lambda();
 				requestWrapper.eq(RegionInfoEntity::getAdcd, adCdEntity.getAdcd());
 				requestWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
-				RegionInfoEntity regionInfoEntity = iBaseInfoRegionService.getOne(requestWrapper);
+				RegionInfoEntity regionInfoEntity = baseInfoRegionService.getOne(requestWrapper);
 				if (null != regionInfoEntity) {
 					regionInfoEntity.setAdnm(adCdEntity.getAdnm());
-					iBaseInfoRegionService.updateById(regionInfoEntity);
+					baseInfoRegionService.updateById(regionInfoEntity);
 				} else {
 					regionInfoEntity = new RegionInfoEntity();
 					regionInfoEntity.setAdcd(adCdEntity.getAdcd());
@@ -368,7 +405,7 @@ public class BaseInfoRegionController extends BladeController {
 					regionInfoEntity.setAncestors(ancestors);
 					regionInfoEntity.setStatus(1);
 					regionInfoEntity.setIsDeleted(0);
-					iBaseInfoRegionService.save(regionInfoEntity);
+					baseInfoRegionService.save(regionInfoEntity);
 				}
 				importAdcd(level, currLevel + 1, adCdEntity.getAdcd(), ancestors + "," + adCdEntity.getAdcd());
 			}

+ 0 - 7
src/main/java/org/springblade/modules/baseinfo/region/mapper/OrgRegionInfoMapper.xml

@@ -4,13 +4,6 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="orgRegionResultMap" type="org.springblade.modules.baseinfo.region.entity.OrgRegionInfoEntity">
-        <result column="id" property="id"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
 
         <result column="dept_id" property="deptId"/>
         <result column="adcd" property="adcd"/>

+ 0 - 9
src/main/java/org/springblade/modules/baseinfo/region/mapper/RegionInfoMapper.xml

@@ -4,20 +4,11 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="baseinfoRegionResultMap" type="org.springblade.modules.baseinfo.region.entity.RegionInfoEntity">
-        <result column="id" property="id"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
-
         <result column="adcd" property="adcd"/>
         <result column="adnm" property="adnm"/>
         <result column="parent_code" property="parentCode"/>
         <result column="ancestors" property="ancestors"/>
         <result column="add_type" property="addType"/>
-
     </resultMap>
 
 </mapper>

+ 337 - 0
src/main/java/org/springblade/modules/baseinfo/rtu/controller/RtuBaseInfoController.java

@@ -0,0 +1,337 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/22
+ */
+package org.springblade.modules.baseinfo.rtu.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.*;
+import lombok.AllArgsConstructor;
+import org.springblade.common.cache.DictBizCache;
+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.RegionInfoEntity;
+import org.springblade.modules.baseinfo.region.service.IBaseInfoRegionService;
+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.springblade.modules.baseinfo.rtu.vo.RtuInfoVO;
+import org.springblade.modules.baseinfo.rtu.vo.RtuStatisticsInfoVO;
+import org.springblade.modules.baseinfo.rtu.wrapper.RtuInfoWrapper;
+
+import org.springblade.modules.business.data.entity.RtuDataRainEntity;
+import org.springblade.modules.business.data.entity.RtuDataRiverEntity;
+import org.springblade.modules.business.data.entity.RtuDataRsvrEntity;
+import org.springblade.modules.business.data.service.IRtuDataRainService;
+import org.springblade.modules.business.data.service.IRtuDataRiverService;
+import org.springblade.modules.business.data.service.IRtuDataRsvrService;
+import org.springblade.modules.business.rtumanage.entity.RtuStatusEntity;
+import org.springblade.modules.business.rtumanage.service.IRtuManageService;
+import org.springblade.modules.business.warning.dto.RtuWarningInfoDTO;
+import org.springblade.modules.business.warning.service.IRtuWarningService;
+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 org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.LinkedList;
+import java.util.List;
+
+
+/***
+ * Date:2022/8/22
+ * Title: 测站信息管理接口
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@RestController
+@RequestMapping("galaxy-business/rtu/base")
+@AllArgsConstructor
+@Api(value = "测站设备基础管理", tags = "测站设备基础管理")
+public class RtuBaseInfoController extends BladeController {
+	private final IRtuBaseInfoService rtuBaseInfoService;
+	private final IDeptService deptService;
+	private final IRtuWarningService rtuWarningService;
+	private final IRtuManageService rtuManageService;
+	private final IRtuDataRainService rtuDataRainService;
+	private final IRtuDataRiverService rtuDataRiverService;
+	private final IRtuDataRsvrService rtuDataRsvrService;
+	private final IDictBizService dictBizService;
+	private final IDeptRegionService deptRegionService;
+	private final IBaseInfoRegionService baseInfoRegionService;
+
+	/**
+	 * 分页
+	 */
+	@GetMapping("/list")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string"),
+		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
+	})
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "不分页")
+	public R<List<RtuInfoVO>> list(@ApiIgnore RtuInfoDTO rtuInfoDTO) {
+		if (rtuInfoDTO.getRtuKind() != null && "1".equals(rtuInfoDTO.getRtuKind())) {
+			rtuInfoDTO.setIsRain(1);
+		} else if (rtuInfoDTO.getRtuKind() != null && "2".equals(rtuInfoDTO.getRtuKind())) {
+			rtuInfoDTO.setIsRiver(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())) {
+			rtuInfoDTO.setIsVideo(1);
+		}
+		LambdaQueryWrapper<RtuInfoEntity> wrapper = Wrappers.<RtuInfoEntity>query().lambda();
+		wrapper.eq(RtuInfoEntity::getIsDeleted, 0);
+		if (null != rtuInfoDTO.getRtuName()) {
+			wrapper.like(RtuInfoEntity::getRtuName, rtuInfoDTO.getRtuName());
+		}
+		if (null != rtuInfoDTO.getRtuCode()) {
+			wrapper.like(RtuInfoEntity::getRtuCode, rtuInfoDTO.getRtuCode());
+		}
+		wrapper.orderByAsc(RtuInfoEntity::getRtuCode);
+		List<RtuInfoEntity> pages = rtuBaseInfoService.list(wrapper);
+		return R.data(RtuInfoWrapper.build().listVO(pages));
+	}
+
+	/**
+	 * 多表联合查询自定义分页
+	 */
+	@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 = 3)
+	@ApiOperation(value = "分页")
+	public R<IPage<RtuInfoVO>> page(@ApiIgnore RtuInfoDTO rtuInfoDTO, Query query) {
+		BladeUser user = AuthUtil.getUser();
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			if (rtuInfoDTO.getAdCode() == null) {
+				rtuInfoDTO.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 (rtuInfoDTO.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);
+				rtuInfoDTO.setAdCode(deptRegionEntity.getAdcd());
+			}
+		}
+		if (rtuInfoDTO.getRtuKind() != null && "1".equals(rtuInfoDTO.getRtuKind())) {
+			rtuInfoDTO.setIsRain(1);
+		} else if (rtuInfoDTO.getRtuKind() != null && "2".equals(rtuInfoDTO.getRtuKind())) {
+			rtuInfoDTO.setIsRiver(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())) {
+			rtuInfoDTO.setIsVideo(1);
+		}
+		IPage<RtuInfoVO> pages = rtuBaseInfoService.selectPage(Condition.getPage(query), rtuInfoDTO);
+		List<RtuInfoVO> list = pages.getRecords();
+		for (RtuInfoVO vo : list) {
+			RtuInfoWrapper.build().entityVO(vo);
+		}
+		return R.data(pages);
+	}
+
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入rtuInfoEntity")
+	public R<RtuInfoVO> detail(RtuInfoEntity rtuInfoEntity) {
+		RtuInfoEntity detail = rtuBaseInfoService.getOne(Condition.getQueryWrapper(rtuInfoEntity));
+		RtuInfoVO rtuInfoVO = RtuInfoWrapper.build().entityVO(detail);
+		Dept dept = deptService.getById(detail.getOrgId());
+		if (null != dept) {
+			rtuInfoVO.setOrgName(dept.getDeptName());
+		}
+		LambdaQueryWrapper<RtuStatusEntity> statusWwrapper = Wrappers.<RtuStatusEntity>query().lambda();
+		statusWwrapper.eq(RtuStatusEntity::getIsDeleted,0);
+		statusWwrapper.eq(RtuStatusEntity::getRtuCode, detail.getRtuCode());
+		RtuStatusEntity statusEntity = rtuManageService.getOne(statusWwrapper);
+		if (null != statusEntity) {
+			rtuInfoVO.setLastUpTime(statusEntity.getLastUpTime());
+		}
+		if (detail.getIsRain() != null && detail.getIsRain() == 1) {
+			LambdaQueryWrapper<RtuDataRainEntity> rainwrapper = Wrappers.<RtuDataRainEntity>query().lambda();
+			rainwrapper.eq(RtuDataRainEntity::getRtuCode, detail.getRtuCode());
+			rainwrapper.eq(RtuDataRainEntity::getIsDeleted, 0L);
+			RtuDataRainEntity rainEntity = rtuDataRainService.getOne(rainwrapper);
+			if (null != rainEntity) {
+				rtuInfoVO.setDrp(rainEntity.getDrp());
+			}
+		}
+		if (detail.getIsRiver() != null && detail.getIsRiver() == 1) {
+			LambdaQueryWrapper<RtuDataRiverEntity> riverwrapper = Wrappers.<RtuDataRiverEntity>query().lambda();
+			riverwrapper.eq(RtuDataRiverEntity::getRtuCode, detail.getRtuCode());
+			riverwrapper.eq(RtuDataRiverEntity::getIsDeleted, 0L);
+			RtuDataRiverEntity riverEntity = rtuDataRiverService.getOne(riverwrapper);
+			if (null != riverEntity) {
+				rtuInfoVO.setZ(riverEntity.getZ());
+			}
+		}
+		if (detail.getIsRes() != null && detail.getIsRes() == 1) {
+			LambdaQueryWrapper<RtuDataRsvrEntity> rsvrWrapper = Wrappers.<RtuDataRsvrEntity>query().lambda();
+			rsvrWrapper.eq(RtuDataRsvrEntity::getRtuCode, detail.getRtuCode());
+			rsvrWrapper.eq(RtuDataRsvrEntity::getIsDeleted, 0L);
+			RtuDataRsvrEntity rsvrEntity = rtuDataRsvrService.getOne(rsvrWrapper);
+			if (null != rsvrEntity) {
+				rtuInfoVO.setRz(rsvrEntity.getRz());
+			}
+		}
+		if (detail.getIsGround() != null && detail.getIsGround() == 1) {
+
+		}
+		if (null != detail.getWaterSensorType()) {
+			DictBiz dictBiz = dictBizService.getById(detail.getWaterSensorType());
+			if (null != dictBiz) {
+				rtuInfoVO.setWaterSensorTypeText(dictBiz.getDictValue());
+			}
+		}
+		if (null != detail.getGroundSensorType()) {
+			DictBiz dictBiz = dictBizService.getById(detail.getGroundSensorType());
+			if (null != dictBiz) {
+				rtuInfoVO.setGroundSensorTypeText(dictBiz.getDictValue());
+			}
+		}
+		if (null != detail.getSatelliteModel()) {
+			DictBiz dictBiz = dictBizService.getById(detail.getSatelliteModel());
+			if (null != dictBiz) {
+				rtuInfoVO.setSatelliteModelText(dictBiz.getDictValue());
+			}
+		}
+		return R.data(rtuInfoVO);
+	}
+
+
+	/**
+	 * 新增
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入rtuInfoEntity")
+	public R save(@RequestBody RtuInfoEntity rtuInfoEntity) {
+		LambdaQueryWrapper<RtuInfoEntity> rtuwrapper = Wrappers.<RtuInfoEntity>query().lambda();
+		rtuwrapper.eq(RtuInfoEntity::getRtuCode, rtuInfoEntity.getRtuCode());
+		rtuwrapper.eq(RtuInfoEntity::getIsDeleted, 0L);
+		RtuInfoEntity entity = rtuBaseInfoService.getOne(rtuwrapper);
+		if (null != entity) {
+			return R.fail("测站编码已存在,请确认!");
+		}
+		LambdaQueryWrapper<RegionInfoEntity> wrapper = Wrappers.<RegionInfoEntity>query().lambda();
+		wrapper.eq(RegionInfoEntity::getAdcd, rtuInfoEntity.getAdCode());
+		wrapper.eq(RegionInfoEntity::getIsDeleted, 0L);
+		RegionInfoEntity regionInfoEntity = baseInfoRegionService.getOne(wrapper);
+		rtuInfoEntity.setAdDist(regionInfoEntity.getAdnm());
+		LambdaQueryWrapper<RegionInfoEntity> wrapper2 = Wrappers.<RegionInfoEntity>query().lambda();
+		wrapper2.eq(RegionInfoEntity::getAdcd, regionInfoEntity.getParentCode());
+		wrapper2.eq(RegionInfoEntity::getIsDeleted, 0L);
+		regionInfoEntity = baseInfoRegionService.getOne(wrapper2);
+		rtuInfoEntity.setAdCity(regionInfoEntity.getAdnm());
+		return R.status(rtuBaseInfoService.save(rtuInfoEntity));
+	}
+
+	/**
+	 * 修改
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入rtuInfoEntity")
+	public R update(@RequestBody RtuInfoEntity rtuInfoEntity) {
+		return R.status(rtuBaseInfoService.updateById(rtuInfoEntity));
+	}
+
+	/**
+	 * 新增或修改
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入rtuInfoEntity")
+	public R submit(@RequestBody RtuInfoEntity rtuInfoEntity) {
+
+		return R.status(rtuBaseInfoService.saveOrUpdate(rtuInfoEntity));
+	}
+
+	/**
+	 * 删除
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入ID数组")
+	public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
+		boolean temp = rtuBaseInfoService.deleteLogic(Func.toLongList(ids));
+		return R.status(temp);
+	}
+
+	@GetMapping("/dict/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页")
+	public R<List<DictBiz>> dictList(@RequestParam String code) {
+		List<DictBiz> dicts = DictBizCache.getList(code);
+
+		return R.data(dicts);
+	}
+
+
+	/**
+	 * 按机构统计测站信息
+	 *
+	 * @return
+	 */
+	@GetMapping("/statistics")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页")
+	public R<List<RtuStatisticsInfoVO>> rtuStatistics() {
+		List<RtuStatisticsInfoVO> list = new LinkedList<>();
+		BladeUser user = AuthUtil.getUser();
+		List<Dept> root = this.deptService.getDeptChild(Func.toLong(user.getDeptId()));
+
+		for (Dept dept : root) {
+			RtuStatisticsInfoVO rtuStatisticsInfoVO = new RtuStatisticsInfoVO();
+			rtuStatisticsInfoVO.setId(dept.getId());
+			rtuStatisticsInfoVO.setOrgName(dept.getDeptName());
+			LambdaQueryWrapper<RtuInfoEntity> wrapper = Wrappers.<RtuInfoEntity>query().lambda();
+			wrapper.eq(RtuInfoEntity::getOrgId, dept.getId());
+			wrapper.eq(RtuInfoEntity::getIsDeleted, 0);
+			Long rtus = rtuBaseInfoService.count(wrapper);
+			rtuStatisticsInfoVO.setRtuCount(rtus);
+
+			RtuWarningInfoDTO rtuWarningInfoDTO = new RtuWarningInfoDTO();
+			rtuWarningInfoDTO.setOrgId(dept.getId());
+			Long warningRtus = rtuWarningService.warningRtuCount(rtuWarningInfoDTO);
+			rtuStatisticsInfoVO.setWarningRtuCount(warningRtus);
+
+			list.add(rtuStatisticsInfoVO);
+		}
+
+		return R.data(list);
+	}
+
+}

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

@@ -0,0 +1,44 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/9/7
+ */
+package org.springblade.modules.baseinfo.rtu.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
+
+
+/***
+ * Date:2022/9/7
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class RtuInfoDTO extends RtuInfoEntity {
+	/**
+	 * 项目名称
+	 */
+	@ApiModelProperty(value = "项目名称")
+	private String projectName;
+
+	@ApiModelProperty(value = "行政区划编码")
+	private String adCode;
+
+	@ApiModelProperty(value = "行政区划名称")
+	private String adName;
+
+	@ApiModelProperty(value = "测站类型")
+	private String rtuKind;
+
+	@ApiModelProperty(value = "异常类型")
+	private Integer warnKind;
+
+}

+ 358 - 0
src/main/java/org/springblade/modules/baseinfo/rtu/entity/RtuInfoEntity.java

@@ -0,0 +1,358 @@
+/**
+ * Copyright
+ * All right reserved.
+ * 项目名称:
+ * 创建日期:2022/3/9
+ */
+package org.springblade.modules.baseinfo.rtu.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;
+
+/**
+ * 实体类
+ *
+ * @author swp
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("rtu_info")
+public class RtuInfoEntity extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 租户ID
+	 */
+	@ApiModelProperty("租户ID")
+	private String tenantId;
+
+	/**
+	 * 测站编码
+	 */
+	@ApiModelProperty(value = "测站编码")
+	private String rtuCode;
+
+	/**
+	 * 测站名称
+	 */
+	@ApiModelProperty(value = "测站名称")
+	private String rtuName;
+
+	/**
+	 * 所属盟市
+	 */
+	@ApiModelProperty(value = "所属盟市")
+	private String adCity;
+
+	/**
+	 * 所属盟县旗区
+	 */
+	@ApiModelProperty(value = "所属盟县旗区")
+	private String adDist;
+
+
+	/**
+	 * 经度
+	 */
+	@ApiModelProperty(value = "经度")
+	private String lng;
+
+	/**
+	 * 纬度
+	 */
+	@ApiModelProperty(value = "纬度")
+	private String lat;
+
+	/**
+	 * 运维单位
+	 */
+	@ApiModelProperty(value = "运维单位")
+	private String manageCompany;
+
+
+	/**
+	 * 测站位置说明
+	 */
+	@ApiModelProperty(value = "测站位置说明")
+	private String locationDesc;
+
+	/**
+	 * 测站类型
+	 */
+	@ApiModelProperty(value = "测站类型")
+	private String rtuKinds;
+
+	/**
+	 * 所属机构ID
+	 */
+	@ApiModelProperty(value = "所属机构")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Long orgId;
+
+	/**
+	 * 行政区划编码
+	 */
+	@ApiModelProperty(value = "行政区划编码")
+	private String adCode;
+
+	/**
+	 * 行政区划名称
+	 */
+	@ApiModelProperty(value = "行政区划名称")
+	private String adName;
+
+	/**
+	 * 所属项目ID
+	 */
+	@ApiModelProperty(value = "所属项目")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Long projectId;
+
+
+	/**
+	 * 是否雨量站
+	 */
+	@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 isVideo;
+
+	/**
+	 * 是否北斗通信
+	 */
+	@ApiModelProperty(value = "是否北斗通信")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer isSatellite;
+
+	/**
+	 * RTU品牌
+	 */
+	@ApiModelProperty(value = "RTU品牌")
+	private String rtuBrand;
+
+	/**
+	 * RTU型号
+	 */
+	@ApiModelProperty(value = "RTU型号")
+	private String rtuModel;
+
+	/**
+	 * RTU更换时间
+	 */
+	@ApiModelProperty(value = "RTU更换时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd",timezone = "GMT+8"
+	)
+	private Date rtuReplaceDate;
+
+
+	/**
+	 * RTU发往省
+	 */
+	@ApiModelProperty(value = "RTU发往省")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer datagramToSheng;
+
+	/**
+	 * RTU发往市
+	 */
+	@ApiModelProperty(value = "RTU发往市")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer datagramToShi;
+
+
+	/**
+	 * RTU发往县
+	 */
+	@ApiModelProperty(value = "RTU发往县")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer datagramToQu;
+
+	/**
+	 * 雨量传感器品牌
+	 */
+	@ApiModelProperty(value = "雨量传感器品牌")
+	private String rainSensorBrand;
+
+	/**
+	 * 雨量传感器型号
+	 */
+	@ApiModelProperty(value = "雨量传感器型号")
+	private String rainSensorModel;
+
+	/**
+	 * 雨量传感器更换时间
+	 */
+	@ApiModelProperty(value = "雨量传感器更换时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd",timezone = "GMT+8"
+	)
+	private Date rainSensorReplaceDate;
+
+	/**
+	 * 水位计传感器品牌
+	 */
+	@ApiModelProperty(value = "水位计传感器品牌")
+	private String waterSensorBrand;
+
+	/**
+	 * 水位计传感器型号
+	 */
+	@ApiModelProperty(value = "水位计传感器型号")
+	private String waterSensorModel;
+
+	/**
+	 * 水位计传感器类型
+	 */
+	@ApiModelProperty(value = "水位计传感器类型")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Long waterSensorType;
+
+	/**
+	 * 水位计传感器更换时间
+	 */
+	@ApiModelProperty(value = "水位计传感器更换时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd",timezone = "GMT+8"
+	)
+	private Date waterSensorReplaceDate;
+
+	/**
+	 * 墒情传感器品牌
+	 */
+	@ApiModelProperty(value = "墒情传感器品牌")
+	private String groundSensorBrand;
+
+	/**
+	 * 墒情传感器型号
+	 */
+	@ApiModelProperty(value = "墒情传感器型号")
+	private String groundSensorModel;
+
+	/**
+	 * 墒情传感器类型
+	 */
+	@ApiModelProperty(value = "墒情传感器类型")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Long groundSensorType;
+
+	/**
+	 * 墒情传感器更换时间
+	 */
+	@ApiModelProperty(value = "墒情传感器更换时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd",timezone = "GMT+8"
+	)
+	private Date groundSensorReplaceDate;
+
+	/**
+	 * 供电系统电池型号
+	 */
+	@ApiModelProperty(value = "供电系统电池型号")
+	private String batteryModel;
+
+	/**
+	 * 供电系统电池更换时间
+	 */
+	@ApiModelProperty(value = "供电系统电池更换时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd",timezone = "GMT+8"
+	)
+	private Date batteryReplaceDate;
+
+	/**
+	 * 太阳能板型号
+	 */
+	@ApiModelProperty(value = "太阳能板型号")
+	private String sunPowerModel;
+
+	/**
+	 * SIN卡号
+	 */
+	@ApiModelProperty(value = "SIN卡号")
+	private String networkSimId;
+
+	/**
+	 * 开卡单位
+	 */
+	@ApiModelProperty(value = "开卡单位")
+	private String networkPayer;
+
+	/**
+	 * 缴费截止时间
+	 */
+	@ApiModelProperty(value = "缴费截止时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd",timezone = "GMT+8"
+	)
+	private Date networkPayEndDate;
+
+
+	/**
+	 * 北斗通讯类型
+	 */
+	@ApiModelProperty(value = "北斗通讯类型")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Long satelliteModel;
+
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remark;
+}

+ 40 - 0
src/main/java/org/springblade/modules/baseinfo/rtu/mapper/RtuInfoMapper.java

@@ -0,0 +1,40 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/22
+ */
+package org.springblade.modules.baseinfo.rtu.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.baseinfo.rtu.dto.RtuInfoDTO;
+import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
+import org.springblade.modules.baseinfo.rtu.vo.RtuInfoVO;
+
+import java.util.List;
+
+/***
+ * Date:2022/8/22
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface RtuInfoMapper extends BaseMapper<RtuInfoEntity> {
+	/**
+	 * 自定义分页
+	 *
+	 * @param page 分页
+	 * @return List<RtuInfoVO>
+	 */
+	List<RtuInfoVO> selectPage(IPage page, @Param("rtuInfoDTO") RtuInfoDTO rtuInfoDTO);
+
+	Long rtuCount(@Param("adCode") String adCode);
+
+	List<RtuInfoEntity> rtuList(@Param("rtuInfoDTO") RtuInfoDTO rtuInfoDTO);
+
+	List<RtuInfoVO> getAdcd(@Param("rtuCode") String rtuCode);
+}

+ 98 - 76
src/main/java/org/springblade/modules/business/equipment/inspection/plan/mapper/EquipmentInspectionPlanRtuMapper.xml → src/main/java/org/springblade/modules/baseinfo/rtu/mapper/RtuInfoMapper.xml

@@ -1,34 +1,30 @@
 <?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.equipment.inspection.plan.mapper.EquipmentInspectionPlanRtuMapper">
-
-
+<mapper namespace="org.springblade.modules.baseinfo.rtu.mapper.RtuInfoMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="rtuVOResultMap" type="org.springblade.modules.business.equipment.inspection.plan.vo.EquipmentInspectionRtuVO">
-        <result column="id" property="id"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
+    <resultMap id="rtuInfoResultMap" type="org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity">
+
         <result column="rtu_code" property="rtuCode"/>
         <result column="rtu_name" property="rtuName"/>
         <result column="lng" property="lng"/>
         <result column="lat" property="lat"/>
         <result column="org_id" property="orgId"/>
-        <result column="project_id" property="projectId"/>
-        <result column="manageCompany" property="manage_company"/>
 
+        <result column="ad_code" property="adCode"/>
+        <result column="ad_name" property="adName"/>
+
+        <result column="project_id" property="projectId"/>
+        <result column="manage_company" property="manageCompany"/>
 
         <result column="rtu_kinds" property="rtuKinds"/>
         <result column="remark" property="remark"/>
         <result column="location_desc" property="locationDesc"/>
-        <result column="remark" property="remark"/>
+
         <result column="is_rain" property="isRain"/>
         <result column="is_river" property="isRiver"/>
         <result column="is_res" property="isRes"/>
+        <result column="is_video" property="isVideo"/>
 
         <result column="is_ground" property="isGround"/>
         <result column="is_satellite" property="isSatellite"/>
@@ -45,7 +41,7 @@
         <result column="rain_sensor_replace_date" property="rainSensorReplaceDate"/>
 
         <result column="water_sensor_type" property="waterSensorType"/>
-        <result column="water_sensor_brand" property="waterSensorModel"/>
+        <result column="water_sensor_brand" property="waterSensorBrand"/>
         <result column="water_sensor_model" property="waterSensorModel"/>
         <result column="water_sensor_replace_date" property="waterSensorReplaceDate"/>
 
@@ -64,37 +60,35 @@
 
         <result column="satellite_model" property="satelliteModel"/>
 
-        <result column="project_name" property="projectName"/>
-        <result column="org_name" property="orgName"/>
-        <result column="reportTime" property="reportTime"/>
+        <result column="ad_city" property="adCity"/>
+        <result column="ad_dist" property="adDist"/>
 
     </resultMap>
 
-    <resultMap id="equipmentInspectionVOResultMap" type="org.springblade.modules.business.equipment.inspection.plan.vo.EquipmentInspectionRtuVO">
-        <result column="id" property="id"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
+    <!-- 通用查询映射结果 -->
+    <resultMap id="rtuInfoVOResultMap" type="org.springblade.modules.baseinfo.rtu.vo.RtuInfoVO">
+
         <result column="rtu_code" property="rtuCode"/>
         <result column="rtu_name" property="rtuName"/>
         <result column="lng" property="lng"/>
         <result column="lat" property="lat"/>
         <result column="org_id" property="orgId"/>
-        <result column="project_id" property="projectId"/>
-        <result column="manageCompany" property="manage_company"/>
 
+        <result column="ad_code" property="adCode"/>
+        <result column="ad_name" property="adName"/>
+
+        <result column="project_id" property="projectId"/>
+        <result column="manage_company" property="manageCompany"/>
 
         <result column="rtu_kinds" property="rtuKinds"/>
         <result column="remark" property="remark"/>
         <result column="location_desc" property="locationDesc"/>
         <result column="remark" property="remark"/>
+
         <result column="is_rain" property="isRain"/>
         <result column="is_river" property="isRiver"/>
         <result column="is_res" property="isRes"/>
-
+        <result column="is_video" property="isVideo"/>
         <result column="is_ground" property="isGround"/>
         <result column="is_satellite" property="isSatellite"/>
 
@@ -110,7 +104,7 @@
         <result column="rain_sensor_replace_date" property="rainSensorReplaceDate"/>
 
         <result column="water_sensor_type" property="waterSensorType"/>
-        <result column="water_sensor_brand" property="waterSensorModel"/>
+        <result column="water_sensor_brand" property="waterSensorBrand"/>
         <result column="water_sensor_model" property="waterSensorModel"/>
         <result column="water_sensor_replace_date" property="waterSensorReplaceDate"/>
 
@@ -128,77 +122,105 @@
         <result column="network_pay_end_date" property="networkPayEndDate"/>
 
         <result column="satellite_model" property="satelliteModel"/>
+        <result column="ad_city" property="adCity"/>
+        <result column="ad_dist" property="adDist"/>
 
-
-        <result column="org_name" property="orgName"/>
-
-        <result column="run_status_id" property="runStatus"/>
-
+        <result column="adcd" property="adcd"/>
+        <result column="adnm" property="adnm"/>
     </resultMap>
 
 
-    <select id="selectPage" resultMap="rtuVOResultMap">
+    <select id="selectPage" resultMap="rtuInfoVOResultMap">
         SELECT
-        n.*,
-        p.project_name ,d.dept_name AS org_name,r.create_time AS  reportTime,s.run_status_id
+        n.*
         FROM
         rtu_info n
-        LEFT JOIN project_info p ON n.project_id = p.id
-        LEFT JOIN blade_dept d ON n.org_id = d.id
-        LEFT JOIN equipment_inspection_report_info r ON r.rtu_code= n.rtu_code
-        LEFT JOIN rtu_status s ON s.rtu_code = n.rtu_code
+        LEFT JOIN data_ad_cd_b a ON a.adcd = n.ad_code and a.is_deleted=0
         WHERE
         n.is_deleted = 0
-        <if test="rtuDTO.rtu_code!=null">
-            and n.rtu_code = #{rtuDTO.rtu_code}
+        <if test="rtuInfoDTO.rtuName!=null">
+            and n.rtu_name like concat(concat('%', #{rtuInfoDTO.rtuName}), '%')
+        </if>
+        <if test="rtuInfoDTO.rtuCode!=null">
+            and n.rtu_code like concat(concat('%', #{rtuInfoDTO.rtuCode}), '%')
+        </if>
+        <if test="rtuInfoDTO.isRain!=null">
+            and n.is_rain = #{rtuInfoDTO.isRain}
+        </if>
+        <if test="rtuInfoDTO.isRiver!=null">
+            and n.is_river = #{rtuInfoDTO.isRiver}
         </if>
-        <if test="rtuDTO.planId!=null">
-            and r.plan_id = #{rtuDTO.planId}
+        <if test="rtuInfoDTO.isRes!=null">
+            and n.is_res = #{rtuInfoDTO.isRes}
         </if>
-        <if test="rtuDTO.orgId!=null">
-            and n.org_id = #{rtuDTO.orgId}
+        <if test="rtuInfoDTO.isGround!=null">
+            and n.is_ground = #{rtuInfoDTO.isGround}
         </if>
-        <if test="rtuDTO.projectId!=null">
-            and n.project_id = #{rtuDTO.projectId}
+        <if test="rtuInfoDTO.isVideo!=null">
+            and n.is_video = #{rtuInfoDTO.isVideo}
         </if>
-        <if test="rtuDTO.planId!=null">
-            and r.plan_id = #{rtuDTO.planId}
+        <if test="rtuInfoDTO.adCode!=null">
+            and (n.ad_code =#{rtuInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE ancestors
+            like concat(concat('%', #{rtuInfoDTO.adCode}), '%')))
         </if>
-        order  by n.org_id,n.project_id,n.rtu_code,r.create_time
+        order by n.rtu_code
     </select>
 
-    <select id="myPage" resultMap="equipmentInspectionVOResultMap">
+    <select id="rtuCount" resultType="java.lang.Long">
         SELECT
-        n.*,
-         d.dept_name AS org_name,s.run_status_id
+        count(n.rtu_code)
         FROM
         rtu_info n
-        LEFT JOIN  blade_dept d ON n.org_id = d.id
-        LEFT JOIN data_mv_att_st_base p ON n.rtu_code = p.st_code and p.is_deleted=0
-        LEFT JOIN data_ad_cd_b a ON a.adcd = p.ad_code and a.is_deleted=0
-        LEFT JOIN equipment_inspection_report_info r ON r.rtu_code= n.rtu_code
-        LEFT JOIN rtu_status s ON s.rtu_code = n.rtu_code
+        LEFT JOIN data_ad_cd_b a ON a.adcd = n.ad_code and a.is_deleted=0
         WHERE
         n.is_deleted = 0
-        <if test="rtuDTO.orgId!=null">
-            and n.org_id = #{rtuDTO.orgId}
+        <if test="adCode!=null">
+            and (n.ad_code =#{adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE ancestors like
+            concat(concat('%', #{adCode}), '%')))
         </if>
-        <if test="rtuDTO.rtuCode!=null">
-            and n.rtu_code like concat(concat('%', #{rtuDTO.rtuCode}), '%')
+    </select>
+
+    <select id="getAdcd" resultMap="rtuInfoVOResultMap">
+        SELECT
+        n.*,a.adcd ,a.adnm
+        FROM
+        rtu_info n
+        LEFT JOIN  data_mv_att_st_base b on b.st_code = n.rtu_code
+        LEFT JOIN data_ad_cd_b a ON a.adcd = b.ad_code and a.is_deleted=0
+        WHERE
+        n.is_deleted = 0
+        <if test="rtuCode!=null">
+            and n.rtu_code = #{rtuCode}
+        </if>
+    </select>
+
+    <select id="rtuList" resultMap="rtuInfoResultMap">
+        SELECT
+        n.*
+        FROM
+        rtu_info n
+        LEFT JOIN data_ad_cd_b a ON a.adcd = n.ad_code and a.is_deleted=0
+        WHERE
+        n.is_deleted = 0
+        <if test="rtuInfoDTO.isRain!=null">
+            and n.is_rain = #{rtuInfoDTO.isRain}
         </if>
-        <if test="rtuDTO.rtuName!=null">
-            and n.rtu_name like concat(concat('%', #{rtuDTO.rtuName}), '%')
+        <if test="rtuInfoDTO.isRiver!=null">
+            and n.is_river = #{rtuInfoDTO.isRiver}
         </if>
-        <if test="rtuDTO.adCode!=null">
-            and (p.ad_code =#{rtuDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE ancestors  like concat(concat('%', #{rtuDTO.adCode}), '%')))
+        <if test="rtuInfoDTO.isRes!=null">
+            and n.is_res = #{rtuInfoDTO.isRes}
         </if>
-
-        <if test="rtuDTO.planId!=null">
-            and (r.plan_id is null OR r.plan_id = #{rtuDTO.planId})
+        <if test="rtuInfoDTO.isGround!=null">
+            and n.is_ground = #{rtuInfoDTO.isGround}
         </if>
-        and r.create_time is null
-
-        order  by n.org_id,n.project_id,n.rtu_code,r.create_time
-
+        <if test="rtuInfoDTO.isVideo!=null">
+            and n.is_video = #{rtuInfoDTO.isVideo}
+        </if>
+        <if test="rtuInfoDTO.adCode!=null">
+            and (n.ad_code =#{rtuInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE ancestors
+            like concat(concat('%', #{rtuInfoDTO.adCode}), '%')))
+        </if>
+        order by n.rtu_code
     </select>
 </mapper>

+ 40 - 0
src/main/java/org/springblade/modules/baseinfo/rtu/service/IRtuBaseInfoService.java

@@ -0,0 +1,40 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/22
+ */
+package org.springblade.modules.baseinfo.rtu.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.modules.baseinfo.rtu.dto.RtuInfoDTO;
+import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
+import org.springblade.modules.baseinfo.rtu.vo.RtuInfoVO;
+import org.springblade.modules.business.data.wrapper.RtuDataRiverWrapper;
+
+import java.util.List;
+
+/***
+ * Date:2022/8/22
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface IRtuBaseInfoService extends BaseService<RtuInfoEntity> {
+	/**
+	 * 自定义分页
+	 * @param page
+	 * @return
+	 */
+	IPage<RtuInfoVO> selectPage(IPage<RtuInfoVO> page, RtuInfoDTO rtuInfoDTO);
+
+	RtuInfoEntity rtuInfoByRtuCode(String rtuCode);
+
+	Long rtuCount(String adCode);
+	List<RtuInfoEntity> rtuList(RtuInfoDTO rtuInfoDTO);
+
+	RtuInfoEntity getAdcd(RtuInfoEntity rtuInfoEntity);
+}

+ 103 - 0
src/main/java/org/springblade/modules/baseinfo/rtu/service/impl/RtuBaseInfoServiceImpl.java

@@ -0,0 +1,103 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/22
+ */
+package org.springblade.modules.baseinfo.rtu.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.springblade.constant.BusinessConstant;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
+import org.springblade.modules.baseinfo.region.service.IBaseInfoRegionService;
+import org.springblade.modules.baseinfo.region.service.impl.BaseInfoRegionServiceImpl;
+import org.springblade.modules.baseinfo.rtu.dto.RtuInfoDTO;
+import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
+import org.springblade.modules.baseinfo.rtu.mapper.RtuInfoMapper;
+import org.springblade.modules.baseinfo.rtu.service.IRtuBaseInfoService;
+import org.springblade.modules.baseinfo.rtu.vo.RtuInfoVO;
+import org.springblade.modules.baseinfo.rtu.wrapper.RtuInfoWrapper;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/***
+ * Date:2022/8/22
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Service
+public class RtuBaseInfoServiceImpl extends BaseServiceImpl<RtuInfoMapper, RtuInfoEntity> implements IRtuBaseInfoService {
+	@Resource
+	private IBaseInfoRegionService baseInfoRegionService;
+
+	@Override
+	public IPage<RtuInfoVO> selectPage(IPage<RtuInfoVO> page, RtuInfoDTO rtuInfoDTO) {
+		return page.setRecords(baseMapper.selectPage(page,rtuInfoDTO));
+	}
+
+	@Override
+	public RtuInfoEntity rtuInfoByRtuCode(String rtuCode) {
+		LambdaQueryWrapper<RtuInfoEntity> wrapper = Wrappers.<RtuInfoEntity>query().lambda();
+		wrapper.eq(RtuInfoEntity::getRtuCode, rtuCode);
+		wrapper.eq(RtuInfoEntity::getIsDeleted,0);
+
+		RtuInfoEntity rtuInfoEntity =  this.getOne(wrapper);
+		return rtuInfoEntity;
+	}
+
+
+	@Override
+	public Long rtuCount( String adCode) {
+		return baseMapper.rtuCount(adCode);
+	}
+
+	@Override
+	public List<RtuInfoEntity> rtuList(RtuInfoDTO rtuInfoDTO) {
+       return baseMapper.rtuList(rtuInfoDTO);
+	}
+
+	@Override
+	public RtuInfoEntity  getAdcd(RtuInfoEntity rtuInfoEntity) {
+		if (rtuInfoEntity.getAdCity() != null && rtuInfoEntity.getAdDist()!=null) {
+			LambdaQueryWrapper<RegionInfoEntity> wrapper = Wrappers.<RegionInfoEntity>query().lambda();
+			wrapper.eq(RegionInfoEntity::getAdnm, rtuInfoEntity.getAdCity());
+			wrapper.eq(RegionInfoEntity::getIsDeleted, 0);
+			List<RegionInfoEntity> regionInfoEntityList = baseInfoRegionService.list(wrapper);
+			if (null != regionInfoEntityList && regionInfoEntityList.size() == 1) {
+				wrapper = Wrappers.<RegionInfoEntity>query().lambda();
+				wrapper.eq(RegionInfoEntity::getAdnm, rtuInfoEntity.getAdDist());
+				wrapper.eq(RegionInfoEntity::getParentCode, regionInfoEntityList.get(0).getAdcd());
+				wrapper.eq(RegionInfoEntity::getIsDeleted, 0);
+				List<RegionInfoEntity> regionInfoEntityList2 = baseInfoRegionService.list(wrapper);
+				if (null != regionInfoEntityList2 && regionInfoEntityList2.size() == 1) {
+					RtuInfoEntity entity=new RtuInfoEntity();
+					entity.setAdCode(regionInfoEntityList2.get(0).getAdcd());
+					entity.setAdName(regionInfoEntityList2.get(0).getAdnm());
+					return entity;
+				}
+			}
+		}
+
+		List<RtuInfoVO> voList=   baseMapper.getAdcd(rtuInfoEntity.getRtuCode());
+        if (null != voList && voList.size()==1){
+			RtuInfoEntity entity=new RtuInfoEntity();
+			entity.setAdCode(voList.get(0).getAdcd());
+			entity.setAdName(voList.get(0).getAdnm());
+        	return entity;
+		}
+
+		return null;
+	}
+}

+ 136 - 0
src/main/java/org/springblade/modules/baseinfo/rtu/vo/RtuInfoVO.java

@@ -0,0 +1,136 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/22
+ */
+package org.springblade.modules.baseinfo.rtu.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;
+import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
+import org.springblade.modules.system.entity.DictBiz;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/***
+ * Date:2022/8/22
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class RtuInfoVO extends RtuInfoEntity {
+
+	/**
+	 * 机构名称
+	 */
+	@ApiModelProperty(value = "机构名称")
+	private String orgName;
+
+
+	/**
+	 * 项目名称
+	 */
+	@ApiModelProperty(value = "项目名称")
+	private String projectName;
+
+	/**
+	 * 行政区
+	 */
+	@ApiModelProperty(value = "行政区")
+	private String areaName;
+
+
+	/**
+	 * 测站类型
+	 */
+	@ApiModelProperty(value = "测站类型")
+	private List<DictBiz> kindList;
+
+	/**
+	 * 测站类型概要
+	 */
+	@ApiModelProperty(value = "测站类型概要")
+	private String rtuKindDesc;
+
+	/**
+	 * 填报状态: 0 未报, 1已提交
+	 */
+	@ApiModelProperty(value = "填报状态")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer reportStatus;
+
+	/**
+	 * 最后上报时间
+	 */
+	@ApiModelProperty(value = "最后上报时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
+	)
+	private Date lastUpTime;
+
+	/**
+	 * 降水
+	 */
+	@ApiModelProperty(value = "降水")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double drp;
+
+	/**
+	 * 河道站水位
+	 */
+	@ApiModelProperty(value = "河道站水位")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double z;
+
+	/**
+	 * 水库站水位
+	 */
+	@ApiModelProperty(value = "水库站水位")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Double rz;
+
+	/**
+	 * 水位计类型名称
+	 */
+	@ApiModelProperty(value = "水位计类型名称")
+	private String waterSensorTypeText;
+
+	/**
+	 * 墒情计类型名称
+	 */
+	@ApiModelProperty(value = "墒情计类型名称")
+	private String groundSensorTypeText;
+
+
+	/**
+	 * 通讯模式名称
+	 */
+	@ApiModelProperty(value = "通讯模式名称")
+	private String satelliteModelText;
+
+	/**
+	 * 行政区划
+	 */
+	@ApiModelProperty(value = "行政区划")
+	private String adcd;
+
+	/**
+	 * 行政区划名称
+	 */
+	@ApiModelProperty(value = "行政区划名称")
+	private String adnm;
+}

+ 50 - 0
src/main/java/org/springblade/modules/baseinfo/rtu/vo/RtuStatisticsInfoVO.java

@@ -0,0 +1,50 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/9/24
+ */
+package org.springblade.modules.baseinfo.rtu.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+
+/***
+ * Date:2022/9/24
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class RtuStatisticsInfoVO extends BaseEntity {
+
+	/**
+	 * 机构ID
+	 */
+	@ApiModelProperty(value = "机构ID")
+	private Long orgId;
+
+	/**
+	 * 机构名称
+	 */
+	@ApiModelProperty(value = "机构名称")
+	private String orgName;
+
+	/**
+	 * 测站数量
+	 */
+	@ApiModelProperty(value = "测站数量")
+	private Long rtuCount;
+
+	/**
+	 * 预警测站数量
+	 */
+	@ApiModelProperty(value = "预警测站数量")
+	private Long warningRtuCount;
+}

+ 67 - 0
src/main/java/org/springblade/modules/baseinfo/rtu/wrapper/RtuInfoWrapper.java

@@ -0,0 +1,67 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/22
+ */
+package org.springblade.modules.baseinfo.rtu.wrapper;
+
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
+import org.springblade.modules.baseinfo.rtu.vo.RtuInfoVO;
+
+import java.util.*;
+
+/***
+ * Date:2022/8/22
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public class RtuInfoWrapper extends BaseEntityWrapper<RtuInfoEntity, RtuInfoVO> {
+	public static RtuInfoWrapper build() {
+		return new RtuInfoWrapper();
+	}
+
+	@Override
+	public RtuInfoVO entityVO(RtuInfoEntity entity) {
+		RtuInfoVO rtuInfoVO = Objects.requireNonNull(BeanUtil.copy(entity, RtuInfoVO.class));
+		return this.entityVO(rtuInfoVO);
+	}
+
+	public RtuInfoVO entityVO(RtuInfoVO entity) {
+		String rtuKindDesc = "";
+		if (entity.getIsRain() != null && entity.getIsRain() == 1) {
+			rtuKindDesc = "雨量站";
+		}
+		if (entity.getIsRes() != null && entity.getIsRes() == 1) {
+			if (rtuKindDesc.length() > 0) {
+				rtuKindDesc += "/";
+			}
+			rtuKindDesc += "水位站";
+		} else if (entity.getIsRiver() != null && entity.getIsRiver() == 1) {
+			if (rtuKindDesc.length() > 0) {
+				rtuKindDesc += "/";
+			}
+			rtuKindDesc += "水位站";
+		}
+		if (entity.getIsGround() != null && entity.getIsGround() == 1) {
+			if (rtuKindDesc.length() > 0) {
+				rtuKindDesc += "/";
+			}
+			rtuKindDesc += "墒情站";
+		}
+		if (entity.getIsVideo() != null && entity.getIsVideo() == 1) {
+			if (rtuKindDesc.length() > 0) {
+				rtuKindDesc += "/";
+			}
+			rtuKindDesc += "视频站";
+		}
+		entity.setRtuKindDesc(rtuKindDesc);
+		return entity;
+	}
+}

+ 0 - 222
src/main/java/org/springblade/modules/baseinfo/servicePerson/controller/ProjectServicePersonController.java

@@ -1,222 +0,0 @@
-/**
- * Copyright 2019 DH
- * All right reserved.
- * 项目名称: 大恒泰山系统
- * 创建日期:2022/8/22
- */
-package org.springblade.modules.baseinfo.servicePerson.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.*;
-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.DigestUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.modules.baseinfo.project.entity.ProjectInfoEntity;
-import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
-import org.springblade.modules.baseinfo.servicePerson.service.IProjectServicePersonService;
-import org.springblade.modules.baseinfo.servicePerson.vo.OrgPersonContactVO;
-import org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO;
-import org.springblade.modules.baseinfo.servicePerson.wrapper.ProjectServicePersonWrapper;
-import org.springblade.modules.system.entity.Dept;
-import org.springblade.modules.system.entity.User;
-import org.springblade.modules.system.service.IDeptService;
-import org.springblade.modules.system.service.IUserService;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Objects;
-
-/***
- * Date:2022/8/22
- * Title:文件所属模块(必须填写)
- * Description:对本文件的详细描述,原则上不能少于30字
- * @author dylan
- * @version 1.0
- * Remark:认为有必要的其他信息
- */
-@RestController
-@RequestMapping("galaxy-business/project/person")
-@AllArgsConstructor
-@Api(value = "项目运维人员管理", tags = "项目运维人员管理")
-public class ProjectServicePersonController extends BladeController {
-	private final IProjectServicePersonService servicePersonService;
-	private final IUserService userService;
-	private final IDeptService deptService;
-
-	@GetMapping("/org/page")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "personName", value = "人员名称", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "contactPhone", value = "联系电话", paramType = "query", dataType = "string"),
-	})
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "分页")
-	public R<IPage<ServicePersonVO>> orgPersonList(@ApiIgnore ServicePersonEntity personEntity, Query query) {
-		BladeUser user = AuthUtil.getUser();
-		personEntity.setOrgId(null);
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			personEntity.setOrgId(Func.toLong(user.getDeptId()));
-		}
-		IPage<ServicePersonVO> pages = servicePersonService.selectPage(Condition.getPage(query), personEntity);
-		return R.data(pages);
-	}
-
-	@GetMapping("/list")
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "列表")
-	public R<List<ServicePersonVO>> list() {
-		BladeUser user = AuthUtil.getUser();
-		ServicePersonEntity personEntity = new ServicePersonEntity();
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			personEntity.setOrgId(Func.toLong(user.getDeptId()));
-		}
-		List<ServicePersonVO> personVOList = this.servicePersonService.selectAllList(personEntity);
-		return R.data(personVOList);
-	}
-
-	/**
-	 * 详情
-	 */
-	@GetMapping("/detail")
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入servicePersonEntity")
-	public R<ServicePersonVO> detail(ServicePersonEntity servicePersonEntity) {
-		ServicePersonEntity detail = servicePersonService.getOne(Condition.getQueryWrapper(servicePersonEntity));
-		return R.data(ProjectServicePersonWrapper.build().entityVO(detail));
-	}
-
-	/**
-	 * 新增
-	 */
-	@PostMapping("/save")
-	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "新增", notes = "传入servicePersonEntity")
-	public R save(@RequestBody ServicePersonEntity servicePersonEntity) {
-		LambdaQueryWrapper<User> wrapper = Wrappers.<User>query().lambda();
-		wrapper.eq(User::getAccount, servicePersonEntity.getUserAccount());
-		wrapper.eq(User::getIsDeleted, 0);
-		List<User> list = userService.list(wrapper);
-		if (null != list && list.size() > 0) {
-			return R.fail("帐号已经存在");
-		}
-		User u = new User();
-		u.setAccount(servicePersonEntity.getUserAccount());
-		u.setPhone(servicePersonEntity.getContactPhone());
-		u.setEmail(servicePersonEntity.getMail());
-		u.setName(servicePersonEntity.getPersonName());
-		u.setRealName(servicePersonEntity.getPersonName());
-		u.setPassword(DigestUtil.encrypt(servicePersonEntity.getUserAccount() + BusinessConstant.ACCOUNT_PW_SUFFIX));
-		BladeUser user = AuthUtil.getUser();
-		u.setDeptId(user.getDeptId());
-		//u.setDeptId(Func.toStr(servicePersonEntity.getOrgId()));
-		u.setRoleId(BusinessConstant.ROLE_ORG_SERVICE_PERSON_ID);
-		u.setPostId(BusinessConstant.SERVICE_PERSON_POST_ID);
-		u.setUserType(1);
-		userService.save(u);
-		servicePersonEntity.setUserId(u.getId());
-		servicePersonEntity.setOrgId(Func.toLong(user.getDeptId()));
-		return R.status(servicePersonService.save(servicePersonEntity));
-	}
-
-	/**
-	 * 修改
-	 */
-	@PostMapping("/update")
-	@ApiOperationSupport(order = 5)
-	@ApiOperation(value = "修改", notes = "传入servicePersonEntity")
-	public R update(@RequestBody ServicePersonEntity servicePersonEntity) {
-		if (Objects.isNull(servicePersonEntity.getUserId())) {
-			return R.fail("用户ID不能为空!");
-		}
-		User u = userService.getById(servicePersonEntity.getUserId());
-		u.setPhone(servicePersonEntity.getContactPhone());
-		u.setName(servicePersonEntity.getPersonName());
-		u.setEmail(servicePersonEntity.getMail());
-		u.setRealName(servicePersonEntity.getPersonName());
-		userService.updateById(u);
-		return R.status(servicePersonService.updateById(servicePersonEntity));
-	}
-
-	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperationSupport(order = 7)
-	@ApiOperation(value = "逻辑删除", notes = "传入servicePersonEntity")
-	public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
-		List<Long> list = Func.toLongList(ids);
-		if (null != list && list.size() > 0) {
-			for (Long id : list) {
-				ServicePersonEntity entity = servicePersonService.getById(id);
-				userService.removeById(entity.getUserId());
-			}
-		}
-		boolean temp = servicePersonService.deleteLogic(Func.toLongList(ids));
-		return R.status(temp);
-	}
-
-	/**
-	 * 机构树
-	 *
-	 * @return
-	 */
-	@GetMapping("/org/dict")
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情")
-	public R<List<Dept>> orgTree() {
-		BladeUser user = AuthUtil.getUser();
-		List<Dept> list = new ArrayList<>();
-		if (BusinessConstant.ROLE_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_SUPER_ADMIN.equals(user.getRoleName())) {
-			List<Dept> root = this.deptService.getDeptChild(0L);
-			list = this.deptService.getDeptChild(root.get(0).getId());
-		} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			Dept root = this.deptService.getById(Func.toLong(user.getDeptId()));
-			list.add(root);
-		}
-		return R.data(list);
-	}
-
-	@GetMapping("/contact")
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "通讯录")
-	public R<List<OrgPersonContactVO>> contact() {
-		BladeUser user = AuthUtil.getUser();
-		List<OrgPersonContactVO> list = new LinkedList<>();
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			OrgPersonContactVO contactVO = new OrgPersonContactVO();
-			contactVO.setId(Func.toLong(user.getDeptId()));
-			Dept dept = this.deptService.getById(contactVO.getId());
-			contactVO.setOrgName(dept.getDeptName());
-			ServicePersonEntity personEntity = new ServicePersonEntity();
-			personEntity.setOrgId(contactVO.getId());
-			List<ServicePersonVO> personVOList = this.servicePersonService.selectAllList(personEntity);
-			contactVO.setServicePersonVOList(personVOList);
-			list.add(contactVO);
-		} else {
-			List<Dept> root = this.deptService.getDeptChild(Func.toLong(user.getDeptId()));
-			for (Dept dept : root) {
-				OrgPersonContactVO contactVO = new OrgPersonContactVO();
-				contactVO.setId(dept.getId());
-				contactVO.setOrgName(dept.getDeptName());
-				ServicePersonEntity personEntity = new ServicePersonEntity();
-				personEntity.setOrgId(contactVO.getId());
-				List<ServicePersonVO> personVOList = this.servicePersonService.selectAllList(personEntity);
-				contactVO.setServicePersonVOList(personVOList);
-				list.add(contactVO);
-			}
-		}
-		return R.data(list);
-	}
-}

+ 321 - 0
src/main/java/org/springblade/modules/baseinfo/servicePerson/controller/ServicePersonController.java

@@ -0,0 +1,321 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/22
+ */
+package org.springblade.modules.baseinfo.servicePerson.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.*;
+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.DigestUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.enums.OrderCloseEnum;
+import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
+import org.springblade.modules.baseinfo.servicePerson.service.IServicePersonService;
+import org.springblade.modules.baseinfo.servicePerson.vo.OrgPersonContactVO;
+import org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO;
+import org.springblade.modules.baseinfo.servicePerson.wrapper.ServicePersonWrapper;
+import org.springblade.modules.business.check.order.dto.CheckOrderInfoDTO;
+import org.springblade.modules.business.check.order.vo.OrgCheckOrderCountVO;
+import org.springblade.modules.business.notice.entity.NoticeEntity;
+import org.springblade.modules.system.entity.Dept;
+import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.service.IDeptService;
+import org.springblade.modules.system.service.IUserService;
+import org.springblade.modules.system.vo.UserVO;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.jws.soap.SOAPBinding;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Objects;
+
+/***
+ * Date:2022/8/22
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@RestController
+@RequestMapping("galaxy-business/serviceperson")
+@AllArgsConstructor
+@Api(value = "项目运维人员管理", tags = "项目运维人员管理")
+public class ServicePersonController extends BladeController {
+	private final IServicePersonService servicePersonService;
+	private final IUserService userService;
+	private final IDeptService deptService;
+
+	@GetMapping("/page")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "realName", value = "人员名称", paramType = "query", dataType = "string"),
+		@ApiImplicitParam(name = "phone", value = "联系电话", paramType = "query", dataType = "string"),
+	})
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "分页")
+	public R<IPage<UserVO>> orgPersonList(@ApiIgnore User userEntity, Query query) {
+		BladeUser user = AuthUtil.getUser();
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			LambdaQueryWrapper<Dept> deptLambdaQueryWrapper = Wrappers.<Dept>query().lambda();
+			deptLambdaQueryWrapper.eq(Dept::getIsDeleted,0);
+			deptLambdaQueryWrapper.eq(Dept::getParentId,Func.toLong(user.getDeptId()));
+			List<Dept> deptList = deptService.list(deptLambdaQueryWrapper);
+			if (null == deptList || deptList.size() == 0) {
+				return R.data(null);
+			}
+			ArrayList<Long> deptIds = new ArrayList<>();
+			for (Dept dept : deptList) {
+				deptIds.add(dept.getId());
+			}
+			LambdaQueryWrapper<User> wrapper = Wrappers.<User>query().lambda();
+			wrapper.eq(User::getIsDeleted, 0);
+			wrapper.in(User::getDeptId, deptIds);
+			if (userEntity.getRealName() != null) {
+				wrapper.like(User::getRealName, userEntity.getRealName());
+			}
+			if (userEntity.getPhone() != null) {
+				wrapper.like(User::getPhone, userEntity.getPhone());
+			}
+			IPage<User> pages = userService.page(Condition.getPage(query), wrapper);
+			return R.data(ServicePersonWrapper.build().pageVO(pages));
+		} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName())) {
+			LambdaQueryWrapper<Dept> deptLambdaQueryWrapper = Wrappers.<Dept>query().lambda();
+			deptLambdaQueryWrapper.eq(Dept::getIsDeleted,0);
+			deptLambdaQueryWrapper.eq(Dept::getParentId,Func.toLong(user.getDeptId()));
+			List<Dept> deptList = deptService.list(deptLambdaQueryWrapper);
+			if (null == deptList || deptList.size() == 0) {
+				return R.data(null);
+			}
+			ArrayList<Long> deptIds = new ArrayList<>();
+			for (Dept dept : deptList) {
+				deptIds.add(dept.getId());
+			}
+			LambdaQueryWrapper<User> wrapper = Wrappers.<User>query().lambda();
+			wrapper.eq(User::getIsDeleted, 0);
+			wrapper.in(User::getDeptId, deptIds);
+			wrapper.eq(User::getPostId, BusinessConstant.POST_ADMIN_ID);
+			if (userEntity.getRealName() != null) {
+				wrapper.like(User::getRealName, userEntity.getRealName());
+			}
+			if (userEntity.getPhone() != null) {
+				wrapper.like(User::getPhone, userEntity.getPhone());
+			}
+			IPage<User> pages = userService.page(Condition.getPage(query), wrapper);
+			return R.data(ServicePersonWrapper.build().pageVO(pages));
+		} else if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName())) {
+			LambdaQueryWrapper<User> wrapper = Wrappers.<User>query().lambda();
+			wrapper.eq(User::getIsDeleted, 0);
+			wrapper.eq(User::getDeptId, Func.toLong(user.getDeptId()));
+			wrapper.eq(User::getPostId, BusinessConstant.POST_SERVICE_PERSON_ID);
+			if (userEntity.getRealName() != null) {
+				wrapper.like(User::getRealName, userEntity.getRealName());
+			}
+			if (userEntity.getPhone() != null) {
+				wrapper.like(User::getPhone, userEntity.getPhone());
+			}
+			IPage<User> pages = userService.page(Condition.getPage(query), wrapper);
+			return R.data(ServicePersonWrapper.build().pageVO(pages));
+		}
+		return R.data(null);
+	}
+
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "列表")
+	public R<List<User>> list() {
+		BladeUser user = AuthUtil.getUser();
+		LambdaQueryWrapper<User> wrapper = Wrappers.<User>query().lambda();
+		wrapper.eq(User::getIsDeleted, 0);
+		wrapper.eq(User::getDeptId, Func.toLong(user.getDeptId()));
+		List<User> lists = userService.list(wrapper);
+		return R.data(lists);
+	}
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "详情", notes = "传入 User")
+	public R<User> detail(User user) {
+		User detail = userService.getById(user.getId());
+		return R.data(detail);
+	}
+
+	/**
+	 * 新增
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入 User")
+	public R save(@RequestBody User userEntity) {
+		LambdaQueryWrapper<User> wrapper = Wrappers.<User>query().lambda();
+		wrapper.eq(User::getAccount, userEntity.getAccount());
+		wrapper.eq(User::getIsDeleted, 0);
+		List<User> list = userService.list(wrapper);
+		if (null != list && list.size() > 0) {
+			return R.fail("帐号已经存在");
+		}
+		userEntity.setName(userEntity.getRealName());
+		userEntity.setPassword(DigestUtil.encrypt(userEntity.getAccount() + BusinessConstant.ACCOUNT_PW_SUFFIX));
+		BladeUser user = AuthUtil.getUser();
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			userEntity.setRoleId(BusinessConstant.ROLE_ORG_ADMIN_ID);
+			userEntity.setPostId(BusinessConstant.POST_ADMIN_ID);
+		} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName())) {
+			userEntity.setRoleId(BusinessConstant.ROLE_COMPANY_ADMIN_ID);
+			userEntity.setPostId(BusinessConstant.POST_ADMIN_ID);
+		} else if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName())) {
+			userEntity.setRoleId(BusinessConstant.ROLE_COMPANY_SERVICE_PERSON_ID);
+			userEntity.setPostId(BusinessConstant.POST_SERVICE_PERSON_ID);
+			userEntity.setDeptId(user.getDeptId());
+		} else {
+			return R.fail("用户创建错误!");
+		}
+		userEntity.setUserType(1);
+		return R.status(userService.save(userEntity));
+	}
+
+	/**
+	 * 修改
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入 User")
+	public R update(@RequestBody User user) {
+		if (Objects.isNull(user.getId())) {
+			return R.fail("用户ID不能为空!");
+		}
+		return R.status(userService.updateById(user));
+	}
+
+	/**
+	 * 删除
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "逻辑删除", notes = "传入 ids")
+	public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
+		List<Long> list = Func.toLongList(ids);
+		if (null != list && list.size() > 0) {
+			for (Long id : list) {
+				userService.removeById(id);
+			}
+		}
+		return R.status(true);
+	}
+
+	/**
+	 * 机构树
+	 *
+	 * @return
+	 */
+//	@GetMapping("/org/dict")
+//	@ApiOperationSupport(order = 1)
+//	@ApiOperation(value = "详情")
+//	public R<List<Dept>> orgTree() {
+//		BladeUser user = AuthUtil.getUser();
+//		List<Dept> list = new ArrayList<>();
+//		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_SUPER_ADMIN.equals(user.getRoleName())) {
+//			List<Dept> root = this.deptService.getDeptChild(0L);
+//			list = this.deptService.getDeptChild(root.get(0).getId());
+//		} else if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
+//			Dept root = this.deptService.getById(Func.toLong(user.getDeptId()));
+//			list.add(root);
+//		}
+//		return R.data(list);
+//	}
+	@GetMapping("/contact")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "通讯录")
+	public R<List<OrgPersonContactVO>> contact() {
+		BladeUser user = AuthUtil.getUser();
+		List<OrgPersonContactVO> list = new LinkedList<>();
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			LambdaQueryWrapper<Dept> wrapper = Wrappers.<Dept>query().lambda();
+			wrapper.eq(Dept::getIsDeleted, 0);
+			wrapper.eq(Dept::getParentId, Func.toLong(user.getDeptId()));
+			List<Dept> root = this.deptService.list(wrapper);
+			for (Dept dept : root) {
+				OrgPersonContactVO contactVO = new OrgPersonContactVO();
+				contactVO.setId(dept.getId());
+				contactVO.setOrgName(dept.getDeptName());
+				LambdaQueryWrapper<User> userLambdaQueryWrapper = Wrappers.<User>query().lambda();
+				userLambdaQueryWrapper.eq(User::getIsDeleted, 0);
+				userLambdaQueryWrapper.eq(User::getDeptId, Func.toStr(dept.getId()));
+				List<User> userList = this.userService.list(userLambdaQueryWrapper);
+				List<ServicePersonVO> personVOList=new LinkedList<>();
+				for (User u : userList){
+					ServicePersonVO vo = new ServicePersonVO();
+					vo.setId(u.getId());
+					vo.setPersonName(u.getRealName());
+					vo.setContactPhone(u.getPhone());
+					personVOList.add(vo);
+				}
+				contactVO.setServicePersonVOList(personVOList);
+				list.add(contactVO);
+			}
+		}else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName())) {
+			LambdaQueryWrapper<Dept> wrapper = Wrappers.<Dept>query().lambda();
+			wrapper.eq(Dept::getIsDeleted, 0);
+			wrapper.eq(Dept::getParentId, Func.toLong(user.getDeptId()));
+			List<Dept> root = this.deptService.list(wrapper);
+			for (Dept dept : root) {
+				OrgPersonContactVO contactVO = new OrgPersonContactVO();
+				contactVO.setId(dept.getId());
+				contactVO.setOrgName(dept.getDeptName());
+				LambdaQueryWrapper<User> userLambdaQueryWrapper = Wrappers.<User>query().lambda();
+				userLambdaQueryWrapper.eq(User::getIsDeleted, 0);
+				userLambdaQueryWrapper.eq(User::getDeptId, Func.toStr(dept.getId()));
+				List<User> userList = this.userService.list(userLambdaQueryWrapper);
+				List<ServicePersonVO> personVOList=new LinkedList<>();
+				for (User u : userList){
+					ServicePersonVO vo = new ServicePersonVO();
+					vo.setId(u.getId());
+					vo.setPersonName(u.getRealName());
+					vo.setContactPhone(u.getPhone());
+					personVOList.add(vo);
+				}
+				contactVO.setServicePersonVOList(personVOList);
+				list.add(contactVO);
+			}
+		}else if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
+			OrgPersonContactVO contactVO = new OrgPersonContactVO();
+			contactVO.setId(Func.toLong(user.getDeptId()));
+			Dept dept = this.deptService.getById(contactVO.getId());
+			contactVO.setOrgName(dept.getDeptName());
+			LambdaQueryWrapper<User> userLambdaQueryWrapper = Wrappers.<User>query().lambda();
+			userLambdaQueryWrapper.eq(User::getIsDeleted, 0);
+			userLambdaQueryWrapper.eq(User::getDeptId, Func.toStr(dept.getId()));
+			List<User> userList = this.userService.list(userLambdaQueryWrapper);
+			List<ServicePersonVO> personVOList=new LinkedList<>();
+			for (User u : userList){
+				ServicePersonVO vo = new ServicePersonVO();
+				vo.setId(u.getId());
+				vo.setPersonName(u.getRealName());
+				vo.setContactPhone(u.getPhone());
+				personVOList.add(vo);
+			}
+			contactVO.setServicePersonVOList(personVOList);
+
+			list.add(contactVO);
+		}
+		return R.data(list);
+	}
+}

+ 1 - 1
src/main/java/org/springblade/modules/baseinfo/servicePerson/mapper/ProjectServicePersonMapper.java → src/main/java/org/springblade/modules/baseinfo/servicePerson/mapper/ServicePersonMapper.java

@@ -24,7 +24,7 @@ import java.util.List;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface ProjectServicePersonMapper extends BaseMapper<ServicePersonEntity> {
+public interface ServicePersonMapper extends BaseMapper<ServicePersonEntity> {
 	IPage<ServicePersonVO> selectPage(IPage page, @Param("entity") ServicePersonEntity entity);
 	List<ServicePersonVO> selectAllList(@Param("entity") ServicePersonEntity entity);
 }

+ 9 - 22
src/main/java/org/springblade/modules/baseinfo/servicePerson/mapper/ProjectServicePersonMapper.xml → src/main/java/org/springblade/modules/baseinfo/servicePerson/mapper/ServicePersonMapper.xml

@@ -1,16 +1,10 @@
 <?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.baseinfo.servicePerson.mapper.ProjectServicePersonMapper">
+<mapper namespace="org.springblade.modules.baseinfo.servicePerson.mapper.ServicePersonMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="servicePersonResultMap" type="org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity">
-        <result column="id" property="id"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
+
         <result column="person_name" property="personName"/>
         <result column="org_id" property="orgId"/>
         <result column="contact_phone" property="contactPhone"/>
@@ -20,16 +14,10 @@
     </resultMap>
 
     <resultMap id="servicePersonVOResultMap" type="org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO">
-        <result column="id" property="id"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
-        <result column="real_name" property="personName"/>
+
+        <result column="person_name" property="personName"/>
         <result column="dept_id" property="orgId"/>
-        <result column="phone" property="contactPhone"/>
+        <result column="contact_phone" property="contactPhone"/>
         <result column="mail" property="mail"/>
         <result column="remark" property="remark"/>
         <result column="account" property="userAccount"/>
@@ -63,13 +51,12 @@
     </select>
 
     <select id="selectAllList" resultMap="servicePersonVOResultMap">
-
         SELECT
-        u.*,
-        r.role_name,d.dept_name
+        p.*,
+        r.role_name,d.dept_name,u.real_name,u.account,u.phone,u.dept_id
         FROM
-        blade_user u
-        LEFT JOIN project_service_person p ON u.id = p.user_id and p.is_deleted = 0
+        project_service_person p
+        LEFT JOIN blade_user u ON u.id = p.user_id and u.is_deleted = 0
         LEFT JOIN blade_role r ON r.id = u.role_id and r.is_deleted = 0
         LEFT JOIN blade_dept d ON u.dept_id = d.id and d.is_deleted = 0
         WHERE

+ 1 - 1
src/main/java/org/springblade/modules/baseinfo/servicePerson/service/IProjectServicePersonService.java → src/main/java/org/springblade/modules/baseinfo/servicePerson/service/IServicePersonService.java

@@ -22,7 +22,7 @@ import java.util.List;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface IProjectServicePersonService extends BaseService<ServicePersonEntity> {
+public interface IServicePersonService extends BaseService<ServicePersonEntity> {
 	IPage<ServicePersonVO> selectPage(IPage<ServicePersonVO> page, ServicePersonEntity entity);
 	List<ServicePersonVO> selectAllList(ServicePersonEntity entity);
 }

+ 3 - 3
src/main/java/org/springblade/modules/baseinfo/servicePerson/service/impl/ProjectServicePersonServiceImpl.java → src/main/java/org/springblade/modules/baseinfo/servicePerson/service/impl/ServicePersonServiceImpl.java

@@ -9,8 +9,8 @@ package org.springblade.modules.baseinfo.servicePerson.service.impl;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
-import org.springblade.modules.baseinfo.servicePerson.mapper.ProjectServicePersonMapper;
-import org.springblade.modules.baseinfo.servicePerson.service.IProjectServicePersonService;
+import org.springblade.modules.baseinfo.servicePerson.mapper.ServicePersonMapper;
+import org.springblade.modules.baseinfo.servicePerson.service.IServicePersonService;
 import org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO;
 import org.springframework.stereotype.Service;
 
@@ -26,7 +26,7 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 @Service
-public class ProjectServicePersonServiceImpl extends BaseServiceImpl<ProjectServicePersonMapper, ServicePersonEntity> implements IProjectServicePersonService {
+public class ServicePersonServiceImpl extends BaseServiceImpl<ServicePersonMapper, ServicePersonEntity> implements IServicePersonService {
 
 
 	@Override

+ 0 - 35
src/main/java/org/springblade/modules/baseinfo/servicePerson/wrapper/ProjectServicePersonWrapper.java

@@ -1,35 +0,0 @@
-/**
- * Copyright 2019 DH
- * All right reserved.
- * 项目名称: 大恒泰山系统
- * 创建日期:2022/8/22
- */
-package org.springblade.modules.baseinfo.servicePerson.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
-import org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO;
-
-
-import java.util.Objects;
-
-/***
- * Date:2022/8/22
- * Title:文件所属模块(必须填写)
- * Description:对本文件的详细描述,原则上不能少于30字
- * @author dylan
- * @version 1.0
- * Remark:认为有必要的其他信息
- */
-public class ProjectServicePersonWrapper extends BaseEntityWrapper<ServicePersonEntity, ServicePersonVO> {
-	public static ProjectServicePersonWrapper build() {
-		return new ProjectServicePersonWrapper();
-	}
-
-	@Override
-	public ServicePersonVO entityVO(ServicePersonEntity entity) {
-		ServicePersonVO servicePersonVO = Objects.requireNonNull(BeanUtil.copy(entity, ServicePersonVO.class));
-		return servicePersonVO;
-	}
-}

+ 54 - 0
src/main/java/org/springblade/modules/baseinfo/servicePerson/wrapper/ServicePersonWrapper.java

@@ -0,0 +1,54 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/22
+ */
+package org.springblade.modules.baseinfo.servicePerson.wrapper;
+
+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.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
+import org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO;
+import org.springblade.modules.system.entity.Dept;
+import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.service.IDeptService;
+import org.springblade.modules.system.vo.UserVO;
+
+
+import java.util.Objects;
+
+/***
+ * Date:2022/8/22
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public class ServicePersonWrapper extends BaseEntityWrapper<User, UserVO> {
+	public static ServicePersonWrapper build() {
+		return new ServicePersonWrapper();
+	}
+
+	private static IDeptService deptService;
+
+	private static IDeptService getDeptService() {
+		if (deptService == null) {
+			deptService = SpringUtil.getBean(IDeptService.class);
+		}
+		return deptService;
+	}
+
+	@Override
+	public UserVO entityVO(User entity) {
+		UserVO servicePersonVO = Objects.requireNonNull(BeanUtil.copy(entity, UserVO.class));
+		Dept dept = getDeptService().getById(Func.toLong(entity.getDeptId()));
+		if (null != dept) {
+			servicePersonVO.setDeptName(dept.getDeptName());
+		}
+		return servicePersonVO;
+	}
+}

+ 24 - 0
src/main/java/org/springblade/modules/baseinfo/stbase/mapper/MvAttStBaseMapper.java

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

+ 13 - 0
src/main/java/org/springblade/modules/baseinfo/stbase/mapper/MvAttStBaseMapper.xml

@@ -0,0 +1,13 @@
+<?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.baseinfo.stbase.mapper.MvAttStBaseMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="adcdEntityResultMap" type="org.springblade.modules.baseinfo.stbase.entity.MvAttStBaseEntity">
+        <result column="st_code" property="stCode"/>
+        <result column="st_name" property="stName"/>
+        <result column="ad_code" property="adCode"/>
+
+    </resultMap>
+
+</mapper>

+ 313 - 187
src/main/java/org/springblade/modules/business/check/order/controller/RtuCheckOrderController.java

@@ -11,8 +11,7 @@ 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.*;
-import lombok.AllArgsConstructor;
-import org.springblade.common.cache.DictBizCache;
+import lombok.RequiredArgsConstructor;
 import org.springblade.constant.BusinessConstant;
 import org.springblade.constant.DictBusinessConstant;
 import org.springblade.core.boot.ctrl.BladeController;
@@ -21,16 +20,18 @@ 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.ConcurrentDateFormat;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.enums.*;
 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.rtu.entity.RtuInfoEntity;
 import org.springblade.modules.baseinfo.rtu.service.IRtuBaseInfoService;
-import org.springblade.modules.baseinfo.stbase.service.IMvAttStBaseService;
 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.entity.CheckOrderSettingEntity;
+import org.springblade.modules.business.check.order.service.ICheckOrderSettingService;
 import org.springblade.modules.business.check.order.service.IRtuCheckOrderService;
 import org.springblade.modules.business.check.order.vo.CheckOrderCountVO;
 import org.springblade.modules.business.check.order.vo.CheckOrderInfoVO;
@@ -41,7 +42,6 @@ import org.springblade.modules.business.check.process.service.IRtuOrderProcessSe
 import org.springblade.modules.business.data.entity.RtuDataRainEntity;
 import org.springblade.modules.business.data.entity.RtuDataRiverEntity;
 import org.springblade.modules.business.data.entity.RtuDataRsvrEntity;
-import org.springblade.modules.business.data.service.IRtuDataGroundService;
 import org.springblade.modules.business.data.service.IRtuDataRainService;
 import org.springblade.modules.business.data.service.IRtuDataRiverService;
 import org.springblade.modules.business.data.service.IRtuDataRsvrService;
@@ -58,10 +58,7 @@ import org.springblade.modules.system.service.IUserService;
 import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /***
  * Date:2022/8/22
@@ -73,44 +70,24 @@ import java.util.Map;
  */
 @RestController
 @RequestMapping("galaxy-business/rtu/check/order")
-@AllArgsConstructor
+@RequiredArgsConstructor
 @Api(value = "测站设备故障工单管理模块", tags = "测站设备故障工单管理模块")
 public class RtuCheckOrderController extends BladeController {
 
-	private final IRtuCheckOrderService checkOrderService;
-	private final IRtuOrderProcessService processService;
-	private final IRtuWarningService warningService;
+	private final IRtuCheckOrderService rtuCheckOrderService;
+	private final IRtuOrderProcessService rtuOrderProcessService;
+	private final IRtuWarningService rtuWarningService;
 	private final IDictBizService dictBizService;
-	private final IRtuManageService manageService;
+	private final IRtuManageService rtuManageService;
 	private final IUserService userService;
 	private final IDeptService deptService;
 	private final IRtuBaseInfoService rtuBaseInfoService;
-	private final IMvAttStBaseService iMvAttStBaseService;
-	private final IRtuDataRainService iRtuDataRainService;
-	private final IRtuDataRiverService iRtuDataRiverService;
-	private final IRtuDataRsvrService iRtuDataRsvrService;
-	private final IRtuDataGroundService iRtuDataGroundService;
-	private final IRtuManageService iRtuManageService;
-	private final IBaseInfoDictService dictService;
-	;
-
-	@GetMapping("/list")
-	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "列表", notes = "传入CheckOrderInfoDTO")
-	public R<List<CheckOrderInfoVO>> page(CheckOrderInfoDTO checkOrderInfoDTO) {
-
-
-		LambdaQueryWrapper<CheckOrderInfoEntity> wrapper = Wrappers.<CheckOrderInfoEntity>query().lambda();
-		if (checkOrderInfoDTO.getRtuCode() != null) {
-			wrapper.eq(CheckOrderInfoEntity::getRtuCode, checkOrderInfoDTO.getRtuCode());
-		}
-		wrapper.orderByAsc(CheckOrderInfoEntity::getOrderStatusKey);
-		wrapper.orderByDesc(CheckOrderInfoEntity::getUpdateTime);
-		//wrapper.last("limit 1");
-		List<CheckOrderInfoEntity> pages = checkOrderService.list(wrapper);
-
-		return R.data(RtuCheckOrderWrapper.build().listVO(pages));
-	}
+	private final IRtuDataRainService rtuDataRainService;
+	private final IRtuDataRiverService rtuDataRiverService;
+	private final IRtuDataRsvrService rtuDataRsvrService;
+	private final IBaseInfoDictService baseInfoDictService;
+	private final IDeptRegionService deptRegionService;
+	private final ICheckOrderSettingService checkOrderSettingService;
 
 	/**
 	 * 工单查询,分页
@@ -120,34 +97,57 @@ 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 = "orgId", value = "机构ID", paramType = "query", dataType = "long"),
 		@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")
+	@ApiOperation(value = "分页", notes = "传入实体类CheckOrderInfoDTO")
 	public R<IPage<CheckOrderInfoVO>> page(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO, Query query) {
 		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			checkOrderInfoDTO.setOrgId(Func.toLong(user.getDeptId()));
-		}
-		if (null != checkOrderInfoDTO.getRtuCode() && checkOrderInfoDTO.getRtuCode().length() > 0) {
-			if (Func.isNumeric(checkOrderInfoDTO.getRtuCode())) {
-				checkOrderInfoDTO.setRtuName(null);
-			} else {
-				checkOrderInfoDTO.setRtuCode(null);
-			}
+		if (checkOrderInfoDTO.getDeptId() != null) {
+			LambdaQueryWrapper<DeptRegionEntity> deptLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
+			deptLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
+			deptLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, checkOrderInfoDTO.getDeptId());
+			DeptRegionEntity deptRegionEntity = deptRegionService.getOne(deptLambdaQueryWrapper);
+			checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
 		} else {
-			checkOrderInfoDTO.setRtuCode(null);
-			checkOrderInfoDTO.setRtuName(null);
+			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());
+				}
+			}
+			 if (BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
+			     if(checkOrderInfoDTO.getOrderConfirm()!=null&&checkOrderInfoDTO.getOrderConfirm()==1 ){
+					 checkOrderInfoDTO.setContactUser(user.getUserId());
+				 }
+			}
 		}
-
-		IPage<CheckOrderInfoVO> pages = checkOrderService.selectPage(Condition.getPage(query), checkOrderInfoDTO);
-		List<CheckOrderInfoVO> list = pages.getRecords();
-		for (CheckOrderInfoVO v : list) {
-			RtuCheckOrderWrapper.build().addInfoVO(v);
+		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);
 		}
-		return R.data(pages);
 	}
 
 	/**
@@ -159,81 +159,91 @@ public class RtuCheckOrderController extends BladeController {
 		@ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string")
 	})
 	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "分页", notes = "传入checkOrderInfoDTO")
+	@ApiOperation(value = "分页", notes = "传入实体类CheckOrderInfoDTO")
 	public R<IPage<CheckOrderInfoVO>> mypage(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO, Query query) {
 		BladeUser user = AuthUtil.getUser();
 		checkOrderInfoDTO.setContactUser(user.getUserId());
 		checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
 		checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
-		IPage<CheckOrderInfoVO> pages = checkOrderService.selectPage(Condition.getPage(query), checkOrderInfoDTO);
+		IPage<CheckOrderInfoVO> pages = rtuCheckOrderService.selectMyPage(Condition.getPage(query), checkOrderInfoDTO);
 		List<CheckOrderInfoVO> list = pages.getRecords();
 		for (CheckOrderInfoVO v : list) {
-			RtuCheckOrderWrapper.build().addInfoVO(v);
+			RtuCheckOrderWrapper.build().entityVO(v);
 		}
 		return R.data(pages);
 	}
 
-
 	/**
-	 * 未确认工单列表,不分页
+	 * 未确认工单列表,不分页,最多返回10条数据
 	 */
-	@GetMapping("/unconfirm/list")
+	@GetMapping("/unconfirm/last/list")
 	@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"),
 	})
 	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "不分页", notes = "")
+	@ApiOperation(value = "不分页", notes = "传入实体类CheckOrderInfoDTO")
 	public R<List<CheckOrderInfoVO>> unconfirmOrderList(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO) {
 		BladeUser user = AuthUtil.getUser();
-		checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CREATE.getCode());
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			checkOrderInfoDTO.setOrgId(Func.toLong(user.getDeptId()));
-		} else {
-			checkOrderInfoDTO.setOrgId(null);
-		}
-		if (null != checkOrderInfoDTO.getRtuCode() && checkOrderInfoDTO.getRtuCode().length() > 0) {
-			if (Func.isNumeric(checkOrderInfoDTO.getRtuCode())) {
-				checkOrderInfoDTO.setRtuName(null);
-			} else {
-				checkOrderInfoDTO.setRtuCode(null);
+		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());
 			}
-		} else {
-			checkOrderInfoDTO.setRtuCode(null);
-			checkOrderInfoDTO.setRtuName(null);
 		}
-		List<CheckOrderInfoVO> list = checkOrderService.unconfirmOrderList(checkOrderInfoDTO);
+		List<CheckOrderInfoVO> list = rtuCheckOrderService.unconfirmOrderList(checkOrderInfoDTO);
 		for (CheckOrderInfoVO v : list) {
-			RtuCheckOrderWrapper.build().addInfoVO(v);
+			RtuCheckOrderWrapper.build().entityVO(v);
 		}
 		return R.data(list);
 	}
 
-	/**
-	 * 今日工单动态
-	 */
-	@GetMapping("/today/page")
+	@GetMapping("/confirm/delay/page")
 	@ApiImplicitParams({
 		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string")
+		@ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string"),
+		@ApiImplicitParam(name = "adCode", value = "行政区划编码", paramType = "query", dataType = "string"),
 	})
 	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "分页", notes = "传入checkOrderInfoDTO")
-	public R<IPage<CheckOrderInfoVO>> todayPage(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO, Query query) {
+	@ApiOperation(value = "分页", notes = "传入实体类CheckOrderInfoDTO")
+	public R<IPage<CheckOrderInfoVO>> unconfirmDelayPage(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO, Query query) {
 		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			checkOrderInfoDTO.setOrgId(Func.toLong(user.getDeptId()));
+		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());
+			}
+		}
+		CheckOrderSettingEntity vo = new CheckOrderSettingEntity();
+		LambdaQueryWrapper<CheckOrderSettingEntity> wrapper = Wrappers.<CheckOrderSettingEntity>query().lambda();
+		wrapper.eq(CheckOrderSettingEntity::getIsDeleted, 0);
+		List<CheckOrderSettingEntity> settingEntityList = checkOrderSettingService.list(wrapper);
+		if (null != settingEntityList && settingEntityList.size() > 0) {
+			CheckOrderSettingEntity settingEntity = settingEntityList.get(0);
+			checkOrderInfoDTO.setOrderComfireDelayTime(settingEntity.getOrderComfireDelayTime());
 		} else {
-			checkOrderInfoDTO.setOrgId(null);
+			checkOrderInfoDTO.setOrderComfireDelayTime(120);
 		}
-		Date date = new Date();
-		String dt = Func.formatDateTime(date);
-		checkOrderInfoDTO.setCreateTime(Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd")));
-		IPage<CheckOrderInfoVO> pages = checkOrderService.selectPage(Condition.getPage(query), checkOrderInfoDTO);
+
+		IPage<CheckOrderInfoVO> pages = rtuCheckOrderService.selectConfirmDelayPage(Condition.getPage(query), checkOrderInfoDTO);
 		List<CheckOrderInfoVO> list = pages.getRecords();
 		for (CheckOrderInfoVO v : list) {
-			RtuCheckOrderWrapper.build().addInfoVO(v);
+			RtuCheckOrderWrapper.build().entityVO(v);
 		}
 		return R.data(pages);
 	}
@@ -243,68 +253,83 @@ public class RtuCheckOrderController extends BladeController {
 	 */
 	@GetMapping("/detail")
 	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入CheckOrderInfoEntity")
+	@ApiOperation(value = "详情", notes = "传入实体类CheckOrderInfoEntity")
 	public R<CheckOrderInfoVO> detail(CheckOrderInfoEntity checkOrderInfoEntity) {
-		BladeUser user = AuthUtil.getUser();
-
-		CheckOrderInfoEntity detail = checkOrderService.getOne(Condition.getQueryWrapper(checkOrderInfoEntity));
-
+		if (checkOrderInfoEntity.getId() == null) {
+			return R.fail("参数错误");
+		}
+		CheckOrderInfoEntity detail = rtuCheckOrderService.getById(checkOrderInfoEntity.getId());
 		LambdaQueryWrapper<RtuInfoEntity> wrapper = Wrappers.<RtuInfoEntity>query().lambda();
 		wrapper.eq(RtuInfoEntity::getRtuCode, detail.getRtuCode());
 		wrapper.eq(RtuInfoEntity::getIsDeleted, 0L);
 		RtuInfoEntity rtuInfoEntity = rtuBaseInfoService.getOne(wrapper);
-
 		CheckOrderInfoVO vo = RtuCheckOrderWrapper.build().entityVO(detail);
-		RtuCheckOrderWrapper.build().addInfoVO(vo);
-
 		vo.setRtuName(rtuInfoEntity.getRtuName());
 		vo.setAdCity(rtuInfoEntity.getAdCity());
 		vo.setAdDist(rtuInfoEntity.getAdDist());
-		vo.setAreaName(rtuInfoEntity.getAdCity() + "/" + rtuInfoEntity.getAdDist());
 		vo.setLocationDesc(rtuInfoEntity.getLocationDesc());
 		vo.setLng(rtuInfoEntity.getLng());
 		vo.setLat(rtuInfoEntity.getLat());
-
+		vo.setNetworkPayer(rtuInfoEntity.getNetworkPayer());
+		vo.setNetworkSimId(rtuInfoEntity.getNetworkSimId());
+		vo.setIsRain(rtuInfoEntity.getIsRain());
+		vo.setIsRiver(rtuInfoEntity.getIsRiver());
+		vo.setIsRes(rtuInfoEntity.getIsRes());
+		vo.setIsGround(rtuInfoEntity.getIsGround());
+		vo.setIsVideo(rtuInfoEntity.getIsVideo());
 		LambdaQueryWrapper<RtuStatusEntity> statusWwrapper = Wrappers.<RtuStatusEntity>query().lambda();
 		statusWwrapper.eq(RtuStatusEntity::getRtuCode, detail.getRtuCode());
 		statusWwrapper.eq(RtuStatusEntity::getIsDeleted, 0L);
-		RtuStatusEntity statusEntity = iRtuManageService.getOne(statusWwrapper);
+		RtuStatusEntity statusEntity = rtuManageService.getOne(statusWwrapper);
 		if (null != statusEntity) {
 			vo.setLastUpTime(statusEntity.getLastUpTime());
 		}
-
-		vo.setIsRain(rtuInfoEntity.getIsRain());
-		vo.setIsRiver(rtuInfoEntity.getIsRiver());
-		vo.setIsRes(rtuInfoEntity.getIsRes());
-		vo.setIsGround(rtuInfoEntity.getIsGround());
-
-		if (rtuInfoEntity.getIsRain() == 1) {
+		if (rtuInfoEntity.getIsRain() != null && rtuInfoEntity.getIsRain() == 1) {
 			LambdaQueryWrapper<RtuDataRainEntity> rainwrapper = Wrappers.<RtuDataRainEntity>query().lambda();
 			rainwrapper.eq(RtuDataRainEntity::getRtuCode, detail.getRtuCode());
 			rainwrapper.eq(RtuDataRainEntity::getIsDeleted, 0L);
-			RtuDataRainEntity rainEntity = iRtuDataRainService.getOne(rainwrapper);
-			vo.setDrp(rainEntity.getDrp());
-		} else if (rtuInfoEntity.getIsRiver() == 1) {
+			RtuDataRainEntity rainEntity = rtuDataRainService.getOne(rainwrapper);
+			if (null != rainEntity) {
+				vo.setDrp(rainEntity.getDrp());
+			}
+		} else if (rtuInfoEntity.getIsRiver() != null && rtuInfoEntity.getIsRiver() == 1) {
 			LambdaQueryWrapper<RtuDataRiverEntity> riverwrapper = Wrappers.<RtuDataRiverEntity>query().lambda();
 			riverwrapper.eq(RtuDataRiverEntity::getRtuCode, detail.getRtuCode());
 			riverwrapper.eq(RtuDataRiverEntity::getIsDeleted, 0L);
-			RtuDataRiverEntity riverEntity = iRtuDataRiverService.getOne(riverwrapper);
-			vo.setZ(riverEntity.getZ());
-		} else if (rtuInfoEntity.getIsRes() == 1) {
+			RtuDataRiverEntity riverEntity = rtuDataRiverService.getOne(riverwrapper);
+			if (riverEntity != null) {
+				vo.setZ(riverEntity.getZ());
+			}
+		} else if (rtuInfoEntity.getIsRes() != null && rtuInfoEntity.getIsRes() == 1) {
 			LambdaQueryWrapper<RtuDataRsvrEntity> rsvrWrapper = Wrappers.<RtuDataRsvrEntity>query().lambda();
 			rsvrWrapper.eq(RtuDataRsvrEntity::getRtuCode, detail.getRtuCode());
 			rsvrWrapper.eq(RtuDataRsvrEntity::getIsDeleted, 0L);
-			RtuDataRsvrEntity rsvrEntity = iRtuDataRsvrService.getOne(rsvrWrapper);
-			vo.setRz(rsvrEntity.getRz());
-		} else if (rtuInfoEntity.getIsGround() == 1) {
-//			LambdaQueryWrapper<RtuDataRainEntity> rainwrapper = Wrappers.<RtuDataRainEntity>query().lambda();
-//			rainwrapper.eq(RtuDataRainEntity::getRtuCode,detail.getRtuCode());
-//			rainwrapper.eq(RtuDataRainEntity::getIsDeleted,0L);
-//			RtuDataRainEntity rainEntity=iRtuDataRainService.getOne(rainwrapper);
-//			vo.setDrp(rainEntity.getDrp());
-		}
+			RtuDataRsvrEntity rsvrEntity = rtuDataRsvrService.getOne(rsvrWrapper);
+			if (rsvrEntity != null) {
+				vo.setRz(rsvrEntity.getRz());
+			}
+		} else if (rtuInfoEntity.getIsGround() != null && rtuInfoEntity.getIsGround() == 1) {
 
+		}
+		return R.data(vo);
+	}
 
+	/**
+	 * 详情
+	 */
+	@GetMapping("/setting/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "设置详情")
+	public R<CheckOrderSettingEntity> settingDetail() {
+		CheckOrderSettingEntity vo = new CheckOrderSettingEntity();
+		LambdaQueryWrapper<CheckOrderSettingEntity> wrapper = Wrappers.<CheckOrderSettingEntity>query().lambda();
+		wrapper.eq(CheckOrderSettingEntity::getIsDeleted, 0);
+		List<CheckOrderSettingEntity> list = checkOrderSettingService.list(wrapper);
+		if (null != list && list.size() > 0) {
+			vo = list.get(0);
+		} else {
+			vo.setOrderComfireDelayTime(120);
+		}
 		return R.data(vo);
 	}
 
@@ -313,16 +338,16 @@ public class RtuCheckOrderController extends BladeController {
 	 */
 	@PostMapping("/save")
 	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "新增", notes = "传入checkOrderInfoEntity")
+	@ApiOperation(value = "新增", notes = "传入实体类CheckOrderInfoEntity")
 	public R save(@RequestBody CheckOrderInfoEntity checkOrderInfoEntity) {
-		DictInfoEntity dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CREATE.getCode());
+		DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CREATE.getCode());
 		checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
-		checkOrderService.save(checkOrderInfoEntity);
+		rtuCheckOrderService.save(checkOrderInfoEntity);
 		OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
 		processInfoEntity.setOrderId(checkOrderInfoEntity.getId());
 		processInfoEntity.setOrderStatusKey(checkOrderInfoEntity.getOrderStatusKey());
 		processInfoEntity.setProcessDesc(checkOrderInfoEntity.getOrderDesc());
-		return R.status(processService.save(processInfoEntity));
+		return R.status(rtuOrderProcessService.save(processInfoEntity));
 	}
 
 	/**
@@ -330,9 +355,9 @@ public class RtuCheckOrderController extends BladeController {
 	 */
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 5)
-	@ApiOperation(value = "修改", notes = "传入checkOrderInfoEntity")
+	@ApiOperation(value = "修改", notes = "传入实体类CheckOrderInfoEntity")
 	public R update(@RequestBody CheckOrderInfoEntity checkOrderInfoEntity) {
-		return R.status(checkOrderService.updateById(checkOrderInfoEntity));
+		return R.status(rtuCheckOrderService.updateById(checkOrderInfoEntity));
 	}
 
 	/**
@@ -340,9 +365,22 @@ public class RtuCheckOrderController extends BladeController {
 	 */
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "新增或修改", notes = "传入checkOrderInfoEntity")
+	@ApiOperation(value = "新增或修改", notes = "传入实体类CheckOrderInfoEntity")
 	public R submit(@RequestBody CheckOrderInfoEntity checkOrderInfoEntity) {
-		return R.status(checkOrderService.saveOrUpdate(checkOrderInfoEntity));
+		return R.status(rtuCheckOrderService.saveOrUpdate(checkOrderInfoEntity));
+	}
+
+	/**
+	 * 新增或修改
+	 */
+	@PostMapping("/setting/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入实体类CheckOrderInfoEntity")
+	public R settingSubmit(@RequestBody CheckOrderSettingEntity checkOrderSettingEntity) {
+		if (checkOrderSettingEntity.getId() <= 0L) {
+			checkOrderSettingEntity.setId(null);
+		}
+		return R.status(checkOrderSettingService.saveOrUpdate(checkOrderSettingEntity));
 	}
 
 	/**
@@ -350,9 +388,9 @@ public class RtuCheckOrderController extends BladeController {
 	 */
 	@PostMapping("/remove")
 	@ApiOperationSupport(order = 7)
-	@ApiOperation(value = "逻辑删除", notes = "传入projectInfoEntity")
+	@ApiOperation(value = "逻辑删除", notes = "传入ID数组")
 	public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
-		boolean temp = checkOrderService.deleteLogic(Func.toLongList(ids));
+		boolean temp = rtuCheckOrderService.deleteLogic(Func.toLongList(ids));
 		return R.status(temp);
 	}
 
@@ -368,12 +406,12 @@ public class RtuCheckOrderController extends BladeController {
 		@ApiImplicitParam(name = "orderDesc", value = "处理意见", paramType = "query", dataType = "string")
 	})
 	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "工单关闭", notes = "传入checkOrderInfoEntity")
+	@ApiOperation(value = "工单关闭", notes = "传入实体类CheckOrderInfoEntity")
 	public R orderClose(@ApiIgnore CheckOrderInfoEntity checkOrderInfoEntity) {
 		BladeUser user = AuthUtil.getUser();
-		DictInfoEntity dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE.getCode());
+		DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE.getCode());
 		checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
-		CheckOrderInfoEntity detail = this.checkOrderService.getById(checkOrderInfoEntity.getId());
+		CheckOrderInfoEntity detail = this.rtuCheckOrderService.getById(checkOrderInfoEntity.getId());
 		if (null == detail || detail.getOrderClose() == OrderCloseEnum.ACTIVE_CLOSE.getCode()) {
 			return R.status(false);
 		}
@@ -382,25 +420,29 @@ public class RtuCheckOrderController extends BladeController {
 		detail.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
 		detail.setUpdateTime(new Date());
 		detail.setUpdateUser(user.getUserId());
-		checkOrderService.updateById(detail);
+		rtuCheckOrderService.updateById(detail);
 		OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
 		processInfoEntity.setOrderId(detail.getId());
 		processInfoEntity.setOrderStatusKey(detail.getOrderStatusKey());
-		processInfoEntity.setProcessDesc("由[" + user.getNickName() + "]人工关闭维修任务:" + checkOrderInfoEntity.getOrderDesc());
+		if (checkOrderInfoEntity.getOrderDesc() != null) {
+			processInfoEntity.setProcessDesc("由用户[" + user.getNickName() + "]人工关闭维修任务,处理意见:" + checkOrderInfoEntity.getOrderDesc());
+		} else {
+			processInfoEntity.setProcessDesc("由用户[" + user.getNickName() + "]人工关闭维修任务");
+		}
 		processInfoEntity.setCreateUser(user.getUserId());
 		processInfoEntity.setUpdateUser(user.getUserId());
-		processService.save(processInfoEntity);
+		rtuOrderProcessService.save(processInfoEntity);
 		if (null != detail.getWarnId()) {
 			List<DictBiz> orderFromDict = dictBizService.getList("rtu_check_order_from");
 			for (DictBiz biz : orderFromDict) {
 				if (biz.getDictKey().equals(OrderFromEnum.FROM_WARNING.getCode())) {
-					RtuWarningInfoEntity warningInfoEntity = this.warningService.getById(detail.getWarnId());
+					RtuWarningInfoEntity warningInfoEntity = this.rtuWarningService.getById(detail.getWarnId());
 					if (null != warningInfoEntity) {
 						warningInfoEntity.setWarningRecoveryTime(new Date());
 						warningInfoEntity.setWarningStatus(WarningStatusEnum.STATUS_CLOSE.getCode());
 						warningInfoEntity.setUpdateTime(new Date());
 						warningInfoEntity.setUpdateUser(user.getUserId());
-						this.warningService.updateById(warningInfoEntity);
+						this.rtuWarningService.updateById(warningInfoEntity);
 					}
 					break;
 				}
@@ -408,11 +450,10 @@ public class RtuCheckOrderController extends BladeController {
 		}
 		RtuStatusEntity rtuStatusEntity = new RtuStatusEntity();
 		rtuStatusEntity.setRunStatusId(EquipmentStatusEnum.STATUS_RUN.getCode());
-		this.manageService.updateRtuStatus(rtuStatusEntity);
+		this.rtuManageService.updateRtuStatus(rtuStatusEntity);
 		return R.success("工单关闭已操作成功!");
 	}
 
-
 	/**
 	 * 查询最新的数据
 	 */
@@ -423,11 +464,10 @@ public class RtuCheckOrderController extends BladeController {
 		LambdaQueryWrapper<CheckOrderInfoEntity> wrapper = Wrappers.<CheckOrderInfoEntity>query().lambda();
 		wrapper.orderByDesc(CheckOrderInfoEntity::getUpdateTime);
 		wrapper.last("limit 1");
-		List<CheckOrderInfoEntity> pages = checkOrderService.list(wrapper);
+		List<CheckOrderInfoEntity> pages = rtuCheckOrderService.list(wrapper);
 		return R.data(RtuCheckOrderWrapper.build().listVO(pages));
 	}
 
-
 	/**
 	 * 工单确认
 	 *
@@ -436,13 +476,13 @@ public class RtuCheckOrderController extends BladeController {
 	 */
 	@PostMapping("/confirm")
 	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "工单确认", notes = "传入checkOrderInfoEntity")
+	@ApiOperation(value = "工单确认", notes = "传入实体类CheckOrderInfoEntity")
 	public R orderConfirm(@RequestBody CheckOrderInfoEntity checkOrderInfoEntity) {
-		DictInfoEntity dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+		DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
 		checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
 		BladeUser user = AuthUtil.getUser();
 		User userInfo = userService.getById(user.getUserId());
-		CheckOrderInfoEntity detail = this.checkOrderService.getById(checkOrderInfoEntity.getId());
+		CheckOrderInfoEntity detail = this.rtuCheckOrderService.getById(checkOrderInfoEntity.getId());
 		if (null == detail || null != detail.getOrderConfirmUser()) {
 			return R.status(false);
 		}
@@ -453,25 +493,68 @@ public class RtuCheckOrderController extends BladeController {
 		detail.setUpdateTime(new Date());
 		detail.setContactUser(userInfo.getId());
 		detail.setContactPhone(userInfo.getPhone());
-		checkOrderService.updateById(detail);
+		rtuCheckOrderService.updateById(detail);
 		OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
 		processInfoEntity.setOrderId(checkOrderInfoEntity.getId());
 		processInfoEntity.setOrderStatusKey(checkOrderInfoEntity.getOrderStatusKey());
 		processInfoEntity.setProcessDesc("维修任务由[" + userInfo.getRealName() + "]确认");
-		return R.status(processService.save(processInfoEntity));
+		return R.status(rtuOrderProcessService.save(processInfoEntity));
+	}
+
+	@PostMapping("/manually")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "人工生成工单", notes = "传入实体类CheckOrderInfoDTO")
+	public R manuallyOrder(@RequestBody CheckOrderInfoDTO checkOrderInfoDTO) {
+		if (null == checkOrderInfoDTO.getRtuCode()) {
+			return R.status(false);
+		}
+		BladeUser user = AuthUtil.getUser();
+		LambdaQueryWrapper<CheckOrderInfoEntity> wrapper = Wrappers.<CheckOrderInfoEntity>query().lambda();
+		wrapper.eq(CheckOrderInfoEntity::getIsDeleted, 0);
+		wrapper.eq(CheckOrderInfoEntity::getOrderClose, 0);
+		wrapper.eq(CheckOrderInfoEntity::getRtuCode, checkOrderInfoDTO.getRtuCode());
+		long orders = rtuCheckOrderService.count(wrapper);
+		if (orders > 0) {
+			return R.fail("当前测站已经有维修任务");
+		}
+		DictInfoEntity statusdict = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CREATE.getCode());
+		DictInfoEntity fromdict = baseInfoDictService.getDict(DictBusinessConstant.ORDER_FROM_CODE, OrderFromEnum.FROM_MANUALLY.getCode());
+		checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+		checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CREATE.getCode());
+		checkOrderInfoDTO.setOrderFromKey(fromdict.getId());
+		checkOrderInfoDTO.setOrderStatusKey(statusdict.getId());
+		checkOrderInfoDTO.setStatus(1);
+		checkOrderInfoDTO.setCreateTime(new Date());
+		checkOrderInfoDTO.setCreateUser(user.getUserId());
+		checkOrderInfoDTO.setCreateDept(Func.toLong(user.getDeptId()));
+		rtuCheckOrderService.save(checkOrderInfoDTO);
+		//增加工单处理创建记录
+		OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
+		processInfoEntity.setOrderId(checkOrderInfoDTO.getId());
+		processInfoEntity.setOrderStatusKey(statusdict.getId());
+		processInfoEntity.setProcessDesc(checkOrderInfoDTO.getOrderDesc());
+
+		rtuOrderProcessService.save(processInfoEntity);
+		//更新测站状态
+		RtuStatusEntity statusEntity = new RtuStatusEntity();
+		statusEntity.setRtuCode(checkOrderInfoDTO.getRtuCode());
+		statusEntity.setRunStatusId(EquipmentStatusEnum.STATUS_FAILURE.getCode());
+		rtuManageService.updateRtuStatus(statusEntity);
+
+		return R.status(true);
 	}
 
 
 	@PostMapping("/change")
 	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "任务指派", notes = "CheckOrderInfoDTO")
+	@ApiOperation(value = "任务指派", notes = "传入实体类CheckOrderInfoDTO")
 	public R orderChange(@RequestBody CheckOrderInfoDTO checkOrderInfoDTO) {
-		CheckOrderInfoEntity detail = this.checkOrderService.getById(checkOrderInfoDTO.getId());
+		CheckOrderInfoEntity detail = this.rtuCheckOrderService.getById(checkOrderInfoDTO.getId());
 		if (null == detail) {
 			return R.status(false);
 		}
 		BladeUser user = AuthUtil.getUser();
-		DictInfoEntity dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+		DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
 		if (detail.getOrderConfirm() != OrderConfirmEnum.ACTIVE_CONFIRM.getCode()) {
 			detail.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
 			detail.setOrderStatusKey(dictInfoEntity.getId());
@@ -483,12 +566,12 @@ public class RtuCheckOrderController extends BladeController {
 		processInfoEntity.setOrderId(detail.getId());
 		processInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
 		processInfoEntity.setProcessDesc("维修任务指派给[" + userInfo.getRealName() + "]");
-		processService.save(processInfoEntity);
+		rtuOrderProcessService.save(processInfoEntity);
 		detail.setUpdateTime(new Date());
 		detail.setContactUser(userInfo.getId());
 		detail.setContactPhone(userInfo.getPhone());
-		checkOrderService.updateById(detail);
-		return R.status(checkOrderService.updateById(detail));
+		rtuCheckOrderService.updateById(detail);
+		return R.status(rtuCheckOrderService.updateById(detail));
 	}
 
 
@@ -501,15 +584,32 @@ public class RtuCheckOrderController extends BladeController {
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "统计表格")
 	public R<List<CheckOrderCountVO>> orderStatistics() {
-		CheckOrderInfoDTO checkOrderInfoDTO = new CheckOrderInfoDTO();
 		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			checkOrderInfoDTO.setOrgId(Func.toLong(user.getDeptId()));
-		} else {
-			checkOrderInfoDTO.setOrgId(null);
+		List<CheckOrderCountVO> countList = new LinkedList<>();
+		LambdaQueryWrapper<User> userQueryWrapper = Wrappers.<User>query().lambda();
+		userQueryWrapper.eq(User::getIsDeleted, 0);
+		userQueryWrapper.eq(User::getDeptId, Func.toLong(user.getDeptId()));
+		List<User> list = userService.list(userQueryWrapper);
+		for (User u : list) {
+			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::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);
+			countList.add(vo);
 		}
-		List<CheckOrderCountVO> pages = checkOrderService.orderReportCount(checkOrderInfoDTO);
-		return R.data(pages);
+		return R.data(countList);
+
+
 	}
 
 	/**
@@ -518,37 +618,63 @@ public class RtuCheckOrderController extends BladeController {
 	 * @return
 	 */
 	@GetMapping("/org/statistics")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "adCode", value = "行政区划编码", paramType = "query", dataType = "string"),
+	})
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "统计表格")
 	public R<List<OrgCheckOrderCountVO>> orgOrderStatistics() {
-		List<OrgCheckOrderCountVO> list = new LinkedList<>();
 		BladeUser user = AuthUtil.getUser();
-		List<Dept> root = this.deptService.getDeptChild(Func.toLong(user.getDeptId()));
-
+		List<OrgCheckOrderCountVO> list = new LinkedList<>();
+		LambdaQueryWrapper<Dept> wrapper = Wrappers.<Dept>query().lambda();
+		wrapper.eq(Dept::getIsDeleted, 0);
+		wrapper.eq(Dept::getParentId, Func.toLong(user.getDeptId()));
+		List<Dept> root = this.deptService.list(wrapper);
 		for (Dept dept : root) {
 			OrgCheckOrderCountVO orgCheckOrderCountVO = new OrgCheckOrderCountVO();
-			orgCheckOrderCountVO.setId(dept.getId());
+			orgCheckOrderCountVO.setDeptId(dept.getId());
 			orgCheckOrderCountVO.setOrgName(dept.getDeptName());
-
 			CheckOrderInfoDTO checkOrderInfoDTO = new CheckOrderInfoDTO();
-
-			checkOrderInfoDTO.setOrgId(Func.toLong(dept.getId()));
-
-			Long orderCount = checkOrderService.orderCount(checkOrderInfoDTO);
-
+			LambdaQueryWrapper<DeptRegionEntity> deptLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
+			deptLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
+			deptLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, dept.getId());
+			DeptRegionEntity deptRegionEntity = deptRegionService.getOne(deptLambdaQueryWrapper);
+			checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
 			checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
-			Long unCloseOrderCount = checkOrderService.unCloseOrderCount(checkOrderInfoDTO);
-
-
+			Long orderCount = rtuCheckOrderService.orderCount(checkOrderInfoDTO);
 			orgCheckOrderCountVO.setOrderCount(orderCount);
+			checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+			checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+			Long unCloseOrderCount = rtuCheckOrderService.unCloseOrderCount(checkOrderInfoDTO);
 			orgCheckOrderCountVO.setProcessingOrderCount(unCloseOrderCount);
-
-
+			checkOrderInfoDTO.setOrderConfirm(OrderConfirmEnum.ACTIVE_CREATE.getCode());
+			checkOrderInfoDTO.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+			long count = rtuCheckOrderService.unconfirmOrderCount(checkOrderInfoDTO);
+			orgCheckOrderCountVO.setUnconfirmOrderCount(count);
 			list.add(orgCheckOrderCountVO);
 		}
-
-
 		return R.data(list);
 	}
 
+	@GetMapping("/count")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "统计表格")
+	public R<Map<String, Object>> orderCount(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO) {
+		if (checkOrderInfoDTO.getAdCode() == null) {
+			return R.status(false);
+		}
+		checkOrderInfoDTO.setOrderClose(0);
+		Long orderCount = rtuCheckOrderService.orderCount(checkOrderInfoDTO);
+		Long unConfirmOrderCount = rtuCheckOrderService.unconfirmOrderCount(checkOrderInfoDTO);
+		Long unCloseOrderCount = rtuCheckOrderService.unCloseOrderCount(checkOrderInfoDTO);
+		Map<String, Object> data = new HashMap<>();
+		data.put("orderCount", orderCount);
+		data.put("orderUnconfirm", unConfirmOrderCount);
+		data.put("orderProcessing", unCloseOrderCount);
+		checkOrderInfoDTO.setOrderConfirm(1);
+		checkOrderInfoDTO.setOrderClose(1);
+		Long reportOrderCount = rtuCheckOrderService.orderCount(checkOrderInfoDTO);
+		data.put("reportOrderCount", reportOrderCount);
+		return R.data(data);
+	}
 }

+ 18 - 0
src/main/java/org/springblade/modules/business/check/order/dto/CheckOrderInfoDTO.java

@@ -54,4 +54,22 @@ public class CheckOrderInfoDTO extends CheckOrderInfoEntity {
 	@ApiModelProperty(value = "运维人员ID")
 	private Long servicePersonId;
 
+
+	/**
+	 * 维修任务确认超时设置
+	 */
+	@ApiModelProperty(value = "维修任务确认超时设置")
+	private Integer orderComfireDelayTime;
+
+	/**
+	 * 机构ID
+	 */
+	@ApiModelProperty(value = "机构ID")
+	private Long deptId;
+
+	/**
+	 * 异常类型
+	 */
+	@ApiModelProperty(value = "异常类型")
+	private Integer warnKind;
 }

+ 0 - 2
src/main/java/org/springblade/modules/business/check/order/entity/CheckOrderInfoEntity.java

@@ -108,6 +108,4 @@ public class CheckOrderInfoEntity extends BaseEntity {
 	@ApiModelProperty(value = "负责人")
 	private Long contactUser;
 
-
-
 }

+ 32 - 0
src/main/java/org/springblade/modules/business/check/order/entity/CheckOrderSettingEntity.java

@@ -0,0 +1,32 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2023/3/8
+ */
+package org.springblade.modules.business.check.order.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+/***
+ * Date:2023/3/8
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("rtu_check_order_setting")
+public class CheckOrderSettingEntity extends BaseEntity {
+	/**
+	 * 维修任务确认超时设置
+	 */
+	@ApiModelProperty(value = "维修任务确认超时设置")
+	private Integer orderComfireDelayTime;
+}

+ 24 - 0
src/main/java/org/springblade/modules/business/check/order/mapper/CheckOrderSettingMapper.java

@@ -0,0 +1,24 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/22
+ */
+package org.springblade.modules.business.check.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.modules.business.check.order.entity.CheckOrderSettingEntity;
+
+
+/***
+ * Date:2022/8/22
+ * Title: 维修任务配置
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+public interface CheckOrderSettingMapper extends BaseMapper<CheckOrderSettingEntity> {
+
+
+}

+ 11 - 0
src/main/java/org/springblade/modules/business/check/order/mapper/CheckOrderSettingMapper.xml

@@ -0,0 +1,11 @@
+<?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.check.order.mapper.CheckOrderSettingMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="checkOrderInfoResultMap"
+               type="org.springblade.modules.business.check.order.entity.CheckOrderSettingEntity">
+        <result column="order_comfire_delay_time" property="orderComfireDelayTime"/>
+    </resultMap>
+
+</mapper>

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

@@ -26,6 +26,14 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 public interface RtuCheckOrderMapper extends BaseMapper<CheckOrderInfoEntity> {
+
+	/**
+	 * 列表,不分页
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	List<CheckOrderInfoVO> allOrders( @Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
+
 	/**
 	 * 自定义分页
 	 *
@@ -35,16 +43,64 @@ public interface RtuCheckOrderMapper extends BaseMapper<CheckOrderInfoEntity> {
 	 */
 	List<CheckOrderInfoVO> selectPage(IPage page, @Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
 
-	List<CheckOrderInfoVO> unconfirmOrderList(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
+	/**
+	 * 分页,按异常类型查询
+	 * @param page
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	List<CheckOrderInfoVO> selectWarnPage(IPage page, @Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
 
 
-	Long unconfirmOrderCount(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
+	/**
+	 * 我的任务
+	 * @param page
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	List<CheckOrderInfoVO> selectMyPage(IPage page, @Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
+
+	/**
+	 * 查询确认超时维修任务
+	 * @param page
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	List<CheckOrderInfoVO> selectConfirmDelayPage(IPage page, @Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
 
+	/**
+	 * 未确认任务列表
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	List<CheckOrderInfoVO> unconfirmOrderList(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
+
+	/**
+	 * 未确认任务数量
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	Long unconfirmOrderCount(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
 
+	/**
+	 * 已经反馈任务数量
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
 	List<CheckOrderCountVO> orderReportCount(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
 
+	/**
+	 * 任务数量
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
 	Long orderCount(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
 
+	/**
+	 * 未完成任务数量
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
 	Long unCloseOrderCount(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
 
 }

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

@@ -5,13 +5,6 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="checkOrderInfoResultMap"
                type="org.springblade.modules.business.check.order.entity.CheckOrderInfoEntity">
-        <result column="id" property="id"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
         <result column="rtu_code" property="rtuCode"/>
         <result column="order_desc" property="orderDesc"/>
         <result column="order_from_key" property="orderFromKey"/>
@@ -27,13 +20,6 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="checkOrderInfoVOResultMap" type="org.springblade.modules.business.check.order.vo.CheckOrderInfoVO">
-        <result column="id" property="id"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
         <result column="rtu_code" property="rtuCode"/>
         <result column="order_desc" property="orderDesc"/>
         <result column="order_from_key" property="orderFromKey"/>
@@ -48,31 +34,33 @@
         <result column="location_desc" property="locationDesc"/>
         <result column="rtu_name" property="rtuName"/>
         <result column="real_name" property="processorName"/>
-        <result column="org_name" property="orgName"/>
         <result column="ad_city" property="adCity"/>
         <result column="ad_dist" property="adDist"/>
-        <result column="warn_kind" property="warnKind"/>
         <result column="contact_user" property="contactUser"/>
         <result column="contact_phone" property="contactPhone"/>
         <result column="contact_user_name" property="contactUserName"/>
+        <result column="ancestors" property="ancestors"/>
+        <result column="adcd" property="adCode"/>
+        <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_video" property="isVideo"/>
     </resultMap>
 
     <resultMap id="checkOrderCountVOResultMap" type="org.springblade.modules.business.check.order.vo.CheckOrderCountVO">
-        <result column="id" property="id"/>
         <result column="real_name" property="servicePersonName"/>
         <result column="order_count" property="orderCount"/>
         <result column="processing_order_count" property="processingOrderCount"/>
     </resultMap>
 
-    <select id="selectPage" resultMap="checkOrderInfoVOResultMap">
+    <select id="allOrders" resultMap="checkOrderInfoVOResultMap">
         SELECT
-        o.*,u.real_name,i.rtu_name,dept.dept_name AS org_name,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist,u2.real_name AS contact_user_name
+        o.*,u.real_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
         FROM
         rtu_failure_check_order o
-        LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code
-        LEFT JOIN data_mv_att_st_base p ON i.rtu_code = p.st_code and p.is_deleted=0
-        LEFT JOIN data_ad_cd_b a ON a.adcd = p.ad_code and a.is_deleted=0
-        LEFT JOIN blade_dept dept ON dept.id = i.org_id and dept.is_deleted=0
+        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
         WHERE
@@ -83,9 +71,6 @@
         <if test="checkOrderInfoDTO.rtuName!=null">
             and i.rtu_name like concat(concat('%', #{checkOrderInfoDTO.rtuName}), '%')
         </if>
-        <if test="checkOrderInfoDTO.orgId!=null">
-            and i.org_id = #{checkOrderInfoDTO.orgId}
-        </if>
         <if test="checkOrderInfoDTO.contactUser!=null">
             and o.contact_user = #{checkOrderInfoDTO.contactUser}
         </if>
@@ -96,61 +81,194 @@
             and o.order_close = #{checkOrderInfoDTO.orderClose}
         </if>
         <if test="checkOrderInfoDTO.adCode!=null">
-            and (p.ad_code =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE ancestors  like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
+            and (a.adcd =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE
+            ancestors like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
         </if>
-        order by o.create_time ,o.order_confirm  ,o.order_close
+        order by o.create_time ,o.order_confirm ,o.order_close
     </select>
 
-
-    <select id="orderCount" resultType="java.lang.Long">
+    <select id="selectPage" resultMap="checkOrderInfoVOResultMap">
         SELECT
-        count(*)
+        o.*,u.real_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
         FROM
         rtu_failure_check_order o
-        LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code
+        LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code and i.is_deleted=0
+        LEFT JOIN rtu_warning w ON w.rtu_code = o.rtu_code and w.is_deleted = 0 and w.warning_kind=1
+        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
         WHERE
         o.is_deleted = 0
-        <if test="checkOrderInfoDTO.orgId!=null">
-            and i.org_id = #{checkOrderInfoDTO.orgId}
+        <if test="checkOrderInfoDTO.rtuCode!=null">
+            and o.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.contactUser!=null">
+            and o.contact_user = #{checkOrderInfoDTO.contactUser}
+        </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.adCode!=null">
+            and (a.adcd =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE
+            ancestors like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
+        </if>
+        order by o.order_confirm ,o.order_close,w.warning_kind desc ,o.create_time
     </select>
 
+    <select id="selectWarnPage" resultMap="checkOrderInfoVOResultMap">
+        SELECT
+        o.*,u.real_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
+        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 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
+        WHERE
+        o.is_deleted = 0
+        and w.warning_kind = #{checkOrderInfoDTO.warnKind}
+        <if test="checkOrderInfoDTO.rtuCode!=null">
+            and o.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.contactUser!=null">
+            and o.contact_user = #{checkOrderInfoDTO.contactUser}
+        </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.adCode!=null">
+            and (a.adcd =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE
+            ancestors like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
+        </if>
+        order by o.order_confirm ,o.order_close,o.create_time
+    </select>
 
-    <select id="unCloseOrderCount" resultType="java.lang.Long">
+    <select id="selectMyPage" resultMap="checkOrderInfoVOResultMap">
         SELECT
-        count(*)
+        o.*,u.real_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
         FROM
         rtu_failure_check_order o
-        LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code
+        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
         WHERE
         o.is_deleted = 0
-        <if test="checkOrderInfoDTO.orgId!=null">
-            and i.org_id = #{checkOrderInfoDTO.orgId}
+        <if test="checkOrderInfoDTO.rtuCode!=null">
+            and o.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.contactUser!=null">
+            and o.contact_user = #{checkOrderInfoDTO.contactUser}
+        </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.adCode!=null">
+            and (a.adcd =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE
+            ancestors like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
+        </if>
+        order by o.order_confirm_time  desc
     </select>
 
-    <select id="unconfirmOrderList" resultMap="checkOrderInfoVOResultMap">
+
+    <select id="selectConfirmDelayPage" resultMap="checkOrderInfoVOResultMap">
         SELECT
-        o.*,u.real_name,i.rtu_name,dept.dept_name AS org_name,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist
+        o.*,u.real_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
         FROM
         rtu_failure_check_order o
-        LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code
-        LEFT JOIN data_mv_att_st_base p ON i.rtu_code = p.st_code and p.is_deleted=0
-        LEFT JOIN data_ad_cd_b a ON a.adcd = p.ad_code and a.is_deleted=0
-        LEFT JOIN blade_user u ON u.id = o.update_user
-        LEFT JOIN blade_dept dept ON dept.id = i.org_id and dept.is_deleted=0
+        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
+        WHERE
+        o.is_deleted = 0
+        and o.order_confirm = 0
+        and (now() > date_add(o.create_time ,interval #{checkOrderInfoDTO.orderComfireDelayTime} minute))
+        <if test="checkOrderInfoDTO.rtuCode!=null">
+            and o.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.adCode!=null">
+            and (a.adcd =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE
+            ancestors like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
+        </if>
+        order by o.create_time
+    </select>
 
+    <select id="orderCount" 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
-        <if test="checkOrderInfoDTO.orgId!=null">
-            and i.org_id = #{checkOrderInfoDTO.orgId}
+        <if test="checkOrderInfoDTO.orderClose!=null">
+            and o.order_close = #{checkOrderInfoDTO.orderClose}
         </if>
         <if test="checkOrderInfoDTO.orderConfirm!=null">
             and o.order_confirm = #{checkOrderInfoDTO.orderConfirm}
         </if>
+        <if test="checkOrderInfoDTO.contactUser!=null">
+            and o.contact_user = #{checkOrderInfoDTO.contactUser}
+        </if>
+        <if test="checkOrderInfoDTO.adCode!=null">
+            and (a.adcd =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE
+            ancestors like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
+        </if>
+    </select>
+
+    <select id="unCloseOrderCount" resultType="java.lang.Long">
+        SELECT
+        count(*)
+        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
+        WHERE
+        o.is_deleted = 0
+        and o.order_close =0
+        and o.order_confirm=1
+        <if test="checkOrderInfoDTO.adCode!=null">
+            and (a.adcd =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE
+            ancestors like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
+        </if>
+        order by o.create_time asc
+    </select>
+
+    <select id="unconfirmOrderList" resultMap="checkOrderInfoVOResultMap">
+        SELECT
+        o.*,u.real_name,i.rtu_name,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist
+        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
+        WHERE
+        o.is_deleted = 0
+        and o.order_confirm = 0
         <if test="checkOrderInfoDTO.rtuCode!=null">
             and o.rtu_code like concat(concat('%', #{checkOrderInfoDTO.rtuCode}), '%')
         </if>
@@ -158,10 +276,10 @@
             and i.rtu_name like concat(concat('%', #{checkOrderInfoDTO.rtuName}), '%')
         </if>
         <if test="checkOrderInfoDTO.adCode!=null">
-            and (p.ad_code =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE ancestors  like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
+            and (a.adcd =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE
+            ancestors like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
         </if>
-        order by o.create_time asc
-        limit 10
+        order by o.create_time asc limit 10
     </select>
 
 
@@ -170,27 +288,28 @@
         count(*)
         FROM
         rtu_failure_check_order o
-        LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code
+        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
         WHERE
         o.is_deleted = 0
-        <if test="checkOrderInfoDTO.orgId!=null">
-            and i.org_id = #{checkOrderInfoDTO.orgId}
-        </if>
-        <if test="checkOrderInfoDTO.orderConfirm!=null">
-            and o.order_confirm = #{checkOrderInfoDTO.orderConfirm}
+        and o.order_confirm = 0
+        <if test="checkOrderInfoDTO.adCode!=null">
+            and (a.adcd =#{checkOrderInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE
+            ancestors like concat(concat('%', #{checkOrderInfoDTO.adCode}), '%')))
         </if>
     </select>
 
     <select id="orderReportCount" 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
+        order_confirm_user is not null AND order_confirm =1 GROUP BY order_confirm_user) o
         on u.id = o.order_confirm_user
         LEFT JOIN
-        (SELECT order_confirm_user,count(id) as processing_order_count FROM rtu_failure_check_order WHERE is_deleted=0 AND
+        (SELECT order_confirm_user,count(id) as processing_order_count FROM rtu_failure_check_order WHERE is_deleted=0
+        AND
         order_confirm_user is not null AND order_confirm =1 AND order_close=0 GROUP BY order_confirm_user) o2
         on u.id = o2.order_confirm_user
-         WHERE u.is_deleted =0
+        WHERE u.is_deleted =0
         <if test="checkOrderInfoDTO.orgId!=null">
             AND u.dept_id = #{checkOrderInfoDTO.orgId}
         </if>

+ 23 - 0
src/main/java/org/springblade/modules/business/check/order/service/ICheckOrderSettingService.java

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

+ 71 - 0
src/main/java/org/springblade/modules/business/check/order/service/IRtuCheckOrderService.java

@@ -12,6 +12,7 @@ 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.vo.CheckOrderCountVO;
 import org.springblade.modules.business.check.order.vo.CheckOrderInfoVO;
+import org.springblade.modules.business.warning.entity.RtuWarningInfoEntity;
 
 
 import java.util.List;
@@ -25,6 +26,13 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 public interface IRtuCheckOrderService extends BaseService<CheckOrderInfoEntity> {
+	/**
+	 * 列表,不分页
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	List<CheckOrderInfoVO> allOrders( CheckOrderInfoDTO checkOrderInfoDTO);
+
 	/**
 	 * 自定义分页
 	 * @param page
@@ -33,8 +41,42 @@ public interface IRtuCheckOrderService extends BaseService<CheckOrderInfoEntity>
 	 */
 	IPage<CheckOrderInfoVO> selectPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO);
 
+	/**
+	 * 分页,按异常类型查询
+	 * @param page
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	IPage<CheckOrderInfoVO> selectWarnPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO);
+
+	/**
+	 * 我的任务
+	 * @param page
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	IPage<CheckOrderInfoVO> selectMyPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO);
+
+	/**
+	 * 查询确认超时维修任务
+	 * @param page
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	IPage<CheckOrderInfoVO> selectConfirmDelayPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO);
+
+	/**
+	 * 未确认任务数量
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
 	Long unconfirmOrderCount(CheckOrderInfoDTO checkOrderInfoDTO);
 
+	/**
+	 * 未确认任务列表
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
 	List<CheckOrderInfoVO> unconfirmOrderList(CheckOrderInfoDTO checkOrderInfoDTO);
 
 
@@ -45,10 +87,39 @@ public interface IRtuCheckOrderService extends BaseService<CheckOrderInfoEntity>
 	 */
 	boolean updateOrderStatus(CheckOrderInfoEntity orderInfoEntity);
 
+	/**
+	 *
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
 	List<CheckOrderCountVO> orderReportCount( CheckOrderInfoDTO checkOrderInfoDTO);
 
+	/**
+	 * 任务总数
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
 	Long orderCount(CheckOrderInfoDTO checkOrderInfoDTO);
 
+	/**
+	 * 未关闭任务总数
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
 	Long unCloseOrderCount(CheckOrderInfoDTO checkOrderInfoDTO);
 
+
+	/**
+	 * 关闭维修任务
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	boolean closeOrder(CheckOrderInfoDTO checkOrderInfoDTO);
+
+	/**
+	 * 创建或更新维修任务
+	 * @param rtuWarningInfoEntity
+	 * @return
+	 */
+	boolean createOrUpdateOrder(RtuWarningInfoEntity rtuWarningInfoEntity);
 }

+ 28 - 0
src/main/java/org/springblade/modules/business/check/order/service/impl/CheckOrderSettingServiceImpl.java

@@ -0,0 +1,28 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2022/8/22
+ */
+package org.springblade.modules.business.check.order.service.impl;
+
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.modules.business.check.order.entity.CheckOrderSettingEntity;
+import org.springblade.modules.business.check.order.mapper.CheckOrderSettingMapper;
+import org.springblade.modules.business.check.order.service.ICheckOrderSettingService;
+import org.springframework.stereotype.Service;
+
+
+
+/***
+ * Date:2022/8/22
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Service
+public class CheckOrderSettingServiceImpl extends BaseServiceImpl<CheckOrderSettingMapper, CheckOrderSettingEntity> implements ICheckOrderSettingService {
+
+}

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

@@ -6,11 +6,25 @@
  */
 package org.springblade.modules.business.check.order.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.springblade.constant.BusinessConstant;
+import org.springblade.constant.DictBusinessConstant;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.enums.OrderCloseEnum;
+import org.springblade.enums.OrderConfirmEnum;
+import org.springblade.enums.OrderFromEnum;
 import org.springblade.enums.OrderStatusEnum;
+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.mapper.RtuCheckOrderMapper;
@@ -18,8 +32,17 @@ import org.springblade.modules.business.check.order.service.IRtuCheckOrderServic
 import org.springblade.modules.business.check.order.vo.CheckOrderCountVO;
 import org.springblade.modules.business.check.order.vo.CheckOrderInfoVO;
 import org.springblade.modules.business.check.process.entity.OrderProcessInfoEntity;
+import org.springblade.modules.business.check.process.service.IRtuOrderProcessService;
+import org.springblade.modules.business.warning.entity.RtuWarningInfoEntity;
+import org.springblade.modules.system.entity.Dept;
+import org.springblade.modules.system.entity.Role;
+import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.service.IDeptService;
+import org.springblade.modules.system.service.IRoleService;
+import org.springblade.modules.system.service.IUserService;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
 
@@ -33,11 +56,55 @@ import java.util.List;
  */
 @Service
 public class RtuCheckOrderServiceImpl extends BaseServiceImpl<RtuCheckOrderMapper, CheckOrderInfoEntity> implements IRtuCheckOrderService {
+	@Resource
+	private IBaseInfoDictService baseInfoDictService;
+
+	@Resource
+	private IRtuBaseInfoService rtuBaseInfoService;
+
+	@Resource
+	private IUserService userService;
+
+	@Resource
+	private IRtuOrderProcessService rtuOrderProcessService;
+
+	@Resource
+	private IBaseInfoRegionService baseInfoRegionService;
+
+	@Resource
+	private IDeptRegionService deptRegionService;
+
+	@Resource
+	private IDeptService deptService;
+
+	@Resource
+	private IRoleService roleService;
+
+	@Override
+	public List<CheckOrderInfoVO> allOrders(CheckOrderInfoDTO checkOrderInfoDTO) {
+		return baseMapper.allOrders(checkOrderInfoDTO);
+	}
+
 	@Override
 	public IPage<CheckOrderInfoVO> selectPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO) {
 		return page.setRecords(baseMapper.selectPage(page, checkOrderInfoDTO));
 	}
 
+	@Override
+	public IPage<CheckOrderInfoVO> selectWarnPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO) {
+		return page.setRecords(baseMapper.selectWarnPage(page, checkOrderInfoDTO));
+	}
+
+	@Override
+	public IPage<CheckOrderInfoVO> selectMyPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO) {
+		return page.setRecords(baseMapper.selectMyPage(page, checkOrderInfoDTO));
+	}
+
+	@Override
+	public IPage<CheckOrderInfoVO> selectConfirmDelayPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO) {
+		return page.setRecords(baseMapper.selectConfirmDelayPage(page, checkOrderInfoDTO));
+	}
+
 	@Override
 	public Long unconfirmOrderCount(CheckOrderInfoDTO checkOrderInfoDTO) {
 		return baseMapper.unconfirmOrderCount(checkOrderInfoDTO);
@@ -76,4 +143,124 @@ public class RtuCheckOrderServiceImpl extends BaseServiceImpl<RtuCheckOrderMappe
 	public Long unCloseOrderCount(CheckOrderInfoDTO checkOrderInfoDTO) {
 		return baseMapper.unCloseOrderCount(checkOrderInfoDTO);
 	}
+
+	@Override
+	public boolean closeOrder(CheckOrderInfoDTO checkOrderInfoDTO) {
+		LambdaQueryWrapper<CheckOrderInfoEntity> wrapper = Wrappers.<CheckOrderInfoEntity>query().lambda();
+		wrapper.eq(CheckOrderInfoEntity::getIsDeleted, 0);
+		wrapper.eq(CheckOrderInfoEntity::getRtuCode, checkOrderInfoDTO.getRtuCode());
+		wrapper.eq(CheckOrderInfoEntity::getOrderClose, OrderCloseEnum.ACTIVE_OPEN.getCode());
+		CheckOrderInfoEntity checkOrderInfoEntity = this.getOne(wrapper);
+		if (null != checkOrderInfoEntity) {
+			DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE.getCode());
+			//更新工单状态
+			checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
+			checkOrderInfoEntity.setOrderClose(OrderCloseEnum.ACTIVE_CLOSE.getCode());
+			checkOrderInfoEntity.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+			checkOrderInfoEntity.setUpdateUser(BusinessConstant.SYS_ADMIN_ID);
+			checkOrderInfoEntity.setUpdateTime(new Date());
+			this.updateById(checkOrderInfoEntity);
+			//增加工单处理关闭记
+			OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
+			processInfoEntity.setProcessDesc("由系统自动关闭维修任务");
+			processInfoEntity.setOrderId(checkOrderInfoEntity.getId());
+			processInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
+			processInfoEntity.setCreateUser(BusinessConstant.SYS_ADMIN_ID);
+			processInfoEntity.setUpdateUser(BusinessConstant.SYS_ADMIN_ID);
+			processInfoEntity.setUpdateTime(new Date());
+			processInfoEntity.setCreateTime(new Date());
+			rtuOrderProcessService.save(processInfoEntity);
+		}
+		return true;
+	}
+
+	@Override
+	public boolean createOrUpdateOrder(RtuWarningInfoEntity rtuWarningInfoEntity) {
+		DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CREATE.getCode());
+		DictInfoEntity fromdict = baseInfoDictService.getDict(DictBusinessConstant.ORDER_FROM_CODE, OrderFromEnum.FROM_WARNING.getCode());
+		//查询是否已经创建工单
+		LambdaQueryWrapper<CheckOrderInfoEntity> wrapper = Wrappers.<CheckOrderInfoEntity>query().lambda();
+		wrapper.eq(CheckOrderInfoEntity::getIsDeleted, 0);
+		wrapper.eq(CheckOrderInfoEntity::getRtuCode, rtuWarningInfoEntity.getRtuCode());
+		wrapper.eq(CheckOrderInfoEntity::getOrderClose, OrderCloseEnum.ACTIVE_OPEN.getCode());
+		List<CheckOrderInfoEntity> checkOrderInfoList = this.list(wrapper);
+		if (null == checkOrderInfoList || checkOrderInfoList.size() == 0) {
+			//创建工单
+			CheckOrderInfoEntity checkOrderInfoEntity = new CheckOrderInfoEntity();
+			checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
+			checkOrderInfoEntity.setOrderFromKey(fromdict.getId());
+			checkOrderInfoEntity.setOrderDesc(rtuWarningInfoEntity.getWarningDesc());
+			checkOrderInfoEntity.setWarnId(rtuWarningInfoEntity.getId());
+			checkOrderInfoEntity.setRtuCode(rtuWarningInfoEntity.getRtuCode());
+			checkOrderInfoEntity.setOrderClose(OrderCloseEnum.ACTIVE_OPEN.getCode());
+			checkOrderInfoEntity.setOrderConfirm(OrderConfirmEnum.ACTIVE_CREATE.getCode());
+			LambdaQueryWrapper<RtuInfoEntity> rtuwrapper = Wrappers.<RtuInfoEntity>query().lambda();
+			rtuwrapper.eq(RtuInfoEntity::getIsDeleted, 0);
+			rtuwrapper.eq(RtuInfoEntity::getRtuCode, rtuWarningInfoEntity.getRtuCode());
+			RtuInfoEntity rtuInfoEntity = rtuBaseInfoService.getOne(rtuwrapper);
+			LambdaQueryWrapper<RegionInfoEntity> regionWrapper = Wrappers.<RegionInfoEntity>query().lambda();
+			regionWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
+			regionWrapper.eq(RegionInfoEntity::getAdcd, rtuInfoEntity.getAdCode());
+			RegionInfoEntity regionInfoEntity = baseInfoRegionService.getOne(regionWrapper);
+			if (regionInfoEntity != null) {
+				String ancestors = regionInfoEntity.getAncestors();
+				if (null != ancestors && ancestors.length() > 0) {
+					String[] ancestorsList = ancestors.split(",");
+					String adCode;
+					if (ancestorsList.length >= 3) {
+						adCode = ancestorsList[2];
+					} else {
+						adCode = regionInfoEntity.getAdcd();
+					}
+					if (null != adCode) {
+						LambdaQueryWrapper<DeptRegionEntity> drwrapper = Wrappers.<DeptRegionEntity>query().lambda();
+						drwrapper.eq(DeptRegionEntity::getIsDeleted, 0);
+						drwrapper.eq(DeptRegionEntity::getAdcd, adCode);
+						List<DeptRegionEntity> deptRegionEntities = deptRegionService.list(drwrapper);
+						if (null != deptRegionEntities && deptRegionEntities.size() > 0) {
+							String manageCompany = "";
+							for (DeptRegionEntity deptRegionEntity : deptRegionEntities) {
+								Dept dept = deptService.getById(deptRegionEntity.getDeptId());
+								if (null != dept) {
+									if (manageCompany.length() > 0) {
+										manageCompany += " / ";
+									}
+									manageCompany += dept.getDeptName();
+									//查找运维公司负责人
+									LambdaQueryWrapper<User> userLambdaQueryWrapper = Wrappers.<User>query().lambda();
+									userLambdaQueryWrapper.eq(User::getIsDeleted, 0);
+									userLambdaQueryWrapper.eq(User::getDeptId, dept.getId());
+									List<User> userList = userService.list(userLambdaQueryWrapper);
+									for (User u : userList) {
+										Role role = roleService.getById(u.getRoleId());
+										if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(role.getRoleAlias())) {
+											checkOrderInfoEntity.setContactPhone(u.getPhone());
+											checkOrderInfoEntity.setContactUser(u.getId());
+											break;
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+			checkOrderInfoEntity.setUpdateUser(BusinessConstant.SYS_ADMIN_ID);
+			checkOrderInfoEntity.setCreateUser(BusinessConstant.SYS_ADMIN_ID);
+			checkOrderInfoEntity.setUpdateTime(new Date());
+			checkOrderInfoEntity.setCreateTime(new Date());
+			this.save(checkOrderInfoEntity);
+			//增加工单处理创建记录
+			OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
+			processInfoEntity.setOrderId(checkOrderInfoEntity.getId());
+			processInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
+			processInfoEntity.setProcessDesc(checkOrderInfoEntity.getOrderDesc());
+			processInfoEntity.setUpdateUser(BusinessConstant.SYS_ADMIN_ID);
+			processInfoEntity.setCreateUser(BusinessConstant.SYS_ADMIN_ID);
+			processInfoEntity.setUpdateTime(new Date());
+			processInfoEntity.setCreateTime(new Date());
+			rtuOrderProcessService.save(processInfoEntity);
+		}
+		return true;
+	}
 }

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

@@ -26,7 +26,7 @@ public class CheckOrderCountVO extends BaseEntity {
 	 * 运维人员ID
 	 */
 	@ApiModelProperty(value = "运维人员ID")
-	private Long id;
+	private Long userId;
 
 	/**
 	 * 运维人员名称

+ 62 - 7
src/main/java/org/springblade/modules/business/check/order/vo/CheckOrderInfoVO.java

@@ -7,6 +7,8 @@
 package org.springblade.modules.business.check.order.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;
@@ -112,35 +114,46 @@ public class CheckOrderInfoVO extends CheckOrderInfoEntity {
 	private String areaName;
 
 	/**
-	 * 预警类别
+	 * 预警类别信息
 	 */
 	@ApiModelProperty(value = "预警类别")
-	private String warnKind;
+	private String warnKindInfo;
 
 	/**
 	 * 是否雨量站
 	 */
 	@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 isVideo;
+
 	/**
 	 * 降水
 	 */
@@ -172,14 +185,56 @@ public class CheckOrderInfoVO extends CheckOrderInfoEntity {
 	private Date lastUpTime;
 
 	/**
-	 * 维修时长
+	 * 预警时长
+	 */
+	@ApiModelProperty(value = "预警时长")
+	private String warningTime;
+
+	/**
+	 * 维护状态
+	 */
+	@ApiModelProperty(value = "维护状态")
+	private Integer orderStatus;
+
+	/**
+	 * 行政区划索引
+	 */
+	@ApiModelProperty(value = "行政区划索引")
+	private String ancestors;
+
+	/**
+	 * 行政区划编码
+	 */
+	@ApiModelProperty(value = "行政区划编码")
+	private String adCode;
+
+	/**
+	 * 运维单位
+	 */
+	@ApiModelProperty(value = "运维单位")
+	private String manageCompany;
+
+	/**
+	 * 任务创建时长
+	 */
+	@ApiModelProperty(value = "任务创建时长")
+	private String taskCreateDuration;
+
+	/**
+	 * 任务维修时长
 	 */
 	@ApiModelProperty(value = "维修时长")
-	private String taskTime;
+	private String taskProcessDuration;
 
 	/**
-	 * 预警时长
+	 * SIN卡号
 	 */
-	@ApiModelProperty(value = "预警时长")
-	private String warningTime;
+	@ApiModelProperty(value = "SIN卡号")
+	private String networkSimId;
+
+	/**
+	 * 开卡单位
+	 */
+	@ApiModelProperty(value = "开卡单位")
+	private String networkPayer;
 }

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

@@ -26,7 +26,7 @@ public class OrgCheckOrderCountVO extends BaseEntity {
 	 * 机构ID
 	 */
 	@ApiModelProperty(value = "机构ID")
-	private Long id;
+	private Long deptId;
 
 	/**
 	 * 机构名称
@@ -45,4 +45,10 @@ public class OrgCheckOrderCountVO extends BaseEntity {
 	 */
 	@ApiModelProperty(value = "处理中工单数量")
 	private Long processingOrderCount;
+
+	/**
+	 * 未确认任务数量
+	 */
+	@ApiModelProperty(value = "未确认任务数量")
+	private Long unconfirmOrderCount;
 }

+ 181 - 51
src/main/java/org/springblade/modules/business/check/order/wrapper/RtuCheckOrderWrapper.java

@@ -6,13 +6,34 @@
  */
 package org.springblade.modules.business.check.order.wrapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import org.springblade.common.cache.DictBizCache;
+import org.springblade.constant.BusinessConstant;
 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.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.business.check.order.entity.CheckOrderInfoEntity;
 import org.springblade.modules.business.check.order.vo.CheckOrderInfoVO;
+import org.springblade.modules.business.data.service.IRtuDataRainService;
+import org.springblade.modules.business.warning.entity.RtuWarningInfoEntity;
+import org.springblade.modules.business.warning.service.IRtuWarningService;
+import org.springblade.modules.system.entity.Dept;
 import org.springblade.modules.system.entity.DictBiz;
+import org.springblade.modules.system.entity.Role;
+import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.service.IDeptService;
+import org.springblade.modules.system.service.IDictBizService;
+import org.springblade.modules.system.service.IRoleService;
+import org.springblade.modules.system.service.IUserService;
 
 import java.time.Duration;
 import java.util.*;
@@ -30,20 +51,89 @@ public class RtuCheckOrderWrapper extends BaseEntityWrapper<CheckOrderInfoEntity
 		return new RtuCheckOrderWrapper();
 	}
 
+	private static IDictBizService dictBizService;
+
+	private static IDictBizService getDictBizService() {
+		if (dictBizService == null) {
+			dictBizService = SpringUtil.getBean(IDictBizService.class);
+		}
+		return dictBizService;
+	}
+
+	private static IDeptRegionService deptRegionService;
+
+	private static IDeptRegionService getDeptRegionService() {
+		if (deptRegionService == null) {
+			deptRegionService = SpringUtil.getBean(IDeptRegionService.class);
+		}
+		return deptRegionService;
+	}
+
+	private static IDeptService deptService;
+
+	private static IDeptService getDeptService() {
+		if (deptService == null) {
+			deptService = SpringUtil.getBean(IDeptService.class);
+		}
+		return deptService;
+	}
+
+	private static IUserService userService;
+
+	private static IUserService getUserService() {
+		if (userService == null) {
+			userService = SpringUtil.getBean(IUserService.class);
+		}
+		return userService;
+	}
+
+	private static IRoleService roleService;
+
+	private static IRoleService getRoleService() {
+		if (roleService == null) {
+			roleService = SpringUtil.getBean(IRoleService.class);
+		}
+		return roleService;
+	}
+
+	private static IRtuWarningService rtuWarningService;
+
+	private static IRtuWarningService getRtuWarningService() {
+		if (rtuWarningService == null) {
+			rtuWarningService = SpringUtil.getBean(IRtuWarningService.class);
+		}
+		return rtuWarningService;
+	}
+
 	@Override
 	public CheckOrderInfoVO entityVO(CheckOrderInfoEntity entity) {
 		CheckOrderInfoVO checkOrderInfoVO = Objects.requireNonNull(BeanUtil.copy(entity, CheckOrderInfoVO.class));
-		DictBiz biz = DictBizCache.getById(checkOrderInfoVO.getOrderFromKey());
-		checkOrderInfoVO.setOrderFromName(biz.getDictValue());
-		biz = DictBizCache.getById(checkOrderInfoVO.getOrderStatusKey());
-		checkOrderInfoVO.setOrderStatusName(biz.getDictValue());
-		if (checkOrderInfoVO.getOrderConfirmUser() != null) {
-			checkOrderInfoVO.setIsConfirm(1);
+		return this.entityVO(checkOrderInfoVO);
+	}
+
+	public CheckOrderInfoVO entityVO(CheckOrderInfoVO vo) {
+		String areaName = "";
+		if (null != vo.getAdCity()) {
+			areaName += vo.getAdCity();
+		}
+		if (null != vo.getAdDist()) {
+			if (areaName.length() > 0) {
+				areaName += "/";
+			}
+			areaName += vo.getAdDist();
+		}
+		vo.setAreaName(areaName);
+		DictBiz biz = DictBizCache.getById(vo.getOrderFromKey());
+		vo.setOrderFromName(biz.getDictValue());
+		biz = DictBizCache.getById(vo.getOrderStatusKey());
+		vo.setOrderStatusName(biz.getDictValue());
+		if (vo.getOrderConfirmUser() != null) {
+			vo.setIsConfirm(1);
 		} else {
-			checkOrderInfoVO.setIsConfirm(0);
+			vo.setIsConfirm(0);
 		}
-		if (checkOrderInfoVO.getOrderConfirmTime() != null) {
-			Duration duration = Func.between(checkOrderInfoVO.getOrderConfirmTime(), new Date());
+		if (vo.getOrderConfirmTime() != null) {
+			Duration duration = Func.between(vo.getOrderConfirmTime(), new Date());
 			long second = duration.getSeconds();
 			String taskTime = "";
 			if (second >= 60 * 60) {
@@ -61,25 +151,57 @@ public class RtuCheckOrderWrapper extends BaseEntityWrapper<CheckOrderInfoEntity
 			} else {
 				taskTime = "1小时内";
 			}
-			checkOrderInfoVO.setTaskTime(taskTime);
+			vo.setTaskProcessDuration(taskTime);
 		}
-		return checkOrderInfoVO;
-	}
-
-	public CheckOrderInfoVO addInfoVO(CheckOrderInfoVO checkOrderInfoVO) {
-		checkOrderInfoVO.setAreaName(checkOrderInfoVO.getAdCity() + "/" + checkOrderInfoVO.getAdDist());
-		DictBiz biz = DictBizCache.getById(checkOrderInfoVO.getOrderFromKey());
-		checkOrderInfoVO.setOrderFromName(biz.getDictValue());
-		biz = DictBizCache.getById(checkOrderInfoVO.getOrderStatusKey());
-		checkOrderInfoVO.setOrderStatusName(biz.getDictValue());
-		if (checkOrderInfoVO.getOrderConfirmUser() != null) {
-			checkOrderInfoVO.setIsConfirm(1);
-		} else {
-			checkOrderInfoVO.setIsConfirm(0);
+		if (vo.getOrderStatusKey() != null) {
+			DictBiz dictInfoEntity = getDictBizService().getById(vo.getOrderStatusKey());
+			vo.setOrderStatus(Func.toInt(dictInfoEntity.getDictKey()));
 		}
-
-		//if (checkOrderInfoVO.getCreateTime()!=null){
-		Duration duration = Func.between(checkOrderInfoVO.getCreateTime(), new Date());
+		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 (manageCompany.length() > 0) {
+								manageCompany += " / ";
+							}
+							manageCompany += 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;
+									}
+								}
+							}
+						}
+					}
+					vo.setManageCompany(manageCompany);
+				}
+			}
+		}
+		Duration duration = Func.between(vo.getCreateTime(), new Date());
 		long second = duration.getSeconds();
 		String taskTime = "";
 		if (second >= 60 * 60) {
@@ -97,31 +219,39 @@ public class RtuCheckOrderWrapper extends BaseEntityWrapper<CheckOrderInfoEntity
 		} else {
 			taskTime = "1小时内";
 		}
-		checkOrderInfoVO.setTaskTime(taskTime);
-		//	}
-
-//		if (checkOrderInfoVO.getOrderConfirmTime()!=null) {
-//			Duration duration = Func.between(checkOrderInfoVO.getOrderConfirmTime(), 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小时内";
-//			}
-		//checkOrderInfoVO.setTaskTime(taskTime);
-		//}
-		return checkOrderInfoVO;
+		vo.setTaskCreateDuration(taskTime);
+		LambdaQueryWrapper<RtuWarningInfoEntity> queryWrapper = Wrappers.<RtuWarningInfoEntity>query().lambda();
+		queryWrapper.eq(RtuWarningInfoEntity::getIsDeleted, 0);
+		queryWrapper.eq(RtuWarningInfoEntity::getRtuCode, vo.getRtuCode());
+		queryWrapper.eq(RtuWarningInfoEntity::getWarningStatus, 0);
+		List<RtuWarningInfoEntity> rtuWarningInfoEntityList = getRtuWarningService().list(queryWrapper);
+		if (null != rtuWarningInfoEntityList && rtuWarningInfoEntityList.size() > 0) {
+			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()) {
+					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 += "水位站小时上报延时";
+				}
+			}
+			vo.setWarnKindInfo(warnKinds);
+		}
+		return vo;
 	}
 
 }

+ 193 - 68
src/main/java/org/springblade/modules/business/check/process/controller/RtuOrderProcessController.java

@@ -12,14 +12,14 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
-import org.apache.poi.ss.usermodel.DataFormatter;
 import org.springblade.common.cache.DictBizCache;
 import org.springblade.constant.BusinessConstant;
 import org.springblade.constant.DictBusinessConstant;
 import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.log.annotation.ApiLog;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -28,30 +28,33 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.enums.OrderStatusEnum;
 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.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.CheckOrderInfoVO;
-import org.springblade.modules.business.check.order.wrapper.RtuCheckOrderWrapper;
 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.service.IRtuOrderProcessService;
 import org.springblade.modules.business.check.process.vo.OrderProcessInfoVO;
 import org.springblade.modules.business.check.process.wrapper.RtuOrderProcessWrapper;
+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.IUserService;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 import springfox.documentation.annotations.ApiIgnore;
 
-import java.text.DateFormat;
-import java.time.Duration;
+import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
 
 /***
  * Date:2022/8/22
- * Title:文件所属模块(必须填写)
+ * Title: 维修任务填报管理模块
  * Description:对本文件的详细描述,原则上不能少于30字
  * @author dylan
  * @version 1.0
@@ -65,7 +68,11 @@ public class RtuOrderProcessController extends BladeController {
 	private final IRtuOrderProcessService rtuOrderProcessService;
 	private final IRtuCheckOrderService checkOrderService;
 	private final IUserService userService;
-    private final IBaseInfoDictService dictService;
+	private final IBaseInfoDictService dictService;
+	private final IDeptRegionService deptRegionService;
+	private final IRtuBaseInfoService rtuBaseInfoService;
+	@Resource
+	private OssBuilder ossBuilder;
 	/**
 	 * 分页
 	 */
@@ -77,56 +84,33 @@ 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());
-
 		for (OrderProcessInfoVO v : list) {
-			RtuOrderProcessWrapper.build().addInfoVO(v);
-//			if (v.getOrderStatusKey()== DictBusinessConstant.ORDER_STATUS_KEY_CONFIRM){
-//				Duration duration = Func.between(v.getCreateTime(),checkOrderInfoEntity.getCreateTime());
-//				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小时内";
-//				}
-//				v.setTaskTime(taskTime);
-//			}else if (v.getOrderStatusKey()==DictBusinessConstant.ORDER_STATUS_KEY_PROCESS){
-				Duration duration = Func.between(v.getCreateTime(),checkOrderInfoEntity.getCreateTime());
-				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小时内";
-				}
-				v.setTaskTime(taskTime);
-		//	}
+			v.setTaskCreateTime(checkOrderInfoEntity.getCreateTime());
+			RtuOrderProcessWrapper.build().entityVO(v);
 		}
 		return R.data(list);
 	}
 
+	/**
+	 * 多表联合查询自定义分页
+	 */
+	@GetMapping("/page")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "id", value = "工单ID", paramType = "query", dataType = "long")
+	})
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入checkOrderInfoDTO")
+	public R<IPage<OrderProcessInfoVO>> page(CheckOrderInfoDTO checkOrderInfoDTO, Query query) {
+		IPage<OrderProcessInfoVO> pages = rtuOrderProcessService.selectPage(Condition.getPage(query), checkOrderInfoDTO);
+		List<OrderProcessInfoVO> list = pages.getRecords();
+		for (OrderProcessInfoVO v : list) {
+			RtuOrderProcessWrapper.build().entityVO(v);
+		}
+		return R.data(pages);
+	}
+
+
 	/**
 	 * 查询当天填报的工单信息
 	 *
@@ -135,18 +119,28 @@ public class RtuOrderProcessController extends BladeController {
 	@GetMapping("/today/list")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页")
-	public R<List<OrderProcessInfoVO>> todayList() {
+	public R<List<OrderProcessInfoVO>> todayList(@ApiIgnore OrderProcessInfoDTO processInfoDTO) {
 		BladeUser user = AuthUtil.getUser();
-		OrderProcessInfoDTO processInfoDTO = new OrderProcessInfoDTO();
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			processInfoDTO.setOrgId(Func.toLong(user.getDeptId()));
-		} else {
-			processInfoDTO.setOrgId(null);
+		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);
+			if (null == deptRegionEntity){
+				return R.data(null);
+			}
+			processInfoDTO.setAdCode(deptRegionEntity.getAdcd());
 		}
+
 		Date date = new Date();
 		String dt = Func.formatDateTime(date);
 		processInfoDTO.setCreateTime(Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd")));
 		List<OrderProcessInfoVO> list = rtuOrderProcessService.selectTodayProcessList(processInfoDTO);
+		for (OrderProcessInfoVO vo : list) {
+			RtuOrderProcessWrapper.build().entityVO(vo);
+		}
 		return R.data(list);
 	}
 
@@ -154,17 +148,32 @@ public class RtuOrderProcessController extends BladeController {
 	/**
 	 * 多表联合查询自定义分页
 	 */
-	@GetMapping("/page")
+	@GetMapping("/today/page")
 	@ApiImplicitParams({
 		@ApiImplicitParam(name = "id", value = "工单ID", paramType = "query", dataType = "long")
 	})
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "分页", notes = "传入checkOrderInfoDTO")
-	public R<IPage<OrderProcessInfoVO>> page(CheckOrderInfoDTO checkOrderInfoDTO, Query query) {
-		IPage<OrderProcessInfoVO> pages = rtuOrderProcessService.selectPage(Condition.getPage(query), checkOrderInfoDTO);
+	public R<IPage<OrderProcessInfoVO>> todayPage(@ApiIgnore OrderProcessInfoDTO orderProcessInfoDTO, Query query) {
+		BladeUser user = AuthUtil.getUser();
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			orderProcessInfoDTO.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);
+			orderProcessInfoDTO.setAdCode(deptRegionEntity.getAdcd());
+		}
+
+		Date date = new Date();
+		String dt = Func.formatDateTime(date);
+		orderProcessInfoDTO.setCreateTime(Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd")));
+
+		IPage<OrderProcessInfoVO> pages = rtuOrderProcessService.selectTodayProcessPage(Condition.getPage(query), orderProcessInfoDTO);
 		List<OrderProcessInfoVO> list = pages.getRecords();
 		for (OrderProcessInfoVO v : list) {
-			RtuOrderProcessWrapper.build().addInfoVO(v);
+			RtuOrderProcessWrapper.build().entityVO(v);
 		}
 		return R.data(pages);
 	}
@@ -180,10 +189,12 @@ public class RtuOrderProcessController extends BladeController {
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "详情", notes = "传入orderProcessInfoEntity")
 	public R<OrderProcessInfoVO> detail(OrderProcessInfoEntity orderProcessInfoEntity) {
-		OrderProcessInfoEntity detail = rtuOrderProcessService.getOne(Condition.getQueryWrapper(orderProcessInfoEntity));
+
+		OrderProcessInfoEntity detail = rtuOrderProcessService.getById(orderProcessInfoEntity.getId());
+
 		OrderProcessInfoVO vo = RtuOrderProcessWrapper.build().entityVO(detail);
 		CheckOrderInfoEntity checkOrderInfoEntity = checkOrderService.getById(vo.getOrderId());
-		if (checkOrderInfoEntity.getOrderConfirmUser() != null){
+		if (checkOrderInfoEntity.getOrderConfirmUser() != null) {
 			User user = userService.getById(checkOrderInfoEntity.getOrderConfirmUser());
 			vo.setOrderConfirmUserName(user.getRealName());
 		}
@@ -200,15 +211,45 @@ public class RtuOrderProcessController extends BladeController {
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "新增", notes = "传入orderProcessInfoEntity")
 	public R save(@RequestBody OrderProcessInfoEntity orderProcessInfoEntity) {
-		CheckOrderInfoEntity checkOrderInfoEntity = new CheckOrderInfoEntity();
-		checkOrderInfoEntity.setId(orderProcessInfoEntity.getOrderId());
-		DictInfoEntity dictInfoEntity=dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE,OrderStatusEnum.STATUS_PROCESS.getCode());
+		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());
 		checkOrderService.updateOrderStatus(checkOrderInfoEntity);
 
 		orderProcessInfoEntity.setOrderStatusKey(checkOrderInfoEntity.getOrderStatusKey());
-		return R.status(rtuOrderProcessService.save(orderProcessInfoEntity));
+		rtuOrderProcessService.save(orderProcessInfoEntity);
+		//更新更换信息
+		LambdaQueryWrapper<RtuInfoEntity> rtuWrapper = Wrappers.<RtuInfoEntity>query().lambda();
+		rtuWrapper.eq(RtuInfoEntity::getIsDeleted, 0);
+		rtuWrapper.eq(RtuInfoEntity::getRtuCode, checkOrderInfoEntity.getRtuCode());
+		RtuInfoEntity rtuInfoEntity = rtuBaseInfoService.getOne(rtuWrapper);
+		if (orderProcessInfoEntity.getRtuReplace() != null && orderProcessInfoEntity.getRtuReplace() == 1) {
+			rtuInfoEntity.setRtuReplaceDate(orderProcessInfoEntity.getCreateTime());
+			rtuInfoEntity.setRtuBrand(orderProcessInfoEntity.getRtuBrand());
+			rtuInfoEntity.setRtuModel(orderProcessInfoEntity.getRtuModel());
+		}
+		if (orderProcessInfoEntity.getRainSensorReplace() != null && orderProcessInfoEntity.getRainSensorReplace() == 1) {
+			rtuInfoEntity.setRainSensorReplaceDate(orderProcessInfoEntity.getCreateTime());
+			rtuInfoEntity.setRainSensorBrand(orderProcessInfoEntity.getRainSensorBrand());
+			rtuInfoEntity.setRainSensorModel(orderProcessInfoEntity.getRainSensorModel());
+		}
+		if (orderProcessInfoEntity.getWaterSensorReplace() != null && orderProcessInfoEntity.getWaterSensorReplace() == 1) {
+			rtuInfoEntity.setWaterSensorReplaceDate(orderProcessInfoEntity.getCreateTime());
+			rtuInfoEntity.setWaterSensorBrand(orderProcessInfoEntity.getWaterSensorBrand());
+			rtuInfoEntity.setWaterSensorModel(orderProcessInfoEntity.getWaterSensorModel());
+		}
+		if (orderProcessInfoEntity.getGroundSensorReplace() != null && orderProcessInfoEntity.getGroundSensorReplace() == 1) {
+			rtuInfoEntity.setGroundSensorReplaceDate(orderProcessInfoEntity.getCreateTime());
+			rtuInfoEntity.setGroundSensorBrand(orderProcessInfoEntity.getGroundSensorBrand());
+			rtuInfoEntity.setGroundSensorModel(orderProcessInfoEntity.getGroundSensorModel());
+		}
+		if (orderProcessInfoEntity.getBatteryReplace() != null && orderProcessInfoEntity.getBatteryReplace() == 1) {
+			rtuInfoEntity.setBatteryReplaceDate(orderProcessInfoEntity.getCreateTime());
+		}
+		rtuBaseInfoService.updateById(rtuInfoEntity);
+		return R.status(true);
 	}
 
 	/**
@@ -243,4 +284,88 @@ public class RtuOrderProcessController extends BladeController {
 	}
 
 
+	/**
+	 * 维修任务-无信号上报信息列表,分页
+	 */
+	@GetMapping("/nonetworksignal/page")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string"),
+		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
+	})
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入OrderProcessInfoDTO")
+	public R<IPage<OrderProcessInfoVO>> page(OrderProcessInfoDTO orderProcessInfoDTO, Query query) {
+		IPage<OrderProcessInfoVO> pages = rtuOrderProcessService.selectNoNetworkSignalPage(Condition.getPage(query), orderProcessInfoDTO);
+		List<OrderProcessInfoVO> list = pages.getRecords();
+		for (OrderProcessInfoVO v : list) {
+			RtuOrderProcessWrapper.build().entityVO(v);
+		}
+		return R.data(pages);
+	}
+
+	/**
+	 * 维修任务上报-无信号上报图片补交关闭
+	 *
+	 * @param orderProcessInfoEntity
+	 * @return
+	 */
+	@PostMapping("/nonetworksignal/close")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "id", value = "记录ID", paramType = "query", dataType = "long"),
+	})
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "图片补交关闭操作", notes = "传入实体类OrderProcessInfoEntity")
+	public R noNetworkSignalPhotoSubmitClose(@RequestBody OrderProcessInfoEntity orderProcessInfoEntity) {
+		if (orderProcessInfoEntity.getId() == null) {
+			return R.fail("参数错误!");
+		}
+		OrderProcessInfoEntity entity = rtuOrderProcessService.getById(orderProcessInfoEntity.getId());
+		if (null == entity) {
+			return R.status(false);
+		}
+		entity.setPhotoSupplementSubmitStatus(1);
+
+		rtuOrderProcessService.updateById(entity);
+		return R.success("操作成功!");
+	}
+
+	@ApiLog("图片提交")
+	@PostMapping(value = "/nonetworksignal/putPhoto")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "图片提交", notes = "")
+	public R putFile(MultipartFile file) {
+		BladeFile bladeFile = ossBuilder.template().putFile(file);
+		return R.data(bladeFile);
+	}
+
+	/**
+	 * 修改
+	 */
+	@PostMapping("/nonetworksignal/photo/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入OrderProcessInfoEntity")
+	public R nonetworksignalPhotoUpdate(@RequestBody OrderProcessInfoEntity orderProcessInfoEntity) {
+		OrderProcessInfoEntity entity = rtuOrderProcessService.getById(orderProcessInfoEntity.getId());
+		entity.setBaseBeforePhoto1Take(orderProcessInfoEntity.getBaseBeforePhoto1Take());
+		entity.setBaseBeforePhoto1Url(orderProcessInfoEntity.getBaseBeforePhoto1Url());
+		entity.setBaseBeforePhoto2Take(orderProcessInfoEntity.getBaseBeforePhoto2Take());
+		entity.setBaseBeforePhoto2Url(orderProcessInfoEntity.getBaseBeforePhoto2Url());
+		entity.setBaseAfterPhoto1Take(orderProcessInfoEntity.getBaseAfterPhoto1Take());
+		entity.setBaseAfterPhoto1Url(orderProcessInfoEntity.getBaseAfterPhoto1Url());
+		entity.setBaseAfterPhoto2Take(orderProcessInfoEntity.getBaseAfterPhoto2Take());
+		entity.setBaseAfterPhoto2Url(orderProcessInfoEntity.getBaseAfterPhoto2Url());
+		entity.setRtuPhotoTake(orderProcessInfoEntity.getRtuPhotoTake());
+		entity.setRtuPhotoUrl(orderProcessInfoEntity.getRtuPhotoUrl());
+		entity.setRainSensorPhotoTake(orderProcessInfoEntity.getRainSensorPhotoTake());
+		entity.setRainSensorPhotoUrl(orderProcessInfoEntity.getRainSensorPhotoUrl());
+		entity.setWaterSensorPhotoTake(orderProcessInfoEntity.getWaterSensorPhotoTake());
+		entity.setWaterSensorPhotoUrl(orderProcessInfoEntity.getWaterSensorPhotoUrl());
+		entity.setGroundSensorPhotoTake(orderProcessInfoEntity.getGroundSensorPhotoTake());
+		entity.setGroundSensorPhotoUrl(orderProcessInfoEntity.getGroundSensorPhotoUrl());
+		entity.setBatteryPhotoTake(orderProcessInfoEntity.getBatteryPhotoTake());
+		entity.setBatteryPhotoUrl(orderProcessInfoEntity.getBatteryPhotoUrl());
+		entity.setSunPhotoTake(orderProcessInfoEntity.getSunPhotoTake());
+		entity.setSunPhotoUrl(orderProcessInfoEntity.getSunPhotoUrl());
+		return R.status(rtuOrderProcessService.updateById(entity));
+	}
 }

+ 18 - 0
src/main/java/org/springblade/modules/business/check/process/dto/OrderProcessInfoDTO.java

@@ -28,4 +28,22 @@ public class OrderProcessInfoDTO extends OrderProcessInfoEntity {
 	@ApiModelProperty("机构ID")
 	private Long orgId;
 
+	/**
+	 * 行政区划
+	 */
+	@ApiModelProperty("行政区划")
+	private String adCode;
+
+	/**
+	 * 测站编码
+	 */
+	@ApiModelProperty("测站编码")
+	private String rtuCode;
+
+
+	/**
+	 * 测站名称
+	 */
+	@ApiModelProperty("测站名称")
+	private String rtuName;
 }

+ 16 - 0
src/main/java/org/springblade/modules/business/check/process/entity/OrderProcessInfoEntity.java

@@ -8,6 +8,8 @@ package org.springblade.modules.business.check.process.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;
@@ -378,4 +380,18 @@ public class OrderProcessInfoEntity extends BaseEntity {
 	@ApiModelProperty("卫星通讯说明")
 	private String satelliteDesc;
 
+
+	/**
+	 * 现场网络讯号状态 0 正常  1无信号
+	 */
+	@ApiModelProperty(value = "现场网络讯号状态")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer networkSignalStatus;
+
+	/**
+	 * 无信号时,补交图片状态 0 补交中,1补交完成
+	 */
+	@ApiModelProperty(value = "补交图片状态")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer photoSupplementSubmitStatus;
 }

+ 23 - 0
src/main/java/org/springblade/modules/business/check/process/mapper/RtuOrderProcessMapper.java

@@ -13,6 +13,8 @@ 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;
 
@@ -34,4 +36,25 @@ public interface RtuOrderProcessMapper  extends BaseMapper<OrderProcessInfoEntit
 	 * @return
 	 */
 	List<OrderProcessInfoVO> selectTodayProcessList(@Param("processInfoDTO") OrderProcessInfoDTO processInfoDTO);
+
+
+	/**
+	 * 分页,查询当天提交的工单填报信息
+	 * @param page
+	 * @param processInfoDTO
+	 * @return
+	 */
+	List<OrderProcessInfoVO> selectTodayProcessPage(IPage page,@Param("processInfoDTO") OrderProcessInfoDTO processInfoDTO);
+
+	/**
+	 * 查询维修任务上报时无网络信号列表
+	 *
+	 * @param page
+	 * @param processInfoDTO
+	 * @return
+	 */
+	List<OrderProcessInfoVO> selectNoNetworkSignalPage(IPage page, @Param("processInfoDTO") OrderProcessInfoDTO processInfoDTO);
+
+
+	long todayProcessCount(@Param("processInfoDTO") OrderProcessInfoDTO processInfoDTO);
 }

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

@@ -5,13 +5,7 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="orderProcessInfoResultMap"
                type="org.springblade.modules.business.check.process.entity.OrderProcessInfoEntity">
-        <result column="id" property="id"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
+
 
         <result column="order_id" property="orderId"/>
         <result column="process_desc" property="processDesc"/>
@@ -34,7 +28,7 @@
         <result column="water_level_sensor_active" property="waterLevelSensorActive"/>
         <result column="water_sensor_brand" property="waterSensorBrand"/>
         <result column="water_sensor_model" property="waterSensorModel"/>
-        <result column="ground_sensor_replace_date" property="groundSensorReplace"/>
+        <result column="ground_sensor_replace" property="groundSensorReplace"/>
         <result column="ground_sensor_desc" property="groundSensorDesc"/>
         <result column="ground_water_sensor_status" property="groundWaterSensorStatus"/>
         <result column="ground_water_sensor_active" property="groundWaterSensorActive"/>
@@ -75,18 +69,14 @@
         <result column="battery_photo_url" property="batteryPhotoUrl"/>
         <result column="sun_photo_take" property="sunPhotoTake"/>
         <result column="sun_photo_url" property="sunPhotoUrl"/>
+        <result column="network_signal_status" property="networkSignalStatus"/>
+        <result column="photo_supplement_submit_status" property="photoSupplementSubmitStatus"/>
 
     </resultMap>
 
     <resultMap id="orderProcessInfoVOResultMap"
                type="org.springblade.modules.business.check.process.vo.OrderProcessInfoVO">
-        <result column="id" property="id"/>
-        <result column="create_user" property="createUser"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_user" property="updateUser"/>
-        <result column="update_time" property="updateTime"/>
-        <result column="status" property="status"/>
-        <result column="is_deleted" property="isDeleted"/>
+
         <result column="order_id" property="orderId"/>
         <result column="process_desc" property="processDesc"/>
         <result column="order_status_key" property="orderStatusKey"/>
@@ -107,7 +97,8 @@
         <result column="water_level_sensor_active" property="waterLevelSensorActive"/>
         <result column="water_sensor_brand" property="waterSensorBrand"/>
         <result column="water_sensor_model" property="waterSensorModel"/>
-        <result column="ground_sensor_replace_date" property="groundSensorReplace"/>
+        <result column="ground_sensor_replace" property="groundSensorReplace"/>
+
         <result column="ground_sensor_desc" property="groundSensorDesc"/>
         <result column="ground_water_sensor_status" property="groundWaterSensorStatus"/>
         <result column="ground_water_sensor_active" property="groundWaterSensorActive"/>
@@ -149,7 +140,10 @@
         <result column="real_name" property="orderProcessUserName"/>
         <result column="dict_value" property="orderStatusName"/>
         <result column="order_confirm_user" property="orderConfirmUser"/>
-
+        <result column="network_signal_status" property="networkSignalStatus"/>
+        <result column="photo_supplement_submit_status" property="photoSupplementSubmitStatus"/>
+        <result column="ad_city" property="adCity"/>
+        <result column="ad_dist" property="adDist"/>
 
     </resultMap>
 
@@ -185,22 +179,112 @@
 
     <select id="selectTodayProcessList" resultMap="orderProcessInfoVOResultMap">
         SELECT
-        p.*,r.rtu_code,r.rtu_name,u.real_name,d.dict_value
+        p.*,r.rtu_code,r.rtu_name,u.real_name,d.dict_value,r.ad_city,r.ad_dist,a.adcd,a.ancestors
         FROM
         rtu_failure_check_order_process p
         LEFT JOIN rtu_failure_check_order o ON o.id=p.order_id
         LEFT JOIN rtu_info r ON r.rtu_code = o.rtu_code
+        LEFT JOIN data_ad_cd_b a ON a.adcd = r.ad_code and a.is_deleted=0
         LEFT JOIN blade_user u ON u.id=p.create_user
-        LEFT JOIN  blade_dict_biz d ON p.order_status_key=d.id
+        LEFT JOIN blade_dict_biz d ON p.order_status_key=d.id
         WHERE
         p.is_deleted = 0
-        <if test="processInfoDTO.orgId!=null">
-            and r.org_id =#{processInfoDTO.orgId}
+        <if test="processInfoDTO.createTime!=null">
+            and   DATE_FORMAT(p.create_time,'%Y-%m-%d') = DATE_FORMAT(#{processInfoDTO.createTime},'%Y-%m-%d')
+        </if>
+        <if test="processInfoDTO.rtuCode!=null">
+            and r.rtu_code like concat(concat('%', #{processInfoDTO.rtuCode}), '%')
+        </if>
+        <if test="processInfoDTO.rtuName!=null">
+            and r.rtu_name like concat(concat('%', #{processInfoDTO.rtuName}), '%')
         </if>
+        <if test="processInfoDTO.adCode!=null">
+            and (a.adcd =#{processInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE ancestors  like concat(concat('%', #{processInfoDTO.adCode}), '%')))
+        </if>
+        order by p.create_time desc
+        limit 10
+    </select>
+
+
+    <select id="selectTodayProcessPage" resultMap="orderProcessInfoVOResultMap">
+        SELECT
+        p.*,r.rtu_code,r.rtu_name,u.real_name,d.dict_value,r.ad_city,r.ad_dist,a.adcd,a.ancestors
+        FROM
+        rtu_failure_check_order_process p
+        LEFT JOIN rtu_failure_check_order o ON o.id=p.order_id
+        LEFT JOIN rtu_info r ON r.rtu_code = o.rtu_code
+        LEFT JOIN data_ad_cd_b a ON a.adcd = r.ad_code and a.is_deleted=0
+        LEFT JOIN blade_user u ON u.id=p.create_user
+        LEFT JOIN blade_dict_biz d ON p.order_status_key=d.id
+        WHERE
+        p.is_deleted = 0
         <if test="processInfoDTO.createTime!=null">
-            and p.create_time >= #{processInfoDTO.createTime}
+            and   DATE_FORMAT(p.create_time,'%Y-%m-%d') = DATE_FORMAT(#{processInfoDTO.createTime},'%Y-%m-%d')
+        </if>
+        <if test="processInfoDTO.rtuCode!=null">
+            and r.rtu_code like concat(concat('%', #{processInfoDTO.rtuCode}), '%')
+        </if>
+        <if test="processInfoDTO.rtuName!=null">
+            and r.rtu_name like concat(concat('%', #{processInfoDTO.rtuName}), '%')
+        </if>
+        <if test="processInfoDTO.adCode!=null">
+            and (a.adcd =#{processInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE ancestors  like concat(concat('%', #{processInfoDTO.adCode}), '%')))
         </if>
         order by p.create_time desc
     </select>
 
+
+    <select id="todayProcessCount" resultType="java.lang.Long">
+        select  count(*) from
+        ( SELECT
+        o.rtu_code
+        FROM
+        rtu_failure_check_order_process p
+        LEFT JOIN rtu_failure_check_order o ON o.id=p.order_id
+        LEFT JOIN rtu_info r ON r.rtu_code = o.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
+        p.is_deleted = 0
+        <if test="processInfoDTO.createTime!=null">
+            and   DATE_FORMAT(p.create_time,'%Y-%m-%d') = DATE_FORMAT(#{processInfoDTO.createTime},'%Y-%m-%d')
+        </if>
+
+        <if test="processInfoDTO.adCode!=null">
+            and (a.adcd =#{processInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE ancestors  like concat(concat('%', #{processInfoDTO.adCode}), '%')))
+        </if>
+        group by o.rtu_code ) s
+
+    </select>
+
+
+
+
+    <select id="selectNoNetworkSignalPage" resultMap="orderProcessInfoVOResultMap">
+        SELECT
+        p.*,u.real_name,o.rtu_code,r.rtu_name,r.ad_city,r.ad_dist
+        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
+        LEFT JOIN rtu_info r ON r.rtu_code = o.rtu_code
+        LEFT JOIN data_ad_cd_b a ON a.adcd = r.ad_code and a.is_deleted=0
+        WHERE
+        p.is_deleted = 0
+        and p.network_signal_status = 1
+        <if test="processInfoDTO.rtuName!=null">
+            and r.rtu_name like concat(concat('%', #{processInfoDTO.rtuName}), '%')
+        </if>
+        <if test="processInfoDTO.rtuCode!=null">
+            and r.rtu_code like concat(concat('%', #{processInfoDTO.rtuCode}), '%')
+        </if>
+        <if test="processInfoDTO.adCode!=null">
+            and (r.ad_code =#{processInfoDTO.adCode} or a.ancestors in (SELECT ancestors FROM data_ad_cd_b WHERE
+            ancestors
+            like concat(concat('%', #{processInfoDTO.adCode}), '%')))
+        </if>
+        order by  p.photo_supplement_submit_status ASC,p.create_time ASC,o.rtu_code ASC
+
+    </select>
+
 </mapper>

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

@@ -12,6 +12,8 @@ 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;
 
@@ -41,4 +43,23 @@ public interface IRtuOrderProcessService extends BaseService<OrderProcessInfoEnt
 	 * @return
 	 */
 	List<OrderProcessInfoVO> selectTodayProcessList(OrderProcessInfoDTO processInfoDTO);
+
+	long todayProcessCount(OrderProcessInfoDTO processInfoDTO);
+
+	/**
+	 * 查询当天提交的工单填报信息 分页
+	 * @param processInfoDTO
+	 * @return
+	 */
+	IPage<OrderProcessInfoVO> selectTodayProcessPage(IPage<OrderProcessInfoVO> page, OrderProcessInfoDTO processInfoDTO);
+
+
+	/**
+	 * 查询维修上报时无网络信号列表
+	 *
+	 * @param page
+	 * @param processInfoDTO
+	 * @return
+	 */
+	IPage<OrderProcessInfoVO> selectNoNetworkSignalPage(IPage<OrderProcessInfoVO> page, OrderProcessInfoDTO processInfoDTO);
 }

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

@@ -43,4 +43,21 @@ public class RtuOrderProcessServiceImpl  extends BaseServiceImpl<RtuOrderProcess
 	public List<OrderProcessInfoVO> selectTodayProcessList(OrderProcessInfoDTO processInfoDTO) {
 		return baseMapper.selectTodayProcessList(processInfoDTO);
 	}
+
+	@Override
+	public long todayProcessCount(OrderProcessInfoDTO processInfoDTO) {
+		return baseMapper.todayProcessCount(processInfoDTO);
+	}
+
+	@Override
+	public IPage<OrderProcessInfoVO> selectTodayProcessPage(IPage<OrderProcessInfoVO> page, OrderProcessInfoDTO processInfoDTO) {
+		return page.setRecords(baseMapper.selectTodayProcessPage(page, processInfoDTO));
+	}
+
+	@Override
+	public IPage<OrderProcessInfoVO> selectNoNetworkSignalPage(IPage<OrderProcessInfoVO> page, OrderProcessInfoDTO processInfoDTO) {
+		return page.setRecords(baseMapper.selectNoNetworkSignalPage(page, processInfoDTO));
+	}
+
+
 }

+ 49 - 1
src/main/java/org/springblade/modules/business/check/process/vo/OrderProcessInfoVO.java

@@ -6,10 +6,14 @@
  */
 package org.springblade.modules.business.check.process.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.modules.business.check.process.entity.OrderProcessInfoEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /***
  * Date:2022/8/22
@@ -68,5 +72,49 @@ public class OrderProcessInfoVO extends OrderProcessInfoEntity {
 	 * 维修时长
 	 */
 	@ApiModelProperty(value = "维修时长")
-	private String taskTime;
+	private String taskDuration;
+
+	/**
+	 * 任务创建时间
+	 */
+	@ApiModelProperty(value = "任务创建时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
+	)
+	private Date taskCreateTime;
+
+
+	/**
+	 * 所属盟市
+	 */
+	@ApiModelProperty(value = "所属盟市")
+	private String adCity;
+
+	/**
+	 * 所属盟县旗区
+	 */
+	@ApiModelProperty(value = "所属盟县旗区")
+	private String adDist;
+
+
+	/**
+	 * 行政区划索引
+	 */
+	@ApiModelProperty(value = "行政区划索引")
+	private String ancestors;
+
+	/**
+	 * 行政区划编码
+	 */
+	@ApiModelProperty(value = "行政区划编码")
+	private String adCode;
+
+	/**
+	 * 运维单位
+	 */
+	@ApiModelProperty(value = "运维单位")
+	private String manageCompany;
 }

+ 85 - 9
src/main/java/org/springblade/modules/business/check/process/wrapper/RtuOrderProcessWrapper.java

@@ -6,17 +6,23 @@
  */
 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.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.modules.baseinfo.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.org.service.IDeptRegionService;
 import org.springblade.modules.business.check.process.entity.OrderProcessInfoEntity;
 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 java.time.Duration;
-import java.util.Date;
+import java.util.List;
 import java.util.Objects;
 
 /***
@@ -32,18 +38,88 @@ public class RtuOrderProcessWrapper extends BaseEntityWrapper<OrderProcessInfoEn
 		return new RtuOrderProcessWrapper();
 	}
 
+	private static IDeptRegionService deptRegionService;
+
+	private static IDeptRegionService getDeptRegionService() {
+		if (deptRegionService == null) {
+			deptRegionService = SpringUtil.getBean(IDeptRegionService.class);
+		}
+		return deptRegionService;
+	}
+
+	private static IDeptService deptService;
+
+	private static IDeptService getDeptService() {
+		if (deptService == null) {
+			deptService = SpringUtil.getBean(IDeptService.class);
+		}
+		return deptService;
+	}
+
 	@Override
 	public OrderProcessInfoVO entityVO(OrderProcessInfoEntity entity) {
 		OrderProcessInfoVO orderProcessInfoVO = Objects.requireNonNull(BeanUtil.copy(entity, OrderProcessInfoVO.class));
-		DictBiz biz = DictBizCache.getById(entity.getOrderStatusKey());
-		orderProcessInfoVO.setOrderStatusName(biz.getDictValue());
-		return orderProcessInfoVO;
+		return this.entityVO(orderProcessInfoVO);
 	}
 
-	public OrderProcessInfoVO addInfoVO(OrderProcessInfoVO orderProcessInfoVO) {
-		DictBiz biz = DictBizCache.getById(orderProcessInfoVO.getOrderStatusKey());
-		orderProcessInfoVO.setOrderStatusName(biz.getDictValue());
+	public OrderProcessInfoVO entityVO(OrderProcessInfoVO orderProcessInfoVO) {
+		if (null != orderProcessInfoVO.getOrderStatusKey()) {
+			DictBiz biz = DictBizCache.getById(orderProcessInfoVO.getOrderStatusKey());
+			orderProcessInfoVO.setOrderStatusName(biz.getDictValue());
+		}
+		if (orderProcessInfoVO.getTaskCreateTime() != null) {
+			Duration duration = Func.between(orderProcessInfoVO.getCreateTime(), orderProcessInfoVO.getTaskCreateTime());
+			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小时内";
+			}
+			orderProcessInfoVO.setTaskDuration(taskTime);
+		}
+
+		String ancestors = orderProcessInfoVO.getAncestors();
+		if (null != ancestors && ancestors.length() > 0) {
+			String[] ancestorsList = ancestors.split(",");
+			String adCode;
+			if (ancestorsList.length >= 3) {
+				adCode = ancestorsList[2];
+			} else {
+				adCode = orderProcessInfoVO.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 (manageCompany.length() > 0) {
+								manageCompany += " / ";
+							}
+							manageCompany += dept.getDeptName();
+						}
+					}
+					orderProcessInfoVO.setManageCompany(manageCompany);
+				}
+			}
+		}
+
+
 		return orderProcessInfoVO;
 	}
-
 }

+ 73 - 0
src/main/java/org/springblade/modules/business/count/entity/RtuUpTimeCountInfoEntity.java

@@ -0,0 +1,73 @@
+/**
+ * Copyright 2019 DH
+ * All right reserved.
+ * 项目名称: 大恒泰山系统
+ * 创建日期:2023/4/28
+ */
+package org.springblade.modules.business.count.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/4/28
+ * Title:文件所属模块(必须填写)
+ * Description:对本文件的详细描述,原则上不能少于30字
+ * @author dylan
+ * @version 1.0
+ * Remark:认为有必要的其他信息
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("data_rtu_up_count")
+public class RtuUpTimeCountInfoEntity 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 upTime;
+
+	/**
+	 * 统计上报类型 0,测站,1 雨情 2 河道 3 水库4 墒情
+	 */
+	@ApiModelProperty("统计上报类型")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer upKind;
+
+	/**
+	 * 统计时间类型 1 小时 2 日
+	 */
+	@ApiModelProperty("统计时间类型")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer timeKind;
+}

+ 29 - 15
src/main/java/org/springblade/modules/business/data/controller/RtuDataGroundController.java

@@ -7,7 +7,9 @@
 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;
@@ -22,17 +24,17 @@ 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.business.data.dto.RtuDataGroundDTO;
 import org.springblade.modules.business.data.entity.RtuDataGroundEntity;
 import org.springblade.modules.business.data.service.IRtuDataGroundService;
 import org.springblade.modules.business.data.vo.RtuDataGroundVO;
-import org.springblade.modules.business.data.wrapper.RtuDataGroundWrapper;
 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
@@ -48,30 +50,34 @@ import java.util.List;
 @Api(value = "墒情实时数据管理", tags = "测站实时数据管理")
 public class RtuDataGroundController extends BladeController {
 	private final IRtuDataGroundService dataGroundService;
-
+	private final IDeptRegionService deptRegionService;
 	/**
 	 * 分页
 	 */
 	@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<RtuDataGroundVO>> page(@ApiIgnore RtuDataGroundDTO rtuDataGroundDTO, Query query) {
 		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			rtuDataGroundDTO.setOrgId(Func.toLong(user.getDeptId()));
-		} else {
-			rtuDataGroundDTO.setOrgId(null);
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			if (rtuDataGroundDTO.getAdCode() == null) {
+				rtuDataGroundDTO.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 (rtuDataGroundDTO.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);
+				rtuDataGroundDTO.setAdCode(deptRegionEntity.getAdcd());
+			}
 		}
-
 		IPage<RtuDataGroundVO> pages = dataGroundService.selectPage(Condition.getPage(query), rtuDataGroundDTO);
-		List<RtuDataGroundVO> list = pages.getRecords();
-		for (RtuDataGroundVO rtuInfoVO : list) {
-			RtuDataGroundWrapper.build().appendInfo(rtuInfoVO);
-		}
 		return R.data(pages);
 	}
 
@@ -81,11 +87,19 @@ public class RtuDataGroundController extends BladeController {
 	@GetMapping("/detail")
 	@ApiImplicitParams({
 		@ApiImplicitParam(name = "id", value = "ID", paramType = "query", dataType = "long"),
+		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
 	})
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "详情", notes = "传入RtuDataGroundEntity")
-	public R<RtuDataGroundVO> detail(RtuDataGroundEntity groundEntity) {
-		RtuDataGroundEntity detail = dataGroundService.getOne(Condition.getQueryWrapper(groundEntity));
-		return R.data(RtuDataGroundWrapper.build().entityVO(detail));
+	public R<RtuDataGroundEntity> detail(RtuDataGroundEntity groundEntity) {
+		LambdaQueryWrapper<RtuDataGroundEntity> wrapper = Wrappers.<RtuDataGroundEntity>query().lambda();
+		wrapper.eq(RtuDataGroundEntity::getIsDeleted, 0L);
+		if (groundEntity.getId()!=null){
+			wrapper.eq(RtuDataGroundEntity::getId,groundEntity.getId());
+		}else{
+			wrapper.eq(RtuDataGroundEntity::getRtuCode, groundEntity.getRtuCode());
+		}
+		RtuDataGroundEntity detail = dataGroundService.getOne(wrapper);
+		return R.data(detail);
 	}
 }

+ 38 - 10
src/main/java/org/springblade/modules/business/data/controller/RtuDataRainController.java

@@ -6,7 +6,9 @@
  */
 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;
@@ -21,16 +23,18 @@ 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.business.data.dto.RtuDataRainDTO;
+import org.springblade.modules.business.data.entity.RtuDataRainEntity;
 import org.springblade.modules.business.data.service.IRtuDataRainService;
 import org.springblade.modules.business.data.vo.RtuDataRainVO;
-import org.springblade.modules.business.data.wrapper.RtuDataRainWrapper;
 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;
+
 
 
 /***
@@ -47,6 +51,7 @@ import java.util.List;
 @Api(value = "降水实时数据管理", tags = "测站实时数据管理")
 public class RtuDataRainController extends BladeController {
 	private final IRtuDataRainService dataRainService;
+	private final IDeptRegionService deptRegionService;
 
 	/**
 	 * 分页
@@ -54,22 +59,45 @@ public class RtuDataRainController extends BladeController {
 	@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<RtuDataRainVO>> page(@ApiIgnore RtuDataRainDTO rtuDataRainDTO, Query query) {
 		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			rtuDataRainDTO.setOrgId(Func.toLong(user.getDeptId()));
-		} else {
-			rtuDataRainDTO.setOrgId(null);
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			if (rtuDataRainDTO.getAdCode() == null) {
+				rtuDataRainDTO.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 (rtuDataRainDTO.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);
+				rtuDataRainDTO.setAdCode(deptRegionEntity.getAdcd());
+			}
 		}
 		IPage<RtuDataRainVO> pages = dataRainService.selectPage(Condition.getPage(query), rtuDataRainDTO);
-		List<RtuDataRainVO> list = pages.getRecords();
-		for (RtuDataRainVO rtuInfoVO : list) {
-			RtuDataRainWrapper.build().appendInfo(rtuInfoVO);
-		}
 		return R.data(pages);
 	}
+
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
+	})
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入 RtuDataRainEntity")
+	public R<RtuDataRainEntity> detail(RtuDataRainEntity entity) {
+		LambdaQueryWrapper<RtuDataRainEntity> wrapper = Wrappers.<RtuDataRainEntity>query().lambda();
+		wrapper.eq(RtuDataRainEntity::getIsDeleted, 0L);
+		wrapper.eq(RtuDataRainEntity::getRtuCode, entity.getRtuCode());
+		RtuDataRainEntity rainEntity = dataRainService.getOne(wrapper);
+		return R.data(rainEntity);
+	}
 }

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

@@ -6,7 +6,9 @@
  */
 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;
@@ -21,7 +23,12 @@ 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.rtu.vo.RtuInfoVO;
+import org.springblade.modules.baseinfo.rtu.wrapper.RtuInfoWrapper;
 import org.springblade.modules.business.data.dto.RtuDataRiverDTO;
+import org.springblade.modules.business.data.entity.RtuDataRiverEntity;
 import org.springblade.modules.business.data.service.IRtuDataRiverService;
 import org.springblade.modules.business.data.vo.RtuDataRiverVO;
 import org.springblade.modules.business.data.wrapper.RtuDataRiverWrapper;
@@ -47,28 +54,56 @@ import java.util.List;
 @Api(value = "河道水情实时数据管理", tags = "测站实时数据管理")
 public class RtuDataRiverController extends BladeController {
 	private final IRtuDataRiverService dataRiverService;
+	private final IDeptRegionService deptRegionService;
+
 	/**
 	 * 分页
 	 */
 	@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<RtuDataRiverVO>> page(@ApiIgnore RtuDataRiverDTO rtuDataRiverDTO, Query query) {
 		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			rtuDataRiverDTO.setOrgId(Func.toLong(user.getDeptId()));
-		} else {
-			rtuDataRiverDTO.setOrgId(null);
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			if (rtuDataRiverDTO.getAdCode() == null) {
+				rtuDataRiverDTO.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 (rtuDataRiverDTO.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);
+				rtuDataRiverDTO.setAdCode(deptRegionEntity.getAdcd());
+			}
 		}
-		IPage<RtuDataRiverVO> pages = dataRiverService.selectPage(Condition.getPage(query),rtuDataRiverDTO);
+		IPage<RtuDataRiverVO> pages = dataRiverService.selectWaterPage(Condition.getPage(query),rtuDataRiverDTO);
 		List<RtuDataRiverVO> list = pages.getRecords();
-		for (RtuDataRiverVO rtuInfoVO : list) {
-			RtuDataRiverWrapper.build().appendInfo(rtuInfoVO);
+		for (RtuDataRiverVO vo : list) {
+			RtuDataRiverWrapper.build().entityVO(vo);
 		}
 		return R.data(pages);
 	}
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
+	})
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入 RtuDataRiverEntity")
+	public R<RtuDataRiverEntity> detail(RtuDataRiverEntity entity) {
+		LambdaQueryWrapper<RtuDataRiverEntity> wrapper = Wrappers.<RtuDataRiverEntity>query().lambda();
+		wrapper.eq(RtuDataRiverEntity::getIsDeleted, 0L);
+		wrapper.eq(RtuDataRiverEntity::getRtuCode, entity.getRtuCode());
+		RtuDataRiverEntity riverEntity = dataRiverService.getOne(wrapper);
+		return R.data(riverEntity);
+	}
 }

+ 37 - 10
src/main/java/org/springblade/modules/business/data/controller/RtuDataRsvrController.java

@@ -6,7 +6,9 @@
  */
 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;
@@ -21,16 +23,17 @@ 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.business.data.dto.RtuDataRsvrDTO;
+import org.springblade.modules.business.data.entity.RtuDataRsvrEntity;
 import org.springblade.modules.business.data.service.IRtuDataRsvrService;
 import org.springblade.modules.business.data.vo.RtuDataRsvrVO;
-import org.springblade.modules.business.data.wrapper.RtuDataRsvrWrapper;
 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
@@ -46,28 +49,52 @@ import java.util.List;
 @Api(value = "河道水情实时数据管理", tags = "测站实时数据管理")
 public class RtuDataRsvrController extends BladeController {
 	private final IRtuDataRsvrService dataRsvrService;
+	private final IDeptRegionService deptRegionService;
+
 	/**
 	 * 分页
 	 */
 	@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<RtuDataRsvrVO>> page(@ApiIgnore RtuDataRsvrDTO rtuDataRsvrDTO, Query query) {
 		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_ORG_SERVICE_PERSON.equals(user.getRoleName())) {
-			rtuDataRsvrDTO.setOrgId(Func.toLong(user.getDeptId()));
-		} else {
-			rtuDataRsvrDTO.setOrgId(null);
+		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+			if (rtuDataRsvrDTO.getAdCode() == null) {
+				rtuDataRsvrDTO.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 (rtuDataRsvrDTO.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);
+				rtuDataRsvrDTO.setAdCode(deptRegionEntity.getAdcd());
+			}
 		}
 		IPage<RtuDataRsvrVO> pages = dataRsvrService.selectPage(Condition.getPage(query),rtuDataRsvrDTO);
-		List<RtuDataRsvrVO> list = pages.getRecords();
-		for (RtuDataRsvrVO rtuInfoVO : list) {
-			RtuDataRsvrWrapper.build().appendInfo(rtuInfoVO);
-		}
 		return R.data(pages);
 	}
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
+	})
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入 RtuDataRsvrEntity")
+	public R<RtuDataRsvrEntity> detail(RtuDataRsvrEntity entity) {
+		LambdaQueryWrapper<RtuDataRsvrEntity> wrapper = Wrappers.<RtuDataRsvrEntity>query().lambda();
+		wrapper.eq(RtuDataRsvrEntity::getIsDeleted, 0L);
+		wrapper.eq(RtuDataRsvrEntity::getRtuCode, entity.getRtuCode());
+		RtuDataRsvrEntity rsvrEntity = dataRsvrService.getOne(wrapper);
+		return R.data(rsvrEntity);
+	}
 }

+ 2 - 1
src/main/java/org/springblade/modules/business/data/dto/RtuDataGroundDTO.java

@@ -10,6 +10,7 @@ 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.RtuDataGroundEntity;
 
 /***
  * Date:2022/8/30
@@ -21,7 +22,7 @@ import org.springblade.core.mp.base.BaseEntity;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class RtuDataGroundDTO extends BaseEntity {
+public class RtuDataGroundDTO extends RtuDataGroundEntity {
 	/**
 	 * 测站名称
 	 */

+ 2 - 1
src/main/java/org/springblade/modules/business/data/dto/RtuDataRainDTO.java

@@ -10,6 +10,7 @@ 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.RtuDataRainEntity;
 
 /***
  * Date:2022/8/30
@@ -21,7 +22,7 @@ import org.springblade.core.mp.base.BaseEntity;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class RtuDataRainDTO extends BaseEntity {
+public class RtuDataRainDTO extends RtuDataRainEntity {
 	/**
 	 * 测站名称
 	 */

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä