| | |
| | | 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); |
| | |
| | | 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) { |
| | |
| | | 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); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 发送 具名 变量模板短信(告警定制) |
| | | * @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 |
| | |
| | | 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) { |
| | |
| | | |
| | | /** |
| | | * 发送记录保存 |
| | | * @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){ |
| | |
| | | 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]"); |
| | |
| | | |
| | | /** |
| | | * 保存短信发送结果 |
| | | * @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); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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 + " 个。"; |
| | | // 返回 |
| | |
| | | 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); |
| | | // 返回 |