From 0e06fd9184c0cda32a8c55ed1f4a295305d647fd Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 29 Jun 2023 11:43:41 +0800
Subject: [PATCH] 智能外呼为接同短信通知修改,外呼统计查询修改
---
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java | 128 ++++++++++++++++++++++--------------------
1 files changed, 68 insertions(+), 60 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 8fa81b3..970d7a3 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
@@ -31,6 +31,7 @@
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -338,66 +339,71 @@
@Override
public String sendSmsByOutCallNotConnect(String taskId,String time) {
String templateId = "2431012249882";
- // 查询当前任务未接通的人员信息(包含水库编号)
- List<Map<String, Object>> list = smsTemplateService.getNotConnectPatrolPersonList(taskId,null);
- SmsTemplate smsTemplate = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("template_id", templateId));
- if (list.size()>0) {
- List<Map<String, Object>> newList = new ArrayList<>();
- // 比对
- for (Map<String, Object> map : list) {
- // 获取任务id
- String redisByTaskId = bladeRedis.get(MinConstant.is_send_prefix + map.get("callId").toString());
- // 如果为null,并且不能匹配,加入发送短信集合
- if (redisByTaskId == null || !StringUtil.equalsIgnoreCase(redisByTaskId, taskId)) {
- newList.add(map);
- }
- }
- if (newList.size() > 0) {
- // 组装短信数据
- StringBuilder builder = new StringBuilder();
- // 遍历
- for (Map<String, Object> map : newList) {
- builder.append(map.get("userPhone") + ",")
- .append(time + ",")
- .append(map.get("waterName") + ",")
- .append(MinConstant.fillWaterInfoUrl +"?" + "callId=" + map.get("callId"))
- .append(";");
- }
- String datas = builder.toString();
- String title = "手机号码,时间范围,水库名称,访问链接";
- String[] titleArr = title.split(",");
- 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(templateId, dyns);
- SmsResult smsResult = getSaveSmsResult(templateId, rows, "");
- if (null != smsResult) {
- List<SmsRecord> smsRecordList = new ArrayList<>();
- Pattern compile = Pattern.compile("[^0-9]");
- Integer result = Integer.parseInt(compile.matcher(time).replaceAll("").trim());
- // 分钟或小时
- Long validTime = time.contains("分钟") ? 60L * result : 60L * 60 * result;
- // 遍历保存
- for (Map<String, Object> map : newList) {
- // 保存redis
- // 已发送短信的人员对应呼叫id的过期时间
- bladeRedis.setEx(MinConstant.is_send_prefix + map.get("callId").toString(), taskId, MinConstant.is_send_time);
- // 填报过期时间
- bladeRedis.setEx(MinConstant.fill_info_prefix + map.get("callId").toString(), taskId, validTime);
- // 封装短息记录数据
- SmsRecord smsRecord = getSmsRecord(time, templateId, smsTemplate, resultComResult, smsResult, map);
- // 加入集合
- smsRecordList.add(smsRecord);
+ // 查询符合当前时间外呼任务id集合
+ String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
+ List<String> taskIdList = smsTemplateService.getTaskIdListByTime(format);
+ if (taskIdList.size()>0) {
+ // 查询当前任务未接通的人员信息(包含水库编号)
+ List<Map<String, Object>> list = smsTemplateService.getNotConnectPatrolPersonList(taskIdList, null);
+ SmsTemplate smsTemplate = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("template_id", templateId));
+ if (list.size() > 0) {
+ List<Map<String, Object>> newList = new ArrayList<>();
+ // 比对
+ for (Map<String, Object> map : list) {
+ // 获取任务id
+ String redisByTaskId = bladeRedis.get(MinConstant.is_send_prefix + map.get("callId").toString());
+ // 如果为null,并且不能匹配,加入发送短信集合
+ if (redisByTaskId == null || !StringUtil.equalsIgnoreCase(redisByTaskId, taskId)) {
+ newList.add(map);
}
- // 批量保存记录
- Integer count = smsRecordService.batchSaveSendRecord(smsRecordList);
- // 返回
- return count.toString();
+ }
+ if (newList.size() > 0) {
+ // 组装短信数据
+ StringBuilder builder = new StringBuilder();
+ // 遍历
+ for (Map<String, Object> map : newList) {
+ builder.append(map.get("userPhone") + ",")
+ .append(time + ",")
+ .append(map.get("waterName") + ",")
+ .append(MinConstant.fillWaterInfoUrl + "?" + "callId=" + map.get("callId"))
+ .append(";");
+ }
+ String datas = builder.toString();
+ String title = "手机号码,时间范围,水库名称,访问链接";
+ String[] titleArr = title.split(",");
+ 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(templateId, dyns);
+ SmsResult smsResult = getSaveSmsResult(templateId, rows, "");
+ if (null != smsResult) {
+ List<SmsRecord> smsRecordList = new ArrayList<>();
+ Pattern compile = Pattern.compile("[^0-9]");
+ Integer result = Integer.parseInt(compile.matcher(time).replaceAll("").trim());
+ // 分钟或小时
+ Long validTime = time.contains("分钟") ? 60L * result : 60L * 60 * result;
+ // 遍历保存
+ for (Map<String, Object> map : newList) {
+ // 保存redis
+ // 已发送短信的人员对应呼叫id的过期时间
+ bladeRedis.setEx(MinConstant.is_send_prefix + map.get("callId").toString(), taskId, MinConstant.is_send_time);
+ // 填报过期时间
+ bladeRedis.setEx(MinConstant.fill_info_prefix + map.get("callId").toString(), taskId, validTime);
+ // 封装短息记录数据
+ SmsRecord smsRecord = getSmsRecord(time, templateId, smsTemplate, resultComResult, smsResult, map);
+ // 加入集合
+ smsRecordList.add(smsRecord);
+ }
+ // 批量保存记录
+ Integer count = smsRecordService.batchSaveSendRecord(smsRecordList);
+ // 返回
+ return count.toString();
+ }
}
}
}
@@ -499,8 +505,10 @@
String taskId = bladeRedis.get(MinConstant.fill_info_prefix + callId);
// 判断
if (null!=taskId && !taskId.equals("")){
+ List<String> taskIdList = new ArrayList<>();
+ taskIdList.add(taskId);
// 通过手机号和外呼任务id 查询水库人员信息
- list = smsTemplateService.getNotConnectPatrolPersonList(taskId,callId);
+ list = smsTemplateService.getNotConnectPatrolPersonList(taskIdList,callId);
// 查询是否填报
CallNotFillRecord callNotFillRecordInfo = outCallClient.getCallNotFillRecordInfo(callId);
if (callNotFillRecordInfo != null){
--
Gitblit v1.9.3