From 2728b76fa2b6ba007683646f3495ddb7ea2ebac9 Mon Sep 17 00:00:00 2001
From: liulin <lin.liu@88.com>
Date: 星期一, 30 六月 2025 11:12:11 +0800
Subject: [PATCH] 添加区域、工单管理

---
 src/main/java/com/fengdu/gas/entity/response/region/ResRegionTree.java                            |   44 
 src/main/java/com/fengdu/gas/repository/mapper/UserWorkOrderMapper.java                           |   10 
 src/main/java/com/fengdu/gas/host/controller/WaterFacilityParameterController.java                |    4 
 src/main/java/com/fengdu/gas/repository/mapper/WaterAreaMapper.java                               |   10 
 src/main/java/com/fengdu/gas/service/convert/FacilityStateRecordConvert.java                      |   48 
 src/main/java/com/fengdu/gas/host/controller/UserWorkOrderController.java                         |  113 +
 src/main/java/com/fengdu/gas/repository/po/SysRegionPO.java                                       |  125 +
 src/test/java/com/fengdu/gas/GenCodeGauss.java                                                    |    2 
 src/main/java/com/fengdu/gas/entity/search/SearchUserWorkOrder.java                               |   14 
 src/main/java/com/fengdu/gas/entity/request/userworkorderrecord/ReqModifyUserWorkOrderRecord.java |   61 
 src/main/java/com/fengdu/gas/host/controller/WaterFacilityTypeController.java                     |    4 
 src/main/java/com/fengdu/gas/repository/mapper/FacilityStateRecordMapper.java                     |   10 
 src/main/java/com/fengdu/gas/repository/impl/UserWorkOrderRecordMapperImpl.java                   |  137 +
 src/main/java/com/fengdu/gas/service/UserWorkOrderRecordService.java                              |  244 +++
 src/main/java/com/fengdu/gas/host/controller/UserWorkOrderRecordController.java                   |  113 +
 src/main/java/com/fengdu/gas/service/SysRegionService.java                                        |  295 +++
 src/main/java/com/fengdu/gas/entity/search/SearchFacilityStateRecord.java                         |   14 
 src/main/java/com/fengdu/gas/entity/response/region/ResBasicRegionTree.java                       |  127 +
 src/main/java/com/fengdu/gas/host/controller/WaterAreaController.java                             |  113 +
 src/main/java/com/fengdu/gas/service/WaterAreaService.java                                        |  244 +++
 src/main/java/com/fengdu/gas/service/convert/UserWorkOrderRecordConvert.java                      |   48 
 src/main/java/com/fengdu/gas/entity/request/sysregion/ReqCreateSysRegion.java                     |   86 +
 src/main/java/com/fengdu/gas/entity/search/SearchUserWorkOrderRecord.java                         |   14 
 src/main/java/com/fengdu/gas/repository/mapper/UserWorkOrderRecordMapper.java                     |   10 
 src/main/java/com/fengdu/gas/entity/search/SearchSysRegion.java                                   |   14 
 src/main/java/com/fengdu/gas/repository/vo/FacilityStateRecordVO.java                             |   54 
 src/main/java/com/fengdu/gas/service/convert/WaterAreaConvert.java                                |   48 
 src/main/java/com/fengdu/gas/entity/request/sysregion/ReqModifySysRegion.java                     |   90 +
 src/main/java/com/fengdu/gas/entity/request/userworkorder/ReqCreateUserWorkOrder.java             |   69 
 src/main/java/com/fengdu/gas/service/AdminService.java                                            |   68 
 src/main/java/com/fengdu/gas/host/controller/FacilityStateRecordController.java                   |  113 +
 src/main/java/com/fengdu/gas/repository/vo/UserWorkOrderRecordVO.java                             |   54 
 src/main/java/com/fengdu/gas/service/FacilityStateRecordService.java                              |  256 +++
 src/main/java/com/fengdu/gas/repository/impl/WaterAreaMapperImpl.java                             |  137 +
 src/main/java/com/fengdu/gas/entity/request/userworkorder/ReqModifyUserWorkOrder.java             |   73 
 src/main/java/com/fengdu/gas/entity/request/userworkorderrecord/ReqCreateUserWorkOrderRecord.java |   57 
 src/main/java/com/fengdu/gas/repository/mapper/SysRegionMapper.java                               |   10 
 src/main/java/com/fengdu/gas/entity/search/SearchWaterArea.java                                   |   14 
 src/main/java/com/fengdu/gas/entity/request/waterarea/ReqCreateWaterArea.java                     |   66 
 src/main/java/com/fengdu/gas/host/controller/SendMessageRecordController.java                     |    4 
 src/main/java/com/fengdu/gas/repository/vo/WaterAreaVO.java                                       |   54 
 src/main/java/com/fengdu/gas/host/controller/WaterMonitoryPointController.java                    |    4 
 src/main/java/com/fengdu/gas/repository/po/FacilityAlarmRecordPO.java                             |    5 
 src/main/java/com/fengdu/gas/entity/request/waterarea/ReqModifyWaterArea.java                     |   70 
 src/main/java/com/fengdu/gas/repository/po/WaterAreaPO.java                                       |  100 +
 src/main/java/com/fengdu/gas/entity/request/facilitystaterecord/ReqCreateFacilityStateRecord.java |   55 
 src/main/java/com/fengdu/gas/repository/vo/UserWorkOrderVO.java                                   |   54 
 src/main/java/com/fengdu/gas/host/controller/visualized/visualizedDataController.java             |   36 
 src/main/java/com/fengdu/gas/repository/impl/UserWorkOrderMapperImpl.java                         |  137 +
 src/main/java/com/fengdu/gas/host/controller/base/SysRegionController.java                        |  155 +
 src/main/java/com/fengdu/gas/service/convert/SysRegionConvert.java                                |   48 
 src/main/java/com/fengdu/gas/service/convert/UserWorkOrderConvert.java                            |   48 
 src/main/java/com/fengdu/gas/host/ApplicationStarter.java                                         |    2 
 src/main/java/com/fengdu/gas/repository/po/UserWorkOrderRecordPO.java                             |   89 +
 src/main/java/com/fengdu/gas/host/controller/WaterFacilityController.java                         |    4 
 src/main/java/com/fengdu/gas/host/controller/admin/AdminUserController.java                       |    2 
 src/main/java/com/fengdu/gas/repository/impl/SysRegionMapperImpl.java                             |  156 +
 src/main/java/com/fengdu/gas/host/controller/FacilityAlarmRecordController.java                   |    4 
 src/main/java/com/fengdu/gas/repository/vo/SysRegionVO.java                                       |   54 
 src/main/java/com/fengdu/gas/entity/request/facilitystaterecord/ReqModifyFacilityStateRecord.java |   61 
 src/main/java/com/fengdu/gas/entity/request/adminuser/ReqAdminLogin.java                          |   13 
 src/main/java/com/fengdu/gas/repository/impl/FacilityStateRecordMapperImpl.java                   |  146 +
 src/main/java/com/fengdu/gas/repository/po/UserWorkOrderPO.java                                   |  114 +
 src/main/java/com/fengdu/gas/service/UserWorkOrderService.java                                    |  244 +++
 src/main/java/com/fengdu/gas/repository/po/FacilityStateRecordPO.java                             |   89 +
 65 files changed, 4,725 insertions(+), 36 deletions(-)

diff --git a/src/main/java/com/fengdu/gas/entity/request/adminuser/ReqAdminLogin.java b/src/main/java/com/fengdu/gas/entity/request/adminuser/ReqAdminLogin.java
index 370c23b..a141b28 100644
--- a/src/main/java/com/fengdu/gas/entity/request/adminuser/ReqAdminLogin.java
+++ b/src/main/java/com/fengdu/gas/entity/request/adminuser/ReqAdminLogin.java
@@ -5,6 +5,15 @@
 @Data
 public class ReqAdminLogin {
     /**
+     * uuid:随机字符串
+     */
+
+    private String uuid;
+    /**
+     * 验证码
+     */
+    private String code;
+    /**
      * 登录账户
      * @required
      */
@@ -14,4 +23,8 @@
      * @required
      */
     private String password;
+    /**
+     * 登录设备码
+     */
+    private String machineCode;
 }
diff --git a/src/main/java/com/fengdu/gas/entity/request/facilitystaterecord/ReqCreateFacilityStateRecord.java b/src/main/java/com/fengdu/gas/entity/request/facilitystaterecord/ReqCreateFacilityStateRecord.java
new file mode 100644
index 0000000..f07eed0
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/facilitystaterecord/ReqCreateFacilityStateRecord.java
@@ -0,0 +1,55 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.facilitystaterecord;
+
+import lombok.Data;
+
+/**
+ * 设备状态记录
+ * @author zr
+ */
+@Data
+public class ReqCreateFacilityStateRecord {
+	/**
+	 * 所属监控点id
+	 */
+	private Long pointId;
+	/**
+	 * 所属监控点名称
+	 */
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	private String facilityName;
+	/**
+	 * 状态变更时间
+	 */
+	private String lastTime;
+
+	private Integer state;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/facilitystaterecord/ReqModifyFacilityStateRecord.java b/src/main/java/com/fengdu/gas/entity/request/facilitystaterecord/ReqModifyFacilityStateRecord.java
new file mode 100644
index 0000000..cbde4c9
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/facilitystaterecord/ReqModifyFacilityStateRecord.java
@@ -0,0 +1,61 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.facilitystaterecord;
+
+import lombok.Data;
+
+/**
+ * 设备状态记录
+ * @author zr
+ */
+@Data
+public class ReqModifyFacilityStateRecord {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 所属监控点id
+	 */
+	private Long pointId;
+	/**
+	 * 所属监控点名称
+	 */
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	private String facilityName;
+	/**
+	 * 状态
+	 */
+	private Integer state;
+	/**
+	 * 状态变更时间
+	 */
+	private String lastTime;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/sysregion/ReqCreateSysRegion.java b/src/main/java/com/fengdu/gas/entity/request/sysregion/ReqCreateSysRegion.java
new file mode 100644
index 0000000..bf72db9
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/sysregion/ReqCreateSysRegion.java
@@ -0,0 +1,86 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.sysregion;
+
+import lombok.Data;
+import java.math.BigDecimal;
+
+/**
+ * 系统行政地区
+ * @author zr
+ */
+@Data
+public class ReqCreateSysRegion {
+	/**
+	 * 行政代码
+	 */
+	private String code;
+	/**
+	 * 上级行政代码
+	 */
+	private String parentCode;
+	/**
+	 * 名称
+	 */
+	private String name;
+	/**
+	 * 简称
+	 */
+	private String shortName;
+	/**
+	 * 邮政编码
+	 */
+	private String zipCode;
+	/**
+	 * 区号
+	 */
+	private String cityCode;
+	/**
+	 * 层级
+	 */
+	private Integer level;
+	/**
+	 * 拼音
+	 */
+	private String pinYin;
+	/**
+	 * 拼音简写
+	 */
+	private String pinYinShort;
+	/**
+	 * 经度
+	 */
+	private BigDecimal lng;
+	/**
+	 * 维度
+	 */
+	private BigDecimal lat;
+	/**
+	 * 排序
+	 */
+	private Integer sort;
+	/**
+	 * 备注
+	 */
+	private String remark;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/sysregion/ReqModifySysRegion.java b/src/main/java/com/fengdu/gas/entity/request/sysregion/ReqModifySysRegion.java
new file mode 100644
index 0000000..b562eee
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/sysregion/ReqModifySysRegion.java
@@ -0,0 +1,90 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.sysregion;
+
+import lombok.Data;
+import java.math.BigDecimal;
+
+/**
+ * 系统行政地区
+ * @author zr
+ */
+@Data
+public class ReqModifySysRegion {
+	/**
+	 * 主键Id
+	 */
+	private Long id;
+	/**
+	 * 行政代码
+	 */
+	private String code;
+	/**
+	 * 上级行政代码
+	 */
+	private String parentCode;
+	/**
+	 * 名称
+	 */
+	private String name;
+	/**
+	 * 简称
+	 */
+	private String shortName;
+	/**
+	 * 邮政编码
+	 */
+	private String zipCode;
+	/**
+	 * 区号
+	 */
+	private String cityCode;
+	/**
+	 * 层级
+	 */
+	private Integer level;
+	/**
+	 * 拼音
+	 */
+	private String pinYin;
+	/**
+	 * 拼音简写
+	 */
+	private String pinYinShort;
+	/**
+	 * 经度
+	 */
+	private BigDecimal lng;
+	/**
+	 * 维度
+	 */
+	private BigDecimal lat;
+	/**
+	 * 排序
+	 */
+	private Integer sort;
+	/**
+	 * 备注
+	 */
+	private String remark;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/userworkorder/ReqCreateUserWorkOrder.java b/src/main/java/com/fengdu/gas/entity/request/userworkorder/ReqCreateUserWorkOrder.java
new file mode 100644
index 0000000..8443905
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/userworkorder/ReqCreateUserWorkOrder.java
@@ -0,0 +1,69 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.userworkorder;
+
+import lombok.Data;
+
+/**
+ * 用户工单管理
+ * @author zr
+ */
+@Data
+public class ReqCreateUserWorkOrder {
+	/**
+	 * 工单编号
+	 */
+	private String code;
+	/**
+	 * 工单名称
+	 */
+	private String name;
+	/**
+	 * 工单类型(1设备维护 2设备维修 )
+	 */
+	private Integer type;
+	/**
+	 * 内容描述
+	 */
+	private String content;
+	/**
+	 * 备注
+	 */
+	private String remark;
+	/**
+	 * 工单地址
+	 */
+	private String address;
+	/**
+	 * 执行状态(100未执行 200已执行)
+	 */
+	private Integer executeState;
+	/**
+	 * 工单指定执行人id
+	 */
+	private Long executeUser;
+	/**
+	 * 工单指定执行人名称
+	 */
+	private String executeUserName;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/userworkorder/ReqModifyUserWorkOrder.java b/src/main/java/com/fengdu/gas/entity/request/userworkorder/ReqModifyUserWorkOrder.java
new file mode 100644
index 0000000..1358a54
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/userworkorder/ReqModifyUserWorkOrder.java
@@ -0,0 +1,73 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.userworkorder;
+
+import lombok.Data;
+
+/**
+ * 用户工单管理
+ * @author zr
+ */
+@Data
+public class ReqModifyUserWorkOrder {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 工单编号
+	 */
+	private String code;
+	/**
+	 * 工单名称
+	 */
+	private String name;
+	/**
+	 * 工单类型(1设备维护 2设备维修 )
+	 */
+	private Integer type;
+	/**
+	 * 内容描述
+	 */
+	private String content;
+	/**
+	 * 备注
+	 */
+	private String remark;
+	/**
+	 * 工单地址
+	 */
+	private String address;
+	/**
+	 * 执行状态(100未执行 200已执行)
+	 */
+	private Integer executeState;
+	/**
+	 * 工单指定执行人id
+	 */
+	private Long executeUser;
+	/**
+	 * 工单指定执行人名称
+	 */
+	private String executeUserName;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/userworkorderrecord/ReqCreateUserWorkOrderRecord.java b/src/main/java/com/fengdu/gas/entity/request/userworkorderrecord/ReqCreateUserWorkOrderRecord.java
new file mode 100644
index 0000000..c5b3490
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/userworkorderrecord/ReqCreateUserWorkOrderRecord.java
@@ -0,0 +1,57 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.userworkorderrecord;
+
+import lombok.Data;
+
+/**
+ * 用户工单执行记录
+ * @author zr
+ */
+@Data
+public class ReqCreateUserWorkOrderRecord {
+	/**
+	 * 工单id(关联user_work_order表id)
+	 */
+	private Long workOrderId;
+	/**
+	 * 执行状态(100未执行 200已执行)
+	 */
+	private Integer executeState;
+	/**
+	 * 执行人id
+	 */
+	private Long executeUser;
+	/**
+	 * 执行人名称
+	 */
+	private String executeUserName;
+	/**
+	 * 执行日期
+	 */
+	private String executeDate;
+	/**
+	 * 备注
+	 */
+	private String remark;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/userworkorderrecord/ReqModifyUserWorkOrderRecord.java b/src/main/java/com/fengdu/gas/entity/request/userworkorderrecord/ReqModifyUserWorkOrderRecord.java
new file mode 100644
index 0000000..7812e99
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/userworkorderrecord/ReqModifyUserWorkOrderRecord.java
@@ -0,0 +1,61 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.userworkorderrecord;
+
+import lombok.Data;
+
+/**
+ * 用户工单执行记录
+ * @author zr
+ */
+@Data
+public class ReqModifyUserWorkOrderRecord {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 工单id(关联user_work_order表id)
+	 */
+	private Long workOrderId;
+	/**
+	 * 执行状态(100未执行 200已执行)
+	 */
+	private Integer executeState;
+	/**
+	 * 执行人id
+	 */
+	private Long executeUser;
+	/**
+	 * 执行人名称
+	 */
+	private String executeUserName;
+	/**
+	 * 执行日期
+	 */
+	private String executeDate;
+	/**
+	 * 备注
+	 */
+	private String remark;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/waterarea/ReqCreateWaterArea.java b/src/main/java/com/fengdu/gas/entity/request/waterarea/ReqCreateWaterArea.java
new file mode 100644
index 0000000..50afa81
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/waterarea/ReqCreateWaterArea.java
@@ -0,0 +1,66 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.waterarea;
+
+import lombok.Data;
+import java.math.BigDecimal;
+
+/**
+ * 区域配置
+ * @author zr
+ */
+@Data
+public class ReqCreateWaterArea {
+	/**
+	 * 管网区域名称
+	 */
+	private String areaName;
+	/**
+	 * 管网区域编号
+	 */
+	private String areaCode;
+	/**
+	 * 经度
+	 */
+	private BigDecimal lng;
+	/**
+	 * 纬度
+	 */
+	private BigDecimal lat;
+	/**
+	 * 详细地址
+	 */
+	private String address;
+	/**
+	 * 区域负责人
+	 */
+	private String areaUser;
+	/**
+	 * 区域负责人名称
+	 */
+	private String areaUserName;
+	/**
+	 * 备注
+	 */
+	private String remark;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/waterarea/ReqModifyWaterArea.java b/src/main/java/com/fengdu/gas/entity/request/waterarea/ReqModifyWaterArea.java
new file mode 100644
index 0000000..3fd1722
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/waterarea/ReqModifyWaterArea.java
@@ -0,0 +1,70 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.waterarea;
+
+import lombok.Data;
+import java.math.BigDecimal;
+
+/**
+ * 区域配置
+ * @author zr
+ */
+@Data
+public class ReqModifyWaterArea {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 管网区域名称
+	 */
+	private String areaName;
+	/**
+	 * 管网区域编号
+	 */
+	private String areaCode;
+	/**
+	 * 经度
+	 */
+	private BigDecimal lng;
+	/**
+	 * 纬度
+	 */
+	private BigDecimal lat;
+	/**
+	 * 详细地址
+	 */
+	private String address;
+	/**
+	 * 区域负责人
+	 */
+	private String areaUser;
+	/**
+	 * 区域负责人名称
+	 */
+	private String areaUserName;
+	/**
+	 * 备注
+	 */
+	private String remark;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/response/region/ResBasicRegionTree.java b/src/main/java/com/fengdu/gas/entity/response/region/ResBasicRegionTree.java
new file mode 100644
index 0000000..2905b8b
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/response/region/ResBasicRegionTree.java
@@ -0,0 +1,127 @@
+package com.fengdu.gas.entity.response.region;
+
+import java.util.List;
+
+public class ResBasicRegionTree {
+    /**
+     * 主键id
+     */
+    private Long id;
+
+    /**
+     * 区域编码
+     */
+    private String code;
+    /**
+     * 父级编码
+     */
+    private String parentCode;
+    /**
+     * 名称
+     */
+    private String name;
+    /**
+     * 简称
+     */
+    private String shortName;
+    /**
+     * 层级
+     */
+    private Integer level;
+    /**
+     * 拼音
+     */
+    private String pinYin;
+    /**
+     * 拼音简写
+     */
+    private String pinYinShort;
+    /**
+     * 父级ID
+     */
+    private String parentId;
+    /**
+     * 子级列表
+     */
+    private List<ResBasicRegionTree> children;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getParentCode() {
+        return parentCode;
+    }
+
+    public void setParentCode(String parentCode) {
+        this.parentCode = parentCode;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getShortName() {
+        return shortName;
+    }
+
+    public void setShortName(String shortName) {
+        this.shortName = shortName;
+    }
+
+    public Integer getLevel() {
+        return level;
+    }
+
+    public void setLevel(Integer level) {
+        this.level = level;
+    }
+
+    public String getPinYin() {
+        return pinYin;
+    }
+
+    public void setPinYin(String pinYin) {
+        this.pinYin = pinYin;
+    }
+
+    public String getPinYinShort() {
+        return pinYinShort;
+    }
+
+    public void setPinYinShort(String pinYinShort) {
+        this.pinYinShort = pinYinShort;
+    }
+
+    public String getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(String parentId) {
+        this.parentId = parentId;
+    }
+
+    public List<ResBasicRegionTree> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<ResBasicRegionTree> children) {
+        this.children = children;
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/entity/response/region/ResRegionTree.java b/src/main/java/com/fengdu/gas/entity/response/region/ResRegionTree.java
new file mode 100644
index 0000000..517acac
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/response/region/ResRegionTree.java
@@ -0,0 +1,44 @@
+package com.fengdu.gas.entity.response.region;
+
+import lombok.Data;
+
+import java.util.List;
+@Data
+public class ResRegionTree {
+    /**
+     * id
+     */
+    private Long id;
+    /**
+     * 编码
+     */
+    private String code;
+    /**
+     * 名称
+     */
+    private String name;
+    /**
+     * 简称
+     */
+    private String shortName;
+    /**
+     * 层级
+     */
+    private Integer level;
+    /**
+     * 拼音
+     */
+    private String pinYin;
+    /**
+     * 拼音简写
+     */
+    private String pinYinShort;
+    /**
+     * 父级编码
+     */
+    private String parentCode;
+    /**
+     * 子级列表
+     */
+    private List<ResRegionTree> children;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/search/SearchFacilityStateRecord.java b/src/main/java/com/fengdu/gas/entity/search/SearchFacilityStateRecord.java
new file mode 100644
index 0000000..ec2dc79
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/search/SearchFacilityStateRecord.java
@@ -0,0 +1,14 @@
+package com.fengdu.gas.entity.search;
+
+import lombok.Data;
+
+import com.fengdu.gas.entity.dto.SearchBasicDTO;
+
+/**
+ * 设备状态记录
+ * @author zr
+ */
+@Data
+public class SearchFacilityStateRecord extends SearchBasicDTO {
+
+}
diff --git a/src/main/java/com/fengdu/gas/entity/search/SearchSysRegion.java b/src/main/java/com/fengdu/gas/entity/search/SearchSysRegion.java
new file mode 100644
index 0000000..670e5bf
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/search/SearchSysRegion.java
@@ -0,0 +1,14 @@
+package com.fengdu.gas.entity.search;
+
+import lombok.Data;
+
+import com.fengdu.gas.entity.dto.SearchBasicDTO;
+
+/**
+ * 系统行政地区
+ * @author zr
+ */
+@Data
+public class SearchSysRegion extends SearchBasicDTO {
+
+}
diff --git a/src/main/java/com/fengdu/gas/entity/search/SearchUserWorkOrder.java b/src/main/java/com/fengdu/gas/entity/search/SearchUserWorkOrder.java
new file mode 100644
index 0000000..0703ddb
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/search/SearchUserWorkOrder.java
@@ -0,0 +1,14 @@
+package com.fengdu.gas.entity.search;
+
+import lombok.Data;
+
+import com.fengdu.gas.entity.dto.SearchBasicDTO;
+
+/**
+ * 用户工单管理
+ * @author zr
+ */
+@Data
+public class SearchUserWorkOrder extends SearchBasicDTO {
+
+}
diff --git a/src/main/java/com/fengdu/gas/entity/search/SearchUserWorkOrderRecord.java b/src/main/java/com/fengdu/gas/entity/search/SearchUserWorkOrderRecord.java
new file mode 100644
index 0000000..d54a651
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/search/SearchUserWorkOrderRecord.java
@@ -0,0 +1,14 @@
+package com.fengdu.gas.entity.search;
+
+import lombok.Data;
+
+import com.fengdu.gas.entity.dto.SearchBasicDTO;
+
+/**
+ * 用户工单执行记录
+ * @author zr
+ */
+@Data
+public class SearchUserWorkOrderRecord extends SearchBasicDTO {
+
+}
diff --git a/src/main/java/com/fengdu/gas/entity/search/SearchWaterArea.java b/src/main/java/com/fengdu/gas/entity/search/SearchWaterArea.java
new file mode 100644
index 0000000..b787ce5
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/search/SearchWaterArea.java
@@ -0,0 +1,14 @@
+package com.fengdu.gas.entity.search;
+
+import lombok.Data;
+
+import com.fengdu.gas.entity.dto.SearchBasicDTO;
+
+/**
+ * 区域配置
+ * @author zr
+ */
+@Data
+public class SearchWaterArea extends SearchBasicDTO {
+
+}
diff --git a/src/main/java/com/fengdu/gas/host/ApplicationStarter.java b/src/main/java/com/fengdu/gas/host/ApplicationStarter.java
index 3a057bc..37df3f9 100644
--- a/src/main/java/com/fengdu/gas/host/ApplicationStarter.java
+++ b/src/main/java/com/fengdu/gas/host/ApplicationStarter.java
@@ -9,7 +9,7 @@
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 import org.springframework.cache.annotation.EnableCaching;
 
-@SpringBootApplication(scanBasePackages = { "com.lunhan" })
+@SpringBootApplication(scanBasePackages = { "com.fengdu" })
 @ServletComponentScan
 @MapperScan("com.fengdu.gas.repository.mapper")
 // 开启缓存
diff --git a/src/main/java/com/fengdu/gas/host/controller/FacilityAlarmRecordController.java b/src/main/java/com/fengdu/gas/host/controller/FacilityAlarmRecordController.java
index d2052ab..26cca3b 100644
--- a/src/main/java/com/fengdu/gas/host/controller/FacilityAlarmRecordController.java
+++ b/src/main/java/com/fengdu/gas/host/controller/FacilityAlarmRecordController.java
@@ -39,9 +39,9 @@
 import com.fengdu.gas.repository.vo.FacilityAlarmRecordVO;
 
 /**
- * 9000.设备报警记录
+ * 140.设备报警记录
  * @author zr
- * @order 9000
+ * @order 140
  */
 @RestController
 @RequestMapping(value = "facilityAlarmRecord")
diff --git a/src/main/java/com/fengdu/gas/host/controller/FacilityStateRecordController.java b/src/main/java/com/fengdu/gas/host/controller/FacilityStateRecordController.java
new file mode 100644
index 0000000..1f18b6c
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/host/controller/FacilityStateRecordController.java
@@ -0,0 +1,113 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.host.controller;
+
+import com.fengdu.gas.common.ExecutedResult;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.util.ParameterUtil;
+import com.fengdu.gas.common.validator.ParameterValidateResult;
+import com.fengdu.gas.common.validator.ParameterValidator;
+import com.fengdu.gas.entity.request.ReqListId;
+import com.fengdu.gas.host.BasicController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import com.fengdu.gas.service.FacilityStateRecordService;
+import com.fengdu.gas.entity.request.facilitystaterecord.ReqCreateFacilityStateRecord;
+import com.fengdu.gas.entity.request.facilitystaterecord.ReqModifyFacilityStateRecord;
+import com.fengdu.gas.entity.search.SearchFacilityStateRecord;
+import com.fengdu.gas.repository.vo.FacilityStateRecordVO;
+
+/**
+ * 130.设备状态记录
+ * @author zr
+ * @order 130
+ */
+@RestController
+@RequestMapping(value = "facilityStateRecord")
+public class FacilityStateRecordController extends BasicController {
+    @Autowired
+    private FacilityStateRecordService service;
+
+    /**
+     * 创建[设备状态记录]
+     * @author zr
+     */
+    @PostMapping(value = "create")
+    public ExecutedResult<String> create(@RequestBody ReqCreateFacilityStateRecord request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.create(request);
+    }
+
+    /**
+     * 编辑[设备状态记录]
+     * @author zr
+     */
+    @PostMapping(value = "modify")
+    public ExecutedResult<String> modify(@RequestBody ReqModifyFacilityStateRecord request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 必须大于0
+                .addGreater(ParameterUtil.named("[设备状态记录]id"), request.getId(), 0L)
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.modify(request);
+    }
+
+    /**
+     * 获取[设备状态记录]
+     * @author zr
+     */
+    @GetMapping(value = "get/{id}")
+    public ExecutedResult<FacilityStateRecordVO> get(@PathVariable Long id) {
+        return service.get(id);
+    }
+
+    /**
+     * 查询[设备状态记录]
+     * @author zr
+     */
+    @PostMapping(value = "search")
+    public ExecutedResult<PagerResult<FacilityStateRecordVO>> search(@RequestBody SearchFacilityStateRecord request) {
+        return service.search(request);
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/host/controller/SendMessageRecordController.java b/src/main/java/com/fengdu/gas/host/controller/SendMessageRecordController.java
index 80a7857..07f1430 100644
--- a/src/main/java/com/fengdu/gas/host/controller/SendMessageRecordController.java
+++ b/src/main/java/com/fengdu/gas/host/controller/SendMessageRecordController.java
@@ -39,9 +39,9 @@
 import com.fengdu.gas.repository.vo.SendMessageRecordVO;
 
 /**
- * 9000.消息发送记录
+ * 1000.消息发送记录
  * @author zr
- * @order 9000
+ * @order 1000
  */
 @RestController
 @RequestMapping(value = "sendMessageRecord")
diff --git a/src/main/java/com/fengdu/gas/host/controller/UserWorkOrderController.java b/src/main/java/com/fengdu/gas/host/controller/UserWorkOrderController.java
new file mode 100644
index 0000000..95fd795
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/host/controller/UserWorkOrderController.java
@@ -0,0 +1,113 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.host.controller;
+
+import com.fengdu.gas.common.ExecutedResult;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.util.ParameterUtil;
+import com.fengdu.gas.common.validator.ParameterValidateResult;
+import com.fengdu.gas.common.validator.ParameterValidator;
+import com.fengdu.gas.entity.request.ReqListId;
+import com.fengdu.gas.host.BasicController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import com.fengdu.gas.service.UserWorkOrderService;
+import com.fengdu.gas.entity.request.userworkorder.ReqCreateUserWorkOrder;
+import com.fengdu.gas.entity.request.userworkorder.ReqModifyUserWorkOrder;
+import com.fengdu.gas.entity.search.SearchUserWorkOrder;
+import com.fengdu.gas.repository.vo.UserWorkOrderVO;
+
+/**
+ * 300.用户工单管理
+ * @author zr
+ * @order 300
+ */
+@RestController
+@RequestMapping(value = "userWorkOrder")
+public class UserWorkOrderController extends BasicController {
+    @Autowired
+    private UserWorkOrderService service;
+
+    /**
+     * 创建[用户工单管理]
+     * @author zr
+     */
+    @PostMapping(value = "create")
+    public ExecutedResult<Long> create(@RequestBody ReqCreateUserWorkOrder request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.create(request);
+    }
+
+    /**
+     * 编辑[用户工单管理]
+     * @author zr
+     */
+    @PostMapping(value = "modify")
+    public ExecutedResult<String> modify(@RequestBody ReqModifyUserWorkOrder request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 必须大于0
+                .addGreater(ParameterUtil.named("[用户工单管理]id"), request.getId(), 0L)
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.modify(request);
+    }
+
+    /**
+     * 获取[用户工单管理]
+     * @author zr
+     */
+    @GetMapping(value = "get/{id}")
+    public ExecutedResult<UserWorkOrderVO> get(@PathVariable Long id) {
+        return service.get(id);
+    }
+
+    /**
+     * 查询[用户工单管理]
+     * @author zr
+     */
+    @PostMapping(value = "search")
+    public ExecutedResult<PagerResult<UserWorkOrderVO>> search(@RequestBody SearchUserWorkOrder request) {
+        return service.search(request);
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/host/controller/UserWorkOrderRecordController.java b/src/main/java/com/fengdu/gas/host/controller/UserWorkOrderRecordController.java
new file mode 100644
index 0000000..ae27f27
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/host/controller/UserWorkOrderRecordController.java
@@ -0,0 +1,113 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.host.controller;
+
+import com.fengdu.gas.common.ExecutedResult;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.util.ParameterUtil;
+import com.fengdu.gas.common.validator.ParameterValidateResult;
+import com.fengdu.gas.common.validator.ParameterValidator;
+import com.fengdu.gas.entity.request.ReqListId;
+import com.fengdu.gas.host.BasicController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import com.fengdu.gas.service.UserWorkOrderRecordService;
+import com.fengdu.gas.entity.request.userworkorderrecord.ReqCreateUserWorkOrderRecord;
+import com.fengdu.gas.entity.request.userworkorderrecord.ReqModifyUserWorkOrderRecord;
+import com.fengdu.gas.entity.search.SearchUserWorkOrderRecord;
+import com.fengdu.gas.repository.vo.UserWorkOrderRecordVO;
+
+/**
+ * 310.用户工单执行记录
+ * @author zr
+ * @order 310
+ */
+@RestController
+@RequestMapping(value = "userWorkOrderRecord")
+public class UserWorkOrderRecordController extends BasicController {
+    @Autowired
+    private UserWorkOrderRecordService service;
+
+    /**
+     * 创建[用户工单执行记录]
+     * @author zr
+     */
+    @PostMapping(value = "create")
+    public ExecutedResult<Long> create(@RequestBody ReqCreateUserWorkOrderRecord request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.create(request);
+    }
+
+    /**
+     * 编辑[用户工单执行记录]
+     * @author zr
+     */
+    @PostMapping(value = "modify")
+    public ExecutedResult<String> modify(@RequestBody ReqModifyUserWorkOrderRecord request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 必须大于0
+                .addGreater(ParameterUtil.named("[用户工单执行记录]id"), request.getId(), 0L)
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.modify(request);
+    }
+
+    /**
+     * 获取[用户工单执行记录]
+     * @author zr
+     */
+    @GetMapping(value = "get/{id}")
+    public ExecutedResult<UserWorkOrderRecordVO> get(@PathVariable Long id) {
+        return service.get(id);
+    }
+
+    /**
+     * 查询[用户工单执行记录]
+     * @author zr
+     */
+    @PostMapping(value = "search")
+    public ExecutedResult<PagerResult<UserWorkOrderRecordVO>> search(@RequestBody SearchUserWorkOrderRecord request) {
+        return service.search(request);
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/host/controller/WaterAreaController.java b/src/main/java/com/fengdu/gas/host/controller/WaterAreaController.java
new file mode 100644
index 0000000..675bd5a
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/host/controller/WaterAreaController.java
@@ -0,0 +1,113 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.host.controller;
+
+import com.fengdu.gas.common.ExecutedResult;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.util.ParameterUtil;
+import com.fengdu.gas.common.validator.ParameterValidateResult;
+import com.fengdu.gas.common.validator.ParameterValidator;
+import com.fengdu.gas.entity.request.ReqListId;
+import com.fengdu.gas.host.BasicController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import com.fengdu.gas.service.WaterAreaService;
+import com.fengdu.gas.entity.request.waterarea.ReqCreateWaterArea;
+import com.fengdu.gas.entity.request.waterarea.ReqModifyWaterArea;
+import com.fengdu.gas.entity.search.SearchWaterArea;
+import com.fengdu.gas.repository.vo.WaterAreaVO;
+
+/**
+ * 200.区域配置
+ * @author zr
+ * @order 200
+ */
+@RestController
+@RequestMapping(value = "waterArea")
+public class WaterAreaController extends BasicController {
+    @Autowired
+    private WaterAreaService service;
+
+    /**
+     * 创建[区域配置]
+     * @author zr
+     */
+    @PostMapping(value = "create")
+    public ExecutedResult<Long> create(@RequestBody ReqCreateWaterArea request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.create(request);
+    }
+
+    /**
+     * 编辑[区域配置]
+     * @author zr
+     */
+    @PostMapping(value = "modify")
+    public ExecutedResult<String> modify(@RequestBody ReqModifyWaterArea request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 必须大于0
+                .addGreater(ParameterUtil.named("[区域配置]id"), request.getId(), 0L)
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.modify(request);
+    }
+
+    /**
+     * 获取[区域配置]
+     * @author zr
+     */
+    @GetMapping(value = "get/{id}")
+    public ExecutedResult<WaterAreaVO> get(@PathVariable Long id) {
+        return service.get(id);
+    }
+
+    /**
+     * 查询[区域配置]
+     * @author zr
+     */
+    @PostMapping(value = "search")
+    public ExecutedResult<PagerResult<WaterAreaVO>> search(@RequestBody SearchWaterArea request) {
+        return service.search(request);
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/host/controller/WaterFacilityController.java b/src/main/java/com/fengdu/gas/host/controller/WaterFacilityController.java
index 5fb6115..939e20a 100644
--- a/src/main/java/com/fengdu/gas/host/controller/WaterFacilityController.java
+++ b/src/main/java/com/fengdu/gas/host/controller/WaterFacilityController.java
@@ -39,9 +39,9 @@
 import com.fengdu.gas.repository.vo.WaterFacilityVO;
 
 /**
- * 9000.设备信息
+ * 100.设备信息
  * @author zr
- * @order 9000
+ * @order 100
  */
 @RestController
 @RequestMapping(value = "waterFacility")
diff --git a/src/main/java/com/fengdu/gas/host/controller/WaterFacilityParameterController.java b/src/main/java/com/fengdu/gas/host/controller/WaterFacilityParameterController.java
index f21693e..0316fa4 100644
--- a/src/main/java/com/fengdu/gas/host/controller/WaterFacilityParameterController.java
+++ b/src/main/java/com/fengdu/gas/host/controller/WaterFacilityParameterController.java
@@ -39,9 +39,9 @@
 import com.fengdu.gas.repository.vo.WaterFacilityParameterVO;
 
 /**
- * 9000.设备设定参数
+ * 120.设备设定参数
  * @author zr
- * @order 9000
+ * @order 120
  */
 @RestController
 @RequestMapping(value = "waterFacilityParameter")
diff --git a/src/main/java/com/fengdu/gas/host/controller/WaterFacilityTypeController.java b/src/main/java/com/fengdu/gas/host/controller/WaterFacilityTypeController.java
index 475978e..6602475 100644
--- a/src/main/java/com/fengdu/gas/host/controller/WaterFacilityTypeController.java
+++ b/src/main/java/com/fengdu/gas/host/controller/WaterFacilityTypeController.java
@@ -39,9 +39,9 @@
 import com.fengdu.gas.repository.vo.WaterFacilityTypeVO;
 
 /**
- * 9000.设备类型
+ * 110.设备类型
  * @author zr
- * @order 9000
+ * @order 110
  */
 @RestController
 @RequestMapping(value = "waterFacilityType")
diff --git a/src/main/java/com/fengdu/gas/host/controller/WaterMonitoryPointController.java b/src/main/java/com/fengdu/gas/host/controller/WaterMonitoryPointController.java
index d51fc22..2624c50 100644
--- a/src/main/java/com/fengdu/gas/host/controller/WaterMonitoryPointController.java
+++ b/src/main/java/com/fengdu/gas/host/controller/WaterMonitoryPointController.java
@@ -39,9 +39,9 @@
 import com.fengdu.gas.repository.vo.WaterMonitoryPointVO;
 
 /**
- * 9000.监控点
+ * 90.监控点
  * @author zr
- * @order 9000
+ * @order 90
  */
 @RestController
 @RequestMapping(value = "waterMonitoryPoint")
diff --git a/src/main/java/com/fengdu/gas/host/controller/admin/AdminUserController.java b/src/main/java/com/fengdu/gas/host/controller/admin/AdminUserController.java
index 7218069..16a2fc8 100644
--- a/src/main/java/com/fengdu/gas/host/controller/admin/AdminUserController.java
+++ b/src/main/java/com/fengdu/gas/host/controller/admin/AdminUserController.java
@@ -149,7 +149,7 @@
      */
     @PostMapping("login")
     @NonLogin
-    public ExecutedResult<ResAdminLogin> adminLogin(@RequestBody ReqAdminLogin request) {
+    public ExecutedResult<ResAdminLogin> adminLogin(@RequestBody ReqAdminLogin request) throws Exception {
         //#region 参数验证
         ParameterValidator validator = new ParameterValidator()
                 .addNotNullOrEmpty(ParameterUtil.named("用户名"), request.getUserName())
diff --git a/src/main/java/com/fengdu/gas/host/controller/base/SysRegionController.java b/src/main/java/com/fengdu/gas/host/controller/base/SysRegionController.java
new file mode 100644
index 0000000..3708792
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/host/controller/base/SysRegionController.java
@@ -0,0 +1,155 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.host.controller.base;
+
+import com.fengdu.gas.common.ExecutedResult;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.util.ParameterUtil;
+import com.fengdu.gas.common.validator.ParameterValidateResult;
+import com.fengdu.gas.common.validator.ParameterValidator;
+import com.fengdu.gas.entity.request.ReqListId;
+import com.fengdu.gas.entity.response.region.ResRegionTree;
+import com.fengdu.gas.host.BasicController;
+import com.fengdu.gas.host.api.NonLogin;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import com.fengdu.gas.service.SysRegionService;
+import com.fengdu.gas.entity.request.sysregion.ReqCreateSysRegion;
+import com.fengdu.gas.entity.request.sysregion.ReqModifySysRegion;
+import com.fengdu.gas.entity.search.SearchSysRegion;
+import com.fengdu.gas.repository.vo.SysRegionVO;
+
+/**
+ * 05.系统行政地区
+ * @author zr
+ * @order 05
+ */
+@RestController
+@RequestMapping(value = "sysRegion")
+public class SysRegionController extends BasicController {
+    @Autowired
+    private SysRegionService service;
+
+    /**
+     * 创建[系统行政地区]
+     * @author zr
+     */
+    @PostMapping(value = "create")
+    public ExecutedResult<Long> create(@RequestBody ReqCreateSysRegion request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.create(request);
+    }
+
+    /**
+     * 编辑[系统行政地区]
+     * @author zr
+     */
+    @PostMapping(value = "modify")
+    public ExecutedResult<String> modify(@RequestBody ReqModifySysRegion request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 必须大于0
+                .addGreater(ParameterUtil.named("[系统行政地区]id"), request.getId(), 0L)
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.modify(request);
+    }
+
+    /**
+     * 获取[系统行政地区]
+     * @author zr
+     */
+    @GetMapping(value = "get/{id}")
+    public ExecutedResult<SysRegionVO> get(@PathVariable Long id) {
+        return service.get(id);
+    }
+    /**
+     * 根据id批量获取[系统行政地区]
+     * @author lin.liu
+     * @description 根据id批量获取[系统行政地区]
+     */
+    @PostMapping(value = "getList")
+    public ExecutedResult<List<SysRegionVO>> getList(@RequestBody ReqListId request) {
+        return this.service.getList(request.getListId());
+    }
+
+    /**
+     * 获取指定区域的子级区域
+     *
+     * @param code 区域编号,不传获取所有一级区域
+     * @author lin.liu
+     * @date 2024/05/13
+     */
+    @GetMapping(value = "getListChild")
+    public ExecutedResult<List<ResRegionTree>> getListChild(@RequestParam String code) {
+        return this.service.getListChild(code);
+    }
+    /**
+     * 获取指定区域的子级区域(包含自身)
+     *
+     * @param code 区域编号
+     * @author lin.liu
+     * @date 2024/05/13
+     */
+    @NonLogin
+    @GetMapping(value = "currAndTree/{code}")
+    public ExecutedResult<ResRegionTree> currAndTree(@PathVariable String code) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                .addNotNullOrEmpty(ParameterUtil.named("区域编号"), code);
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return ExecutedResult.failed(result.getErrorMsg());
+        }
+        //#endregion
+        return this.service.currAndTree(code);
+    }
+    /**
+     * 查询[系统行政地区]
+     * @author zr
+     */
+    @PostMapping(value = "search")
+    public ExecutedResult<PagerResult<SysRegionVO>> search(@RequestBody SearchSysRegion request) {
+        return service.search(request);
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/host/controller/visualized/visualizedDataController.java b/src/main/java/com/fengdu/gas/host/controller/visualized/visualizedDataController.java
new file mode 100644
index 0000000..d8dbf18
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/host/controller/visualized/visualizedDataController.java
@@ -0,0 +1,36 @@
+package com.fengdu.gas.host.controller.visualized;
+
+import com.fengdu.gas.host.BasicController;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 10000.可视化数据管理
+ * @author zr
+ * @order 10000
+ */
+@RestController
+@RequestMapping(value = "visualizedData")
+public class visualizedDataController extends BasicController {
+
+
+    /*****************************首页总览**********************************/
+
+
+
+
+
+
+
+
+    /*****************************数据统计**********************************/
+
+
+
+
+
+
+
+    /*****************************设备管理**********************************/
+
+}
diff --git a/src/main/java/com/fengdu/gas/repository/impl/FacilityStateRecordMapperImpl.java b/src/main/java/com/fengdu/gas/repository/impl/FacilityStateRecordMapperImpl.java
new file mode 100644
index 0000000..959339b
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/impl/FacilityStateRecordMapperImpl.java
@@ -0,0 +1,146 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.enums.EYesOrNo;
+import com.fengdu.gas.common.util.*;
+import com.fengdu.gas.entity.dto.*;
+import com.fengdu.gas.entity.enums.*;
+import com.fengdu.gas.repository.BasicMapperImpl;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import com.fengdu.gas.entity.search.SearchFacilityStateRecord;
+import com.fengdu.gas.repository.mapper.FacilityStateRecordMapper;
+import com.fengdu.gas.repository.po.FacilityStateRecordPO;
+
+/**
+ * 设备状态记录
+ * @author zr
+ */
+@Repository
+public class FacilityStateRecordMapperImpl extends BasicMapperImpl<FacilityStateRecordPO, FacilityStateRecordMapper> {
+	FacilityStateRecordMapperImpl(FacilityStateRecordMapper mapper) {
+		super(mapper);
+	}
+
+	@Override
+	public PagerResult<FacilityStateRecordPO> search(SearchBasicDTO request) {
+		// 还原查询条件真实类型
+		SearchFacilityStateRecord search = (SearchFacilityStateRecord)request;
+		// 查询条件
+		LambdaQueryWrapper<FacilityStateRecordPO> queryWrapper = this.query();
+		// 非逻辑删除
+		queryWrapper.eq(FacilityStateRecordPO::getIsDelete, EYesOrNo.NO.getValue());
+		// 状态
+		//queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, FacilityStateRecordPO::getStatus, search.getStatus());
+		// 状态列表
+		//queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), FacilityStateRecordPO::getStatus, search.getListStatus());
+
+		// 数据创建时间-起始
+		queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, FacilityStateRecordPO::getCreateTime, search.getCreateTimeStart());
+		// 数据创建时间-截止
+		queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, FacilityStateRecordPO::getCreateTime, search.getCreateTimeEnd());
+		// 关键字
+		//if (StringUtil.isNotNullOrEmpty(search.getKeywords())) {
+		//	queryWrapper.and(q ->
+		//		q.like(FacilityStateRecordPO::getName, search.getKeywords())
+		//		.or().like(FacilityStateRecordPO::getPhone, search.getKeywords())
+		//	);
+		//}
+
+		// 排序处理
+		if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) {
+			for (OrderByDTO item : search.getOrderBy()) {
+				EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy());
+				// 顺序排序
+				if (item.getIsAsc()) {
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByAsc(FacilityStateRecordPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByAsc(FacilityStateRecordPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByAsc(FacilityStateRecordPO::getUpdateTime);
+							break;
+					}
+				} else {
+					// 倒叙排序
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByDesc(FacilityStateRecordPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByDesc(FacilityStateRecordPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByDesc(FacilityStateRecordPO::getUpdateTime);
+							break;
+					}
+				}
+			}
+		} else {
+			queryWrapper.orderByDesc(FacilityStateRecordPO::getId);
+		}
+		Page<FacilityStateRecordPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper);
+		return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords());
+	}
+
+	public Boolean add(FacilityStateRecordPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public Boolean addNotIncrement(FacilityStateRecordPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public FacilityStateRecordPO getById(Long id) {
+		return super.get(id);
+	}
+
+	public FacilityStateRecordPO getLastTimeDesc(Long facilityId) {
+		// 查询条件
+		LambdaQueryWrapper<FacilityStateRecordPO> queryWrapper = this.query();
+		queryWrapper.eq(FacilityStateRecordPO::getFacilityId,facilityId);
+		queryWrapper.orderByDesc(FacilityStateRecordPO::getLastTime);
+		queryWrapper.last("limit 1");
+		return super.selectOne(queryWrapper);
+	}
+
+	public List<FacilityStateRecordPO> getListById(List<Long> listId) {
+		return super.getList(listId);
+	}
+}
diff --git a/src/main/java/com/fengdu/gas/repository/impl/SysRegionMapperImpl.java b/src/main/java/com/fengdu/gas/repository/impl/SysRegionMapperImpl.java
new file mode 100644
index 0000000..acb7293
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/impl/SysRegionMapperImpl.java
@@ -0,0 +1,156 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.enums.EYesOrNo;
+import com.fengdu.gas.common.util.*;
+import com.fengdu.gas.entity.dto.*;
+import com.fengdu.gas.entity.enums.*;
+import com.fengdu.gas.repository.BasicMapperImpl;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import com.fengdu.gas.entity.search.SearchSysRegion;
+import com.fengdu.gas.repository.mapper.SysRegionMapper;
+import com.fengdu.gas.repository.po.SysRegionPO;
+
+/**
+ * 系统行政地区
+ * @author zr
+ */
+@Repository
+public class SysRegionMapperImpl extends BasicMapperImpl<SysRegionPO, SysRegionMapper> {
+	SysRegionMapperImpl(SysRegionMapper mapper) {
+		super(mapper);
+	}
+
+	@Override
+	public PagerResult<SysRegionPO> search(SearchBasicDTO request) {
+		// 还原查询条件真实类型
+		SearchSysRegion search = (SearchSysRegion)request;
+		// 查询条件
+		LambdaQueryWrapper<SysRegionPO> queryWrapper = this.query();
+		// 非逻辑删除
+		queryWrapper.eq(SysRegionPO::getIsDelete, EYesOrNo.NO.getValue());
+		// 状态
+		//queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, SysRegionPO::getStatus, search.getStatus());
+		// 状态列表
+		//queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), SysRegionPO::getStatus, search.getListStatus());
+
+		// 数据创建时间-起始
+		queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, SysRegionPO::getCreateTime, search.getCreateTimeStart());
+		// 数据创建时间-截止
+		queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, SysRegionPO::getCreateTime, search.getCreateTimeEnd());
+		// 关键字
+		//if (StringUtil.isNotNullOrEmpty(search.getKeywords())) {
+		//	queryWrapper.and(q ->
+		//		q.like(SysRegionPO::getName, search.getKeywords())
+		//		.or().like(SysRegionPO::getPhone, search.getKeywords())
+		//	);
+		//}
+
+		// 排序处理
+		if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) {
+			for (OrderByDTO item : search.getOrderBy()) {
+				EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy());
+				// 顺序排序
+				if (item.getIsAsc()) {
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByAsc(SysRegionPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByAsc(SysRegionPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByAsc(SysRegionPO::getUpdateTime);
+							break;
+					}
+				} else {
+					// 倒叙排序
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByDesc(SysRegionPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByDesc(SysRegionPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByDesc(SysRegionPO::getUpdateTime);
+							break;
+					}
+				}
+			}
+		} else {
+			queryWrapper.orderByDesc(SysRegionPO::getId);
+		}
+		Page<SysRegionPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper);
+		return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords());
+	}
+
+	public Boolean add(SysRegionPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+	public List<SysRegionPO> getList4Parent(String code) {
+		LambdaQueryWrapper<SysRegionPO> queryWrapper = this.query();
+		queryWrapper.eq(SysRegionPO::getParentCode,code);
+		return DB.selectList(queryWrapper);
+	}
+	public SysRegionPO get4Code(String code) {
+		LambdaQueryWrapper<SysRegionPO> queryWrapper = this.query();
+		queryWrapper.eq(SysRegionPO::getCode,code);
+		return DB.selectOne(queryWrapper);
+	}
+	public List<SysRegionPO> getList4LevelChild(Integer level) {
+		LambdaQueryWrapper<SysRegionPO> queryWrapper = this.query();
+		queryWrapper.gt(SysRegionPO::getLevel,level);
+		return DB.selectList(queryWrapper);
+	}
+	public List<SysRegionPO> getList4Level(Integer level) {
+		LambdaQueryWrapper<SysRegionPO> queryWrapper = this.query();
+		queryWrapper.eq(SysRegionPO::getLevel,level);
+		return DB.selectList(queryWrapper);
+	}
+	public Boolean addNotIncrement(SysRegionPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public SysRegionPO getById(Long id) {
+		return super.get(id);
+	}
+
+	public List<SysRegionPO> getListById(List<Long> listId) {
+		return super.getList(listId);
+	}
+}
diff --git a/src/main/java/com/fengdu/gas/repository/impl/UserWorkOrderMapperImpl.java b/src/main/java/com/fengdu/gas/repository/impl/UserWorkOrderMapperImpl.java
new file mode 100644
index 0000000..ef736c6
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/impl/UserWorkOrderMapperImpl.java
@@ -0,0 +1,137 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.enums.EYesOrNo;
+import com.fengdu.gas.common.util.*;
+import com.fengdu.gas.entity.dto.*;
+import com.fengdu.gas.entity.enums.*;
+import com.fengdu.gas.repository.BasicMapperImpl;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import com.fengdu.gas.entity.search.SearchUserWorkOrder;
+import com.fengdu.gas.repository.mapper.UserWorkOrderMapper;
+import com.fengdu.gas.repository.po.UserWorkOrderPO;
+
+/**
+ * 用户工单管理
+ * @author zr
+ */
+@Repository
+public class UserWorkOrderMapperImpl extends BasicMapperImpl<UserWorkOrderPO, UserWorkOrderMapper> {
+	UserWorkOrderMapperImpl(UserWorkOrderMapper mapper) {
+		super(mapper);
+	}
+
+	@Override
+	public PagerResult<UserWorkOrderPO> search(SearchBasicDTO request) {
+		// 还原查询条件真实类型
+		SearchUserWorkOrder search = (SearchUserWorkOrder)request;
+		// 查询条件
+		LambdaQueryWrapper<UserWorkOrderPO> queryWrapper = this.query();
+		// 非逻辑删除
+		queryWrapper.eq(UserWorkOrderPO::getIsDelete, EYesOrNo.NO.getValue());
+		// 状态
+		//queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, UserWorkOrderPO::getStatus, search.getStatus());
+		// 状态列表
+		//queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), UserWorkOrderPO::getStatus, search.getListStatus());
+
+		// 数据创建时间-起始
+		queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, UserWorkOrderPO::getCreateTime, search.getCreateTimeStart());
+		// 数据创建时间-截止
+		queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, UserWorkOrderPO::getCreateTime, search.getCreateTimeEnd());
+		// 关键字
+		//if (StringUtil.isNotNullOrEmpty(search.getKeywords())) {
+		//	queryWrapper.and(q ->
+		//		q.like(UserWorkOrderPO::getName, search.getKeywords())
+		//		.or().like(UserWorkOrderPO::getPhone, search.getKeywords())
+		//	);
+		//}
+
+		// 排序处理
+		if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) {
+			for (OrderByDTO item : search.getOrderBy()) {
+				EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy());
+				// 顺序排序
+				if (item.getIsAsc()) {
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByAsc(UserWorkOrderPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByAsc(UserWorkOrderPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByAsc(UserWorkOrderPO::getUpdateTime);
+							break;
+					}
+				} else {
+					// 倒叙排序
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByDesc(UserWorkOrderPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByDesc(UserWorkOrderPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByDesc(UserWorkOrderPO::getUpdateTime);
+							break;
+					}
+				}
+			}
+		} else {
+			queryWrapper.orderByDesc(UserWorkOrderPO::getId);
+		}
+		Page<UserWorkOrderPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper);
+		return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords());
+	}
+
+	public Boolean add(UserWorkOrderPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public Boolean addNotIncrement(UserWorkOrderPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public UserWorkOrderPO getById(Long id) {
+		return super.get(id);
+	}
+
+	public List<UserWorkOrderPO> getListById(List<Long> listId) {
+		return super.getList(listId);
+	}
+}
diff --git a/src/main/java/com/fengdu/gas/repository/impl/UserWorkOrderRecordMapperImpl.java b/src/main/java/com/fengdu/gas/repository/impl/UserWorkOrderRecordMapperImpl.java
new file mode 100644
index 0000000..1db0aa8
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/impl/UserWorkOrderRecordMapperImpl.java
@@ -0,0 +1,137 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.enums.EYesOrNo;
+import com.fengdu.gas.common.util.*;
+import com.fengdu.gas.entity.dto.*;
+import com.fengdu.gas.entity.enums.*;
+import com.fengdu.gas.repository.BasicMapperImpl;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import com.fengdu.gas.entity.search.SearchUserWorkOrderRecord;
+import com.fengdu.gas.repository.mapper.UserWorkOrderRecordMapper;
+import com.fengdu.gas.repository.po.UserWorkOrderRecordPO;
+
+/**
+ * 用户工单执行记录
+ * @author zr
+ */
+@Repository
+public class UserWorkOrderRecordMapperImpl extends BasicMapperImpl<UserWorkOrderRecordPO, UserWorkOrderRecordMapper> {
+	UserWorkOrderRecordMapperImpl(UserWorkOrderRecordMapper mapper) {
+		super(mapper);
+	}
+
+	@Override
+	public PagerResult<UserWorkOrderRecordPO> search(SearchBasicDTO request) {
+		// 还原查询条件真实类型
+		SearchUserWorkOrderRecord search = (SearchUserWorkOrderRecord)request;
+		// 查询条件
+		LambdaQueryWrapper<UserWorkOrderRecordPO> queryWrapper = this.query();
+		// 非逻辑删除
+		queryWrapper.eq(UserWorkOrderRecordPO::getIsDelete, EYesOrNo.NO.getValue());
+		// 状态
+		//queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, UserWorkOrderRecordPO::getStatus, search.getStatus());
+		// 状态列表
+		//queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), UserWorkOrderRecordPO::getStatus, search.getListStatus());
+
+		// 数据创建时间-起始
+		queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, UserWorkOrderRecordPO::getCreateTime, search.getCreateTimeStart());
+		// 数据创建时间-截止
+		queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, UserWorkOrderRecordPO::getCreateTime, search.getCreateTimeEnd());
+		// 关键字
+		//if (StringUtil.isNotNullOrEmpty(search.getKeywords())) {
+		//	queryWrapper.and(q ->
+		//		q.like(UserWorkOrderRecordPO::getName, search.getKeywords())
+		//		.or().like(UserWorkOrderRecordPO::getPhone, search.getKeywords())
+		//	);
+		//}
+
+		// 排序处理
+		if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) {
+			for (OrderByDTO item : search.getOrderBy()) {
+				EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy());
+				// 顺序排序
+				if (item.getIsAsc()) {
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByAsc(UserWorkOrderRecordPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByAsc(UserWorkOrderRecordPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByAsc(UserWorkOrderRecordPO::getUpdateTime);
+							break;
+					}
+				} else {
+					// 倒叙排序
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByDesc(UserWorkOrderRecordPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByDesc(UserWorkOrderRecordPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByDesc(UserWorkOrderRecordPO::getUpdateTime);
+							break;
+					}
+				}
+			}
+		} else {
+			queryWrapper.orderByDesc(UserWorkOrderRecordPO::getId);
+		}
+		Page<UserWorkOrderRecordPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper);
+		return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords());
+	}
+
+	public Boolean add(UserWorkOrderRecordPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public Boolean addNotIncrement(UserWorkOrderRecordPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public UserWorkOrderRecordPO getById(Long id) {
+		return super.get(id);
+	}
+
+	public List<UserWorkOrderRecordPO> getListById(List<Long> listId) {
+		return super.getList(listId);
+	}
+}
diff --git a/src/main/java/com/fengdu/gas/repository/impl/WaterAreaMapperImpl.java b/src/main/java/com/fengdu/gas/repository/impl/WaterAreaMapperImpl.java
new file mode 100644
index 0000000..5fb72c7
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/impl/WaterAreaMapperImpl.java
@@ -0,0 +1,137 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.enums.EYesOrNo;
+import com.fengdu.gas.common.util.*;
+import com.fengdu.gas.entity.dto.*;
+import com.fengdu.gas.entity.enums.*;
+import com.fengdu.gas.repository.BasicMapperImpl;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import com.fengdu.gas.entity.search.SearchWaterArea;
+import com.fengdu.gas.repository.mapper.WaterAreaMapper;
+import com.fengdu.gas.repository.po.WaterAreaPO;
+
+/**
+ * 区域配置
+ * @author zr
+ */
+@Repository
+public class WaterAreaMapperImpl extends BasicMapperImpl<WaterAreaPO, WaterAreaMapper> {
+	WaterAreaMapperImpl(WaterAreaMapper mapper) {
+		super(mapper);
+	}
+
+	@Override
+	public PagerResult<WaterAreaPO> search(SearchBasicDTO request) {
+		// 还原查询条件真实类型
+		SearchWaterArea search = (SearchWaterArea)request;
+		// 查询条件
+		LambdaQueryWrapper<WaterAreaPO> queryWrapper = this.query();
+		// 非逻辑删除
+		queryWrapper.eq(WaterAreaPO::getIsDelete, EYesOrNo.NO.getValue());
+		// 状态
+		//queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, WaterAreaPO::getStatus, search.getStatus());
+		// 状态列表
+		//queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), WaterAreaPO::getStatus, search.getListStatus());
+
+		// 数据创建时间-起始
+		queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, WaterAreaPO::getCreateTime, search.getCreateTimeStart());
+		// 数据创建时间-截止
+		queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, WaterAreaPO::getCreateTime, search.getCreateTimeEnd());
+		// 关键字
+		//if (StringUtil.isNotNullOrEmpty(search.getKeywords())) {
+		//	queryWrapper.and(q ->
+		//		q.like(WaterAreaPO::getName, search.getKeywords())
+		//		.or().like(WaterAreaPO::getPhone, search.getKeywords())
+		//	);
+		//}
+
+		// 排序处理
+		if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) {
+			for (OrderByDTO item : search.getOrderBy()) {
+				EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy());
+				// 顺序排序
+				if (item.getIsAsc()) {
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByAsc(WaterAreaPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByAsc(WaterAreaPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByAsc(WaterAreaPO::getUpdateTime);
+							break;
+					}
+				} else {
+					// 倒叙排序
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByDesc(WaterAreaPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByDesc(WaterAreaPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByDesc(WaterAreaPO::getUpdateTime);
+							break;
+					}
+				}
+			}
+		} else {
+			queryWrapper.orderByDesc(WaterAreaPO::getId);
+		}
+		Page<WaterAreaPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper);
+		return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords());
+	}
+
+	public Boolean add(WaterAreaPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public Boolean addNotIncrement(WaterAreaPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public WaterAreaPO getById(Long id) {
+		return super.get(id);
+	}
+
+	public List<WaterAreaPO> getListById(List<Long> listId) {
+		return super.getList(listId);
+	}
+}
diff --git a/src/main/java/com/fengdu/gas/repository/mapper/FacilityStateRecordMapper.java b/src/main/java/com/fengdu/gas/repository/mapper/FacilityStateRecordMapper.java
new file mode 100644
index 0000000..829b541
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/mapper/FacilityStateRecordMapper.java
@@ -0,0 +1,10 @@
+package com.fengdu.gas.repository.mapper;
+
+import com.fengdu.gas.repository.BasicMapper;import com.fengdu.gas.repository.po.FacilityStateRecordPO;
+
+/**
+ * 设备状态记录 mapper
+ * @author zr
+ */
+public interface FacilityStateRecordMapper extends BasicMapper<FacilityStateRecordPO> {
+}
diff --git a/src/main/java/com/fengdu/gas/repository/mapper/SysRegionMapper.java b/src/main/java/com/fengdu/gas/repository/mapper/SysRegionMapper.java
new file mode 100644
index 0000000..62828d8
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/mapper/SysRegionMapper.java
@@ -0,0 +1,10 @@
+package com.fengdu.gas.repository.mapper;
+
+import com.fengdu.gas.repository.BasicMapper;import com.fengdu.gas.repository.po.SysRegionPO;
+
+/**
+ * 系统行政地区 mapper
+ * @author zr
+ */
+public interface SysRegionMapper extends BasicMapper<SysRegionPO> {
+}
diff --git a/src/main/java/com/fengdu/gas/repository/mapper/UserWorkOrderMapper.java b/src/main/java/com/fengdu/gas/repository/mapper/UserWorkOrderMapper.java
new file mode 100644
index 0000000..f9056ed
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/mapper/UserWorkOrderMapper.java
@@ -0,0 +1,10 @@
+package com.fengdu.gas.repository.mapper;
+
+import com.fengdu.gas.repository.BasicMapper;import com.fengdu.gas.repository.po.UserWorkOrderPO;
+
+/**
+ * 用户工单管理 mapper
+ * @author zr
+ */
+public interface UserWorkOrderMapper extends BasicMapper<UserWorkOrderPO> {
+}
diff --git a/src/main/java/com/fengdu/gas/repository/mapper/UserWorkOrderRecordMapper.java b/src/main/java/com/fengdu/gas/repository/mapper/UserWorkOrderRecordMapper.java
new file mode 100644
index 0000000..8b86e32
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/mapper/UserWorkOrderRecordMapper.java
@@ -0,0 +1,10 @@
+package com.fengdu.gas.repository.mapper;
+
+import com.fengdu.gas.repository.BasicMapper;import com.fengdu.gas.repository.po.UserWorkOrderRecordPO;
+
+/**
+ * 用户工单执行记录 mapper
+ * @author zr
+ */
+public interface UserWorkOrderRecordMapper extends BasicMapper<UserWorkOrderRecordPO> {
+}
diff --git a/src/main/java/com/fengdu/gas/repository/mapper/WaterAreaMapper.java b/src/main/java/com/fengdu/gas/repository/mapper/WaterAreaMapper.java
new file mode 100644
index 0000000..e1db451
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/mapper/WaterAreaMapper.java
@@ -0,0 +1,10 @@
+package com.fengdu.gas.repository.mapper;
+
+import com.fengdu.gas.repository.BasicMapper;import com.fengdu.gas.repository.po.WaterAreaPO;
+
+/**
+ * 区域配置 mapper
+ * @author zr
+ */
+public interface WaterAreaMapper extends BasicMapper<WaterAreaPO> {
+}
diff --git a/src/main/java/com/fengdu/gas/repository/po/FacilityAlarmRecordPO.java b/src/main/java/com/fengdu/gas/repository/po/FacilityAlarmRecordPO.java
index d5b897a..f792c4e 100644
--- a/src/main/java/com/fengdu/gas/repository/po/FacilityAlarmRecordPO.java
+++ b/src/main/java/com/fengdu/gas/repository/po/FacilityAlarmRecordPO.java
@@ -71,6 +71,11 @@
 	@TableField(value = "columns_name")
 	private String columnsName;
 	/**
+	 * 参数名称
+	 */
+	@TableField(value = "columns_name")
+	private String columnsValue;
+	/**
 	 * 报警描述
 	 */
 	@TableField(value = "description")
diff --git a/src/main/java/com/fengdu/gas/repository/po/FacilityStateRecordPO.java b/src/main/java/com/fengdu/gas/repository/po/FacilityStateRecordPO.java
new file mode 100644
index 0000000..80715ed
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/po/FacilityStateRecordPO.java
@@ -0,0 +1,89 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.po;
+
+import lombok.Data;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+/**
+ * 设备状态记录
+ * @author zr
+ */
+@Data
+@TableName("facility_state_record")
+public class FacilityStateRecordPO implements Serializable {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 所属监控点id
+	 */
+	@TableField(value = "point_id")
+	private Long pointId;
+	/**
+	 * 所属监控点名称
+	 */
+	@TableField(value = "point_name")
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	@TableField(value = "facility_id")
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	@TableField(value = "facility_name")
+	private String facilityName;
+	/**
+	 * 状态
+	 */
+	@TableField(value = "state")
+	private Integer state;
+	/**
+	 * 状态变更时间
+	 */
+	@TableField(value = "last_time")
+	private String lastTime;
+	/**
+	 * 是否删除
+	 */
+	@TableLogic
+	@TableField(value = "is_delete")
+	private Integer isDelete;
+	/**
+	 * 创建时间
+	 */
+	@TableField(value = "create_time")
+	private Long createTime;
+	/**
+	 * 修改时间
+	 */
+	@TableField(value = "update_time")
+	private Timestamp updateTime;
+}
diff --git a/src/main/java/com/fengdu/gas/repository/po/SysRegionPO.java b/src/main/java/com/fengdu/gas/repository/po/SysRegionPO.java
new file mode 100644
index 0000000..16d338f
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/po/SysRegionPO.java
@@ -0,0 +1,125 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.po;
+
+import lombok.Data;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+
+/**
+ * 系统行政地区
+ * @author zr
+ */
+@Data
+@TableName("sys_region")
+public class SysRegionPO implements Serializable {
+	/**
+	 * 主键Id
+	 */
+	private Long id;
+	/**
+	 * 行政代码
+	 */
+	@TableField(value = "code")
+	private String code;
+	/**
+	 * 上级行政代码
+	 */
+	@TableField(value = "parent_code")
+	private String parentCode;
+	/**
+	 * 名称
+	 */
+	@TableField(value = "name")
+	private String name;
+	/**
+	 * 简称
+	 */
+	@TableField(value = "short_name")
+	private String shortName;
+	/**
+	 * 邮政编码
+	 */
+	@TableField(value = "zip_code")
+	private String zipCode;
+	/**
+	 * 区号
+	 */
+	@TableField(value = "city_code")
+	private String cityCode;
+	/**
+	 * 层级
+	 */
+	@TableField(value = "level")
+	private Integer level;
+	/**
+	 * 拼音
+	 */
+	@TableField(value = "pin_yin")
+	private String pinYin;
+	/**
+	 * 拼音简写
+	 */
+	@TableField(value = "pin_yin_short")
+	private String pinYinShort;
+	/**
+	 * 经度
+	 */
+	@TableField(value = "lng")
+	private BigDecimal lng;
+	/**
+	 * 维度
+	 */
+	@TableField(value = "lat")
+	private BigDecimal lat;
+	/**
+	 * 排序
+	 */
+	@TableField(value = "sort")
+	private Integer sort;
+	/**
+	 * 备注
+	 */
+	@TableField(value = "remark")
+	private String remark;
+	/**
+	 * 是否删除(逻辑删除)
+	 */
+	@TableLogic
+	@TableField(value = "is_delete")
+	private Integer isDelete;
+	/**
+	 * 数据创建时间
+	 */
+	@TableField(value = "create_time")
+	private Long createTime;
+	/**
+	 * 最后更新时间
+	 */
+	@TableField(value = "update_time")
+	private Timestamp updateTime;
+}
diff --git a/src/main/java/com/fengdu/gas/repository/po/UserWorkOrderPO.java b/src/main/java/com/fengdu/gas/repository/po/UserWorkOrderPO.java
new file mode 100644
index 0000000..8c0f2ba
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/po/UserWorkOrderPO.java
@@ -0,0 +1,114 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.po;
+
+import lombok.Data;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+/**
+ * 用户工单管理
+ * @author zr
+ */
+@Data
+@TableName("user_work_order")
+public class UserWorkOrderPO implements Serializable {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 工单编号
+	 */
+	@TableField(value = "code")
+	private String code;
+	/**
+	 * 工单名称
+	 */
+	@TableField(value = "name")
+	private String name;
+	/**
+	 * 工单类型(1设备维护 2设备维修 )
+	 */
+	@TableField(value = "type")
+	private Integer type;
+	/**
+	 * 内容描述
+	 */
+	@TableField(value = "content")
+	private String content;
+	/**
+	 * 备注
+	 */
+	@TableField(value = "remark")
+	private String remark;
+	/**
+	 * 工单地址
+	 */
+	@TableField(value = "address")
+	private String address;
+	/**
+	 * 执行状态(100未执行 200已执行)
+	 */
+	@TableField(value = "execute_state")
+	private Integer executeState;
+	/**
+	 * 工单创建人id
+	 */
+	@TableField(value = "create_user")
+	private Long createUser;
+	/**
+	 * 工单创建人名称
+	 */
+	@TableField(value = "create_user_name")
+	private String createUserName;
+	/**
+	 * 工单指定执行人id
+	 */
+	@TableField(value = "execute_user")
+	private Long executeUser;
+	/**
+	 * 工单指定执行人名称
+	 */
+	@TableField(value = "execute_user_name")
+	private String executeUserName;
+	/**
+	 * 是否删除
+	 */
+	@TableLogic
+	@TableField(value = "is_delete")
+	private Integer isDelete;
+	/**
+	 * 创建时间
+	 */
+	@TableField(value = "create_time")
+	private Long createTime;
+	/**
+	 * 修改时间
+	 */
+	@TableField(value = "update_time")
+	private Timestamp updateTime;
+}
diff --git a/src/main/java/com/fengdu/gas/repository/po/UserWorkOrderRecordPO.java b/src/main/java/com/fengdu/gas/repository/po/UserWorkOrderRecordPO.java
new file mode 100644
index 0000000..c258daf
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/po/UserWorkOrderRecordPO.java
@@ -0,0 +1,89 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.po;
+
+import lombok.Data;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+/**
+ * 用户工单执行记录
+ * @author zr
+ */
+@Data
+@TableName("user_work_order_record")
+public class UserWorkOrderRecordPO implements Serializable {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 工单id(关联user_work_order表id)
+	 */
+	@TableField(value = "work_order_id")
+	private Long workOrderId;
+	/**
+	 * 执行状态(100未执行 200已执行)
+	 */
+	@TableField(value = "execute_state")
+	private Integer executeState;
+	/**
+	 * 执行人id
+	 */
+	@TableField(value = "execute_user")
+	private Long executeUser;
+	/**
+	 * 执行人名称
+	 */
+	@TableField(value = "execute_user_name")
+	private String executeUserName;
+	/**
+	 * 执行日期
+	 */
+	@TableField(value = "execute_date")
+	private String executeDate;
+	/**
+	 * 备注
+	 */
+	@TableField(value = "remark")
+	private String remark;
+	/**
+	 * 是否删除
+	 */
+	@TableLogic
+	@TableField(value = "is_delete")
+	private Integer isDelete;
+	/**
+	 * 创建日期
+	 */
+	@TableField(value = "create_time")
+	private Long createTime;
+	/**
+	 * 修改日期
+	 */
+	@TableField(value = "update_time")
+	private Timestamp updateTime;
+}
diff --git a/src/main/java/com/fengdu/gas/repository/po/WaterAreaPO.java b/src/main/java/com/fengdu/gas/repository/po/WaterAreaPO.java
new file mode 100644
index 0000000..0c7c2e8
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/po/WaterAreaPO.java
@@ -0,0 +1,100 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.po;
+
+import lombok.Data;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+
+/**
+ * 区域配置
+ * @author zr
+ */
+@Data
+@TableName("water_area")
+public class WaterAreaPO implements Serializable {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 管网区域名称
+	 */
+	@TableField(value = "area_name")
+	private String areaName;
+	/**
+	 * 管网区域编号
+	 */
+	@TableField(value = "area_code")
+	private String areaCode;
+	/**
+	 * 经度
+	 */
+	@TableField(value = "lng")
+	private BigDecimal lng;
+	/**
+	 * 纬度
+	 */
+	@TableField(value = "lat")
+	private BigDecimal lat;
+	/**
+	 * 详细地址
+	 */
+	@TableField(value = "address")
+	private String address;
+	/**
+	 * 区域负责人
+	 */
+	@TableField(value = "area_user")
+	private String areaUser;
+	/**
+	 * 区域负责人名称
+	 */
+	@TableField(value = "area_user_name")
+	private String areaUserName;
+	/**
+	 * 备注
+	 */
+	@TableField(value = "remark")
+	private String remark;
+	/**
+	 * 创建日期
+	 */
+	@TableField(value = "create_time")
+	private Long createTime;
+	/**
+	 * 修改日期
+	 */
+	@TableField(value = "update_time")
+	private Timestamp updateTime;
+	/**
+	 * null
+	 */
+	@TableLogic
+	@TableField(value = "is_delete")
+	private Integer isDelete;
+}
diff --git a/src/main/java/com/fengdu/gas/repository/vo/FacilityStateRecordVO.java b/src/main/java/com/fengdu/gas/repository/vo/FacilityStateRecordVO.java
new file mode 100644
index 0000000..ad95070
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/vo/FacilityStateRecordVO.java
@@ -0,0 +1,54 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.vo;
+
+import lombok.Data;
+
+import com.fengdu.gas.common.util.LocalDateTimeUtil;
+import com.fengdu.gas.common.util.NumericUtil;
+import java.util.Objects;
+import com.fengdu.gas.repository.po.FacilityStateRecordPO;
+
+/**
+ * 设备状态记录
+ * @author zr
+ */
+@Data
+public class FacilityStateRecordVO extends FacilityStateRecordPO implements BasicVO {
+
+    @Override
+    public String getCreateTimeView() {
+        if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) {
+            return LocalDateTimeUtil.toFormatString(this.getCreateTime());
+        }
+        return "";
+    }
+
+    @Override
+    public String getUpdateTimeView() {
+        if (Objects.isNull(this.getUpdateTime())) {
+            return "";
+        }
+        return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime());
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/repository/vo/SysRegionVO.java b/src/main/java/com/fengdu/gas/repository/vo/SysRegionVO.java
new file mode 100644
index 0000000..67392a2
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/vo/SysRegionVO.java
@@ -0,0 +1,54 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.vo;
+
+import lombok.Data;
+
+import com.fengdu.gas.common.util.LocalDateTimeUtil;
+import com.fengdu.gas.common.util.NumericUtil;
+import java.util.Objects;
+import com.fengdu.gas.repository.po.SysRegionPO;
+
+/**
+ * 系统行政地区
+ * @author zr
+ */
+@Data
+public class SysRegionVO extends SysRegionPO implements BasicVO {
+
+    @Override
+    public String getCreateTimeView() {
+        if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) {
+            return LocalDateTimeUtil.toFormatString(this.getCreateTime());
+        }
+        return "";
+    }
+
+    @Override
+    public String getUpdateTimeView() {
+        if (Objects.isNull(this.getUpdateTime())) {
+            return "";
+        }
+        return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime());
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/repository/vo/UserWorkOrderRecordVO.java b/src/main/java/com/fengdu/gas/repository/vo/UserWorkOrderRecordVO.java
new file mode 100644
index 0000000..26a9000
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/vo/UserWorkOrderRecordVO.java
@@ -0,0 +1,54 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.vo;
+
+import lombok.Data;
+
+import com.fengdu.gas.common.util.LocalDateTimeUtil;
+import com.fengdu.gas.common.util.NumericUtil;
+import java.util.Objects;
+import com.fengdu.gas.repository.po.UserWorkOrderRecordPO;
+
+/**
+ * 用户工单执行记录
+ * @author zr
+ */
+@Data
+public class UserWorkOrderRecordVO extends UserWorkOrderRecordPO implements BasicVO {
+
+    @Override
+    public String getCreateTimeView() {
+        if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) {
+            return LocalDateTimeUtil.toFormatString(this.getCreateTime());
+        }
+        return "";
+    }
+
+    @Override
+    public String getUpdateTimeView() {
+        if (Objects.isNull(this.getUpdateTime())) {
+            return "";
+        }
+        return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime());
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/repository/vo/UserWorkOrderVO.java b/src/main/java/com/fengdu/gas/repository/vo/UserWorkOrderVO.java
new file mode 100644
index 0000000..63118d8
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/vo/UserWorkOrderVO.java
@@ -0,0 +1,54 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.vo;
+
+import lombok.Data;
+
+import com.fengdu.gas.common.util.LocalDateTimeUtil;
+import com.fengdu.gas.common.util.NumericUtil;
+import java.util.Objects;
+import com.fengdu.gas.repository.po.UserWorkOrderPO;
+
+/**
+ * 用户工单管理
+ * @author zr
+ */
+@Data
+public class UserWorkOrderVO extends UserWorkOrderPO implements BasicVO {
+
+    @Override
+    public String getCreateTimeView() {
+        if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) {
+            return LocalDateTimeUtil.toFormatString(this.getCreateTime());
+        }
+        return "";
+    }
+
+    @Override
+    public String getUpdateTimeView() {
+        if (Objects.isNull(this.getUpdateTime())) {
+            return "";
+        }
+        return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime());
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/repository/vo/WaterAreaVO.java b/src/main/java/com/fengdu/gas/repository/vo/WaterAreaVO.java
new file mode 100644
index 0000000..af504ff
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/vo/WaterAreaVO.java
@@ -0,0 +1,54 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.vo;
+
+import lombok.Data;
+
+import com.fengdu.gas.common.util.LocalDateTimeUtil;
+import com.fengdu.gas.common.util.NumericUtil;
+import java.util.Objects;
+import com.fengdu.gas.repository.po.WaterAreaPO;
+
+/**
+ * 区域配置
+ * @author zr
+ */
+@Data
+public class WaterAreaVO extends WaterAreaPO implements BasicVO {
+
+    @Override
+    public String getCreateTimeView() {
+        if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) {
+            return LocalDateTimeUtil.toFormatString(this.getCreateTime());
+        }
+        return "";
+    }
+
+    @Override
+    public String getUpdateTimeView() {
+        if (Objects.isNull(this.getUpdateTime())) {
+            return "";
+        }
+        return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime());
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/service/AdminService.java b/src/main/java/com/fengdu/gas/service/AdminService.java
index b8b5509..fc9250e 100644
--- a/src/main/java/com/fengdu/gas/service/AdminService.java
+++ b/src/main/java/com/fengdu/gas/service/AdminService.java
@@ -136,33 +136,59 @@
     }
 
     // 管理员登录
-    public ExecutedResult<ResAdminLogin> adminLogin(ReqAdminLogin request) {
+    // 管理员登录
+    public ExecutedResult<ResAdminLogin> adminLogin(ReqAdminLogin request) throws Exception {
+        Integer maxNumber = 3;
         AdminUserPO user = dao.get4Name(request.getUserName());
-        if(Objects.isNull(user)){
-            return ExecutedResult.failed("用户名或密码错误。");
+        //获取缓存中的验证码
+        String realCode = redisTemplate.opsForValue().get(request.getUuid());
+        if (realCode == null) {
+            return ExecutedResult.failed("验证码已失效,请重新获取~");
         }
-        if(BooleanUtils.isFalse(Objects.equals(user.getStatus(), EState.NORMAL.getValue()))) {
-            return ExecutedResult.failed("账号已锁定,请联系管理员。");
+        // 验证码校验
+        if (!request.getCode().equalsIgnoreCase(realCode)) {
+            return ExecutedResult.failed("验证码错误");
         }
-        if(BooleanUtils.isFalse(MD5Util.encrypt(request.getPassword() + ConstantFactory.KEY_PASSWORD).equals(user.getPassword()))) {
-            return ExecutedResult.failed("用户名或密码错误。");
+        //获取缓存中设备码
+        String machineCode = redisTemplate.opsForValue().get(request.getMachineCode());
+        if (StringUtil.isNotNullOrEmpty(machineCode) && Integer.valueOf(machineCode) >= maxNumber) {
+            return ExecutedResult.failed("登录次数限制,请10分钟后重新登录!");
         }
-        // 构建登录用户
-        LoginUserDTO loginUser = new LoginUserDTO();
-        loginUser.setUserId(user.getId().toString());
-        loginUser.setUserType(user.getUserType());
-        loginUser.setNickName(user.getNickName());
-        loginUser.setPhone(user.getContact());
+        if (checkPassword(user, request.getPassword())) {
+            // 构建登录用户
+            LoginUserDTO loginUser = new LoginUserDTO();
+            loginUser.setUserId(user.getId().toString());
+            loginUser.setUserType(user.getUserType());
+            loginUser.setNickName(user.getNickName());
+            loginUser.setPhone(user.getContact());
+            // 保存用户信息到jwt
+            String token = JWTUtil.getToken(loginUser);
+            ResAdminLogin result = this.getListPower4Admin(user);
+            result.setName(user.getNickName());
+            result.setToken(token);
+            return ExecutedResult.success(result);
+        } else {
+            Integer newAttempts = StringUtil.isNullOrEmpty(machineCode) ? 1 : Integer.valueOf(machineCode) + 1;
+            redisTemplate.opsForValue().set(request.getMachineCode(), newAttempts.toString());
+            redisTemplate.expire(request.getMachineCode(), 10, TimeUnit.MINUTES);
+        }
 
-        // 保存用户信息到jwt
-        String token = JWTUtil.getToken(loginUser);
 
-        ResAdminLogin result = this.getListPower4Admin(user);
-        result.setName(user.getNickName());
-        result.setToken(token);
-
-        return ExecutedResult.success(result);
+        return ExecutedResult.failed("账号或密码错误!");
     }
+    private static boolean checkPassword(AdminUserPO user, String passWord) throws Exception {
+        if (Objects.isNull(user)) {
+            return false;
+        }
+        if (BooleanUtils.isFalse(Objects.equals(user.getStatus(), EState.NORMAL.getValue()))) {
+            return false;
+        }
+        if (BooleanUtils.isFalse(MD5Util.encrypt(passWord + ConstantFactory.KEY_PASSWORD).equals(user.getPassword()))) {
+            return false;
+        }
+        return true;
+    }
+
     /**
      * 生成验证码图片并返回其 Base64 编码字符串
      *
@@ -488,7 +514,7 @@
 
             List<AdminMenuPO> listRoot = listMenu.stream().filter(c -> Objects.equals(c.getLevel(), 1)).collect(Collectors.toList());
             listRoot = listRoot.stream()
-                    .sorted(Comparator.comparing(AdminMenuPO::getSort))
+                    .sorted(Comparator.comparing(AdminMenuPO::getSort).reversed())
                     .collect(Collectors.toList());
             if (ListUtil.isNotNullOrEmpty(listRoot)) {
                 for (AdminMenuPO item : listRoot) {
diff --git a/src/main/java/com/fengdu/gas/service/FacilityStateRecordService.java b/src/main/java/com/fengdu/gas/service/FacilityStateRecordService.java
new file mode 100644
index 0000000..3fa5e32
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/FacilityStateRecordService.java
@@ -0,0 +1,256 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service;
+
+import com.fengdu.gas.common.*;
+import com.fengdu.gas.common.enums.*;
+import com.fengdu.gas.common.model.Tuple;
+import com.fengdu.gas.common.util.*;
+import com.fengdu.gas.repository.impl.WaterMonitoryPointMapperImpl;
+import com.fengdu.gas.repository.po.FacilityAlarmRecordPO;
+import com.fengdu.gas.service.convert.FacilityAlarmRecordConvert;
+import org.apache.commons.lang3.BooleanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.*;
+import java.util.stream.Collectors;
+import com.fengdu.gas.repository.impl.FacilityStateRecordMapperImpl;
+import com.fengdu.gas.repository.po.FacilityStateRecordPO;
+import com.fengdu.gas.entity.request.facilitystaterecord.ReqCreateFacilityStateRecord;
+import com.fengdu.gas.entity.request.facilitystaterecord.ReqModifyFacilityStateRecord;
+import com.fengdu.gas.entity.search.SearchFacilityStateRecord;
+import com.fengdu.gas.repository.vo.FacilityStateRecordVO;
+import com.fengdu.gas.service.convert.FacilityStateRecordConvert;
+
+/**
+ * 设备状态记录
+ * @author zr
+ */
+@Service
+public class FacilityStateRecordService extends BaseService {
+    @Autowired
+    private FacilityStateRecordMapperImpl mapper;
+    @Autowired
+    private WaterMonitoryPointMapperImpl waterMonitoryPointMapper;
+
+    public ExecutedResult<String> create(ReqCreateFacilityStateRecord request) {
+        //根据设备id获取最新设备状态历史记录
+        FacilityStateRecordPO lastTimeDesc = mapper.getLastTimeDesc(request.getFacilityId());
+        if(Objects.isNull(lastTimeDesc)){
+            FacilityStateRecordPO item = FacilityStateRecordConvert.INSTANCE.toCreate(request);
+            item.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+            item.setIsDelete(EYesOrNo.NO.getValue());
+            int rowCount = mapper.insert(item);
+            if(rowCount<1){
+                ExecutedResult.failed("数据创建失败");
+            }
+        }
+        if(Objects.nonNull(lastTimeDesc)&&lastTimeDesc.getState()!=request.getState()) {
+            FacilityStateRecordPO item = FacilityStateRecordConvert.INSTANCE.toCreate(request);
+            item.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+            item.setIsDelete(EYesOrNo.NO.getValue());
+            int rowCount = mapper.insert(item);
+            if(rowCount<1){
+                ExecutedResult.failed("数据创建失败");
+            }
+        }
+        return ExecutedResult.success();
+    }
+
+    public ExecutedResult<String> modify(ReqModifyFacilityStateRecord request) {
+        // 验证记录是否存在
+        ExecutedResult<FacilityStateRecordPO> checkExists = this.check4Id(request.getId());
+        if (checkExists.isFailed()) {
+            return ExecutedResult.failed(checkExists.getMsg());
+        }
+        // 转换po
+        FacilityStateRecordPO item = FacilityStateRecordConvert.INSTANCE.toModify(request);
+
+        int rowCount = mapper.updateById(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("编辑[设备状态记录]失败。");
+        }
+        return ExecutedResult.success();
+    }
+
+    public ExecutedResult<FacilityStateRecordVO> get(Long id) {
+        FacilityStateRecordVO result = new FacilityStateRecordVO();
+
+        FacilityStateRecordPO find = mapper.get(id);
+        if (null != find) {
+            // 转换vo
+            result = FacilityStateRecordConvert.INSTANCE.toVo(find);
+        }
+        return ExecutedResult.success(result);
+    }
+
+//    public ExecutedResult<String> stop(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<FacilityStateRecordPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        FacilityStateRecordPO item = new FacilityStateRecordPO();
+//        item.setId(id);
+//        item.setStatus(EState.DISABLED.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//           return ExecutedResult.failed("停用[设备状态记录]失败。");
+//       }
+//       return ExecutedResult.success();
+//   }
+//
+//    public ExecutedResult<String> enable(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<FacilityStateRecordPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        FacilityStateRecordPO item = new FacilityStateRecordPO();
+//        item.setId(id);
+//        item.setStatus(EState.NORMAL.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("启用[设备状态记录]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> setSort(ReqSetSort request) {
+//        // 验证记录是否存在
+//        ExecutedResult<FacilityStateRecordPO> checkExists = this.check4Id(request.getId());
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        FacilityStateRecordPO item = new FacilityStateRecordPO();
+//        item.setId(request.getId());
+//        item.setSort(request.getSort());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("设置[设备状态记录]排序值失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> listSetSort(ReqListSetSort request) {
+//        // id列表
+//        List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList());
+//        // 验证记录是否存在
+//        ExecutedResult<List<FacilityStateRecordPO>> checkExists = this.check4Id(listId);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//
+//        List<FacilityStateRecordPO> listUpdate = request.getList().stream()
+//                .map(c -> {
+//                    FacilityStateRecordPO item = new FacilityStateRecordPO();
+//                    item.setId(c.getId());
+//                    item.setSort(c.getSort());
+//                    return item;
+//                })
+//                .collect(Collectors.toList());
+//        Boolean result = mapper.modifyList(listUpdate);
+//        if (result) {
+//            return ExecutedResult.success();
+//        }
+//        return ExecutedResult.failed("[设备状态记录]设置排序值失败");
+//    }
+//
+//    public ExecutedResult<String> remove(Long id) {
+//        Boolean result = mapper.deleteLogic(id);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[设备状态记录]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> removeList(List<Long> ids) {
+//        Boolean result = mapper.deleteLogic(ids);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[设备状态记录]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+
+    public ExecutedResult<List<FacilityStateRecordVO>> getList(List<Long> listId) {
+        List<FacilityStateRecordVO> result = new ArrayList<>();
+
+        List<FacilityStateRecordPO> list = mapper.getList(listId);
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            // 转换vo
+            result = FacilityStateRecordConvert.INSTANCE.toVo(list);
+        }
+        return ExecutedResult.success(result);
+    }
+
+    public ExecutedResult<PagerResult<FacilityStateRecordVO>> search(SearchFacilityStateRecord search) {
+        // 处理创建时间范围-查询参数
+        Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange());
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) {
+            search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime());
+        }
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) {
+            search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime());
+        }
+
+        PagerResult<FacilityStateRecordPO> pageList = mapper.search(search);
+        List<FacilityStateRecordVO> listVo = new ArrayList<>();
+        List<FacilityStateRecordPO> list = pageList.getList();
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            pageList.setLastId(list.get(list.size() - 1).getId());
+            // 转换vo
+            listVo = FacilityStateRecordConvert.INSTANCE.toVo(list);
+        }
+        PagerResult<FacilityStateRecordVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo);
+        result.setLastId(pageList.getLastId());
+        return ExecutedResult.success(result);
+    }
+
+    protected ExecutedResult<FacilityStateRecordPO> check4Id(Long id) {
+        FacilityStateRecordPO exists = mapper.get(id);
+        if (Objects.isNull(exists)) {
+            return ExecutedResult.failed("[设备状态记录]不存在:" + id);
+        }
+        return ExecutedResult.success(exists);
+    }
+    protected ExecutedResult<List<FacilityStateRecordPO>> check4Id(List<Long> listId) {
+        // 从数据库查找设备状态记录
+        List<FacilityStateRecordPO> list = mapper.getList(listId);
+        if (ListUtil.isNullOrEmpty(list)) {
+            return ExecutedResult.failed("[设备状态记录]不存在." + listId);
+        }
+        // 数据库找到的id列表
+        List<Long> listIdFind = list.stream().map(FacilityStateRecordPO::getId).collect(Collectors.toList());
+        // 数量不一致
+        if (listId.size() != listIdFind.size()) {
+            // 筛选数据库不存在的设备状态记录
+            List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList());
+            if (ListUtil.isNullOrEmpty(list)) {
+                return ExecutedResult.failed("[设备状态记录]不存在." + listIdNotFound);
+            }
+        }
+        return ExecutedResult.success(list);
+    }}
diff --git a/src/main/java/com/fengdu/gas/service/SysRegionService.java b/src/main/java/com/fengdu/gas/service/SysRegionService.java
new file mode 100644
index 0000000..9496871
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/SysRegionService.java
@@ -0,0 +1,295 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service;
+
+import com.fengdu.gas.common.*;
+import com.fengdu.gas.common.enums.*;
+import com.fengdu.gas.common.model.Tuple;
+import com.fengdu.gas.common.util.*;
+import com.fengdu.gas.entity.response.region.ResRegionTree;
+import org.apache.commons.lang3.BooleanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.*;
+import java.util.stream.Collectors;
+import com.fengdu.gas.repository.impl.SysRegionMapperImpl;
+import com.fengdu.gas.repository.po.SysRegionPO;
+import com.fengdu.gas.entity.request.sysregion.ReqCreateSysRegion;
+import com.fengdu.gas.entity.request.sysregion.ReqModifySysRegion;
+import com.fengdu.gas.entity.search.SearchSysRegion;
+import com.fengdu.gas.repository.vo.SysRegionVO;
+import com.fengdu.gas.service.convert.SysRegionConvert;
+
+/**
+ * 系统行政地区
+ * @author zr
+ */
+@Service
+public class SysRegionService extends BaseService {
+    @Autowired
+    private SysRegionMapperImpl mapper;
+
+    public ExecutedResult<Long> create(ReqCreateSysRegion request) {
+        // 转换po
+        SysRegionPO item = SysRegionConvert.INSTANCE.toCreate(request);
+        // 设置状态
+        //item.setStatus(EState.NORMAL.getValue());
+        // 设置记录创建时间
+        item.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+        // 是否删除(逻辑删除)初始值
+        item.setIsDelete(EYesOrNo.NO.getValue());
+
+        int rowCount = mapper.insert(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("创建[系统行政地区]失败。");
+        }
+        return ExecutedResult.success(item.getId());
+    }
+
+    public ExecutedResult<String> modify(ReqModifySysRegion request) {
+        // 验证记录是否存在
+        ExecutedResult<SysRegionPO> checkExists = this.check4Id(request.getId());
+        if (checkExists.isFailed()) {
+            return ExecutedResult.failed(checkExists.getMsg());
+        }
+        // 转换po
+        SysRegionPO item = SysRegionConvert.INSTANCE.toModify(request);
+
+        int rowCount = mapper.updateById(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("编辑[系统行政地区]失败。");
+        }
+        return ExecutedResult.success();
+    }
+
+    public ExecutedResult<SysRegionVO> get(Long id) {
+        SysRegionVO result = new SysRegionVO();
+
+        SysRegionPO find = mapper.get(id);
+        if (null != find) {
+            // 转换vo
+            result = SysRegionConvert.INSTANCE.toVo(find);
+        }
+        return ExecutedResult.success(result);
+    }
+
+//    public ExecutedResult<String> stop(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<SysRegionPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        SysRegionPO item = new SysRegionPO();
+//        item.setId(id);
+//        item.setStatus(EState.DISABLED.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//           return ExecutedResult.failed("停用[系统行政地区]失败。");
+//       }
+//       return ExecutedResult.success();
+//   }
+//
+//    public ExecutedResult<String> enable(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<SysRegionPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        SysRegionPO item = new SysRegionPO();
+//        item.setId(id);
+//        item.setStatus(EState.NORMAL.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("启用[系统行政地区]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> setSort(ReqSetSort request) {
+//        // 验证记录是否存在
+//        ExecutedResult<SysRegionPO> checkExists = this.check4Id(request.getId());
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        SysRegionPO item = new SysRegionPO();
+//        item.setId(request.getId());
+//        item.setSort(request.getSort());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("设置[系统行政地区]排序值失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> listSetSort(ReqListSetSort request) {
+//        // id列表
+//        List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList());
+//        // 验证记录是否存在
+//        ExecutedResult<List<SysRegionPO>> checkExists = this.check4Id(listId);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//
+//        List<SysRegionPO> listUpdate = request.getList().stream()
+//                .map(c -> {
+//                    SysRegionPO item = new SysRegionPO();
+//                    item.setId(c.getId());
+//                    item.setSort(c.getSort());
+//                    return item;
+//                })
+//                .collect(Collectors.toList());
+//        Boolean result = mapper.modifyList(listUpdate);
+//        if (result) {
+//            return ExecutedResult.success();
+//        }
+//        return ExecutedResult.failed("[系统行政地区]设置排序值失败");
+//    }
+//
+//    public ExecutedResult<String> remove(Long id) {
+//        Boolean result = mapper.deleteLogic(id);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[系统行政地区]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> removeList(List<Long> ids) {
+//        Boolean result = mapper.deleteLogic(ids);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[系统行政地区]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+
+    public ExecutedResult<List<SysRegionVO>> getList(List<Long> listId) {
+        List<SysRegionVO> result = new ArrayList<>();
+
+        List<SysRegionPO> list = mapper.getList(listId);
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            // 转换vo
+            result = SysRegionConvert.INSTANCE.toVo(list);
+        }
+        return ExecutedResult.success(result);
+    }
+    public ExecutedResult<List<ResRegionTree>> getListChild(String code) {
+        List<SysRegionPO> list = null;
+        if (StringUtil.isNullOrEmpty(code)) {
+            list = mapper.getList4Level(1);
+        } else {
+            list = mapper.getList4Parent(code);
+        }
+        if (ListUtil.isNullOrEmpty(list)) {
+            return ExecutedResult.success(new ArrayList<>());
+        }
+        return ExecutedResult.success(CopierUtil.mapTo(list, ResRegionTree.class));
+    }
+    public ExecutedResult<PagerResult<SysRegionVO>> search(SearchSysRegion search) {
+        // 处理创建时间范围-查询参数
+        Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange());
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) {
+            search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime());
+        }
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) {
+            search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime());
+        }
+
+        PagerResult<SysRegionPO> pageList = mapper.search(search);
+        List<SysRegionVO> listVo = new ArrayList<>();
+        List<SysRegionPO> list = pageList.getList();
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            pageList.setLastId(list.get(list.size() - 1).getId());
+            // 转换vo
+            listVo = SysRegionConvert.INSTANCE.toVo(list);
+        }
+        PagerResult<SysRegionVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo);
+        result.setLastId(pageList.getLastId());
+        return ExecutedResult.success(result);
+    }
+    public ExecutedResult<ResRegionTree> currAndTree(String code) {
+        // 校验区域信息
+        ExecutedResult<SysRegionPO> checkRegion = this.check4Code(code);
+        if (checkRegion.isFailed()) {
+            return ExecutedResult.failed(checkRegion.getMsg());
+        }
+        SysRegionPO curr = checkRegion.getData();
+        ResRegionTree result = CopierUtil.mapTo(curr, ResRegionTree.class);
+
+        List<SysRegionPO> list = mapper.getList4LevelChild(curr.getLevel());
+        if (ListUtil.isNullOrEmpty(list)) {
+            return ExecutedResult.success(result);
+        }
+        this.fillChild(result, list);
+        return ExecutedResult.success(result);
+    }
+    protected ExecutedResult<SysRegionPO> check4Id(Long id) {
+        SysRegionPO exists = mapper.get(id);
+        if (Objects.isNull(exists)) {
+            return ExecutedResult.failed("[系统行政地区]不存在:" + id);
+        }
+        return ExecutedResult.success(exists);
+    }
+    public void fillChild(ResRegionTree view, List<SysRegionPO> list) {
+        List<SysRegionPO> listChild = list.stream()
+                .filter(c -> c.getParentCode().equals(view.getCode()))
+                .collect(Collectors.toList());
+        view.setChildren(new ArrayList<>());
+        if (ListUtil.isNullOrEmpty(listChild)) {
+            return;
+        }
+        listChild = listChild.stream()
+                .sorted(Comparator.comparing(SysRegionPO::getSort))
+                .collect(Collectors.toList());
+        for (SysRegionPO child : listChild) {
+            ResRegionTree viewChild = CopierUtil.mapTo(child, ResRegionTree.class);
+            this.fillChild(viewChild, list);
+            view.getChildren().add(viewChild);
+        }
+    }
+    public ExecutedResult<SysRegionPO> check4Code(String code) {
+        SysRegionPO exists = mapper.get4Code(code);
+        if (Objects.isNull(exists)) {
+            return ExecutedResult.failed("[系统行政地区]不存在:" + code);
+        }
+        return ExecutedResult.success(exists);
+    }
+    protected ExecutedResult<List<SysRegionPO>> check4Id(List<Long> listId) {
+        // 从数据库查找系统行政地区
+        List<SysRegionPO> list = mapper.getList(listId);
+        if (ListUtil.isNullOrEmpty(list)) {
+            return ExecutedResult.failed("[系统行政地区]不存在." + listId);
+        }
+        // 数据库找到的id列表
+        List<Long> listIdFind = list.stream().map(SysRegionPO::getId).collect(Collectors.toList());
+        // 数量不一致
+        if (listId.size() != listIdFind.size()) {
+            // 筛选数据库不存在的系统行政地区
+            List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList());
+            if (ListUtil.isNullOrEmpty(list)) {
+                return ExecutedResult.failed("[系统行政地区]不存在." + listIdNotFound);
+            }
+        }
+        return ExecutedResult.success(list);
+    }}
diff --git a/src/main/java/com/fengdu/gas/service/UserWorkOrderRecordService.java b/src/main/java/com/fengdu/gas/service/UserWorkOrderRecordService.java
new file mode 100644
index 0000000..d835742
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/UserWorkOrderRecordService.java
@@ -0,0 +1,244 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service;
+
+import com.fengdu.gas.common.*;
+import com.fengdu.gas.common.enums.*;
+import com.fengdu.gas.common.model.Tuple;
+import com.fengdu.gas.common.util.*;
+import org.apache.commons.lang3.BooleanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.*;
+import java.util.stream.Collectors;
+import com.fengdu.gas.repository.impl.UserWorkOrderRecordMapperImpl;
+import com.fengdu.gas.repository.po.UserWorkOrderRecordPO;
+import com.fengdu.gas.entity.request.userworkorderrecord.ReqCreateUserWorkOrderRecord;
+import com.fengdu.gas.entity.request.userworkorderrecord.ReqModifyUserWorkOrderRecord;
+import com.fengdu.gas.entity.search.SearchUserWorkOrderRecord;
+import com.fengdu.gas.repository.vo.UserWorkOrderRecordVO;
+import com.fengdu.gas.service.convert.UserWorkOrderRecordConvert;
+
+/**
+ * 用户工单执行记录
+ * @author zr
+ */
+@Service
+public class UserWorkOrderRecordService extends BaseService {
+    @Autowired
+    private UserWorkOrderRecordMapperImpl mapper;
+
+    public ExecutedResult<Long> create(ReqCreateUserWorkOrderRecord request) {
+        // 转换po
+        UserWorkOrderRecordPO item = UserWorkOrderRecordConvert.INSTANCE.toCreate(request);
+        // 设置状态
+        //item.setStatus(EState.NORMAL.getValue());
+        // 设置记录创建时间
+        item.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+        // 是否删除(逻辑删除)初始值
+        item.setIsDelete(EYesOrNo.NO.getValue());
+
+        int rowCount = mapper.insert(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("创建[用户工单执行记录]失败。");
+        }
+        return ExecutedResult.success(item.getId());
+    }
+
+    public ExecutedResult<String> modify(ReqModifyUserWorkOrderRecord request) {
+        // 验证记录是否存在
+        ExecutedResult<UserWorkOrderRecordPO> checkExists = this.check4Id(request.getId());
+        if (checkExists.isFailed()) {
+            return ExecutedResult.failed(checkExists.getMsg());
+        }
+        // 转换po
+        UserWorkOrderRecordPO item = UserWorkOrderRecordConvert.INSTANCE.toModify(request);
+
+        int rowCount = mapper.updateById(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("编辑[用户工单执行记录]失败。");
+        }
+        return ExecutedResult.success();
+    }
+
+    public ExecutedResult<UserWorkOrderRecordVO> get(Long id) {
+        UserWorkOrderRecordVO result = new UserWorkOrderRecordVO();
+
+        UserWorkOrderRecordPO find = mapper.get(id);
+        if (null != find) {
+            // 转换vo
+            result = UserWorkOrderRecordConvert.INSTANCE.toVo(find);
+        }
+        return ExecutedResult.success(result);
+    }
+
+//    public ExecutedResult<String> stop(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<UserWorkOrderRecordPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        UserWorkOrderRecordPO item = new UserWorkOrderRecordPO();
+//        item.setId(id);
+//        item.setStatus(EState.DISABLED.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//           return ExecutedResult.failed("停用[用户工单执行记录]失败。");
+//       }
+//       return ExecutedResult.success();
+//   }
+//
+//    public ExecutedResult<String> enable(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<UserWorkOrderRecordPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        UserWorkOrderRecordPO item = new UserWorkOrderRecordPO();
+//        item.setId(id);
+//        item.setStatus(EState.NORMAL.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("启用[用户工单执行记录]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> setSort(ReqSetSort request) {
+//        // 验证记录是否存在
+//        ExecutedResult<UserWorkOrderRecordPO> checkExists = this.check4Id(request.getId());
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        UserWorkOrderRecordPO item = new UserWorkOrderRecordPO();
+//        item.setId(request.getId());
+//        item.setSort(request.getSort());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("设置[用户工单执行记录]排序值失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> listSetSort(ReqListSetSort request) {
+//        // id列表
+//        List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList());
+//        // 验证记录是否存在
+//        ExecutedResult<List<UserWorkOrderRecordPO>> checkExists = this.check4Id(listId);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//
+//        List<UserWorkOrderRecordPO> listUpdate = request.getList().stream()
+//                .map(c -> {
+//                    UserWorkOrderRecordPO item = new UserWorkOrderRecordPO();
+//                    item.setId(c.getId());
+//                    item.setSort(c.getSort());
+//                    return item;
+//                })
+//                .collect(Collectors.toList());
+//        Boolean result = mapper.modifyList(listUpdate);
+//        if (result) {
+//            return ExecutedResult.success();
+//        }
+//        return ExecutedResult.failed("[用户工单执行记录]设置排序值失败");
+//    }
+//
+//    public ExecutedResult<String> remove(Long id) {
+//        Boolean result = mapper.deleteLogic(id);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[用户工单执行记录]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> removeList(List<Long> ids) {
+//        Boolean result = mapper.deleteLogic(ids);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[用户工单执行记录]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+
+    public ExecutedResult<List<UserWorkOrderRecordVO>> getList(List<Long> listId) {
+        List<UserWorkOrderRecordVO> result = new ArrayList<>();
+
+        List<UserWorkOrderRecordPO> list = mapper.getList(listId);
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            // 转换vo
+            result = UserWorkOrderRecordConvert.INSTANCE.toVo(list);
+        }
+        return ExecutedResult.success(result);
+    }
+
+    public ExecutedResult<PagerResult<UserWorkOrderRecordVO>> search(SearchUserWorkOrderRecord search) {
+        // 处理创建时间范围-查询参数
+        Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange());
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) {
+            search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime());
+        }
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) {
+            search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime());
+        }
+
+        PagerResult<UserWorkOrderRecordPO> pageList = mapper.search(search);
+        List<UserWorkOrderRecordVO> listVo = new ArrayList<>();
+        List<UserWorkOrderRecordPO> list = pageList.getList();
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            pageList.setLastId(list.get(list.size() - 1).getId());
+            // 转换vo
+            listVo = UserWorkOrderRecordConvert.INSTANCE.toVo(list);
+        }
+        PagerResult<UserWorkOrderRecordVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo);
+        result.setLastId(pageList.getLastId());
+        return ExecutedResult.success(result);
+    }
+
+    protected ExecutedResult<UserWorkOrderRecordPO> check4Id(Long id) {
+        UserWorkOrderRecordPO exists = mapper.get(id);
+        if (Objects.isNull(exists)) {
+            return ExecutedResult.failed("[用户工单执行记录]不存在:" + id);
+        }
+        return ExecutedResult.success(exists);
+    }
+    protected ExecutedResult<List<UserWorkOrderRecordPO>> check4Id(List<Long> listId) {
+        // 从数据库查找用户工单执行记录
+        List<UserWorkOrderRecordPO> list = mapper.getList(listId);
+        if (ListUtil.isNullOrEmpty(list)) {
+            return ExecutedResult.failed("[用户工单执行记录]不存在." + listId);
+        }
+        // 数据库找到的id列表
+        List<Long> listIdFind = list.stream().map(UserWorkOrderRecordPO::getId).collect(Collectors.toList());
+        // 数量不一致
+        if (listId.size() != listIdFind.size()) {
+            // 筛选数据库不存在的用户工单执行记录
+            List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList());
+            if (ListUtil.isNullOrEmpty(list)) {
+                return ExecutedResult.failed("[用户工单执行记录]不存在." + listIdNotFound);
+            }
+        }
+        return ExecutedResult.success(list);
+    }}
diff --git a/src/main/java/com/fengdu/gas/service/UserWorkOrderService.java b/src/main/java/com/fengdu/gas/service/UserWorkOrderService.java
new file mode 100644
index 0000000..e9fffe6
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/UserWorkOrderService.java
@@ -0,0 +1,244 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service;
+
+import com.fengdu.gas.common.*;
+import com.fengdu.gas.common.enums.*;
+import com.fengdu.gas.common.model.Tuple;
+import com.fengdu.gas.common.util.*;
+import org.apache.commons.lang3.BooleanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.*;
+import java.util.stream.Collectors;
+import com.fengdu.gas.repository.impl.UserWorkOrderMapperImpl;
+import com.fengdu.gas.repository.po.UserWorkOrderPO;
+import com.fengdu.gas.entity.request.userworkorder.ReqCreateUserWorkOrder;
+import com.fengdu.gas.entity.request.userworkorder.ReqModifyUserWorkOrder;
+import com.fengdu.gas.entity.search.SearchUserWorkOrder;
+import com.fengdu.gas.repository.vo.UserWorkOrderVO;
+import com.fengdu.gas.service.convert.UserWorkOrderConvert;
+
+/**
+ * 用户工单管理
+ * @author zr
+ */
+@Service
+public class UserWorkOrderService extends BaseService {
+    @Autowired
+    private UserWorkOrderMapperImpl mapper;
+
+    public ExecutedResult<Long> create(ReqCreateUserWorkOrder request) {
+        // 转换po
+        UserWorkOrderPO item = UserWorkOrderConvert.INSTANCE.toCreate(request);
+        // 设置状态
+        //item.setStatus(EState.NORMAL.getValue());
+        // 设置记录创建时间
+        item.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+        // 是否删除(逻辑删除)初始值
+        item.setIsDelete(EYesOrNo.NO.getValue());
+
+        int rowCount = mapper.insert(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("创建[用户工单管理]失败。");
+        }
+        return ExecutedResult.success(item.getId());
+    }
+
+    public ExecutedResult<String> modify(ReqModifyUserWorkOrder request) {
+        // 验证记录是否存在
+        ExecutedResult<UserWorkOrderPO> checkExists = this.check4Id(request.getId());
+        if (checkExists.isFailed()) {
+            return ExecutedResult.failed(checkExists.getMsg());
+        }
+        // 转换po
+        UserWorkOrderPO item = UserWorkOrderConvert.INSTANCE.toModify(request);
+
+        int rowCount = mapper.updateById(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("编辑[用户工单管理]失败。");
+        }
+        return ExecutedResult.success();
+    }
+
+    public ExecutedResult<UserWorkOrderVO> get(Long id) {
+        UserWorkOrderVO result = new UserWorkOrderVO();
+
+        UserWorkOrderPO find = mapper.get(id);
+        if (null != find) {
+            // 转换vo
+            result = UserWorkOrderConvert.INSTANCE.toVo(find);
+        }
+        return ExecutedResult.success(result);
+    }
+
+//    public ExecutedResult<String> stop(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<UserWorkOrderPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        UserWorkOrderPO item = new UserWorkOrderPO();
+//        item.setId(id);
+//        item.setStatus(EState.DISABLED.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//           return ExecutedResult.failed("停用[用户工单管理]失败。");
+//       }
+//       return ExecutedResult.success();
+//   }
+//
+//    public ExecutedResult<String> enable(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<UserWorkOrderPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        UserWorkOrderPO item = new UserWorkOrderPO();
+//        item.setId(id);
+//        item.setStatus(EState.NORMAL.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("启用[用户工单管理]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> setSort(ReqSetSort request) {
+//        // 验证记录是否存在
+//        ExecutedResult<UserWorkOrderPO> checkExists = this.check4Id(request.getId());
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        UserWorkOrderPO item = new UserWorkOrderPO();
+//        item.setId(request.getId());
+//        item.setSort(request.getSort());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("设置[用户工单管理]排序值失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> listSetSort(ReqListSetSort request) {
+//        // id列表
+//        List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList());
+//        // 验证记录是否存在
+//        ExecutedResult<List<UserWorkOrderPO>> checkExists = this.check4Id(listId);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//
+//        List<UserWorkOrderPO> listUpdate = request.getList().stream()
+//                .map(c -> {
+//                    UserWorkOrderPO item = new UserWorkOrderPO();
+//                    item.setId(c.getId());
+//                    item.setSort(c.getSort());
+//                    return item;
+//                })
+//                .collect(Collectors.toList());
+//        Boolean result = mapper.modifyList(listUpdate);
+//        if (result) {
+//            return ExecutedResult.success();
+//        }
+//        return ExecutedResult.failed("[用户工单管理]设置排序值失败");
+//    }
+//
+//    public ExecutedResult<String> remove(Long id) {
+//        Boolean result = mapper.deleteLogic(id);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[用户工单管理]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> removeList(List<Long> ids) {
+//        Boolean result = mapper.deleteLogic(ids);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[用户工单管理]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+
+    public ExecutedResult<List<UserWorkOrderVO>> getList(List<Long> listId) {
+        List<UserWorkOrderVO> result = new ArrayList<>();
+
+        List<UserWorkOrderPO> list = mapper.getList(listId);
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            // 转换vo
+            result = UserWorkOrderConvert.INSTANCE.toVo(list);
+        }
+        return ExecutedResult.success(result);
+    }
+
+    public ExecutedResult<PagerResult<UserWorkOrderVO>> search(SearchUserWorkOrder search) {
+        // 处理创建时间范围-查询参数
+        Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange());
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) {
+            search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime());
+        }
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) {
+            search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime());
+        }
+
+        PagerResult<UserWorkOrderPO> pageList = mapper.search(search);
+        List<UserWorkOrderVO> listVo = new ArrayList<>();
+        List<UserWorkOrderPO> list = pageList.getList();
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            pageList.setLastId(list.get(list.size() - 1).getId());
+            // 转换vo
+            listVo = UserWorkOrderConvert.INSTANCE.toVo(list);
+        }
+        PagerResult<UserWorkOrderVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo);
+        result.setLastId(pageList.getLastId());
+        return ExecutedResult.success(result);
+    }
+
+    protected ExecutedResult<UserWorkOrderPO> check4Id(Long id) {
+        UserWorkOrderPO exists = mapper.get(id);
+        if (Objects.isNull(exists)) {
+            return ExecutedResult.failed("[用户工单管理]不存在:" + id);
+        }
+        return ExecutedResult.success(exists);
+    }
+    protected ExecutedResult<List<UserWorkOrderPO>> check4Id(List<Long> listId) {
+        // 从数据库查找用户工单管理
+        List<UserWorkOrderPO> list = mapper.getList(listId);
+        if (ListUtil.isNullOrEmpty(list)) {
+            return ExecutedResult.failed("[用户工单管理]不存在." + listId);
+        }
+        // 数据库找到的id列表
+        List<Long> listIdFind = list.stream().map(UserWorkOrderPO::getId).collect(Collectors.toList());
+        // 数量不一致
+        if (listId.size() != listIdFind.size()) {
+            // 筛选数据库不存在的用户工单管理
+            List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList());
+            if (ListUtil.isNullOrEmpty(list)) {
+                return ExecutedResult.failed("[用户工单管理]不存在." + listIdNotFound);
+            }
+        }
+        return ExecutedResult.success(list);
+    }}
diff --git a/src/main/java/com/fengdu/gas/service/WaterAreaService.java b/src/main/java/com/fengdu/gas/service/WaterAreaService.java
new file mode 100644
index 0000000..ac4c5f9
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/WaterAreaService.java
@@ -0,0 +1,244 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service;
+
+import com.fengdu.gas.common.*;
+import com.fengdu.gas.common.enums.*;
+import com.fengdu.gas.common.model.Tuple;
+import com.fengdu.gas.common.util.*;
+import org.apache.commons.lang3.BooleanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.*;
+import java.util.stream.Collectors;
+import com.fengdu.gas.repository.impl.WaterAreaMapperImpl;
+import com.fengdu.gas.repository.po.WaterAreaPO;
+import com.fengdu.gas.entity.request.waterarea.ReqCreateWaterArea;
+import com.fengdu.gas.entity.request.waterarea.ReqModifyWaterArea;
+import com.fengdu.gas.entity.search.SearchWaterArea;
+import com.fengdu.gas.repository.vo.WaterAreaVO;
+import com.fengdu.gas.service.convert.WaterAreaConvert;
+
+/**
+ * 区域配置
+ * @author zr
+ */
+@Service
+public class WaterAreaService extends BaseService {
+    @Autowired
+    private WaterAreaMapperImpl mapper;
+
+    public ExecutedResult<Long> create(ReqCreateWaterArea request) {
+        // 转换po
+        WaterAreaPO item = WaterAreaConvert.INSTANCE.toCreate(request);
+        // 设置状态
+        //item.setStatus(EState.NORMAL.getValue());
+        // 设置记录创建时间
+        item.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+        // 是否删除(逻辑删除)初始值
+        item.setIsDelete(EYesOrNo.NO.getValue());
+
+        int rowCount = mapper.insert(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("创建[区域配置]失败。");
+        }
+        return ExecutedResult.success(item.getId());
+    }
+
+    public ExecutedResult<String> modify(ReqModifyWaterArea request) {
+        // 验证记录是否存在
+        ExecutedResult<WaterAreaPO> checkExists = this.check4Id(request.getId());
+        if (checkExists.isFailed()) {
+            return ExecutedResult.failed(checkExists.getMsg());
+        }
+        // 转换po
+        WaterAreaPO item = WaterAreaConvert.INSTANCE.toModify(request);
+
+        int rowCount = mapper.updateById(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("编辑[区域配置]失败。");
+        }
+        return ExecutedResult.success();
+    }
+
+    public ExecutedResult<WaterAreaVO> get(Long id) {
+        WaterAreaVO result = new WaterAreaVO();
+
+        WaterAreaPO find = mapper.get(id);
+        if (null != find) {
+            // 转换vo
+            result = WaterAreaConvert.INSTANCE.toVo(find);
+        }
+        return ExecutedResult.success(result);
+    }
+
+//    public ExecutedResult<String> stop(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<WaterAreaPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        WaterAreaPO item = new WaterAreaPO();
+//        item.setId(id);
+//        item.setStatus(EState.DISABLED.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//           return ExecutedResult.failed("停用[区域配置]失败。");
+//       }
+//       return ExecutedResult.success();
+//   }
+//
+//    public ExecutedResult<String> enable(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<WaterAreaPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        WaterAreaPO item = new WaterAreaPO();
+//        item.setId(id);
+//        item.setStatus(EState.NORMAL.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("启用[区域配置]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> setSort(ReqSetSort request) {
+//        // 验证记录是否存在
+//        ExecutedResult<WaterAreaPO> checkExists = this.check4Id(request.getId());
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        WaterAreaPO item = new WaterAreaPO();
+//        item.setId(request.getId());
+//        item.setSort(request.getSort());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("设置[区域配置]排序值失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> listSetSort(ReqListSetSort request) {
+//        // id列表
+//        List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList());
+//        // 验证记录是否存在
+//        ExecutedResult<List<WaterAreaPO>> checkExists = this.check4Id(listId);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//
+//        List<WaterAreaPO> listUpdate = request.getList().stream()
+//                .map(c -> {
+//                    WaterAreaPO item = new WaterAreaPO();
+//                    item.setId(c.getId());
+//                    item.setSort(c.getSort());
+//                    return item;
+//                })
+//                .collect(Collectors.toList());
+//        Boolean result = mapper.modifyList(listUpdate);
+//        if (result) {
+//            return ExecutedResult.success();
+//        }
+//        return ExecutedResult.failed("[区域配置]设置排序值失败");
+//    }
+//
+//    public ExecutedResult<String> remove(Long id) {
+//        Boolean result = mapper.deleteLogic(id);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[区域配置]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> removeList(List<Long> ids) {
+//        Boolean result = mapper.deleteLogic(ids);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[区域配置]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+
+    public ExecutedResult<List<WaterAreaVO>> getList(List<Long> listId) {
+        List<WaterAreaVO> result = new ArrayList<>();
+
+        List<WaterAreaPO> list = mapper.getList(listId);
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            // 转换vo
+            result = WaterAreaConvert.INSTANCE.toVo(list);
+        }
+        return ExecutedResult.success(result);
+    }
+
+    public ExecutedResult<PagerResult<WaterAreaVO>> search(SearchWaterArea search) {
+        // 处理创建时间范围-查询参数
+        Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange());
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) {
+            search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime());
+        }
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) {
+            search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime());
+        }
+
+        PagerResult<WaterAreaPO> pageList = mapper.search(search);
+        List<WaterAreaVO> listVo = new ArrayList<>();
+        List<WaterAreaPO> list = pageList.getList();
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            pageList.setLastId(list.get(list.size() - 1).getId());
+            // 转换vo
+            listVo = WaterAreaConvert.INSTANCE.toVo(list);
+        }
+        PagerResult<WaterAreaVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo);
+        result.setLastId(pageList.getLastId());
+        return ExecutedResult.success(result);
+    }
+
+    protected ExecutedResult<WaterAreaPO> check4Id(Long id) {
+        WaterAreaPO exists = mapper.get(id);
+        if (Objects.isNull(exists)) {
+            return ExecutedResult.failed("[区域配置]不存在:" + id);
+        }
+        return ExecutedResult.success(exists);
+    }
+    protected ExecutedResult<List<WaterAreaPO>> check4Id(List<Long> listId) {
+        // 从数据库查找区域配置
+        List<WaterAreaPO> list = mapper.getList(listId);
+        if (ListUtil.isNullOrEmpty(list)) {
+            return ExecutedResult.failed("[区域配置]不存在." + listId);
+        }
+        // 数据库找到的id列表
+        List<Long> listIdFind = list.stream().map(WaterAreaPO::getId).collect(Collectors.toList());
+        // 数量不一致
+        if (listId.size() != listIdFind.size()) {
+            // 筛选数据库不存在的区域配置
+            List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList());
+            if (ListUtil.isNullOrEmpty(list)) {
+                return ExecutedResult.failed("[区域配置]不存在." + listIdNotFound);
+            }
+        }
+        return ExecutedResult.success(list);
+    }}
diff --git a/src/main/java/com/fengdu/gas/service/convert/FacilityStateRecordConvert.java b/src/main/java/com/fengdu/gas/service/convert/FacilityStateRecordConvert.java
new file mode 100644
index 0000000..1d6fdb0
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/convert/FacilityStateRecordConvert.java
@@ -0,0 +1,48 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service.convert;
+
+import com.fengdu.gas.entity.request.facilitystaterecord.ReqCreateFacilityStateRecord;
+import com.fengdu.gas.entity.request.facilitystaterecord.ReqModifyFacilityStateRecord;
+import com.fengdu.gas.repository.po.FacilityStateRecordPO;
+import com.fengdu.gas.repository.vo.FacilityStateRecordVO;
+
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 设备状态记录
+ * @author {#=author}
+ */
+@Mapper
+public interface FacilityStateRecordConvert {
+    FacilityStateRecordConvert INSTANCE = Mappers.getMapper(FacilityStateRecordConvert.class);
+
+    FacilityStateRecordPO toCreate(ReqCreateFacilityStateRecord request);
+    FacilityStateRecordPO toModify(ReqModifyFacilityStateRecord request);
+
+    FacilityStateRecordVO toVo(FacilityStateRecordPO item);
+    List<FacilityStateRecordVO> toVo(List<FacilityStateRecordPO> list);
+}
diff --git a/src/main/java/com/fengdu/gas/service/convert/SysRegionConvert.java b/src/main/java/com/fengdu/gas/service/convert/SysRegionConvert.java
new file mode 100644
index 0000000..5c16f05
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/convert/SysRegionConvert.java
@@ -0,0 +1,48 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service.convert;
+
+import com.fengdu.gas.entity.request.sysregion.ReqCreateSysRegion;
+import com.fengdu.gas.entity.request.sysregion.ReqModifySysRegion;
+import com.fengdu.gas.repository.po.SysRegionPO;
+import com.fengdu.gas.repository.vo.SysRegionVO;
+
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 系统行政地区
+ * @author {#=author}
+ */
+@Mapper
+public interface SysRegionConvert {
+    SysRegionConvert INSTANCE = Mappers.getMapper(SysRegionConvert.class);
+
+    SysRegionPO toCreate(ReqCreateSysRegion request);
+    SysRegionPO toModify(ReqModifySysRegion request);
+
+    SysRegionVO toVo(SysRegionPO item);
+    List<SysRegionVO> toVo(List<SysRegionPO> list);
+}
diff --git a/src/main/java/com/fengdu/gas/service/convert/UserWorkOrderConvert.java b/src/main/java/com/fengdu/gas/service/convert/UserWorkOrderConvert.java
new file mode 100644
index 0000000..95ee987
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/convert/UserWorkOrderConvert.java
@@ -0,0 +1,48 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service.convert;
+
+import com.fengdu.gas.entity.request.userworkorder.ReqCreateUserWorkOrder;
+import com.fengdu.gas.entity.request.userworkorder.ReqModifyUserWorkOrder;
+import com.fengdu.gas.repository.po.UserWorkOrderPO;
+import com.fengdu.gas.repository.vo.UserWorkOrderVO;
+
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 用户工单管理
+ * @author {#=author}
+ */
+@Mapper
+public interface UserWorkOrderConvert {
+    UserWorkOrderConvert INSTANCE = Mappers.getMapper(UserWorkOrderConvert.class);
+
+    UserWorkOrderPO toCreate(ReqCreateUserWorkOrder request);
+    UserWorkOrderPO toModify(ReqModifyUserWorkOrder request);
+
+    UserWorkOrderVO toVo(UserWorkOrderPO item);
+    List<UserWorkOrderVO> toVo(List<UserWorkOrderPO> list);
+}
diff --git a/src/main/java/com/fengdu/gas/service/convert/UserWorkOrderRecordConvert.java b/src/main/java/com/fengdu/gas/service/convert/UserWorkOrderRecordConvert.java
new file mode 100644
index 0000000..f6bf428
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/convert/UserWorkOrderRecordConvert.java
@@ -0,0 +1,48 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service.convert;
+
+import com.fengdu.gas.entity.request.userworkorderrecord.ReqCreateUserWorkOrderRecord;
+import com.fengdu.gas.entity.request.userworkorderrecord.ReqModifyUserWorkOrderRecord;
+import com.fengdu.gas.repository.po.UserWorkOrderRecordPO;
+import com.fengdu.gas.repository.vo.UserWorkOrderRecordVO;
+
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 用户工单执行记录
+ * @author {#=author}
+ */
+@Mapper
+public interface UserWorkOrderRecordConvert {
+    UserWorkOrderRecordConvert INSTANCE = Mappers.getMapper(UserWorkOrderRecordConvert.class);
+
+    UserWorkOrderRecordPO toCreate(ReqCreateUserWorkOrderRecord request);
+    UserWorkOrderRecordPO toModify(ReqModifyUserWorkOrderRecord request);
+
+    UserWorkOrderRecordVO toVo(UserWorkOrderRecordPO item);
+    List<UserWorkOrderRecordVO> toVo(List<UserWorkOrderRecordPO> list);
+}
diff --git a/src/main/java/com/fengdu/gas/service/convert/WaterAreaConvert.java b/src/main/java/com/fengdu/gas/service/convert/WaterAreaConvert.java
new file mode 100644
index 0000000..5f7b957
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/convert/WaterAreaConvert.java
@@ -0,0 +1,48 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service.convert;
+
+import com.fengdu.gas.entity.request.waterarea.ReqCreateWaterArea;
+import com.fengdu.gas.entity.request.waterarea.ReqModifyWaterArea;
+import com.fengdu.gas.repository.po.WaterAreaPO;
+import com.fengdu.gas.repository.vo.WaterAreaVO;
+
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 区域配置
+ * @author {#=author}
+ */
+@Mapper
+public interface WaterAreaConvert {
+    WaterAreaConvert INSTANCE = Mappers.getMapper(WaterAreaConvert.class);
+
+    WaterAreaPO toCreate(ReqCreateWaterArea request);
+    WaterAreaPO toModify(ReqModifyWaterArea request);
+
+    WaterAreaVO toVo(WaterAreaPO item);
+    List<WaterAreaVO> toVo(List<WaterAreaPO> list);
+}
diff --git a/src/test/java/com/fengdu/gas/GenCodeGauss.java b/src/test/java/com/fengdu/gas/GenCodeGauss.java
index 23b77ce..3f70249 100644
--- a/src/test/java/com/fengdu/gas/GenCodeGauss.java
+++ b/src/test/java/com/fengdu/gas/GenCodeGauss.java
@@ -243,7 +243,7 @@
      * 只生成以下配置的表
      */
     private static final List<String> ONLY_TABLES = Arrays.asList(
-       "common_parameters"
+       "user_work_order","user_work_order_record"
     );
 
     public static void main(String[] args) {

--
Gitblit v1.9.3