From 877e64ea7a23472297ba93027210bb1d4c4a8c4f Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Sat, 01 Jul 2023 17:23:12 +0800
Subject: [PATCH] 短信导入发送数据返回提示修改,告警短信发送修改(新增市县水利部人员查询并放入短信中)
---
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java | 168 +++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 141 insertions(+), 27 deletions(-)
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 c1bd963..ecfa27c 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
@@ -83,7 +83,7 @@
List<ComResult<SMSSendDataResult>> list = new ArrayList<>();
if (phoneNumbers.size()>0){
// 先保存结果记录
- SmsResult smsResult = saveSendResult(null,request, phoneNumbers.size());
+ SmsResult smsResult = saveSendResult(null,null,request, phoneNumbers.size());
// 遍历发送
for (String phone : phoneNumbers) {
request.setUserNumber(phone);
@@ -112,7 +112,7 @@
request.setTemplateId(smsTemplate.getTemplateId());
List<List<String>> templateContent = smsRequestTemplate.getTemplateContent();
// 先保存结果记录
- SmsResult smsResult = saveSendResult(null,request, templateContent.size());
+ SmsResult smsResult = saveSendResult(null,null,request, templateContent.size());
List<SmsRecord> smsRecordList = new ArrayList<>();
// 遍历处理
for (List<String> list : templateContent) {
@@ -145,7 +145,7 @@
String format = String.format(s, list.toArray());
// 设置内容
request.setMessageContent(format);
- // 保存记录
+ // 保存短信发送记录
smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
if (null != smsRecord){
alarmRecordDetail.setAlarmContent(format);
@@ -164,6 +164,129 @@
}
/**
+ * 发送 具名 变量模板短信(告警定制)
+ * @param smsRequestTemplate
+ * @return
+ */
+// @Override
+// public Map<String, Object> sendSignMsg(SmsRequestTemplate smsRequestTemplate) {
+// // 取出数据
+// SMSSendRequest request = new SMSSendRequest();
+// SmsTemplate smsTemplate = smsRequestTemplate.getSmsTemplate();
+// request.setTemplateId(smsTemplate.getTemplateId());
+// // 批量发送短信
+// Map<String, Object> map = batchSendAlertsSms(smsRequestTemplate.getSmsTemplate(), smsRequestTemplate.getTemplateContent());
+// int count = Integer.parseInt(map.get("errCount").toString());
+// ComResult<DynSMSSendDataResult> resultComResult =(ComResult<DynSMSSendDataResult>) map.get("resultComResult");
+// // 保存短信结果记录
+// SmsResult smsResult = saveSendResult(resultComResult.getCode().toString(),resultComResult.getMsg(),request, smsRequestTemplate.getTemplateContent().size()-count);
+// // 保存详情记录(短信详情,告警详情)
+//// List<SmsRecord> smsRecordList = saveAlertsAndSmsDetail(smsResult,resultComResult,smsRequestTemplate.getSmsTemplate(), smsRequestTemplate.getTemplateContent(),request);
+// // 设置返回数据
+// Map<String, Object> params = new HashMap<>(2);
+//// params.put("smsRecord",smsRecordList.size());
+// // 返回
+// return params;
+// }
+
+ /**
+ * 保存详情记录(短信详情,告警详情)
+ * @param smsResult
+ * @param resultComResult
+ * @param smsTemplate
+ * @param templateContent
+ * @param request
+ * @return
+ */
+ private List<SmsRecord> saveAlertsAndSmsDetail(SmsResult smsResult,
+ ComResult<DynSMSSendDataResult> resultComResult,
+ SmsTemplate smsTemplate,
+ List<List<String>> templateContent,
+ SMSSendRequest request) {
+ List<SmsRecord> smsRecordList = new ArrayList<>();
+ // 遍历处理
+ for (List<String> list : templateContent) {
+ AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail();
+ alarmRecordDetail.setReservoirNumber(list.get(0));
+ alarmRecordDetail.setAlarmRecordId(Long.parseLong(list.get(list.size() - 1)));
+ alarmRecordDetail.setAlarmMode("短信");
+ // 删除 最后一个 告警记录id
+ list.remove(list.size() - 1);
+ // 删除 0 水库编码
+ list.remove(0);
+ SmsRecord smsRecord = new SmsRecord();
+ if (null != smsResult){
+ alarmRecordDetail.setPhone(list.get(0));
+ // 设置手机号
+ request.setUserNumber(list.get(0));
+ // 内容处理
+ String s = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s");
+ // 短信内容拼接(完成发送的结果信息)
+ // 需要删除最前面的手机号
+ list.remove(0);
+ // 格式转换
+ String format = String.format(s, list.toArray());
+ // 设置内容
+ request.setMessageContent(format);
+ // 保存短信发送记录
+ smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
+ if (null != smsRecord){
+ alarmRecordDetail.setAlarmContent(format);
+ alarmRecordDetail.setSendRecordId(smsRecord.getId());
+ alarmRecordDetail.setCreateTime(new Date());
+ // 保存告警记录详情信息
+ boolean save = alarmRecordDetailService.save(alarmRecordDetail);
+ }
+ }
+ smsRecordList.add(smsRecord);
+ }
+ // 返回
+ return smsRecordList;
+ }
+
+ /**
+ * 批量发送告警短信
+ * @param smsTemplate
+ * @param templateContent
+ */
+ private Map<String, Object> batchSendAlertsSms(SmsTemplate smsTemplate, List<List<String>> templateContent) {
+ Map<String, Object> map = new HashMap<>(2);
+ int count = 0;
+ StringBuilder builder = new StringBuilder();
+ // 拼接短信标题数组
+ String [] titleArr = getSmsTitleArr(smsTemplate);
+ // 遍历,拼接短信
+ for (List<String> list : templateContent) {
+ // 删除 最后一个 告警记录id
+ list.remove(list.size() - 1);
+ // 删除 0 水库编码
+ list.remove(0);
+ String join = String.join(",", list);
+ // 转换,校验手机号码
+ if (validator(list.get(0))){
+ builder.append(join).append(";");
+ }else {
+ count++;
+ }
+ }
+ String datas = builder.toString();
+ String[] rows = datas.split(";");
+ String[][] dyns = new String[rows.length + 1][titleArr.length];
+ dyns[0] = titleArr;
+ int rowNum = 1;
+ for (String row : rows) {
+ String[] cols = row.split(",");
+ dyns[rowNum++] = cols;
+ }
+ //请求参数
+ ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(smsTemplate.getTemplateId(), dyns);
+ map.put("resultComResult",resultComResult);
+ map.put("errCount",count);
+ //返回
+ return map;
+ }
+
+ /**
* 保存站内信记录信息
* @param smsRequestTemplate
* @return
@@ -176,7 +299,7 @@
request.setTemplateId(smsTemplate.getTemplateId());
List<List<String>> templateContent = smsRequestTemplate.getTemplateContent();
// 先保存结果记录
- SmsResult smsResult = saveSendResult(null,request, templateContent.size());
+ SmsResult smsResult = saveSendResult(null,null,request, templateContent.size());
List<SmsRecord> smsRecordList = new ArrayList<>();
// 遍历处理
for (List<String> list : templateContent) {
@@ -263,21 +386,19 @@
/**
* 发送记录保存
- * @param smsResponse 响应消息
+ * @param code 响应消息cdoe
+ * @param msg 响应消息
* @param request 发送信息
* @param number 号码个数
*/
@Override
- public SmsResult saveSendResult(SmsResponseVO smsResponse, SMSSendRequest request, Integer number) {
+ public SmsResult saveSendResult(String code,String msg, SMSSendRequest request, Integer number) {
// 先保存结果表
SmsResult smsResult = new SmsResult();
smsResult.setTemplateId(request.getTemplateId());
- smsResult.setContent(request.getMessageContent());
smsResult.setNumber(number);
- if (null!= smsResponse) {
- smsResult.setResCode(smsResponse.getCode());
- smsResult.setResMsg(smsResponse.getMsg());
- }
+ smsResult.setResCode(code);
+ smsResult.setResMsg(msg);
//插入记录
boolean save = smsResultService.save(smsResult);
if (save){
@@ -361,10 +482,7 @@
dyns[rowNum++] = cols;
}
ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(templateId, dyns);
- SmsResponseVO smsResponse = new SmsResponseVO();
- smsResponse.setCode(resultComResult.getCode().toString());
- smsResponse.setMsg(resultComResult.getMsg());
- SmsResult smsResult = getSaveSmsResult(smsResponse,templateId, rows, "");
+ SmsResult smsResult = getSaveSmsResult(resultComResult.getCode().toString(),resultComResult.getMsg(),templateId, rows);
if (null != smsResult) {
List<SmsRecord> smsRecordList = new ArrayList<>();
Pattern compile = Pattern.compile("[^0-9]");
@@ -396,19 +514,17 @@
/**
* 保存短信发送结果
- * @param smsResponse
+ * @param code
+ * @param msg
* @param templateId
* @param rows
- * @param content
* @return
*/
- private SmsResult getSaveSmsResult(SmsResponseVO smsResponse,String templateId, String[] rows, String content) {
+ private SmsResult getSaveSmsResult(String code,String msg,String templateId, String[] rows) {
SMSSendRequest request = new SMSSendRequest();
request.setTemplateId(templateId);
- request.setMessageContent(content);
- request.setUserNumber("");
// 先保存结果记录
- return saveSendResult(smsResponse,request, rows.length);
+ return saveSendResult(code,msg,request, rows.length);
}
/**
@@ -519,7 +635,7 @@
ComResult<DynSMSSendDataResult> resultComResult = (ComResult<DynSMSSendDataResult>)batchSendSmsMap.get("resultComResult");
errPhones = (List<String>) batchSendSmsMap.get("errPhones");
// 计算差值
- Integer diff = size - errPhones.size();
+ Integer diff = personList.size() - errPhones.size();
if (resultComResult.getCode()==0){
String successMsg = "发送成功!共导入水库个数 "+ size +" 个,其中发送号码 "+ diff + " 个。";
// 返回
@@ -572,12 +688,10 @@
String[] cols = row.split(",");
dyns[rowNum++] = cols;
}
- //请求参数
+ //请求发送短信
ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(smsTemplate.getTemplateId(), dyns);
- SmsResponseVO smsResponse = new SmsResponseVO();
- smsResponse.setCode(resultComResult.getCode().toString());
- smsResponse.setMsg(resultComResult.getMsg());
- SmsResult smsResult = getSaveSmsResult(smsResponse,smsTemplate.getTemplateId(), rows, "");
+ // 保存发送结果
+ SmsResult smsResult = getSaveSmsResult(resultComResult.getCode().toString(),resultComResult.getMsg(),smsTemplate.getTemplateId(), rows);
// 异步记录发送记录
asyncService.batchSaveSendRecord(smsResult,rows,smsTemplate,resultComResult);
// 返回
--
Gitblit v1.9.3