水位缺失预警调整,重复水库进行去重,合并水库最多30个发送
| | |
| | | */ |
| | | public void waterInfoNotHandle(AlarmRule alarmRule, String templateId, String uuid, String adCode,Boolean isSendStation) { |
| | | // 调用中台服务接口查询数据 |
| | | JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_z_null_api); |
| | | JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.no_z_last_api_all); |
| | | // 只发短信,将发短信信息组装好 |
| | | SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterInfoNotList,false,adCode); |
| | | SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterInfoNotList,false,adCode,uuid); |
| | | // 遍历 |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | // 保存告警记录信息 |
| | |
| | | // 调用中台服务接口查询数据 |
| | | JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_diff_dead_z_api); |
| | | // 只发送站内信 |
| | | SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true,null); |
| | | SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true,null,uuid); |
| | | // 拼接内容后面的联系方式,当前模板县水利部人员姓名电话 |
| | | // 遍历,拼接县水利部人员电话 |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | |
| | | JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.over_z_res_api); |
| | | // 只发短信,将发短信信息组装好 |
| | | SmsRequestTemplate smsRequestTemplate |
| | | = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterFirstOverList,true,adCode); |
| | | = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterFirstOverList,true,adCode,uuid); |
| | | smsRequestTemplate.setIsSendStation(isSendStation); |
| | | |
| | | // 拼接后面内容 |
| | |
| | | JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.over_des_rz_warn_api); |
| | | // 只发短信,将发短信信息组装好 |
| | | SmsRequestTemplate smsRequestTemplate |
| | | = noticeHandle.getSendSmsTemplate(ztData, templateId, alarmRule, ZtApiDataColumnConstant.waterMoreDesignList, true, null); |
| | | = noticeHandle.getSendSmsTemplate(ztData, templateId, alarmRule, ZtApiDataColumnConstant.waterMoreDesignList, true, null,uuid); |
| | | // 拼接后面内容 |
| | | if (smsRequestTemplate.getPersonVOList().size() > 0) { |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | |
| | | * @param columnsList 列名集合信息 |
| | | * @param flag 是否包含日期 |
| | | * @param adCode 行政区编号 |
| | | * @param uuid 本次执行临时编号 |
| | | * @return |
| | | */ |
| | | public SmsRequestTemplate getSendSmsTemplate(JSONArray jsonArray, |
| | |
| | | AlarmRule alarmRule, |
| | | List<String> columnsList, |
| | | Boolean flag, |
| | | String adCode) { |
| | | String adCode, |
| | | String uuid) { |
| | | // 通过模板id 查询模板相关信息 |
| | | SmsTemplate smsTemplate = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("template_id",templateId).eq("is_deleted",0)); |
| | | if (null != smsTemplate) { |
| | |
| | | // 解析模板并设置 title |
| | | smsRequestTemplate.setTitle(FormatUtil.composeMessage(smsTemplate.getContent())); |
| | | // 列名数据转换 |
| | | getColumnData(jsonArray, columnsList,smsRequestTemplate,alarmRule,flag,adCode); |
| | | getColumnData(jsonArray, columnsList,smsRequestTemplate,alarmRule,flag,adCode,uuid); |
| | | //返回 |
| | | return smsRequestTemplate; |
| | | } |
| | |
| | | * @param smsRequestTemplate |
| | | * @param flag |
| | | * @param adCode |
| | | * @param uuid |
| | | * @return |
| | | */ |
| | | private void getColumnData(JSONArray jsonArray, |
| | |
| | | SmsRequestTemplate smsRequestTemplate, |
| | | AlarmRule alarmRule, |
| | | Boolean flag, |
| | | String adCode) { |
| | | String adCode, |
| | | String uuid) { |
| | | List<PersonVO> personLists = new ArrayList<>(); |
| | | List<List<String>> lists = new ArrayList<>(); |
| | | Set<String> set = new HashSet<>(); |
| | | for (int i = 0; i < jsonArray.size(); i++) { |
| | | if (null!=adCode){ |
| | | // city_cd,county_cd 过滤数据 |
| | | String county_cd = jsonArray.getJSONObject(i).getString("county_cd"); |
| | | if (null!= county_cd && county_cd.equals(adCode)) { |
| | | jointData(jsonArray, columnsList, alarmRule, flag, personLists, lists, i); |
| | | jointData(jsonArray, columnsList, alarmRule, flag, personLists, lists, i,uuid,set); |
| | | } |
| | | }else { |
| | | jointData(jsonArray, columnsList, alarmRule, flag, personLists, lists, i); |
| | | jointData(jsonArray, columnsList, alarmRule, flag, personLists, lists, i,uuid,set); |
| | | } |
| | | } |
| | | // 设置信息 |
| | | smsRequestTemplate.setPersonVOList(personLists); |
| | | smsRequestTemplate.setTemplateContent(lists); |
| | | } |
| | | |
| | | /** |
| | | * 列名数据转换-- 需合并水库名称 |
| | | * @param jsonArray |
| | | * @param columnsList |
| | | * @param smsRequestTemplate |
| | | * @param flag |
| | | * @param adCode |
| | | * @return |
| | | */ |
| | | private void getMergeColumnData(JSONArray jsonArray, |
| | | List<String> columnsList, |
| | | SmsRequestTemplate smsRequestTemplate, |
| | | AlarmRule alarmRule, |
| | | Boolean flag, |
| | | String adCode) { |
| | | Set<String> resCdSet = new HashSet<>(); |
| | | for (int i = 0; i < jsonArray.size(); i++) { |
| | | String res_cd = jsonArray.getJSONObject(i).getString("res_cd"); |
| | | resCdSet.add(res_cd); |
| | | } |
| | | // 查询对应的人员 |
| | | getPersonListByResList(resCdSet,alarmRule); |
| | | // 设置信息 |
| | | // smsRequestTemplate.setPersonVOList(personLists); |
| | | // smsRequestTemplate.setTemplateContent(lists); |
| | | } |
| | | |
| | | /** |
| | | * 查询对应的用户及水库信息 |
| | | * @param resCdSet |
| | | * @param alarmRule |
| | | */ |
| | | private void getPersonListByResList(Set<String> resCdSet, AlarmRule alarmRule) { |
| | | // 查询对应的用户及水库信息 |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param i |
| | | * @return |
| | | */ |
| | | private void jointData(JSONArray jsonArray, List<String> columnsList, AlarmRule alarmRule, Boolean flag, List<PersonVO> personLists, List<List<String>> lists, int i) { |
| | | private void jointData(JSONArray jsonArray, |
| | | List<String> columnsList, |
| | | AlarmRule alarmRule, |
| | | Boolean flag, |
| | | List<PersonVO> personLists, |
| | | List<List<String>> lists, |
| | | int i, |
| | | String uuid, |
| | | Set<String> set) { |
| | | // 根据水库编号,所在区域查询需要发送的人员手机号及设置 |
| | | String res_cd = jsonArray.getJSONObject(i).getString("res_cd"); |
| | | // 取出测站编码 |
| | | String stcd = jsonArray.getJSONObject(i).getString("stcd"); |
| | | // 判断时间是否存在 |
| | | String tm = jsonArray.getJSONObject(i).getString("tm"); |
| | | String day = ""; |
| | | String hour = ""; |
| | | String minute = ""; |
| | | if (null != tm && !tm.equals("") && flag) { |
| | | flag = true; |
| | | // 加入天,时,分 |
| | | day = tm.substring(8, 10); |
| | | hour =tm.substring(11, 13); |
| | | minute = tm.substring(14, 16); |
| | | } else { |
| | | flag = false; |
| | | String tempStr = uuid + res_cd; |
| | | // 去重水库操作,如果有重复的水库则不操作 |
| | | if (!set.contains(tempStr)) { |
| | | set.add(tempStr); |
| | | // 取出测站编码 |
| | | String stcd = jsonArray.getJSONObject(i).getString("stcd"); |
| | | // 判断时间是否存在 |
| | | String tm = jsonArray.getJSONObject(i).getString("tm"); |
| | | String day = ""; |
| | | String hour = ""; |
| | | String minute = ""; |
| | | if (null != tm && !tm.equals("") && flag) { |
| | | flag = true; |
| | | // 加入天,时,分 |
| | | day = tm.substring(8, 10); |
| | | hour = tm.substring(11, 13); |
| | | minute = tm.substring(14, 16); |
| | | } else { |
| | | flag = false; |
| | | } |
| | | // 获取告警人员信息 |
| | | getAlarmPersonList(jsonArray, columnsList, alarmRule, flag, personLists, lists, i, res_cd, day, hour, minute, stcd); |
| | | } |
| | | // 获取告警人员信息 |
| | | getAlarmPersonList(jsonArray, columnsList, alarmRule, flag, personLists, lists, i, res_cd, day, hour, minute,stcd); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | public String waterInfoNotHandle(String arg1, String arg2) { |
| | | String templateId = "2431012216668"; |
| | | String adCode = "421303000000"; |
| | | // String adCode = "421181000000"; |
| | | String adCode = null; |
| | | String uuid = templateId + UUID.randomUUID().toString(); |
| | | // 查询当前策略对应的告警规则信息 |
| | | AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1)); |
| | |
| | | JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_z_not_normal_api); |
| | | // 只发短信,将发短信信息组装好 |
| | | SmsRequestTemplate smsRequestTemplate |
| | | = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterDataExcList,false,null); |
| | | = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterDataExcList,false,null,uuid); |
| | | // 拼接后面内容 |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | // 保存告警记录信息 |
| | |
| | | // 调用中台服务接口查询数据 |
| | | JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_diff_dead_z_api); |
| | | // 只发短信,将发短信信息组装好 |
| | | SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true,null); |
| | | SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true,null,uuid); |
| | | // 拼接内容后面的联系方式,当前模板县水利部人员姓名电话 |
| | | // 遍历,拼接县水利部人员电话 |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | |
| | | // 导入并返回 |
| | | return R.data(smsService.importSendRainSms(list,startTime,endTime)); |
| | | } |
| | | |
| | | /** |
| | | * 批量发送短信(集合数据) |
| | | * @param map (保护参数 1:短信模板id 2:数据集合 list<Map<String,Object>>) |
| | | * @return |
| | | */ |
| | | @PostMapping("/batch-send-sms") |
| | | public R batchSendSms(@RequestBody Map<String,Object> map){ |
| | | // 导入并返回 |
| | | return R.data(smsService.batchSendSms(map)); |
| | | } |
| | | } |
| | |
| | | * @param smsRequestTemplate |
| | | */ |
| | | void sendMergeSignMsg(SmsRequestTemplate smsRequestTemplate); |
| | | |
| | | /** |
| | | * 批量发送短信(集合数据) |
| | | * @param map (保护参数 1:短信模板id 2:数据集合 list<Map<String,Object>>) |
| | | * @return |
| | | */ |
| | | Object batchSendSms(Map<String, Object> map); |
| | | } |
| | |
| | | Map<String, List<Temp>> listMap = tempList.stream().collect(Collectors.groupingBy(Temp::getPhone)); |
| | | // 遍历 map 发送短信 |
| | | listMap.forEach((s, temps) -> { |
| | | |
| | | List<AlarmRecordDetailVO> alarmRecordDetailList = new ArrayList<>(); |
| | | StringBuilder builder = new StringBuilder(); |
| | | StringBuilder smsRecordBuilder = new StringBuilder(); |
| | | builder.append(s).append(","); |
| | | // 水库去重 |
| | | // List<Temp> tempListNew = temps.stream().collect( |
| | | // Collectors.collectingAndThen( |
| | | // Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Temp::getReservoirCode))), ArrayList::new) |
| | | // ); |
| | | // 如果一人对应水库数量超过30个,则分批发送 |
| | | List<List<Temp>> lists = Lists.partition(new ArrayList<>(temps), 30); |
| | | for (List<Temp> list : lists) { |
| | | List<AlarmRecordDetailVO> alarmRecordDetailList = new ArrayList<>(); |
| | | // 遍历 |
| | | for (Temp temp : list) { |
| | | builder.append(temp.getReservoirName()).append(","); |
| | |
| | | SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId()); |
| | | //保存告警记录详情信息 |
| | | if (null != smsRecord) { |
| | | List<AlarmRecordDetail> alarmRecordDetailArrayList = new ArrayList<>(); |
| | | for (AlarmRecordDetailVO alarmRecordDetail : alarmRecordDetailList) { |
| | | AlarmRecordDetail alarmRecordDetail1 = new AlarmRecordDetail(); |
| | | // 短信内容拼接(完成发送的结果信息) |
| | | String formatContent = String.format(str, alarmRecordDetail.getReservoirName().split(",")); |
| | | alarmRecordDetail.setAlarmContent(formatContent); |
| | | alarmRecordDetail.setSendRecordId(smsRecord.getId()); |
| | | alarmRecordDetail.setCreateTime(new Date()); |
| | | // 保存告警记录详情信息 |
| | | boolean save = alarmRecordDetailService.save(alarmRecordDetail); |
| | | alarmRecordDetail1.setAlarmContent(formatContent); |
| | | alarmRecordDetail1.setSendRecordId(smsRecord.getId()); |
| | | alarmRecordDetail1.setCreateTime(new Date()); |
| | | alarmRecordDetail1.setReservoirNumber(alarmRecordDetail.getReservoirNumber()); |
| | | alarmRecordDetail1.setAlarmRecordId(alarmRecordDetail.getAlarmRecordId()); |
| | | alarmRecordDetail1.setAlarmMode(alarmRecordDetail.getAlarmMode()); |
| | | alarmRecordDetail1.setPhone(alarmRecordDetail.getPhone()); |
| | | alarmRecordDetailArrayList.add(alarmRecordDetail1); |
| | | } |
| | | // 保存告警记录详情信息 |
| | | boolean save = alarmRecordDetailService.saveBatch(alarmRecordDetailArrayList); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 批量发送短信(集合数据) |
| | | * @param map (保护参数 1:短信模板id 2:数据集合 list<Map<String,Object>>) |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Object batchSendSms(Map<String, Object> map) { |
| | | // 获取模板id |
| | | String templateId = map.get("templateId").toString(); |
| | | // 获取集合数据 |
| | | List<Map<String,Object>> list = (List<Map<String,Object>>) map.get("list"); |
| | | List<String> columnList = (List<String>) map.get("columnList"); |
| | | // 遍历 |
| | | for (Map<String, Object> param : list) { |
| | | // 放入集合数据 |
| | | } |
| | | return null; |
| | | } |
| | | } |