From c7f24dde247a95facd2f8d3659ed9309139d1088 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 06 Jun 2023 20:00:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev

---
 skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java            |   41 +++++-
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java |   11 +
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml               |   23 +++
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java              |    7 +
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java  |   69 ++++++++---
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java      |    3 
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java            |   16 ++
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java           |   12 +
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java                  |    9 +
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java   |   16 ++
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java         |   93 +++++++++++++--
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java        |    5 
 12 files changed, 253 insertions(+), 52 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 7528ec0..db8a8dc 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
@@ -1,6 +1,10 @@
 package cn.gistack.alerts.sms.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
@@ -9,16 +13,26 @@
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.springblade.core.tenant.mp.TenantEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /**
  * 短信发送记录
+ * @author Administrator
  */
 @Data
 @TableName("sm_sms_record")
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @ApiModel(value = "sm_sms_record对象", description = "短信发送记录")
-public class SmsRecord extends TenantEntity {
+public class SmsRecord{
+
+	@JsonSerialize(using = ToStringSerializer.class)
+	@ApiModelProperty("主键id")
+	@TableId(value = "id", type = IdType.ASSIGN_ID)
+	private Long id;
+
 	/**
 	 * 模板id
 	 */
@@ -30,12 +44,6 @@
 	 */
 	@ApiModelProperty(value = "手机号")
 	private String tel;
-
-	/**
-	 * 手机号(废弃)
-	 */
-	@ApiModelProperty(value = "手机号(废弃)")
-	private String phone;
 
 	/**
 	 * 消息内容
@@ -62,10 +70,25 @@
 	private String responseMsg;
 
 	/**
-	 * 响应消息
+	 * 发送结果ID
 	 */
-	@ApiModelProperty(value = "响应消息")
+	@ApiModelProperty(value = "发送结果ID")
 	@JsonSerialize(using = ToStringSerializer.class)
 	private Long resultId;
 
+	@JsonSerialize(using = ToStringSerializer.class)
+	@ApiModelProperty("创建人")
+	private Long createUser;
+
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty("创建时间")
+	private Date createTime;
+
+	@ApiModelProperty("业务状态")
+	private Integer status;
+
+	@TableLogic
+	@ApiModelProperty("是否已删除")
+	private Integer isDeleted;
+
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java
index 392d60b..2ee9888 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiDataColumnConstant.java
@@ -40,4 +40,15 @@
 		add("rz");
 	}};
 
+	/**
+	 * 水位初次超汛限告警(水库技术责任人、巡查责任人)
+	 */
+	public static List<String>  waterFirstOverList = new ArrayList<String>()
+	{{
+		add("town_nm");
+		add("res_nm");
+		add("rz");
+		add("over_z");
+	}};
+
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java
index 3a9786c..301acff 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/constant/ZtApiUrlConstant.java
@@ -23,4 +23,9 @@
 	 */
 	public static final String res_diff_dead_z_api = "http://10.42.6.192/services/1234567890ABCDEFGHIJKLMN/res/diff_dead_z";
 
+	/**
+	 *  水位初次超汛限告警
+	 */
+	public static final String over_z_res_api = "http://10.10.2.192/services/1234567890ABCDEFGHIJKLMN/over_z_res";
+
 }
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 3634407..e1bb822 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
@@ -66,7 +66,7 @@
 	 * @param templateId
 	 * @param alarmRule
 	 * @param columnsList 列名集合信息
-	 * @param flag
+	 * @param flag 是否包含日期
 	 * @return
 	 */
 	private SmsRequestTemplate getSendSmsTemplate(JSONArray jsonArray,
@@ -210,6 +210,29 @@
 	}
 
 	/**
+	 * 依次添加巡查责任人,技术责任人信息
+	 * @param list
+	 */
+	private void addPatrolTechnologyInfo(List<String> list) {
+		// 查询巡查责任人姓名,技术责任人姓名信息
+		List<PersonVO> personVOList = attResManagePersonClient.getPersonListByResGuid(list.get(0),"4,5");
+		String xczrr = "";
+		String jszrr = "";
+		for (PersonVO personVO : personVOList) {
+			if (personVO.getType().equals("5")){
+				xczrr = personVO.getName();
+			}
+			if (personVO.getType().equals("4")){
+				jszrr = personVO.getName();
+			}
+		}
+		// 巡查责任人姓名
+		list.add(xczrr);
+		// 技术责任人姓名
+		list.add(jszrr);
+	}
+
+	/**
 	 * 默认实现
 	 *
 	 * @param arg1 告警规则名称
@@ -349,22 +372,7 @@
 			// 遍历,拼接县水利部人员电话
 			for (List<String> list : smsRequestTemplate.getTemplateContent()) {
 				// 后面依次拼接 巡查责任人姓名,技术责任人姓名,市县水利部门人员姓名电话(暂时不要)
-				// 查询巡查责任人姓名,技术责任人姓名信息
-				List<PersonVO> personVOList = attResManagePersonClient.getPersonListByResGuid(list.get(0),"4,5");
-				String xczrr = "";
-				String jszrr = "";
-				for (PersonVO personVO : personVOList) {
-					if (personVO.getType().equals("5")){
-						xczrr = personVO.getName();
-					}
-					if (personVO.getType().equals("4")){
-						jszrr = personVO.getName();
-					}
-				}
-				// 巡查责任人姓名
-				list.add(xczrr);
-				// 技术责任人姓名
-				list.add(jszrr);
+				addPatrolTechnologyInfo(list);
 				// 市县水利部门人员姓名电话(暂时不要)
 //				list.add("测试:13112341234");
 				// 保存告警记录信息
@@ -380,6 +388,8 @@
 		return "水位接近汛限告警";
 	}
 
+
+
 	/**
 	 * 策略6: 水位初次超汛限告警
 	 *
@@ -388,8 +398,29 @@
 	 * @return
 	 */
 	public String waterFirstOverHandle(String arg1, String arg2) {
-		// 业务逻辑处理 2...
-		return "";
+		// 查询当前策略对应的告警规则信息
+		AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
+		if (null!=alarmRule) {
+			// 调用中台服务接口查询数据
+			JSONArray ztData = getZtData("", ZtApiUrlConstant.over_z_res_api);
+			// 只发短信,将发短信信息组装好
+			SmsRequestTemplate smsRequestTemplate
+				= getSendSmsTemplate(ztData, "2431012216671",alarmRule, ZtApiDataColumnConstant.waterFirstOverList,true);
+			// 拼接后面内容
+			for (List<String> list : smsRequestTemplate.getTemplateContent()) {
+				// 依次拼接巡查责任人,技术责任人姓名
+				addPatrolTechnologyInfo(list);
+				// 保存告警记录信息
+				AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule);
+				if (null != alarmRecord) {
+					list.add(alarmRecord.getId().toString());
+				}
+			}
+			// 调用短信服务
+			smsService.sendSignMsg(smsRequestTemplate);
+		}
+		// 返回
+		return "水位初次超汛限告警";
 	}
 
 	/**
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 4d0dffe..1c5e7c7 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
@@ -19,6 +19,7 @@
 import org.springframework.web.bind.annotation.*;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import static cn.gistack.common.cache.CacheNames.PHONE_KEY;
@@ -72,7 +73,7 @@
 
 	/**
 	 * 短信动态内容发送通用方法(仅支持 具名变量 {手机号码:11} 模式的模板)
-	 * request 必须包含手机号,模板id,拼接好的内容
+	 * request
 	 * @param smsRequest
 	 * @return
 	 */
@@ -254,7 +255,7 @@
 
 
 	/**
-	 * 发送 具名 变量模板短信
+	 * 发送 具名 变量模板短信(告警定制)
 	 * @param smsRequest 发送对象
 	 * @return
 	 */
@@ -262,4 +263,15 @@
 	public R sendSignMsg(@RequestBody SmsRequestTemplate smsRequest){
 		return R.data(smsService.sendSignMsg(smsRequest));
 	}
+
+
+	/**
+	 * 发送降雨短信
+	 * @param params 发送对象
+	 * @return
+	 */
+	@PostMapping("/sendSignRainMsg")
+	public R sendSignRainMsg(@RequestBody Map<String,Object> params){
+		return R.data(smsService.sendSignRainMsg(params));
+	}
 }
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 1ebe2b1..375f64f 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
@@ -8,7 +8,6 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
@@ -26,7 +25,7 @@
 @RestController
 @RequestMapping("/smsRecord/smsRecord")
 @AllArgsConstructor
-public class SmsRecordController extends BladeController {
+public class SmsRecordController{
 
    private ISmsRecordService smsRecordService;
 
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 4967e8e..58d2715 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
@@ -21,4 +21,11 @@
 	 * @return
 	 */
     List<SmsRecordVO> selectSmsRecordPage(IPage<SmsRecordVO> page,@Param("smsRecord") SmsRecordVO smsRecord);
+
+	/**
+	 * 批量插入记录
+	 * @param list
+	 * @return
+	 */
+    int batchSaveSendRecord(@Param("list") List<SmsRecord> 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 459a0e1..064605f 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
@@ -5,8 +5,8 @@
     <!--自定义分页列表查询-->
     <select id="selectSmsRecordPage" resultType="cn.gistack.alerts.sms.vo.SmsRecordVO">
         select * from sm_sms_record where 1=1 and is_deleted = 0
-        <if test="smsRecord.phone!=null and smsRecord.phone!=''">
-            and phone like concat(concat('%',#{smsRecord.phone}),'%')
+        <if test="smsRecord.tel!=null and smsRecord.tel!=''">
+            and tel like concat(concat('%',#{smsRecord.tel}),'%')
         </if>
         <if test="smsRecord.content!=null and smsRecord.content!=''">
             and content like concat(concat('%',#{smsRecord.content}),'%')
@@ -17,4 +17,23 @@
         order by id desc
     </select>
 
+    <!--批量新增-->
+    <insert id="batchSaveSendRecord"
+            parameterType="cn.gistack.alerts.sms.entity.SmsRecord" useGeneratedKeys="true" keyProperty="id">
+        insert into sm_sms_record
+        (id,template_id,tel,content,response_status,response_msg,result_id,is_deleted,create_time)
+        <foreach collection="list" item="item" index="index" separator=",">
+            (
+            #{item.id},
+            #{item.templateId},
+            #{item.tel},
+            #{item.content},
+            #{item.responseStatus},
+            #{item.responseMsg},
+            #{item.resultId},
+            0,now()
+            )
+        </foreach>
+    </insert>
+
 </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 67aacf1..84246bd 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
@@ -3,9 +3,11 @@
 import cn.gistack.alerts.sms.entity.SmsRecord;
 import cn.gistack.alerts.sms.vo.SmsRecordVO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseService;
+import com.baomidou.mybatisplus.extension.service.IService;
 
-public interface ISmsRecordService extends BaseService<SmsRecord> {
+import java.util.List;
+
+public interface ISmsRecordService extends IService<SmsRecord> {
 
 	/**
 	 * 自定义分页列表查询
@@ -14,4 +16,10 @@
 	 * @return
 	 */
     Object selectSmsRecordPage(IPage<SmsRecordVO> page, SmsRecordVO smsRecord);
+
+	/**
+	 * 批量插入记录
+	 * @param list
+	 */
+	int batchSaveSendRecord(List<SmsRecord> list);
 }
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 fd52a3b..1bfef26 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
@@ -25,7 +25,7 @@
 					 List<String> phoneNumbers);
 
 	/**
-	 * 发送 具名 变量模板短信
+	 * 发送 具名 变量模板短信 (告警定制)
 	 * @param smsRequestTemplate
 	 * @return
 	 */
@@ -55,4 +55,11 @@
 	 * @return
 	 */
 	Map<String, Object> saveInStationInfo(SmsRequestTemplate smsRequestTemplate);
+
+	/**
+	 * 发送降雨短信
+	 * @param params 发送对象
+	 * @return
+	 */
+	Object sendSignRainMsg(Map<String, Object> params);
 }
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 aed5514..e373aac 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
@@ -5,15 +5,17 @@
 import cn.gistack.alerts.sms.service.ISmsRecordService;
 import cn.gistack.alerts.sms.vo.SmsRecordVO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseServiceImpl;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * 短信发送记录
  * @author zhongrj
  */
 @Service
-public class SmsRecordServiceImpl extends BaseServiceImpl<SmsRecordMapper, SmsRecord> implements ISmsRecordService {
+public class SmsRecordServiceImpl extends ServiceImpl<SmsRecordMapper, SmsRecord> implements ISmsRecordService {
 
 	/**
 	 * 自定义分页列表查询
@@ -30,4 +32,14 @@
 		// 查询返回
 		return page.setRecords(baseMapper.selectSmsRecordPage(page,smsRecord));
 	}
+
+	/**
+	 * 批量插入记录
+	 * @param list
+	 * @return
+	 */
+	@Override
+	public int batchSaveSendRecord(List<SmsRecord> list) {
+		return baseMapper.batchSaveSendRecord(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 e1b173e..fb52c50 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
@@ -15,10 +15,14 @@
 import cn.gistack.alerts.sms.service.SmsService;
 import cn.gistack.alerts.sms.util.SmsUtils;
 import cn.gistack.alerts.sms.vo.SmsRequestTemplate;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * 短信发送服务实现层
@@ -65,7 +69,7 @@
 	}
 
 	/**
-	 * 发送 具名 变量模板短信
+	 * 发送 具名 变量模板短信(告警定制)
 	 * @param smsRequestTemplate
 	 * @return
 	 */
@@ -194,12 +198,34 @@
 	}
 
 	/**
-	 * 发送 具名 变量模板短信--批量一次发送
-	 * @param title 具名变量头
+	 * 发送降雨短信--批量一次发送
+	 * @param params 具名变量头
 	 * @return
 	 */
-	public Object sendSignMsg(String title, String datas, SMSSendRequest request, Integer type, SmsTemplate smsTemplate) {
-		String[] titleArr = title.split(",");
+	@Override
+	public Object sendSignRainMsg(Map<String, Object> params) {
+		String[] titleArr = params.get("title").toString().split(",");
+		String data = params.get("data").toString();
+		String templateId = params.get("templateId").toString();
+		String content = params.get("content").toString();
+		List<String> phones = (List<String>)params.get("phones");
+		List<String> errPhones = new ArrayList<>();
+		// 手机号去重
+		Set<String> hashSet = new HashSet<>();
+		for (String phone : phones) {
+			hashSet.add(phone);
+		}
+		StringBuilder builder = new StringBuilder();
+		// 变量
+		for (String phone : hashSet) {
+			if (validator(phone)){
+				builder.append(phone+","+data).append(";");
+			}else {
+				// 异常手机号
+				errPhones.add(phone);
+			}
+		}
+		String datas = builder.toString();
 		String[] rows = datas.split(";");
 		String[][] dyns = new String[rows.length + 1][titleArr.length];
 		dyns[0] = titleArr;
@@ -210,22 +236,45 @@
 		}
 		//请求参数
 		DynSMSSendRequest sendRequest = new DynSMSSendRequest();
-		sendRequest.setTemplateId(request.getTemplateId());
+		sendRequest.setTemplateId(templateId);
 		sendRequest.setDynData(dyns);
 		// 发送
 		ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(sendRequest);
+		SMSSendRequest request = new SMSSendRequest();
+		request.setTemplateId(templateId);
+		request.setMessageContent(content);
+		request.setUserNumber("");
 		// 先保存结果记录
 		SmsResult smsResult = saveSendResult(request, rows.length);
-		SmsRecord smsRecord = new SmsRecord();
 		if (null != smsResult){
-			// 保存记录
-			smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
+			List<SmsRecord> list = new ArrayList<>();
+			// 遍历保存
+			for (String phone : hashSet) {
+				SmsRecord smsRecord = new SmsRecord();
+				smsRecord.setId(IdWorker.getId());
+				smsRecord.setTel(phone);
+				smsRecord.setContent(content);
+				smsRecord.setTemplateId(templateId);
+				smsRecord.setResultId(smsResult.getId());
+				smsRecord.setResponseStatus(resultComResult.getCode().toString());
+				smsRecord.setResponseMsg(resultComResult.getMsg());
+				// 加入集合
+				list.add(smsRecord);
+			}
+			// 批量保存记录
+			smsRecordService.batchSaveSendRecord(list);
 		}
-		Map<String, Object> map = new HashMap<>(2);
-		map.put("smsRecord",smsRecord);
-		map.put("smsResult",smsResult);
+		Integer diff = phones.size() - hashSet.size();
+		if (resultComResult.getCode()==0){
+			String successMsg = "发送成功!共提交号码 "+phones.size()+" 个,其中重复号码 "+diff+" 个,错误号码 "
+				+errPhones.size()+" 个,发送成功号码 "+ hashSet.size() + " 个。";
+			// 返回
+			return R.data(200,successMsg,null);
+		}
+		String errorMsg = "发送失败!共提交号码 "+phones.size()+" 个,其中重复号码 "+diff+" 个,错误号码 "+errPhones.size()+
+			" 个,发送异常号码 "+ hashSet.size()+" 个,异常原因" + resultComResult.getMsg() + "。";
 		// 返回
-		return map;
+		return R.data(400,errorMsg,null);
 	}
 
 
@@ -274,5 +323,23 @@
 		return smsRecord;
 	}
 
+	/**
+	 * 校验手机号码
+	 */
+	public static boolean validator(String phone) {
+		if (null!=phone && !phone.equals("")) {
+			String regex = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$";
+			if (phone.length() != 11) {
+				return false;
+			} else {
+				Pattern p = Pattern.compile(regex);
+				Matcher m = p.matcher(phone);
+				boolean isMatch = m.matches();
+				return isMatch;
+			}
+		}
+		return false;
+	}
+
 
 }

--
Gitblit v1.9.3