Jelajahi Sumber

泰山运维系统云服务项目代码提交20240221

dylan 2 tahun lalu
induk
melakukan
77a3e6af47
100 mengubah file dengan 4608 tambahan dan 3372 penghapusan
  1. 25 1
      pom.xml
  2. 38 4
      src/main/java/org/springblade/constant/BusinessConstant.java
  3. 4 0
      src/main/java/org/springblade/constant/DictBusinessConstant.java
  4. 18 3
      src/main/java/org/springblade/enums/OrderStatusEnum.java
  5. 16 11
      src/main/java/org/springblade/enums/PostCategoryEnum.java
  6. 44 29
      src/main/java/org/springblade/enums/RtuKindEnum.java
  7. 13 13
      src/main/java/org/springblade/enums/SensorTypeEnum.java
  8. 23 22
      src/main/java/org/springblade/enums/WarnKindEnum.java
  9. 3 3
      src/main/java/org/springblade/etl/EtlRegionDataTask.java
  10. 3 191
      src/main/java/org/springblade/modules/baseinfo/equipment/EquipmentInfoController.java
  11. 231 249
      src/main/java/org/springblade/modules/baseinfo/org/controller/BaseOrgController.java
  12. 11 1
      src/main/java/org/springblade/modules/baseinfo/org/dto/OrgInfoDTO.java
  13. 31 2
      src/main/java/org/springblade/modules/baseinfo/org/entity/DeptAttEntity.java
  14. 1 1
      src/main/java/org/springblade/modules/baseinfo/org/entity/DeptRegionEntity.java
  15. 58 2
      src/main/java/org/springblade/modules/baseinfo/org/entity/OrgEntity.java
  16. 3 3
      src/main/java/org/springblade/modules/baseinfo/org/entity/OrgTreeNodeEntity.java
  17. 3 4
      src/main/java/org/springblade/modules/baseinfo/org/mapper/DeptAttMapper.java
  18. 3 26
      src/main/java/org/springblade/modules/baseinfo/org/mapper/DeptAttMapper.xml
  19. 6 0
      src/main/java/org/springblade/modules/baseinfo/org/mapper/DeptRegionMapper.java
  20. 9 0
      src/main/java/org/springblade/modules/baseinfo/org/mapper/DeptRegionMapper.xml
  21. 9 4
      src/main/java/org/springblade/modules/baseinfo/org/mapper/OrgMapper.java
  22. 76 4
      src/main/java/org/springblade/modules/baseinfo/org/mapper/OrgMapper.xml
  23. 6 2
      src/main/java/org/springblade/modules/baseinfo/org/service/IDeptAttService.java
  24. 1 0
      src/main/java/org/springblade/modules/baseinfo/org/service/IDeptRegionService.java
  25. 17 2
      src/main/java/org/springblade/modules/baseinfo/org/service/IOrgService.java
  26. 4 0
      src/main/java/org/springblade/modules/baseinfo/org/service/impl/DeptRegionServiceImpl.java
  27. 10 2
      src/main/java/org/springblade/modules/baseinfo/org/service/impl/IDeptAttServiceImpl.java
  28. 28 2
      src/main/java/org/springblade/modules/baseinfo/org/service/impl/OrgServiceImpl.java
  29. 15 1
      src/main/java/org/springblade/modules/baseinfo/org/vo/OrgInfoVO.java
  30. 69 50
      src/main/java/org/springblade/modules/baseinfo/org/wrapper/OrgInfoWrapper.java
  31. 268 204
      src/main/java/org/springblade/modules/baseinfo/project/controller/BaseProjectController.java
  32. 16 2
      src/main/java/org/springblade/modules/baseinfo/project/dto/ProjectInfoDTO.java
  33. 26 33
      src/main/java/org/springblade/modules/baseinfo/project/entity/ProjectInfoEntity.java
  34. 17 27
      src/main/java/org/springblade/modules/baseinfo/project/entity/ProjectTreeNodeEntity.java
  35. 14 2
      src/main/java/org/springblade/modules/baseinfo/project/mapper/BaseProjectInfoMapper.java
  36. 56 7
      src/main/java/org/springblade/modules/baseinfo/project/mapper/BaseProjectInfoMapper.xml
  37. 12 12
      src/main/java/org/springblade/modules/baseinfo/project/service/IBaseProjectService.java
  38. 16 12
      src/main/java/org/springblade/modules/baseinfo/project/service/impl/BaseProjectServiceImpl.java
  39. 13 0
      src/main/java/org/springblade/modules/baseinfo/project/vo/ProjectInfoVO.java
  40. 34 22
      src/main/java/org/springblade/modules/baseinfo/project/wrapper/ProjectInfoWrapper.java
  41. 299 363
      src/main/java/org/springblade/modules/baseinfo/region/controller/BaseRegionController.java
  42. 8 2
      src/main/java/org/springblade/modules/baseinfo/region/dto/OrgRegionInfoDTO.java
  43. 2 0
      src/main/java/org/springblade/modules/baseinfo/region/dto/RegionInfoDTO.java
  44. 1 1
      src/main/java/org/springblade/modules/baseinfo/region/entity/OrgRegionInfoEntity.java
  45. 4 10
      src/main/java/org/springblade/modules/baseinfo/region/entity/RegionInfoEntity.java
  46. 10 2
      src/main/java/org/springblade/modules/baseinfo/region/mapper/BaseRegionMapper.java
  47. 44 5
      src/main/java/org/springblade/modules/baseinfo/region/mapper/BaseRegionMapper.xml
  48. 6 2
      src/main/java/org/springblade/modules/baseinfo/region/mapper/OrgRegionMapper.java
  49. 9 8
      src/main/java/org/springblade/modules/baseinfo/region/mapper/OrgRegionMapper.xml
  50. 8 2
      src/main/java/org/springblade/modules/baseinfo/region/service/IBaseRegionService.java
  51. 7 2
      src/main/java/org/springblade/modules/baseinfo/region/service/IOrgRegionService.java
  52. 20 3
      src/main/java/org/springblade/modules/baseinfo/region/service/impl/BaseRegionServiceImpl.java
  53. 9 5
      src/main/java/org/springblade/modules/baseinfo/region/service/impl/OrgRegionServiceImpl.java
  54. 4 4
      src/main/java/org/springblade/modules/baseinfo/region/wrapper/RegionInfoNodeWrapper.java
  55. 16 18
      src/main/java/org/springblade/modules/baseinfo/region/wrapper/RegionInfoWrapper.java
  56. 474 267
      src/main/java/org/springblade/modules/baseinfo/rtu/controller/RtuBaseInfoController.java
  57. 33 1
      src/main/java/org/springblade/modules/baseinfo/rtu/dto/RtuInfoDTO.java
  58. 18 0
      src/main/java/org/springblade/modules/baseinfo/rtu/entity/RtuInfoEntity.java
  59. 4 1
      src/main/java/org/springblade/modules/baseinfo/rtu/mapper/RtuBaseInfoMapper.java
  60. 1 1
      src/main/java/org/springblade/modules/baseinfo/rtu/mapper/RtuBaseInfoMapper.xml
  61. 8 1
      src/main/java/org/springblade/modules/baseinfo/rtu/service/IRtuBaseInfoService.java
  62. 30 14
      src/main/java/org/springblade/modules/baseinfo/rtu/service/impl/RtuBaseInfoServiceImpl.java
  63. 24 0
      src/main/java/org/springblade/modules/baseinfo/rtu/vo/RtuInfoVO.java
  64. 117 41
      src/main/java/org/springblade/modules/baseinfo/rtu/wrapper/RtuInfoWrapper.java
  65. 376 237
      src/main/java/org/springblade/modules/baseinfo/servicePerson/controller/ServicePersonController.java
  66. 34 2
      src/main/java/org/springblade/modules/baseinfo/servicePerson/dto/ServicePersonDTO.java
  67. 7 23
      src/main/java/org/springblade/modules/baseinfo/servicePerson/entity/ServicePersonEntity.java
  68. 25 2
      src/main/java/org/springblade/modules/baseinfo/servicePerson/mapper/ServicePersonMapper.java
  69. 70 45
      src/main/java/org/springblade/modules/baseinfo/servicePerson/mapper/ServicePersonMapper.xml
  70. 25 2
      src/main/java/org/springblade/modules/baseinfo/servicePerson/service/IServicePersonService.java
  71. 10 5
      src/main/java/org/springblade/modules/baseinfo/servicePerson/service/impl/ServicePersonServiceImpl.java
  72. 2 2
      src/main/java/org/springblade/modules/baseinfo/servicePerson/vo/OrgServicePersonVO.java
  73. 45 1
      src/main/java/org/springblade/modules/baseinfo/servicePerson/vo/ServicePersonVO.java
  74. 24 15
      src/main/java/org/springblade/modules/baseinfo/servicePerson/wrapper/ServicePersonWrapper.java
  75. 116 57
      src/main/java/org/springblade/modules/baseinfo/user/controller/OpenUserController.java
  76. 25 10
      src/main/java/org/springblade/modules/baseinfo/user/entity/OpenUserEntity.java
  77. 5 2
      src/main/java/org/springblade/modules/baseinfo/user/mapper/OpenUserMapper.java
  78. 8 120
      src/main/java/org/springblade/modules/baseinfo/user/mapper/OpenUserMapper.xml
  79. 5 1
      src/main/java/org/springblade/modules/baseinfo/user/service/IOpenUserService.java
  80. 11 2
      src/main/java/org/springblade/modules/baseinfo/user/service/impl/OpenUserServiceImpl.java
  81. 38 5
      src/main/java/org/springblade/modules/baseinfo/warn/controller/WarnSettingController.java
  82. 8 2
      src/main/java/org/springblade/modules/baseinfo/warn/dto/WarnSettingDTO.java
  83. 1 1
      src/main/java/org/springblade/modules/baseinfo/warn/entity/WarnSettingEntity.java
  84. 1 1
      src/main/java/org/springblade/modules/baseinfo/warn/mapper/WarnSettingMapper.java
  85. 1 1
      src/main/java/org/springblade/modules/baseinfo/warn/mapper/WarnSettingMapper.xml
  86. 1 1
      src/main/java/org/springblade/modules/baseinfo/warn/service/IWarnSettingService.java
  87. 3 3
      src/main/java/org/springblade/modules/baseinfo/warn/service/impl/WarnSettingServiceImpl.java
  88. 697 604
      src/main/java/org/springblade/modules/business/check/order/controller/RtuCheckOrderController.java
  89. 6 0
      src/main/java/org/springblade/modules/business/check/order/dto/CheckOrderInfoDTO.java
  90. 35 0
      src/main/java/org/springblade/modules/business/check/order/entity/CheckOrderInfoEntity.java
  91. 8 0
      src/main/java/org/springblade/modules/business/check/order/mapper/RtuCheckOrderMapper.java
  92. 53 7
      src/main/java/org/springblade/modules/business/check/order/mapper/RtuCheckOrderMapper.xml
  93. 7 0
      src/main/java/org/springblade/modules/business/check/order/service/IRtuCheckOrderService.java
  94. 7 2
      src/main/java/org/springblade/modules/business/check/order/service/impl/RtuCheckOrderServiceImpl.java
  95. 42 0
      src/main/java/org/springblade/modules/business/check/order/vo/CheckOrderInfoVO.java
  96. 116 206
      src/main/java/org/springblade/modules/business/check/order/wrapper/RtuCheckOrderWrapper.java
  97. 353 305
      src/main/java/org/springblade/modules/business/check/process/controller/RtuOrderProcessController.java
  98. 13 0
      src/main/java/org/springblade/modules/business/check/process/dto/OrderProcessInfoDTO.java
  99. 20 0
      src/main/java/org/springblade/modules/business/check/process/entity/OrderProcessInfoEntity.java
  100. 4 2
      src/main/java/org/springblade/modules/business/check/process/mapper/RtuOrderProcessMapper.java

+ 25 - 1
pom.xml

@@ -5,7 +5,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <groupId>org.springblade.tsywxt</groupId>
-    <artifactId>tsywxtcloud</artifactId>
+    <artifactId>tsywxt-cloud</artifactId>
     <name>${project.artifactId}</name>
     <packaging>jar</packaging>
     <version>1.0-SNAPSHOT</version>
@@ -208,6 +208,30 @@
             <artifactId>commons-net</artifactId>
             <version>3.8.0</version>
         </dependency>
+        <dependency>
+            <groupId>net.sf.jasperreports</groupId>
+            <artifactId>jasperreports</artifactId>
+            <version>RELEASE</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.lowagie</groupId>
+                    <artifactId>itext</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.commons</groupId>
+                    <artifactId>commons-collections4</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>net.sf.jasperreports</groupId>
+            <artifactId>jasperreports-fonts</artifactId>
+            <version>RELEASE</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.mail</groupId>
+            <artifactId>javax.mail</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 38 - 4
src/main/java/org/springblade/constant/BusinessConstant.java

@@ -24,6 +24,12 @@ public class BusinessConstant {
 	 * 系统管理员角色
 	 */
 	public static final  String ROLE_SYS_ADMIN ="sys_admin";
+
+	/**
+	 * 系统运维角色
+	 */
+	public static final  String ROLE_SYS_YW ="sys_yw";
+
 	/**
 	 * 盟市机构管理员角色
 	 */
@@ -36,10 +42,18 @@ public class BusinessConstant {
 	 * 运维公司技术人员角色
 	 */
 	public static final  String ROLE_COMPANY_SERVICE_PERSON ="company_servcie_person";
+
+
+	public static final  String ROLE_SYS_YW_ID ="1671033756859355138";
+	public static final  String ROLE_ORG_YW_ID ="1626486217854509058";
+	public static final  String ROLE_COMPANY_YW_ID ="1123598816738675205";
+
 	/**
 	 * 盟市机构管理员角色ID
 	 */
-	public static final  String ROLE_ORG_ADMIN_ID ="1641334028382662657";
+	public static final  String ROLE_ORG_ADMIN_ID ="1626486217854509058";
+
+
 	/**
 	 * 公司运维管理员角色ID
 	 */
@@ -47,15 +61,25 @@ public class BusinessConstant {
 	/**
 	 * 公司运维人员角色ID
 	 */
-	public static final  String ROLE_COMPANY_SERVICE_PERSON_ID ="1641334272017199106";
+	public static final  String ROLE_COMPANY_SERVICE_PERSON_ID ="1123598816738675205";
+
+
+	public static final  String POST_SYS_ADMIN_ID ="1562989286284906498";
+
+	public static final  String POST_SYS_YW_ID ="1562994107637354498";
 	/**
 	 * 管理岗位
 	 */
-	public static final  String POST_ADMIN_ID ="1562989286284906498";
+	public static final  String POST_ORG_ADMIN_ID ="1706859182143635457";
+
+	public static final String  POST_ORG_YW_ID= "1706859292340584449";
 	/**
 	 * 技术员岗位
 	 */
-	public static final  String POST_SERVICE_PERSON_ID ="1562994107637354498";
+	public static final  String POST_COMPANY_ADMIN_ID ="1706859383579279362";
+	public static final  String POST_COMPANY_YW_ID ="1706859505948098562";
+	public static final  String POST_COMPANY_SERVICE_PERSON_ID ="1730535542909140993";
+
 	/**
 	 * 系统管理员用户ID
 	 */
@@ -72,4 +96,14 @@ public class BusinessConstant {
 	 * 帐号密码后缀
 	 */
 	public static final String ACCOUNT_PW_SUFFIX="@8282";
+
+	/**
+	 * 组织机构根ID
+	 */
+	public static final Long ORG_ROOT_ID=0L;
+
+	public static final Long  DEPT_DH_ID =1123598813738675201L;
+
+
+
 }

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

@@ -18,4 +18,8 @@ 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 RTU_KIND ="rtu_kind";
+
+	public static final String WATER_LEVEL_SENSOR_TYPE="water_level_sensor_type";
 }

+ 18 - 3
src/main/java/org/springblade/enums/OrderStatusEnum.java

@@ -9,17 +9,32 @@ public enum OrderStatusEnum {
 	/**
 	 * 工单接单
 	 */
-	STATUS_CONFIRM("2", "工单接单"),
+	STATUS_CONFIRM("2", "工单下发"),
 
 	/**
 	 * 工单处理
 	 */
 	STATUS_PROCESS("3", "工单处理"),
-
+	/**
+	 * 费用待审批
+	 */
+	STATUS_COSTS_PENDING_APPROVE("4", "费用待审批"),
+	/**
+	 * 工单费用审批
+	 */
+	STATUS_COSTS_APPROVE("5", "工单费用审批"),
+	/**
+	 * 工单关闭待审批
+	 */
+	STATUS_CLOSE_PENDING_APPROVE("6", "工单关闭待审批"),
 	/**
 	 * 工单关闭
 	 */
-	STATUS_CLOSE("4", "工单关闭");
+	STATUS_CLOSE("7", "工单关闭"),
+	/**
+	 * 工单取消
+	 */
+	STATUS_CANCEL("8", "工单取消");
 
 	private String code;
 

+ 16 - 11
src/main/java/org/springblade/enums/PostCategoryEnum.java

@@ -1,15 +1,20 @@
 package org.springblade.enums;
 
-public enum OrderCloseEnum {
+public enum PostCategoryEnum {
 	/**
-	 * 进行中
+	 * 管理岗
 	 */
-	ACTIVE_OPEN(0, "进行中"),
+	CATEGORY_MANAGE(1, "管理岗"),
 
 	/**
-	 * 关闭
+	 * 技术岗
 	 */
-	ACTIVE_CLOSE(1, "关闭");
+	CATEGORY_SERVICE(2, "技术岗"),
+
+	/**
+	 * 其他
+	 */
+	CATEGORY_OTHERS(3, "其他");
 
 
 
@@ -17,7 +22,7 @@ public enum OrderCloseEnum {
 
 	private String name;
 
-	private OrderCloseEnum(int code, String name) {
+	private PostCategoryEnum(int code, String name) {
 		this.code = code;
 		this.name = name;
 	}
@@ -31,7 +36,7 @@ public enum OrderCloseEnum {
 	 * @throws Exception
 	 */
 	public static String getName(int code) {
-		for (OrderCloseEnum type : OrderCloseEnum.values()) {
+		for (PostCategoryEnum type : PostCategoryEnum.values()) {
 			if (type.code == code) {
 				return type.name;
 			}
@@ -47,8 +52,8 @@ public enum OrderCloseEnum {
 	 * @return com.zhgzjg.web.enums.DeleteFlag
 	 * @throws Exception
 	 */
-	public static OrderCloseEnum getEnumByCode(int code) {
-		for (OrderCloseEnum type : OrderCloseEnum.values()) {
+	public static PostCategoryEnum getEnumByCode(int code) {
+		for (PostCategoryEnum type : PostCategoryEnum.values()) {
 			if (type.code == code) {
 				return type;
 			}
@@ -65,8 +70,8 @@ public enum OrderCloseEnum {
 	 * @return com.zhgzjg.web.enums.DeleteFlag
 	 * @throws Exception
 	 */
-	public static OrderCloseEnum getEnumByName(String name) {
-		for (OrderCloseEnum type : OrderCloseEnum.values()) {
+	public static PostCategoryEnum getEnumByName(String name) {
+		for (PostCategoryEnum type : PostCategoryEnum.values()) {
 			if (type.name.equals(name)) {
 				return type;
 			}

+ 44 - 29
src/main/java/org/springblade/enums/RtuKindEnum.java

@@ -1,52 +1,67 @@
 package org.springblade.enums;
 
-public enum WarnKindEnum {
+public enum RtuKindEnum {
 
 	/**
-	 * 测站离线
+	 * 降水
 	 */
-	WARN_OFFLINE(1, "测站离线"),
+	RTU_RAIN("1", "降水"),
 
 	/**
-	 * 测站时钟异常
+	 * 河道
 	 */
-	WARN_CLOCK(2, "测站时钟异常"),
+	RTU_RIVER("2", "河道"),
 
 	/**
-	 * 测站雨量小时报漏报
+	 * 水库(湖泊)
 	 */
-	WARN_RAIN_MISS_OUT(3, "测站雨量小时报漏报"),
+	RTU_RESERVOIR("3", "水库(湖泊)"),
 
 	/**
-	 * 测站水位小时报漏报
+	 * 闸坝
 	 */
-	WARN_WL_MISS_OUT(4, "测站水位小时报漏报"),
+	RTU_BARRAGE("4", "闸坝"),
 
 	/**
-	 * 5分钟上报延时
+	 * 泵站
 	 */
-	WARN_UP_MIN_DELAY(5, "雨量5分钟上报延时"),
+	RTU_PUMP_SITE("5", "泵站"),
 
 	/**
-	 * 小时上报延时
+	 * 潮汐
 	 */
-	WARN_RAIN_UP_HOUR_DELAY(6, "雨量站小时上报延时"),
+	RTU_TIDE("6", "潮汐"),
 
 	/**
-	 * 水位站小时上报延时
+	 * 墒情
 	 */
-	WARN_WL_UP_HOUR_DELAY(7, "水位站小时上报延时"),
+	RTU_GROUND_SITE("7", "墒情"),
 
 	/**
-	 * 雨量疑似异常值
+	 * 地下水
 	 */
-	WARN_OUTLIER_VALUE(8, "雨量疑似异常值");
+	RTU_GROUND_WATER("8", "地下水"),
 
-	private int code;
+	/**
+	 * 水质
+	 */
+	RTU_WATER_QUALITY("9", "水质"),
+
+	/**
+	 * 取水口
+	 */
+	RTU_WATER_INTAKE("10", "取水口"),
+
+	/**
+	 * 排水口
+	 */
+	RTU_WATER_OUTLET("11", "排水口");
+
+	private String code;
 
 	private String name;
 
-	private WarnKindEnum(int code, String name) {
+	private RtuKindEnum(String code, String name) {
 		this.code = code;
 		this.name = name;
 	}
@@ -60,9 +75,9 @@ public enum WarnKindEnum {
 	 * @return java.lang.String
 	 * @throws Exception
 	 */
-	public static String getName(int code) {
-		for (WarnKindEnum type : WarnKindEnum.values()) {
-			if (type.code == code) {
+	public static String getName(String code) {
+		for (RtuKindEnum type : RtuKindEnum.values()) {
+			if (type.code.equals(code)) {
 				return type.name;
 			}
 		}
@@ -78,9 +93,9 @@ public enum WarnKindEnum {
 	 * @return com.zhgzjg.web.enums.DeleteFlag
 	 * @throws Exception
 	 */
-	public static WarnKindEnum getEnumByCode(int code) {
-		for (WarnKindEnum type : WarnKindEnum.values()) {
-			if (type.code == code) {
+	public static RtuKindEnum getEnumByCode(String code) {
+		for (RtuKindEnum type : RtuKindEnum.values()) {
+			if (type.code.equals(code)) {
 				return type;
 			}
 		}
@@ -97,8 +112,8 @@ public enum WarnKindEnum {
 	 * @return com.zhgzjg.web.enums.DeleteFlag
 	 * @throws Exception
 	 */
-	public static WarnKindEnum getEnumByName(String name) {
-		for (WarnKindEnum type : WarnKindEnum.values()) {
+	public static RtuKindEnum getEnumByName(String name) {
+		for (RtuKindEnum type : RtuKindEnum.values()) {
 			if (type.name.equals(name)) {
 				return type;
 			}
@@ -107,11 +122,11 @@ public enum WarnKindEnum {
 	}
 
 
-	public int getCode() {
+	public String getCode() {
 		return code;
 	}
 
-	public void setCode(int code) {
+	public void setCode(String code) {
 		this.code = code;
 	}
 

+ 13 - 13
src/main/java/org/springblade/enums/SensorTypeEnum.java

@@ -1,20 +1,20 @@
 package org.springblade.enums;
 
-public enum PostCategoryEnum {
+public enum SensorTypeEnum {
 	/**
-	 * 管理岗
+	 * 雨量计
 	 */
-	CATEGORY_MANAGE(1, "管理岗"),
+	SENSOR_TYPE_RAIN(1, "雨量计"),
 
 	/**
-	 * 技术岗
+	 * 水位计
 	 */
-	CATEGORY_SERVICE(2, "技术岗"),
+	SENSOR_TYPE_WATER(2, "水位计"),
 
 	/**
-	 * 其他
+	 * 墒情计
 	 */
-	CATEGORY_OTHERS(3, "其他");
+	SENSOR_TYPE_GROUND(3, "墒情计");
 
 
 
@@ -22,7 +22,7 @@ public enum PostCategoryEnum {
 
 	private String name;
 
-	private PostCategoryEnum(int code, String name) {
+	private SensorTypeEnum(int code, String name) {
 		this.code = code;
 		this.name = name;
 	}
@@ -36,7 +36,7 @@ public enum PostCategoryEnum {
 	 * @throws Exception
 	 */
 	public static String getName(int code) {
-		for (PostCategoryEnum type : PostCategoryEnum.values()) {
+		for (SensorTypeEnum type : SensorTypeEnum.values()) {
 			if (type.code == code) {
 				return type.name;
 			}
@@ -52,8 +52,8 @@ public enum PostCategoryEnum {
 	 * @return com.zhgzjg.web.enums.DeleteFlag
 	 * @throws Exception
 	 */
-	public static PostCategoryEnum getEnumByCode(int code) {
-		for (PostCategoryEnum type : PostCategoryEnum.values()) {
+	public static SensorTypeEnum getEnumByCode(int code) {
+		for (SensorTypeEnum type : SensorTypeEnum.values()) {
 			if (type.code == code) {
 				return type;
 			}
@@ -70,8 +70,8 @@ public enum PostCategoryEnum {
 	 * @return com.zhgzjg.web.enums.DeleteFlag
 	 * @throws Exception
 	 */
-	public static PostCategoryEnum getEnumByName(String name) {
-		for (PostCategoryEnum type : PostCategoryEnum.values()) {
+	public static SensorTypeEnum getEnumByName(String name) {
+		for (SensorTypeEnum type : SensorTypeEnum.values()) {
 			if (type.name.equals(name)) {
 				return type;
 			}

+ 23 - 22
src/main/java/org/springblade/enums/WarnKindEnum.java

@@ -5,42 +5,43 @@ public enum WarnKindEnum {
 	/**
 	 * 测站离线
 	 */
-	WARN_OFFLINE(1, "测站离线"),
-
+	WARN_SITE_OFFLINE(1, "离线"),
 	/**
-	 * 测站时钟异常
+	 * 上报延时
 	 */
-	WARN_CLOCK(2, "测站时钟异常"),
-
+	WARN_UP_DELAY(2, "上报延时"),
 	/**
-	 * 测站雨量小时报漏报
+	 * 水位仪表故障
 	 */
-	WARN_RAIN_MISS_OUT(3, "测站雨量小时报漏报"),
-
+	WARN_WATER_LEVEL_SENSOR_FAILURE(3, "水位仪表故障"),
 	/**
-	 * 测站水位小时报漏报
+	 * 交流电故障
 	 */
-	WARN_WL_MISS_OUT(4, "测站水位小时报漏报"),
-
+	WARN_AC_CHARGE_FAILURE(4, "交流电故障"),
 	/**
-	 * 5分钟上报延时
+	 * 电池电压故障
 	 */
-	WARN_UP_MIN_DELAY(5, "雨量5分钟上报延时"),
-
+	WARN_BV_FAILURE(5, "电池电压故障"),
 	/**
-	 * 小时上报延时
+	 * RTU时钟故障
 	 */
-	WARN_RAIN_UP_HOUR_DELAY(6, "雨量站小时上报延时"),
-
+	WARN_CLOCK_ERROR(6, "RTU时钟故障"),
 	/**
-	 * 水位站小时上报延时
+	 * 数据采集故障
 	 */
-	WARN_WL_UP_HOUR_DELAY(7, "水位站小时上报延时"),
-
+	WARN_SENSOR_COLLECT_FAILURE(7, "数据采集故障"),
+	/**
+	 * SD卡损坏
+	 */
+	WARN_SD_DAMAGE(8, "SD卡损坏"),
+	/**
+	 * RTU上报堵塞
+	 */
+	WARN_DATAGRAM_UP_FAIL(9, "RTU上报堵塞"),
 	/**
-	 * 雨量疑似异常值
+	 * 太阳能充电电压
 	 */
-	WARN_OUTLIER_VALUE(8, "雨量疑似异常值");
+	WARN_SUN_POWER_BV_FAILURE(10, "太阳能充电电压");
 
 	private int code;
 

+ 3 - 3
src/main/java/org/springblade/etl/EtlRegionDataTask.java

@@ -9,7 +9,7 @@ package org.springblade.etl;
 
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.etl.service.IEtlAdCdService;
-import org.springblade.modules.baseinfo.region.service.IBaseInfoRegionService;
+import org.springblade.modules.baseinfo.region.service.IBaseRegionService;
 import org.springframework.data.redis.core.RedisTemplate;
 
 import java.util.concurrent.Callable;
@@ -27,10 +27,10 @@ public class EtlRegionDataTask implements Callable<Integer> {
 
 	private RedisTemplate redisTemplate;
 	private IEtlAdCdService etlAdCdService;
-	private IBaseInfoRegionService regionService;
+	private IBaseRegionService regionService;
 
 
-	EtlRegionDataTask(RedisTemplate redisTemplate, IEtlAdCdService etlAdCdService, IBaseInfoRegionService regionService) {
+	EtlRegionDataTask(RedisTemplate redisTemplate, IEtlAdCdService etlAdCdService, IBaseRegionService regionService) {
 		this.redisTemplate = redisTemplate;
 		this.etlAdCdService = etlAdCdService;
 		this.regionService = regionService;

+ 3 - 191
src/main/java/org/springblade/modules/baseinfo/equipment/EquipmentInfoController.java

@@ -4,7 +4,7 @@
  * 项目名称: 大恒泰山系统
  * 创建日期:2022/8/22
  */
-package org.springblade.modules.baseinfo.rtu.controller;
+package org.springblade.modules.baseinfo.equipment;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -16,42 +16,24 @@ 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.service.IDeptRegionService;
-import org.springblade.modules.baseinfo.region.service.IBaseRegionService;
 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.ArrayList;
-import java.util.LinkedList;
 import java.util.List;
 
 
@@ -64,56 +46,14 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 @RestController
-@RequestMapping("galaxy-business/rtu/base")
+@RequestMapping("galaxy-business/baseinfo/equipment")
 @AllArgsConstructor
 @Api(value = "测站设备基础管理", tags = "测站设备基础管理")
-public class RtuBaseInfoController extends BladeController {
+public class EquipmentInfoController 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 IBaseRegionService 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));
-    }
-
     /**
      * 多表联合查询自定义分页
      */
@@ -129,20 +69,8 @@ public class RtuBaseInfoController extends BladeController {
         if (rtuInfoDTO.getDeptId() == null) {
             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());
-//            }
-
                     rtuInfoDTO.setOrgId(Func.toLong(user.getDeptId()));
-
             }
         }else{
             if (!rtuInfoDTO.getDeptId().equals(BusinessConstant.DEPT_DH_ID)){
@@ -177,66 +105,6 @@ public class RtuBaseInfoController extends BladeController {
     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);
     }
 
@@ -297,16 +165,6 @@ public class RtuBaseInfoController extends BladeController {
     @ApiOperationSupport(order = 5)
     @ApiOperation(value = "修改", notes = "传入RtuInfoDTO")
     public R update(@RequestBody RtuInfoDTO dto) {
-//        LambdaQueryWrapper<RegionInfoEntity> wrapper = Wrappers.<RegionInfoEntity>query().lambda();
-//        wrapper.eq(RegionInfoEntity::getAdcd, dto.getAdCode());
-//        wrapper.eq(RegionInfoEntity::getIsDeleted, 0L);
-//        RegionInfoEntity regionInfoEntity = baseInfoRegionService.getOne(wrapper);
-//        dto.setAdDist(regionInfoEntity.getAdnm());
-//        LambdaQueryWrapper<RegionInfoEntity> citywrapper = Wrappers.<RegionInfoEntity>query().lambda();
-//        citywrapper.eq(RegionInfoEntity::getAdcd, regionInfoEntity.getParentCode());
-//        citywrapper.eq(RegionInfoEntity::getIsDeleted, 0L);
-//        regionInfoEntity = baseInfoRegionService.getOne(citywrapper);
-//        dto.setAdCity(regionInfoEntity.getAdnm());
         Dept dept = deptService.getById(dto.getOrgId());
         dto.setManageCompany(dept.getDeptName());
         dto.setIsRain(0);
@@ -347,16 +205,6 @@ public class RtuBaseInfoController extends BladeController {
     @ApiOperationSupport(order = 6)
     @ApiOperation(value = "新增或修改", notes = "传入RtuInfoDTO")
     public R submit(@RequestBody RtuInfoDTO dto) {
-//        LambdaQueryWrapper<RegionInfoEntity> wrapper = Wrappers.<RegionInfoEntity>query().lambda();
-//        wrapper.eq(RegionInfoEntity::getAdcd, dto.getAdCode());
-//        wrapper.eq(RegionInfoEntity::getIsDeleted, 0L);
-//        RegionInfoEntity regionInfoEntity = baseInfoRegionService.getOne(wrapper);
-//        dto.setAdDist(regionInfoEntity.getAdnm());
-//        LambdaQueryWrapper<RegionInfoEntity> citywrapper = Wrappers.<RegionInfoEntity>query().lambda();
-//        citywrapper.eq(RegionInfoEntity::getAdcd, regionInfoEntity.getParentCode());
-//        citywrapper.eq(RegionInfoEntity::getIsDeleted, 0L);
-//        regionInfoEntity = baseInfoRegionService.getOne(citywrapper);
-//        dto.setAdCity(regionInfoEntity.getAdnm());
         Dept dept = deptService.getById(dto.getOrgId());
         dto.setManageCompany(dept.getDeptName());
         dto.setIsRain(0);
@@ -410,42 +258,6 @@ public class RtuBaseInfoController extends BladeController {
         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.setDeptId(dept.getId());
-
-            Long warningRtus = rtuWarningService.warningRtuCount(rtuWarningInfoDTO);
-            rtuStatisticsInfoVO.setWarningRtuCount(warningRtus);
-
-            list.add(rtuStatisticsInfoVO);
-        }
-
-        return R.data(list);
-    }
-
     private String getLng(String lngText) {
         ArrayList<String> textArr = new ArrayList<>();
         textArr.add("");

+ 231 - 249
src/main/java/org/springblade/modules/baseinfo/org/controller/BaseOrgController.java

@@ -32,10 +32,13 @@ import org.springblade.modules.baseinfo.org.service.IDeptRegionService;
 import org.springblade.modules.baseinfo.org.service.IOrgService;
 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.system.entity.Dept;
+import org.springblade.modules.system.entity.Role;
 import org.springblade.modules.system.service.IDeptService;
+import org.springblade.modules.system.service.IRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.ValueOperations;
@@ -44,6 +47,7 @@ import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -60,29 +64,30 @@ import java.util.List;
 @RequestMapping("galaxy-business/baseinfo/org")
 @AllArgsConstructor
 @Api(value = "运维单位管理", tags = "运维单位管理")
-public class BaseInfoOrgController extends BladeController {
+public class BaseOrgController extends BladeController {
     private final IDeptService deptService;
     private final IDeptRegionService deptRegionService;
     private final IOrgService orgService;
     private final IDeptAttService deptAttService;
+    private final IRoleService roleService;
 
     @Resource
-    private RedisTemplate redisTemplate;
+    private RedisTemplate<String, String> redisTemplate;
 
     @GetMapping("/list")
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "分页")
     public R<List<OrgInfoVO>> list() {
-        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()));
-            List<Dept> pages = deptService.list(wrapper);
-            return R.data(OrgInfoWrapper.build().listVO(pages));
-        } else {
+//        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()));
+//            List<Dept> pages = deptService.list(wrapper);
+//            return R.data(OrgInfoWrapper.build().listVO(pages));
+//        } else {
             return R.data(null);
-        }
+       // }
     }
 
     /**
@@ -91,274 +96,251 @@ public class BaseInfoOrgController extends BladeController {
     @GetMapping("/page")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "deptName", value = "机构名称", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "parentId", value = "机构父ID", paramType = "query", dataType = "long"),
     })
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "分页")
     public R<IPage<OrgInfoVO>> page(@ApiIgnore OrgInfoDTO dto, Query query) {
         BladeUser user = AuthUtil.getUser();
-        if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
-            dto.setParentId(BusinessConstant.DEPT_DH_ID);
-        }else{
+        LambdaQueryWrapper<Role> rolewrapper = Wrappers.<Role>query().lambda();
+        rolewrapper.eq(Role::getRoleAlias, BusinessConstant.ROLE_SYS_ADMIN);
+        rolewrapper.last("limit 1");
+        Role role = roleService.getOne(rolewrapper);
+        if (Func.isNull(role)) {
+            return R.fail("查询错误");
+        }
+        if (!user.getRoleId().equals(Func.toStr(role.getId()))) {
+            if (Func.isNull(dto.getTenantId())) {
+                dto.setTenantId(user.getTenantId());
+            }
+        }
+        if (Func.isNull(dto.getParentId())) {
             dto.setParentId(Func.toLong(user.getDeptId()));
         }
-
-//            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<OrgInfoVO> pages = orgService.selectPage(Condition.getPage(query), dto);
-            return R.data(pages);
-//		} else {
-//			return R.data(null);
-//		}
+        IPage<OrgInfoVO> pages = orgService.selectPage(Condition.getPage(query), dto);
+        List<OrgInfoVO> list = pages.getRecords();
+        for (OrgInfoVO vo:list){
+            OrgInfoWrapper.build().entityVO(vo);
         }
+        return R.data(pages);
+    }
+
+    /**
+     * 详情
+     */
+//    @GetMapping("/detail")
+//    @ApiOperationSupport(order = 2)
+//    @ApiOperation(value = "详情", notes = "传入 Dept")
+//    public R<Dept> detail(Dept dept) {
+//        Dept vo = deptService.getById(dept.getId());
+//
+//        return R.data(OrgInfoWrapper.build().entityVO(vo));
+//    }
+
+    @GetMapping("/region")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "取行政区信息", notes = "传入 Dept")
+    public R<Dept> getRegion(Dept dept) {
+        Dept vo = deptService.getById(dept.getId());
+        return R.data(vo);
+    }
 
-        /**
-         * 详情
-         */
-        @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 orgInfoDTO) {
+        Dept dept = new Dept();
+        dept.setDeptName(orgInfoDTO.getDeptName());
+        dept.setFullName(orgInfoDTO.getDeptName());
+        if (Func.isNull(orgInfoDTO.getParentId())) {
+            dept.setParentId(BusinessConstant.ORG_ROOT_ID);
+        } else {
+            dept.setParentId(orgInfoDTO.getParentId());
         }
+        Dept parentDept = deptService.getById(dept.getParentId());
+        dept.setAncestors(parentDept.getAncestors() + "," + parentDept.getId());
+        dept.setRemark(orgInfoDTO.getRemark());
+        dept.setDeptCategory(2);
+        deptService.save(dept);
+        DeptAttEntity deptAttEntity = new DeptAttEntity();
+        deptAttEntity.setDeptId(dept.getId());
+        deptAttEntity.setRegType(1);
+        return R.status(deptAttService.save(deptAttEntity));
+    }
 
+    /**
+     * 修改
+     */
+    @PostMapping("/update")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "修改", notes = "传入 Dept")
+    public R update(@RequestBody Dept dept) {
+        return R.status(deptService.updateById(dept));
+    }
 
-        /**
-         * 新增
-         */
-        @PostMapping("/save")
-        @ApiOperationSupport(order = 3)
-        @ApiOperation(value = "新增", notes = "传入 Dept")
-        @Transactional
-        public R save (@RequestBody OrgInfoDTO orgInfoDTO){
-            BladeUser user = AuthUtil.getUser();
-            Dept dept = new Dept();
-            dept.setDeptName(orgInfoDTO.getDeptName());
-            dept.setFullName(orgInfoDTO.getDeptName());
-            dept.setParentId(Func.toLong(user.getDeptId()));
-            Dept parentDept = deptService.getById(Func.toLong(user.getDeptId()));
-            dept.setAncestors(parentDept.getAncestors() + "," + parentDept.getId());
-            dept.setRemark(orgInfoDTO.getRemark());
-            //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 {
-//			return R.status(false);
-//		}
-            deptService.save(dept);
+    /**
+     * 新增或修改
+     */
+    @PostMapping("/submit")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "新增或修改", notes = "传入 Dept")
+    public R submit(@RequestBody Dept dept) {
+        return R.status(deptService.saveOrUpdate(dept));
+    }
 
-            DeptAttEntity deptAttEntity = new DeptAttEntity();
-            deptAttEntity.setDeptId(dept.getId());
-            deptAttEntity.setRegType(1);
-            return R.status(deptAttService.save(deptAttEntity));
+    /**
+     * 删除
+     */
+    @PostMapping("/remove")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "逻辑删除", notes = "传入ID数组")
+    public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
+        if (null == ids) {
+            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));
+        List<Long> list = Func.toLongList(ids);
+        for (Long id : list) {
+            deptService.removeById(id);
         }
+        return R.status(true);
+    }
 
-        /**
-         * 新增或修改
-         */
-        @PostMapping("/submit")
-        @ApiOperationSupport(order = 6)
-        @ApiOperation(value = "新增或修改", notes = "传入 Dept")
-        public R submit (@RequestBody Dept dept){
-            return R.status(deptService.saveOrUpdate(dept));
+    @GetMapping("/lazy-tree")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "parentId", value = "行政区划代码", paramType = "query", dataType = "long"),
+    })
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "树")
+    public R<List<OrgTreeNodeEntity>> lazyTree(@ApiIgnore OrgInfoDTO dto) {
+        BladeUser user = AuthUtil.getUser();
+        if (Func.isNull(dto.getTenantId())) {
+            dto.setTenantId(user.getTenantId());
         }
-
-        /**
-         * 删除
-         */
-        @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);
+        LambdaQueryWrapper<Role> rolewrapper = Wrappers.<Role>query().lambda();
+        rolewrapper.eq(Role::getRoleAlias, BusinessConstant.ROLE_SYS_ADMIN);
+        rolewrapper.last("limit 1");
+        Role role = roleService.getOne(rolewrapper);
+        if (Func.isNull(role)) {
+            return R.fail("查询错误");
+        }
+        List<OrgTreeNodeEntity> nodeEntities = new LinkedList<>();
+        LambdaQueryWrapper<Dept> wrapper = Wrappers.<Dept>query().lambda();
+        wrapper.eq(Dept::getIsDeleted, 0);
+        if (!user.getRoleId().equals(Func.toStr(role.getId()))) {
+            wrapper.eq(Dept::getTenantId, dto.getTenantId());
+        }
+        if (Func.notNull(dto.getParentId())) {
+            wrapper.eq(Dept::getParentId, Func.toLong(dto.getParentId()));
+        } else {
+            wrapper.eq(Dept::getParentId, BusinessConstant.ORG_ROOT_ID);
+        }
+        List<Dept> list = this.deptService.list(wrapper);
+        for (Dept entity : list) {
+            OrgTreeNodeEntity nodeEntity = new OrgTreeNodeEntity();
+            nodeEntity.setId(Func.toStr(entity.getId()));
+            nodeEntity.setValue(Func.toStr(entity.getId()));
+            nodeEntity.setTitle(entity.getDeptName());
+            nodeEntity.setText(entity.getDeptName());
+            nodeEntity.setKey(Func.toStr(entity.getId()));
+            nodeEntity.setParentId(Func.toStr(entity.getParentId()));
+            LambdaQueryWrapper<Dept> childrenWrapper = Wrappers.<Dept>query().lambda();
+            childrenWrapper.eq(Dept::getParentId, entity.getId());
+            long count = this.deptService.count(childrenWrapper);
+            if (count > 0) {
+                nodeEntity.setHasChildren(true);
+            } else {
+                nodeEntity.setHasChildren(false);
             }
-            return R.status(true);
+            nodeEntities.add(nodeEntity);
         }
+        return R.data(nodeEntities);
+    }
 
-
-        @GetMapping("/tree")
-        @ApiOperationSupport(order = 2)
-        @ApiOperation(value = "树")
-        public R<List<OrgTreeNodeEntity>> orgTree () {
-            ValueOperations<String, String> opsHash = redisTemplate.opsForValue();
-            List<OrgTreeNodeEntity> nodeEntities = new LinkedList<>();
-            BladeUser user = AuthUtil.getUser();
-            if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
-//            String orgTreeJson = opsHash.get("org.tree.admin");
-//            if (null != orgTreeJson) {
-//                nodeEntities = JSON.parseObject(orgTreeJson, new TypeReference<List<OrgTreeNodeEntity>>() {
-//                });
-//            } else {
-                LambdaQueryWrapper<Dept> queryWrapper = Wrappers.<Dept>query().lambda();
-                queryWrapper.eq(Dept::getIsDeleted, 0);
-                queryWrapper.eq(Dept::getId, BusinessConstant.DEPT_DH_ID);
-                List<Dept> list = deptService.list(queryWrapper);
-                for (Dept entity : list) {
-                    OrgTreeNodeEntity nodeEntity = new OrgTreeNodeEntity();
-                    nodeEntity.setId(Func.toStr(entity.getId()));
-                    nodeEntity.setValue(Func.toStr(entity.getId()));
-                    nodeEntity.setTitle(entity.getDeptName());
-                    nodeEntity.setText(entity.getDeptName());
-                    nodeEntity.setKey(Func.toStr(entity.getId()));
-                    nodeEntity.setParentId(Func.toStr(entity.getParentId()));
-                    getChildren(nodeEntity, entity);
-                    if (nodeEntity.getChildren() != null && nodeEntity.getChildren().size() > 0) {
-                        nodeEntity.setHasChildren(true);
-                    } else {
-                        nodeEntity.setHasChildren(false);
-                    }
-                    nodeEntities.add(nodeEntity);
-                }
-                opsHash.set("org.tree.admin", JSON.toJSONString(nodeEntities));
-                // }
+    @GetMapping("/tree")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "树")
+    public R<List<OrgTreeNodeEntity>> orgTree() {
+        //ValueOperations<String, String> opsHash = redisTemplate.opsForValue();
+        List<OrgTreeNodeEntity> nodeEntities = new LinkedList<>();
+        BladeUser user = AuthUtil.getUser();
+        LambdaQueryWrapper<Dept> wrapper = Wrappers.<Dept>query().lambda();
+        wrapper.eq(Dept::getId, Func.toLong(user.getDeptId()));
+        List<Dept> list = this.deptService.list(wrapper);
+        for (Dept entity : list) {
+            OrgTreeNodeEntity nodeEntity = new OrgTreeNodeEntity();
+            nodeEntity.setId(Func.toStr(entity.getId()));
+            nodeEntity.setValue(Func.toStr(entity.getId()));
+            nodeEntity.setTitle(entity.getDeptName());
+            nodeEntity.setText(entity.getDeptName());
+            nodeEntity.setKey(Func.toStr(entity.getId()));
+            nodeEntity.setParentId(Func.toStr(entity.getParentId()));
+            getChildren(nodeEntity, entity);
+            if (nodeEntity.getChildren() != null && nodeEntity.getChildren().size() > 0) {
+                nodeEntity.setHasChildren(true);
             } else {
-//            String regionJson = opsHash.get("org.tree." + user.getDeptId());
-//            if (null != regionJson) {
-//                nodeEntities = JSON.parseObject(regionJson, new TypeReference<List<OrgTreeNodeEntity>>() {
-//                });
-//            } else {
-                LambdaQueryWrapper<Dept> deptRegionEntityLambdaQueryWrapper = Wrappers.<Dept>query().lambda();
-                deptRegionEntityLambdaQueryWrapper.eq(Dept::getIsDeleted, 0);
-                deptRegionEntityLambdaQueryWrapper.eq(Dept::getId, Func.toLong(user.getDeptId()));
-                List<Dept> list = deptService.list(deptRegionEntityLambdaQueryWrapper);
-                for (Dept entity : list) {
-                    OrgTreeNodeEntity nodeEntity = new OrgTreeNodeEntity();
-                    nodeEntity.setId(Func.toStr(entity.getId()));
-                    nodeEntity.setValue(Func.toStr(entity.getId()));
-                    nodeEntity.setTitle(entity.getDeptName());
-                    nodeEntity.setText(entity.getDeptName());
-                    nodeEntity.setKey(Func.toStr(entity.getId()));
-                    nodeEntity.setParentId(Func.toStr(entity.getParentId()));
-                    getChildren(nodeEntity, entity);
-                    if (nodeEntity.getChildren() != null && nodeEntity.getChildren().size() > 0) {
-                        nodeEntity.setHasChildren(true);
-                    } else {
-                        nodeEntity.setHasChildren(false);
-                    }
-                    nodeEntities.add(nodeEntity);
-                }
+                nodeEntity.setHasChildren(false);
+            }
+            nodeEntities.add(nodeEntity);
+        }
+        return R.data(nodeEntities);
+    }
 
 
-//                LambdaQueryWrapper<RegionInfoEntity> queryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
-//                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(Func.toStr(entity.getId()));
-//                    nodeEntity.setValue(Func.toStr(entity.getId()));
-//                    nodeEntity.setTitle(entity.getDeptName());
-//                    nodeEntity.setText(entity.getDeptName());
-//                    nodeEntity.setKey(Func.toStr(entity.getId()));
-//                    nodeEntity.setParentId(Func.toStr(entity.getParentId()));
-//                    getChildren(nodeEntity, entity);
-//                    if (nodeEntity.getChildren() != null && nodeEntity.getChildren().size() > 0) {
-//                        nodeEntity.setHasChildren(true);
-//                    } else {
-//                        nodeEntity.setHasChildren(false);
-//                    }
-//                    nodeEntities.add(nodeEntity);
-//                }
-                opsHash.set("org.tree." + user.getDeptId(), JSON.toJSONString(nodeEntities));
-                //  }
+    @GetMapping("/tree/{orgId}")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "树")
+    public R<List<OrgTreeNodeEntity>> orgTree(@PathVariable(name = "orgId") String orgId) {
+        List<OrgTreeNodeEntity> nodeEntities = new LinkedList<>();
+        LambdaQueryWrapper<Dept> deptRegionEntityLambdaQueryWrapper = Wrappers.<Dept>query().lambda();
+        deptRegionEntityLambdaQueryWrapper.eq(Dept::getIsDeleted, 0);
+        deptRegionEntityLambdaQueryWrapper.eq(Dept::getId, Func.toLong(orgId));
+        List<Dept> list = deptService.list(deptRegionEntityLambdaQueryWrapper);
+        for (Dept entity : list) {
+            OrgTreeNodeEntity nodeEntity = new OrgTreeNodeEntity();
+            nodeEntity.setId(Func.toStr(entity.getId()));
+            nodeEntity.setValue(Func.toStr(entity.getId()));
+            nodeEntity.setTitle(entity.getDeptName());
+            nodeEntity.setText(entity.getDeptName());
+            nodeEntity.setKey(Func.toStr(entity.getId()));
+            nodeEntity.setParentId(Func.toStr(entity.getParentId()));
+            getChildren(nodeEntity, entity);
+            if (nodeEntity.getChildren() != null && nodeEntity.getChildren().size() > 0) {
+                nodeEntity.setHasChildren(true);
+            } else {
+                nodeEntity.setHasChildren(false);
             }
-            return R.data(nodeEntities);
+            nodeEntities.add(nodeEntity);
         }
+        return R.data(nodeEntities);
+    }
 
-
-        @GetMapping("/tree/{orgId}")
-        @ApiOperationSupport(order = 2)
-        @ApiOperation(value = "树")
-        public R<List<OrgTreeNodeEntity>> orgTree (@PathVariable(name = "orgId") String orgId){
+    private void getChildren(OrgTreeNodeEntity nodeEntity, Dept orgEntity) {
+        LambdaQueryWrapper<Dept> queryWrapper = Wrappers.<Dept>query().lambda();
+        queryWrapper.eq(Dept::getParentId, Func.toLong(orgEntity.getId()));
+        List<Dept> list = deptService.list(queryWrapper);
+        if (null != list && list.size() > 0) {
             List<OrgTreeNodeEntity> nodeEntities = new LinkedList<>();
-            LambdaQueryWrapper<Dept> deptRegionEntityLambdaQueryWrapper = Wrappers.<Dept>query().lambda();
-            deptRegionEntityLambdaQueryWrapper.eq(Dept::getIsDeleted, 0);
-            deptRegionEntityLambdaQueryWrapper.eq(Dept::getId, Func.toLong(orgId));
-            List<Dept> list = deptService.list(deptRegionEntityLambdaQueryWrapper);
             for (Dept entity : list) {
-                OrgTreeNodeEntity nodeEntity = new OrgTreeNodeEntity();
-                nodeEntity.setId(Func.toStr(entity.getId()));
-                nodeEntity.setValue(Func.toStr(entity.getId()));
-                nodeEntity.setTitle(entity.getDeptName());
-                nodeEntity.setText(entity.getDeptName());
-                nodeEntity.setKey(Func.toStr(entity.getId()));
-                nodeEntity.setParentId(Func.toStr(entity.getParentId()));
-                getChildren(nodeEntity, entity);
-                if (nodeEntity.getChildren() != null && nodeEntity.getChildren().size() > 0) {
-                    nodeEntity.setHasChildren(true);
+                OrgTreeNodeEntity node = new OrgTreeNodeEntity();
+                node.setId(Func.toStr(entity.getId()));
+                node.setValue(Func.toStr(entity.getId()));
+                node.setTitle(entity.getDeptName());
+                node.setText(entity.getDeptName());
+                node.setKey(Func.toStr(entity.getId()));
+                node.setParentId(Func.toStr(entity.getParentId()));
+                getChildren(node, entity);
+                if (node.getChildren() != null && node.getChildren().size() > 0) {
+                    node.setHasChildren(true);
                 } else {
-                    nodeEntity.setHasChildren(false);
-                }
-                nodeEntities.add(nodeEntity);
-            }
-            return R.data(nodeEntities);
-        }
-
-        private void getChildren (OrgTreeNodeEntity nodeEntity, Dept orgEntity){
-            LambdaQueryWrapper<Dept> queryWrapper = Wrappers.<Dept>query().lambda();
-            queryWrapper.eq(Dept::getParentId, Func.toLong(orgEntity.getId()));
-            List<Dept> list = deptService.list(queryWrapper);
-            if (null != list && list.size() > 0) {
-                List<OrgTreeNodeEntity> nodeEntities = new LinkedList<>();
-                for (Dept entity : list) {
-                    OrgTreeNodeEntity node = new OrgTreeNodeEntity();
-                    node.setId(Func.toStr(entity.getId()));
-                    node.setValue(Func.toStr(entity.getId()));
-                    node.setTitle(entity.getDeptName());
-                    node.setText(entity.getDeptName());
-                    node.setKey(Func.toStr(entity.getId()));
-                    node.setParentId(Func.toStr(entity.getParentId()));
-                    getChildren(node, entity);
-                    if (node.getChildren() != null && node.getChildren().size() > 0) {
-                        node.setHasChildren(true);
-                    } else {
-                        node.setHasChildren(false);
-                    }
-                    nodeEntities.add(node);
+                    node.setHasChildren(false);
                 }
-                nodeEntity.setChildren(nodeEntities);
+                nodeEntities.add(node);
             }
+            nodeEntity.setChildren(nodeEntities);
         }
     }
+}

+ 11 - 1
src/main/java/org/springblade/modules/baseinfo/org/dto/OrgInfoDTO.java

@@ -6,9 +6,12 @@
  */
 package org.springblade.modules.baseinfo.org.dto;
 
+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.org.entity.OrgEntity;
 import org.springblade.modules.system.entity.Dept;
 
 /***
@@ -21,10 +24,17 @@ import org.springblade.modules.system.entity.Dept;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class OrgInfoDTO extends Dept {
+public class OrgInfoDTO extends OrgEntity {
 	/**
 	 * 区划
 	 */
 	@ApiModelProperty(value = "区划")
 	private String adcd;
+
+	/**
+	 * 注册类型
+	 */
+	@ApiModelProperty(value = "注册类型")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer regType;
 }

+ 31 - 2
src/main/java/org/springblade/modules/baseinfo/org/entity/DeptAttEntity.java

@@ -6,7 +6,13 @@
  */
 package org.springblade.modules.baseinfo.org.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/6/30
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
@@ -14,5 +20,28 @@ package org.springblade.modules.baseinfo.org.entity;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class DeptAttEntity {
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("blade_dept_att")
+public class DeptAttEntity extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 租户ID
+     */
+    @ApiModelProperty("租户ID")
+    private String tenantId;
+
+    /**
+     * 机构ID
+     */
+    @ApiModelProperty(value = "机构ID")
+    private Long deptId;
+
+    /**
+     * 注册类型
+     */
+    @ApiModelProperty(value = "注册类型")
+    private Integer regType;
 }

+ 1 - 1
src/main/java/org/springblade/modules/baseinfo/org/entity/DeptRegionEntity.java

@@ -20,7 +20,7 @@ import org.springblade.core.mp.base.BaseEntity;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("blade_dept_region")
+@TableName("base_dept_region")
 public class DeptRegionEntity extends BaseEntity {
 
 	private static final long serialVersionUID = 1L;

+ 58 - 2
src/main/java/org/springblade/modules/baseinfo/org/entity/OrgEntity.java

@@ -6,7 +6,14 @@
  */
 package org.springblade.modules.baseinfo.org.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;
+import org.springblade.modules.system.entity.Dept;
+
+/***
  * Date:2023/6/30
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
@@ -14,5 +21,54 @@ package org.springblade.modules.baseinfo.org.entity;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class OrgEntity {
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("blade_dept")
+public class OrgEntity extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 租户ID
+     */
+    @ApiModelProperty("租户ID")
+    private String tenantId;
+
+    /**
+     * 机构父ID
+     */
+    @ApiModelProperty(value = "机构父ID")
+    private Long parentId;
+
+    /**
+     * 祖级列表
+     */
+    @ApiModelProperty(value = "祖级列表")
+    private String ancestors;
+
+    /**
+     * 机构名称
+     */
+    @ApiModelProperty(value = "机构名称")
+    private String deptName;
+
+    /**
+     * 机构名称全称
+     */
+    @ApiModelProperty(value = "机构名称全称")
+    private String fullName;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 部门类型
+     */
+    @ApiModelProperty(value = "部门类型")
+    private Integer deptCategory;
+
 }

+ 3 - 3
src/main/java/org/springblade/modules/baseinfo/org/entity/OrgTreeNodeEntity.java

@@ -4,7 +4,7 @@
  * 项目名称: 大恒泰山系统
  * 创建日期:2022/9/6
  */
-package org.springblade.modules.baseinfo.region.entity;
+package org.springblade.modules.baseinfo.org.entity;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -20,7 +20,7 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 @Data
-public class RegionTreeNodeEntity {
+public class OrgTreeNodeEntity {
 
 	@ApiModelProperty("ID")
 	private String id;
@@ -41,7 +41,7 @@ public class RegionTreeNodeEntity {
 	private String  text;
 
 	@ApiModelProperty("子节点")
-	List<RegionTreeNodeEntity> children;
+	List<OrgTreeNodeEntity> children;
 
 	@ApiModelProperty("是否有子节点")
 	private Boolean hasChildren;

+ 3 - 4
src/main/java/org/springblade/modules/baseinfo/org/mapper/DeptAttMapper.java

@@ -10,10 +10,9 @@ 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.org.dto.OrgInfoDTO;
-import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.org.entity.DeptAttEntity;
 import org.springblade.modules.baseinfo.org.entity.OrgEntity;
 import org.springblade.modules.baseinfo.org.vo.OrgInfoVO;
-import org.springblade.modules.system.entity.Dept;
 
 import java.util.List;
 
@@ -25,6 +24,6 @@ import java.util.List;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface OrgMapper extends BaseMapper<OrgEntity> {
-    List<OrgInfoVO> selectPage(IPage page, @Param("dto") OrgInfoDTO dto);
+public interface DeptAttMapper extends BaseMapper<DeptAttEntity> {
+
 }

+ 3 - 26
src/main/java/org/springblade/modules/baseinfo/org/mapper/DeptAttMapper.xml

@@ -1,34 +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.OrgMapper">
+<mapper namespace="org.springblade.modules.baseinfo.org.mapper.DeptAttMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="orgResultMap" type="org.springblade.modules.baseinfo.org.entity.OrgEntity">
-        <result column="parent_id" property="parentId"/>
-        <result column="ancestors" property="ancestors"/>
-        <result column="dept_name" property="deptName"/>
-        <result column="full_name" property="fullName"/>
-        <result column="remark" property="remark"/>
-    </resultMap>
-
-    <resultMap id="orgVoResultMap" type="org.springblade.modules.baseinfo.org.vo.OrgInfoVO">
-        <result column="parent_id" property="parentId"/>
-        <result column="ancestors" property="ancestors"/>
-        <result column="dept_name" property="deptName"/>
-        <result column="full_name" property="fullName"/>
-        <result column="remark" property="remark"/>
+    <resultMap id="orgResultMap" type="org.springblade.modules.baseinfo.org.entity.DeptAttEntity">
+        <result column="dept_id" property="deptId"/>
         <result column="reg_type" property="regType"/>
     </resultMap>
 
-    <select id="selectPage" resultMap="orgVoResultMap">
-        SELECT
-        d.*,a.reg_type
-        FROM
-        blade_dept d
-        LEFT JOIN blade_dept_att a ON a.dept_id = d.id and a.is_deleted = 0
-        WHERE
-        p.is_deleted = 0
-        ORDER BY
-        d.full_name
-    </select>
 </mapper>

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

@@ -7,7 +7,12 @@
 package org.springblade.modules.baseinfo.org.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.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.org.vo.OrgInfoVO;
+import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
+import org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO;
 
 /***
  * Date:2023/2/23
@@ -18,4 +23,5 @@ import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
  * Remark:认为有必要的其他信息
  */
 public interface DeptRegionMapper extends BaseMapper<DeptRegionEntity> {
+    DeptRegionEntity getByDeptId(@Param("deptId") Long deptId);
 }

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

@@ -8,4 +8,13 @@
         <result column="adcd" property="adcd"/>
     </resultMap>
 
+    <select id="getByDeptId" resultMap="baseinfoOrgResultMap">
+        SELECT
+        n.*
+        FROM
+        base_dept_region n
+        WHERE
+        n.is_deleted = 0 and n.dept_id = #{deptId}
+        limit 1
+    </select>
 </mapper>

+ 9 - 4
src/main/java/org/springblade/modules/baseinfo/org/mapper/OrgMapper.java

@@ -9,10 +9,13 @@ package org.springblade.modules.baseinfo.org.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.org.dto.OrgInfoDTO;
 import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.org.entity.OrgEntity;
 import org.springblade.modules.baseinfo.org.vo.OrgInfoVO;
-import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
-import org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO;
+import org.springblade.modules.system.entity.Dept;
+
+import java.util.List;
 
 /***
  * Date:2023/2/23
@@ -22,6 +25,8 @@ import org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface DeptRegionMapper extends BaseMapper<DeptRegionEntity> {
-    IPage<OrgInfoVO> selectPage(IPage page, @Param("entity") DeptRegionEntity entity);
+public interface OrgMapper extends BaseMapper<OrgEntity> {
+    List<OrgInfoVO> selectPage(IPage page, @Param("dto") OrgInfoDTO dto);
+    List<OrgInfoVO> selectList(@Param("dto") OrgInfoDTO dto);
+    long orgCount(@Param("dto") OrgInfoDTO dto);
 }

+ 76 - 4
src/main/java/org/springblade/modules/baseinfo/org/mapper/OrgMapper.xml

@@ -1,11 +1,83 @@
 <?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">
+<mapper namespace="org.springblade.modules.baseinfo.org.mapper.OrgMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="baseinfoOrgResultMap" type="org.springblade.modules.baseinfo.org.entity.DeptRegionEntity">
-        <result column="dept_id" property="deptId"/>
-        <result column="adcd" property="adcd"/>
+    <resultMap id="orgResultMap" type="org.springblade.modules.baseinfo.org.entity.OrgEntity">
+        <result column="tenant_id" property="tenantId"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="ancestors" property="ancestors"/>
+        <result column="dept_name" property="deptName"/>
+        <result column="full_name" property="fullName"/>
+        <result column="remark" property="remark"/>
+
+    </resultMap>
+
+    <resultMap id="orgVoResultMap" type="org.springblade.modules.baseinfo.org.vo.OrgInfoVO">
+        <result column="tenant_id" property="tenantId"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="ancestors" property="ancestors"/>
+        <result column="dept_name" property="deptName"/>
+        <result column="full_name" property="fullName"/>
+        <result column="remark" property="remark"/>
+        <result column="reg_type" property="regType"/>
     </resultMap>
 
+    <select id="selectPage" resultMap="orgVoResultMap">
+        SELECT
+        d.*,a.reg_type
+        FROM
+        blade_dept d
+        LEFT JOIN blade_dept_att a ON a.dept_id = d.id and a.is_deleted = 0
+        WHERE
+        d.is_deleted = 0
+        <if test="dto.tenantId!=null">
+            and d.tenant_id = #{dto.tenantId}
+        </if>
+        <if test="dto.deptName!=null">
+            and d.full_name like concat(concat('%', #{dto.deptName}), '%')
+        </if>
+        <if test="dto.parentId!=null">
+            and (d.parent_id = #{dto.parentId} or FIND_IN_SET(#{dto.parentId},ancestors) > 0)
+        </if>
+        ORDER BY
+        d.full_name
+    </select>
+
+    <select id="selectList" resultMap="orgVoResultMap">
+        SELECT
+        d.*,a.reg_type
+        FROM
+        blade_dept d
+        LEFT JOIN blade_dept_att a ON a.dept_id = d.id and a.is_deleted = 0
+        WHERE
+        d.is_deleted = 0
+        <if test="dto.parentId!=null">
+            and d.parent_id = #{dto.parentId}
+        </if>
+        <if test="dto.regType!=null">
+            and d.reg_type = #{dto.regType}
+        </if>
+        <if test="dto.deptName!=null">
+            and d.full_name like concat(concat('%', #{dto.deptName}), '%')
+        </if>
+        ORDER BY
+        d.full_name
+    </select>
+
+    <select id="orgCount" resultType="java.lang.Long">
+        SELECT
+        count(*)
+        FROM
+        blade_dept d
+        LEFT JOIN blade_dept_att a ON a.dept_id = d.id and a.is_deleted = 0
+        WHERE
+        d.is_deleted = 0
+        <if test="dto.parentId!=null">
+            and d.parent_id = #{dto.parentId}
+        </if>
+        <if test="dto.regType!=null">
+            and d.reg_type = #{dto.regType}
+        </if>
+    </select>
 </mapper>

+ 6 - 2
src/main/java/org/springblade/modules/baseinfo/org/service/IDeptAttService.java

@@ -6,7 +6,11 @@
  */
 package org.springblade.modules.baseinfo.org.service;
 
-/*** 
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.modules.baseinfo.org.entity.DeptAttEntity;
+
+
+/***
  * Date:2023/6/30
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
@@ -14,5 +18,5 @@ package org.springblade.modules.baseinfo.org.service;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class IDeptAttService {
+public  interface IDeptAttService extends BaseService<DeptAttEntity> {
 }

+ 1 - 0
src/main/java/org/springblade/modules/baseinfo/org/service/IDeptRegionService.java

@@ -18,4 +18,5 @@ import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
  * Remark:认为有必要的其他信息
  */
 public interface IDeptRegionService extends BaseService<DeptRegionEntity> {
+    DeptRegionEntity getByDeptId(Long deptId);
 }

+ 17 - 2
src/main/java/org/springblade/modules/baseinfo/org/service/IOrgService.java

@@ -6,7 +6,19 @@
  */
 package org.springblade.modules.baseinfo.org.service;
 
-/*** 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.modules.baseinfo.org.dto.OrgInfoDTO;
+import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.org.entity.OrgEntity;
+import org.springblade.modules.baseinfo.org.vo.OrgInfoVO;
+import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
+import org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO;
+import org.springblade.modules.system.entity.Dept;
+
+import java.util.List;
+
+/***
  * Date:2023/6/30
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
@@ -14,5 +26,8 @@ package org.springblade.modules.baseinfo.org.service;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class IOrgService {
+public interface IOrgService extends BaseService<OrgEntity> {
+    IPage<OrgInfoVO> selectPage(IPage<OrgInfoVO> page, OrgInfoDTO dto);
+    List<OrgInfoVO> selectList(OrgInfoDTO dto);
+    long orgCount(OrgInfoDTO dto);
 }

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

@@ -22,4 +22,8 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class DeptRegionServiceImpl  extends BaseServiceImpl<DeptRegionMapper, DeptRegionEntity> implements IDeptRegionService {
+    @Override
+    public DeptRegionEntity getByDeptId(Long deptId) {
+        return baseMapper.getByDeptId(deptId);
+    }
 }

+ 10 - 2
src/main/java/org/springblade/modules/baseinfo/org/service/impl/IDeptAttServiceImpl.java

@@ -6,7 +6,14 @@
  */
 package org.springblade.modules.baseinfo.org.service.impl;
 
-/*** 
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.modules.baseinfo.org.entity.DeptAttEntity;
+import org.springblade.modules.baseinfo.org.mapper.DeptAttMapper;
+import org.springblade.modules.baseinfo.org.service.IDeptAttService;
+import org.springframework.stereotype.Service;
+
+
+/***
  * Date:2023/6/30
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
@@ -14,5 +21,6 @@ package org.springblade.modules.baseinfo.org.service.impl;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class IDeptAttServiceImpl {
+@Service
+public class IDeptAttServiceImpl extends BaseServiceImpl<DeptAttMapper, DeptAttEntity> implements IDeptAttService {
 }

+ 28 - 2
src/main/java/org/springblade/modules/baseinfo/org/service/impl/OrgServiceImpl.java

@@ -6,7 +6,18 @@
  */
 package org.springblade.modules.baseinfo.org.service.impl;
 
-/*** 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.modules.baseinfo.org.dto.OrgInfoDTO;
+import org.springblade.modules.baseinfo.org.entity.OrgEntity;
+import org.springblade.modules.baseinfo.org.mapper.OrgMapper;
+import org.springblade.modules.baseinfo.org.service.IOrgService;
+import org.springblade.modules.baseinfo.org.vo.OrgInfoVO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/***
  * Date:2023/6/30
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
@@ -14,5 +25,20 @@ package org.springblade.modules.baseinfo.org.service.impl;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class OrgServiceImpl {
+@Service
+public class OrgServiceImpl extends BaseServiceImpl<OrgMapper, OrgEntity> implements IOrgService {
+    @Override
+    public IPage<OrgInfoVO> selectPage(IPage<OrgInfoVO> page, OrgInfoDTO dto) {
+        return page.setRecords(baseMapper.selectPage(page,dto));
+    }
+
+    @Override
+    public List<OrgInfoVO> selectList(OrgInfoDTO dto) {
+        return baseMapper.selectList(dto);
+    }
+
+    @Override
+    public long orgCount(OrgInfoDTO dto) {
+        return baseMapper.orgCount(dto);
+    }
 }

+ 15 - 1
src/main/java/org/springblade/modules/baseinfo/org/vo/OrgInfoVO.java

@@ -6,9 +6,12 @@
  */
 package org.springblade.modules.baseinfo.org.vo;
 
+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.org.entity.OrgEntity;
 import org.springblade.modules.system.entity.Dept;
 
 /***
@@ -21,7 +24,14 @@ import org.springblade.modules.system.entity.Dept;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class OrgInfoVO extends Dept {
+public class OrgInfoVO extends OrgEntity {
+
+	/**
+	 * 注册类型
+	 */
+	@ApiModelProperty(value = "注册类型")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer regType;
 
 	/**
 	 * 机构名称
@@ -41,4 +51,8 @@ public class OrgInfoVO extends Dept {
 	 */
 	@ApiModelProperty(value = "区划名称")
 	private String adnm;
+
+	@ApiModelProperty(value = "父机构名称")
+	private String parentName;
+
 }

+ 69 - 50
src/main/java/org/springblade/modules/baseinfo/org/wrapper/OrgInfoWrapper.java

@@ -11,14 +11,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.Func;
 import org.springblade.core.tool.utils.SpringUtil;
 import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.org.entity.OrgEntity;
 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;
-import org.springblade.modules.baseinfo.region.vo.RegionInfoVO;
+import org.springblade.modules.baseinfo.region.service.IBaseRegionService;
 import org.springblade.modules.system.entity.Dept;
+import org.springblade.modules.system.service.IDeptService;
 
 import java.util.Objects;
 
@@ -30,53 +32,70 @@ import java.util.Objects;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class OrgInfoWrapper extends BaseEntityWrapper<Dept, OrgInfoVO> {
-
-	public static OrgInfoWrapper build() {
-		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) {
-		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;
-	}
+public class OrgInfoWrapper extends BaseEntityWrapper<OrgEntity, OrgInfoVO> {
 
+    public static OrgInfoWrapper build() {
+        return new OrgInfoWrapper();
+    }
+
+    private static IBaseRegionService baseInfoRegionService;
+
+    private static IBaseRegionService getBaseInfoRegionService() {
+        if (baseInfoRegionService == null) {
+            baseInfoRegionService = SpringUtil.getBean(IBaseRegionService.class);
+        }
+        return baseInfoRegionService;
+    }
+
+    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 OrgInfoVO entityVO(OrgEntity entity) {
+        OrgInfoVO orgInfoVO = Objects.requireNonNull(BeanUtil.copy(entity, OrgInfoVO.class));
+        return orgInfoVO;
+    }
+
+    public OrgInfoVO entityVO(OrgInfoVO vo) {
+        vo.setDictValue(vo.getDeptName());
+
+        Dept dept = getDeptService().getById(vo.getParentId());
+        if (Func.notNull(dept)) {
+            vo.setParentName(dept.getDeptName());
+        } else {
+            vo.setParentName("");
+        }
+
+//        LambdaQueryWrapper<DeptRegionEntity> deptRegionEntityLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
+//        deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
+//        deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, vo.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) {
+//                vo.setAdcd(regionInfoEntity.getAdcd());
+//                vo.setAdnm(regionInfoEntity.getAdnm());
+//            }
+//        }
+        return vo;
+    }
 }

+ 268 - 204
src/main/java/org/springblade/modules/baseinfo/project/controller/BaseProjectController.java

@@ -21,18 +21,24 @@ 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.dto.OrgInfoDTO;
+import org.springblade.modules.baseinfo.org.entity.OrgTreeNodeEntity;
+import org.springblade.modules.baseinfo.project.dto.ProjectInfoDTO;
 import org.springblade.modules.baseinfo.project.entity.ProjectInfoEntity;
 import org.springblade.modules.baseinfo.project.entity.ProjectTreeNodeEntity;
-import org.springblade.modules.baseinfo.project.service.IProjectBaseInfoService;
+import org.springblade.modules.baseinfo.project.service.IBaseProjectService;
 import org.springblade.modules.baseinfo.project.service.IProjectWarningSettingService;
 import org.springblade.modules.baseinfo.project.vo.ProjectInfoVO;
 import org.springblade.modules.baseinfo.project.wrapper.ProjectInfoWrapper;
+import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
+import org.springblade.modules.baseinfo.region.service.IBaseRegionService;
 import org.springblade.modules.system.entity.Dept;
 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;
 
@@ -46,210 +52,268 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 @RestController
-@RequestMapping("galaxy-business/project/base")
+@RequestMapping("galaxy-business/baseinfo/project")
 @AllArgsConstructor
 @Api(value = "项目信息基础管理", tags = "项目信息基础管理")
-public class ProjectBaseInfoController extends BladeController {
-	private final IProjectBaseInfoService projectBaseInfoService;
-	private final IProjectWarningSettingService warningSettingService;
-	private final IDeptService deptService;
-	private final IUserService userService;
-
-	/**
-	 * 分页
-	 */
-	@GetMapping("/list")
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "分页")
-	public R<IPage<ProjectInfoVO>> list(Query query) {
-		IPage<ProjectInfoEntity> pages = projectBaseInfoService.page(Condition.getPage(query));
-		return R.data(ProjectInfoWrapper.build().pageVO(pages));
-	}
-
-	@GetMapping("/org/list")
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "分页")
-	public R<List<ProjectInfoVO>> orglist() {
-		LambdaQueryWrapper<ProjectInfoEntity> wrapper = Wrappers.<ProjectInfoEntity>query().lambda();
-		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_SYS_ADMIN.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);
-		List<ProjectInfoEntity> pages = projectBaseInfoService.list(wrapper);
-		return R.data(ProjectInfoWrapper.build().listVO(pages));
-	}
-
-	/**
-	 * 多表联合查询自定义分页
-	 */
-	@GetMapping("/page")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "projectName", value = "项目名称", paramType = "query", dataType = "string"),
-
-	})
-	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "分页")
-	public R<IPage<ProjectInfoVO>> page(@ApiIgnore  ProjectInfoEntity entity, Query query) {
-		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_SYS_ADMIN.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));
-		return R.data(pages);
-	}
-
-
-	/**
-	 * 详情
-	 */
-	@GetMapping("/detail")
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入projectInfoEntity")
-	public R<ProjectInfoVO> detail(ProjectInfoEntity projectInfoEntity) {
-		ProjectInfoEntity detail = projectBaseInfoService.getOne(Condition.getQueryWrapper(projectInfoEntity));
-		return R.data(ProjectInfoWrapper.build().entityVO(detail));
-	}
-
-
-	/**
-	 * 新增
-	 */
-	@PostMapping("/save")
-	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "新增", notes = "传入ProjectInfoEntity")
-	public R save(@RequestBody ProjectInfoEntity projectInfoEntity) {
-		return R.status(projectBaseInfoService.save(projectInfoEntity));
-	}
-
-	/**
-	 * 修改
-	 */
-	@PostMapping("/update")
-	@ApiOperationSupport(order = 5)
-	@ApiOperation(value = "修改", notes = "传入ProjectInfoEntity")
-	public R update(@RequestBody ProjectInfoEntity projectInfoEntity) {
-		return R.status(projectBaseInfoService.updateById(projectInfoEntity));
-	}
-
-	/**
-	 * 新增或修改
-	 */
-	@PostMapping("/submit")
-	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "新增或修改", notes = "传入projectInfoEntity")
-	public R submit(@RequestBody ProjectInfoEntity projectInfoEntity) {
-		return R.status(projectBaseInfoService.saveOrUpdate(projectInfoEntity));
-	}
-
-	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperationSupport(order = 7)
-	@ApiOperation(value = "逻辑删除", notes = "传入projectInfoEntity")
-	public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
-		boolean temp = projectBaseInfoService.deleteLogic(Func.toLongList(ids));
-		return R.status(temp);
-	}
-
-	/**
-	 * 项目预警配置保存或修改
-	 *
-	 * @param projectInfoEntity
-	 * @return
-	 */
-	@PostMapping("/setting/warning/submit")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "id", value = "项目ID", paramType = "query", dataType = "long"),
-		@ApiImplicitParam(name = "warnActive", value = "预警开关", paramType = "query", dataType = "int"),
-		@ApiImplicitParam(name = "delayTime", value = "延时", paramType = "query", dataType = "int")
-	})
-	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "项目预警配置新增或修改", notes = "传入warningSettingEntity")
-	public R warningSubmit(@ApiIgnore ProjectInfoEntity projectInfoEntity) {
-		//return R.status(warningSettingService.saveOrUpdate(warningSettingEntity));
-
-		LambdaUpdateWrapper<ProjectInfoEntity> wrapper = Wrappers.<ProjectInfoEntity>update().lambda();
-		wrapper.set(ProjectInfoEntity::getWarnActive, projectInfoEntity.getWarnActive());
-		wrapper.set(ProjectInfoEntity::getDelayTime, projectInfoEntity.getDelayTime());
-		wrapper.eq(ProjectInfoEntity::getId, projectInfoEntity.getId());
-
-		this.projectBaseInfoService.update(wrapper);
-
-		return R.success("预警设置操作成功");
-	}
-
-	@GetMapping("/tree")
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情")
-	public R<List<ProjectTreeNodeEntity>> projectTree() {
-		BladeUser user = AuthUtil.getUser();
-		List<ProjectTreeNodeEntity> tree = new LinkedList<>();
-		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);
-			ProjectTreeNodeEntity root = new ProjectTreeNodeEntity();
-			root.setText(dept.getDeptName());
-			root.setValue("" + dept.getId() + "-0");
-			root.setOrgId(dept.getId());
-
-			List<ProjectTreeNodeEntity> orgNode = new LinkedList<>();
-			root.setChildren(orgNode);
-			tree.add(root);
-			List<Dept> childs = this.deptService.getDeptChild(dept.getId());
-			if (null != childs && childs.size() > 0) {
-				for (Dept child : childs) {
-					ProjectTreeNodeEntity entity = new ProjectTreeNodeEntity();
-					entity.setText(child.getDeptName());
-					entity.setValue("" + child.getId() + "-0");
-					entity.setOrgId(child.getId());
-
-					List<ProjectTreeNodeEntity> projectNode = new LinkedList<>();
-					entity.setChildren(projectNode);
-					orgNode.add(entity);
-					LambdaQueryWrapper<ProjectInfoEntity> projectwrapper = Wrappers.<ProjectInfoEntity>query().lambda();
-					projectwrapper.eq(ProjectInfoEntity::getOrgId, child.getId());
-
-					List<ProjectInfoEntity> projectInfoEntities = this.projectBaseInfoService.list(projectwrapper);
-					for (ProjectInfoEntity p : projectInfoEntities) {
-						entity = new ProjectTreeNodeEntity();
-						entity.setText(p.getProjectName());
-						entity.setValue("" + child.getId() + "-" + p.getId());
-						entity.setOrgId(child.getId());
-						entity.setProjectId(p.getId());
-						projectNode.add(entity);
-					}
-				}
-			}
-
-		} else if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
-
-			ProjectTreeNodeEntity root = new ProjectTreeNodeEntity();
-			root.setText("北京大恒");
-			root.setValue("0");
-			List<ProjectTreeNodeEntity> projectNode = new LinkedList<>();
-			root.setChildren(projectNode);
-			tree.add(root);
-
-			ProjectTreeNodeEntity entity = new ProjectTreeNodeEntity();
-			entity.setText("赤峰市");
-			entity.setValue("1");
-			projectNode.add(entity);
-
-			entity = new ProjectTreeNodeEntity();
-			entity.setText("锡盟");
-			entity.setValue("2");
-			projectNode.add(entity);
-
-		}
-
-		return R.data(tree);
-	}
+public class BaseProjectController extends BladeController {
+    private final IBaseProjectService baseProjectService;
+    private final IBaseRegionService baseRegionService;
+
+
+    /**
+     * 分页
+     */
+    @GetMapping("/list")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "分页")
+    public R<IPage<ProjectInfoVO>> list(Query query) {
+        IPage<ProjectInfoEntity> pages = baseProjectService.page(Condition.getPage(query));
+        return R.data(ProjectInfoWrapper.build().pageVO(pages));
+    }
+
+    @GetMapping("/org/list")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "分页")
+    public R<List<ProjectInfoVO>> orglist() {
+        LambdaQueryWrapper<ProjectInfoEntity> wrapper = Wrappers.<ProjectInfoEntity>query().lambda();
+        BladeUser user = AuthUtil.getUser();
+        if (BusinessConstant.ROLE_SYS_ADMIN.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);
+        List<ProjectInfoEntity> pages = baseProjectService.list(wrapper);
+        return R.data(ProjectInfoWrapper.build().listVO(pages));
+    }
+
+    /**
+     * 多表联合查询自定义分页
+     */
+    @GetMapping("/page")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "projectName", value = "项目名称", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "orgId", value = "机构ID", paramType = "query", dataType = "long"),
+            @ApiImplicitParam(name = "adcd", value = "行政区划编码", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "paramsType", value = "参数类型", paramType = "query", dataType = "int"),
+    })
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "分页")
+    public R<IPage<ProjectInfoVO>> page(@ApiIgnore ProjectInfoDTO dto, Query query) {
+        BladeUser user = AuthUtil.getUser();
+        if (Func.isNull(dto.getTenantId())){
+            dto.setTenantId(user.getTenantId());
+        }
+        if (dto.getParamsType() == 0) {
+            dto.setAdcd(null);
+            if (dto.getOrgId() != null) {
+                if (BusinessConstant.DEPT_DH_ID.equals(dto.getOrgId())) {
+                    dto.setOrgId(null);
+                }
+            }
+        } else if (dto.getParamsType() == 2) {
+            dto.setOrgId(null);
+            if (dto.getAdcd() != null && dto.getAdcd().length() == 0) {
+                dto.setAdcd(null);
+            }
+            if (dto.getAdcd() != null) {
+                if ("00".equals(dto.getAdcd())) {
+                    dto.setAdcd(null);
+                }
+            }
+        }
+        IPage<ProjectInfoVO> pages = baseProjectService.selectPage(Condition.getPage(query), dto);
+        List<ProjectInfoVO> list = pages.getRecords();
+        for (ProjectInfoVO vo : list) {
+            ProjectInfoWrapper.build().entityVO(vo);
+        }
+        return R.data(pages);
+    }
+
+
+    /**
+     * 详情
+     */
+    @GetMapping("/detail")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "详情", notes = "传入projectInfoEntity")
+    public R<ProjectInfoVO> detail(ProjectInfoEntity projectInfoEntity) {
+        ProjectInfoEntity detail = baseProjectService.getById(projectInfoEntity.getId());
+        return R.data(ProjectInfoWrapper.build().entityVO(detail));
+    }
+
+
+    /**
+     * 新增
+     */
+    @PostMapping("/save")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "新增", notes = "传入ProjectInfoEntity")
+    public R save(@RequestBody ProjectInfoEntity projectInfoEntity) {
+        return R.status(baseProjectService.save(projectInfoEntity));
+    }
+
+    /**
+     * 修改
+     */
+    @PostMapping("/update")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "修改", notes = "传入ProjectInfoEntity")
+    public R update(@RequestBody ProjectInfoEntity projectInfoEntity) {
+        return R.status(baseProjectService.updateById(projectInfoEntity));
+    }
+
+    /**
+     * 新增或修改
+     */
+    @PostMapping("/submit")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "新增或修改", notes = "传入projectInfoEntity")
+    public R submit(@RequestBody ProjectInfoEntity projectInfoEntity) {
+        return R.status(baseProjectService.saveOrUpdate(projectInfoEntity));
+    }
+
+    /**
+     * 删除
+     */
+    @PostMapping("/remove")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "逻辑删除", notes = "传入projectInfoEntity")
+    public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
+        boolean temp = baseProjectService.deleteLogic(Func.toLongList(ids));
+        return R.status(temp);
+    }
+
+    /**
+     * 行政区配置
+     *
+     * @param dto
+     * @return
+     */
+    @GetMapping("/ad/setting/list")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "分页")
+    public R<List<ProjectInfoVO>> adSettingList(ProjectInfoDTO dto) {
+        List<ProjectInfoVO> list = new ArrayList<>();
+        return R.data(list);
+    }
+
+
+    /**
+     * 行政区配置
+     *
+     * @param dto
+     * @return
+     */
+    @PostMapping("/ad/setting/submit")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "项目ID", paramType = "query", dataType = "long"),
+            @ApiImplicitParam(name = "adcd", value = "项目编码", paramType = "query", dataType = "string"),
+    })
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "行政区配置", notes = "")
+    public R adSettingSubmit(@ApiIgnore ProjectInfoDTO dto) {
+        if (dto.getId() == null || dto.getAdcd() == null) {
+            return R.fail("参数错误");
+        }
+
+        ProjectInfoEntity entity = this.baseProjectService.getById(dto.getId());
+
+        RegionInfoEntity regionInfoEntity = this.baseRegionService.getByCode(dto.getAdcd());
+
+        entity.setAdcd(regionInfoEntity.getAncestors() + "," + dto.getAdcd());
+        this.baseProjectService.updateById(entity);
+
+        return R.success("行政区配置操作成功");
+    }
+
+
+    /**
+     * 行政区配置删除
+     *
+     * @param ids
+     * @return
+     */
+    @PostMapping("/ad/setting/remove")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "逻辑删除", notes = "")
+    public R adSettingRemove(@ApiParam(value = "主键集合") @RequestParam String ids) {
+        //boolean temp = baseProjectService.deleteLogic(Func.toLongList(ids));
+        return R.status(true);
+    }
+
+    /**
+     * 项目预警配置保存或修改
+     *
+     * @param projectInfoEntity
+     * @return
+     */
+    @PostMapping("/setting/warning/submit")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "项目ID", paramType = "query", dataType = "long"),
+            @ApiImplicitParam(name = "warnActive", value = "预警开关", paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "delayTime", value = "延时", paramType = "query", dataType = "int")
+    })
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "项目预警配置新增或修改", notes = "传入warningSettingEntity")
+    public R warningSubmit(@ApiIgnore ProjectInfoEntity projectInfoEntity) {
+        //return R.status(warningSettingService.saveOrUpdate(warningSettingEntity));
+
+//        LambdaUpdateWrapper<ProjectInfoEntity> wrapper = Wrappers.<ProjectInfoEntity>update().lambda();
+//        wrapper.set(ProjectInfoEntity::getWarnActive, projectInfoEntity.getWarnActive());
+//        wrapper.set(ProjectInfoEntity::getDelayTime, projectInfoEntity.getDelayTime());
+//        wrapper.eq(ProjectInfoEntity::getId, projectInfoEntity.getId());
+//
+//        this.projectBaseInfoService.update(wrapper);
+
+        return R.success("预警设置操作成功");
+    }
+
+    @GetMapping("/tree")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "详情")
+    public R<List<ProjectTreeNodeEntity>> projectTree() {
+        BladeUser user = AuthUtil.getUser();
+        List<ProjectTreeNodeEntity> tree = new LinkedList<>();
+        ProjectInfoDTO dto = new ProjectInfoDTO();
+        dto.setOrgId(Func.toLong(user.getDeptId()));
+        List<ProjectInfoVO> list = this.baseProjectService.selectList(dto);
+        if (null != list) {
+            for (ProjectInfoVO vo : list) {
+                ProjectTreeNodeEntity node = new ProjectTreeNodeEntity();
+                node.setText(vo.getProjectName());
+                node.setValue(Func.toStr(vo.getId()));
+                tree.add(node);
+            }
+        }
+        return R.data(tree);
+    }
+
+
+    @GetMapping("/lazy-tree")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "parentId", value = "行政区划代码", paramType = "query", dataType = "long"),
+    })
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "树")
+    public R<List<ProjectTreeNodeEntity>> lazyTree(@ApiIgnore ProjectInfoDTO dto) {
+        List<ProjectTreeNodeEntity> nodeEntities = new LinkedList<>();
+        BladeUser user = AuthUtil.getUser();
+        dto.setOrgId(Func.toLong(user.getDeptId()));
+        List<ProjectInfoVO> list = this.baseProjectService.selectList(dto);
+        if (null != list) {
+            for (ProjectInfoVO vo : list) {
+                ProjectTreeNodeEntity node = new ProjectTreeNodeEntity();
+                node.setId(Func.toStr(vo.getId()));
+                node.setValue(Func.toStr(vo.getId()));
+                node.setTitle(vo.getProjectName());
+                node.setText(vo.getProjectName());
+                node.setKey(Func.toStr(vo.getId()));
+
+                nodeEntities.add(node);
+            }
+        }
+        return R.data(nodeEntities);
+    }
 
 }

+ 16 - 2
src/main/java/org/springblade/modules/baseinfo/project/dto/ProjectInfoDTO.java

@@ -6,7 +6,12 @@
  */
 package org.springblade.modules.baseinfo.project.dto;
 
-/*** 
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.modules.baseinfo.project.entity.ProjectInfoEntity;
+
+/***
  * Date:2023/9/25
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
@@ -14,5 +19,14 @@ package org.springblade.modules.baseinfo.project.dto;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class ProjectInfoDTO {
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProjectInfoDTO  extends ProjectInfoEntity {
+
+    /**
+     * 参数类型 0 按机构 1 按项目 2 按地区
+     */
+    @ApiModelProperty(value = "参数类型")
+    private Integer paramsType;
+
 }

+ 26 - 33
src/main/java/org/springblade/modules/baseinfo/project/entity/ProjectInfoEntity.java

@@ -24,7 +24,7 @@ import org.springframework.format.annotation.DateTimeFormat;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("project_info")
+@TableName("base_project_info")
 public class ProjectInfoEntity extends BaseEntity {
 
 	private static final long serialVersionUID = 1L;
@@ -34,7 +34,6 @@ public class ProjectInfoEntity extends BaseEntity {
 	@ApiModelProperty("租户ID")
 	private String tenantId;
 
-
 	/**
 	 * 项目名称
 	 */
@@ -42,16 +41,22 @@ public class ProjectInfoEntity extends BaseEntity {
 	private String projectName;
 
 	/**
-	 * 机构ID
+	 * 机构ID,对应部门表ID
 	 */
 	@ApiModelProperty(value = "机构ID")
 	private Long orgId;
 
+	/**
+	 * 行政区编码,支持绑定多个行政区
+	 */
+	@ApiModelProperty(value = "行政区编码")
+	private String adcd;
+
 	/**
 	 * 项目负责人
 	 */
 	@ApiModelProperty(value = "项目负责人")
-	private String manageName;
+	private String projectManager;
 
 	/**
 	 * 联系电话
@@ -60,52 +65,40 @@ public class ProjectInfoEntity extends BaseEntity {
 	private String contactPhone;
 
 	/**
-	 * 邮箱
-	 */
-	@ApiModelProperty(value = "邮箱")
-	private String mail;
-
-	/**
-	 * 规约ID
+	 * 规约ID,字典值
 	 */
 	@ApiModelProperty(value = "规约ID")
 	private Long agreementId;
 
 	/**
-	 * 供电方式ID
-	 */
-	@ApiModelProperty(value = "供电方式ID")
-	private Long powerTypeId;
-
-
-	/**
-	 * 备注说明
+	 * 物联网卡付费单位
 	 */
-	@ApiModelProperty(value = "备注说明")
-	private String remark;
+	@ApiModelProperty(value = "物联网卡付费单位")
+	private String simPayer;
 
 	/**
-	 * 测站导入时间
+	 * 有效日期
 	 */
 	@DateTimeFormat(
-		pattern = "yyyy-MM-dd HH:mm:ss"
+			pattern = "yyyy-MM-dd HH:mm:ss"
 	)
 	@JsonFormat(
-		pattern = "yyyy-MM-dd HH:mm:ss",
-		timezone = "GMT+8"
+			pattern = "yyyy-MM-dd HH:mm:ss",
+			timezone = "GMT+8"
 	)
-	@ApiModelProperty(value = "测站导入时间")
-	private String importTime;
+	@ApiModelProperty(value = "有效日期")
+	private String simPayEndDate;
 
 	/**
-	 * 预警开关
+	 * 供电方式,字典值
 	 */
-	@ApiModelProperty(value = "预警开关")
-	private Integer warnActive;
+	@ApiModelProperty(value = "供电方式")
+	private Long powerTypeId;
 
 	/**
-	 * 延时时长
+	 * 备注说明
 	 */
-	@ApiModelProperty(value = "延时时长")
-	private Integer delayTime;
+	@ApiModelProperty(value = "备注说明")
+	private String remark;
+
 }

+ 17 - 27
src/main/java/org/springblade/modules/baseinfo/project/entity/ProjectTreeNodeEntity.java

@@ -22,40 +22,30 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 @Data
-@EqualsAndHashCode(callSuper = true)
-public class ProjectTreeNodeEntity extends BaseEntity {
+public class ProjectTreeNodeEntity {
 	private static final long serialVersionUID = 1L;
 
-	/**
-	 * 租户ID
-	 */
-	@ApiModelProperty("租户ID")
-	private String tenantId;
-	/**
-	 * 标题
-	 */
-	@ApiModelProperty("标题")
-	private String text;
 
-	/**
-	 * 值
-	 */
-	@ApiModelProperty("值")
-	private String value;
+	@ApiModelProperty("ID")
+	private String id;
 
-	/**
-	 * 机构ID
-	 */
-	@ApiModelProperty("机构ID")
-	private Long orgId;
+	@ApiModelProperty("父ID")
+	private String parentId;
 
+	@ApiModelProperty("键")
+	private String key;
 
-	/**
-	 * 项目ID
-	 */
-	@ApiModelProperty("项目ID")
-	private Long projectId;
+	@ApiModelProperty("节点值")
+	private String value;
+
+	@ApiModelProperty("标题")
+	private String  title;
+
+	@ApiModelProperty("标题")
+	private String  text;
 
+	@ApiModelProperty("是否有子节点")
+	private Boolean hasChildren;
 
 	/**
 	 * 子列表

+ 14 - 2
src/main/java/org/springblade/modules/baseinfo/project/mapper/BaseProjectInfoMapper.java

@@ -9,6 +9,7 @@ package org.springblade.modules.baseinfo.project.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.project.dto.ProjectInfoDTO;
 import org.springblade.modules.baseinfo.project.entity.ProjectInfoEntity;
 import org.springblade.modules.baseinfo.project.vo.ProjectInfoVO;
 
@@ -23,12 +24,23 @@ import java.util.List;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface ProjectInfoMapper extends BaseMapper<ProjectInfoEntity> {
+public interface BaseProjectInfoMapper extends BaseMapper<ProjectInfoEntity> {
+	List<ProjectInfoVO> selectList(@Param("dto") ProjectInfoDTO dto);
+
 	/**
 	 * 自定义分页
 	 *
 	 * @param page   分页
 	 * @return List<RtuInfoVO>
 	 */
-	List<ProjectInfoVO> selectPage(@Param("projectInfoEntity") ProjectInfoEntity projectInfoEntity, IPage page);
+	List<ProjectInfoVO> selectPage(IPage page,@Param("dto") ProjectInfoDTO dto);
+
+	/**
+	 * 根据机构ID查询
+	 * @param orgId
+	 * @return
+	 */
+	ProjectInfoEntity getByOrgId(@Param("orgId") Long orgId);
+
+	ProjectInfoEntity getProjectInfoById(@Param("projectId") Long projectId);
 }

+ 56 - 7
src/main/java/org/springblade/modules/baseinfo/project/mapper/BaseProjectInfoMapper.xml

@@ -1,9 +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.project.mapper.ProjectInfoMapper">
+<mapper namespace="org.springblade.modules.baseinfo.project.mapper.BaseProjectInfoMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="projectInfoResultMap" type="org.springblade.modules.baseinfo.project.entity.ProjectInfoEntity">
+        <result column="tenant_id" property="tenantId"/>
         <result column="project_name" property="projectName"/>
         <result column="org_id" property="orgId"/>
         <result column="adcd" property="adcd"/>
@@ -18,6 +19,7 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="projectInfoVOResultMap" type="org.springblade.modules.baseinfo.project.vo.ProjectInfoVO">
+        <result column="tenant_id" property="tenantId"/>
         <result column="project_name" property="projectName"/>
         <result column="org_id" property="orgId"/>
         <result column="adcd" property="adcd"/>
@@ -34,26 +36,73 @@
         <result column="powerTypeName" property="powerTypeName"/>
     </resultMap>
 
+    <select id="selectList" resultMap="projectInfoVOResultMap">
+        SELECT
+        n.*,d.dept_name,ab.dict_value agreementName,pb.dict_value powerTypeName
+        FROM
+        base_project_info n
+        LEFT JOIN blade_dept d ON d.id = n.org_id
+        LEFT JOIN blade_dict_biz ab ON ab.id = n.agreement_id
+        LEFT JOIN blade_dict_biz pb ON pb.id = n.power_type_id
+        WHERE
+        n.is_deleted = 0 and n.tenant_id = #{dto.tenantId}
+        <if test="dto.projectName!=null">
+            and n.project_name like concat(concat('%', #{dto.projectName}), '%')
+        </if>
+        <if test="dto.orgId!=null">
+            and (d.id = #{dto.orgId} or FIND_IN_SET(#{dto.orgId},d.ancestors) > 0)
+        </if>
+        <if test="dto.adcd!=null">
+            and FIND_IN_SET(#{dto.adcd},adcd) > 0
+        </if>
+        order by n.project_name
+    </select>
 
     <select id="selectPage" resultMap="projectInfoVOResultMap">
         SELECT
         n.*,d.dept_name,ab.dict_value agreementName,pb.dict_value powerTypeName
         FROM
-        project_info n
-        LEFT JOIN blade_dept d ON d.id = n.org_id
-        LEFT JOIN blade_dict_biz ab ON b.id = n.agreement_id
-        LEFT JOIN blade_dict_biz pb ON b.id = n.power_type_id
+        base_project_info n
+        LEFT JOIN blade_dept d ON d.id = n.org_id and d.is_deleted = 0
+        LEFT JOIN blade_dict_biz ab ON ab.id = n.agreement_id and ab.is_deleted = 0
+        LEFT JOIN blade_dict_biz pb ON pb.id = n.power_type_id and pb.is_deleted = 0
         WHERE
-        n.is_deleted = 0
+        n.is_deleted = 0 and n.tenant_id = #{dto.tenantId}
         <if test="dto.projectName!=null">
             and n.project_name like concat(concat('%', #{dto.projectName}), '%')
         </if>
         <if test="dto.orgId!=null">
-            and n.org_id = #{dto.orgId}
+            and (d.id = #{dto.orgId} or FIND_IN_SET(#{dto.orgId},d.ancestors) > 0)
         </if>
         <if test="dto.adcd!=null">
             and FIND_IN_SET(#{dto.adcd},adcd) > 0
         </if>
         order by n.project_name
     </select>
+
+    <select id="getByOrgId" resultMap="projectInfoResultMap">
+        SELECT
+        n.*
+        FROM
+        base_project_info n
+        WHERE
+        n.is_deleted = 0
+        <if test="orgId!=null">
+            and n.org_id = #{orgId}
+        </if>
+        limit 1
+    </select>
+
+    <select id="getProjectInfoById" resultMap="projectInfoResultMap">
+        SELECT
+        n.*
+        FROM
+        base_project_info n
+        WHERE
+        n.is_deleted = 0
+        <if test="projectId!=null">
+            and n.id = #{projectId}
+        </if>
+        limit 1
+    </select>
 </mapper>

+ 12 - 12
src/main/java/org/springblade/modules/baseinfo/project/service/IBaseProjectService.java

@@ -7,12 +7,15 @@
 package org.springblade.modules.baseinfo.project.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.modules.baseinfo.project.dto.ProjectInfoDTO;
 import org.springblade.modules.baseinfo.project.entity.ProjectInfoEntity;
 import org.springblade.modules.baseinfo.project.entity.ProjectWarningSettingEntity;
 import org.springblade.modules.baseinfo.project.vo.ProjectInfoVO;
 
 import java.util.Date;
+import java.util.List;
 
 
 /***
@@ -23,26 +26,23 @@ import java.util.Date;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface IProjectBaseInfoService extends BaseService<ProjectInfoEntity> {
+public interface IBaseProjectService extends BaseService<ProjectInfoEntity> {
+
+	List<ProjectInfoVO> selectList(ProjectInfoDTO dto);
+
 	/**
 	 * 自定义分页
 	 * @param page
 	 * @return
 	 */
-	IPage<ProjectInfoVO> selectPage(ProjectInfoEntity entity, IPage<ProjectInfoVO> page);
-
-	/**
-	 * 项目预警配置
-	 * @param warningSettingEntity
-	 * @return
-	 */
-	boolean  warningSaveOrUpdate(ProjectWarningSettingEntity warningSettingEntity);
+	IPage<ProjectInfoVO> selectPage(IPage<ProjectInfoVO> page, ProjectInfoDTO dto);
 
 	/**
-	 * 更新测站导入时间
-	 * @param date
+	 * 根据机构ID查询
+	 * @param orgId
 	 * @return
 	 */
-	boolean  updateImportTime(Long projectId, Date date);
+	ProjectInfoEntity getByOrgId(Long orgId);
 
+	ProjectInfoEntity getProjectInfoById(Long projectId);
 }

+ 16 - 12
src/main/java/org/springblade/modules/baseinfo/project/service/impl/BaseProjectServiceImpl.java

@@ -10,14 +10,16 @@ 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.core.mp.base.BaseServiceImpl;
+import org.springblade.modules.baseinfo.project.dto.ProjectInfoDTO;
 import org.springblade.modules.baseinfo.project.entity.ProjectInfoEntity;
 import org.springblade.modules.baseinfo.project.entity.ProjectWarningSettingEntity;
-import org.springblade.modules.baseinfo.project.mapper.ProjectInfoMapper;
-import org.springblade.modules.baseinfo.project.service.IProjectBaseInfoService;
+import org.springblade.modules.baseinfo.project.mapper.BaseProjectInfoMapper;
+import org.springblade.modules.baseinfo.project.service.IBaseProjectService;
 import org.springblade.modules.baseinfo.project.vo.ProjectInfoVO;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
+import java.util.List;
 
 /***
  * Date:2022/8/22
@@ -28,23 +30,25 @@ import java.util.Date;
  * Remark:认为有必要的其他信息
  */
 @Service
-public class ProjectBaseInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, ProjectInfoEntity> implements IProjectBaseInfoService {
+public class BaseProjectServiceImpl extends BaseServiceImpl<BaseProjectInfoMapper, ProjectInfoEntity> implements IBaseProjectService {
+
 	@Override
-	public IPage<ProjectInfoVO> selectPage(ProjectInfoEntity entity, IPage<ProjectInfoVO> page) {
-		return page.setRecords(baseMapper.selectPage(entity,page));
+	public List<ProjectInfoVO> selectList(ProjectInfoDTO dto) {
+		return baseMapper.selectList(dto);
 	}
 
 	@Override
-	public boolean warningSaveOrUpdate(ProjectWarningSettingEntity warningSettingEntity) {
+	public IPage<ProjectInfoVO> selectPage(IPage<ProjectInfoVO> page, ProjectInfoDTO dto) {
+		return page.setRecords(baseMapper.selectPage(page,dto));
+	}
 
-		return false;
+	@Override
+	public ProjectInfoEntity getByOrgId(Long orgId) {
+		return baseMapper.getByOrgId(orgId);
 	}
 
 	@Override
-	public boolean updateImportTime(Long projectId,Date date) {
-		LambdaUpdateWrapper<ProjectInfoEntity> wrapper = Wrappers.<ProjectInfoEntity>update().lambda();
-		wrapper.set(ProjectInfoEntity::getImportTime,date);
-		wrapper.eq(ProjectInfoEntity::getId,projectId);
-		return this.update(wrapper);
+	public ProjectInfoEntity getProjectInfoById(Long projectId) {
+		return baseMapper.getProjectInfoById(projectId);
 	}
 }

+ 13 - 0
src/main/java/org/springblade/modules/baseinfo/project/vo/ProjectInfoVO.java

@@ -42,4 +42,17 @@ public class ProjectInfoVO extends ProjectInfoEntity {
 	 */
 	@ApiModelProperty(value = "供电方式名称")
 	private String powerTypeName;
+
+	/**
+	 * 行政区名称
+	 */
+	@ApiModelProperty(value = "行政区名称")
+	private String adName;
+
+	/**
+	 * 绑定状态
+	 */
+	@ApiModelProperty(value = "绑定状态")
+	private Integer bindStatus;
+
 }

+ 34 - 22
src/main/java/org/springblade/modules/baseinfo/project/wrapper/ProjectInfoWrapper.java

@@ -9,10 +9,14 @@ package org.springblade.modules.baseinfo.project.wrapper;
 import org.springblade.common.cache.DictBizCache;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.SpringUtil;
 import org.springblade.modules.baseinfo.project.entity.ProjectInfoEntity;
 import org.springblade.modules.baseinfo.project.vo.ProjectInfoVO;
+import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
+import org.springblade.modules.baseinfo.region.service.IBaseRegionService;
 import org.springblade.modules.system.entity.DictBiz;
 
+import java.util.List;
 import java.util.Objects;
 
 /***
@@ -24,30 +28,38 @@ import java.util.Objects;
  * Remark:认为有必要的其他信息
  */
 public class ProjectInfoWrapper extends BaseEntityWrapper<ProjectInfoEntity, ProjectInfoVO> {
-	public static ProjectInfoWrapper build() {
-		return new ProjectInfoWrapper();
-	}
+    public static ProjectInfoWrapper build() {
+        return new ProjectInfoWrapper();
+    }
 
+    private static IBaseRegionService baseInfoRegionService;
 
+    private static IBaseRegionService getBaseRegionService() {
+        if (baseInfoRegionService == null) {
+            baseInfoRegionService = SpringUtil.getBean(IBaseRegionService.class);
+        }
+        return baseInfoRegionService;
+    }
 
-	@Override
-	public ProjectInfoVO entityVO(ProjectInfoEntity entity) {
+    @Override
+    public ProjectInfoVO entityVO(ProjectInfoEntity entity) {
+        ProjectInfoVO projectInfoVO = Objects.requireNonNull(BeanUtil.copy(entity, ProjectInfoVO.class));
+        return this.entityVO(projectInfoVO);
+    }
 
-		ProjectInfoVO projectInfoVO = Objects.requireNonNull(BeanUtil.copy(entity, ProjectInfoVO.class));
-		if (entity.getAgreementId() != null){
-			DictBiz biz = DictBizCache.getById(entity.getAgreementId());
-			if (null != biz){
-				projectInfoVO.setAgreementName(biz.getDictValue());
-			}
-		}
-		if (entity.getPowerTypeId() != null){
-			DictBiz biz = DictBizCache.getById(entity.getPowerTypeId());
-			if (null != biz){
-				projectInfoVO.setPowerTypeName(biz.getDictValue());
-			}
-		}
-
-
-		return projectInfoVO;
-	}
+    public ProjectInfoVO entityVO(ProjectInfoVO vo) {
+        if (vo.getAdcd() != null) {
+            String[] adcds = vo.getAdcd().split(",");
+            StringBuilder adName = new StringBuilder();
+            for (int i = 0; i < adcds.length; i++) {
+                RegionInfoEntity entity = getBaseRegionService().getByCode(adcds[i]);
+                if (adName.length() > 0) {
+                    adName.append("/");
+                }
+                adName.append(entity.getAdnm());
+            }
+            vo.setAdName(adName.toString());
+        }
+        return vo;
+    }
 }

+ 299 - 363
src/main/java/org/springblade/modules/baseinfo/region/controller/BaseRegionController.java

@@ -25,14 +25,16 @@ 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.OrgRegionInfoDTO;
 import org.springblade.modules.baseinfo.region.dto.RegionInfoDTO;
 import org.springblade.modules.baseinfo.region.entity.OrgRegionInfoEntity;
 import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
 import org.springblade.modules.baseinfo.region.entity.RegionTreeNodeEntity;
-import org.springblade.modules.baseinfo.region.service.IBaseRegionCacheService;
-import org.springblade.modules.baseinfo.region.service.IOrgRegionInfoService;
+import org.springblade.modules.baseinfo.region.service.IBaseRegionService;
+import org.springblade.modules.baseinfo.region.service.IOrgRegionService;
 import org.springblade.modules.baseinfo.region.vo.RegionInfoVO;
 import org.springblade.modules.baseinfo.region.wrapper.RegionInfoWrapper;
+import org.springblade.modules.system.entity.Region;
 import org.springblade.modules.system.service.IDeptService;
 import org.springblade.modules.system.service.IRegionService;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -57,387 +59,321 @@ import java.util.List;
 @RequestMapping("galaxy-business/baseinfo/region")
 @AllArgsConstructor
 @Api(value = "行政区划管理", tags = "行政区划管理")
-public class BaseInfoRegionController extends BladeController {
-	private final IBaseRegionCacheService baseInfoRegionService;
-	private final IDeptService deptService;
-	private final IRegionService regionService;
-	private final IEtlAdCdService etlAdCdService;
-	private final IOrgRegionInfoService iOrgRegionInfoService;
-	private final IDeptRegionService deptRegionService;
+public class BaseRegionController extends BladeController {
+    private final IBaseRegionService baseRegionService;
+    private final IDeptService deptService;
+    private final IRegionService regionService;
+    private final IEtlAdCdService etlAdCdService;
+    private final IOrgRegionService orgRegionService;
+    private final IDeptRegionService deptRegionService;
 
-	@Resource
-	private RedisTemplate<String,String> redisTemplate;
+    @Resource
+    private RedisTemplate<String, String> redisTemplate;
 
 
+    @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 = baseRegionService.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 = baseRegionService.list(regionInfoEntityLambdaQueryWrapper);
+            return R.data(list);
+        }
+        return R.data(null);
+    }
 
-	@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("/children/list/{parentCode}")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "分页")
+    public R<List<RegionInfoEntity>> childrenList(@PathVariable(name = "parentCode") String parentCode) {
+        LambdaQueryWrapper<RegionInfoEntity> wrapper = Wrappers.<RegionInfoEntity>query().lambda();
+        wrapper.eq(RegionInfoEntity::getIsDeleted, 0);
+        wrapper.eq(RegionInfoEntity::getParentCode, parentCode);
+        List<RegionInfoEntity> list = baseRegionService.list(wrapper);
+        return R.data(list);
+    }
 
-	@GetMapping("/children/list/{parentCode}")
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "分页")
-	public R<List<RegionInfoEntity>> childrenList(@PathVariable(name = "parentCode") String parentCode) {
-		LambdaQueryWrapper<RegionInfoEntity> wrapper = Wrappers.<RegionInfoEntity>query().lambda();
-		wrapper.eq(RegionInfoEntity::getIsDeleted, 0);
-		wrapper.eq(RegionInfoEntity::getParentCode, parentCode);
-		List<RegionInfoEntity> list = baseInfoRegionService.list(wrapper);
-		return R.data(list);
-	}
+    @GetMapping("/lazy-tree")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "parentCode", value = "行政区划代码", paramType = "query", dataType = "string"),
+    })
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "树")
+    public R<List<RegionTreeNodeEntity>> lazyTree(@ApiIgnore RegionInfoDTO dto) {
+        List<RegionTreeNodeEntity> nodeEntities = new LinkedList<>();
+        BladeUser user = AuthUtil.getUser();
+        if (dto.getParentCode() == null || dto.getParentCode().length() == 0) {
+            LambdaQueryWrapper<DeptRegionEntity> wrapper = Wrappers.<DeptRegionEntity>query().lambda();
+            wrapper.eq(DeptRegionEntity::getDeptId, Func.toLong(user.getDeptId()));
+            DeptRegionEntity deptRegionEntity = this.deptRegionService.getOne(wrapper);
+            if (null != deptRegionEntity) {
+                dto.setAdcd(deptRegionEntity.getAdcd());
+            }
+            dto.setParentCode(null);
+        }
+        List<RegionInfoEntity> list = this.baseRegionService.selectList(dto);
+        for (RegionInfoEntity entity : list) {
+            RegionTreeNodeEntity nodeEntity = new RegionTreeNodeEntity();
+            nodeEntity.setId(entity.getAdcd());
+            nodeEntity.setValue(entity.getAdcd());
+            if ("00".equals(entity.getAdcd())) {
+                nodeEntity.setTitle("全国");
+            } else {
+                nodeEntity.setTitle(entity.getAdnm());
+            }
+            nodeEntity.setKey(entity.getAdcd());
+            nodeEntity.setParentId(entity.getParentCode());
+            dto.setAdcd(null);
+            dto.setParentCode(entity.getAdcd());
+            long count = this.baseRegionService.getCount(dto);
+            if (count > 0) {
+                nodeEntity.setHasChildren(true);
+            } else {
+                nodeEntity.setHasChildren(false);
+            }
+            nodeEntities.add(nodeEntity);
+        }
+        return R.data(nodeEntities);
+    }
 
-	@GetMapping("/lazy-tree")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "adcd", value = "行政区划代码", paramType = "query", dataType = "string"),
-	})
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "树")
-	public R<List<RegionTreeNodeEntity>> lazyTree(@ApiIgnore OrgRegionInfoEntity orgRegionInfoEntity) {
-		List<RegionTreeNodeEntity> nodeEntities = new LinkedList<>();
-		BladeUser user = AuthUtil.getUser();
-		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.REGION_NM_ADCODE);
-			}
-			queryWrapper.eq(OrgRegionInfoEntity::getDeptId, Func.toLong(user.getDeptId()));
-			queryWrapper.eq(OrgRegionInfoEntity::getRegionActive, 1);
-			List<OrgRegionInfoEntity> list = iOrgRegionInfoService.list(queryWrapper);
-			for (OrgRegionInfoEntity entity : list) {
-				if (entity.getRtuCount() > 0) {
-					RegionTreeNodeEntity nodeEntity = new RegionTreeNodeEntity();
-					nodeEntity.setId(entity.getAdcd());
-					nodeEntity.setValue(entity.getAdcd());
-					nodeEntity.setTitle(entity.getAdnm());
-					nodeEntity.setKey(entity.getAdcd());
-					nodeEntity.setParentId(entity.getParentCode());
+    @GetMapping("/tree")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "树")
+    public R<List<RegionTreeNodeEntity>> regionTree() {
+        BladeUser user = AuthUtil.getUser();
+        List<RegionTreeNodeEntity> nodeEntities = new LinkedList<>();
+        DeptRegionEntity deptRegionEntity = this.deptRegionService.getByDeptId(Func.toLong(user.getDeptId()));
+        if (null != deptRegionEntity) {
+            ValueOperations<String, String> opsHash = redisTemplate.opsForValue();
+            String regionJson = opsHash.get("region.tree." + user.getDeptId());
+            if (null != regionJson) {
+                nodeEntities = JSON.parseObject(regionJson, new TypeReference<List<RegionTreeNodeEntity>>() {
+                });
+            } else {
+                RegionInfoEntity root = this.baseRegionService.getByCode(deptRegionEntity.getAdcd());
+                if (null != root) {
+                    RegionTreeNodeEntity rootNode = new RegionTreeNodeEntity();
+                    rootNode.setId(root.getAdcd());
+                    rootNode.setValue(root.getAdcd());
+                    rootNode.setTitle(root.getAdnm());
+                    rootNode.setText(root.getAdnm());
+                    rootNode.setKey(root.getAdcd());
+                    rootNode.setParentId(root.getParentCode());
+                    getChildren(rootNode, root);
+                    if (rootNode.getChildren() != null && rootNode.getChildren().size() > 0) {
+                        rootNode.setHasChildren(true);
+                    } else {
+                        rootNode.setHasChildren(false);
+                    }
+                    nodeEntities.add(rootNode);
+                }
+            }
+        }
+        return R.data(nodeEntities);
+    }
 
-					nodeEntities.add(nodeEntity);
-				}
-			}
-		} else {
-			LambdaQueryWrapper<RegionInfoEntity> queryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
-			if (orgRegionInfoEntity.getAdcd() != null) {
-				queryWrapper.eq(RegionInfoEntity::getParentCode, orgRegionInfoEntity.getAdcd());
-			} else {
-				queryWrapper.eq(RegionInfoEntity::getParentCode, BusinessConstant.REGION_NM_ADCODE);
-			}
-			List<RegionInfoEntity> list = baseInfoRegionService.list(queryWrapper);
-			for (RegionInfoEntity entity : list) {
-				RegionTreeNodeEntity nodeEntity = new RegionTreeNodeEntity();
-				nodeEntity.setId(entity.getAdcd());
-				nodeEntity.setValue(entity.getAdcd());
-				nodeEntity.setTitle(entity.getAdnm());
-				nodeEntity.setKey(entity.getAdcd());
-				nodeEntity.setParentId(entity.getParentCode());
-				nodeEntities.add(nodeEntity);
-			}
-		}
-		return R.data(nodeEntities);
-	}
+    private boolean getChildren(RegionTreeNodeEntity nodeEntity, RegionInfoEntity regionInfoEntity) {
+        RegionInfoDTO dto = new RegionInfoDTO();
+        dto.setParentCode(regionInfoEntity.getAdcd());
+        List<RegionInfoEntity> list = this.baseRegionService.selectList(dto);
+        if (null != list && list.size() > 0) {
+            List<RegionTreeNodeEntity> nodeEntities = new LinkedList<>();
+            for (RegionInfoEntity entity : list) {
+                RegionTreeNodeEntity node = new RegionTreeNodeEntity();
+                node.setId(entity.getAdcd());
+                node.setValue(entity.getAdcd());
+                node.setTitle(entity.getAdnm());
+                node.setText(entity.getAdnm());
+                node.setKey(entity.getAdcd());
+                node.setParentId(entity.getParentCode());
+                getChildren(node, entity);
+                if (node.getChildren() != null && node.getChildren().size() > 0) {
+                    node.setHasChildren(true);
+                } else {
+                    node.setHasChildren(false);
+                }
+                nodeEntities.add(node);
+            }
+            nodeEntity.setChildren(nodeEntities);
+        }
+        return true;
+    }
 
-	@GetMapping("/tree")
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "树")
-	public R<List<RegionTreeNodeEntity>> regionTree() {
-		BladeUser user = AuthUtil.getUser();
-		List<RegionTreeNodeEntity> nodeEntities = new LinkedList<>();
-		LambdaQueryWrapper<DeptRegionEntity> queryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
-		queryWrapper.eq(DeptRegionEntity::getDeptId,Func.toLong(user.getDeptId()));
-		DeptRegionEntity deptRegionEntity=this.deptRegionService.getOne(queryWrapper);
-		if (null != deptRegionEntity){
-			ValueOperations<String, String> opsHash = redisTemplate.opsForValue();
-			String regionJson = opsHash.get("region.cache."+user.getDeptId());
-			if (null != regionJson){
-				nodeEntities = JSON.parseObject(regionJson, new TypeReference<List<RegionTreeNodeEntity>>() {
-				});
-			}else{
 
-			}
-		}
+    /**
+     * 详情
+     */
+    @GetMapping("/detail")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "详情", notes = "传入RegionInfoEntity")
+    public R<RegionInfoVO> detail(RegionInfoDTO regionInfoDTO) {
+//        if (regionInfoDTO.getAdcd()==null) {
+//            regionInfoDTO.setAdcd(regionInfoDTO.getCode());
+//        }
+        if (regionInfoDTO.getDeptId() == null) {
+            return R.fail("参数错误");
+        }
+        LambdaQueryWrapper<DeptRegionEntity> queryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
+        queryWrapper.eq(DeptRegionEntity::getDeptId, regionInfoDTO.getDeptId());
+        DeptRegionEntity deptRegionEntity = this.deptRegionService.getOne(queryWrapper);
+        if (null == deptRegionEntity) {
+            return R.fail("无关联数据");
+        }
+        RegionInfoEntity detail = this.baseRegionService.getByCode(deptRegionEntity.getAdcd());
 
+        detail.setAdcd(detail.getAdcd());
+        detail.setAdnm(detail.getAdnm());
 
-		List<RegionTreeNodeEntity> nodeEntities = new LinkedList<>();
-		BladeUser user = AuthUtil.getUser();
-		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<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());
-					nodeEntity.setTitle(entity.getAdnm());
-					nodeEntity.setText(entity.getAdnm());
-					nodeEntity.setKey(entity.getAdcd());
-					nodeEntity.setParentId(entity.getParentCode());
-					getChildren(nodeEntity, entity);
-					if (nodeEntity.getChildren() != null && nodeEntity.getChildren().size() > 0) {
-						nodeEntity.setHasChildren(true);
-					} else {
-						nodeEntity.setHasChildren(false);
-					}
-					nodeEntities.add(nodeEntity);
-				}
-				opsHash.set("region.admin", JSON.toJSONString(nodeEntities));
-			}
-		} else {
-			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::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());
-					nodeEntity.setValue(entity.getAdcd());
-					nodeEntity.setTitle(entity.getAdnm());
-					nodeEntity.setText(entity.getAdnm());
-					nodeEntity.setKey(entity.getAdcd());
-					nodeEntity.setParentId(entity.getParentCode());
-					getChildren(nodeEntity, entity);
-					if (nodeEntity.getChildren() != null && nodeEntity.getChildren().size() > 0) {
-						nodeEntity.setHasChildren(true);
-					} else {
-						nodeEntity.setHasChildren(false);
-					}
-					nodeEntities.add(nodeEntity);
-				}
-				opsHash.set("region." + user.getDeptId(), JSON.toJSONString(nodeEntities));
-			}
-		}
-		return R.data(nodeEntities);
-	}
+        return R.data(RegionInfoWrapper.build().entityVO(detail));
+    }
 
+    /**
+     * 新增或修改
+     */
+    @PostMapping("/submit")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "新增或修改", notes = "传入RegionInfoDTO")
+    public R submit(@RequestBody RegionInfoDTO regionInfoDTO) {
 
-	private boolean getChildren(RegionTreeNodeEntity nodeEntity, OrgRegionInfoEntity regionInfoEntity) {
-		LambdaQueryWrapper<OrgRegionInfoEntity> queryWrapper = Wrappers.<OrgRegionInfoEntity>query().lambda();
-		queryWrapper.eq(OrgRegionInfoEntity::getParentCode, regionInfoEntity.getAdcd());
-		queryWrapper.eq(OrgRegionInfoEntity::getDeptId, regionInfoEntity.getDeptId());
-		queryWrapper.eq(OrgRegionInfoEntity::getRegionActive, 1);
-		List<OrgRegionInfoEntity> list = iOrgRegionInfoService.list(queryWrapper);
-		if (null != list && list.size() > 0) {
-			List<RegionTreeNodeEntity> nodeEntities = new LinkedList<>();
-			for (OrgRegionInfoEntity entity : list) {
-				if (entity.getRtuCount() > 0) {
-					RegionTreeNodeEntity node = new RegionTreeNodeEntity();
-					node.setId(entity.getAdcd());
-					node.setValue(entity.getAdcd());
-					node.setTitle(entity.getAdnm());
-					node.setText(entity.getAdnm());
-					node.setKey(entity.getAdcd());
-					node.setParentId(entity.getParentCode());
-					getChildren(node, entity);
-					if (node.getChildren() != null && node.getChildren().size() > 0) {
-						node.setHasChildren(true);
-					} else {
-						node.setHasChildren(false);
-					}
-					nodeEntities.add(node);
-				}
-			}
-			nodeEntity.setChildren(nodeEntities);
-		}
-		return true;
-	}
+//        OrgRegionInfoDTO dto = new OrgRegionInfoDTO();
+////        dto.setDeptId(Func.toLong(regionInfoDTO.getDeptId()));
+////        dto.setIsDeleted(0);
+        //dto.setAdcd(regionInfoDTO.getCode());
+        LambdaQueryWrapper<DeptRegionEntity> queryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
+        queryWrapper.eq(DeptRegionEntity::getDeptId, Func.toLong(regionInfoDTO.getDeptId()));
 
-	private boolean getChildren(RegionTreeNodeEntity nodeEntity, RegionInfoEntity regionInfoEntity) {
-		LambdaQueryWrapper<RegionInfoEntity> queryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
-		queryWrapper.eq(RegionInfoEntity::getParentCode, regionInfoEntity.getAdcd());
-		List<RegionInfoEntity> list = baseInfoRegionService.list(queryWrapper);
-		if (null != list && list.size() > 0) {
-			List<RegionTreeNodeEntity> nodeEntities = new LinkedList<>();
-			for (RegionInfoEntity entity : list) {
-				RegionTreeNodeEntity node = new RegionTreeNodeEntity();
-				node.setId(entity.getAdcd());
-				node.setValue(entity.getAdcd());
-				node.setTitle(entity.getAdnm());
-				node.setText(entity.getAdnm());
-				node.setKey(entity.getAdcd());
-				node.setParentId(entity.getParentCode());
-				getChildren(node, entity);
-				if (node.getChildren() != null && node.getChildren().size() > 0) {
-					node.setHasChildren(true);
-				} else {
-					node.setHasChildren(false);
-				}
-				nodeEntities.add(node);
-			}
-			nodeEntity.setChildren(nodeEntities);
-		}
-		return true;
-	}
+        DeptRegionEntity deptRegionEntity = this.deptRegionService.getOne(queryWrapper);
+        if (null == deptRegionEntity) {
+            deptRegionEntity = new DeptRegionEntity();
+        }
+        deptRegionEntity.setAdcd(regionInfoDTO.getCode());
+        deptRegionEntity.setDeptId(Func.toLong(regionInfoDTO.getDeptId()));
+        this.deptRegionService.saveOrUpdate(deptRegionEntity);
 
-	/**
-	 * 详情
-	 */
-	@GetMapping("/detail")
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入RegionInfoEntity")
-	public R<RegionInfoVO> detail(RegionInfoDTO regionInfoDTO) {
-		regionInfoDTO.setAdcd(regionInfoDTO.getCode());
-		regionInfoDTO.setIsDeleted(0);
-		RegionInfoEntity detail = baseInfoRegionService.getOne(Condition.getQueryWrapper(regionInfoDTO));
-		return R.data(RegionInfoWrapper.build().entityVO(detail));
-	}
+//        LambdaQueryWrapper<RegionInfoEntity> queryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
+//        queryWrapper.eq(RegionInfoEntity::getAdcd, regionInfoDTO.getCode());
+//        queryWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
+//        RegionInfoEntity entity = baseRegionService.getOne(queryWrapper);
+//        boolean status = false;
+//        if (entity != null) {
+//            entity.setAdcd(regionInfoDTO.getCode());
+//            entity.setAdnm(regionInfoDTO.getName());
+//            entity.setStatus(1);
+//            entity.setIsDeleted(0);
+//            status = baseRegionService.updateById(entity);
+//        } else {
+//            entity = new RegionInfoEntity();
+//            entity.setAdcd(regionInfoDTO.getCode());
+//            entity.setAdnm(regionInfoDTO.getName());
+//            entity.setParentCode(regionInfoDTO.getParentCode());
+//            entity.setStatus(1);
+//            entity.setIsDeleted(0);
+//            entity.setAncestors(regionInfoDTO.getAncestors() + "," + regionInfoDTO.getParentCode());
+//            status = baseRegionService.save(entity);
+//        }
 
-	/**
-	 * 新增或修改
-	 */
-	@PostMapping("/submit")
-	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "新增或修改", notes = "传入RegionInfoDTO")
-	public R submit(@RequestBody RegionInfoDTO regionInfoDTO) {
-		LambdaQueryWrapper<RegionInfoEntity> queryWrapper = Wrappers.<RegionInfoEntity>query().lambda();
-		queryWrapper.eq(RegionInfoEntity::getAdcd, regionInfoDTO.getCode());
-		queryWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
-		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 = baseInfoRegionService.updateById(entity);
-		} else {
-			entity = new RegionInfoEntity();
-			entity.setAdcd(regionInfoDTO.getCode());
-			entity.setAdnm(regionInfoDTO.getName());
-			entity.setParentCode(regionInfoDTO.getParentCode());
-			entity.setStatus(1);
-			entity.setIsDeleted(0);
-			entity.setAncestors(regionInfoDTO.getAncestors() + "," + regionInfoDTO.getParentCode());
-			status = baseInfoRegionService.save(entity);
-		}
-//		dataTaskManager.deptUpdateTask();
-		return R.status(status);
-	}
+        return R.status(true);
+    }
 
-	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperationSupport(order = 7)
-	@ApiOperation(value = "逻辑删除", notes = "传入ID数组")
-	public R remove(@ApiParam(value = "主键集合") @RequestParam String id) {
-		LambdaUpdateWrapper<RegionInfoEntity> queryWrapper = Wrappers.<RegionInfoEntity>update().lambda();
-		queryWrapper.eq(RegionInfoEntity::getAdcd, id);
-		boolean temp = baseInfoRegionService.remove(queryWrapper);
+    /**
+     * 删除
+     */
+    @PostMapping("/remove")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "逻辑删除", notes = "传入ID数组")
+    public R remove(@ApiParam(value = "主键集合") @RequestParam String id) {
+        LambdaUpdateWrapper<RegionInfoEntity> queryWrapper = Wrappers.<RegionInfoEntity>update().lambda();
+        queryWrapper.eq(RegionInfoEntity::getAdcd, id);
+        boolean temp = baseRegionService.remove(queryWrapper);
 //		dataTaskManager.deptUpdateTask();
-		return R.status(temp);
-	}
+        return R.status(temp);
+    }
 
-	/**
-	 * 从宏图数据导入
-	 */
-	@PostMapping("/import")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "regionLevel", value = "行政区划层级", paramType = "query", dataType = "int"),
-		@ApiImplicitParam(name = "isCovered", value = "是否覆盖", paramType = "query", dataType = "int"),
-	})
-	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "导入", notes = "传入RegionInfoDTO")
-	public R importSubmit(@RequestBody RegionInfoDTO regionInfoDTO) {
-		if (regionInfoDTO.getIsCovered() == 1) {
-			LambdaUpdateWrapper<RegionInfoEntity> updateWrapper = Wrappers.<RegionInfoEntity>update().lambda();
-			updateWrapper.ne(RegionInfoEntity::getAdcd, "00");
-			updateWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
-			baseInfoRegionService.remove(updateWrapper);
-		}
-		List<EtlAdCdEntity> list = etlAdCdService.selectList("0");
-		if (null != list && list.size() == 1) {
-			String code = list.get(0).getAdcd();
-			LambdaQueryWrapper<RegionInfoEntity> requestWrapper = Wrappers.<RegionInfoEntity>query().lambda();
-			requestWrapper.eq(RegionInfoEntity::getAdcd, code);
-			requestWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
-			RegionInfoEntity regionInfoEntity = baseInfoRegionService.getOne(requestWrapper);
-			if (null != regionInfoEntity) {
-				regionInfoEntity.setAdnm(list.get(0).getAdnm());
-				baseInfoRegionService.updateById(regionInfoEntity);
-			} else {
-				regionInfoEntity = new RegionInfoEntity();
-				regionInfoEntity.setAdcd(code);
-				regionInfoEntity.setAdnm(list.get(0).getAdnm());
-				regionInfoEntity.setParentCode("00");
-				regionInfoEntity.setAncestors("00");
-				regionInfoEntity.setStatus(1);
-				regionInfoEntity.setIsDeleted(0);
-				baseInfoRegionService.save(regionInfoEntity);
-			}
-			importAdcd(regionInfoDTO.getRegionLevel(), 2, code, "00," + code);
-		}
+    /**
+     * 从宏图数据导入
+     */
+    @PostMapping("/import")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "regionLevel", value = "行政区划层级", paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "isCovered", value = "是否覆盖", paramType = "query", dataType = "int"),
+    })
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "导入", notes = "传入RegionInfoDTO")
+    public R importSubmit(@RequestBody RegionInfoDTO regionInfoDTO) {
+        if (regionInfoDTO.getIsCovered() == 1) {
+            LambdaUpdateWrapper<RegionInfoEntity> updateWrapper = Wrappers.<RegionInfoEntity>update().lambda();
+            updateWrapper.ne(RegionInfoEntity::getAdcd, "00");
+            updateWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
+            baseRegionService.remove(updateWrapper);
+        }
+        List<EtlAdCdEntity> list = etlAdCdService.selectList("0");
+        if (null != list && list.size() == 1) {
+            String code = list.get(0).getAdcd();
+            LambdaQueryWrapper<RegionInfoEntity> requestWrapper = Wrappers.<RegionInfoEntity>query().lambda();
+            requestWrapper.eq(RegionInfoEntity::getAdcd, code);
+            requestWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
+            RegionInfoEntity regionInfoEntity = baseRegionService.getOne(requestWrapper);
+            if (null != regionInfoEntity) {
+                regionInfoEntity.setAdnm(list.get(0).getAdnm());
+                baseRegionService.updateById(regionInfoEntity);
+            } else {
+                regionInfoEntity = new RegionInfoEntity();
+                regionInfoEntity.setAdcd(code);
+                regionInfoEntity.setAdnm(list.get(0).getAdnm());
+                regionInfoEntity.setParentCode("00");
+                regionInfoEntity.setAncestors("00");
+                regionInfoEntity.setStatus(1);
+                regionInfoEntity.setIsDeleted(0);
+                baseRegionService.save(regionInfoEntity);
+            }
+            importAdcd(regionInfoDTO.getRegionLevel(), 2, code, "00," + code);
+        }
 //		dataTaskManager.deptUpdateTask();
-		return R.status(true);
-	}
+        return R.status(true);
+    }
 
-	private boolean importAdcd(int level, int currLevel, String parentCode, String ancestors) {
-		if (currLevel > level) {
-			return true;
-		}
-		List<EtlAdCdEntity> list = etlAdCdService.selectList(parentCode);
-		if (null != list && list.size() > 0) {
-			for (EtlAdCdEntity adCdEntity : list) {
-				LambdaQueryWrapper<RegionInfoEntity> requestWrapper = Wrappers.<RegionInfoEntity>query().lambda();
-				requestWrapper.eq(RegionInfoEntity::getAdcd, adCdEntity.getAdcd());
-				requestWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
-				RegionInfoEntity regionInfoEntity = baseInfoRegionService.getOne(requestWrapper);
-				if (null != regionInfoEntity) {
-					regionInfoEntity.setAdnm(adCdEntity.getAdnm());
-					baseInfoRegionService.updateById(regionInfoEntity);
-				} else {
-					regionInfoEntity = new RegionInfoEntity();
-					regionInfoEntity.setAdcd(adCdEntity.getAdcd());
-					regionInfoEntity.setAdnm(adCdEntity.getAdnm());
-					regionInfoEntity.setParentCode(parentCode);
-					regionInfoEntity.setAncestors(ancestors);
-					regionInfoEntity.setStatus(1);
-					regionInfoEntity.setIsDeleted(0);
-					baseInfoRegionService.save(regionInfoEntity);
-				}
-				importAdcd(level, currLevel + 1, adCdEntity.getAdcd(), ancestors + "," + adCdEntity.getAdcd());
-			}
-		}
-		return true;
-	}
+    private boolean importAdcd(int level, int currLevel, String parentCode, String ancestors) {
+        if (currLevel > level) {
+            return true;
+        }
+        List<EtlAdCdEntity> list = etlAdCdService.selectList(parentCode);
+        if (null != list && list.size() > 0) {
+            for (EtlAdCdEntity adCdEntity : list) {
+                LambdaQueryWrapper<RegionInfoEntity> requestWrapper = Wrappers.<RegionInfoEntity>query().lambda();
+                requestWrapper.eq(RegionInfoEntity::getAdcd, adCdEntity.getAdcd());
+                requestWrapper.eq(RegionInfoEntity::getIsDeleted, 0);
+                RegionInfoEntity regionInfoEntity = baseRegionService.getOne(requestWrapper);
+                if (null != regionInfoEntity) {
+                    regionInfoEntity.setAdnm(adCdEntity.getAdnm());
+                    baseRegionService.updateById(regionInfoEntity);
+                } else {
+                    regionInfoEntity = new RegionInfoEntity();
+                    regionInfoEntity.setAdcd(adCdEntity.getAdcd());
+                    regionInfoEntity.setAdnm(adCdEntity.getAdnm());
+                    regionInfoEntity.setParentCode(parentCode);
+                    regionInfoEntity.setAncestors(ancestors);
+                    regionInfoEntity.setStatus(1);
+                    regionInfoEntity.setIsDeleted(0);
+                    baseRegionService.save(regionInfoEntity);
+                }
+                importAdcd(level, currLevel + 1, adCdEntity.getAdcd(), ancestors + "," + adCdEntity.getAdcd());
+            }
+        }
+        return true;
+    }
 
 }

+ 8 - 2
src/main/java/org/springblade/modules/baseinfo/region/dto/OrgRegionInfoDTO.java

@@ -6,7 +6,11 @@
  */
 package org.springblade.modules.baseinfo.region.dto;
 
-/*** 
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.modules.baseinfo.region.entity.OrgRegionInfoEntity;
+
+/***
  * Date:2023/9/22
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
@@ -14,5 +18,7 @@ package org.springblade.modules.baseinfo.region.dto;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class OrgRegionInfoDTO {
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class OrgRegionInfoDTO extends OrgRegionInfoEntity {
 }

+ 2 - 0
src/main/java/org/springblade/modules/baseinfo/region/dto/RegionInfoDTO.java

@@ -48,4 +48,6 @@ public class RegionInfoDTO extends RegionInfoEntity {
 	@ApiModelProperty(value = "是否覆盖")
 	private Integer isCovered;
 
+	@ApiModelProperty(value = "机构ID")
+	private String deptId;
 }

+ 1 - 1
src/main/java/org/springblade/modules/baseinfo/region/entity/OrgRegionInfoEntity.java

@@ -20,7 +20,7 @@ import org.springblade.core.mp.base.BaseEntity;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("data_dept_region_cache")
+@TableName("base_dept_region_cache")
 public class OrgRegionInfoEntity extends BaseEntity {
 
 	private static final long serialVersionUID = 1L;

+ 4 - 10
src/main/java/org/springblade/modules/baseinfo/region/entity/RegionInfoEntity.java

@@ -20,17 +20,11 @@ import org.springblade.core.mp.base.BaseEntity;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("data_ad_cd_b")
+@TableName("blade_region")
 public class RegionInfoEntity extends BaseEntity {
 
 	private static final long serialVersionUID = 1L;
 
-	/**
-	 * 租户ID
-	 */
-	@ApiModelProperty("租户ID")
-	private String tenantId;
-
 	/**
 	 * 行政区划代码
 	 */
@@ -56,8 +50,8 @@ public class RegionInfoEntity extends BaseEntity {
 	private String ancestors;
 
 	/**
-	 * 政区类型
+	 * 层级
 	 */
-	@ApiModelProperty(value = "政区类型")
-	private String addType;
+	@ApiModelProperty(value = "层级")
+	private Integer regionLevel;
 }

+ 10 - 2
src/main/java/org/springblade/modules/baseinfo/region/mapper/BaseRegionMapper.java

@@ -7,8 +7,14 @@
 package org.springblade.modules.baseinfo.region.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.modules.baseinfo.region.dto.OrgRegionInfoDTO;
+import org.springblade.modules.baseinfo.region.dto.RegionInfoDTO;
+import org.springblade.modules.baseinfo.region.entity.OrgRegionInfoEntity;
 import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
 
+import java.util.List;
+
 
 /***
  * Date:2022/8/22
@@ -18,6 +24,8 @@ import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface RegionInfoMapper extends BaseMapper<RegionInfoEntity> {
-
+public interface BaseRegionMapper extends BaseMapper<RegionInfoEntity> {
+    long getCount(@Param("dto") RegionInfoDTO dto);
+    List<RegionInfoEntity> selectList(@Param("dto") RegionInfoDTO dto);
+    RegionInfoEntity getByCode(@Param("code") String code);
 }

+ 44 - 5
src/main/java/org/springblade/modules/baseinfo/region/mapper/BaseRegionMapper.xml

@@ -1,14 +1,53 @@
 <?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.region.mapper.RegionInfoMapper">
+<mapper namespace="org.springblade.modules.baseinfo.region.mapper.BaseRegionMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="baseinfoRegionResultMap" type="org.springblade.modules.baseinfo.region.entity.RegionInfoEntity">
-        <result column="adcd" property="adcd"/>
-        <result column="adnm" property="adnm"/>
+    <resultMap id="baseRegionResultMap" type="org.springblade.modules.baseinfo.region.entity.RegionInfoEntity">
+        <result column="code" property="adcd"/>
+        <result column="name" property="adnm"/>
         <result column="parent_code" property="parentCode"/>
         <result column="ancestors" property="ancestors"/>
-        <result column="add_type" property="addType"/>
+        <result column="region_level" property="regionLevel"/>
     </resultMap>
 
+    <select id="getCount" resultType="java.lang.Long">
+        SELECT
+        count(*)
+        FROM
+        blade_region n
+        WHERE
+        1 = 1
+        <if test="dto.adcd != null">
+            and n.code = #{dto.adcd}
+        </if>
+        <if test="dto.parentCode != null">
+            and n.parent_code = #{dto.parentCode}
+        </if>
+    </select>
+
+    <select id="selectList" resultMap="baseRegionResultMap">
+        SELECT
+        n.code,n.name,n.parent_code,n.ancestors,n.region_level
+        FROM
+        blade_region n
+        WHERE
+        1 = 1
+        <if test="dto.adcd != null">
+            and n.code = #{dto.adcd}
+        </if>
+        <if test="dto.parentCode != null">
+            and n.parent_code = #{dto.parentCode}
+        </if>
+        order by n.code
+    </select>
+
+    <select id="getByCode" resultMap="baseRegionResultMap">
+        SELECT
+        n.code,n.name,n.parent_code,n.ancestors,n.region_level
+        FROM
+        blade_region n
+        WHERE
+        n.code = #{code}
+    </select>
 </mapper>

+ 6 - 2
src/main/java/org/springblade/modules/baseinfo/region/mapper/OrgRegionMapper.java

@@ -7,9 +7,13 @@
 package org.springblade.modules.baseinfo.region.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.region.dto.OrgRegionInfoDTO;
 import org.springblade.modules.baseinfo.region.entity.OrgRegionInfoEntity;
 
+import java.util.List;
+
 /***
  * Date:2022/8/22
  * Title:文件所属模块(必须填写)
@@ -18,6 +22,6 @@ import org.springblade.modules.baseinfo.region.entity.OrgRegionInfoEntity;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface OrgRegionInfoMapper extends BaseMapper<OrgRegionInfoEntity> {
-	OrgRegionInfoEntity queryOrgRegionInfo(@Param("orgId") Long orgId, @Param("adCode") String adCode);
+public interface OrgRegionMapper extends BaseMapper<OrgRegionInfoEntity> {
+	List<OrgRegionInfoEntity> selectList(@Param("dto")  OrgRegionInfoDTO dto);
 }

+ 9 - 8
src/main/java/org/springblade/modules/baseinfo/region/mapper/OrgRegionMapper.xml

@@ -1,6 +1,6 @@
 <?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.region.mapper.OrgRegionInfoMapper">
+<mapper namespace="org.springblade.modules.baseinfo.region.mapper.OrgRegionMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="orgRegionResultMap" type="org.springblade.modules.baseinfo.region.entity.OrgRegionInfoEntity">
@@ -16,20 +16,21 @@
 
     </resultMap>
 
-    <select id="queryOrgRegionInfo" resultMap="orgRegionResultMap">
+    <select id="selectList" resultMap="orgRegionResultMap">
         SELECT
         n.*
         FROM
         base_dept_region_cache n
         WHERE
         n.is_deleted = 0
-        <if test="orgId!=null">
-            and n.dept_id = #{orgId}
+        <if test="dto.deptId != null">
+            and n.dept_id = #{dto.deptId}
         </if>
-        <if test="adCode!=null">
-            and n.adcd =#{adCode}
+        <if test="dto.adcd != null">
+            and n.adcd = #{dto.adcd}
+        </if>
+        <if test="dto.parentCode != null">
+            and n.parent_code =#{dto.parentCode}
         </if>
-       limit 1
-
     </select>
 </mapper>

+ 8 - 2
src/main/java/org/springblade/modules/baseinfo/region/service/IBaseRegionService.java

@@ -7,9 +7,13 @@
 package org.springblade.modules.baseinfo.region.service;
 
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.modules.baseinfo.region.dto.RegionInfoDTO;
 import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
 
+import java.util.List;
+
 
 /***
  * Date:2022/8/22
@@ -19,6 +23,8 @@ import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface IBaseRegionCacheService extends BaseService<RegionInfoEntity> {
-
+public interface IBaseRegionService extends BaseService<RegionInfoEntity> {
+    long getCount(RegionInfoDTO dto);
+    List<RegionInfoEntity> selectList(RegionInfoDTO dto);
+    RegionInfoEntity getByCode(String code);
 }

+ 7 - 2
src/main/java/org/springblade/modules/baseinfo/region/service/IOrgRegionService.java

@@ -6,9 +6,14 @@
  */
 package org.springblade.modules.baseinfo.region.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.modules.baseinfo.region.dto.OrgRegionInfoDTO;
 import org.springblade.modules.baseinfo.region.entity.OrgRegionInfoEntity;
 
+import java.util.List;
+
+
 /***
  * Date:2022/8/22
  * Title:文件所属模块(必须填写)
@@ -17,6 +22,6 @@ import org.springblade.modules.baseinfo.region.entity.OrgRegionInfoEntity;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface IOrgRegionInfoService extends BaseService<OrgRegionInfoEntity> {
-	OrgRegionInfoEntity getOrgRegionInfo(Long orgId,String adCode);
+public interface IOrgRegionService extends BaseService<OrgRegionInfoEntity> {
+	List<OrgRegionInfoEntity> selectList(OrgRegionInfoDTO dto);
 }

+ 20 - 3
src/main/java/org/springblade/modules/baseinfo/region/service/impl/BaseRegionServiceImpl.java

@@ -7,11 +7,14 @@
 package org.springblade.modules.baseinfo.region.service.impl;
 
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.modules.baseinfo.region.dto.RegionInfoDTO;
 import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
-import org.springblade.modules.baseinfo.region.mapper.RegionInfoMapper;
-import org.springblade.modules.baseinfo.region.service.IBaseRegionCacheService;
+import org.springblade.modules.baseinfo.region.mapper.BaseRegionMapper;
+import org.springblade.modules.baseinfo.region.service.IBaseRegionService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /***
  * Date:2022/8/22
  * Title:文件所属模块(必须填写)
@@ -21,6 +24,20 @@ import org.springframework.stereotype.Service;
  * Remark:认为有必要的其他信息
  */
 @Service
-public class BaseRegionCacheServiceImpl extends BaseServiceImpl<RegionInfoMapper, RegionInfoEntity> implements IBaseRegionCacheService {
+public class BaseRegionServiceImpl extends BaseServiceImpl<BaseRegionMapper, RegionInfoEntity> implements IBaseRegionService {
+
+    @Override
+    public long getCount(RegionInfoDTO dto) {
+        return baseMapper.getCount(dto);
+    }
+
+    @Override
+    public List<RegionInfoEntity> selectList(RegionInfoDTO dto) {
+        return baseMapper.selectList(dto);
+    }
 
+    @Override
+    public RegionInfoEntity getByCode(String code) {
+        return baseMapper.getByCode(code);
+    }
 }

+ 9 - 5
src/main/java/org/springblade/modules/baseinfo/region/service/impl/OrgRegionServiceImpl.java

@@ -6,12 +6,16 @@
  */
 package org.springblade.modules.baseinfo.region.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.modules.baseinfo.region.dto.OrgRegionInfoDTO;
 import org.springblade.modules.baseinfo.region.entity.OrgRegionInfoEntity;
-import org.springblade.modules.baseinfo.region.mapper.OrgRegionInfoMapper;
-import org.springblade.modules.baseinfo.region.service.IOrgRegionInfoService;
+import org.springblade.modules.baseinfo.region.mapper.OrgRegionMapper;
+import org.springblade.modules.baseinfo.region.service.IOrgRegionService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /***
  * Date:2022/8/22
  * Title:文件所属模块(必须填写)
@@ -21,11 +25,11 @@ import org.springframework.stereotype.Service;
  * Remark:认为有必要的其他信息
  */
 @Service
-public class OrgRegionInfoServiceImpl extends BaseServiceImpl<OrgRegionInfoMapper, OrgRegionInfoEntity> implements IOrgRegionInfoService {
+public class OrgRegionServiceImpl extends BaseServiceImpl<OrgRegionMapper, OrgRegionInfoEntity> implements IOrgRegionService {
 
 
 	@Override
-	public OrgRegionInfoEntity getOrgRegionInfo(Long orgId, String adCode) {
-		return baseMapper.queryOrgRegionInfo(orgId,adCode);
+	public List<OrgRegionInfoEntity> selectList(OrgRegionInfoDTO dto) {
+		return baseMapper.selectList(dto);
 	}
 }

+ 4 - 4
src/main/java/org/springblade/modules/baseinfo/region/wrapper/RegionInfoNodeWrapper.java

@@ -13,7 +13,7 @@ import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.SpringUtil;
 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.service.IBaseRegionService;
 
 /***
  * Date:2022/8/22
@@ -25,11 +25,11 @@ import org.springblade.modules.baseinfo.region.service.IBaseInfoRegionService;
  */
 public class RegionInfoNodeWrapper extends BaseEntityWrapper<RegionInfoEntity, RegionTreeNodeEntity> {
 
-	private static IBaseInfoRegionService baseInfoRegionService;
+	private static IBaseRegionService baseInfoRegionService;
 
-	private static IBaseInfoRegionService getBaseInfoRegionService() {
+	private static IBaseRegionService getBaseInfoRegionService() {
 		if (baseInfoRegionService == null) {
-			baseInfoRegionService = SpringUtil.getBean(IBaseInfoRegionService.class);
+			baseInfoRegionService = SpringUtil.getBean(IBaseRegionService.class);
 		}
 		return baseInfoRegionService;
 	}

+ 16 - 18
src/main/java/org/springblade/modules/baseinfo/region/wrapper/RegionInfoWrapper.java

@@ -13,7 +13,7 @@ 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.region.entity.RegionInfoEntity;
-import org.springblade.modules.baseinfo.region.service.IBaseInfoRegionService;
+import org.springblade.modules.baseinfo.region.service.IBaseRegionService;
 import org.springblade.modules.baseinfo.region.vo.RegionInfoVO;
 
 
@@ -29,11 +29,11 @@ import java.util.Objects;
  */
 public class RegionInfoWrapper extends BaseEntityWrapper<RegionInfoEntity, RegionInfoVO> {
 
-	private static IBaseInfoRegionService baseInfoRegionService;
+	private static IBaseRegionService baseInfoRegionService;
 
-	private static IBaseInfoRegionService getBaseInfoRegionService() {
+	private static IBaseRegionService getBaseRegionService() {
 		if (baseInfoRegionService == null) {
-			baseInfoRegionService = SpringUtil.getBean(IBaseInfoRegionService.class);
+			baseInfoRegionService = SpringUtil.getBean(IBaseRegionService.class);
 		}
 		return baseInfoRegionService;
 	}
@@ -44,21 +44,19 @@ public class RegionInfoWrapper extends BaseEntityWrapper<RegionInfoEntity, Regio
 
 	@Override
 	public RegionInfoVO entityVO(RegionInfoEntity entity) {
-		RegionInfoVO regionInfoVO = Objects.requireNonNull(BeanUtil.copy(entity, RegionInfoVO.class));
-		regionInfoVO.setCode(entity.getAdcd());
-		regionInfoVO.setName(entity.getAdnm());
-		regionInfoVO.setSort(1);
-		regionInfoVO.setRegionLevel(1);
-		LambdaQueryWrapper<RegionInfoEntity> queryWrapper= Wrappers.<RegionInfoEntity>query().lambda();
-		queryWrapper.eq(RegionInfoEntity::getAdcd,entity.getParentCode());
-		queryWrapper.eq(RegionInfoEntity::getIsDeleted,0);
-		RegionInfoEntity parentEntity= getBaseInfoRegionService().getOne(queryWrapper);
-		if (null != parentEntity){
-			regionInfoVO.setParentId(parentEntity.getAdcd());
-			regionInfoVO.setParentName(parentEntity.getAdnm());
+		if (null != entity) {
+			RegionInfoVO regionInfoVO = Objects.requireNonNull(BeanUtil.copy(entity, RegionInfoVO.class));
+			regionInfoVO.setCode(entity.getAdcd());
+			regionInfoVO.setName(entity.getAdnm());
+
+			RegionInfoEntity parentEntity = getBaseRegionService().getByCode(entity.getParentCode());
+			if (null != parentEntity) {
+				regionInfoVO.setParentId(parentEntity.getAdcd());
+				regionInfoVO.setParentName(parentEntity.getAdnm());
+			}
+			return regionInfoVO;
 		}
-
-		return regionInfoVO;
+		return null;
 	}
 
 }

+ 474 - 267
src/main/java/org/springblade/modules/baseinfo/rtu/controller/RtuBaseInfoController.java

@@ -24,10 +24,8 @@ 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.region.service.IBaseRegionService;
 import org.springblade.modules.baseinfo.rtu.dto.RtuInfoDTO;
 import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
 import org.springblade.modules.baseinfo.rtu.service.IRtuBaseInfoService;
@@ -52,6 +50,7 @@ import org.springblade.modules.system.service.IDictBizService;
 import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -69,269 +68,477 @@ import java.util.List;
 @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);
-	}
+    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 IBaseRegionService 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) {
+        if (rtuInfoDTO.getDeptId() == null) {
+            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());
+//            }
+
+                    rtuInfoDTO.setOrgId(Func.toLong(user.getDeptId()));
+
+            }
+        }else{
+            if (!rtuInfoDTO.getDeptId().equals(BusinessConstant.DEPT_DH_ID)){
+                rtuInfoDTO.setOrgId(Func.toLong(rtuInfoDTO.getDeptId()));
+            }
+        }
+        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 RtuInfoDTO dto) {
+        LambdaQueryWrapper<RtuInfoEntity> rtuwrapper = Wrappers.<RtuInfoEntity>query().lambda();
+        rtuwrapper.eq(RtuInfoEntity::getRtuCode, dto.getRtuCode());
+        rtuwrapper.eq(RtuInfoEntity::getIsDeleted, 0L);
+        RtuInfoEntity entity = rtuBaseInfoService.getOne(rtuwrapper);
+        if (null != entity) {
+            return R.fail("测站编码已存在,请确认!");
+        }
+
+        Dept dept = deptService.getById(dto.getOrgId());
+        dto.setManageCompany(dept.getDeptName());
+
+        dto.setIsRain(0);
+        dto.setIsRiver(0);
+        dto.setIsRes(0);
+        dto.setIsGround(0);
+        dto.setIsVideo(0);
+        if (dto.getSiteKind() != null && dto.getSiteKind().length > 0) {
+            for (String kind : dto.getSiteKind()) {
+                if ("1".equals(kind)) {
+                    dto.setIsRain(1);
+                } else if ("2".equals(kind)) {
+                    dto.setIsRiver(1);
+                } else if ("3".equals(kind)) {
+                    dto.setIsRes(1);
+                } else if ("4".equals(kind)) {
+                    dto.setIsGround(1);
+                } else if ("5".equals(kind)) {
+                    dto.setIsVideo(1);
+                }
+            }
+        }
+        if (null != dto.getLng() && dto.getLng().trim().length() > 0) {
+            String lng = this.getLng(dto.getLng().trim());
+            dto.setLng(lng);
+        }
+        if (null != dto.getLat() && dto.getLat().trim().length() > 0) {
+            String lat = this.getLat(dto.getLat().trim());
+            dto.setLat(lat);
+        }
+        return R.status(rtuBaseInfoService.save(dto));
+    }
+
+    /**
+     * 修改
+     */
+    @PostMapping("/update")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "修改", notes = "传入RtuInfoDTO")
+    public R update(@RequestBody RtuInfoDTO dto) {
+//        LambdaQueryWrapper<RegionInfoEntity> wrapper = Wrappers.<RegionInfoEntity>query().lambda();
+//        wrapper.eq(RegionInfoEntity::getAdcd, dto.getAdCode());
+//        wrapper.eq(RegionInfoEntity::getIsDeleted, 0L);
+//        RegionInfoEntity regionInfoEntity = baseInfoRegionService.getOne(wrapper);
+//        dto.setAdDist(regionInfoEntity.getAdnm());
+//        LambdaQueryWrapper<RegionInfoEntity> citywrapper = Wrappers.<RegionInfoEntity>query().lambda();
+//        citywrapper.eq(RegionInfoEntity::getAdcd, regionInfoEntity.getParentCode());
+//        citywrapper.eq(RegionInfoEntity::getIsDeleted, 0L);
+//        regionInfoEntity = baseInfoRegionService.getOne(citywrapper);
+//        dto.setAdCity(regionInfoEntity.getAdnm());
+        Dept dept = deptService.getById(dto.getOrgId());
+        dto.setManageCompany(dept.getDeptName());
+        dto.setIsRain(0);
+        dto.setIsRiver(0);
+        dto.setIsRes(0);
+        dto.setIsGround(0);
+        dto.setIsVideo(0);
+        if (dto.getSiteKind() != null && dto.getSiteKind().length > 0) {
+            for (String kind : dto.getSiteKind()) {
+                if ("1".equals(kind)) {
+                    dto.setIsRain(1);
+                } else if ("2".equals(kind)) {
+                    dto.setIsRiver(1);
+                } else if ("3".equals(kind)) {
+                    dto.setIsRes(1);
+                } else if ("4".equals(kind)) {
+                    dto.setIsGround(1);
+                } else if ("5".equals(kind)) {
+                    dto.setIsVideo(1);
+                }
+            }
+        }
+        if (null != dto.getLng() && dto.getLng().trim().length() > 0) {
+            String lng = this.getLng(dto.getLng().trim());
+            dto.setLng(lng);
+        }
+        if (null != dto.getLat() && dto.getLat().trim().length() > 0) {
+            String lat = this.getLat(dto.getLat().trim());
+            dto.setLat(lat);
+        }
+        return R.status(rtuBaseInfoService.updateById(dto));
+    }
+
+    /**
+     * 新增或修改
+     */
+    @PostMapping("/submit")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "新增或修改", notes = "传入RtuInfoDTO")
+    public R submit(@RequestBody RtuInfoDTO dto) {
+//        LambdaQueryWrapper<RegionInfoEntity> wrapper = Wrappers.<RegionInfoEntity>query().lambda();
+//        wrapper.eq(RegionInfoEntity::getAdcd, dto.getAdCode());
+//        wrapper.eq(RegionInfoEntity::getIsDeleted, 0L);
+//        RegionInfoEntity regionInfoEntity = baseInfoRegionService.getOne(wrapper);
+//        dto.setAdDist(regionInfoEntity.getAdnm());
+//        LambdaQueryWrapper<RegionInfoEntity> citywrapper = Wrappers.<RegionInfoEntity>query().lambda();
+//        citywrapper.eq(RegionInfoEntity::getAdcd, regionInfoEntity.getParentCode());
+//        citywrapper.eq(RegionInfoEntity::getIsDeleted, 0L);
+//        regionInfoEntity = baseInfoRegionService.getOne(citywrapper);
+//        dto.setAdCity(regionInfoEntity.getAdnm());
+        Dept dept = deptService.getById(dto.getOrgId());
+        dto.setManageCompany(dept.getDeptName());
+        dto.setIsRain(0);
+        dto.setIsRiver(0);
+        dto.setIsRes(0);
+        dto.setIsGround(0);
+        dto.setIsVideo(0);
+        if (dto.getSiteKind() != null && dto.getSiteKind().length > 0) {
+            for (String kind : dto.getSiteKind()) {
+                if ("1".equals(kind)) {
+                    dto.setIsRain(1);
+                } else if ("2".equals(kind)) {
+                    dto.setIsRiver(1);
+                } else if ("3".equals(kind)) {
+                    dto.setIsRes(1);
+                } else if ("4".equals(kind)) {
+                    dto.setIsGround(1);
+                } else if ("5".equals(kind)) {
+                    dto.setIsVideo(1);
+                }
+            }
+        }
+        if (null != dto.getLng() && dto.getLng().trim().length() > 0) {
+            String lng = this.getLng(dto.getLng().trim());
+            dto.setLng(lng);
+        }
+        if (null != dto.getLat() && dto.getLat().trim().length() > 0) {
+            String lat = this.getLat(dto.getLat().trim());
+            dto.setLat(lat);
+        }
+        return R.status(rtuBaseInfoService.saveOrUpdate(dto));
+    }
+
+    /**
+     * 删除
+     */
+    @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.setDeptId(dept.getId());
+
+            Long warningRtus = rtuWarningService.warningRtuCount(rtuWarningInfoDTO);
+            rtuStatisticsInfoVO.setWarningRtuCount(warningRtus);
+
+            list.add(rtuStatisticsInfoVO);
+        }
+
+        return R.data(list);
+    }
+
+    private String getLng(String lngText) {
+        ArrayList<String> textArr = new ArrayList<>();
+        textArr.add("");
+        for (int l = 0; l < lngText.length(); l++) {
+            String subtext = lngText.substring(l, l + 1);
+            if (Func.isNumeric(subtext)) {
+                String str = textArr.get(textArr.size() - 1);
+                str += subtext;
+                textArr.set(textArr.size() - 1, str);
+            } else {
+                textArr.add("");
+            }
+        }
+        ArrayList<String> tmp = new ArrayList<>();
+        for (String text : textArr) {
+            if (text.length() > 0) {
+                tmp.add(text);
+            }
+        }
+        if (tmp.size() >= 4) {
+            //度分秒,秒有小数点
+            String v = tmp.get(2) + "." + tmp.get(3);
+            double lat = Double.parseDouble(v);
+            lat = lat / 60.0;
+            v = tmp.get(1);
+            lat = (Double.parseDouble(v) + lat) / 60.0;
+            v = tmp.get(0);
+            lat = Double.parseDouble(v) + lat;
+            return String.format("%.06f", lat);
+        } else if (tmp.size() == 3) {
+            //度分秒
+            String v = tmp.get(2);
+            double lat = Double.parseDouble(v);
+            lat = lat / 60.0;
+            v = tmp.get(1);
+            lat = (Double.parseDouble(v) + lat) / 60.0;
+            v = tmp.get(0);
+            lat = Double.parseDouble(v) + lat;
+            return String.format("%.06f", lat);
+        } else if (tmp.size() == 2) {
+            //度
+            String v = tmp.get(0) + "." + tmp.get(1);
+            double lat = Double.parseDouble(v);
+            return String.format("%.06f", lat);
+        }
+        return null;
+    }
+
+    private String getLat(String latText) {
+        ArrayList<String> textArr = new ArrayList<>();
+        textArr.add("");
+        for (int l = 0; l < latText.length(); l++) {
+            String subtext = latText.substring(l, l + 1);
+            if (Func.isNumeric(subtext)) {
+                String str = textArr.get(textArr.size() - 1);
+                str += subtext;
+                textArr.set(textArr.size() - 1, str);
+            } else {
+                textArr.add("");
+            }
+        }
+        ArrayList<String> tmp = new ArrayList<>();
+        for (String text : textArr) {
+            if (text.length() > 0) {
+                tmp.add(text);
+            }
+        }
+        if (tmp.size() >= 4) {
+            //度分秒,秒有小数点
+            String v = tmp.get(2) + "." + tmp.get(3);
+            double lat = Double.parseDouble(v);
+            lat = lat / 60.0;
+            v = tmp.get(1);
+            lat = (Double.parseDouble(v) + lat) / 60.0;
+            v = tmp.get(0);
+            lat = Double.parseDouble(v) + lat;
+            return String.format("%.06f", lat);
+        } else if (tmp.size() == 3) {
+            //度分秒
+            String v = tmp.get(2);
+            double lat = Double.parseDouble(v);
+            lat = lat / 60.0;
+            v = tmp.get(1);
+            lat = (Double.parseDouble(v) + lat) / 60.0;
+            v = tmp.get(0);
+            lat = Double.parseDouble(v) + lat;
+            return String.format("%.06f", lat);
+        } else if (tmp.size() == 2) {
+            //度
+            String v = tmp.get(0) + "." + tmp.get(1);
+            double lat = Double.parseDouble(v);
+            return String.format("%.06f", lat);
+        }
+        return null;
+    }
 }

+ 33 - 1
src/main/java/org/springblade/modules/baseinfo/rtu/dto/RtuInfoDTO.java

@@ -29,16 +29,48 @@ public class RtuInfoDTO extends RtuInfoEntity {
 	@ApiModelProperty(value = "项目名称")
 	private String projectName;
 
+	@ApiModelProperty(value = "所属盟市行片区划编码")
+	private String adCityCode;
+
 	@ApiModelProperty(value = "行政区划编码")
 	private String adCode;
 
 	@ApiModelProperty(value = "行政区划名称")
 	private String adName;
 
-	@ApiModelProperty(value = "测站类型")
+	/**
+	 * 测站类型编码
+	 */
+	@ApiModelProperty(value = "测站类型编码")
 	private String rtuKind;
 
+
+
 	@ApiModelProperty(value = "异常类型")
 	private Integer warnKind;
 
+	/**
+	 * 排序,ascending"  descending
+	 */
+	@ApiModelProperty("排序")
+	private String order;
+
+	/**
+	 * 排序字段
+	 */
+	@ApiModelProperty("排序字段")
+	private String prop;
+
+	@ApiModelProperty(value = "站点类型")
+	private String[] siteKind;
+
+
+	@ApiModelProperty(value = "部门ID")
+	private Long deptId;
+
+	/**
+	 * 参数类型 0 按机构 1 按项目 2 按地区
+	 */
+	@ApiModelProperty(value = "参数类型")
+	private Integer paramsType;
 }

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

@@ -185,6 +185,12 @@ public class RtuInfoEntity extends BaseEntity {
 	)
 	private Date rtuReplaceDate;
 
+	/**
+	 * RTU发往省
+	 */
+	@ApiModelProperty(value = "RTU发往运维系统")
+	@JsonSerialize(nullsUsing = NullSerializer.class)
+	private Integer isUpYwxt;
 
 	/**
 	 * RTU发往省
@@ -318,6 +324,18 @@ public class RtuInfoEntity extends BaseEntity {
 	@ApiModelProperty(value = "太阳能板型号")
 	private String sunPowerModel;
 
+	/**
+	 * 太阳能控制器型号
+	 */
+	@ApiModelProperty(value = "太阳能控制器型号")
+	private String sunPowerControllerModel;
+
+	/**
+	 * 太阳能控制器品牌
+	 */
+	@ApiModelProperty(value = "太阳能控制器品牌")
+	private String sunPowerControllerBrand;
+
 	/**
 	 * SIN卡号
 	 */

+ 4 - 1
src/main/java/org/springblade/modules/baseinfo/rtu/mapper/RtuBaseInfoMapper.java

@@ -23,7 +23,7 @@ import java.util.List;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface RtuInfoMapper extends BaseMapper<RtuInfoEntity> {
+public interface RtuBaseInfoMapper extends BaseMapper<RtuInfoEntity> {
 	/**
 	 * 自定义分页
 	 *
@@ -41,4 +41,7 @@ public interface RtuInfoMapper extends BaseMapper<RtuInfoEntity> {
 	Long rtuRainCount(@Param("adCode") String adCode);
 	Long rtuRiverCount(@Param("adCode") String adCode);
 	Long rtuGroundCount(@Param("adCode") String adCode);
+
+
+
 }

+ 1 - 1
src/main/java/org/springblade/modules/baseinfo/rtu/mapper/RtuBaseInfoMapper.xml

@@ -1,6 +1,6 @@
 <?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.rtu.mapper.RtuInfoMapper">
+<mapper namespace="org.springblade.modules.baseinfo.rtu.mapper.RtuBaseInfoMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="rtuInfoResultMap" type="org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity">

+ 8 - 1
src/main/java/org/springblade/modules/baseinfo/rtu/service/IRtuBaseInfoService.java

@@ -31,10 +31,17 @@ public interface IRtuBaseInfoService extends BaseService<RtuInfoEntity> {
 	 */
 	IPage<RtuInfoVO> selectPage(IPage<RtuInfoVO> page, RtuInfoDTO rtuInfoDTO);
 
-	RtuInfoEntity rtuInfoByRtuCode(String rtuCode);
+	RtuInfoEntity rtuInfoByCode(String rtuCode);
 
+
+	Long rtuCount(RtuInfoDTO dto);
 	Long rtuCount(String adCode);
 	List<RtuInfoEntity> rtuList(RtuInfoDTO rtuInfoDTO);
 
 	RtuInfoEntity getAdcd(RtuInfoEntity rtuInfoEntity);
+
+	Long rtuRainCount(String adCode);
+	Long rtuRiverCount(String adCode);
+	Long rtuGroundCount(String adCode);
+
 }

+ 30 - 14
src/main/java/org/springblade/modules/baseinfo/rtu/service/impl/RtuBaseInfoServiceImpl.java

@@ -9,21 +9,14 @@ 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.region.service.IBaseRegionService;
 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.mapper.RtuBaseInfoMapper;
 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;
@@ -38,9 +31,9 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 @Service
-public class RtuBaseInfoServiceImpl extends BaseServiceImpl<RtuInfoMapper, RtuInfoEntity> implements IRtuBaseInfoService {
+public class RtuBaseInfoServiceImpl extends BaseServiceImpl<RtuBaseInfoMapper, RtuInfoEntity> implements IRtuBaseInfoService {
 	@Resource
-	private IBaseInfoRegionService baseInfoRegionService;
+	private IBaseRegionService baseInfoRegionService;
 
 	@Override
 	public IPage<RtuInfoVO> selectPage(IPage<RtuInfoVO> page, RtuInfoDTO rtuInfoDTO) {
@@ -48,7 +41,7 @@ public class RtuBaseInfoServiceImpl extends BaseServiceImpl<RtuInfoMapper, RtuIn
 	}
 
 	@Override
-	public RtuInfoEntity rtuInfoByRtuCode(String rtuCode) {
+	public RtuInfoEntity rtuInfoByCode(String rtuCode) {
 		LambdaQueryWrapper<RtuInfoEntity> wrapper = Wrappers.<RtuInfoEntity>query().lambda();
 		wrapper.eq(RtuInfoEntity::getRtuCode, rtuCode);
 		wrapper.eq(RtuInfoEntity::getIsDeleted,0);
@@ -59,8 +52,15 @@ public class RtuBaseInfoServiceImpl extends BaseServiceImpl<RtuInfoMapper, RtuIn
 
 
 	@Override
-	public Long rtuCount( String adCode) {
-		return baseMapper.rtuCount(adCode);
+	public Long rtuCount( RtuInfoDTO dto) {
+		return baseMapper.rtuCount(dto);
+	}
+
+	@Override
+	public Long rtuCount(String adCode) {
+		RtuInfoDTO dto = new RtuInfoDTO();
+		dto.setAdCode(adCode);
+		return baseMapper.rtuCount(dto);
 	}
 
 	@Override
@@ -100,4 +100,20 @@ public class RtuBaseInfoServiceImpl extends BaseServiceImpl<RtuInfoMapper, RtuIn
 
 		return null;
 	}
+
+	@Override
+	public Long rtuRainCount(String adCode) {
+		return this.baseMapper.rtuRainCount(adCode);
+	}
+
+	@Override
+	public Long rtuRiverCount(String adCode) {
+		return this.baseMapper.rtuRiverCount(adCode);
+	}
+
+	@Override
+	public Long rtuGroundCount(String adCode) {
+		return this.baseMapper.rtuGroundCount(adCode);
+	}
+
 }

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

@@ -122,6 +122,9 @@ public class RtuInfoVO extends RtuInfoEntity {
 	@ApiModelProperty(value = "通讯模式名称")
 	private String satelliteModelText;
 
+	@ApiModelProperty(value = "所属盟市行片区划编码")
+	private String adCityCode;
+
 	/**
 	 * 行政区划
 	 */
@@ -133,4 +136,25 @@ public class RtuInfoVO extends RtuInfoEntity {
 	 */
 	@ApiModelProperty(value = "行政区划名称")
 	private String adnm;
+
+	@ApiModelProperty(value = "站点类型")
+	private String[] siteKind;
+
+	/**
+	 * 省名称
+	 */
+	@ApiModelProperty(value = "所属省")
+	private String adProvince;
+
+	/**
+	 * 乡镇名称
+	 */
+	@ApiModelProperty(value = "所属乡镇")
+	private String adTown;
+
+	/**
+	 * 村名称
+	 */
+	@ApiModelProperty(value = "所属村")
+	private String adVillage;
 }

+ 117 - 41
src/main/java/org/springblade/modules/baseinfo/rtu/wrapper/RtuInfoWrapper.java

@@ -7,10 +7,22 @@
 package org.springblade.modules.baseinfo.rtu.wrapper;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.Func;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.modules.baseinfo.project.entity.ProjectInfoEntity;
+import org.springblade.modules.baseinfo.project.service.IBaseProjectService;
+import org.springblade.modules.baseinfo.region.entity.RegionInfoEntity;
+import org.springblade.modules.baseinfo.region.service.IBaseRegionService;
 import org.springblade.modules.baseinfo.rtu.entity.RtuInfoEntity;
 import org.springblade.modules.baseinfo.rtu.vo.RtuInfoVO;
+import org.springblade.modules.system.entity.Dept;
+import org.springblade.modules.system.entity.DictBiz;
+import org.springblade.modules.system.service.IDeptService;
+import org.springblade.modules.system.service.IDictBizService;
 
 import java.util.*;
 
@@ -23,45 +35,109 @@ import java.util.*;
  * 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;
-	}
+    public static RtuInfoWrapper build() {
+        return new RtuInfoWrapper();
+    }
+
+    private static IDictBizService dictBizService;
+
+    private static IDictBizService getDictBizService() {
+        if (dictBizService == null) {
+            dictBizService = SpringUtil.getBean(IDictBizService.class);
+        }
+        return dictBizService;
+    }
+
+    private static IBaseRegionService regionService;
+
+    private static IBaseRegionService getRegionService() {
+        if (regionService == null) {
+            regionService = SpringUtil.getBean(IBaseRegionService.class);
+        }
+        return regionService;
+    }
+
+    private static IDeptService deptService;
+
+    private static IDeptService getDeptService() {
+        if (deptService == null) {
+            deptService = SpringUtil.getBean(IDeptService.class);
+        }
+        return deptService;
+    }
+
+    private static IBaseProjectService projectService;
+
+    private static IBaseProjectService getProjectService() {
+        if (projectService == null) {
+            projectService = SpringUtil.getBean(IBaseProjectService.class);
+        }
+        return projectService;
+    }
+
+    @Override
+    public RtuInfoVO entityVO(RtuInfoEntity entity) {
+        RtuInfoVO rtuInfoVO = Objects.requireNonNull(BeanUtil.copy(entity, RtuInfoVO.class));
+        return this.entityVO(rtuInfoVO);
+    }
+
+    public RtuInfoVO entityVO(RtuInfoVO entity) {
+        if (entity.getRtuKinds() != null) {
+            StringBuilder rtuKindDesc = new StringBuilder();
+            String[] kinds = entity.getRtuKinds().split(",");
+            for (String kind : kinds) {
+                DictBiz dictBiz = getDictBizService().getById(Func.toLong(kind));
+                if (rtuKindDesc.length() > 0) {
+                    rtuKindDesc.append("|");
+                }
+                rtuKindDesc.append(dictBiz.getDictValue());
+            }
+            entity.setRtuKindDesc(rtuKindDesc.toString());
+        }
+
+        if (entity.getAdName() == null && entity.getAdCode() != null) {
+            RegionInfoEntity regionInfoEntity = getRegionService().getByCode(entity.getAdCode());
+            if (null != regionInfoEntity) {
+                entity.setAdName(regionInfoEntity.getAdnm());
+            }
+        }
+
+        if (entity.getManageCompany() == null && entity.getOrgId() != null) {
+            Dept dept = getDeptService().getById(entity.getOrgId());
+            if (dept != null) {
+                entity.setManageCompany(dept.getDeptName());
+            }
+        }
+
+        if (entity.getProjectName() == null && entity.getProjectId() != null) {
+            ProjectInfoEntity projectInfoEntity = getProjectService().getProjectInfoById(entity.getProjectId());
+            if (projectInfoEntity != null) {
+                entity.setProjectName(projectInfoEntity.getProjectName());
+            }
+        }
+
+        if (entity.getAdCode() != null) {
+            RegionInfoEntity regionInfoEntity = getRegionService().getByCode(entity.getAdCode());
+            if (regionInfoEntity != null) {
+                StringBuilder areaName = new StringBuilder();
+                String[] ads = regionInfoEntity.getAncestors().split(",");
+                if (ads.length > 1) {
+                    for (int i = 1; i < ads.length; i++) {
+                        String adCode = ads[i];
+                        RegionInfoEntity region = getRegionService().getByCode(adCode);
+                        if (areaName.length() > 0) {
+                            areaName.append("/");
+                        }
+                        areaName.append(region.getAdnm());
+                    }
+                }
+                if (areaName.length() > 0) {
+                    areaName.append("/");
+                }
+                areaName.append(regionInfoEntity.getAdnm());
+                entity.setAreaName(areaName.toString());
+            }
+        }
+        return entity;
+    }
 }

+ 376 - 237
src/main/java/org/springblade/modules/baseinfo/servicePerson/controller/ServicePersonController.java

@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
+import org.apache.xmlbeans.impl.xb.xsdschema.Attribute;
 import org.springblade.constant.BusinessConstant;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
@@ -22,18 +23,26 @@ 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.enums.PostCategoryEnum;
+import org.springblade.modules.auth.enums.UserEnum;
 import org.springblade.modules.baseinfo.org.entity.DeptRegionEntity;
+import org.springblade.modules.baseinfo.servicePerson.dto.ServicePersonDTO;
 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.OrgServicePersonVO;
 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.Post;
 import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.entity.UserDept;
 import org.springblade.modules.system.service.IDeptService;
+import org.springblade.modules.system.service.IPostService;
+import org.springblade.modules.system.service.IUserDeptService;
 import org.springblade.modules.system.service.IUserService;
 import org.springblade.modules.system.vo.UserVO;
 import org.springframework.web.bind.annotation.*;
@@ -58,174 +67,304 @@ import java.util.Objects;
 @AllArgsConstructor
 @Api(value = "项目运维人员管理", tags = "项目运维人员管理")
 public class ServicePersonController extends BladeController {
-	private final IServicePersonService servicePersonService;
-	private final IUserService userService;
-	private final IDeptService deptService;
+    private final IServicePersonService servicePersonService;
+    private final IUserService userService;
+    private final IDeptService deptService;
+    private final IUserDeptService userDeptService;
+    private final IPostService postService;
 
-	@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("/org/user/page")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "personName", value = "人员名称", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "contactPhone", value = "联系电话", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "deptId", value = "机构部门ID", paramType = "query", dataType = "long"),
+    })
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "分页")
+    public R<IPage<ServicePersonVO>> servciePersonPage(@ApiIgnore ServicePersonDTO dto, Query query) {
+        BladeUser user = AuthUtil.getUser();
+        if (Func.isNull(dto.getTenantId())) {
+            dto.setTenantId(user.getTenantId());
+        }
+        if (Func.isNull(dto.getDeptId())) {
+            dto.setDeptId(Func.toLong(user.getDeptId()));
+        }
+        dto.setId(user.getUserId());
+        if (Func.notNull(dto.getPostCode())) {
+            if (1 == dto.getPostCode()) {
+                //工程师
+                dto.setPostId(Func.toLong(BusinessConstant.POST_COMPANY_YW_ID));
+            } else if (2 == dto.getPostCode()) {
+                //服务员
+                dto.setPostId(Func.toLong(BusinessConstant.POST_COMPANY_SERVICE_PERSON_ID));
+            }
+        }
+        IPage<ServicePersonVO> pages = servicePersonService.selectServicePersonPage(Condition.getPage(query), dto);
+        List<ServicePersonVO> list = pages.getRecords();
+        for (ServicePersonVO vo : list) {
+            ServicePersonWrapper.build().entityVO(vo);
+        }
+        return R.data(pages);
+    }
 
-	@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);
-	}
+    @GetMapping("/page")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "personName", value = "人员名称", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "contactPhone", value = "联系电话", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "deptId", value = "机构部门ID", paramType = "query", dataType = "long"),
+    })
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "分页")
+    public R<IPage<ServicePersonVO>> page(@ApiIgnore ServicePersonDTO dto, Query query) {
+        BladeUser user = AuthUtil.getUser();
+        if (Func.isNull(dto.getTenantId())) {
+            dto.setTenantId(user.getTenantId());
+        }
+        if (Func.isNull(dto.getDeptId())) {
+            dto.setDeptId(Func.toLong(user.getDeptId()));
+        }
+        IPage<ServicePersonVO> pages = servicePersonService.selectPage(Condition.getPage(query), dto);
+        List<ServicePersonVO> list = pages.getRecords();
+        for (ServicePersonVO vo : list) {
+            ServicePersonWrapper.build().entityVO(vo);
+        }
+        return R.data(pages);
+    }
 
-	/**
-	 * 新增
-	 */
-	@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));
-	}
+    /**
+     * 查询技术人员
+     *
+     * @param dto
+     * @param query
+     * @return
+     */
+    @GetMapping("/tech/page")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "personName", value = "人员名称", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "contactPhone", value = "联系电话", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "deptId", value = "机构部门ID", paramType = "query", dataType = "string"),
+    })
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "分页")
+    public R<IPage<ServicePersonVO>> techPage(@ApiIgnore ServicePersonDTO dto, Query query) {
+        BladeUser user = AuthUtil.getUser();
+        if (dto.getDeptId() == null) {
+            dto.setDeptId(Func.toLong(user.getDeptId()));
+        }
+        dto.setCategory(PostCategoryEnum.CATEGORY_SERVICE.getCode());
+        IPage<ServicePersonVO> pages = servicePersonService.selectPage(Condition.getPage(query), dto);
+        List<ServicePersonVO> list = pages.getRecords();
+        for (ServicePersonVO vo : list) {
+            ServicePersonWrapper.build().entityVO(vo);
+        }
+        return R.data(pages);
+    }
 
-	/**
-	 * 删除
-	 */
-	@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);
-	}
+//    @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);
+//    }
 
-	/**
-	 * 机构树
-	 *
-	 * @return
-	 */
+    /**
+     * 详情
+     */
+    @GetMapping("/detail")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "详情", notes = "传入 User")
+    public R<ServicePersonEntity> detail(ServicePersonDTO dto) {
+        ServicePersonEntity detail = this.servicePersonService.getPersonServiceInfo(dto);
+        return R.data(detail);
+    }
+
+    /**
+     * 新增
+     */
+    @PostMapping("/save")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "新增", notes = "传入 User")
+    public R save(@RequestBody ServicePersonEntity userEntity) {
+        LambdaQueryWrapper<User> wrapper = Wrappers.<User>query().lambda();
+        wrapper.eq(User::getAccount, userEntity.getUserAccount().trim());
+        wrapper.eq(User::getIsDeleted, 0);
+        List<User> list = this.userService.list(wrapper);
+        if (null != list && list.size() > 0) {
+            return R.fail("帐号已经存在");
+        }
+        User userDto = new User();
+        userDto.setName(userEntity.getPersonName());
+        userDto.setRealName(userEntity.getPersonName());
+        userDto.setPhone(userEntity.getContactPhone());
+        userDto.setEmail(userEntity.getMail());
+        userDto.setAccount(userEntity.getUserAccount().trim());
+        userDto.setPassword(DigestUtil.encrypt(userEntity.getUserAccount().trim() + BusinessConstant.ACCOUNT_PW_SUFFIX));
+        BladeUser user = AuthUtil.getUser();
+        userDto.setDeptId(user.getDeptId());
+        if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+            userDto.setRoleId(BusinessConstant.ROLE_SYS_YW_ID);
+        } else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName())) {
+            userDto.setRoleId(BusinessConstant.ROLE_ORG_YW_ID);
+        } else if (BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName())) {
+            userDto.setRoleId(BusinessConstant.ROLE_COMPANY_YW_ID);
+        } else {
+            return R.fail("用户创建错误!");
+        }
+
+        if (BusinessConstant.POST_SYS_ADMIN_ID.equals(user.getPostId())) {
+            userDto.setPostId(BusinessConstant.POST_SYS_YW_ID);
+        } else if (BusinessConstant.POST_ORG_ADMIN_ID.equals(user.getPostId())) {
+            userDto.setPostId(BusinessConstant.POST_ORG_YW_ID);
+        } else if (BusinessConstant.POST_COMPANY_ADMIN_ID.equals(user.getPostId())) {
+            userDto.setPostId(BusinessConstant.POST_COMPANY_YW_ID);
+        } else {
+            return R.fail("用户创建错误!");
+        }
+
+        userDto.setUserType(UserEnum.WEB.getCategory());
+        return R.status(this.userService.save(userDto));
+    }
+
+    /**
+     * 新增
+     */
+    @PostMapping("/org/admin/save")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "新增", notes = "传入 User")
+    public R orgAdminSave(@RequestBody ServicePersonDTO userEntity) {
+        LambdaQueryWrapper<User> wrapper = Wrappers.<User>query().lambda();
+        wrapper.eq(User::getAccount, userEntity.getUserAccount().trim());
+        wrapper.eq(User::getIsDeleted, 0);
+        List<User> list = this.userService.list(wrapper);
+        if (null != list && list.size() > 0) {
+            return R.fail("帐号已经存在");
+        }
+        User userDto = new User();
+        userDto.setName(userEntity.getPersonName());
+        userDto.setRealName(userEntity.getPersonName());
+        userDto.setPhone(userEntity.getContactPhone());
+        userDto.setEmail(userEntity.getMail());
+        userDto.setAccount(userEntity.getUserAccount().trim());
+        userDto.setPassword(DigestUtil.encrypt(userEntity.getUserAccount().trim() + BusinessConstant.ACCOUNT_PW_SUFFIX));
+        userDto.setDeptId(Func.toStr(userEntity.getDeptId()));
+        userDto.setRoleId(BusinessConstant.ROLE_ORG_ADMIN_ID);
+        userDto.setPostId(BusinessConstant.POST_ORG_ADMIN_ID);
+        userDto.setUserType(UserEnum.APP.getCategory());
+        this.userService.save(userDto);
+        UserDept userDept = new UserDept();
+        userDept.setUserId(userDto.getId());
+        userDept.setDeptId(userEntity.getDeptId());
+        userDeptService.save(userDept);
+        return R.status(true);
+    }
+
+
+    /**
+     * 新增
+     */
+    @PostMapping("/org/user/save")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "新增", notes = "传入 User")
+    public R servicePersonSave(@RequestBody ServicePersonDTO userEntity) {
+        LambdaQueryWrapper<User> wrapper = Wrappers.<User>query().lambda();
+        wrapper.eq(User::getAccount, userEntity.getUserAccount().trim());
+        wrapper.eq(User::getIsDeleted, 0);
+        List<User> list = this.userService.list(wrapper);
+        if (null != list && list.size() > 0) {
+            return R.fail("帐号已经存在");
+        }
+        User userDto = new User();
+        userDto.setName(userEntity.getPersonName());
+        userDto.setRealName(userEntity.getPersonName());
+        userDto.setPhone(userEntity.getContactPhone());
+        userDto.setEmail(userEntity.getMail());
+        userDto.setAccount(userEntity.getUserAccount().trim());
+        userDto.setPassword(DigestUtil.encrypt(userEntity.getUserAccount().trim() + BusinessConstant.ACCOUNT_PW_SUFFIX));
+        BladeUser user = AuthUtil.getUser();
+        userDto.setDeptId(user.getDeptId());
+        userDto.setRoleId(BusinessConstant.ROLE_COMPANY_SERVICE_PERSON_ID);
+        if (userEntity.getPostCode() == 1) {
+            userDto.setPostId(BusinessConstant.POST_COMPANY_YW_ID);
+        } else if (userEntity.getPostCode() == 2) {
+            userDto.setPostId(BusinessConstant.POST_COMPANY_SERVICE_PERSON_ID);
+        }
+        userDto.setUserType(UserEnum.APP.getCategory());
+        this.userService.save(userDto);
+        UserDept userDept = new UserDept();
+        userDept.setUserId(userDto.getId());
+        userDept.setDeptId(Func.toLong(userDto.getDeptId()));
+        userDeptService.save(userDept);
+        return R.status(true);
+    }
+
+    /**
+     * 修改
+     */
+    @PostMapping("/update")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "修改", notes = "传入 User")
+    public R update(@RequestBody ServicePersonDTO entity) {
+        if (Objects.isNull(entity.getId())) {
+            return R.fail("用户ID不能为空!");
+        }
+        User user = this.userService.getById(entity.getId());
+        user.setRealName(entity.getPersonName());
+        user.setName(entity.getPersonName());
+        user.setPhone(entity.getContactPhone());
+        user.setEmail(entity.getMail());
+//        if (entity.getPostCode() == 1) {
+//            user.setPostId(BusinessConstant.POST_COMPANY_YW_ID);
+//        } else if (entity.getPostCode() == 2) {
+//            user.setPostId(BusinessConstant.POST_COMPANY_SERVICE_PERSON_ID);
+//        }
+        return R.status(this.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) {
+                this.userService.removeById(id);
+            }
+        }
+        return R.status(true);
+    }
+
+//    @PostMapping("/org/user/remove")
+//    @ApiOperationSupport(order = 7)
+//    @ApiOperation(value = "逻辑删除", notes = "传入 ids")
+//    public R orgUserRemove(@ApiParam(value = "主键集合") @RequestParam String ids) {
+//        List<Long> list = Func.toLongList(ids);
+//        if (null != list && list.size() > 0) {
+//            for (Long id : list) {
+//                ServicePersonEntity entity= this.servicePersonService.getById(id);
+//                if (Func.notNull(entity)){
+//                    this.userService.removeById(entity.get());
+//                }
+//                this.servicePersonService.removeById(id);
+//            }
+//        }
+//        return R.status(true);
+//    }
+
+    /**
+     * 机构树
+     *
+     * @return
+     */
 //	@GetMapping("/org/dict")
 //	@ApiOperationSupport(order = 1)
 //	@ApiOperation(value = "详情")
@@ -241,81 +380,81 @@ public class ServicePersonController extends BladeController {
 //		}
 //		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);
+    @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);
-	}
+            list.add(contactVO);
+        }
+        return R.data(list);
+    }
 }

+ 34 - 2
src/main/java/org/springblade/modules/baseinfo/servicePerson/dto/ServicePersonDTO.java

@@ -6,7 +6,14 @@
  */
 package org.springblade.modules.baseinfo.servicePerson.dto;
 
-/*** 
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.models.auth.In;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
+
+/***
  * Date:2023/9/26
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
@@ -14,5 +21,30 @@ package org.springblade.modules.baseinfo.servicePerson.dto;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class ServicePersonDTO {
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ServicePersonDTO extends ServicePersonEntity {
+    /**
+     * 机构ID
+     */
+    @ApiModelProperty(value = "机构ID")
+    Long deptId;
+
+    /**
+     * 岗位类型
+     */
+    @ApiModelProperty(value = "岗位类型")
+    Integer category;
+
+    /**
+     * 岗位
+     */
+    @ApiModelProperty(value = "岗位")
+    Integer postCode;
+
+    @ApiModelProperty(value = "角色")
+    String roleId;
+
+    @ApiModelProperty(value = "岗位ID")
+    Long postId;
 }

+ 7 - 23
src/main/java/org/springblade/modules/baseinfo/servicePerson/entity/ServicePersonEntity.java

@@ -22,7 +22,7 @@ import org.springblade.core.mp.base.BaseEntity;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("project_service_person")
+@TableName("blade_user")
 public class ServicePersonEntity extends BaseEntity {
 	private static final long serialVersionUID = 1L;
 
@@ -33,16 +33,16 @@ public class ServicePersonEntity extends BaseEntity {
 	private String tenantId;
 
 	/**
-	 * 运维人员名称
+	 * 帐号
 	 */
-	@ApiModelProperty(value = "运维人员名称")
-	private String personName;
+	@ApiModelProperty(value = "帐号")
+	private String userAccount;
 
 	/**
-	 * 机构ID
+	 * 运维人员名称
 	 */
-	@ApiModelProperty(value = "机构ID")
-	private Long orgId;
+	@ApiModelProperty(value = "运维人员名称")
+	private String personName;
 
 	/**
 	 * 联系电话
@@ -56,22 +56,6 @@ public class ServicePersonEntity extends BaseEntity {
 	@ApiModelProperty(value = "邮箱")
 	private String mail;
 
-	/**
-	 * 备注说明
-	 */
-	@ApiModelProperty(value = "备注说明")
-	private String remark;
 
-	/**
-	 * 帐号
-	 */
-	@ApiModelProperty(value = "帐号")
-	private String userAccount;
-
-	/**
-	 * 系统用户ID
-	 */
-	@ApiModelProperty(value = "系统用户ID")
-	private Long userId;
 
 }

+ 25 - 2
src/main/java/org/springblade/modules/baseinfo/servicePerson/mapper/ServicePersonMapper.java

@@ -10,8 +10,11 @@ package org.springblade.modules.baseinfo.servicePerson.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.servicePerson.dto.ServicePersonDTO;
 import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
+import org.springblade.modules.baseinfo.servicePerson.vo.OrgServicePersonVO;
 import org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO;
+import org.springblade.modules.system.entity.User;
 
 
 import java.util.List;
@@ -25,6 +28,26 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 public interface ServicePersonMapper extends BaseMapper<ServicePersonEntity> {
-	IPage<ServicePersonVO> selectPage(IPage page, @Param("entity") ServicePersonEntity entity);
-	List<ServicePersonVO> selectAllList(@Param("entity") ServicePersonEntity entity);
+	/**
+	 * 查询系统用户信息
+	 * @param page
+	 * @param dto
+	 * @return
+	 */
+	IPage<ServicePersonVO> selectPage(IPage page, @Param("dto") ServicePersonDTO dto);
+
+	/**
+	 * 查询运维人员信息
+	 * @param page
+	 * @param dto
+	 * @return
+	 */
+	IPage<ServicePersonVO> selectServicePersonPage(IPage page, @Param("dto") ServicePersonDTO dto);
+
+	/**
+	 * 查询详情
+	 * @param dto
+	 * @return
+	 */
+	ServicePersonEntity getPersonServiceInfo(@Param("dto") ServicePersonDTO dto);
 }

+ 70 - 45
src/main/java/org/springblade/modules/baseinfo/servicePerson/mapper/ServicePersonMapper.xml

@@ -4,73 +4,98 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="servicePersonResultMap" type="org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity">
-
-        <result column="person_name" property="personName"/>
-        <result column="org_id" property="orgId"/>
-        <result column="contact_phone" property="contactPhone"/>
-        <result column="mail" property="mail"/>
-        <result column="remark" property="remark"/>
-        <result column="user_account" property="userAccount"/>
+        <result column="tenant_id" property="tenantId"/>
+        <result column="user_id" property="userAccount"/>
+        <result column="real_name" property="personName"/>
+        <result column="email" property="mail"/>
+        <result column="phone" property="contactPhone"/>
     </resultMap>
 
     <resultMap id="servicePersonVOResultMap" type="org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO">
-
-        <result column="person_name" property="personName"/>
-        <result column="dept_id" property="orgId"/>
-        <result column="contact_phone" property="contactPhone"/>
-        <result column="mail" property="mail"/>
-        <result column="remark" property="remark"/>
+        <result column="tenant_id" property="tenantId"/>
         <result column="account" property="userAccount"/>
+        <result column="real_name" property="personName"/>
+        <result column="email" property="mail"/>
+        <result column="phone" property="contactPhone"/>
+        <result column="dept_name" property="deptName"/>
         <result column="role_name" property="roleName"/>
-        <result column="dept_name" property="orgName"/>
+        <result column="post_name" property="postName"/>
+        <result column="dict_value" property="postType"/>
+        <result column="dept_id" property="deptId"/>
     </resultMap>
 
     <select id="selectPage" resultMap="servicePersonVOResultMap">
-
         SELECT
-        p.*,
-        r.role_name,d.dept_name,u.real_name,u.account,u.phone,u.dept_id
+        u.*,r.role_name,d.dept_name,p.post_name,dict.dict_value
         FROM
-        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 p.org_id = d.id and d.is_deleted = 0
+        blade_user u
+        LEFT JOIN blade_role r ON u.role_id = r.id and r.is_deleted = 0
+        LEFT JOIN blade_dept d ON u.dept_id = d.id and d.is_deleted = 0
+        LEFT JOIN blade_post p ON u.post_id = p.id and p.is_deleted = 0
+        LEFT JOIN blade_dict dict ON dict.code ='post_category' and dict.dict_key=p.category and dict.is_deleted = 0
         WHERE
-        p.is_deleted = 0
-        <if test="entity.personName!=null">
-            and p.person_name like concat(concat('%', #{entity.personName}), '%')
+        u.tenant_id = #{dto.tenantId} and u.is_deleted = 0
+        <if test="dto.personName!=null">
+            and u.real_name like concat(concat('%', #{dto.personName}), '%')
         </if>
-        <if test="entity.contactPhone!=null">
-            and p.contact_phone like concat(concat('%', #{entity.contactPhone}), '%')
+        <if test="dto.contactPhone!=null">
+            and u.phone like concat(concat('%', #{dto.contactPhone}), '%')
         </if>
-        <if test="entity.orgId!=null">
-            and p.org_id =#{entity.orgId}
+        <if test="dto.deptId!=null">
+            and (u.dept_id =#{dto.deptId} or  FIND_IN_SET(#{dto.deptId},d.ancestors) > 0)
         </if>
-        ORDER BY
-        p.person_name
+        <if test="dto.category!=null">
+            and p.category =#{dto.category}
+        </if>
+        <if test="dto.postId!=null">
+            and  p.id =  #{dto.postId}
+        </if>
+        <if test="dto.roleId!=null">
+            and u.role_id =#{dto.roleId}
+        </if>
+        ORDER BY u.account
     </select>
 
-    <select id="selectAllList" resultMap="servicePersonVOResultMap">
+
+    <select id="selectServicePersonPage" resultMap="servicePersonVOResultMap">
         SELECT
-        p.*,
-        r.role_name,d.dept_name,u.real_name,u.account,u.phone,u.dept_id
+        u.*,r.role_name,d.dept_name,p.post_name,dict.dict_value
         FROM
-        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
+        blade_user u
+        LEFT JOIN blade_role r ON u.role_id = r.id and r.is_deleted = 0
         LEFT JOIN blade_dept d ON u.dept_id = d.id and d.is_deleted = 0
+        LEFT JOIN blade_post p ON u.post_id = p.id and p.is_deleted = 0
+        LEFT JOIN blade_dict dict ON dict.code ='post_category' and dict.dict_key=p.category and dict.is_deleted = 0
         WHERE
-        u.is_deleted = 0
-        <if test="entity.personName!=null">
-            and p.person_name like concat(concat('%', #{entity.personName}), '%')
+        u.tenant_id = #{dto.tenantId} and u.is_deleted = 0 and u.id != #{dto.id}
+        <if test="dto.personName!=null">
+            and u.real_name like concat(concat('%', #{dto.personName}), '%')
         </if>
-        <if test="entity.contactPhone!=null">
-            and p.contact_phone like concat(concat('%', #{entity.contactPhone}), '%')
+        <if test="dto.contactPhone!=null">
+            and u.phone like concat(concat('%', #{dto.contactPhone}), '%')
         </if>
-        <if test="entity.orgId!=null">
-            and u.dept_id =#{entity.orgId}
+        <if test="dto.deptId!=null">
+            and (u.dept_id =#{dto.deptId} or  FIND_IN_SET(#{dto.deptId},d.ancestors) > 0)
         </if>
-        ORDER BY
-        u.name,u.real_name
+        <if test="dto.category!=null">
+            and p.category =#{dto.category}
+        </if>
+        <if test="dto.postId!=null">
+            and  p.id =  #{dto.postId}
+        </if>
+        <if test="dto.roleId!=null">
+            and u.role_id =#{dto.roleId}
+        </if>
+        ORDER BY u.account
+    </select>
+
+    <select id="getPersonServiceInfo" resultMap="servicePersonResultMap">
+        SELECT
+        u.*
+        FROM
+        blade_user u
+        WHERE
+        u.is_deleted = 0 and u.id = #{dto.id}
+        limit 1
     </select>
 </mapper>

+ 25 - 2
src/main/java/org/springblade/modules/baseinfo/servicePerson/service/IServicePersonService.java

@@ -8,9 +8,13 @@ package org.springblade.modules.baseinfo.servicePerson.service;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.modules.baseinfo.servicePerson.dto.ServicePersonDTO;
 import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
+import org.springblade.modules.baseinfo.servicePerson.vo.OrgServicePersonVO;
 import org.springblade.modules.baseinfo.servicePerson.vo.ServicePersonVO;
+import org.springblade.modules.system.entity.User;
 
 import java.util.List;
 
@@ -23,6 +27,25 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 public interface IServicePersonService extends BaseService<ServicePersonEntity> {
-	IPage<ServicePersonVO> selectPage(IPage<ServicePersonVO> page, ServicePersonEntity entity);
-	List<ServicePersonVO> selectAllList(ServicePersonEntity entity);
+	/**
+	 * 查询用户信息
+	 * @param page
+	 * @param dto
+	 * @return
+	 */
+	IPage<ServicePersonVO> selectPage(IPage<ServicePersonVO> page, ServicePersonDTO dto);
+	/**
+	 * 查询运维人员信息
+	 * @param page
+	 * @param dto
+	 * @return
+	 */
+	IPage<ServicePersonVO> selectServicePersonPage(IPage page, ServicePersonDTO dto);
+
+	/**
+	 * 查询详情
+	 * @param dto
+	 * @return
+	 */
+	ServicePersonEntity getPersonServiceInfo(ServicePersonDTO dto);
 }

+ 10 - 5
src/main/java/org/springblade/modules/baseinfo/servicePerson/service/impl/ServicePersonServiceImpl.java

@@ -8,13 +8,13 @@ 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.dto.ServicePersonDTO;
 import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
 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;
 
-import java.util.List;
 
 
 /***
@@ -30,12 +30,17 @@ public class ServicePersonServiceImpl extends BaseServiceImpl<ServicePersonMappe
 
 
 	@Override
-	public IPage<ServicePersonVO> selectPage(IPage<ServicePersonVO> page, ServicePersonEntity entity) {
-		return this.baseMapper.selectPage(page,entity);
+	public IPage<ServicePersonVO> selectPage(IPage<ServicePersonVO> page, ServicePersonDTO dto) {
+		return this.baseMapper.selectPage(page,dto);
 	}
 
 	@Override
-	public List<ServicePersonVO> selectAllList(ServicePersonEntity entity) {
-		return this.baseMapper.selectAllList(entity);
+	public IPage<ServicePersonVO> selectServicePersonPage(IPage page, ServicePersonDTO dto) {
+		return this.baseMapper.selectServicePersonPage(page,dto);
+	}
+
+	@Override
+	public ServicePersonEntity getPersonServiceInfo(ServicePersonDTO dto) {
+		return this.baseMapper.getPersonServiceInfo(dto);
 	}
 }

+ 2 - 2
src/main/java/org/springblade/modules/baseinfo/servicePerson/vo/OrgServicePersonVO.java

@@ -9,7 +9,7 @@ package org.springblade.modules.baseinfo.servicePerson.vo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity;
+import org.springblade.modules.system.entity.User;
 
 
 /***
@@ -22,7 +22,7 @@ import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class ServicePersonVO extends ServicePersonEntity {
+public class OrgServicePersonVO extends User {
 	/**
 	 * 角色名称
 	 */

+ 45 - 1
src/main/java/org/springblade/modules/baseinfo/servicePerson/vo/ServicePersonVO.java

@@ -23,6 +23,33 @@ import org.springblade.modules.baseinfo.servicePerson.entity.ServicePersonEntity
 @Data
 @EqualsAndHashCode(callSuper = true)
 public class ServicePersonVO extends ServicePersonEntity {
+
+	/**
+	 * 帐号
+	 */
+	@ApiModelProperty(value = "帐号")
+	private String userAccount;
+
+	/**
+	 * 运维人员名称
+	 */
+	@ApiModelProperty(value = "运维人员名称")
+	private String personName;
+
+	/**
+	 * 联系电话
+	 */
+	@ApiModelProperty(value = "联系电话")
+	private String contactPhone;
+
+	/**
+	 * 邮箱
+	 */
+	@ApiModelProperty(value = "邮箱")
+	private String mail;
+
+
+
 	/**
 	 * 角色名称
 	 */
@@ -33,6 +60,23 @@ public class ServicePersonVO extends ServicePersonEntity {
 	 * 机构名称
 	 */
 	@ApiModelProperty(value = "机构名称")
-	private String orgName;
+	private String deptName;
+
+	/**
+	 * 岗位名称
+	 */
+	@ApiModelProperty(value = "岗位名称")
+	private String postName;
 
+	/**
+	 * 岗位类型
+	 */
+	@ApiModelProperty(value = "岗位类型")
+	private String postType;
+
+	/**
+	 * 机构ID
+	 */
+	@ApiModelProperty(value = "机构ID")
+	Long deptId;
 }

+ 24 - 15
src/main/java/org/springblade/modules/baseinfo/servicePerson/wrapper/ServicePersonWrapper.java

@@ -28,27 +28,36 @@ import java.util.Objects;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class ServicePersonWrapper extends BaseEntityWrapper<User, UserVO> {
+public class ServicePersonWrapper extends BaseEntityWrapper<ServicePersonEntity, ServicePersonVO> {
 	public static ServicePersonWrapper build() {
 		return new ServicePersonWrapper();
 	}
 
-	private static IDeptService deptService;
+//	private static IDeptService deptService;
+//
+//	private static IDeptService getDeptService() {
+//		if (deptService == null) {
+//			deptService = SpringUtil.getBean(IDeptService.class);
+//		}
+//		return deptService;
+//	}
 
-	private static IDeptService getDeptService() {
-		if (deptService == null) {
-			deptService = SpringUtil.getBean(IDeptService.class);
-		}
-		return deptService;
+	@Override
+	public ServicePersonVO entityVO(ServicePersonEntity entity) {
+		ServicePersonVO servicePersonVO = Objects.requireNonNull(BeanUtil.copy(entity, ServicePersonVO.class));
+//		Dept dept = getDeptService().getById(Func.toLong(entity.getDeptId()));
+//		if (null != dept) {
+//			servicePersonVO.setDeptName(dept.getDeptName());
+//		}
+		return entityVO(servicePersonVO);
 	}
 
-	@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;
+	public ServicePersonVO entityVO(ServicePersonVO vo) {
+//		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 vo;
 	}
 }

+ 116 - 57
src/main/java/org/springblade/modules/baseinfo/user/controller/OpenUserController.java

@@ -17,15 +17,9 @@ import org.springblade.core.boot.ctrl.BladeController;
 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.region.entity.CustomizeRegionInfoEntity;
-import org.springblade.modules.baseinfo.region.entity.CustomizeRegionOrgBindInfoEntity;
-import org.springblade.modules.baseinfo.region.service.ICustomizeRegionInfoService;
-import org.springblade.modules.baseinfo.region.service.ICustomizeRegionOrgBindInfoService;
 import org.springblade.modules.baseinfo.user.entity.OpenUserEntity;
-import org.springblade.modules.business.desk.entity.NoticeEntity;
-import org.springblade.modules.business.desk.service.INoticeService;
+import org.springblade.modules.baseinfo.user.service.IOpenUserService;
 import org.springblade.modules.system.entity.Dept;
-import org.springblade.modules.system.entity.Region;
 import org.springblade.modules.system.entity.User;
 import org.springblade.modules.system.entity.UserDept;
 import org.springblade.modules.system.service.IDeptService;
@@ -38,8 +32,6 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Date;
-import java.util.LinkedList;
 import java.util.List;
 
 /***
@@ -59,9 +51,8 @@ public class OpenUserController extends BladeController {
 	private final IDeptService deptService;
 	private final IUserDeptService userDeptService;
 	private final IRegionService regionService;
-	private final ICustomizeRegionInfoService customizeRegionInfoService;
-	private final ICustomizeRegionOrgBindInfoService customizeRegionOrgBindInfoService;
-	private final INoticeService noticeService;
+	private final IOpenUserService openUserService;
+
 	/**
 	 * 注册
 	 */
@@ -71,16 +62,52 @@ public class OpenUserController extends BladeController {
 	@Transactional
 	public R openUserReg(@RequestBody OpenUserEntity openUserEntity) {
 		try {
+			if (openUserEntity.getCompanyName()==null){
+				return R.fail("公司名称不能为空");
+			}
+			if (openUserEntity.getPersonName()==null){
+				return R.fail("性名不能为空");
+			}
+			if (openUserEntity.getMail()==null){
+				return R.fail("邮箱不能为空");
+			}
+			if (openUserEntity.getContactPhone()==null){
+				return R.fail("联系手机不能为空");
+			}
+			LambdaQueryWrapper<OpenUserEntity> openUserWrapper = Wrappers.<OpenUserEntity>query().lambda();
+			openUserWrapper.eq(OpenUserEntity::getContactPhone, openUserEntity.getContactPhone());
+			openUserWrapper.eq(OpenUserEntity::getIsDeleted, 0);
+			openUserWrapper.eq(OpenUserEntity::getApproveStatus,0).or().eq(OpenUserEntity::getApproveStatus,1);
+
+			List<OpenUserEntity> openUserEntityList = openUserService.list(openUserWrapper);
+			if (openUserEntityList != null && openUserEntityList.size()>0){
+				return R.fail("请勿重复进行申请");
+			}
+
+//			String account;
+//			if (openUserEntity.getUserAccount()!=null){
+//				account=openUserEntity.getUserAccount();
+//			}else{
+//				account=openUserEntity.getContactPhone();
+//			}
 			LambdaQueryWrapper<User> wrapper = Wrappers.<User>query().lambda();
-			wrapper.eq(User::getAccount, openUserEntity.getUserAccount());
+			wrapper.eq(User::getAccount, openUserEntity.getContactPhone());
 			wrapper.eq(User::getIsDeleted, 0);
-			List<User> list = userService.list(wrapper);
-			if (null != list && list.size() > 0) {
-				return R.fail("帐号已经存在");
-			}
-			if (null == openUserEntity.getRegionCode()){
-				return R.fail("所在区划参数不能为空");
+			List<User> userList = userService.list(wrapper);
+			if (null != userList && userList.size() > 0) {
+				return R.fail("帐号已经存在,请更换一个手机号进行申请");
 			}
+
+		   openUserEntity.setApproveStatus(0);
+
+			openUserService.save(openUserEntity);
+
+
+
+
+//			if (null == openUserEntity.getRegionCode()){
+//				return R.fail("所在区划参数不能为空");
+//			}
 			//创建组织机构
 			Dept parentDept = deptService.getById(BusinessConstant.DEPT_DH_ID);
 			Dept dept = new Dept();
@@ -93,12 +120,12 @@ public class OpenUserController extends BladeController {
 			deptService.save(dept);
             //创建用户
 			User u = new User();
-			u.setAccount(openUserEntity.getUserAccount());
+			u.setAccount(openUserEntity.getContactPhone());
 			u.setPhone(openUserEntity.getContactPhone());
 			u.setEmail(openUserEntity.getMail());
 			u.setName(openUserEntity.getPersonName());
 			u.setRealName(openUserEntity.getPersonName());
-			u.setPassword(DigestUtil.encrypt(openUserEntity.getUserAccount() + BusinessConstant.ACCOUNT_PW_SUFFIX));
+			u.setPassword(DigestUtil.encrypt(openUserEntity.getContactPhone() + BusinessConstant.ACCOUNT_PW_SUFFIX));
 			u.setDeptId(Func.toStr(dept.getId()));
 			u.setRoleId(BusinessConstant.ROLE_ORG_ADMIN_ID);
 			u.setPostId(BusinessConstant.POST_ORG_ADMIN_ID);
@@ -109,45 +136,77 @@ public class OpenUserController extends BladeController {
 			userDept.setUserId(u.getId());
 			userDept.setDeptId(dept.getId());
 			userDeptService.save(userDept);
-			//创建组织机构
-			LambdaQueryWrapper<Region> regionQueryWrapper = Wrappers.<Region>query().lambda();
-			regionQueryWrapper.eq(Region::getCode,openUserEntity.getRegionCode());
-			Region rootRegion =regionService.getOne(regionQueryWrapper);
-			regionQueryWrapper = Wrappers.<Region>query().lambda();
-			regionQueryWrapper.or().eq(Region::getCode,openUserEntity.getRegionCode());
-			regionQueryWrapper.or().likeRight(Region::getAncestors,rootRegion.getAncestors()+","+rootRegion.getCode());
-			regionQueryWrapper.orderByAsc(Region::getCode);
-			List<Region> regionList = regionService.list(regionQueryWrapper);
-            if (null != regionList&&regionList.size()>0){
-				List<CustomizeRegionInfoEntity> regionInfoEntityList=new LinkedList<>();
-				for (Region region:regionList){
-					CustomizeRegionInfoEntity entity=new CustomizeRegionInfoEntity();
-					entity.setDeptId(dept.getId());
-					entity.setAdcd(region.getCode());
-					entity.setAdnm(region.getName());
-                    entity.setParentCode(region.getParentCode());
-                    entity.setAncestors(region.getAncestors());
-					regionInfoEntityList.add(entity);
-				}
-				customizeRegionInfoService.saveBatch(regionInfoEntityList);
-			}
-			CustomizeRegionOrgBindInfoEntity regionOrgBindInfoEntity=new CustomizeRegionOrgBindInfoEntity();
-			regionOrgBindInfoEntity.setAdcd(openUserEntity.getRegionCode());
-			regionOrgBindInfoEntity.setDeptId(dept.getId());
-			customizeRegionOrgBindInfoService.save(regionOrgBindInfoEntity);
-
-			//消息通知
-			NoticeEntity noticeEntity=new NoticeEntity();
-			noticeEntity.setDeptId(dept.getId());
-			noticeEntity.setTitle("帐号注册成功");
-			noticeEntity.setContent("欢迎使用智能运维系统,系统操作介绍说明请详见【辅助业务】菜单中的【用户使用手册】!");
-			noticeEntity.setReleaseTime(new Date());
-			noticeEntity.setCategory(1);
-			noticeService.save(noticeEntity);
+//			//创建组织机构
+//			LambdaQueryWrapper<Region> regionQueryWrapper = Wrappers.<Region>query().lambda();
+//			regionQueryWrapper.eq(Region::getCode,openUserEntity.getRegionCode());
+//			Region rootRegion =regionService.getOne(regionQueryWrapper);
+//			regionQueryWrapper = Wrappers.<Region>query().lambda();
+//			regionQueryWrapper.or().eq(Region::getCode,openUserEntity.getRegionCode());
+//			regionQueryWrapper.or().likeRight(Region::getAncestors,rootRegion.getAncestors()+","+rootRegion.getCode());
+//			regionQueryWrapper.orderByAsc(Region::getCode);
+//			List<Region> regionList = regionService.list(regionQueryWrapper);
+//            if (null != regionList&&regionList.size()>0){
+//				List<CustomizeRegionInfoEntity> regionInfoEntityList=new LinkedList<>();
+//				for (Region region:regionList){
+//					CustomizeRegionInfoEntity entity=new CustomizeRegionInfoEntity();
+//					entity.setDeptId(dept.getId());
+//					entity.setAdcd(region.getCode());
+//					entity.setAdnm(region.getName());
+//                    entity.setParentCode(region.getParentCode());
+//                    entity.setAncestors(region.getAncestors());
+//					regionInfoEntityList.add(entity);
+//				}
+//				customizeRegionInfoService.saveBatch(regionInfoEntityList);
+//			}
+//			CustomizeRegionOrgBindInfoEntity regionOrgBindInfoEntity=new CustomizeRegionOrgBindInfoEntity();
+//			regionOrgBindInfoEntity.setAdcd(openUserEntity.getRegionCode());
+//			regionOrgBindInfoEntity.setDeptId(dept.getId());
+//			customizeRegionOrgBindInfoService.save(regionOrgBindInfoEntity);
+//
+//			//消息通知
+//			NoticeEntity noticeEntity=new NoticeEntity();
+//			noticeEntity.setDeptId(dept.getId());
+//			noticeEntity.setTitle("帐号注册成功");
+//			noticeEntity.setContent("欢迎使用智能运维系统,系统操作介绍说明请详见【辅助业务】菜单中的【用户使用手册】!");
+//			noticeEntity.setReleaseTime(new Date());
+//			noticeEntity.setCategory(1);
+//			noticeService.save(noticeEntity);
+
+
+//			String title = "";
+//			if (null != rtuName) {
+//				title += rtuName;
+//			}
+//			if (warningInfo.getWarningStatus().equals(GBConstants.WARNING_STATUS_HAPPEN)) {
+//				title += "<故障预警>";
+//			} else {
+//				title += "<故障恢复>";
+//			}
+//			String mailText = "<div>设备名称:";
+//			if (null != rtuName) {
+//				mailText += "<span>" + rtuName + "</span>";
+//			}
+//			mailText += "</div>";
+//			mailText += "<div>项目名称:";
+//			if (null != projectName) {
+//				mailText += projectName;
+//			}
+//			mailText += "</div>";
+//			mailText += "<div>机构名称:";
+//			if (null != orgName) {
+//				mailText += orgName;
+//			}
+//			mailText += "</div>";
+//			mailText += "<div>预警信息:" + warningInfo.getWarningInfo();
+//			mailText += "</div>";
+//			MailHelp.sendMail(toMail, title, mailText);
+
+			return R.success("帐号申请已注册成功");
+
 		} catch (Exception e) {
 			e.printStackTrace();
 			throw new RuntimeException("注册失败");
 		}
-		return R.success("注册成功");
+
 	}
 }

+ 25 - 10
src/main/java/org/springblade/modules/baseinfo/user/entity/OpenUserEntity.java

@@ -6,8 +6,15 @@
  */
 package org.springblade.modules.baseinfo.user.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/2/2
@@ -18,7 +25,9 @@ import lombok.Data;
  * Remark:认为有必要的其他信息
  */
 @Data
-public class OpenUserEntity {
+@EqualsAndHashCode(callSuper = true)
+@TableName("base_open_user_info")
+public class OpenUserEntity extends BaseEntity {
 
 	/**
 	 * 人员名称
@@ -32,12 +41,6 @@ public class OpenUserEntity {
 	@ApiModelProperty(value = "公司名称")
 	private String companyName;
 
-	/**
-	 * 帐号
-	 */
-	@ApiModelProperty(value = "帐号")
-	private String userAccount;
-
 	/**
 	 * 联系电话
 	 */
@@ -51,8 +54,20 @@ public class OpenUserEntity {
 	private String mail;
 
 	/**
-	 * 组织机构代码
+	 * 审批时间
+	 */
+	@ApiModelProperty(value = "审批时间")
+	@DateTimeFormat(
+			pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+			pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
+	)
+	private Date approveTime;
+
+	/**
+	 * 审批状态
 	 */
-	@ApiModelProperty(value = "组织机构代码")
-	private String regionCode;
+	@ApiModelProperty(value = "审批状态")
+	private Integer approveStatus;
 }

+ 5 - 2
src/main/java/org/springblade/modules/baseinfo/user/mapper/OpenUserMapper.java

@@ -6,7 +6,10 @@
  */
 package org.springblade.modules.baseinfo.user.mapper;
 
-/*** 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.modules.baseinfo.user.entity.OpenUserEntity;
+
+/***
  * Date:2023/6/14
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
@@ -14,5 +17,5 @@ package org.springblade.modules.baseinfo.user.mapper;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class OpenUserMapper {
+public interface OpenUserMapper  extends BaseMapper<OpenUserEntity> {
 }

+ 8 - 120
src/main/java/org/springblade/modules/baseinfo/user/mapper/OpenUserMapper.xml

@@ -1,127 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.springblade.modules.business.rtumanage.mapper.RtuManageMapper">
+<mapper namespace="org.springblade.modules.baseinfo.user.mapper.OpenUserMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="rtuStatusResultMap" type="org.springblade.modules.business.rtumanage.entity.RtuStatusEntity">
-        <result column="rtu_code" property="rtuCode"/>
-        <result column="run_status_id" property="runStatusId"/>
-        <result column="last_up_time" property="lastUpTime"/>
+    <resultMap id="openUserResultMap" type="org.springblade.modules.baseinfo.user.entity.OpenUserEntity">
+        <result column="contact_phone" property="contactPhone"/>
+        <result column="person_name" property="personName"/>
+        <result column="company_name" property="companyName"/>
+        <result column="mail" property="mail"/>
+        <result column="approve_time" property="approveTime"/>
+        <result column="approve_status" property="approveStatus"/>
     </resultMap>
 
-    <!-- 通用查询映射结果 -->
-    <resultMap id="rtuStatusVOResultMap" type="org.springblade.modules.business.rtumanage.vo.RtuStatusVO">
-        <result column="run_status_id" property="runStatusId"/>
-        <result column="last_up_time" property="lastUpTime"/>
-        <result column="rtu_code" property="rtuCode"/>
-        <result column="rtu_name" property="rtuName"/>
-        <result column="lng" property="lng"/>
-        <result column="lat" property="lat"/>
-        <result column="sim_id" property="simId"/>
-        <result column="rtu_kinds" property="rtuKinds"/>
-        <result column="location_desc" property="locationDesc"/>
-        <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"/>
-        <result column="ad_city" property="adCity"/>
-        <result column="ad_dist" property="adDist"/>
-        <result column="rtu_brand" property="rtuBrand"/>
-        <result column="rtu_model" property="rtuModel"/>
-        <result column="rtu_replace_date" property="rtuReplaceDate"/>
-        <result column="rain_sensor_brand" property="rainSensorBrand"/>
-        <result column="rain_sensor_model" property="rainSensorModel"/>
-        <result column="rain_sensor_replace_date" property="rainSensorReplaceDate"/>
-        <result column="water_sensor_brand" property="waterSensorBrand"/>
-        <result column="water_sensor_model" property="waterSensorModel"/>
-        <result column="water_sensor_replace_date" property="waterSensorReplaceDate"/>
-        <result column="ground_sensor_brand" property="groundSensorBrand"/>
-        <result column="ground_sensor_model" property="groundSensorModel"/>
-        <result column="ground_sensor_replace_date" property="groundSensorReplaceDate"/>
-        <result column="battery_model" property="batteryModel"/>
-        <result column="battery_replace_date" property="batteryReplaceDate"/>
-        <result column="sun_power_model" property="sunPowerModel"/>
-        <result column="network_sim_id" property="networkSimId"/>
-        <result column="network_payer" property="networkPayer"/>
-        <result column="network_pay_end_date" property="networkPayEndDate"/>
-        <result column="is_satellite" property="isSatellite"/>
-        <result column="satellite_model" property="satelliteModel"/>
-    </resultMap>
-
-
-    <select id="selectPage" resultMap="rtuStatusVOResultMap">
-        SELECT
-        d.*, n.run_status_id,n.last_up_time
-        FROM
-        rtu_info d
-        LEFT JOIN  rtu_status n ON n.rtu_code = d.rtu_code and  n.is_deleted = 0
-        LEFT JOIN rtu_warning w ON w.rtu_code = d.rtu_code and w.is_deleted = 0 and w.warning_kind=1
-        LEFT JOIN  data_ad_cd_b a ON a.adcd = d.ad_code and a.is_deleted=0
-        WHERE
-        d.is_deleted = 0
-        <if test="rtuInfoDTO.rtuName!=null">
-            and d.rtu_name like concat(concat('%', #{rtuInfoDTO.rtuName}), '%')
-        </if>
-        <if test="rtuInfoDTO.rtuCode!=null">
-            and d.rtu_code like concat(concat('%', #{rtuInfoDTO.rtuCode}), '%')
-        </if>
-        <if test="rtuInfoDTO.isRain!=null">
-            and d.is_rain = #{rtuInfoDTO.isRain}
-        </if>
-        <if test="rtuInfoDTO.isRiver!=null">
-            and d.is_river = #{rtuInfoDTO.isRiver}
-        </if>
-        <if test="rtuInfoDTO.isRes!=null">
-            and d.is_res = #{rtuInfoDTO.isRes}
-        </if>
-        <if test="rtuInfoDTO.isGround!=null">
-            and d.is_ground = #{rtuInfoDTO.isGround}
-        </if>
-        <if test="rtuInfoDTO.isVideo!=null">
-            and d.is_video = #{rtuInfoDTO.isVideo}
-        </if>
-        <if test="rtuInfoDTO.adCode!=null">
-            and (d.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 IF(isnull(n.run_status_id),1,0) ,n.run_status_id desc,w.warning_kind desc, d.rtu_code asc
-    </select>
-
-    <select id="selectWarnPage" resultMap="rtuStatusVOResultMap">
-        SELECT
-        d.*, n.run_status_id,n.last_up_time
-        FROM
-        rtu_info d
-        LEFT JOIN  rtu_status n ON n.rtu_code = d.rtu_code and n.is_deleted = 0
-        LEFT JOIN  rtu_warning w ON w.rtu_code = d.rtu_code and w.is_deleted = 0
-        LEFT JOIN  data_ad_cd_b a ON a.adcd = d.ad_code and a.is_deleted=0
-        WHERE
-        d.is_deleted = 0
-        and w.warning_kind = #{rtuInfoDTO.warnKind}
-        <if test="rtuInfoDTO.rtuName!=null">
-            and d.rtu_name like concat(concat('%', #{rtuInfoDTO.rtuName}), '%')
-        </if>
-        <if test="rtuInfoDTO.rtuCode!=null">
-            and d.rtu_code like concat(concat('%', #{rtuInfoDTO.rtuCode}), '%')
-        </if>
-        <if test="rtuInfoDTO.isRain!=null">
-            and d.is_rain = #{rtuInfoDTO.isRain}
-        </if>
-        <if test="rtuInfoDTO.isRiver!=null">
-            and d.is_river = #{rtuInfoDTO.isRiver}
-        </if>
-        <if test="rtuInfoDTO.isRes!=null">
-            and d.is_res = #{rtuInfoDTO.isRes}
-        </if>
-        <if test="rtuInfoDTO.isGround!=null">
-            and d.is_ground = #{rtuInfoDTO.isGround}
-        </if>
-        <if test="rtuInfoDTO.isVideo!=null">
-            and d.is_video = #{rtuInfoDTO.isVideo}
-        </if>
-        <if test="rtuInfoDTO.adCode!=null">
-            and (d.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 IF(isnull(n.run_status_id),1,0) ,n.run_status_id desc, d.rtu_code asc
-    </select>
 </mapper>

+ 5 - 1
src/main/java/org/springblade/modules/baseinfo/user/service/IOpenUserService.java

@@ -1,4 +1,8 @@
 package org.springblade.modules.baseinfo.user.service;
 
-public interface IOpenUserService {
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.modules.baseinfo.user.entity.OpenUserEntity;
+
+
+public interface IOpenUserService extends BaseService<OpenUserEntity> {
 }

+ 11 - 2
src/main/java/org/springblade/modules/baseinfo/user/service/impl/OpenUserServiceImpl.java

@@ -6,7 +6,14 @@
  */
 package org.springblade.modules.baseinfo.user.service.impl;
 
-/*** 
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.modules.baseinfo.user.entity.OpenUserEntity;
+import org.springblade.modules.baseinfo.user.mapper.OpenUserMapper;
+import org.springblade.modules.baseinfo.user.service.IOpenUserService;
+import org.springframework.stereotype.Service;
+
+/***
  * Date:2023/6/14
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
@@ -14,5 +21,7 @@ package org.springblade.modules.baseinfo.user.service.impl;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class OpenUserServiceImpl {
+@Slf4j
+@Service
+public class OpenUserServiceImpl extends BaseServiceImpl<OpenUserMapper, OpenUserEntity> implements IOpenUserService {
 }

+ 38 - 5
src/main/java/org/springblade/modules/baseinfo/warn/controller/WarnSettingController.java

@@ -4,15 +4,48 @@
  * 项目名称: 大恒泰山系统
  * 创建日期:2023/10/11
  */
-package org.springblade.modules.business.warning.controller;
+package org.springblade.modules.baseinfo.warn.controller;
 
-/*** 
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+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.core.tool.utils.Func;
+import org.springblade.modules.baseinfo.warn.entity.WarnSettingEntity;
+import org.springblade.modules.baseinfo.warn.service.IWarnSettingService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/***
  * Date:2023/10/11
- * Title:文件所属模块(必须填写)
- * Description:对本文件的详细描述,原则上不能少于30字
+ * Title:预警配置管理模块
+ * Description:按机构进行预警配置
  * @author dylan
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class WarnSettingController {
+@RestController
+@RequestMapping("galaxy-business/base/warn/setting")
+@AllArgsConstructor
+@Api(value = "预警配置管理模块", tags = "各机构预警配置功能")
+public class WarnSettingController extends BladeController {
+    private final IWarnSettingService warnSettingService;
+
+    @GetMapping("/detail")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "详情", notes = "")
+    public R<WarnSettingEntity> detail(WarnSettingEntity dto) {
+        BladeUser user = AuthUtil.getUser();
+        if (dto.getOrgId() == null) {
+            dto.setOrgId(Func.toLong(user.getDeptId()));
+        }
+        WarnSettingEntity detail = warnSettingService.getOne(Condition.getQueryWrapper(dto));
+        return R.data(detail);
+    }
 }

+ 8 - 2
src/main/java/org/springblade/modules/baseinfo/warn/dto/WarnSettingDTO.java

@@ -6,7 +6,11 @@
  */
 package org.springblade.modules.baseinfo.warn.dto;
 
-/*** 
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.modules.baseinfo.warn.entity.WarnSettingEntity;
+
+/***
  * Date:2023/10/11
  * Title:文件所属模块(必须填写)
  * Description:对本文件的详细描述,原则上不能少于30字
@@ -14,5 +18,7 @@ package org.springblade.modules.baseinfo.warn.dto;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public class WarnSettingDTO {
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WarnSettingDTO extends WarnSettingEntity {
 }

+ 1 - 1
src/main/java/org/springblade/modules/baseinfo/warn/entity/WarnSettingEntity.java

@@ -4,7 +4,7 @@
  * 项目名称: 大恒泰山系统
  * 创建日期:2022/8/24
  */
-package org.springblade.modules.business.warning.entity;
+package org.springblade.modules.baseinfo.warn.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
src/main/java/org/springblade/modules/baseinfo/warn/mapper/WarnSettingMapper.java

@@ -4,7 +4,7 @@
  * 项目名称: 大恒泰山系统
  * 创建日期:2023/4/23
  */
-package org.springblade.modules.business.warning.mapper;
+package org.springblade.modules.baseinfo.warn.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springblade.modules.baseinfo.warn.entity.WarnSettingEntity;

+ 1 - 1
src/main/java/org/springblade/modules/baseinfo/warn/mapper/WarnSettingMapper.xml

@@ -1,6 +1,6 @@
 <?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.warning.mapper.WarnSettingMapper">
+<mapper namespace="org.springblade.modules.baseinfo.warn.mapper.WarnSettingMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="rtuWarnSettingEntityResultMap"

+ 1 - 1
src/main/java/org/springblade/modules/baseinfo/warn/service/IWarnSettingService.java

@@ -18,5 +18,5 @@ import org.springblade.modules.baseinfo.warn.entity.WarnSettingEntity;
  * @version 1.0
  * Remark:认为有必要的其他信息
  */
-public interface IRtuWarnSettingService extends BaseService<WarnSettingEntity> {
+public interface IWarnSettingService extends BaseService<WarnSettingEntity> {
 }

+ 3 - 3
src/main/java/org/springblade/modules/baseinfo/warn/service/impl/WarnSettingServiceImpl.java

@@ -9,8 +9,8 @@ package org.springblade.modules.baseinfo.warn.service.impl;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.modules.baseinfo.warn.entity.WarnSettingEntity;
-import org.springblade.modules.business.warning.mapper.WarnSettingMapper;
-import org.springblade.modules.baseinfo.warn.service.IRtuWarnSettingService;
+import org.springblade.modules.baseinfo.warn.mapper.WarnSettingMapper;
+import org.springblade.modules.baseinfo.warn.service.IWarnSettingService;
 import org.springframework.stereotype.Service;
 
 /***
@@ -23,5 +23,5 @@ import org.springframework.stereotype.Service;
  */
 @Slf4j
 @Service
-public class RtuWarnSettingServiceImpl extends BaseServiceImpl<WarnSettingMapper, WarnSettingEntity> implements IRtuWarnSettingService {
+public class WarnSettingServiceImpl extends BaseServiceImpl<WarnSettingMapper, WarnSettingEntity> implements IWarnSettingService {
 }

+ 697 - 604
src/main/java/org/springblade/modules/business/check/order/controller/RtuCheckOrderController.java

@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
+import org.springblade.common.cache.DictBizCache;
 import org.springblade.constant.BusinessConstant;
 import org.springblade.constant.DictBusinessConstant;
 import org.springblade.core.boot.ctrl.BladeController;
@@ -37,8 +38,11 @@ import org.springblade.modules.business.check.order.vo.CheckOrderCountVO;
 import org.springblade.modules.business.check.order.vo.CheckOrderInfoVO;
 import org.springblade.modules.business.check.order.vo.OrgCheckOrderCountVO;
 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.business.data.entity.RtuDataRainEntity;
 import org.springblade.modules.business.data.entity.RtuDataRiverEntity;
 import org.springblade.modules.business.data.entity.RtuDataRsvrEntity;
@@ -69,612 +73,701 @@ import java.util.*;
  * Remark:认为有必要的其他信息
  */
 @RestController
-@RequestMapping("galaxy-business/rtu/check/order")
+@RequestMapping("galaxy-business/order")
 @RequiredArgsConstructor
 @Api(value = "测站设备故障工单管理模块", tags = "测站设备故障工单管理模块")
 public class RtuCheckOrderController extends BladeController {
 
-	private final IRtuCheckOrderService rtuCheckOrderService;
-	private final IRtuOrderProcessService rtuOrderProcessService;
-	private final IRtuWarningService rtuWarningService;
-	private final IDictBizService dictBizService;
-	private final IRtuManageService rtuManageService;
-	private final IUserService userService;
-	private final IDeptService deptService;
-	private final IRtuBaseInfoService rtuBaseInfoService;
-	private final IRtuDataRainService rtuDataRainService;
-	private final IRtuDataRiverService rtuDataRiverService;
-	private final IRtuDataRsvrService rtuDataRsvrService;
-	private final IBaseInfoDictService baseInfoDictService;
-	private final IDeptRegionService deptRegionService;
-	private final ICheckOrderSettingService checkOrderSettingService;
-
-	/**
-	 * 工单查询,分页
-	 */
-	@GetMapping("/page")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "adCode", value = "行政区划编码", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "orderConfirm", value = "是否确认", paramType = "query", dataType = "int"),
-		@ApiImplicitParam(name = "orderClose", value = "是否关闭", paramType = "query", dataType = "int"),
-		@ApiImplicitParam(name = "servicePersonId", value = "运维人员", paramType = "query", dataType = "long"),
-		@ApiImplicitParam(name = "deptId", value = "部门ID", paramType = "query", dataType = "long"),
-		@ApiImplicitParam(name = "warnKind", value = "异常类型", paramType = "query", dataType = "int")
-	})
-	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "分页", notes = "传入实体类CheckOrderInfoDTO")
-	public R<IPage<CheckOrderInfoVO>> page(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO, Query query) {
-		BladeUser user = AuthUtil.getUser();
-		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 {
-			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());
-				 }
-			}
-		}
-		if (checkOrderInfoDTO.getWarnKind()!=null){
-			IPage<CheckOrderInfoVO> pages = rtuCheckOrderService.selectWarnPage(Condition.getPage(query), checkOrderInfoDTO);
-			List<CheckOrderInfoVO> list = pages.getRecords();
-			for (CheckOrderInfoVO v : list) {
-				RtuCheckOrderWrapper.build().entityVO(v);
-			}
-			return R.data(pages);
-		}else{
-			IPage<CheckOrderInfoVO> pages = rtuCheckOrderService.selectPage(Condition.getPage(query), checkOrderInfoDTO);
-			List<CheckOrderInfoVO> list = pages.getRecords();
-			for (CheckOrderInfoVO v : list) {
-				RtuCheckOrderWrapper.build().entityVO(v);
-			}
-			return R.data(pages);
-		}
-	}
-
-	/**
-	 * 我的工单查询,分页
-	 */
-	@GetMapping("/my/page")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string")
-	})
-	@ApiOperationSupport(order = 3)
-	@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 = rtuCheckOrderService.selectMyPage(Condition.getPage(query), checkOrderInfoDTO);
-		List<CheckOrderInfoVO> list = pages.getRecords();
-		for (CheckOrderInfoVO v : list) {
-			RtuCheckOrderWrapper.build().entityVO(v);
-		}
-		return R.data(pages);
-	}
-
-	/**
-	 * 未确认工单列表,不分页,最多返回10条数据
-	 */
-	@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 = "传入实体类CheckOrderInfoDTO")
-	public R<List<CheckOrderInfoVO>> unconfirmOrderList(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO) {
-		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
-			if (checkOrderInfoDTO.getAdCode() == null) {
-				checkOrderInfoDTO.setAdCode(BusinessConstant.REGION_NM_ADCODE);
-			}
-		} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
-			if (checkOrderInfoDTO.getAdCode() == null) {
-				LambdaQueryWrapper<DeptRegionEntity> deptRegionEntityLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
-				deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
-				deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, Func.toLong(user.getDeptId()));
-				DeptRegionEntity deptRegionEntity = deptRegionService.getOne(deptRegionEntityLambdaQueryWrapper);
-				checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
-			}
-		}
-		List<CheckOrderInfoVO> list = rtuCheckOrderService.unconfirmOrderList(checkOrderInfoDTO);
-		for (CheckOrderInfoVO v : list) {
-			RtuCheckOrderWrapper.build().entityVO(v);
-		}
-		return R.data(list);
-	}
-
-	@GetMapping("/confirm/delay/page")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "adCode", value = "行政区划编码", paramType = "query", dataType = "string"),
-	})
-	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "分页", notes = "传入实体类CheckOrderInfoDTO")
-	public R<IPage<CheckOrderInfoVO>> unconfirmDelayPage(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO, Query query) {
-		BladeUser user = AuthUtil.getUser();
-		if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
-			if (checkOrderInfoDTO.getAdCode() == null) {
-				checkOrderInfoDTO.setAdCode(BusinessConstant.REGION_NM_ADCODE);
-			}
-		} else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
-			if (checkOrderInfoDTO.getAdCode() == null) {
-				LambdaQueryWrapper<DeptRegionEntity> deptRegionEntityLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
-				deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
-				deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, Func.toLong(user.getDeptId()));
-				DeptRegionEntity deptRegionEntity = deptRegionService.getOne(deptRegionEntityLambdaQueryWrapper);
-				checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
-			}
-		}
-		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.setOrderComfireDelayTime(120);
-		}
-
-		IPage<CheckOrderInfoVO> pages = rtuCheckOrderService.selectConfirmDelayPage(Condition.getPage(query), checkOrderInfoDTO);
-		List<CheckOrderInfoVO> list = pages.getRecords();
-		for (CheckOrderInfoVO v : list) {
-			RtuCheckOrderWrapper.build().entityVO(v);
-		}
-		return R.data(pages);
-	}
-
-	/**
-	 * 详情
-	 */
-	@GetMapping("/detail")
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入实体类CheckOrderInfoEntity")
-	public R<CheckOrderInfoVO> detail(CheckOrderInfoEntity 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);
-		vo.setRtuName(rtuInfoEntity.getRtuName());
-		vo.setAdCity(rtuInfoEntity.getAdCity());
-		vo.setAdDist(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 = rtuManageService.getOne(statusWwrapper);
-		if (null != statusEntity) {
-			vo.setLastUpTime(statusEntity.getLastUpTime());
-		}
-		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 = 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 = 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 = 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);
-	}
-
-	/**
-	 * 新增
-	 */
-	@PostMapping("/save")
-	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "新增", notes = "传入实体类CheckOrderInfoEntity")
-	public R save(@RequestBody CheckOrderInfoEntity checkOrderInfoEntity) {
-		DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CREATE.getCode());
-		checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
-		rtuCheckOrderService.save(checkOrderInfoEntity);
-		OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
-		processInfoEntity.setOrderId(checkOrderInfoEntity.getId());
-		processInfoEntity.setOrderStatusKey(checkOrderInfoEntity.getOrderStatusKey());
-		processInfoEntity.setProcessDesc(checkOrderInfoEntity.getOrderDesc());
-		return R.status(rtuOrderProcessService.save(processInfoEntity));
-	}
-
-	/**
-	 * 修改
-	 */
-	@PostMapping("/update")
-	@ApiOperationSupport(order = 5)
-	@ApiOperation(value = "修改", notes = "传入实体类CheckOrderInfoEntity")
-	public R update(@RequestBody CheckOrderInfoEntity checkOrderInfoEntity) {
-		return R.status(rtuCheckOrderService.updateById(checkOrderInfoEntity));
-	}
-
-	/**
-	 * 新增或修改
-	 */
-	@PostMapping("/submit")
-	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "新增或修改", notes = "传入实体类CheckOrderInfoEntity")
-	public R submit(@RequestBody CheckOrderInfoEntity 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));
-	}
-
-	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperationSupport(order = 7)
-	@ApiOperation(value = "逻辑删除", notes = "传入ID数组")
-	public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
-		boolean temp = rtuCheckOrderService.deleteLogic(Func.toLongList(ids));
-		return R.status(temp);
-	}
-
-	/**
-	 * 工单关闭
-	 *
-	 * @param checkOrderInfoEntity
-	 * @return
-	 */
-	@PostMapping("/close")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "id", value = "工单ID", paramType = "query", dataType = "long"),
-		@ApiImplicitParam(name = "orderDesc", value = "处理意见", paramType = "query", dataType = "string")
-	})
-	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "工单关闭", notes = "传入实体类CheckOrderInfoEntity")
-	public R orderClose(@ApiIgnore CheckOrderInfoEntity checkOrderInfoEntity) {
-		BladeUser user = AuthUtil.getUser();
-		DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE.getCode());
-		checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
-		CheckOrderInfoEntity detail = this.rtuCheckOrderService.getById(checkOrderInfoEntity.getId());
-		if (null == detail || detail.getOrderClose() == OrderCloseEnum.ACTIVE_CLOSE.getCode()) {
-			return R.status(false);
-		}
-		detail.setOrderStatusKey(checkOrderInfoEntity.getOrderStatusKey());
-		detail.setOrderClose(OrderCloseEnum.ACTIVE_CLOSE.getCode());
-		detail.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
-		detail.setUpdateTime(new Date());
-		detail.setUpdateUser(user.getUserId());
-		rtuCheckOrderService.updateById(detail);
-		OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
-		processInfoEntity.setOrderId(detail.getId());
-		processInfoEntity.setOrderStatusKey(detail.getOrderStatusKey());
-		if (checkOrderInfoEntity.getOrderDesc() != null) {
-			processInfoEntity.setProcessDesc("由用户[" + user.getNickName() + "]人工关闭维修任务,处理意见:" + checkOrderInfoEntity.getOrderDesc());
-		} else {
-			processInfoEntity.setProcessDesc("由用户[" + user.getNickName() + "]人工关闭维修任务");
-		}
-		processInfoEntity.setCreateUser(user.getUserId());
-		processInfoEntity.setUpdateUser(user.getUserId());
-		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.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.rtuWarningService.updateById(warningInfoEntity);
-					}
-					break;
-				}
-			}
-		}
-		RtuStatusEntity rtuStatusEntity = new RtuStatusEntity();
-		rtuStatusEntity.setRunStatusId(EquipmentStatusEnum.STATUS_RUN.getCode());
-		this.rtuManageService.updateRtuStatus(rtuStatusEntity);
-		return R.success("工单关闭已操作成功!");
-	}
-
-	/**
-	 * 查询最新的数据
-	 */
-	@GetMapping("/last/list")
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "分页")
-	public R<List<CheckOrderInfoVO>> lastList() {
-		LambdaQueryWrapper<CheckOrderInfoEntity> wrapper = Wrappers.<CheckOrderInfoEntity>query().lambda();
-		wrapper.orderByDesc(CheckOrderInfoEntity::getUpdateTime);
-		wrapper.last("limit 1");
-		List<CheckOrderInfoEntity> pages = rtuCheckOrderService.list(wrapper);
-		return R.data(RtuCheckOrderWrapper.build().listVO(pages));
-	}
-
-	/**
-	 * 工单确认
-	 *
-	 * @param checkOrderInfoEntity
-	 * @return
-	 */
-	@PostMapping("/confirm")
-	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "工单确认", notes = "传入实体类CheckOrderInfoEntity")
-	public R orderConfirm(@RequestBody CheckOrderInfoEntity checkOrderInfoEntity) {
-		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.rtuCheckOrderService.getById(checkOrderInfoEntity.getId());
-		if (null == detail || null != detail.getOrderConfirmUser()) {
-			return R.status(false);
-		}
-		detail.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
-		detail.setOrderStatusKey(checkOrderInfoEntity.getOrderStatusKey());
-		detail.setOrderConfirmUser(user.getUserId());
-		detail.setOrderConfirmTime(new Date());
-		detail.setUpdateTime(new Date());
-		detail.setContactUser(userInfo.getId());
-		detail.setContactPhone(userInfo.getPhone());
-		rtuCheckOrderService.updateById(detail);
-		OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
-		processInfoEntity.setOrderId(checkOrderInfoEntity.getId());
-		processInfoEntity.setOrderStatusKey(checkOrderInfoEntity.getOrderStatusKey());
-		processInfoEntity.setProcessDesc("维修任务由[" + userInfo.getRealName() + "]确认");
-		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")
-	public R orderChange(@RequestBody CheckOrderInfoDTO checkOrderInfoDTO) {
-		CheckOrderInfoEntity detail = this.rtuCheckOrderService.getById(checkOrderInfoDTO.getId());
-		if (null == detail) {
-			return R.status(false);
-		}
-		BladeUser user = AuthUtil.getUser();
-		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());
-			detail.setOrderConfirmUser(user.getUserId());
-			detail.setOrderConfirmTime(new Date());
-		}
-		User userInfo = userService.getById(checkOrderInfoDTO.getServicePersonId());
-		OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
-		processInfoEntity.setOrderId(detail.getId());
-		processInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
-		processInfoEntity.setProcessDesc("维修任务指派给[" + userInfo.getRealName() + "]");
-		rtuOrderProcessService.save(processInfoEntity);
-		detail.setUpdateTime(new Date());
-		detail.setContactUser(userInfo.getId());
-		detail.setContactPhone(userInfo.getPhone());
-		rtuCheckOrderService.updateById(detail);
-		return R.status(rtuCheckOrderService.updateById(detail));
-	}
-
-
-	/**
-	 * 工单统计
-	 *
-	 * @return
-	 */
-	@GetMapping("/statistics")
-	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "统计表格")
-	public R<List<CheckOrderCountVO>> orderStatistics() {
-		BladeUser user = AuthUtil.getUser();
-		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);
-		}
-		return R.data(countList);
-
-
-	}
-
-	/**
-	 * 按机构统计工单
-	 *
-	 * @return
-	 */
-	@GetMapping("/org/statistics")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "adCode", value = "行政区划编码", paramType = "query", dataType = "string"),
-	})
-	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "统计表格")
-	public R<List<OrgCheckOrderCountVO>> orgOrderStatistics() {
-		BladeUser user = AuthUtil.getUser();
-		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.setDeptId(dept.getId());
-			orgCheckOrderCountVO.setOrgName(dept.getDeptName());
-			CheckOrderInfoDTO checkOrderInfoDTO = new 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 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);
-	}
+    private final IRtuCheckOrderService rtuCheckOrderService;
+    private final IRtuOrderProcessService rtuOrderProcessService;
+    private final IRtuWarningService rtuWarningService;
+    private final IDictBizService dictBizService;
+    private final IRtuManageService rtuManageService;
+    private final IUserService userService;
+    private final IDeptService deptService;
+    private final IRtuBaseInfoService rtuBaseInfoService;
+    private final IRtuDataRainService rtuDataRainService;
+    private final IRtuDataRiverService rtuDataRiverService;
+    private final IRtuDataRsvrService rtuDataRsvrService;
+    private final IBaseInfoDictService baseInfoDictService;
+    private final IDeptRegionService deptRegionService;
+    private final ICheckOrderSettingService checkOrderSettingService;
+
+    /**
+     * 工单查询,分页
+     */
+    @GetMapping("/page")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "adCode", value = "行政区划编码", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "orderConfirm", value = "是否确认", paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "orderClose", value = "是否关闭", paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "servicePersonId", value = "运维人员", paramType = "query", dataType = "long"),
+            @ApiImplicitParam(name = "deptId", value = "部门ID", paramType = "query", dataType = "long"),
+            @ApiImplicitParam(name = "warnKind", value = "异常类型", paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "orderStatusOption", value = "工单查询类型", paramType = "query", dataType = "int")
+    })
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "分页", notes = "传入实体类CheckOrderInfoDTO")
+    public R<IPage<CheckOrderInfoVO>> page(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO, Query query) {
+        if (OrderStatusEnum.STATUS_CONFIRM.getCode().equals(Func.toStr(checkOrderInfoDTO.getOrderStatusOption()))) {
+            DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+            checkOrderInfoDTO.setOrderStatusKey(dictInfoEntity.getId());
+        } else if (OrderStatusEnum.STATUS_COSTS_PENDING_APPROVE.getCode().equals(Func.toStr(checkOrderInfoDTO.getOrderStatusOption()))) {
+            DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_COSTS_PENDING_APPROVE.getCode());
+            checkOrderInfoDTO.setOrderStatusKey(dictInfoEntity.getId());
+        } else if (OrderStatusEnum.STATUS_CLOSE_PENDING_APPROVE.getCode().equals(Func.toStr(checkOrderInfoDTO.getOrderStatusOption()))) {
+            DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE_PENDING_APPROVE.getCode());
+            checkOrderInfoDTO.setOrderStatusKey(dictInfoEntity.getId());
+        } else if (OrderStatusEnum.STATUS_CLOSE.getCode().equals(Func.toStr(checkOrderInfoDTO.getOrderStatusOption()))) {
+            DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE.getCode());
+            checkOrderInfoDTO.setOrderStatusKey(dictInfoEntity.getId());
+        }
+        IPage<CheckOrderInfoVO> pages = rtuCheckOrderService.selectPage(Condition.getPage(query), checkOrderInfoDTO);
+        List<CheckOrderInfoVO> list = pages.getRecords();
+        for (CheckOrderInfoVO v : list) {
+            RtuCheckOrderWrapper.build().entityVO(v);
+        }
+        return R.data(pages);
+    }
+
+    /**
+     * 我的工单查询,分页
+     */
+    @GetMapping("/my/page")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string")
+    })
+    @ApiOperationSupport(order = 3)
+    @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 = rtuCheckOrderService.selectMyPage(Condition.getPage(query), checkOrderInfoDTO);
+        List<CheckOrderInfoVO> list = pages.getRecords();
+        for (CheckOrderInfoVO v : list) {
+            RtuCheckOrderWrapper.build().entityVO(v);
+        }
+        return R.data(pages);
+    }
+
+    /**
+     * 新的工单
+     *
+     * @param checkOrderInfoDTO
+     * @return
+     */
+    @GetMapping("/todo/list")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "分页", notes = "传入实体类CheckOrderInfoDTO")
+    public R<List<CheckOrderInfoVO>> todoList(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO) {
+        DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+        checkOrderInfoDTO.setOrderStatusKey(dictInfoEntity.getId());
+        List<CheckOrderInfoVO> list = rtuCheckOrderService.selectTodoList(checkOrderInfoDTO);
+        for (CheckOrderInfoVO v : list) {
+            RtuCheckOrderWrapper.build().entityVO(v);
+        }
+        return R.data(list);
+    }
+
+    /**
+     * 费用审批工单
+     *
+     * @param checkOrderInfoDTO
+     * @return
+     */
+    @GetMapping("/todo/costsapprove/list")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "分页", notes = "传入实体类CheckOrderInfoDTO")
+    public R<List<CheckOrderInfoVO>> todoCostsApproveList(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO) {
+        BladeUser user = AuthUtil.getUser();
+        if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName())) {
+            DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_COSTS_PENDING_APPROVE.getCode());
+            checkOrderInfoDTO.setOrderStatusKey(dictInfoEntity.getId());
+        } else if (BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
+            DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_COSTS_APPROVE.getCode());
+            checkOrderInfoDTO.setOrderStatusKey(dictInfoEntity.getId());
+        } else {
+            return R.fail("权限错误");
+        }
+        List<CheckOrderInfoVO> list = rtuCheckOrderService.selectTodoList(checkOrderInfoDTO);
+        for (CheckOrderInfoVO v : list) {
+            RtuCheckOrderWrapper.build().entityVO(v);
+        }
+        return R.data(list);
+    }
+
+    /**
+     * 完结工单审批
+     *
+     * @param checkOrderInfoDTO
+     * @return
+     */
+    @GetMapping("/todo/closeapprove/list")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "分页", notes = "传入实体类CheckOrderInfoDTO")
+    public R<List<CheckOrderInfoVO>> todoCloseApproveList(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO) {
+        DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE_PENDING_APPROVE.getCode());
+        checkOrderInfoDTO.setOrderStatusKey(dictInfoEntity.getId());
+        List<CheckOrderInfoVO> list = rtuCheckOrderService.selectTodoList(checkOrderInfoDTO);
+        for (CheckOrderInfoVO v : list) {
+            RtuCheckOrderWrapper.build().entityVO(v);
+        }
+        return R.data(list);
+    }
+
+
+    /**
+     * 未确认工单列表,不分页,最多返回10条数据
+     */
+    @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 = "传入实体类CheckOrderInfoDTO")
+    public R<List<CheckOrderInfoVO>> unconfirmOrderList(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO) {
+        BladeUser user = AuthUtil.getUser();
+        if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+            if (checkOrderInfoDTO.getAdCode() == null) {
+                checkOrderInfoDTO.setAdCode(BusinessConstant.REGION_NM_ADCODE);
+            }
+        } else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
+            if (checkOrderInfoDTO.getAdCode() == null) {
+                LambdaQueryWrapper<DeptRegionEntity> deptRegionEntityLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
+                deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
+                deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, Func.toLong(user.getDeptId()));
+                DeptRegionEntity deptRegionEntity = deptRegionService.getOne(deptRegionEntityLambdaQueryWrapper);
+                checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
+            }
+        }
+        List<CheckOrderInfoVO> list = rtuCheckOrderService.unconfirmOrderList(checkOrderInfoDTO);
+        for (CheckOrderInfoVO v : list) {
+            RtuCheckOrderWrapper.build().entityVO(v);
+        }
+        return R.data(list);
+    }
+
+    @GetMapping("/confirm/delay/page")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "rtuCode", value = "测站编码", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "rtuName", value = "测站名称", paramType = "query", dataType = "string"),
+            @ApiImplicitParam(name = "adCode", value = "行政区划编码", paramType = "query", dataType = "string"),
+    })
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "分页", notes = "传入实体类CheckOrderInfoDTO")
+    public R<IPage<CheckOrderInfoVO>> unconfirmDelayPage(@ApiIgnore CheckOrderInfoDTO checkOrderInfoDTO, Query query) {
+        BladeUser user = AuthUtil.getUser();
+        if (BusinessConstant.ROLE_SYS_ADMIN.equals(user.getRoleName())) {
+            if (checkOrderInfoDTO.getAdCode() == null) {
+                checkOrderInfoDTO.setAdCode(BusinessConstant.REGION_NM_ADCODE);
+            }
+        } else if (BusinessConstant.ROLE_ORG_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_ADMIN.equals(user.getRoleName()) || BusinessConstant.ROLE_COMPANY_SERVICE_PERSON.equals(user.getRoleName())) {
+            if (checkOrderInfoDTO.getAdCode() == null) {
+                LambdaQueryWrapper<DeptRegionEntity> deptRegionEntityLambdaQueryWrapper = Wrappers.<DeptRegionEntity>query().lambda();
+                deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getIsDeleted, 0);
+                deptRegionEntityLambdaQueryWrapper.eq(DeptRegionEntity::getDeptId, Func.toLong(user.getDeptId()));
+                DeptRegionEntity deptRegionEntity = deptRegionService.getOne(deptRegionEntityLambdaQueryWrapper);
+                checkOrderInfoDTO.setAdCode(deptRegionEntity.getAdcd());
+            }
+        }
+        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.setOrderComfireDelayTime(120);
+        }
+
+        IPage<CheckOrderInfoVO> pages = rtuCheckOrderService.selectConfirmDelayPage(Condition.getPage(query), checkOrderInfoDTO);
+        List<CheckOrderInfoVO> list = pages.getRecords();
+        for (CheckOrderInfoVO v : list) {
+            RtuCheckOrderWrapper.build().entityVO(v);
+        }
+        return R.data(pages);
+    }
+
+    /**
+     * 详情
+     */
+    @GetMapping("/detail")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "详情", notes = "传入实体类CheckOrderInfoEntity")
+    public R<CheckOrderInfoVO> detail(CheckOrderInfoEntity checkOrderInfoEntity) {
+        if (checkOrderInfoEntity.getId() == null) {
+            return R.fail("参数错误");
+        }
+        CheckOrderInfoEntity detail = rtuCheckOrderService.getById(checkOrderInfoEntity.getId());
+        CheckOrderInfoVO vo = RtuCheckOrderWrapper.build().entityVO(detail);
+        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);
+    }
+
+    /**
+     * 新增
+     */
+    @PostMapping("/save")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "新增", notes = "传入实体类CheckOrderInfoEntity")
+    public R save(@RequestBody CheckOrderInfoEntity checkOrderInfoEntity) {
+        if (Func.isNull(checkOrderInfoEntity.getBatchId())) {
+            return R.fail("参数错误");
+        }
+        LambdaQueryWrapper<CheckOrderInfoEntity> wrapper = Wrappers.<CheckOrderInfoEntity>query().lambda();
+        wrapper.eq(CheckOrderInfoEntity::getBatchId, checkOrderInfoEntity.getBatchId());
+        wrapper.last("limit 1");
+        long count = rtuCheckOrderService.count(wrapper);
+        if (count == 0) {
+            DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CONFIRM.getCode());
+            checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
+            rtuCheckOrderService.save(checkOrderInfoEntity);
+            OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
+            processInfoEntity.setOrderId(checkOrderInfoEntity.getId());
+            processInfoEntity.setOrderStatusKey(checkOrderInfoEntity.getOrderStatusKey());
+            processInfoEntity.setProcessDesc(checkOrderInfoEntity.getOrderDesc());
+            processInfoEntity.setFailureProcessPhotos(checkOrderInfoEntity.getOrderPhotos());
+            processInfoEntity.setFailureProcessVideos(checkOrderInfoEntity.getOrderVideos());
+            rtuOrderProcessService.save(processInfoEntity);
+            checkOrderInfoEntity.setOrderProcessId(processInfoEntity.getId());
+            rtuCheckOrderService.updateById(checkOrderInfoEntity);
+        }
+        return R.status(true);
+    }
+
+    /**
+     * 修改
+     */
+    @PostMapping("/update")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "修改", notes = "传入实体类CheckOrderInfoEntity")
+    public R update(@RequestBody CheckOrderInfoEntity checkOrderInfoEntity) {
+        return R.status(rtuCheckOrderService.updateById(checkOrderInfoEntity));
+    }
+
+    /**
+     * 新增或修改
+     */
+    @PostMapping("/submit")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "新增或修改", notes = "传入实体类CheckOrderInfoEntity")
+    public R submit(@RequestBody CheckOrderInfoEntity 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));
+    }
+
+    /**
+     * 删除
+     */
+    @PostMapping("/remove")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "逻辑删除", notes = "传入ID数组")
+    public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
+        boolean temp = rtuCheckOrderService.deleteLogic(Func.toLongList(ids));
+        return R.status(temp);
+    }
+
+    /**
+     * 工单关闭
+     *
+     * @param checkOrderInfoEntity
+     * @return
+     */
+    @PostMapping("/close")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "工单ID", paramType = "query", dataType = "long"),
+            @ApiImplicitParam(name = "orderDesc", value = "处理意见", paramType = "query", dataType = "string")
+    })
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "工单关闭", notes = "传入实体类CheckOrderInfoEntity")
+    public R orderClose(@ApiIgnore CheckOrderInfoEntity checkOrderInfoEntity) {
+        BladeUser user = AuthUtil.getUser();
+        DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE.getCode());
+        checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
+        CheckOrderInfoEntity detail = this.rtuCheckOrderService.getById(checkOrderInfoEntity.getId());
+        if (null == detail || detail.getOrderClose() == OrderCloseEnum.ACTIVE_CLOSE.getCode()) {
+            return R.status(false);
+        }
+        detail.setOrderStatusKey(checkOrderInfoEntity.getOrderStatusKey());
+        detail.setOrderClose(OrderCloseEnum.ACTIVE_CLOSE.getCode());
+        detail.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+        detail.setUpdateTime(new Date());
+        detail.setUpdateUser(user.getUserId());
+        rtuCheckOrderService.updateById(detail);
+        OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
+        processInfoEntity.setOrderId(detail.getId());
+        processInfoEntity.setOrderStatusKey(detail.getOrderStatusKey());
+        if (checkOrderInfoEntity.getOrderDesc() != null) {
+            processInfoEntity.setProcessDesc("由用户[" + user.getNickName() + "]人工关闭维修任务,处理意见:" + checkOrderInfoEntity.getOrderDesc());
+        } else {
+            processInfoEntity.setProcessDesc("由用户[" + user.getNickName() + "]人工关闭维修任务");
+        }
+        processInfoEntity.setCreateUser(user.getUserId());
+        processInfoEntity.setUpdateUser(user.getUserId());
+        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.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.rtuWarningService.updateById(warningInfoEntity);
+                    }
+                    break;
+                }
+            }
+        }
+        RtuStatusEntity rtuStatusEntity = new RtuStatusEntity();
+        rtuStatusEntity.setRunStatusId(EquipmentStatusEnum.STATUS_RUN.getCode());
+        this.rtuManageService.updateRtuStatus(rtuStatusEntity);
+        return R.success("工单关闭已操作成功!");
+    }
+
+    /**
+     * 工单取消
+     *
+     * @param checkOrderInfoEntity
+     * @return
+     */
+    @PostMapping("/cancel")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "工单ID", paramType = "query", dataType = "long"),
+            @ApiImplicitParam(name = "orderDesc", value = "处理意见", paramType = "query", dataType = "string")
+    })
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "工单取消", notes = "")
+    public R orderCancel(@ApiIgnore CheckOrderInfoEntity checkOrderInfoEntity) {
+        if (Func.isNull(checkOrderInfoEntity.getId())) {
+            return R.fail("参数错误");
+        }
+       // BladeUser user = AuthUtil.getUser();
+
+        DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE.getCode());
+        OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
+        processInfoEntity.setOrderId(checkOrderInfoEntity.getId());
+        processInfoEntity.setProcessDesc(checkOrderInfoEntity.getOrderDesc());
+        processInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
+        rtuOrderProcessService.save(processInfoEntity);
+
+        CheckOrderInfoEntity detail = rtuCheckOrderService.getById(checkOrderInfoEntity.getId());
+        dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE.getCode());
+        detail.setOrderStatusKey(dictInfoEntity.getId());
+        detail.setOrderClose(OrderCloseEnum.ACTIVE_CLOSE.getCode());
+        detail.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+        detail.setOrderProcessId(processInfoEntity.getId());
+        rtuCheckOrderService.updateById(detail);
+        return R.success("工单取消已操作成功!");
+
+
+//        CheckOrderInfoEntity detail = this.rtuCheckOrderService.getById(checkOrderInfoEntity.getId());
+//        if (null == detail || detail.getOrderClose() == OrderCloseEnum.ACTIVE_CLOSE.getCode()) {
+//            return R.status(false);
+//        }
+//        DictInfoEntity dictInfoEntity = baseInfoDictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE.getCode());
+//        checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
+//
+//        detail.setOrderStatusKey(checkOrderInfoEntity.getOrderStatusKey());
+//        detail.setOrderClose(OrderCloseEnum.ACTIVE_CLOSE.getCode());
+//        detail.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+//        detail.setUpdateTime(new Date());
+//        detail.setUpdateUser(user.getUserId());
+//        rtuCheckOrderService.updateById(detail);
+//        OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
+//        processInfoEntity.setOrderId(detail.getId());
+//        processInfoEntity.setOrderStatusKey(detail.getOrderStatusKey());
+//        if (checkOrderInfoEntity.getOrderDesc() != null) {
+//            processInfoEntity.setProcessDesc("由用户[" + user.getNickName() + "]人工关闭维修任务,处理意见:" + checkOrderInfoEntity.getOrderDesc());
+//        } else {
+//            processInfoEntity.setProcessDesc("由用户[" + user.getNickName() + "]人工关闭维修任务");
+//        }
+//        processInfoEntity.setCreateUser(user.getUserId());
+//        processInfoEntity.setUpdateUser(user.getUserId());
+//        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.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.rtuWarningService.updateById(warningInfoEntity);
+//                    }
+//                    break;
+//                }
+//            }
+//        }
+//        RtuStatusEntity rtuStatusEntity = new RtuStatusEntity();
+//        rtuStatusEntity.setRunStatusId(EquipmentStatusEnum.STATUS_RUN.getCode());
+//        this.rtuManageService.updateRtuStatus(rtuStatusEntity);
+//        return R.success("工单关闭已操作成功!");
+    }
+
+    /**
+     * 查询最新的数据
+     */
+    @GetMapping("/last/list")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "分页")
+    public R<List<CheckOrderInfoVO>> lastList() {
+        LambdaQueryWrapper<CheckOrderInfoEntity> wrapper = Wrappers.<CheckOrderInfoEntity>query().lambda();
+        wrapper.orderByDesc(CheckOrderInfoEntity::getUpdateTime);
+        wrapper.last("limit 1");
+        List<CheckOrderInfoEntity> pages = rtuCheckOrderService.list(wrapper);
+        return R.data(RtuCheckOrderWrapper.build().listVO(pages));
+    }
+
+    /**
+     * 工单确认
+     *
+     * @param checkOrderInfoEntity
+     * @return
+     */
+    @PostMapping("/confirm")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "工单确认", notes = "传入实体类CheckOrderInfoEntity")
+    public R orderConfirm(@RequestBody CheckOrderInfoEntity checkOrderInfoEntity) {
+        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.rtuCheckOrderService.getById(checkOrderInfoEntity.getId());
+        if (null == detail || null != detail.getOrderConfirmUser()) {
+            return R.status(false);
+        }
+        detail.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+        detail.setOrderStatusKey(checkOrderInfoEntity.getOrderStatusKey());
+        detail.setOrderConfirmUser(user.getUserId());
+        detail.setOrderConfirmTime(new Date());
+        detail.setUpdateTime(new Date());
+        detail.setContactUser(userInfo.getId());
+        detail.setContactPhone(userInfo.getPhone());
+        rtuCheckOrderService.updateById(detail);
+        OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
+        processInfoEntity.setOrderId(checkOrderInfoEntity.getId());
+        processInfoEntity.setOrderStatusKey(checkOrderInfoEntity.getOrderStatusKey());
+        processInfoEntity.setProcessDesc("维修任务由[" + userInfo.getRealName() + "]确认");
+        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")
+    public R orderChange(@RequestBody CheckOrderInfoDTO checkOrderInfoDTO) {
+        CheckOrderInfoEntity detail = this.rtuCheckOrderService.getById(checkOrderInfoDTO.getId());
+        if (null == detail) {
+            return R.status(false);
+        }
+        BladeUser user = AuthUtil.getUser();
+        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());
+            detail.setOrderConfirmUser(user.getUserId());
+            detail.setOrderConfirmTime(new Date());
+        }
+        User userInfo = userService.getById(checkOrderInfoDTO.getServicePersonId());
+        OrderProcessInfoEntity processInfoEntity = new OrderProcessInfoEntity();
+        processInfoEntity.setOrderId(detail.getId());
+        processInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
+        processInfoEntity.setProcessDesc("维修任务指派给[" + userInfo.getRealName() + "]");
+        rtuOrderProcessService.save(processInfoEntity);
+        detail.setUpdateTime(new Date());
+        detail.setContactUser(userInfo.getId());
+        detail.setContactPhone(userInfo.getPhone());
+        rtuCheckOrderService.updateById(detail);
+        return R.status(rtuCheckOrderService.updateById(detail));
+    }
+
+
+    /**
+     * 工单统计
+     *
+     * @return
+     */
+    @GetMapping("/statistics")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "统计表格")
+    public R<List<CheckOrderCountVO>> orderStatistics() {
+        BladeUser user = AuthUtil.getUser();
+        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);
+        }
+        return R.data(countList);
+
+
+    }
+
+    /**
+     * 按机构统计工单
+     *
+     * @return
+     */
+    @GetMapping("/org/statistics")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "adCode", value = "行政区划编码", paramType = "query", dataType = "string"),
+    })
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "统计表格")
+    public R<List<OrgCheckOrderCountVO>> orgOrderStatistics() {
+        BladeUser user = AuthUtil.getUser();
+        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.setDeptId(dept.getId());
+            orgCheckOrderCountVO.setOrgName(dept.getDeptName());
+            CheckOrderInfoDTO checkOrderInfoDTO = new 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 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);
+    }
 }

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

@@ -72,4 +72,10 @@ public class CheckOrderInfoDTO extends CheckOrderInfoEntity {
 	 */
 	@ApiModelProperty(value = "异常类型")
 	private Integer warnKind;
+
+	/**
+	 * 工单状态
+	 */
+	@ApiModelProperty(value = "工单状态")
+	private Integer orderStatusOption;
 }

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

@@ -41,6 +41,12 @@ public class CheckOrderInfoEntity extends BaseEntity {
 	@ApiModelProperty("测站编码")
 	private String rtuCode;
 
+	/**
+	 * 工单类型
+	 */
+	@ApiModelProperty("工单类型")
+	private Integer orderType;
+
 	/**
 	 * 工单来源,字典
 	 */
@@ -108,4 +114,33 @@ public class CheckOrderInfoEntity extends BaseEntity {
 	@ApiModelProperty(value = "负责人")
 	private Long contactUser;
 
+	/**
+	 * 工单处理ID
+	 */
+	@ApiModelProperty(value = "工单处理ID")
+	private Long orderProcessId;
+
+	/**
+	 * 工单照片
+	 */
+	@ApiModelProperty(value = "工单照片")
+	private String orderPhotos;
+
+	/**
+	 * 工单视频
+	 */
+	@ApiModelProperty(value = "工单视频")
+	private String orderVideos;
+
+	/**
+	 * 批处理ID,防止重复上传
+	 */
+	@ApiModelProperty(value = "批处理ID")
+	private String batchId;
+
+	/**
+	 * 工单评分
+	 */
+	@ApiModelProperty("工单评分")
+	private Integer orderRate;
 }

+ 8 - 0
src/main/java/org/springblade/modules/business/check/order/mapper/RtuCheckOrderMapper.java

@@ -60,6 +60,14 @@ public interface RtuCheckOrderMapper extends BaseMapper<CheckOrderInfoEntity> {
 	 */
 	List<CheckOrderInfoVO> selectMyPage(IPage page, @Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
 
+
+	/**
+	 * 待办任务
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	List<CheckOrderInfoVO> selectTodoList(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
+
 	/**
 	 * 查询确认超时维修任务
 	 * @param page

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

@@ -7,6 +7,7 @@
                type="org.springblade.modules.business.check.order.entity.CheckOrderInfoEntity">
         <result column="rtu_code" property="rtuCode"/>
         <result column="order_desc" property="orderDesc"/>
+        <result column="order_type" property="orderType"/>
         <result column="order_from_key" property="orderFromKey"/>
         <result column="order_status_key" property="orderStatusKey"/>
         <result column="order_confirm_user" property="orderConfirmUser"/>
@@ -16,12 +17,20 @@
         <result column="order_confirm_time" property="orderConfirmTime"/>
         <result column="contact_user" property="contactUser"/>
         <result column="contact_phone" property="contactPhone"/>
+        <result column="order_process_id" property="orderProcessId"/>
+        <result column="order_photos" property="orderPhotos"/>
+        <result column="order_videos" property="orderVideos"/>
+        <result column="batch_id" property="batchId"/>
+        <result column="order_rate" property="orderRate"/>
+
+
     </resultMap>
 
     <!-- 通用查询映射结果 -->
     <resultMap id="checkOrderInfoVOResultMap" type="org.springblade.modules.business.check.order.vo.CheckOrderInfoVO">
         <result column="rtu_code" property="rtuCode"/>
         <result column="order_desc" property="orderDesc"/>
+        <result column="order_type" property="orderType"/>
         <result column="order_from_key" property="orderFromKey"/>
         <result column="order_status_key" property="orderStatusKey"/>
         <result column="order_confirm_user" property="orderConfirmUser"/>
@@ -46,6 +55,12 @@
         <result column="is_res" property="isRes"/>
         <result column="is_ground" property="isGround"/>
         <result column="is_video" property="isVideo"/>
+        <result column="create_order_person_name" property="createOrderPersonName"/>
+        <result column="order_process_id" property="orderProcessId"/>
+        <result column="order_photos" property="orderPhotos"/>
+        <result column="order_videos" property="orderVideos"/>
+        <result column="batch_id" property="batchId"/>
+        <result column="order_rate" property="orderRate"/>
     </resultMap>
 
     <resultMap id="checkOrderCountVOResultMap" type="org.springblade.modules.business.check.order.vo.CheckOrderCountVO">
@@ -56,13 +71,14 @@
 
     <select id="allOrders" resultMap="checkOrderInfoVOResultMap">
         SELECT
-        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
+        o.*,u.real_name,u3.phone AS contact_phone,i.rtu_name,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist,u2.real_name AS contact_user_name ,u3.real_name create_order_person_name
         FROM
         rtu_failure_check_order o
         LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code and i.is_deleted=0
         LEFT JOIN data_ad_cd_b a ON a.adcd = i.ad_code and a.is_deleted=0
         LEFT JOIN blade_user u ON u.id = o.update_user and u.is_deleted=0
         LEFT JOIN blade_user u2 ON u2.id = o.contact_user and u2.is_deleted=0
+        LEFT JOIN blade_user u3 ON u3.id = o.create_user and u3.is_deleted=0
         WHERE
         o.is_deleted = 0
         <if test="checkOrderInfoDTO.rtuCode!=null">
@@ -89,14 +105,15 @@
 
     <select id="selectPage" 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
+        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,u2.real_name create_order_persion_name,u2.phone AS contact_phone
         FROM
         rtu_failure_check_order o
         LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code and i.is_deleted=0
-        LEFT JOIN rtu_warning w ON w.rtu_code = o.rtu_code and w.is_deleted = 0 and w.warning_kind=1
+        LEFT JOIN data_warning_info 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
+        LEFT JOIN blade_user u2 ON u2.id = o.create_user and u2.is_deleted=0
+        LEFT JOIN blade_dict_biz b ON b.id = o.order_status_key and b.is_deleted=0
         WHERE
         o.is_deleted = 0
         <if test="checkOrderInfoDTO.rtuCode!=null">
@@ -114,11 +131,14 @@
         <if test="checkOrderInfoDTO.orderClose!=null">
             and o.order_close = #{checkOrderInfoDTO.orderClose}
         </if>
+        <if test="checkOrderInfoDTO.orderStatusKey!=null">
+            and o.order_status_key = #{checkOrderInfoDTO.orderStatusKey}
+        </if>
         <if test="checkOrderInfoDTO.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
+        order by b.dict_key,o.update_time desc
     </select>
 
     <select id="selectWarnPage" resultMap="checkOrderInfoVOResultMap">
@@ -127,7 +147,7 @@
         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_warning_info 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
@@ -189,6 +209,31 @@
         order by o.order_confirm_time  desc
     </select>
 
+    <select id="selectTodoList" resultMap="checkOrderInfoVOResultMap">
+        SELECT
+        o.*,u.real_name create_order_persion_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 blade_user u ON u.id = o.update_user and u.is_deleted=0
+        WHERE
+        o.is_deleted = 0
+        <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.orderStatusKey!=null">
+            and o.order_status_key = #{checkOrderInfoDTO.orderStatusKey}
+        </if>
+
+        order by o.create_time  desc
+    </select>
+
 
     <select id="selectConfirmDelayPage" resultMap="checkOrderInfoVOResultMap">
         SELECT
@@ -260,12 +305,13 @@
 
     <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
+        o.*,u.real_name,i.rtu_name,i.lng,i.lat,i.location_desc,i.ad_city,i.ad_dist,u3.real_name create_order_persion_name
         FROM
         rtu_failure_check_order o
         LEFT JOIN rtu_info i ON i.rtu_code = o.rtu_code and i.is_deleted=0
         LEFT JOIN data_ad_cd_b a ON a.adcd = i.ad_code and a.is_deleted=0
         LEFT JOIN blade_user u ON u.id = o.update_user and u.is_deleted=0
+        LEFT JOIN blade_user u3 ON u3.id = o.create_user and u3.is_deleted=0
         WHERE
         o.is_deleted = 0
         and o.order_confirm = 0

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

@@ -57,6 +57,13 @@ public interface IRtuCheckOrderService extends BaseService<CheckOrderInfoEntity>
 	 */
 	IPage<CheckOrderInfoVO> selectMyPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO);
 
+	/**
+	 * 待办任务
+	 * @param checkOrderInfoDTO
+	 * @return
+	 */
+	List<CheckOrderInfoVO> selectTodoList( CheckOrderInfoDTO checkOrderInfoDTO);
+
 	/**
 	 * 查询确认超时维修任务
 	 * @param page

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

@@ -22,7 +22,7 @@ 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.region.service.IBaseRegionService;
 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;
@@ -69,7 +69,7 @@ public class RtuCheckOrderServiceImpl extends BaseServiceImpl<RtuCheckOrderMappe
 	private IRtuOrderProcessService rtuOrderProcessService;
 
 	@Resource
-	private IBaseInfoRegionService baseInfoRegionService;
+	private IBaseRegionService baseInfoRegionService;
 
 	@Resource
 	private IDeptRegionService deptRegionService;
@@ -100,6 +100,11 @@ public class RtuCheckOrderServiceImpl extends BaseServiceImpl<RtuCheckOrderMappe
 		return page.setRecords(baseMapper.selectMyPage(page, checkOrderInfoDTO));
 	}
 
+	@Override
+	public List<CheckOrderInfoVO> selectTodoList(CheckOrderInfoDTO checkOrderInfoDTO) {
+		return baseMapper.selectTodoList(checkOrderInfoDTO);
+	}
+
 	@Override
 	public IPage<CheckOrderInfoVO> selectConfirmDelayPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO) {
 		return page.setRecords(baseMapper.selectConfirmDelayPage(page, checkOrderInfoDTO));

+ 42 - 0
src/main/java/org/springblade/modules/business/check/order/vo/CheckOrderInfoVO.java

@@ -16,6 +16,7 @@ import org.springblade.modules.business.check.order.entity.CheckOrderInfoEntity;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
+import java.util.List;
 
 /***
  * Date:2022/8/22
@@ -77,12 +78,29 @@ public class CheckOrderInfoVO extends CheckOrderInfoEntity {
 	@ApiModelProperty(value = "工单状态")
 	private String orderStatusName;
 
+	/**
+	 * 工单发起人名称
+	 */
+	@ApiModelProperty(value = "工单发起人名称")
+	private String createOrderPersonName;
+
 	/**
 	 * 处理人名称
 	 */
 	@ApiModelProperty(value = "处理人")
 	private String processorName;
 
+	@ApiModelProperty(value = "工单确认时间")
+	@DateTimeFormat(
+			pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+			pattern = "yyyy-MM-dd HH:mm:ss",
+			timezone = "GMT+8"
+	)
+	private Date orderProcessTime;
+
+
 	/**
 	 * 负责人名称
 	 */
@@ -237,4 +255,28 @@ public class CheckOrderInfoVO extends CheckOrderInfoEntity {
 	 */
 	@ApiModelProperty(value = "开卡单位")
 	private String networkPayer;
+
+	/**
+	 * 费用说明
+	 */
+	@ApiModelProperty("费用说明")
+	private String costsReportDesc;
+
+	/**
+	 * 处理说明
+	 */
+	@ApiModelProperty("处理说明")
+	private String processDesc;
+
+	/**
+	 * 处理图片
+	 */
+	@ApiModelProperty("处理图片")
+	private List<String> orderPhotoList;
+
+	/**
+	 * 视频
+	 */
+	@ApiModelProperty("视频")
+	private List<String> orderVideoList;
 }

+ 116 - 206
src/main/java/org/springblade/modules/business/check/order/wrapper/RtuCheckOrderWrapper.java

@@ -11,6 +11,7 @@ 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.constant.DictBusinessConstant;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
@@ -23,6 +24,8 @@ 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.check.process.entity.OrderProcessInfoEntity;
+import org.springblade.modules.business.check.process.service.IRtuOrderProcessService;
 import org.springblade.modules.business.data.service.IRtuDataRainService;
 import org.springblade.modules.business.warning.entity.RtuWarningInfoEntity;
 import org.springblade.modules.business.warning.service.IRtuWarningService;
@@ -47,211 +50,118 @@ import java.util.*;
  * Remark:认为有必要的其他信息
  */
 public class RtuCheckOrderWrapper extends BaseEntityWrapper<CheckOrderInfoEntity, CheckOrderInfoVO> {
-	public static RtuCheckOrderWrapper build() {
-		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));
-		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 {
-			vo.setIsConfirm(0);
-		}
-		if (vo.getOrderConfirmTime() != null) {
-			Duration duration = Func.between(vo.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小时内";
-			}
-			vo.setTaskProcessDuration(taskTime);
-		}
-		if (vo.getOrderStatusKey() != null) {
-			DictBiz dictInfoEntity = getDictBizService().getById(vo.getOrderStatusKey());
-			vo.setOrderStatus(Func.toInt(dictInfoEntity.getDictKey()));
-		}
-		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) {
-			if (second >= 24 * 60 * 60) {
-				taskTime = "" + second / (24 * 60 * 60) + "天";
-				second = second % (24 * 60 * 60);
-			}
-			if (second >= 60 * 60) {
-				taskTime += "" + second / (60 * 60) + "小时";
-				second = second % (60 * 60);
-			}
-			if (second >= 60) {
-				taskTime += "" + second / (60) + "分";
-			}
-		} else {
-			taskTime = "1小时内";
-		}
-		vo.setTaskCreateDuration(taskTime);
-		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;
-	}
+    public static RtuCheckOrderWrapper build() {
+        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;
+    }
+
+
+    private static IRtuOrderProcessService rtuOrderProcessService;
+
+    private static IRtuOrderProcessService getRtuOrderProcessService() {
+        if (rtuOrderProcessService == null) {
+            rtuOrderProcessService = SpringUtil.getBean(IRtuOrderProcessService.class);
+        }
+        return rtuOrderProcessService;
+    }
+
+    @Override
+    public CheckOrderInfoVO entityVO(CheckOrderInfoEntity entity) {
+        CheckOrderInfoVO checkOrderInfoVO = Objects.requireNonNull(BeanUtil.copy(entity, CheckOrderInfoVO.class));
+        return this.entityVO(checkOrderInfoVO);
+    }
+
+    public CheckOrderInfoVO entityVO(CheckOrderInfoVO vo) {
+        if (Func.notNull(vo.getOrderProcessId())) {
+            OrderProcessInfoEntity orderProcessInfoEntity = getRtuOrderProcessService().getById(vo.getOrderProcessId());
+            User user = getUserService().getById(orderProcessInfoEntity.getCreateUser());
+            vo.setProcessorName(user.getRealName());
+            vo.setOrderProcessTime(orderProcessInfoEntity.getCreateTime());
+            vo.setProcessDesc(orderProcessInfoEntity.getProcessDesc());
+            vo.setCostsReportDesc(orderProcessInfoEntity.getCostsReportDesc());
+        }
+        if (Func.isNull(vo.getCreateOrderPersonName())) {
+            User user = getUserService().getById(vo.getCreateUser());
+            vo.setCreateOrderPersonName(user.getRealName());
+        }
+
+        DictBiz dictBiz = getDictBizService().getById(vo.getOrderStatusKey());
+        if (Func.notNull(dictBiz)) {
+            vo.setOrderStatusName(dictBiz.getDictValue());
+        }
+
+        if (Func.notNull(vo.getOrderPhotos())) {
+            String[] photos = vo.getOrderPhotos().split(",");
+            List<String> photoList = new ArrayList<>();
+            for (String p : photos) {
+                photoList.add(p);
+            }
+            vo.setOrderPhotoList(photoList);
+        }
+
+        if (Func.notNull(vo.getOrderVideos())) {
+            String[] videos = vo.getOrderVideos().split(",");
+            List<String> videoList = new ArrayList<>();
+            for (String p : videos) {
+                videoList.add(p);
+            }
+            vo.setOrderVideoList(videoList);
+        }
+
+        return vo;
+    }
 
 }

+ 353 - 305
src/main/java/org/springblade/modules/business/check/process/controller/RtuOrderProcessController.java

@@ -25,7 +25,7 @@ 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.OrderStatusEnum;
+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;
@@ -40,6 +40,8 @@ import org.springblade.modules.business.check.process.entity.OrderProcessInfoEnt
 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.business.rtumanage.entity.RtuStatusEntity;
+import org.springblade.modules.business.warning.entity.RtuWarningInfoEntity;
 import org.springblade.modules.resource.builder.oss.OssBuilder;
 import org.springblade.modules.system.entity.DictBiz;
 import org.springblade.modules.system.entity.User;
@@ -61,311 +63,357 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 @RestController
-@RequestMapping("galaxy-business/rtu/check/order/process")
+@RequestMapping("galaxy-business/order/process")
 @AllArgsConstructor
 @Api(value = "工单处理管理模块", tags = "工单处理管理模块")
 public class RtuOrderProcessController extends BladeController {
-	private final IRtuOrderProcessService rtuOrderProcessService;
-	private final IRtuCheckOrderService checkOrderService;
-	private final IUserService userService;
-	private final IBaseInfoDictService dictService;
-	private final IDeptRegionService deptRegionService;
-	private final IRtuBaseInfoService rtuBaseInfoService;
-	@Resource
-	private OssBuilder ossBuilder;
-	/**
-	 * 分页
-	 */
-	@GetMapping("/list")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "id", value = "工单ID", paramType = "query", dataType = "long")
-	})
-	@ApiOperationSupport(order = 2)
-	@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) {
-			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);
-	}
-
-
-	/**
-	 * 查询当天填报的工单信息
-	 *
-	 * @return
-	 */
-	@GetMapping("/today/list")
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "分页")
-	public R<List<OrderProcessInfoVO>> todayList(@ApiIgnore OrderProcessInfoDTO processInfoDTO) {
-		BladeUser user = AuthUtil.getUser();
-		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);
-	}
-
-
-	/**
-	 * 多表联合查询自定义分页
-	 */
-	@GetMapping("/today/page")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "id", value = "工单ID", paramType = "query", dataType = "long")
-	})
-	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "分页", notes = "传入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().entityVO(v);
-		}
-		return R.data(pages);
-	}
-
-
-	/**
-	 * 详情
-	 */
-	@GetMapping("/detail")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "id", value = "填报ID", paramType = "query", dataType = "long"),
-	})
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "详情", notes = "传入orderProcessInfoEntity")
-	public R<OrderProcessInfoVO> detail(OrderProcessInfoEntity orderProcessInfoEntity) {
-
-		OrderProcessInfoEntity detail = rtuOrderProcessService.getById(orderProcessInfoEntity.getId());
-
-		OrderProcessInfoVO vo = RtuOrderProcessWrapper.build().entityVO(detail);
-		CheckOrderInfoEntity checkOrderInfoEntity = checkOrderService.getById(vo.getOrderId());
-		if (checkOrderInfoEntity.getOrderConfirmUser() != null) {
-			User user = userService.getById(checkOrderInfoEntity.getOrderConfirmUser());
-			vo.setOrderConfirmUserName(user.getRealName());
-		}
-		DictBiz biz = DictBizCache.getById(checkOrderInfoEntity.getOrderFromKey());
-		vo.setOrderFromText(biz.getDictValue());
-		return R.data(vo);
-	}
-
-
-	/**
-	 * 新增
-	 */
-	@PostMapping("/save")
-	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "新增", notes = "传入orderProcessInfoEntity")
-	public R save(@RequestBody OrderProcessInfoEntity orderProcessInfoEntity) {
-		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());
-		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);
-	}
-
-	/**
-	 * 修改
-	 */
-	@PostMapping("/update")
-	@ApiOperationSupport(order = 5)
-	@ApiOperation(value = "修改", notes = "传入orderProcessInfoEntity")
-	public R update(@RequestBody OrderProcessInfoEntity orderProcessInfoEntity) {
-		return R.status(rtuOrderProcessService.updateById(orderProcessInfoEntity));
-	}
-
-	/**
-	 * 新增或修改
-	 */
-	@PostMapping("/submit")
-	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "新增或修改", notes = "传入orderProcessInfoEntity")
-	public R submit(@RequestBody OrderProcessInfoEntity orderProcessInfoEntity) {
-		return R.status(rtuOrderProcessService.saveOrUpdate(orderProcessInfoEntity));
-	}
-
-	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperationSupport(order = 7)
-	@ApiOperation(value = "逻辑删除", notes = "传入projectInfoEntity")
-	public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
-		boolean temp = rtuOrderProcessService.deleteLogic(Func.toLongList(ids));
-		return R.status(temp);
-	}
-
-
-	/**
-	 * 维修任务-无信号上报信息列表,分页
-	 */
-	@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));
-	}
+    private final IRtuOrderProcessService rtuOrderProcessService;
+    private final IRtuCheckOrderService checkOrderService;
+    private final IUserService userService;
+    private final IBaseInfoDictService dictService;
+    private final IDeptRegionService deptRegionService;
+    private final IRtuBaseInfoService rtuBaseInfoService;
+    @Resource
+    private OssBuilder ossBuilder;
+
+    /**
+     * 分页
+     */
+    @GetMapping("/list")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "orderId", value = "工单ID", paramType = "query", dataType = "long")
+    })
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "不分页", notes = "传入checkOrderInfoDTO")
+    public R<List<OrderProcessInfoVO>> list(OrderProcessInfoDTO dto) {
+        List<OrderProcessInfoVO> list = rtuOrderProcessService.selectList(dto);
+        for (OrderProcessInfoVO v : list) {
+            RtuOrderProcessWrapper.build().entityVO(v);
+        }
+        return R.data(list);
+    }
+
+    /**
+     * 多表联合查询自定义分页
+     */
+    @GetMapping("/page")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "orderId", value = "工单ID", paramType = "query", dataType = "long")
+    })
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "分页", notes = "传入checkOrderInfoDTO")
+    public R<IPage<OrderProcessInfoVO>> page(@ApiIgnore OrderProcessInfoDTO dto, Query query) {
+        IPage<OrderProcessInfoVO> pages = rtuOrderProcessService.selectPage(Condition.getPage(query), dto);
+        List<OrderProcessInfoVO> list = pages.getRecords();
+        for (OrderProcessInfoVO v : list) {
+            RtuOrderProcessWrapper.build().entityVO(v);
+        }
+        return R.data(pages);
+    }
+
+
+    /**
+     * 查询当天填报的工单信息
+     *
+     * @return
+     */
+    @GetMapping("/today/list")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "分页")
+    public R<List<OrderProcessInfoVO>> todayList(@ApiIgnore OrderProcessInfoDTO processInfoDTO) {
+        BladeUser user = AuthUtil.getUser();
+        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) {
+                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);
+    }
+
+
+    /**
+     * 多表联合查询自定义分页
+     */
+    @GetMapping("/today/page")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "工单ID", paramType = "query", dataType = "long")
+    })
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "分页", notes = "传入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().entityVO(v);
+        }
+        return R.data(pages);
+    }
+
+
+    /**
+     * 详情
+     */
+    @GetMapping("/detail")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "填报ID", paramType = "query", dataType = "long"),
+    })
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "详情", notes = "传入orderProcessInfoEntity")
+    public R<OrderProcessInfoVO> detail(OrderProcessInfoEntity orderProcessInfoEntity) {
+
+        OrderProcessInfoEntity detail = rtuOrderProcessService.getById(orderProcessInfoEntity.getId());
+
+        OrderProcessInfoVO vo = RtuOrderProcessWrapper.build().entityVO(detail);
+        CheckOrderInfoEntity checkOrderInfoEntity = checkOrderService.getById(vo.getOrderId());
+        if (checkOrderInfoEntity.getOrderConfirmUser() != null) {
+            User user = userService.getById(checkOrderInfoEntity.getOrderConfirmUser());
+            vo.setOrderConfirmUserName(user.getRealName());
+        }
+        DictBiz biz = DictBizCache.getById(checkOrderInfoEntity.getOrderFromKey());
+        vo.setOrderFromText(biz.getDictValue());
+        return R.data(vo);
+    }
+
+    /**
+     * @param dto
+     * @return
+     */
+    @GetMapping("/last/report")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "orderId", value = "工单ID", paramType = "query", dataType = "long"),
+    })
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "详情", notes = "传入orderProcessInfoEntity")
+    public R<OrderProcessInfoVO> lastReport(OrderProcessInfoDTO dto) {
+        DictInfoEntity dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_PROCESS.getCode());
+        dto.setOrderStatusKey(dictInfoEntity.getId());
+        OrderProcessInfoVO vo = rtuOrderProcessService.selectLastReport(dto);
+        return R.data(RtuOrderProcessWrapper.build().entityVO(vo));
+    }
+
+
+    /**
+     * 新增
+     */
+    @PostMapping("/save")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "新增", notes = "传入orderProcessInfoEntity")
+    public R save(@RequestBody OrderProcessInfoEntity orderProcessInfoEntity) {
+
+        DictInfoEntity dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_PROCESS.getCode());
+        orderProcessInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
+        rtuOrderProcessService.save(orderProcessInfoEntity);
+
+        CheckOrderInfoEntity checkOrderInfoEntity = checkOrderService.getById(orderProcessInfoEntity.getOrderId());
+        checkOrderInfoEntity.setOrderProcessId(orderProcessInfoEntity.getId());
+        if (orderProcessInfoEntity.getCostsReport() == 1) {
+            dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE_PENDING_APPROVE.getCode());
+            checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
+        } else {
+            dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_COSTS_PENDING_APPROVE.getCode());
+            checkOrderInfoEntity.setOrderStatusKey(dictInfoEntity.getId());
+        }
+        checkOrderService.updateById(checkOrderInfoEntity);
+        return R.status(true);
+    }
+
+    /**
+     * 修改
+     */
+    @PostMapping("/update")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "修改", notes = "传入orderProcessInfoEntity")
+    public R update(@RequestBody OrderProcessInfoEntity orderProcessInfoEntity) {
+        return R.status(rtuOrderProcessService.updateById(orderProcessInfoEntity));
+    }
+
+    /**
+     * 新增或修改
+     */
+    @PostMapping("/submit")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "新增或修改", notes = "传入orderProcessInfoEntity")
+    public R submit(@RequestBody OrderProcessInfoEntity orderProcessInfoEntity) {
+        return R.status(rtuOrderProcessService.saveOrUpdate(orderProcessInfoEntity));
+    }
+
+    /**
+     * 删除
+     */
+    @PostMapping("/remove")
+    @ApiOperationSupport(order = 7)
+    @ApiOperation(value = "逻辑删除", notes = "传入projectInfoEntity")
+    public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
+        boolean temp = rtuOrderProcessService.deleteLogic(Func.toLongList(ids));
+        return R.status(temp);
+    }
+
+
+    /**
+     * 维修任务-无信号上报信息列表,分页
+     */
+//    @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));
+    }
+
+    /**
+     * 工单关闭
+     *
+     * @param entity
+     * @return
+     */
+    @PostMapping("/closeapprove")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "工单关闭", notes = "传入实体类CheckOrderInfoEntity")
+    public R orderClose(@ApiIgnore OrderProcessInfoDTO entity) {
+        if (Func.isNull(entity.getOrderId())) {
+            return R.fail("参数错误");
+        }
+        DictInfoEntity dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE.getCode());
+        entity.setOrderStatusKey(dictInfoEntity.getId());
+        rtuOrderProcessService.save(entity);
+
+        CheckOrderInfoEntity detail = checkOrderService.getById(entity.getOrderId());
+        dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_CLOSE.getCode());
+        detail.setOrderStatusKey(dictInfoEntity.getId());
+        detail.setOrderClose(OrderCloseEnum.ACTIVE_CLOSE.getCode());
+        detail.setOrderConfirm(OrderConfirmEnum.ACTIVE_CONFIRM.getCode());
+        detail.setOrderProcessId(entity.getId());
+        detail.setOrderRate(entity.getOrderRate());
+        checkOrderService.updateById(detail);
+        return R.success("工单关闭已操作成功!");
+    }
+
+    @PostMapping("/costsapprove")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "费用审批", notes = "传入实体类CheckOrderInfoEntity")
+    public R orderCostsapprove(@ApiIgnore OrderProcessInfoDTO entity) {
+        if (Func.isNull(entity.getOrderId())) {
+            return R.fail("参数错误");
+        }
+        if (entity.getCostsApproveType() == 1) {
+            //通过
+        } else if (entity.getCostsApproveType() == 2) {
+            //退回
+        }
+        DictInfoEntity dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_COSTS_APPROVE.getCode());
+        entity.setOrderStatusKey(dictInfoEntity.getId());
+        rtuOrderProcessService.save(entity);
+
+        CheckOrderInfoEntity detail = checkOrderService.getById(entity.getOrderId());
+        dictInfoEntity = dictService.getDict(DictBusinessConstant.ORDER_STATUS_CODE, OrderStatusEnum.STATUS_COSTS_APPROVE.getCode());
+        detail.setOrderStatusKey(dictInfoEntity.getId());
+        detail.setOrderProcessId(entity.getId());
+        checkOrderService.updateById(detail);
+
+        return R.success("工单关闭已操作成功!");
+    }
 }

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

@@ -46,4 +46,17 @@ public class OrderProcessInfoDTO extends OrderProcessInfoEntity {
 	 */
 	@ApiModelProperty("测站名称")
 	private String rtuName;
+
+	/**
+	 * 审批操作
+	 */
+	@ApiModelProperty("审批操作")
+	private Integer costsApproveType;
+
+	/**
+	 * 工单评分
+	 */
+	@ApiModelProperty("工单评分")
+	private Integer orderRate;
+
 }

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

@@ -394,4 +394,24 @@ public class OrderProcessInfoEntity extends BaseEntity {
 	@ApiModelProperty(value = "补交图片状态")
 	@JsonSerialize(nullsUsing = NullSerializer.class)
 	private Integer photoSupplementSubmitStatus;
+
+
+	@ApiModelProperty("故障现象描述")
+	private String failureCheckDesc;
+
+	@ApiModelProperty("解决方案描述")
+	private String failureSolutionDesc;
+
+	@ApiModelProperty("费用申报")
+	private Integer costsReport;
+
+	@ApiModelProperty("费用说明")
+	private String costsReportDesc;
+
+	@ApiModelProperty("处理图片")
+	private String failureProcessPhotos;
+
+	@ApiModelProperty("处理视频")
+	private String failureProcessVideos;
+
 }

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

@@ -27,9 +27,11 @@ import java.util.List;
  * Remark:认为有必要的其他信息
  */
 public interface RtuOrderProcessMapper  extends BaseMapper<OrderProcessInfoEntity> {
-	List<OrderProcessInfoVO> selectList(@Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
+	List<OrderProcessInfoVO> selectList(@Param("dto") OrderProcessInfoDTO dto);
 
-	List<OrderProcessInfoVO> selectPage(IPage page, @Param("checkOrderInfoDTO") CheckOrderInfoDTO checkOrderInfoDTO);
+	OrderProcessInfoVO selectLastReport(@Param("dto") OrderProcessInfoDTO dto);
+
+	List<OrderProcessInfoVO> selectPage(IPage page, @Param("dto") OrderProcessInfoDTO dto);
 	/**
 	 * 查询当天提交的工单填报信息
 	 * @param processInfoDTO

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini