From f73dbcd6c21d28ab1e98840eee73c6d09bd0f929 Mon Sep 17 00:00:00 2001
From: ke <893754509@qq.com>
Date: Tue, 27 Aug 2024 17:31:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev

---
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java                 |    2 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/controller/DbReportController.java                |   39 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResManagePersonServiceImpl.java |    9 
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java     |   36 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/IExtremumService.java                     |   17 
 skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java              |   11 
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztods/vo/WaterDataTermitesVO.java            |   12 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/mapper/ExtremumMapper.java                        |    8 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/impl/ExtremumServiceImpl.java             |   43 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/entity/ExtremumDO.java                            |   76 +++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectPersonConfigServiceImpl.java  |   29 +
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/message/entity/MessageRecord.java              |   18 
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStepReportVO.java                      |    1 
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgTypeVO.java                            |    1 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java                     |    9 
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java              |    4 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml                     |    3 
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProgressReportDO.java                  |   25 +
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStatisDeviceVO.java                    |   10 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/WaterDataTermitesController.java    |   49 ++
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztods/entity/WaterDataTermites.java          |   35 +
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java                |   37 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/WaterDataTermitesMapper.java            |   14 
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/intelligentCall/vo/CallTaskStatistic.java      |    5 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/WaterDataTermitesServiceImpl.java |   19 
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java                     |    3 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.java            |    4 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.xml              |    1 
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java                    |    4 
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DTO/ProjectSearchDTO.java                   |    5 
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/PtypeVO.java                             |   22 +
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml                 |  192 ++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java                  |    3 
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java    |    2 
 skjcmanager/skjcmanager-service-api/skjcmanager-system-api/src/main/java/cn/gistack/system/entity/Dept.java                       |    6 
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java             |    8 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/WaterDataTermitesMapper.xml             |   10 
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStatisProVO.java                       |   26 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/TbWordVO.java                           |    6 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml                   |   11 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.xml             |   44 ++
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java          |    8 
 skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/vo/SmsRecordVO.java                |   37 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxServiceImpl.java                   |    2 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java       |   24 +
 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProjectInfoDO.java                     |    3 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java          |  204 +++++++--
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java        |   13 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/IWaterDataTermitesService.java         |   16 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml                      |   90 +++
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java           |   47 +
 51 files changed, 1,201 insertions(+), 102 deletions(-)

diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java b/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java
index db8a8dc..c8db663 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java
@@ -91,4 +91,15 @@
 	@ApiModelProperty("是否已删除")
 	private Integer isDeleted;
 
+	/**
+	 * 水库guid
+	 */
+	@ApiModelProperty("水库guid")
+	private String resGuid;
+
+	/**
+	 * 告警规则id
+	 */
+	private Long alarmRuleId;
+
 }
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/vo/SmsRecordVO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/vo/SmsRecordVO.java
index 8366ec0..3db65e7 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/vo/SmsRecordVO.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/vo/SmsRecordVO.java
@@ -14,4 +14,41 @@
 	 * 是否导出,不为空是导出,不分页
 	 */
 	private Integer isExport;
+
+	/**
+	 * 开始时间
+	 */
+	private String startTime;
+
+	/**
+	 * 结束时间
+	 */
+	private String endTime;
+
+	/**
+	 * 消息记录类型  1:短信 2:站内信
+	 */
+	private String type;
+
+
+	/**
+	 * 消息类型
+	 */
+	private String smsType;
+
+	/**
+	 * 水库名称
+	 */
+	private String resName;
+
+	/**
+	 * 规则名称
+	 */
+	private String ruleName;
+
+	/**
+	 * 用户名
+	 */
+	private String userName;
+
 }
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/intelligentCall/vo/CallTaskStatistic.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/intelligentCall/vo/CallTaskStatistic.java
index 4a36894..b1378a3 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/intelligentCall/vo/CallTaskStatistic.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/intelligentCall/vo/CallTaskStatistic.java
@@ -50,6 +50,11 @@
 	private String executeTime;
 
 	/**
+	 * 任务最后修改时间
+	 */
+	private String gmtModified;
+
+	/**
 	 * 被叫号码量
 	 */
 	private String calleeNumberCount;
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/message/entity/MessageRecord.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/message/entity/MessageRecord.java
index 695b0d3..0f5792f 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/message/entity/MessageRecord.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/message/entity/MessageRecord.java
@@ -46,10 +46,24 @@
 	 */
 	private String source;
 
+	/**
+	 * 水库guid
+	 */
 	private String resGuid;
 
+	/**
+	 * 反馈
+	 */
 	private String feedback;
 
-	//是否异常 1是 2 否
-	private String alertStatus;
+	/**
+	 * 告警规则id
+	 */
+	private Long alarmRuleId;
+
+	/**
+	 * 告警模板id
+	 */
+	private String templateId;
+
 }
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProgressReportDO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProgressReportDO.java
index ba79567..0f552dd 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProgressReportDO.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProgressReportDO.java
@@ -103,6 +103,25 @@
      */
     private String videoUrls;
 
+	/**
+	 * 文件附件
+	 */
+	private String fileUrls;
+
+	/**
+	 * 图片附件
+	 */
+	private String imageName;
+
+	/**
+	 * 视频附件
+	 */
+	private String videoName;
+
+	/**
+	 * 文件附件
+	 */
+	private String fileName;
     /**
      * 审核意见
      */
@@ -123,4 +142,10 @@
 	 *是否重新提交 0是 ,1否
 	 */
 	private Integer resubmit;
+
+	/**
+	 * 重新上报单据ID
+	 */
+	@TableField(exist = false)
+	private String resubmitId;
 }
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProjectInfoDO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProjectInfoDO.java
index daee394..37ff7b7 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProjectInfoDO.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProjectInfoDO.java
@@ -1,6 +1,7 @@
 package cn.gistack.sm.sg.DO;
 
 import cn.gistack.sm.sg.VO.PreAcceVO;
+import cn.gistack.sm.sg.VO.PtypeVO;
 import cn.gistack.sm.sg.VO.SgTypeVO;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -172,7 +173,7 @@
 
 
 	@TableField(exist = false)
-	private List<SgTypeVO> sgGxDOS;
+	private List<PtypeVO> ptypeVOS;
 	@TableField(exist = false)
 	private List<PreAcceVO> preAcce;
 
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DTO/ProjectSearchDTO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DTO/ProjectSearchDTO.java
index 931554a..acd6166 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DTO/ProjectSearchDTO.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DTO/ProjectSearchDTO.java
@@ -64,5 +64,10 @@
 	 * 项目排序 0状态 , 1进度 ,2注册码
 	 */
 	private Integer projectSort;
+	private String auditPerson;
+
+	private List<String> sgCodeS;
+
+
 
 }
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/PtypeVO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/PtypeVO.java
new file mode 100644
index 0000000..7479dc9
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/PtypeVO.java
@@ -0,0 +1,22 @@
+package cn.gistack.sm.sg.VO;
+
+import cn.gistack.sm.sg.DO.SgDeviceDO;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 工序父类型 进度实体类
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class PtypeVO {
+	private String pTypeName;
+	private String pTypeProgress;
+	private List<SgTypeVO> sgTypeVOS;
+}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java
index 49e8492..08976a6 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java
@@ -29,4 +29,7 @@
 	private Integer deviceStatus;
 	private Integer projectStatus;
 	private String progressName;
+	private String Ptype;
+	private String PtypeName;
+	private Integer resubmit;
 }
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStatisDeviceVO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStatisDeviceVO.java
new file mode 100644
index 0000000..ed8fb97
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStatisDeviceVO.java
@@ -0,0 +1,10 @@
+package cn.gistack.sm.sg.VO;
+
+import lombok.Data;
+
+@Data
+public class SgStatisDeviceVO {
+	private Integer deviceCount;
+	private Integer deviceStart;
+	private String pType;
+}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStatisProVO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStatisProVO.java
index af2ffd3..3be61f8 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStatisProVO.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStatisProVO.java
@@ -20,6 +20,32 @@
 	private int commenceNum;
 
 	private String projectProgress;
+	/**
+	 * 表面变形
+	 */
+	private int surfaceNum;
+	private String surfaceProgress;
+
+	/**
+	 * 视频
+	 */
+	private int videoNum;
+	private String videoProgress;
+
+	/**
+	 * 渗流压力
+	 */
+	private int transNum;
+	private String transProgress;
+
+	/**
+	 * 渗流量
+	 */
+	private int seepageNum;
+	private String seepageProgress;
+
+	private String proIds;
+
 }
 
 
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStepReportVO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStepReportVO.java
index 28796bc..b1d8e9f 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStepReportVO.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStepReportVO.java
@@ -13,4 +13,5 @@
 private String 	stepNum;
 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 private Date reportTime;
+private Integer resubmit;
 }
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgTypeVO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgTypeVO.java
index 44cea36..87e5606 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgTypeVO.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgTypeVO.java
@@ -16,5 +16,6 @@
 public class SgTypeVO {
 	private String typeName;
 	private String typeProgress;
+	private String progress;
 	private List<SgDeviceDO> deviceDOS;
 }
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztods/entity/WaterDataTermites.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztods/entity/WaterDataTermites.java
new file mode 100644
index 0000000..d608c7d
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztods/entity/WaterDataTermites.java
@@ -0,0 +1,35 @@
+package cn.gistack.sm.sjztods.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@TableName("\"water_data_termites\"")
+@ApiModel(value = "白蚁监测数据表", description = "白蚁监测数据表")
+public class WaterDataTermites {
+
+	/**
+	 * 白蚁蚁情状态
+	 */
+	@ApiModelProperty(value = "白蚁蚁情状态 白蚁蚁情状态,有白蚁入侵为1")
+	@TableField("\"status\"")
+	private Integer status;
+
+	/**
+	 * 设备id
+	 */
+	@ApiModelProperty(value = "设备id")
+	@TableField("\"device_id\"")
+	private Integer deviceId;
+
+	/**
+	 * 设备id
+	 */
+	@ApiModelProperty(value = "设备id")
+	@TableField("\"order\"")
+	private String order;
+
+}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztods/vo/WaterDataTermitesVO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztods/vo/WaterDataTermitesVO.java
new file mode 100644
index 0000000..7cc8668
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztods/vo/WaterDataTermitesVO.java
@@ -0,0 +1,12 @@
+package cn.gistack.sm.sjztods.vo;
+
+import cn.gistack.sm.sjztods.entity.WaterDataTermites;
+import lombok.Data;
+
+@Data
+public class WaterDataTermitesVO extends WaterDataTermites {
+
+	private String startTime;
+	private String endTime;
+
+}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-system-api/src/main/java/cn/gistack/system/entity/Dept.java b/skjcmanager/skjcmanager-service-api/skjcmanager-system-api/src/main/java/cn/gistack/system/entity/Dept.java
index c7da819..d902fcb 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-system-api/src/main/java/cn/gistack/system/entity/Dept.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-system-api/src/main/java/cn/gistack/system/entity/Dept.java
@@ -110,6 +110,12 @@
 	@ApiModelProperty(value = "区划名称")
 	private String adCode;
 
+	/**
+	 * 工程区划
+	 */
+	@ApiModelProperty(value = "工程区划")
+	private String sgCode;
+
 	private String adGrad;
 
 	private String resGuid;
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java
index 273d338..cbbebf5 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java
@@ -1003,6 +1003,8 @@
 			messageRecord.setSender(AuthUtil.getUserId().toString());
 			messageRecord.setSource("智能告警");
 			messageRecord.setStatus(0);
+			messageRecord.setAlarmRuleId(alarmRule.getId());
+			messageRecord.setTemplateId(smsTemplate.getTemplateId());
 			// 设置告警记录信息
 			AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail();
 			alarmRecordDetail.setReservoirNumber(list.get(0));
@@ -1087,6 +1089,8 @@
 			messageRecord.setSource("智能告警");
 			messageRecord.setStatus(0);
 			messageRecord.setRecipient(phone);
+			messageRecord.setTemplateId(smsTemplate.getTemplateId());
+			messageRecord.setAlarmRuleId(alarmRule.getId());
 
 
 			StringBuilder builder = new StringBuilder();
@@ -1165,6 +1169,8 @@
 			messageRecord.setSource("智能告警");
 			messageRecord.setStatus(0);
 			messageRecord.setRecipient(phone);
+			messageRecord.setTemplateId(smsTemplate.getTemplateId());
+			messageRecord.setAlarmRuleId(alarmRule.getId());
 
 			List<String> resCdList = new ArrayList<>();
 			Map<String, List<Temp>> resCollect = temps.stream().collect(Collectors.groupingBy(Temp::getReservoirCode));
@@ -1237,6 +1243,8 @@
 			messageRecord.setSource("智能告警");
 			messageRecord.setStatus(0);
 			messageRecord.setRecipient(phone);
+			messageRecord.setTemplateId(smsTemplate.getTemplateId());
+			messageRecord.setAlarmRuleId(alarmRule.getId());
 			List<String> contentList = new ArrayList<>();
 			//因为只能按编号分组,名称会有重复,所以拿第一条数据的名称就行
 			temps.forEach(info -> {
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
index 2954f56..ebbffc8 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
@@ -218,7 +218,7 @@
 				// 遍历
 				for (AlarmRuleDetail alarmRuleDetail : alarmRuleDetailList) {
 					if (alarmRuleDetail.getAlarmMode().equals("短信")) {
-						asyncNoticeHandle.waterFirstOverHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterFirstOverList, true, adCode, true);
+						asyncNoticeHandle.waterFirstOverHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterFirstOverList, true, adCode, false);
 					}
 				}
 			}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java
index d2cb092..b10746b 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java
@@ -89,7 +89,7 @@
 			// 记录发送记录操作
 			SmsResult smsResult = smsService.saveSendResult(null,resultComResult.getCode().toString(),resultComResult.getMsg(),request, 1);
 			if (null != smsResult){
-				smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId());
+				smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId(),smsResult.getAlarmRuleId(),null);
 			}
 			// 返回发送信息
 			return R.data(resultComResult);
@@ -119,7 +119,7 @@
 			// 记录发送记录操作
 			SmsResult smsResult = smsService.saveSendResult(null,resultComResult.getCode().toString(),resultComResult.getMsg(),request, 1);
 			if (null != smsResult){
-				smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId());
+				smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId(),smsResult.getAlarmRuleId(),null);
 			}
 			// 保存验证码到 redis
 			saveCodeForRedis(request.getUserNumber(), randNumber);
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java
index 375f64f..9185291 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java
@@ -108,4 +108,17 @@
        return R.data(SmsRecord);
    }
 
+
+	/**
+	 * 自定义分页列表查询
+	 * @param query 分页查询对象
+	 * @param smsRecord
+	 * @return
+	 */
+	@ApiOperation(value="短信发送记录-自定义分页列表查询", notes="短信发送记录-自定义分页列表查询")
+	@GetMapping(value = "/msgPage")
+	public R msgPage(SmsRecordVO smsRecord, Query query) {
+		return R.data(smsRecordService.msgPage(Condition.getPage(query), smsRecord));
+	}
+
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java
index fb31821..671c5cd 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java
@@ -62,7 +62,7 @@
 		// 记录发送记录操作
 		SmsResult smsResult = smsService.saveSendResult(null,code,msg,request, number);
 		if (null != smsResult){
-			smsService.saveSendRecord(request, code,msg,smsResult.getId());
+			smsService.saveSendRecord(request, code,msg,smsResult.getId(),null,null);
 		}
 	}
 
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java
index 58d2715..80f12ae 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java
@@ -2,6 +2,7 @@
 
 import cn.gistack.alerts.sms.entity.SmsRecord;
 import cn.gistack.alerts.sms.vo.SmsRecordVO;
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
@@ -28,4 +29,40 @@
 	 * @return
 	 */
     int batchSaveSendRecord(@Param("list") List<SmsRecord> list);
+
+	/**
+	 * 短信消息记录查询
+	 * @param page
+	 * @param smsRecord
+	 * @param list
+	 * @return
+	 */
+	@InterceptorIgnore(tenantLine = "1")
+    List<SmsRecordVO> smsPage(IPage<SmsRecordVO> page,
+							  @Param("smsRecord")  SmsRecordVO smsRecord,
+							  @Param("list")  List<String> list);
+
+	/**
+	 * 站内信消息记录查询
+	 * @param page
+	 * @param smsRecord
+	 * @param list
+	 * @return
+	 */
+	@InterceptorIgnore(tenantLine = "1")
+    List<SmsRecordVO> msgPage(IPage<SmsRecordVO> page,
+							  @Param("smsRecord")  SmsRecordVO smsRecord,
+							  @Param("list")  List<String> list);
+
+	/**
+	 * 短信和站内信消息记录查询  @InterceptorIgnore(tenantLine = "1") 等价 @SqlParser(filter = true)已过期
+	 * @param page
+	 * @param smsRecord
+	 * @param list
+	 * @return
+	 */
+	@InterceptorIgnore(tenantLine = "1")
+    List<SmsRecordVO> smsAndMsgPage(IPage<SmsRecordVO> page,
+									@Param("smsRecord")  SmsRecordVO smsRecord,
+									@Param("list")  List<String> list);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml
index b363a02..00f6b7d 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml
@@ -39,4 +39,196 @@
         </foreach>
     </insert>
 
+
+    <!--站内信消息记录列表查询-->
+    <select id="msgPage" resultType="cn.gistack.alerts.sms.vo.SmsRecordVO">
+        select
+        smr.id,smr.content,smr.create_time,'发送成功' as responseMsg,smr.template_id,
+        a."name" as resName,
+        bu.name as userName,bu.phone as tel,
+        2 as type,
+        sar.rule_name as ruleName,sst.sms_type as smsType
+        from YWXT.sm_message_record smr
+        left join SJZT_MD."att_res_base" a on a."guid" = smr.res_guid
+        left join YWXT.blade_user bu on CAST(bu.id AS VARCHAR) = smr.recipient and bu.is_deleted = 0
+        left join YWXT.sm_alarm_rule sar on sar.id = smr.alarm_rule_id
+        left join YWXT.sm_sms_template sst on sst.template_id = smr.template_id and sst.is_deleted = 0
+        <where>
+            <if test="smsRecord.templateId!=null and smsRecord.templateId!=''">
+                and smr.template_id = #{smsRecord.templateId}
+            </if>
+            <if test="smsRecord.smsType!=null and smsRecord.smsType!=''">
+                and sst.sms_type = #{smsRecord.smsType}
+            </if>
+            <if test="smsRecord.tel!=null and smsRecord.tel!=''">
+                and bu.phone = #{smsRecord.tel}
+            </if>
+            <if test="smsRecord.content!=null and smsRecord.content!=''">
+                and smr.content like concat(concat('%',#{smsRecord.content}),'%')
+            </if>
+            <if test="smsRecord.userName!=null and smsRecord.userName!=''">
+                and bu.name like concat(concat('%',#{smsRecord.userName}),'%')
+            </if>
+            <if test="smsRecord.resName!=null and smsRecord.resName!=''">
+                and a."name" like concat(concat('%',#{smsRecord.resName}),'%')
+            </if>
+            <if test="smsRecord.startTime!=null and smsRecord.startTime!=''">
+                and DATE_FORMAT(smr.create_time,'%Y-%m-%d') >= #{smsRecord.startTime}
+            </if>
+            <if test="smsRecord.endTime!=null and smsRecord.endTime!=''">
+                and DATE_FORMAT(smr.create_time,'%Y-%m-%d') &lt;= #{smsRecord.endTime}
+            </if>
+            <if test="list!=null and list.size()>0">
+                and smr.template_id in
+                <foreach collection="list" item="id" separator ="," open="("  close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+        order by smr.id desc
+    </select>
+
+    <!--短信消息记录列表查询-->
+    <select id="smsPage" resultType="cn.gistack.alerts.sms.vo.SmsRecordVO">
+        select
+        ssr.id,ssr.tel,ssr.content,ssr.create_time,ssr.response_msg,ssr.template_id,
+        a."name" as resName,
+        bu.name as userName,
+        1 as type,
+        sar.rule_name as ruleName,sst.sms_type as smsType
+        from YWXT.sm_sms_record ssr
+        left join SJZT_MD."att_res_base" a on a."guid" = ssr.res_guid
+        left join YWXT.blade_user bu on bu.account = ssr.tel and bu.is_deleted = 0
+        left join YWXT.sm_alarm_rule sar on sar.id = ssr.alarm_rule_id
+        left join YWXT.sm_sms_template sst on sst.template_id = ssr.template_id and sst.is_deleted = 0
+        <where>
+            <if test="smsRecord.templateId!=null and smsRecord.templateId!=''">
+                and ssr.template_id = #{smsRecord.templateId}
+            </if>
+            <if test="smsRecord.smsType!=null and smsRecord.smsType!=''">
+                and sst.sms_type = #{smsRecord.smsType}
+            </if>
+            <if test="smsRecord.tel!=null and smsRecord.tel!=''">
+                and ssr.tel = #{smsRecord.tel}
+            </if>
+            <if test="smsRecord.content!=null and smsRecord.content!=''">
+                and ssr.content like concat(concat('%',#{smsRecord.content}),'%')
+            </if>
+            <if test="smsRecord.userName!=null and smsRecord.userName!=''">
+                and bu.name like concat(concat('%',#{smsRecord.userName}),'%')
+            </if>
+            <if test="smsRecord.resName!=null and smsRecord.resName!=''">
+                and a."name" like concat(concat('%',#{smsRecord.resName}),'%')
+            </if>
+            <if test="smsRecord.startTime!=null and smsRecord.startTime!=''">
+                and DATE_FORMAT(ssr.create_time,'%Y-%m-%d') >= #{smsRecord.startTime}
+            </if>
+            <if test="smsRecord.endTime!=null and smsRecord.endTime!=''">
+                and DATE_FORMAT(ssr.create_time,'%Y-%m-%d') &lt;= #{smsRecord.endTime}
+            </if>
+            <if test="list!=null and list.size()>0">
+                and ssr.template_id in
+                <foreach collection="list" item="id" separator="," open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+        order by ssr.id desc
+    </select>
+
+
+    <!--短信和站内信消息记录列表查询-->
+    <select id="smsAndMsgPage" resultType="cn.gistack.alerts.sms.vo.SmsRecordVO">
+        (select
+        ssr.id,ssr.tel,ssr.content,ssr.create_time,ssr.response_msg,ssr.template_id,
+        a."name" as resName,
+        bu.name as userName,
+        1 as type,
+        sar.rule_name as ruleName,sst.sms_type as smsType
+        from YWXT.sm_sms_record ssr
+        left join SJZT_MD."att_res_base" a on a."guid" = ssr.res_guid
+        left join YWXT.blade_user bu on bu.account = ssr.tel and bu.is_deleted = 0
+        left join YWXT.sm_alarm_rule sar on sar.id = ssr.alarm_rule_id
+        left join YWXT.sm_sms_template sst on sst.template_id = ssr.template_id and sst.is_deleted = 0
+        <where>
+            <if test="smsRecord.templateId!=null and smsRecord.templateId!=''">
+                and ssr.template_id = #{smsRecord.templateId}
+            </if>
+            <if test="smsRecord.smsType!=null and smsRecord.smsType!=''">
+                and sst.sms_type = #{smsRecord.smsType}
+            </if>
+            <if test="smsRecord.tel!=null and smsRecord.tel!=''">
+                and ssr.tel = #{smsRecord.tel}
+            </if>
+            <if test="smsRecord.content!=null and smsRecord.content!=''">
+                and ssr.content like concat(concat('%',#{smsRecord.content}),'%')
+            </if>
+            <if test="smsRecord.userName!=null and smsRecord.userName!=''">
+                and bu.name like concat(concat('%',#{smsRecord.userName}),'%')
+            </if>
+            <if test="smsRecord.resName!=null and smsRecord.resName!=''">
+                and a."name" like concat(concat('%',#{smsRecord.resName}),'%')
+            </if>
+            <if test="smsRecord.startTime!=null and smsRecord.startTime!=''">
+                and DATE_FORMAT(ssr.create_time,'%Y-%m-%d') >= #{smsRecord.startTime}
+            </if>
+            <if test="smsRecord.endTime!=null and smsRecord.endTime!=''">
+                and DATE_FORMAT(ssr.create_time,'%Y-%m-%d') &lt;= #{smsRecord.endTime}
+            </if>
+            <if test="list!=null and list.size()>0">
+                and ssr.template_id in
+                <foreach collection="list" item="id" separator="," open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+        )
+        union all
+        (
+        select
+        smr.id,smr.content,smr.create_time,'发送成功' as responseMsg,smr.template_id,
+        a."name" as resName,
+        bu.name as userName,bu.phone as tel,
+        2 as type,
+        sar.rule_name as ruleName,sst.sms_type as smsType
+        from YWXT.sm_message_record smr
+        left join SJZT_MD."att_res_base" a on a."guid" = smr.res_guid
+        left join YWXT.blade_user bu on CAST(bu.id AS VARCHAR) = smr.recipient and bu.is_deleted = 0
+        left join YWXT.sm_alarm_rule sar on sar.id = smr.alarm_rule_id
+        left join YWXT.sm_sms_template sst on sst.template_id = smr.template_id and sst.is_deleted = 0
+        <where>
+            <if test="smsRecord.templateId!=null and smsRecord.templateId!=''">
+                and smr.template_id = #{smsRecord.templateId}
+            </if>
+            <if test="smsRecord.smsType!=null and smsRecord.smsType!=''">
+                and sst.sms_type = #{smsRecord.smsType}
+            </if>
+            <if test="smsRecord.tel!=null and smsRecord.tel!=''">
+                and bu.phone = #{smsRecord.tel}
+            </if>
+            <if test="smsRecord.content!=null and smsRecord.content!=''">
+                and smr.content like concat(concat('%',#{smsRecord.content}),'%')
+            </if>
+            <if test="smsRecord.userName!=null and smsRecord.userName!=''">
+                and bu.name like concat(concat('%',#{smsRecord.userName}),'%')
+            </if>
+            <if test="smsRecord.resName!=null and smsRecord.resName!=''">
+                and a."name" like concat(concat('%',#{smsRecord.resName}),'%')
+            </if>
+            <if test="smsRecord.startTime!=null and smsRecord.startTime!=''">
+                and DATE_FORMAT(smr.create_time,'%Y-%m-%d') >= #{smsRecord.startTime}
+            </if>
+            <if test="smsRecord.endTime!=null and smsRecord.endTime!=''">
+                and DATE_FORMAT(smr.create_time,'%Y-%m-%d') &lt;= #{smsRecord.endTime}
+            </if>
+            <if test="list!=null and list.size()>0">
+                and smr.template_id in
+                <foreach collection="list" item="id" separator ="," open="("  close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+        )
+    </select>
+
 </mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java
index 84246bd..9e0bbb0 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java
@@ -22,4 +22,12 @@
 	 * @param list
 	 */
 	int batchSaveSendRecord(List<SmsRecord> list);
+
+	/**
+	 * 自定义分页列表查询
+	 * @param page 分页查询对象
+	 * @param smsRecord
+	 * @return
+	 */
+    Object msgPage(IPage<SmsRecordVO> page, SmsRecordVO smsRecord);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java
index aa1c17d..07ac318 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java
@@ -55,9 +55,11 @@
 	 * @param code
 	 * @param sendMsg
 	 * @param resultId
+	 * @param alarmRuleId
+	 * @param resGuid
 	 * @return
 	 */
-	SmsRecord saveSendRecord(SMSSendRequest request,String code, String sendMsg, Long resultId);
+	SmsRecord saveSendRecord(SMSSendRequest request,String code, String sendMsg, Long resultId,Long alarmRuleId,String resGuid);
 
 	/**
 	 * 发送降雨短信
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java
index e373aac..f65d1fc 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java
@@ -1,13 +1,18 @@
 package cn.gistack.alerts.sms.service.impl;
 
+import cn.gistack.alerts.alarmRule.service.AlarmRuleService;
 import cn.gistack.alerts.sms.entity.SmsRecord;
 import cn.gistack.alerts.sms.mapper.SmsRecordMapper;
 import cn.gistack.alerts.sms.service.ISmsRecordService;
 import cn.gistack.alerts.sms.vo.SmsRecordVO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.logging.log4j.util.Strings;
+import org.springblade.core.log.exception.ServiceException;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -16,6 +21,9 @@
  */
 @Service
 public class SmsRecordServiceImpl extends ServiceImpl<SmsRecordMapper, SmsRecord> implements ISmsRecordService {
+
+	@Autowired
+	private AlarmRuleService alarmRuleService;
 
 	/**
 	 * 自定义分页列表查询
@@ -42,4 +50,32 @@
 	public int batchSaveSendRecord(List<SmsRecord> list) {
 		return baseMapper.batchSaveSendRecord(list);
 	}
+
+	/**
+	 * 自定义分页列表查询
+	 * @param page 分页查询对象
+	 * @param smsRecord
+	 * @return
+	 */
+	@Override
+	public Object msgPage(IPage<SmsRecordVO> page, SmsRecordVO smsRecord) {
+		List<String> list = new ArrayList<>();
+		// 判断是否为一级目录
+		if (null!=smsRecord.getSmsType() && smsRecord.getSmsType().length()>1){
+			// 查询对应的短信模板ID 集合
+			list = alarmRuleService.getAlarmRuleDetailList(smsRecord.getSmsType());
+			// 设置类型为null
+			smsRecord.setSmsType("");
+		}
+		if (!Strings.isBlank(smsRecord.getType()) && smsRecord.getType().equals("1")){
+			// 查询短信
+			return page.setRecords(baseMapper.smsPage(page,smsRecord,list));
+		}
+		if (!Strings.isBlank(smsRecord.getType()) && smsRecord.getType().equals("2")){
+			// 查询站内信
+			return page.setRecords(baseMapper.msgPage(page,smsRecord,list));
+		}
+		// 查询全部返回
+		return page.setRecords(baseMapper.smsAndMsgPage(page,smsRecord,list));
+	}
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java
index 14ee9e2..7cb010a 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java
@@ -2,7 +2,6 @@
 
 import cn.com.flaginfo.sdk.cmc.api.result.ComResult;
 import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendDataResult;
-import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendRequest;
 import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendDataResult;
 import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
 import cn.gistack.alerts.alarmRule.entity.AlarmRecordDetail;
@@ -28,25 +27,21 @@
 import cn.gistack.alerts.sms.vo.SmsResponseVO;
 import cn.gistack.alerts.sms.vo.Temp;
 import cn.gistack.sm.intelligentCall.entity.CallNotFillRecord;
-import cn.gistack.sm.intelligentCall.excel.CallExcel;
 import cn.gistack.sm.intelligentCall.feign.OutCallClient;
 import cn.gistack.sm.message.entity.MessageRecord;
 import cn.gistack.sm.sjztmd.feign.IAttResManagePersonClient;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
+import org.apache.logging.log4j.util.Strings;
 import org.jetbrains.annotations.NotNull;
 import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
-import java.lang.reflect.Array;
 import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
@@ -111,7 +106,7 @@
 				ComResult<SMSSendDataResult> result = SmsUtils.sendMsg(request);
 				if(null != smsResult) {
 					// 保存记录
-					saveSendRecord(request, result.getCode().toString(), result.getMsg(), smsResult.getId());
+					saveSendRecord(request, result.getCode().toString(), result.getMsg(), smsResult.getId(),null,null);
 				}
 				list.add(result);
 			}
@@ -291,6 +286,8 @@
 				messageRecord.setSender(AuthUtil.getUserId().toString());
 				messageRecord.setSource("智能告警");
 				messageRecord.setStatus(0);
+				messageRecord.setTemplateId(smsTemplate.getTemplateId());
+				messageRecord.setAlarmRuleId(alarmRule.getId());
 				// 设置告警记录信息
 				AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail();
 				alarmRecordDetail.setReservoirNumber(list.get(0));
@@ -318,7 +315,7 @@
 					messageRecord.setContent(format);
 					messageRecordList.add(messageRecord);
 					// 保存短信发送记录
-					smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
+					smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),alarmRule.getId(),alarmRecordDetail.getReservoirNumber());
 					if (null != smsRecord) {
 						alarmRecordDetail.setAlarmContent(format);
 						alarmRecordDetail.setSendRecordId(smsRecord.getId());
@@ -449,10 +446,18 @@
 	 * @param request
 	 * @param code 响应code
 	 * @param sendMsg 响应消息
-	 * @param resultId
+	 * @param resultId 短信发送结果id
+	 * @param alarmRuleId 告警规则id
+	 * @param resGuid 水库guid
 	 */
 	@Override
-	public SmsRecord saveSendRecord(SMSSendRequest request, String code, String sendMsg, Long resultId) {
+	public SmsRecord saveSendRecord(SMSSendRequest request,
+									String code,
+									String sendMsg,
+									Long resultId,
+									Long alarmRuleId,
+									String resGuid
+									) {
 		// 在保存明细
 		SmsRecord smsRecord = new SmsRecord();
 		smsRecord.setTel(request.getUserNumber());
@@ -461,6 +466,8 @@
 		smsRecord.setResultId(resultId);
 		smsRecord.setResponseStatus(code);
 		smsRecord.setResponseMsg(sendMsg);
+		smsRecord.setResGuid(resGuid);
+		smsRecord.setAlarmRuleId(alarmRuleId);
 		//插入记录
 		smsRecordService.save(smsRecord);
 		// 返回
@@ -800,8 +807,10 @@
 			List<List<Temp>> lists = Lists.partition(new ArrayList<>(temps), 30);
 			for (List<Temp> list : lists) {
 				List<AlarmRecordDetailVO> alarmRecordDetailList = new ArrayList<>();
+				List<String> resGuidList = new ArrayList<>();
 				// 遍历
 				for (Temp temp : list) {
+					resGuidList.add(temp.getReservoirCode());
 					builder.append(temp.getReservoirName()).append(",");
 					smsRecordBuilder.append(temp.getReservoirName()).append(",");
 					AlarmRecordDetailVO alarmRecordDetail = new AlarmRecordDetailVO();
@@ -835,7 +844,8 @@
 				// 设置内容
 				request.setMessageContent(format);
 				// 保存短信发送记录
-				SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
+				String resGuid = resGuidList.size()>0?Strings.join(resGuidList,','):"";
+				SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),smsResult.getAlarmRuleId(),resGuid);
 				//保存告警记录详情信息
 				if (null != smsRecord) {
 					List<AlarmRecordDetail> alarmRecordDetailArrayList = new ArrayList<>();
@@ -914,8 +924,10 @@
 			List<List<Temp>> lists = Lists.partition(new ArrayList<>(infoList), 30);
 			for (List<Temp> list : lists) {
 				List<AlarmRecordDetailVO> alarmRecordDetailList = new ArrayList<>();
+				List<String> resGuidList = new ArrayList<>();
 				// 遍历
 				for (Temp temp : list) {
+					resGuidList.add(temp.getReservoirCode());
 					builder.append(temp.getReservoirName()+"("+temp.getCdNm() +")").append(",");
 					smsRecordBuilder.append(temp.getReservoirName()+"("+temp.getCdNm() +")").append(",");
 					AlarmRecordDetailVO alarmRecordDetail = new AlarmRecordDetailVO();
@@ -948,8 +960,9 @@
 				String format = String.format(str, substring.split(","));
 				// 设置内容
 				request.setMessageContent(format);
+				String resGuid = resGuidList.size()>0? Strings.join(resGuidList,','):"";
 				// 保存短信发送记录
-				SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
+				SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),smsResult.getAlarmRuleId(),resGuid);
 				//保存告警记录详情信息
 				if (null != smsRecord) {
 					List<AlarmRecordDetail> alarmRecordDetailArrayList = new ArrayList<>();
@@ -1034,12 +1047,14 @@
 			});
 
 
-			// 如果一人对应水库数量超过30个,则分批发送
+			// 如果一人对应水库数量超过15个,则分批发送
 			List<List<Temp>> lists = Lists.partition(new ArrayList<>(infoList), 15);
 			for (List<Temp> list : lists) {
+				List<String> resGuidList = new ArrayList<>();
 				List<AlarmRecordDetailVO> alarmRecordDetailList = new ArrayList<>();
 				// 遍历
 				for (Temp temp : list) {
+					resGuidList.add(temp.getReservoirCode());
 					builder.append(temp.getReservoirName()+"("+temp.getCdNm() +")").append(",");
 					smsRecordBuilder.append(temp.getReservoirName()+"("+temp.getCdNm() +")").append(",");
 					AlarmRecordDetailVO alarmRecordDetail = new AlarmRecordDetailVO();
@@ -1072,8 +1087,10 @@
 				String format = String.format(str, substring.split(","));
 				// 设置内容
 				request.setMessageContent(format);
+				// 转resGuid
+				String resGuid = resGuidList.size()>0? Strings.join(resGuidList,','):"";
 				// 保存短信发送记录
-				SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
+				SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),smsResult.getAlarmRuleId(),resGuid);
 				//保存告警记录详情信息
 				if (null != smsRecord) {
 					List<AlarmRecordDetail> alarmRecordDetailArrayList = new ArrayList<>();
@@ -1191,7 +1208,7 @@
 			// 设置内容
 			request.setMessageContent(formatContent);
 			// 保存短信发送记录
-			SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
+			SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),smsResult.getAlarmRuleId(),null);
 			AlarmRecordDetail alarmRecordDetail1 = new AlarmRecordDetail();
 			// 短信内容拼接(完成发送的结果信息)
 			alarmRecordDetail1.setAlarmContent(formatContent);
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.xml
index 3e129ca..0e15667 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.xml
@@ -10,6 +10,7 @@
         date_format(ct."gmt_create",'%Y-%m-%d %H:%i:%s') as createTime,
         ct."task_status" as taskStatus,
         date_format(ct."task_schedule_time",'%Y-%m-%d %H:%i:%s') as executeTime,
+        date_format(ct."gmt_modified",'%Y-%m-%d %H:%i:%s') as gmtModified,
         ctr."calling_number" as callingNumber,
         ctra."callee_number_count" as calleeNumberCount,
         if(ifnull(scnfr.task_id,0)='0',ctra."connection_count",(ctra."connection_count"+scnfr.num)) as connectionCount,
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/controller/DbReportController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/controller/DbReportController.java
index 6f85bbf..ba6c4ba 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/controller/DbReportController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/controller/DbReportController.java
@@ -3,9 +3,12 @@
 import cn.gistack.sm.jcsb.entity.DbReport;
 import cn.gistack.sm.jcsb.entity.DbReport;
 import cn.gistack.sm.jcsb.entity.DeviceReport;
+import cn.gistack.sm.jcsb.entity.ExtremumDO;
 import cn.gistack.sm.jcsb.service.IDbReportService;
+import cn.gistack.sm.jcsb.service.IExtremumService;
 import cn.gistack.sm.jcsb.vo.DangerReportVO;
 import cn.gistack.sm.jcsb.vo.DbReportVO;
+import cn.gistack.sm.sg.DO.SgDeviceDO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -33,7 +36,7 @@
 public class DbReportController extends BladeController {
 
 	private final IDbReportService dbReportService;
-
+	private final IExtremumService extremumService;
 	@GetMapping("/page")
 	@ApiOperation(value = "列表", notes = "传入实体类参数")
 	public R<IPage<DbReportVO>> pageList(DbReportVO dbReport, Query query) {
@@ -83,4 +86,38 @@
 	public R getLatestList(DbReportVO dbReport){
 		return R.data(dbReportService.getLatestList(dbReport));
 	}
+
+
+	/**
+	 * 新增或修改 类型极值
+	 */
+	@PostMapping("/addExtremum")
+	@ApiOperation(value = "新增或修改类型极值", notes = "传入实体类参数")
+	public R submit(@RequestBody ExtremumDO extremumDO) {
+
+		if(extremumDO!=null&&extremumDO.getId()!=null){
+			return R.data(extremumService.updateById(extremumDO));
+		}else {
+
+			String type = extremumDO.getType();
+			String skId = extremumDO.getSkId();
+			ExtremumDO extremum = extremumService.getExtremum(type, skId);
+			if(extremum!=null){
+				extremumDO.setId(extremum.getId());
+				return R.data(extremumService.updateById(extremumDO));
+			}
+
+			return R.data(extremumService.saveOrUpdate(extremumDO));
+		}
+
+
+
+	}
+
+
+	@GetMapping(value = "/getExtremum")
+	public R getExtremumList(@RequestParam(name="skId",required=true) String skId,String type) {
+		List<ExtremumDO> page = extremumService.getExtremumList(skId,type);
+		return R.data(page);
+	}
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/entity/ExtremumDO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/entity/ExtremumDO.java
new file mode 100644
index 0000000..2b9e749
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/entity/ExtremumDO.java
@@ -0,0 +1,76 @@
+package cn.gistack.sm.jcsb.entity;
+
+import cn.gistack.sm.sg.DO.SgGxStepDO;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 类型极值
+ * </p>
+ *
+ * @author shenyijian
+ * @since 2024-06-13 11:51:20
+ */
+@Data
+@TableName("SM_EXTREMUMVALUE")
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class ExtremumDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+	@TableId(type = IdType.AUTO)
+
+	private Long id;
+
+    /**
+     * 类型
+     */
+    private String type;
+
+	/**
+	 * y左极值
+	 */
+	private String lMax;
+	private String lMin;
+	/**
+	 * y右极值
+	 */
+	private String rMax;
+	private String rMin;
+
+
+	/**
+	 *
+	 * 水库id
+	 */
+	private String skId;
+
+    /**
+     * 人员id
+     */
+    private String userId;
+
+    /**
+     * 创建时间
+     */
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date time;
+
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/mapper/ExtremumMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/mapper/ExtremumMapper.java
new file mode 100644
index 0000000..dd2f15c
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/mapper/ExtremumMapper.java
@@ -0,0 +1,8 @@
+package cn.gistack.sm.jcsb.mapper;
+
+import cn.gistack.sm.jcsb.entity.ExtremumDO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface ExtremumMapper extends BaseMapper<ExtremumDO> {
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/IExtremumService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/IExtremumService.java
new file mode 100644
index 0000000..1022f71
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/IExtremumService.java
@@ -0,0 +1,17 @@
+package cn.gistack.sm.jcsb.service;
+
+import cn.gistack.sm.jcsb.entity.ExtremumDO;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.core.mp.base.BaseService;
+
+import java.util.List;
+
+
+public interface IExtremumService extends IService<ExtremumDO> {
+
+	List<ExtremumDO> getExtremumList(String skId, String type);
+
+
+	ExtremumDO getExtremum(String type, String skId);
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/impl/ExtremumServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/impl/ExtremumServiceImpl.java
new file mode 100644
index 0000000..cf18117
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/impl/ExtremumServiceImpl.java
@@ -0,0 +1,43 @@
+package cn.gistack.sm.jcsb.service.impl;
+
+import cn.gistack.sm.jcsb.entity.DbReport;
+import cn.gistack.sm.jcsb.entity.ExtremumDO;
+import cn.gistack.sm.jcsb.mapper.DbReportMapper;
+import cn.gistack.sm.jcsb.mapper.ExtremumMapper;
+import cn.gistack.sm.jcsb.service.IDbReportService;
+import cn.gistack.sm.jcsb.service.IExtremumService;
+import cn.gistack.sm.jcsb.vo.DbReportVO;
+import cn.gistack.sm.sg.DO.SgDeviceDO;
+import cn.gistack.sm.sg.mapper.SgDeviceMapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class ExtremumServiceImpl extends ServiceImpl<ExtremumMapper, ExtremumDO> implements IExtremumService {
+
+	@Override
+	public List<ExtremumDO> getExtremumList(String skId, String type) {
+		QueryWrapper<ExtremumDO> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("SK_ID", skId);
+		queryWrapper.eq(!StringUtils.isEmpty(type),"TYPE", type);
+		return baseMapper.selectList(queryWrapper);
+
+
+	}
+
+	@Override
+	public ExtremumDO getExtremum(String type, String skId) {
+		QueryWrapper<ExtremumDO> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("SK_ID", skId);
+		queryWrapper.eq(!StringUtils.isEmpty(type),"TYPE", type);
+		return baseMapper.selectOne(queryWrapper);
+	}
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java
index 25207cf..59beb62 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java
@@ -1,6 +1,7 @@
 package cn.gistack.sm.sg.mapper;
 
 import cn.gistack.sm.sg.DO.SgProgressReportDO;
+import cn.gistack.sm.sg.DO.SgReportUserDO;
 import cn.gistack.sm.sg.DTO.ProjectSearchDTO;
 import cn.gistack.sm.sg.VO.SgProgressReportVO;
 import cn.gistack.sm.sg.VO.SgStepReportVO;
@@ -39,4 +40,6 @@
 	List<SgProgressReportVO> queryPageListAll(@Param("page") IPage<SgProgressReportVO> page, @Param("dto") ProjectSearchDTO searchDTO);
 
 	Long selectProframId(Long deviceId);
+
+	List<SgReportUserDO> selectProcessUserByProjectId(@Param("programId") Long programId);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml
index eade863..84077d9 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml
@@ -99,13 +99,13 @@
             and userR.user_id = #{dto.userId} and userR.approval_order != 0
         </if>
         <if test="dto.approvalStatus != null and dto.approvalStatus ==0">
-            and userR.approval_status = 0 and report.audit_person = #{dto.userId} and (report."STATUS" = 0 or report."STATUS" = 1)
+            and userR.approval_status = 0 and report.audit_person = #{dto.auditPerson} and (report."STATUS" = 0 or report."STATUS" = 1)
         </if>
         <if test="dto.approvalStatus != null and dto.approvalStatus ==1">
            and userR.approval_status = 1
         </if>
         <if test="dto.approvalStatus != null and dto.approvalStatus ==2">
-            AND userR.approval_order = 2
+            AND userR.approval_status = 2
         </if>
         <if test="dto.startTime != null and dto.startTime !='' ">
             and report.report_time &gt;= #{dto.startTime}
@@ -148,7 +148,8 @@
             step.gx_step_name AS stepName,
             step.gx_step_num AS stepNum,
             re.STATUS AS approvalStatus,
-            re.report_time
+            re.report_time,
+            re.resubmit
         FROM
             ywxt.sg_gx_step step
                 LEFT JOIN ywxt.sg_gx gx ON step.gx_info_id = gx.id
@@ -190,4 +191,8 @@
     <select id="selectProframId" resultType="java.lang.Long">
         select program_id from ywxt.sg_device where id = #{deviceId}
     </select>
+    <select id="selectProcessUserByProjectId" resultType="cn.gistack.sm.sg.DO.SgReportUserDO">
+        select  u.* from ywxt.sg_report_user u left join  ywxt.sg_progresss_report r on u.report_id = r.id
+        where 1=1 and r.profram_id = #{programId}
+    </select>
 </mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java
index 58b33c8..50193e7 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java
@@ -3,10 +3,7 @@
 import cn.gistack.sm.sg.DO.SgGxStepDO;
 import cn.gistack.sm.sg.DO.SgProjectInfoDO;
 import cn.gistack.sm.sg.DTO.ProjectSearchDTO;
-import cn.gistack.sm.sg.VO.SgProjectInfoVO;
-import cn.gistack.sm.sg.VO.SgStatisProVO;
-import cn.gistack.sm.sg.VO.SgStatistccVO;
-import cn.gistack.sm.sg.VO.SgStatisticsVO;
+import cn.gistack.sm.sg.VO.*;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
@@ -51,5 +48,9 @@
 
 	SgProjectInfoVO selectVOById(@Param("proframId") Long proframId);
 
+	String getSgCodeByUser(String id);
+
+	List<SgStatisDeviceVO> getDeviceTypes(@Param("s") String s);
+
 	//List<String> getProjectIds(String code,@Param("grad") String grad );
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml
index 24c0609..13b2dde 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml
@@ -42,6 +42,24 @@
              #{id}
          </foreach>
         </if>
+        <if test="dto.sgCodeS != null and dto.sgCodeS.size > 0">
+            and (dria."province_cd" in
+            <foreach collection="dto.sgCodeS" item="id" separator="," open="(" close=")">
+                #{id}
+            </foreach>
+                or dria."city_cd" in
+            <foreach collection="dto.sgCodeS" item="id" separator="," open="(" close=")">
+                #{id}
+            </foreach>
+                or dria."county_cd" in
+            <foreach collection="dto.sgCodeS" item="id" separator="," open="(" close=")">
+                #{id}
+            </foreach>
+                or dria."town_cd" in
+            <foreach collection="dto.sgCodeS" item="id" separator="," open="(" close=")">
+                #{id}
+            </foreach>)
+        </if>
         <if test="dto.projectSort == null or dto.projectSort ==0">
             ORDER BY info.status desc ,info.project_progress desc
         </if>
@@ -52,6 +70,20 @@
             ORDER BY info.sk_id asc
         </if>
     </select>
+
+    <sql id="sgCodeCondition">
+        <if test="dto.sgCodeS != null and dto.sgCodeS.size() > 0">
+            AND (
+            <foreach collection="dto.sgCodeS" item="id" separator="OR" open="(" close=")">
+                dria.province_cd = #{id}
+                OR dria.city_cd = #{id}
+                OR dria.county_cd = #{id}
+                or dria.town_cd = #{id}
+            </foreach>
+            )
+        </if>
+    </sql>
+
     <select id="queryStepByProject" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO">
 
         SELECT
@@ -60,6 +92,8 @@
         gx.id AS gxId,
         gx.gx_name,
         d.device_name,
+        Pdict.dict_key as Ptype,
+        Pdict.dict_value as PtypeName,
         d.device_type,
         dict."DICT_VALUE" AS typeName,
         d.id AS dId,
@@ -70,12 +104,13 @@
         d.STATUS AS deviceStatus,
         pro.STATUS AS projectStatus,
         re.id AS reportId,
-        pro.lon_lat
+        pro.lon_lat,
+        re.resubmit
         FROM
         ywxt.sg_project_info pro
         LEFT JOIN ywxt.sg_device d ON pro.id = d.program_id
-        LEFT JOIN YWXT."BLADE_DICT_BIZ" AS dict ON d.device_type = dict.DICT_KEY
-        AND dict.CODE = 'SG_DEVICE_TYPE'
+        LEFT JOIN YWXT."BLADE_DICT_BIZ" AS dict ON d.device_type = dict.DICT_KEY AND dict.CODE = 'SG_DEVICE_TYPE'
+        LEFT JOIN YWXT."BLADE_DICT_BIZ" Pdict on dict.parent_id = Pdict.id
         LEFT JOIN ywxt.sg_gx gx ON d.device_type = gx.gx_type
         LEFT JOIN ywxt.sg_gx_step step ON gx.id = step.gx_info_id
         LEFT JOIN ywxt.sg_progress_report re ON re.gx_step_id = step.id
@@ -96,6 +131,8 @@
                 #{id}
             </foreach>
         </if>
+       ORDER BY pro.status desc ,pro.project_progress desc
+
     </select>
     <select id="progressList" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO">
        SELECT
@@ -144,14 +181,16 @@
 	a."ad_code" CODE,
 	a."ad_name" NAME,
 	SUM( CASE WHEN b.STATUS IN ( 1, 2 ) THEN 1 ELSE 0 END ) AS commenceNum,
-	count( b.STATUS ) projectSum
+	count( b.STATUS ) projectSum,
+    LISTAGG(b.id, ',') as proIds
 FROM
 	(
 	SELECT
 		dria."county_cd" AS countyCode,
 		att."guid" AS cityCode,
 		ad."ad_code" AS provinceCode,
-		info.STATUS
+		info.STATUS,
+		info.id
 	FROM
 		YWXT.SG_PROJECT_INFO info
 		LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = info.sk_id
@@ -174,8 +213,9 @@
         SELECT
 	dria."city_cd" code, dria."city_nm" name ,
 	sum( CASE WHEN info.STATUS IN ( 1, 2 ) THEN 1 ELSE 0 END ) AS commenceNum,
-	count( info.STATUS ) projectSum
-        FROM
+	count( info.STATUS ) projectSum,
+    LISTAGG(info.id, ',') as proIds
+    FROM
 	YWXT.SG_PROJECT_INFO info
 	LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = info.sk_id
     WHERE
@@ -196,7 +236,8 @@
     info.lot as code,
     info.lot as name,
 	sum( CASE WHEN info.STATUS IN ( 1, 2 ) THEN 1 ELSE 0 END ) AS commenceNum,
-	count( info.STATUS ) AS projectSum
+	count( info.STATUS ) AS projectSum,
+    LISTAGG(info.id, ',') as proIds
 FROM
 	YWXT.SG_PROJECT_INFO info
 	LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = info.sk_id
@@ -307,8 +348,9 @@
         pro.deviceStatus,
         pro.projectStatus,
         pro.reportId,
-        pro.lon_lat
-    from
+        pro.lon_lat,
+        pro.project_progress
+        from
         (SELECT
         pro.id,
         pro.project_name,
@@ -328,7 +370,8 @@
         pro.lon_lat,
         dria."county_cd" AS countyCode,
         att."guid" AS cityCode,
-        ad."ad_code" AS provinceCode
+        ad."ad_code" AS provinceCode,
+        pro.project_progress
         FROM
         ywxt.sg_project_info pro
         LEFT JOIN ywxt.sg_device d ON pro.id = d.program_id
@@ -362,11 +405,32 @@
                 #{id}
             </foreach>
         </if>
+        ORDER BY pro.projectStatus desc ,pro.project_progress desc
     </select>
     <select id="selectVOById" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO">
         select * from  ywxt.sg_project_info pro where pro.id = #{proframId}
     </select>
-    <!--    <select id="getProjectIds" resultType="java.lang.String">-->
 
-<!--    </select>-->
+    <select id="getDeviceTypes" resultType="cn.gistack.sm.sg.VO.SgStatisDeviceVO">
+        SELECT
+            count( d.id) AS deviceCount,
+            sum( CASE WHEN d.STATUS IN ( 1, 2 ) THEN 1 ELSE 0 END) deviceStart,
+            Pdict.DICT_KEY as pType
+        FROM
+            ywxt.sg_device d
+                LEFT JOIN ywxt.blade_dict_biz dict ON d.device_type = dict.DICT_KEY
+                LEFT JOIN YWXT."BLADE_DICT_BIZ" Pdict ON dict.parent_id = Pdict.id
+        WHERE program_id IN ${s}
+        GROUP BY
+            Pdict.DICT_KEY
+    </select>
+    <select id="getSgCodeByUser" resultType="java.lang.String">
+        SELECT
+            dp."SG_CODE"
+        FROM
+            ywxt.BLADE_USER u
+                LEFT JOIN ywxt.blade_dept dp ON u.dept_id = cast( dp.id AS VARCHAR )
+        WHERE u.id = #{userId}
+
+    </select>
 </mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxServiceImpl.java
index 57ef6a0..1e0ec2d 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxServiceImpl.java
@@ -106,6 +106,6 @@
 		if (CollectionUtils.isNotEmpty(list)){
 			throw  new ServiceException("此工序存在工序步骤,不允许删除");
 		}
-		this.delete(id);
+		sgGxMapper.deleteById(id);
 	}
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
index ff965e4..ecdc57a 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
@@ -80,6 +80,10 @@
 	@Override
 	@Transactional
 	public void add(SgProgressReportDO sgProgressReportDO) {
+		String resubmitId = sgProgressReportDO.getResubmitId();
+		if (StringUtils.isNotBlank(resubmitId)){
+			new LambdaUpdateChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getId,resubmitId).set(SgProgressReportDO::getResubmit,1).update();
+		}
 		Long userId = AuthUtil.getUserId();
 		sgProgressReportDO.setReportUser(userId);
 		Date now = DateUtil.now();
@@ -120,7 +124,7 @@
 
 		if (sgProgressReportDOS1!= null && sgProgressReportDOS1.size() > 0) {
 			for (SgProgressReportDO sgProgressReportDO1 : sgProgressReportDOS1) {
-				if (sgProgressReportDO1.getStatus()!= 2) {
+				if (sgProgressReportDO1.getStatus()!= 2 && sgProgressReportDO1.getStatus()!= 3)  {
 					throw new ServiceException("请先完成施工准备的审批!");
 				}
 			}
@@ -132,13 +136,23 @@
 		SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(gxStepId);
 		List<SgGxStepDO> list = sgGxStepMapper.selectByGxInfoId(sgGxStepDO.getGxInfoId());
 		QueryWrapper<SgProgressReportDO> wrapper = new QueryWrapper<>();
+		wrapper.in("status",Arrays.asList(0,1,2,3));
 		if(sgProgressReportDO.getGxDeviceId()==998 || sgProgressReportDO.getGxDeviceId()==999){
 			wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId).ne("status",4).eq("profram_id",sgProgressReportDO.getProframId());
 		}else {
 			wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId).ne("status",4);
 		}
 		List<SgProgressReportDO> sgProgressReportDOS = sgProgressReportMapper.selectList(wrapper);
-		if ( sgProgressReportDOS!=null && sgProgressReportDOS.size()>0){
+
+		if (CollectionUtils.isNotEmpty(sgProgressReportDOS)){
+			for (SgProgressReportDO reportDO : sgProgressReportDOS) {
+				if (reportDO.getStatus()==3 && reportDO.getResubmit()!=null && reportDO.getResubmit()==0){
+					throw new ServiceException("此工序已存在审批!");
+				}
+			}
+		}
+		List<SgProgressReportDO> reportDOS = sgProgressReportDOS.stream().filter(s -> s.getStatus() != 3).collect(Collectors.toList());
+		if ( reportDOS!=null && reportDOS.size()>0){
 			throw new ServiceException("此工序已存在审批!");
 		}
 		for (SgGxStepDO gxStepDO : list) {
@@ -147,6 +161,7 @@
 				wrapper1.eq("gx_step_id", gxStepDO.getId());
 				wrapper1.eq("gx_device_id",gxDeviceId);
 				wrapper1.ne("status",4);
+				wrapper1.ne("status",3);
 				SgProgressReportDO one = sgProgressReportMapper.selectOne(wrapper1);
 				if (one == null || one.getStatus() != 2) {
 					throw new ServiceException("请先完成" + gxStepDO.getGxStepName() + "的审批!");
@@ -228,6 +243,7 @@
 		}
 		sgProgressReportVO.setSgReportUserDOS(list);
 		List<SgStepReportVO> sgStepReportVOS = sgProgressReportMapper.selectByDeviceId(sgProgressReportVO.getGxDeviceId());
+		sgStepReportVOS = sgStepReportVOS.stream().filter(s -> s.getApprovalStatus() == null || (s.getApprovalStatus() != 4 && !(s.getApprovalStatus() == 3 && s.getResubmit() != 0))).collect(Collectors.toList());
 		sgProgressReportVO.setSgStepReportVOS(sgStepReportVOS);
 		return sgProgressReportVO;
 	}
@@ -408,6 +424,7 @@
 	public Map<String, Long> countList(ProjectSearchDTO searchDTO) {
 		Long userId = AuthUtil.getUserId();
 		searchDTO.setUserId(userId);
+		searchDTO.setAuditPerson(userId.toString());
 		List<SgProgressReportVO> all = sgProgressReportMapper.queryList(searchDTO);
 		searchDTO.setApprovalStatus(0);
 		List<SgProgressReportVO> pending = sgProgressReportMapper.queryList(searchDTO);
@@ -482,6 +499,9 @@
 	public IPage<SgProgressReportVO> progressPage(IPage<SgProgressReportVO> page, ProjectSearchDTO searchDTO) {
 		Long userId = AuthUtil.getUserId();
 		searchDTO.setUserId(userId);
+		if (searchDTO.getApprovalStatus()!=null && searchDTO.getApprovalStatus() ==0){
+			searchDTO.setAuditPerson(String.valueOf(userId));
+		}
 		List<SgProgressReportVO> list = sgProgressReportMapper.queryList(page, searchDTO);
 		return page.setRecords(list);
 	}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java
index be99689..400d558 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java
@@ -18,11 +18,13 @@
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jetbrains.annotations.NotNull;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StopWatch;
 
+import javax.security.auth.login.LoginContext;
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.math.RoundingMode;
@@ -53,17 +55,31 @@
 
 	@Override
 	public IPage<SgProjectInfoDO> queryPageList(IPage<SgProjectInfoDO> page, ProjectSearchDTO searchDTO) {
+		List<String> sgCodeS = getSgCodeByUser();
+		searchDTO.setSgCodeS(sgCodeS);
 		List<SgProjectInfoDO> sgProjectInfoDOS = baseMapper.queryPageList(page,searchDTO);
-		/*List<SgProjectInfoDO> projectProgress = getProjectProgress(sgProjectInfoMapper.queryStepByProject(searchDTO));
+		List<SgProjectInfoDO> projectProgress = getProjectProgress(sgProjectInfoMapper.queryStepByProject(searchDTO));
 		if (CollectionUtils.isNotEmpty(projectProgress)){
 			Map<Long, String> progressMap = projectProgress.stream().filter(s->s.getProjectProgress()!=null).collect(Collectors.toMap(SgProjectInfoDO::getId, SgProjectInfoDO::getProjectProgress));
 			sgProjectInfoDOS.forEach(s->{
 				s.setProjectProgress(progressMap.get(s.getId()));
 			});
-		}*/
+		}
 		return page.setRecords(sgProjectInfoDOS);
 	}
 
+	/**
+	 * 获取当前用户的工程编码
+	 */
+	public List<String> getSgCodeByUser(){
+		Long userId = AuthUtil.getUserId();
+		String sgCode =  sgProjectInfoMapper.getSgCodeByUser(userId.toString());
+		if (StringUtils.isNotBlank(sgCode)){
+			List<String> list = List.of(sgCode.split(","));
+			return list;
+		}
+		return null;
+	}
 	/**
 	 * 获取项目及项目下设备及设备下工序进度
 	 * @param searchDTO
@@ -103,54 +119,72 @@
 			}
 			SgProjectInfoVO sgProjectInfoVO = value.get(0);
 			SgProjectInfoDO sgProjectInfoDO = SgProjectInfoDO.builder().id(porId).lonLat(sgProjectInfoVO.getLonLat()).status(sgProjectInfoVO.getProjectStatus()).projectName(sgProjectInfoVO.getProjectName()).build();
-			List<SgTypeVO> sgGxDOS = new ArrayList<>();
-			//类型分组
-			Map<String, List<SgProjectInfoVO>> GxMap = value.stream().filter(s->s.getDeviceType()!=null).collect(Collectors.groupingBy(SgProjectInfoVO::getDeviceType));
-			for (Map.Entry<String, List<SgProjectInfoVO>> ty : GxMap.entrySet()) {
-				String type = ty.getKey();
-				List<SgProjectInfoVO> gxList = ty.getValue();
-				if (CollectionUtils.isEmpty(gxList)){
+			//父类型分组
+			List<PtypeVO> pTypes = new ArrayList();
+			Map<String, List<SgProjectInfoVO>> pTypeMap = value.stream().filter(s->s.getPtype()!=null).collect(Collectors.groupingBy(SgProjectInfoVO::getPtype));
+			for (Map.Entry<String, List<SgProjectInfoVO>> pty : pTypeMap.entrySet()) {
+				List<SgProjectInfoVO> ptyValue = pty.getValue();
+				if (CollectionUtils.isEmpty(ptyValue)){
 					continue;
 				}
-				SgTypeVO typeVO = SgTypeVO.builder().typeName(gxList.get(0).getTypeName()).build();
-				List<SgDeviceDO> deviceDOS = new ArrayList<>();
-				//设备分组
-				Map<Long, List<SgProjectInfoVO>> dMap = gxList.stream().collect(Collectors.groupingBy(SgProjectInfoVO::getDId));
-				for (Map.Entry<Long, List<SgProjectInfoVO>> device : dMap.entrySet()) {
-					Long dId = device.getKey();
-					List<SgProjectInfoVO> deList = device.getValue();
-					SgDeviceDO sgDeviceDO = new SgDeviceDO();
-					sgDeviceDO.setId(dId);
-					sgDeviceDO.setDeviceName(deList.get(0).getDeviceName());
-					List<SgGxStepDO> stepDOS = deList.stream().filter(s->s.getReportStatus()==null || s.getReportStatus()!=4).map(s -> SgGxStepDO.builder().id(s.getStepId()).gxStepNum(s.getGxStepNum()).gxStepName(s.getGxStepName()).deviceId(s.getDId()).approvalStatus(s.getReportStatus()).build()).collect(Collectors.toList());
-					List<SgGxStepDO> stepOver = stepDOS.stream().filter(s -> s.getApprovalStatus() != null && s.getApprovalStatus() == 2).collect(Collectors.toList());
-					BigDecimal stepSize = BigDecimal.valueOf(stepDOS.size());
-					BigDecimal stepOverSize = BigDecimal.ZERO;
-					if (!stepOver.isEmpty()){
-						stepOverSize = BigDecimal.valueOf(stepOver.size());
+				PtypeVO ptypeVO = PtypeVO.builder().pTypeName(ptyValue.get(0).getPtypeName()).build();
+				List<SgTypeVO> sgGxDOS = new ArrayList<>();
+				//类型分组
+				Map<String, List<SgProjectInfoVO>> GxMap = ptyValue.stream().filter(s->s.getDeviceType()!=null).collect(Collectors.groupingBy(SgProjectInfoVO::getDeviceType));
+				for (Map.Entry<String, List<SgProjectInfoVO>> ty : GxMap.entrySet()) {
+					String type = ty.getKey();
+					List<SgProjectInfoVO> gxList = ty.getValue();
+					if (CollectionUtils.isEmpty(gxList)){
+						continue;
 					}
-					BigDecimal divide = stepOverSize.divide(stepSize, 2, RoundingMode.HALF_UP);
-					sgDeviceDO.setStatus(divide.compareTo(new BigDecimal(1)) == 0?2:deList.get(0).getDeviceStatus());
-					sgDeviceDO.setProgress(divide.toString());
-					sgDeviceDO.setDeviceProgress(getBigDecimalPercent(divide));
-					sgDeviceDO.setStepDOList(stepDOS);
-					deviceDOS.add(sgDeviceDO);
-					allDevice.add(sgDeviceDO);
+					SgTypeVO typeVO = SgTypeVO.builder().typeName(gxList.get(0).getTypeName()).build();
+					List<SgDeviceDO> deviceDOS = new ArrayList<>();
+					//设备分组
+					Map<Long, List<SgProjectInfoVO>> dMap = gxList.stream().collect(Collectors.groupingBy(SgProjectInfoVO::getDId));
+					for (Map.Entry<Long, List<SgProjectInfoVO>> device : dMap.entrySet()) {
+						Long dId = device.getKey();
+						List<SgProjectInfoVO> deList = device.getValue();
+						SgDeviceDO sgDeviceDO = new SgDeviceDO();
+						sgDeviceDO.setId(dId);
+						sgDeviceDO.setDeviceName(deList.get(0).getDeviceName());
+						List<SgGxStepDO> stepDOS = deList.stream().filter(s -> s.getReportStatus() == null || (s.getReportStatus() != 4 && !(s.getReportStatus() == 3 && s.getResubmit() != 0))).map(s -> SgGxStepDO.builder().id(s.getStepId()).gxStepNum(s.getGxStepNum()).gxStepName(s.getGxStepName()).deviceId(s.getDId()).approvalStatus(s.getReportStatus()).build()).collect(Collectors.toList());
+						List<SgGxStepDO> stepOver = stepDOS.stream().filter(s -> s.getApprovalStatus() != null && s.getApprovalStatus() == 2).collect(Collectors.toList());
+						BigDecimal stepSize = BigDecimal.valueOf(stepDOS.size());
+						BigDecimal stepOverSize = BigDecimal.ZERO;
+						if (!stepOver.isEmpty()){
+							stepOverSize = BigDecimal.valueOf(stepOver.size());
+						}
+						BigDecimal divide = stepOverSize.divide(stepSize, 2, RoundingMode.HALF_UP);
+						sgDeviceDO.setStatus(divide.compareTo(new BigDecimal(1)) == 0?2:deList.get(0).getDeviceStatus());
+						sgDeviceDO.setProgress(divide.toString());
+						sgDeviceDO.setDeviceProgress(getBigDecimalPercent(divide));
+						sgDeviceDO.setStepDOList(stepDOS);
+						deviceDOS.add(sgDeviceDO);
+						allDevice.add(sgDeviceDO);
+					}
+					BigDecimal deviceSize = BigDecimal.valueOf(deviceDOS.size());
+					double sum = deviceDOS.stream().mapToDouble(s -> Double.parseDouble(s.getProgress())).sum();
+					BigDecimal deviceOver = BigDecimal.valueOf(sum);
+					BigDecimal divideDevice = deviceOver.divide(deviceSize, 2, RoundingMode.HALF_UP);
+					typeVO.setDeviceDOS(deviceDOS);
+					typeVO.setTypeProgress(getBigDecimalPercent(divideDevice));
+					typeVO.setProgress(divideDevice.toString());
+					sgGxDOS.add(typeVO);
 				}
-				BigDecimal deviceSize = BigDecimal.valueOf(deviceDOS.size());
-				double sum = deviceDOS.stream().mapToDouble(s -> Double.parseDouble(s.getProgress())).sum();
-				BigDecimal deviceOver = BigDecimal.valueOf(sum);
-				BigDecimal divideDevice = deviceOver.divide(deviceSize, 2, RoundingMode.HALF_UP);
-				typeVO.setDeviceDOS(deviceDOS);
-				typeVO.setTypeProgress(getBigDecimalPercent(divideDevice));
-				sgGxDOS.add(typeVO);
+				BigDecimal sgGxSize = BigDecimal.valueOf(sgGxDOS.size());
+				double sum = sgGxDOS.stream().mapToDouble(s -> Double.parseDouble(s.getProgress())).sum();
+				BigDecimal sgGxOver = BigDecimal.valueOf(sum);
+				BigDecimal divideSgGx = sgGxOver.divide(sgGxSize, 2, RoundingMode.HALF_UP);
+				ptypeVO.setPTypeProgress(getBigDecimalPercent(divideSgGx));
+				ptypeVO.setSgTypeVOS(sgGxDOS);
+				pTypes.add(ptypeVO);
 			}
 			BigDecimal allDeviceSize = BigDecimal.valueOf(allDevice.size());
 			if (!allDeviceSize.equals(BigDecimal.ZERO)){
 				double sum = allDevice.stream().mapToDouble(s -> Double.parseDouble(s.getProgress())).sum();
 				BigDecimal allDeviceOver = BigDecimal.valueOf(sum);
 				BigDecimal allDivideDevice = allDeviceOver.divide(allDeviceSize, 2, RoundingMode.HALF_UP);
-				sgProjectInfoDO.setSgGxDOS(sgGxDOS);
+				sgProjectInfoDO.setPtypeVOS(pTypes);
 				sgProjectInfoDO.setProjectProgress( getBigDecimalPercent(allDivideDevice));
 				sgProjectInfoDO.setProjectProgressNum(allDivideDevice);
 			}
@@ -251,17 +285,90 @@
 		//片区
 		if (ywxtAdDetail == null) {
 			sgStatisProVOS = sgProjectInfoMapper.getsgStatisticsZero(code);
+			getDeviceTypes(sgStatisProVOS);
 //			String getname = sgProjectInfoMapper.getname(code);
 			String getname = code;
 			updateProjectProgress(sgStatisProVOS, code, getname, "2");
 		} else if (ywxtAdDetail.getAdGrad().equals("1")) {//默认
 			sgStatisProVOS = sgProjectInfoMapper.getsgStatisticsOne(code);
+			getDeviceTypes(sgStatisProVOS);
 			updateProjectProgress(sgStatisProVOS, ywxtAdDetail.getPAdCode(), ywxtAdDetail.getPAdName(), "0");
 		} else {//区县
 			sgStatisProVOS = sgProjectInfoMapper.getsgStatisticsList(code);
+			getDeviceTypes(sgStatisProVOS);
 			updateProjectProgress(sgStatisProVOS, ywxtAdDetail.getAdCode(), ywxtAdDetail.getAdName(), "3");
 		}
 		return sgStatisProVOS;
+	}
+
+	/**
+	 * 统计设备类型开工率
+	 * @param sgStatisProVOS
+	 */
+	private void getDeviceTypes(List<SgStatisProVO> sgStatisProVOS) {
+		if (CollectionUtils.isNotEmpty(sgStatisProVOS)){
+			for (SgStatisProVO vo : sgStatisProVOS) {
+				String proIds = vo.getProIds();
+				if (StringUtils.isNotBlank(proIds)){
+				List<SgStatisDeviceVO> deviceVOS =	sgProjectInfoMapper.getDeviceTypes("("+proIds+")");
+				if(CollectionUtils.isNotEmpty(deviceVOS)){
+					Map<String, SgStatisDeviceVO> map = deviceVOS.stream().collect(Collectors.toMap(SgStatisDeviceVO::getPType, Function.identity()));
+					//表面变形
+					SgStatisDeviceVO sg108 = map.get("sg108");
+					if (Objects.nonNull(sg108)){
+						Integer deviceCount = sg108.getDeviceCount();
+						Integer deviceStart = sg108.getDeviceStart();
+						vo.setSurfaceNum(deviceCount);
+						if (deviceCount != 0){
+							BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP);
+							vo.setSeepageProgress(getBigDecimalPercent(divide));
+						}else {
+							vo.setSeepageProgress("0%");
+						}
+					}
+					//视频
+					SgStatisDeviceVO sg104 = map.get("sg104");
+					if (Objects.nonNull(sg104)){
+						Integer deviceCount = sg104.getDeviceCount();
+						Integer deviceStart = sg104.getDeviceStart();
+						vo.setVideoNum(deviceCount);
+						if (deviceCount != 0){
+							BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP);
+							vo.setVideoProgress(getBigDecimalPercent(divide));
+						}else {
+							vo.setVideoProgress("0%");
+						}
+					}
+					//渗压
+					SgStatisDeviceVO sg101 = map.get("sg101");
+					if (Objects.nonNull(sg101)){
+						Integer deviceCount = sg101.getDeviceCount();
+						Integer deviceStart = sg101.getDeviceStart();
+						vo.setTransNum(deviceCount);
+						if (deviceCount != 0){
+							BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP);
+							vo.setTransProgress(getBigDecimalPercent(divide));
+						}else {
+							vo.setTransProgress("0%");
+						}
+					}
+					//渗流
+					SgStatisDeviceVO sg102 = map.get("sg102");
+					if (Objects.nonNull(sg102)){
+						Integer deviceCount = sg102.getDeviceCount();
+						Integer deviceStart = sg102.getDeviceStart();
+						vo.setSeepageNum(deviceCount);
+						if (deviceCount != 0){
+							BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP);
+							vo.setSeepageProgress(getBigDecimalPercent(divide));
+						}else {
+							vo.setSeepageProgress("0%");
+						}
+					}
+					}
+				}
+			}
+		}
 	}
 
 	private void updateProjectProgress(List<SgStatisProVO> sgStatisProVOS, String pcode, String pname, String adGrad) {
@@ -314,11 +421,11 @@
 			List<SgProjectInfoDO> projectProgress = getProjectProgress(list);
 			projectProgress.forEach(p -> {
 
-				List<SgTypeVO> sgGxDOS = p.getSgGxDOS();
-				sgGxDOS.forEach(sgTypeVO -> {
-					String typeProgress = sgTypeVO.getTypeProgress().replace("%", "");
+				List<PtypeVO> ptypeVOS = p.getPtypeVOS();
+				ptypeVOS.forEach(sgTypeVO -> {
+					String typeProgress = sgTypeVO.getPTypeProgress().replace("%", "");
 					BigDecimal percentageBigDecimal = new BigDecimal(typeProgress).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
-					bigDecimals.merge(sgTypeVO.getTypeName(), percentageBigDecimal, BigDecimal::add);
+					bigDecimals.merge(sgTypeVO.getPTypeName(), percentageBigDecimal, BigDecimal::add);
 				});
 
 			});
@@ -384,8 +491,15 @@
 		QueryWrapper<SgProgressReportDO> queryWrapper = new QueryWrapper<>();
 		queryWrapper.eq("gx_step_id", stepIdForNull)
 			.eq("profram_id", programId);
-		SgProgressReportDO sgProgressReportDO = sgProgressReportMapper.selectOne(queryWrapper);
+		SgProgressReportDO sgProgressReportDO = null;
 
+		List<SgProgressReportDO> sgProgressReportDOS = sgProgressReportMapper.selectList(queryWrapper);
+		if (CollectionUtils.isNotEmpty(sgProgressReportDOS)) {
+			List<SgProgressReportDO> collect = sgProgressReportDOS.stream().filter(s -> s.getStatus() == null || (s.getStatus() != 4 && !(s.getStatus() == 3 && s.getResubmit() != 0))).collect(Collectors.toList());
+		  if (!collect.isEmpty()){
+			  sgProgressReportDO = collect.get(0);
+		  }
+		}
 		PreAcceVO preAcceVO = new PreAcceVO();
 		if (sgProgressReportDO!= null) {
 			preAcceVO.setId(sgProgressReportDO.getId().toString());
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectPersonConfigServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectPersonConfigServiceImpl.java
index 0e404b2..21569e7 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectPersonConfigServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectPersonConfigServiceImpl.java
@@ -3,11 +3,14 @@
 import cn.gistack.sm.sg.DO.SgProgressReportDO;
 import cn.gistack.sm.sg.DO.SgProjectPersonConfigDO;
 import cn.gistack.sm.sg.DO.SgProjectRolePersonV0;
+import cn.gistack.sm.sg.DO.SgReportUserDO;
 import cn.gistack.sm.sg.DTO.AddSgProjectPersonConfigDTO;
 import cn.gistack.sm.sg.DTO.ProjectSearchDTO;
 import cn.gistack.sm.sg.mapper.SgProgressReportMapper;
 import cn.gistack.sm.sg.mapper.SgProjectPersonConfigMapper;
+import cn.gistack.sm.sg.mapper.SgReportUserMapper;
 import cn.gistack.sm.sg.service.SgProjectPersonConfigService;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -33,6 +36,9 @@
 	private SgProjectPersonConfigMapper projectPersonConfigMapper;
 	@Autowired
 	private SgProgressReportMapper sgProgressReportMapper;
+
+	@Autowired
+	private SgReportUserMapper sgReportUserMapper;
 	@Override
 	public List<String> getRoleList(ProjectSearchDTO searchDTO) {
 		List<String> list = projectPersonConfigMapper.getRoleList(searchDTO);
@@ -48,17 +54,26 @@
 				projectPersonConfigMapper.insert(sgProjectPersonConfigDO);
 			}else {
 				SgProjectPersonConfigDO old = projectPersonConfigMapper.selectById(id);
-				boolean isReport = !new LambdaQueryChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getProframId, old.getProgramId()).list().isEmpty();
+				List<SgReportUserDO> reportUserDOS =  sgProgressReportMapper.selectProcessUserByProjectId(old.getProgramId());
 				if (Objects.isNull(userId)){
-					if (isReport){
-						throw new ServiceException("此项目配置存在审批,不允许修改");
-					}
 					projectPersonConfigMapper.deleteById(id);
-				}else if (!old.getUserId().equals(sgProjectPersonConfigDO.getUserId())){
-					if (isReport){
-						throw new ServiceException("此项目配置存在审批,不允许修改");
+					if (!CollectionUtils.isEmpty(reportUserDOS)){
+						reportUserDOS.forEach(s->{
+							if (Objects.equals(old.getUserId(), s.getUserId())){
+//								sgReportUserMapper.deleteById(s.getId());
+							}
+						});
 					}
+				}else if (!old.getUserId().equals(sgProjectPersonConfigDO.getUserId())){
 					projectPersonConfigMapper.updateById(sgProjectPersonConfigDO);
+					if (!CollectionUtils.isEmpty(reportUserDOS)){
+						reportUserDOS.forEach(s->{
+							if (Objects.equals(old.getUserId(), s.getUserId())){
+								s.setUserId(sgProjectPersonConfigDO.getUserId());
+								sgReportUserMapper.updateById(s);
+							}
+						});
+					}
 				}
 			}
 		}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml
index efd6612..f043d33 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml
@@ -343,7 +343,8 @@
                case
                    when b."ad_grad" = 2 THEN b."ad_code"
                    when c."ad_grad" = 2 THEN c."ad_code"
-                   ELSE d."ad_code" END                      AS cityCode
+                   ELSE d."ad_code" END                      AS cityCode,
+               a."eng_scal" AS engScal
         FROM sjzt_md."att_res_base" a
                  LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
                  LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.java
index 011c452..2c11e97 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.java
@@ -64,6 +64,10 @@
 														 @Param("cityCode") String cityCode,
 														 @Param("type") String type);
 
+	List<PersonVO> getCityCountyPersonListNewByResGuid(@Param("countyCode") String countyCode,
+													@Param("cityCode") String cityCode,
+													@Param("type") String type);
+
 	List<PatrolResponsiblePerson> getPatrolResponsiblePersonByResCdList(@Param("ids") List<String> reservoirList);
 
 	/**
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.xml
index 3c3da41..1615af3 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.xml
@@ -233,6 +233,50 @@
         )
     </select>
 
+    <select id="getCityCountyPersonListNewByResGuid" resultType="cn.gistack.sm.sjztmd.vo.PersonVO">
+        select * from (
+            (
+                select real_name as name, phone, '预警短信发送人员' as type
+                from YWXT.blade_user bu
+                         left join YWXT.blade_dept bd on locate(bd.id, bu.dept_id) > 0 and bd.is_deleted = 0
+                         left join YWXT.blade_role br on locate(br.id, bu.role_id) > 0 and br.is_deleted = 0
+                where bu.is_deleted = 0
+                  and br.role_alias = 'xjyjdxfsry'
+                  and bd.ad_code = #{countyCode} limit 1
+            )
+            union
+            (
+                select real_name as name, phone, '预警短信发送人员' as type
+                from YWXT.blade_user bu
+                         left join YWXT.blade_dept bd on locate(bd.id, bu.dept_id) > 0 and bd.is_deleted = 0
+                         left join YWXT.blade_role br on locate(br.id, bu.role_id) > 0 and br.is_deleted = 0
+                where bu.is_deleted = 0
+                  and br.role_alias = 'qxswjgly'
+                  and bd.ad_code = #{countyCode} limit 1
+            )
+            union
+            (
+                select real_name as name, phone, '预警短信发送人员' as type
+                from YWXT.blade_user bu
+                         left join YWXT.blade_dept bd on locate(bd.id, bu.dept_id) > 0 and bd.is_deleted = 0
+                         left join YWXT.blade_role br on locate(br.id, bu.role_id) > 0 and br.is_deleted = 0
+                where bu.is_deleted = 0
+                  and br.role_alias = 'sjyjdxfsry'
+                  and bd.ad_code = #{cityCode} limit 1
+            )
+            union
+            (
+                select real_name as name, phone, '预警短信发送人员' as type
+                from YWXT.blade_user bu
+                         left join YWXT.blade_dept bd on locate(bd.id, bu.dept_id) > 0 and bd.is_deleted = 0
+                         left join YWXT.blade_role br on locate(br.id, bu.role_id) > 0 and br.is_deleted = 0
+                where bu.is_deleted = 0
+                  and br.role_alias = 'dsswjgly'
+                  and bd.ad_code = #{cityCode} limit 1
+            )
+        ) limit 1
+    </select>
+
     <select id="getPatrolResponsiblePersonByResCdList"
             resultType="cn.gistack.sm.sjztmd.entity.PatrolResponsiblePerson">
 
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResManagePersonServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResManagePersonServiceImpl.java
index d3c8c79..e90b56f 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResManagePersonServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResManagePersonServiceImpl.java
@@ -160,6 +160,15 @@
 		// 查询当前水库对应的市级编号和县区编号
 		AttResBaseVO attResBaseVO = attResBaseService.getCityCountyCodeByResGuid(res_cd);
 		if (null!= attResBaseVO) {
+
+			//如果是小型水库只发县级短信预警角色或者县级管理员
+			if (attResBaseVO.getEngScal().equals("小(2)型") || attResBaseVO.getEngScal().equals("小(1)型")) {
+				// 通过编号查询对应的人员
+				List<PersonVO> personListByResGuid = baseMapper.getCityCountyPersonListNewByResGuid(attResBaseVO.getCountyCode(), attResBaseVO.getCityCode(), "");
+				personVOList.addAll(personListByResGuid);
+				return personVOList;
+			}
+
 			// 通过编号查询对应的人员
 			List<PersonVO> personListByResGuid = baseMapper.getCityCountyPersonListByResGuid(attResBaseVO.getCountyCode(), attResBaseVO.getCityCode(), "");
 			personVOList.addAll(personListByResGuid);
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/TbWordVO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/TbWordVO.java
index 330a502..8c64478 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/TbWordVO.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/TbWordVO.java
@@ -327,8 +327,10 @@
 		String holeText = "";
 		if (norspi.getIsGate().equals("是")) {
 			gateText = "有闸控制";
-			String hole = norspi.getGateNum() == 1 ? "单" : String.valueOf(norspi.getGateNum());
-			holeText = StringUtil.format(",{}孔", hole);
+			if (null != norspi.getGateNum()) {
+				String hole = norspi.getGateNum() == 1 ? "单" : String.valueOf(norspi.getGateNum());
+				holeText = StringUtil.format(",{}孔", hole);
+			}
 		} else {
 			gateText = "无闸控制";
 		}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/WaterDataTermitesController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/WaterDataTermitesController.java
new file mode 100644
index 0000000..46e88b9
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/WaterDataTermitesController.java
@@ -0,0 +1,49 @@
+package cn.gistack.sm.sjztods.controller;
+
+import cn.gistack.sm.sjztods.entity.SkxsQkTj;
+import cn.gistack.sm.sjztods.entity.WaterDataTermites;
+import cn.gistack.sm.sjztods.service.IWaterDataTermitesService;
+import cn.gistack.sm.sjztods.vo.WaterDataTermitesVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Slf4j
+@Api(tags = "白蚁监测数据表")
+@RestController
+@RequestMapping("/sjztods/waterDataTermites")
+@AllArgsConstructor
+public class WaterDataTermitesController {
+
+	private final IWaterDataTermitesService waterDataTermitesService;
+
+	/**
+	 * 修改状态
+	 * @param waterDataTermites
+	 * @return
+	 */
+	@ApiOperation(value = "修改状态", notes = "修改状态")
+	@PostMapping(value = "/updateStatus")
+	public R updateStatus(@RequestBody WaterDataTermitesVO waterDataTermites) {
+		if (StringUtil.isAllBlank(waterDataTermites.getStartTime(),
+			waterDataTermites.getEndTime(),
+		waterDataTermites.getOrder()) ||
+			null == waterDataTermites.getStatus()) {
+			return R.fail("非法参数");
+		}
+
+		boolean ret = waterDataTermitesService.updateWaterDataTermites(waterDataTermites.getStartTime(),
+			waterDataTermites.getEndTime(),
+			waterDataTermites.getStatus(),
+			waterDataTermites.getOrder());
+		return R.status(ret);
+	}
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/WaterDataTermitesMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/WaterDataTermitesMapper.java
new file mode 100644
index 0000000..c432672
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/WaterDataTermitesMapper.java
@@ -0,0 +1,14 @@
+package cn.gistack.sm.sjztods.mapper;
+
+import cn.gistack.sm.sjztods.entity.WaterDataTermites;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+public interface WaterDataTermitesMapper extends BaseMapper<WaterDataTermites> {
+
+	int updateWaterDataTermites(@Param("startTime") String startTime,
+								 @Param("endTime") String endTime,
+								 @Param("status") Integer status,
+								 @Param("order") String order);
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/WaterDataTermitesMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/WaterDataTermitesMapper.xml
new file mode 100644
index 0000000..d6fa169
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/WaterDataTermitesMapper.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.gistack.sm.sjztods.mapper.WaterDataTermitesMapper">
+
+    <update id="updateWaterDataTermites">
+        update SJZT_ODS."water_data_termites" set "status" = #{status}
+        WHERE "order" = #{order} and "ob_date" &gt;= #{startTime} and "ob_date" &lt;= #{endTime}
+    </update>
+
+</mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/IWaterDataTermitesService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/IWaterDataTermitesService.java
new file mode 100644
index 0000000..8e78c06
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/IWaterDataTermitesService.java
@@ -0,0 +1,16 @@
+package cn.gistack.sm.sjztods.service;
+
+import cn.gistack.sm.sjztods.entity.WaterDataTermites;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 白蚁监测数据
+ */
+public interface IWaterDataTermitesService extends IService<WaterDataTermites> {
+
+	boolean updateWaterDataTermites(String startTime,
+								 String endTime,
+								 Integer status,
+									String order);
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/WaterDataTermitesServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/WaterDataTermitesServiceImpl.java
new file mode 100644
index 0000000..042c566
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/WaterDataTermitesServiceImpl.java
@@ -0,0 +1,19 @@
+package cn.gistack.sm.sjztods.service.impl;
+
+import cn.gistack.sm.sjztods.entity.WaterDataTermites;
+import cn.gistack.sm.sjztods.mapper.WaterDataTermitesMapper;
+import cn.gistack.sm.sjztods.service.IWaterDataTermitesService;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service
+@DS("ztznwh")
+public class WaterDataTermitesServiceImpl extends ServiceImpl<WaterDataTermitesMapper, WaterDataTermites> implements IWaterDataTermitesService {
+
+
+	@Override
+	public boolean updateWaterDataTermites(String startTime, String endTime, Integer status, String order) {
+		return baseMapper.updateWaterDataTermites(startTime, endTime, status, order) > 0;
+	}
+}

--
Gitblit v1.9.3