| | |
| | | |
| | | 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; |
| | |
| | | @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(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | 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){ |