| | |
| | | private OutCallClient outCallClient; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 短信发送数据组装 |
| | | * |
| | | * @param jsonArray 告警动态数据 |
| | | * @param alarmRule 告警规则信息 |
| | | * @param jsonArray 告警动态数据 |
| | | * @param alarmRule 告警规则信息 |
| | | * @param alarmRuleDetail 告警规则详情信息 |
| | | * @param columnsList 列名集合信息 |
| | | * @param flag 是否包含日期 |
| | | * @param adCode 行政区编号(是否过滤区县数据) |
| | | * @param uuid 本次执行临时编号 |
| | | * @param isSendStation 是否发送站内信 |
| | | * @param columnsList 列名集合信息 |
| | | * @param flag 是否包含日期 |
| | | * @param adCode 行政区编号(是否过滤区县数据) |
| | | * @param uuid 本次执行临时编号 |
| | | * @param isSendStation 是否发送站内信 |
| | | * @return |
| | | */ |
| | | public SmsRequestTemplate getSendSmsTemplate(JSONArray jsonArray, |
| | | AlarmRule alarmRule, |
| | | AlarmRuleDetail alarmRuleDetail, |
| | | List<String> columnsList, |
| | | Boolean flag, |
| | | String adCode, |
| | | String uuid, |
| | | Boolean isSendStation) { |
| | | AlarmRule alarmRule, |
| | | AlarmRuleDetail alarmRuleDetail, |
| | | List<String> columnsList, |
| | | Boolean flag, |
| | | String adCode, |
| | | String uuid, |
| | | Boolean isSendStation) { |
| | | // 通过模板id 查询模板相关信息(外呼对应的模板id则为场景id) |
| | | SmsTemplate smsTemplate |
| | | = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("id",alarmRuleDetail.getTemplateId()).eq("is_deleted",0)); |
| | | = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("id", alarmRuleDetail.getTemplateId()).eq("is_deleted", 0)); |
| | | if (null != smsTemplate) { |
| | | // 创建消息发送对象 |
| | | SmsRequestTemplate smsRequestTemplate = new SmsRequestTemplate(); |
| | |
| | | // 解析模板并设置 title |
| | | smsRequestTemplate.setTitle(FormatUtil.composeMessage(smsTemplate.getContent())); |
| | | // 列名数据转换 |
| | | getColumnData(jsonArray, columnsList,smsRequestTemplate,alarmRuleDetail,flag,adCode,uuid); |
| | | getColumnData(jsonArray, columnsList, smsRequestTemplate, alarmRuleDetail, flag, adCode, uuid); |
| | | //返回 |
| | | return smsRequestTemplate; |
| | | } |
| | |
| | | |
| | | /** |
| | | * 列名数据转换 |
| | | * @param jsonArray 告警动态数据 |
| | | * @param columnsList 告警动态内容 key |
| | | * |
| | | * @param jsonArray 告警动态数据 |
| | | * @param columnsList 告警动态内容 key |
| | | * @param smsRequestTemplate 消息发送对象 |
| | | * @param alarmRuleDetail 告警人员角色ids |
| | | * @param flag 告警内容是否日期 |
| | | * @param adCode 行政区 code ,用于过滤数据 |
| | | * @param uuid 用于过滤数据 |
| | | * @param alarmRuleDetail 告警人员角色ids |
| | | * @param flag 告警内容是否日期 |
| | | * @param adCode 行政区 code ,用于过滤数据 |
| | | * @param uuid 用于过滤数据 |
| | | * @return |
| | | */ |
| | | private void getColumnData(JSONArray jsonArray, |
| | |
| | | Set<String> set = new HashSet<>(); |
| | | |
| | | // 查询对应的角色信息 |
| | | List<String> roles = sysClient.getRoleNames(alarmRuleDetail.getAlarmPerson()).getData(); |
| | | List<String> roles = sysClient.getRoleNames(alarmRuleDetail.getAlarmPerson()).getData(); |
| | | |
| | | for (int i = 0; i < jsonArray.size(); i++) { |
| | | if (null!=adCode){ |
| | | if (null != adCode) { |
| | | // city_cd,county_cd 过滤数据 |
| | | String county_cd = jsonArray.getJSONObject(i).getString("county_cd"); |
| | | if (null!= county_cd && county_cd.equals(adCode)) { |
| | | if (null != county_cd && county_cd.equals(adCode)) { |
| | | // jointData(jsonArray, columnsList, alarmRuleDetail, flag, personLists, lists, i,uuid,set); |
| | | jointDataV2(jsonArray, columnsList, alarmRuleDetail,roles ,flag, personLists, lists, i,uuid,set); |
| | | jointDataV2(jsonArray, columnsList, alarmRuleDetail, roles, flag, personLists, lists, i, uuid, set); |
| | | } |
| | | }else { |
| | | } else { |
| | | // jointData(jsonArray, columnsList, alarmRuleDetail, flag, personLists, lists, i,uuid,set); |
| | | jointDataV2(jsonArray, columnsList, alarmRuleDetail,roles, flag, personLists, lists, i,uuid,set); |
| | | jointDataV2(jsonArray, columnsList, alarmRuleDetail, roles, flag, personLists, lists, i, uuid, set); |
| | | } |
| | | log.info("告警人员信息:{}",personLists.toString()); |
| | | log.info("告警人员信息:{}", personLists.toString()); |
| | | } |
| | | // 设置信息 |
| | | smsRequestTemplate.setPersonVOList(personLists); |
| | |
| | | String town_nm = jsonObject.getString("town_nm"); |
| | | String county_nm = jsonObject.getString("county_nm"); |
| | | String city_nm = jsonObject.getString("city_nm"); |
| | | log.info("当前为第{}个水库,行政区划:{}-{}-{},水库编码:{},水库名称:{}",i+1,city_nm,county_nm,town_nm,res_cd,res_nm); |
| | | log.info("当前为第{}个水库,行政区划:{}-{}-{},水库编码:{},水库名称:{}", i + 1, city_nm, county_nm, town_nm, res_cd, res_nm); |
| | | String tempStr = uuid + res_cd; |
| | | // 去重水库操作,如果有重复的水库则不操作 |
| | | if (!set.contains(tempStr)) { |
| | |
| | | day = tm.substring(8, 10); |
| | | hour = tm.substring(11, 13); |
| | | minute = tm.substring(14, 16); |
| | | } else if(flag){ |
| | | } else if (flag) { |
| | | //如果显示日期,但是中台没传日期,就使用当前时间 |
| | | Date now = DateUtil.now(); |
| | | String formatTm = DateUtil.format(now, DateUtil.PATTERN_DATETIME); |
| | |
| | | day = formatTm.substring(8, 10); |
| | | hour = formatTm.substring(11, 13); |
| | | minute = formatTm.substring(14, 16); |
| | | }else{ |
| | | } else { |
| | | flag = false; |
| | | } |
| | | // 获取告警人员信息 |
| | | // getAlarmPersonList(jsonArray, columnsList, alarmRuleDetail,flag, personLists, lists, i, res_cd, day, hour, minute, stcd); |
| | | getAlarmPersonListV2(jsonArray, columnsList, alarmRuleDetail,roles,flag, personLists, lists, i, res_cd, day, hour, minute, stcd); |
| | | getAlarmPersonListV2(jsonArray, columnsList, alarmRuleDetail, roles, flag, personLists, lists, i, res_cd, day, hour, minute, stcd); |
| | | } |
| | | |
| | | } |
| | |
| | | list.add(personVO.getPhone()); |
| | | if (flag) { |
| | | // 如果是电话告警,需要把日期拼到一起 |
| | | if (alarmRuleDetail.getAlarmMode().equals("电话")){ |
| | | if (alarmRuleDetail.getAlarmMode().equals("电话")) { |
| | | String tem = day + "日" + hour + "时" + minute + "分"; |
| | | list.add(tem); |
| | | }else { |
| | | } else { |
| | | list.add(day); |
| | | list.add(hour); |
| | | list.add(minute); |
| | |
| | | |
| | | } |
| | | |
| | | private List<PersonVO> getPersonListByResGuidV2(String res_cd, List<String> roles) { |
| | | private List<PersonVO> getPersonListByResGuidV2(String res_cd, List<String> roles) { |
| | | List<String> personList = new ArrayList<>(); |
| | | List<String> areaList = new ArrayList<>(); |
| | | // 遍历 |
| | | for (String role : roles) { |
| | | if (role.contains("责任人")){ |
| | | if (role.contains("责任人")) { |
| | | personList.add(PersonEnum.findByName(role).getType().toString()); |
| | | }else { |
| | | } else { |
| | | areaList.add(role); |
| | | } |
| | | } |
| | |
| | | List<PersonVO> list = new ArrayList<>(); |
| | | //1. 根据水库编号查询除责任人之外的人员信息 |
| | | if (areaList.size() > 0) { |
| | | List<PersonVO> personVOList = attResManagePersonClient.getUserListByResGuid(res_cd,String.join(",",areaList)); |
| | | List<PersonVO> personVOList = attResManagePersonClient.getUserListByResGuid(res_cd, String.join(",", areaList)); |
| | | list.addAll(personVOList); |
| | | } |
| | | //2. 根据水库编号及责任人类型查询相关责任人信息 |
| | |
| | | } |
| | | // 返回数据 |
| | | return list; |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 拼接列数据设置告警人员信息 |
| | | * @param jsonArray 告警动态数据 |
| | | * @param columnsList 告警动态内容 key |
| | | * |
| | | * @param jsonArray 告警动态数据 |
| | | * @param columnsList 告警动态内容 key |
| | | * @param alarmRuleDetail 告警人角色ids |
| | | * @param flag 告警内容是否日期 |
| | | * @param personLists 告警人 |
| | | * @param lists 告警内容 |
| | | * @param i 第几个 |
| | | * @param flag 告警内容是否日期 |
| | | * @param personLists 告警人 |
| | | * @param lists 告警内容 |
| | | * @param i 第几个 |
| | | * @return |
| | | */ |
| | | private void jointData(JSONArray jsonArray, |
| | |
| | | |
| | | /** |
| | | * 获取告警人员信息 |
| | | * @param jsonArray 接口水库相关数据 |
| | | * @param columnsList 模板对应列key |
| | | * |
| | | * @param jsonArray 接口水库相关数据 |
| | | * @param columnsList 模板对应列key |
| | | * @param alarmRuleDetail 告警人员角色ids |
| | | * @param flag 模板中是否填入时间 |
| | | * @param personLists 告警人员集合 |
| | | * @param lists 告警内容集合 |
| | | * @param i 第 i 个水库 |
| | | * @param res_cd 水库编码 |
| | | * @param day 日期 |
| | | * @param hour 小时 |
| | | * @param minute 分钟 |
| | | * @param stcd 测站编码 |
| | | * @param flag 模板中是否填入时间 |
| | | * @param personLists 告警人员集合 |
| | | * @param lists 告警内容集合 |
| | | * @param i 第 i 个水库 |
| | | * @param res_cd 水库编码 |
| | | * @param day 日期 |
| | | * @param hour 小时 |
| | | * @param minute 分钟 |
| | | * @param stcd 测站编码 |
| | | */ |
| | | private void getAlarmPersonList(JSONArray jsonArray, |
| | | List<String> columnsList, |
| | |
| | | list.add(personVO.getPhone()); |
| | | if (flag) { |
| | | // 如果是电话告警,需要把日期拼到一起 |
| | | if (alarmRuleDetail.getAlarmMode().equals("电话")){ |
| | | if (alarmRuleDetail.getAlarmMode().equals("电话")) { |
| | | String tem = day + "日" + hour + "时" + minute + "分"; |
| | | list.add(tem); |
| | | }else { |
| | | } else { |
| | | list.add(day); |
| | | list.add(hour); |
| | | list.add(minute); |
| | |
| | | |
| | | /** |
| | | * 告警内容拼接处理 |
| | | * |
| | | * @param jsonArray 数据 |
| | | * @param i 第几个 |
| | | * @param split key 值 |
| | | * @param format 值结果 |
| | | * @param i 第几个 |
| | | * @param split key 值 |
| | | * @param format 值结果 |
| | | * @return |
| | | */ |
| | | private String addAlarmContent(JSONArray jsonArray, int i,String[] split, String format) { |
| | | private String addAlarmContent(JSONArray jsonArray, int i, String[] split, String format) { |
| | | for (String s : split) { |
| | | // 超汛限水位 |
| | | if (s.equals("over_z")) { |
| | | String is_danger_res = "is_danger_res"; |
| | | if (null!= jsonArray.getJSONObject(i).getString(is_danger_res) && jsonArray.getJSONObject(i).getString(is_danger_res).equals("true")) { |
| | | format = format + "控制运用水位" + jsonArray.getJSONObject(i).getString(s); |
| | | } else if (null!= jsonArray.getJSONObject(i).getString(is_danger_res) && jsonArray.getJSONObject(i).getString(is_danger_res).equals("false")) { |
| | | format = format + "汛限水位" + jsonArray.getJSONObject(i).getString(s); |
| | | if (null != jsonArray.getJSONObject(i).getString(is_danger_res) && jsonArray.getJSONObject(i).getString(is_danger_res).equals("true")) { |
| | | format = format + "控制运用水位" + jsonArray.getJSONObject(i).getString(s); |
| | | } else if (null != jsonArray.getJSONObject(i).getString(is_danger_res) && jsonArray.getJSONObject(i).getString(is_danger_res).equals("false")) { |
| | | format = format + "汛限水位" + jsonArray.getJSONObject(i).getString(s); |
| | | } else { |
| | | format = format + jsonArray.getJSONObject(i).getString(s); |
| | | } |
| | | } else if (s.equals("rz")) { |
| | | // 水位 |
| | | String rz = "rz"; |
| | | if (null==jsonArray.getJSONObject(i).getString(rz)) { |
| | | if (null == jsonArray.getJSONObject(i).getString(rz)) { |
| | | format = format + "无数据"; |
| | | } else { |
| | | format = format + jsonArray.getJSONObject(i).getString(s) + "米"; |
| | |
| | | } else if (s.equals("alarm_val")) { |
| | | // 小时雨量 |
| | | String alarm_type = "alarm_type"; |
| | | if (null!=jsonArray.getJSONObject(i).getString(alarm_type) && !jsonArray.getJSONObject(i).getString(alarm_type).equals("")) { |
| | | if (null != jsonArray.getJSONObject(i).getString(alarm_type) && !jsonArray.getJSONObject(i).getString(alarm_type).equals("")) { |
| | | format = format + jsonArray.getJSONObject(i).getString(alarm_type) + "小时坝前点雨量" + jsonArray.getJSONObject(i).getString(s); |
| | | }else { |
| | | } else { |
| | | format = format + jsonArray.getJSONObject(i).getString(s); |
| | | } |
| | | } else if (s.equals("diff_dam")) { |
| | | String over_chec_fl_stag = "over_chec_fl_stag"; |
| | | // 如果是超校核的需要判断超值 |
| | | if (null!=jsonArray.getJSONObject(i).getString(over_chec_fl_stag) && !jsonArray.getJSONObject(i).getString(over_chec_fl_stag).equals("")) { |
| | | if (null != jsonArray.getJSONObject(i).getString(over_chec_fl_stag) && !jsonArray.getJSONObject(i).getString(over_chec_fl_stag).equals("")) { |
| | | // 校核,是否漫过坝顶(正数代表未漫过坝顶,负数则反之) |
| | | String diff_dam = jsonArray.getJSONObject(i).getString(s); |
| | | double parseDouble = Double.parseDouble(diff_dam); |
| | | if (parseDouble>0) { |
| | | if (parseDouble > 0) { |
| | | format = format + "距离大坝坝顶仅" + jsonArray.getJSONObject(i).getString(s); |
| | | }else { |
| | | } else { |
| | | format = format + "已漫过坝顶" + (-parseDouble); |
| | | } |
| | | }else { |
| | | } else { |
| | | format = format + jsonArray.getJSONObject(i).getString(s); |
| | | } |
| | | } else if (s.equals("ms_flag")) { |
| | | // 水位 |
| | | String ms_flag = "ms_flag"; |
| | | if (null!= jsonArray.getJSONObject(i).getString(ms_flag) && jsonArray.getJSONObject(i).getString(ms_flag).equals("sy")) { |
| | | format = format + "渗压"; |
| | | } else if (null!= jsonArray.getJSONObject(i).getString(ms_flag) && jsonArray.getJSONObject(i).getString(ms_flag).equals("sl")) { |
| | | format = format + "渗流" ; |
| | | } else if (null!= jsonArray.getJSONObject(i).getString(ms_flag) && jsonArray.getJSONObject(i).getString(ms_flag).equals("by")) { |
| | | format = format + "白蚁" ; |
| | | } else if (null!= jsonArray.getJSONObject(i).getString(ms_flag) && jsonArray.getJSONObject(i).getString(ms_flag).equals("bx")) { |
| | | format = format + "变形" ; |
| | | if (null != jsonArray.getJSONObject(i).getString(ms_flag) && jsonArray.getJSONObject(i).getString(ms_flag).equals("sy")) { |
| | | format = format + "渗压"; |
| | | } else if (null != jsonArray.getJSONObject(i).getString(ms_flag) && jsonArray.getJSONObject(i).getString(ms_flag).equals("sl")) { |
| | | format = format + "渗流"; |
| | | } else if (null != jsonArray.getJSONObject(i).getString(ms_flag) && jsonArray.getJSONObject(i).getString(ms_flag).equals("by")) { |
| | | format = format + "白蚁"; |
| | | } else if (null != jsonArray.getJSONObject(i).getString(ms_flag) && jsonArray.getJSONObject(i).getString(ms_flag).equals("bx")) { |
| | | format = format + "变形"; |
| | | } else { |
| | | format = format + jsonArray.getJSONObject(i).getString(s); |
| | | } |
| | |
| | | |
| | | /** |
| | | * 保存告警记录信息 |
| | | * |
| | | * @param list |
| | | * @param alarmRule 告警规则 |
| | | * @param uuid 临时id |
| | | * @param uuid 临时id |
| | | * @return |
| | | */ |
| | | public AlarmRecord saveAlarmRecord(List<String> list, AlarmRule alarmRule, String uuid) { |
| | | AlarmRecord alarmRecord = alarmRecordService.getOne(new QueryWrapper<AlarmRecord>() |
| | | .eq("temp_code",uuid) |
| | | .eq("alarm_rule_id",alarmRule.getId()) |
| | | .eq("reservoir_number",list.get(1)) |
| | | .eq("temp_code", uuid) |
| | | .eq("alarm_rule_id", alarmRule.getId()) |
| | | .eq("reservoir_number", list.get(1)) |
| | | ); |
| | | if (null!=alarmRecord) { |
| | | if (null != alarmRecord) { |
| | | // 删除测站编号 |
| | | list.remove(0); |
| | | return alarmRecord; |
| | | }else { |
| | | } else { |
| | | AlarmRecord alarm = new AlarmRecord(); |
| | | // 设置相关信息 |
| | | alarm.setAlarmRuleId(alarmRule.getId().toString()); |
| | |
| | | |
| | | /** |
| | | * 查询告警人员信息 |
| | | * @param res_cd 水库 guid |
| | | * |
| | | * @param res_cd 水库 guid |
| | | * @param roleIds 角色ids |
| | | * @return |
| | | */ |
| | | private List<PersonVO> getPersonListByResGuid(String res_cd,String roleIds) { |
| | | private List<PersonVO> getPersonListByResGuid(String res_cd, String roleIds) { |
| | | // 查询对应的角色信息 |
| | | List<String> roles = sysClient.getRoleNames(roleIds).getData(); |
| | | List<String> roles = sysClient.getRoleNames(roleIds).getData(); |
| | | List<String> personList = new ArrayList<>(); |
| | | List<String> areaList = new ArrayList<>(); |
| | | // 遍历 |
| | | for (String role : roles) { |
| | | if (role.contains("责任人")){ |
| | | if (role.contains("责任人")) { |
| | | personList.add(PersonEnum.findByName(role).getType().toString()); |
| | | }else { |
| | | } else { |
| | | areaList.add(role); |
| | | } |
| | | } |
| | |
| | | List<PersonVO> list = new ArrayList<>(); |
| | | //1. 根据水库编号查询除责任人之外的人员信息 |
| | | if (areaList.size() > 0) { |
| | | List<PersonVO> personVOList = attResManagePersonClient.getUserListByResGuid(res_cd,String.join(",",areaList)); |
| | | List<PersonVO> personVOList = attResManagePersonClient.getUserListByResGuid(res_cd, String.join(",", areaList)); |
| | | list.addAll(personVOList); |
| | | } |
| | | //2. 根据水库编号及责任人类型查询相关责任人信息 |
| | |
| | | |
| | | /** |
| | | * 依次添加巡查责任人,技术责任人信息 |
| | | * |
| | | * @param list |
| | | * @param isPhone 是否保护电话 |
| | | */ |
| | | public void addPatrolTechnologyInfo(List<String> list,Boolean isPhone) { |
| | | // 查询巡查责任人姓名,技术责任人姓名信息 |
| | | List<PersonVO> personVOList = attResManagePersonClient.getPersonListByResGuid(list.get(1),"4,5"); |
| | | if (personVOList.size()>0) { |
| | | public void addPatrolTechnologyInfo(List<String> list, Boolean isPhone) { |
| | | // 根据水库id查询巡查责任人姓名,技术责任人姓名信息 |
| | | List<PersonVO> personVOList = attResManagePersonClient.getPersonListByResGuid(list.get(1), "4,5"); |
| | | if (personVOList.size() > 0) { |
| | | String xczrr = "-"; |
| | | String jszrr = "-"; |
| | | for (PersonVO personVO : personVOList) { |
| | | if (personVO.getType().equals("5")) { |
| | | xczrr = isPhone?personVO.getName()+":"+personVO.getPhone() : personVO.getName(); |
| | | xczrr = isPhone ? personVO.getName() + ":" + personVO.getPhone() : personVO.getName(); |
| | | } |
| | | if (personVO.getType().equals("4")) { |
| | | jszrr = isPhone?personVO.getName()+":"+personVO.getPhone() : personVO.getName(); |
| | | jszrr = isPhone ? personVO.getName() + ":" + personVO.getPhone() : personVO.getName(); |
| | | } |
| | | } |
| | | // 巡查责任人姓名 |
| | | list.add(xczrr); |
| | | // 技术责任人姓名 |
| | | list.add(jszrr); |
| | | }else { |
| | | } else { |
| | | // 巡查责任人姓名 |
| | | list.add("-"); |
| | | // 技术责任人姓名 |
| | |
| | | |
| | | /** |
| | | * 拼接市县水利部人员姓名及联系方式 |
| | | * |
| | | * @param list |
| | | */ |
| | | public void addCityCountyBusinessPersonInfo(List<String> list) { |
| | | // 根据水库编号查询市县水利部人员姓名及联系方式 |
| | | List<PersonVO> personVOList = attResManagePersonClient.getCityCountyPersonListByResGuid(list.get(1)); |
| | | if (personVOList.size()>0){ |
| | | if (personVOList.size() > 0) { |
| | | // 如果没有找到人员? |
| | | StringBuilder builder = new StringBuilder(); |
| | | for (PersonVO personVO : personVOList) { |
| | | builder.append(personVO.getName()).append(":").append(personVO.getPhone()).append(";"); |
| | | } |
| | | // 拼接水利部人员信息 |
| | | list.add(builder.substring(0,builder.length()-1)); |
| | | }else { |
| | | list.add(builder.substring(0, builder.length() - 1)); |
| | | } else { |
| | | list.add("-"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 依次添加行政责任人,主管部门责任人,技术责任人,巡查责任人信息 |
| | | * |
| | | * @param list |
| | | * @param personTypes |
| | | */ |
| | | public void addWaterMoreDesignPatrolTechnologyInfo(List<String> list,String personTypes) { |
| | | public void addWaterMoreDesignPatrolTechnologyInfo(List<String> list, String personTypes) { |
| | | String[] split = personTypes.split(","); |
| | | // 查询巡查责任人姓名,技术责任人姓名信息 |
| | | List<PersonVO> personVOList = attResManagePersonClient.getPersonListByResGuid(list.get(1),personTypes); |
| | | if (personVOList.size()>0) { |
| | | List<PersonVO> personVOList = attResManagePersonClient.getPersonListByResGuid(list.get(1), personTypes); |
| | | if (personVOList.size() > 0) { |
| | | String xzzrr = "-"; |
| | | String zgzrr = "-"; |
| | | String jszrr = "-"; |
| | | String xczrr = "-"; |
| | | for (PersonVO personVO : personVOList) { |
| | | String str = null!=personVO.getPhone() ? ":"+personVO.getPhone():"-"; |
| | | String str = null != personVO.getPhone() ? ":" + personVO.getPhone() : "-"; |
| | | if (personVO.getType().equals(split[0])) { |
| | | xzzrr = personVO.getName() + str; |
| | | } |
| | | if (personVO.getType().equals(split[1])) { |
| | | zgzrr = personVO.getName()+ str; |
| | | zgzrr = personVO.getName() + str; |
| | | } |
| | | if (personVO.getType().equals(split[2])) { |
| | | jszrr = personVO.getName()+ str; |
| | | jszrr = personVO.getName() + str; |
| | | } |
| | | if (personVO.getType().equals(split[3])) { |
| | | xczrr = personVO.getName()+ str; |
| | | xczrr = personVO.getName() + str; |
| | | } |
| | | } |
| | | // 行政 |
| | |
| | | list.add(jszrr); |
| | | // 巡查责任人姓名 |
| | | list.add(xczrr); |
| | | }else { |
| | | } else { |
| | | for (String type : split) { |
| | | list.add("-"); |
| | | } |
| | |
| | | public JSONArray getZtData(String params, String url) { |
| | | // 获取环境 |
| | | String activeProfile = SpringContextUtil.getActiveProfile(); |
| | | if (activeProfile.equals("dev")){ |
| | | if (activeProfile.equals("dev")) { |
| | | url = ZtApiUrlConstant.url_prefix_dev + url; |
| | | } |
| | | if (activeProfile.equals("prod")){ |
| | | if (activeProfile.equals("prod")) { |
| | | url = ZtApiUrlConstant.url_prefix_prod + url; |
| | | } |
| | | if (activeProfile.equals("test")){ |
| | | if (activeProfile.equals("test")) { |
| | | url = ZtApiUrlConstant.url_prefix_test + url; |
| | | } |
| | | //设置请求头 |
| | |
| | | |
| | | /** |
| | | * 保存站内信记录信息 |
| | | * |
| | | * @param smsRequestTemplate |
| | | * @param alarmRule |
| | | * @return |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 保存站内信记录(水库合并) |
| | | * |
| | | * @param smsRequestTemplate |
| | | * @param alarmRule |
| | | * @return |
| | |
| | | Temp temp = new Temp(); |
| | | temp.setPhone(list.get(1)); |
| | | temp.setReservoirCode(list.get(0)); |
| | | temp.setReservoirName(list.get(3)); |
| | | temp.setAlarmRecordId(list.get(list.size()-1)); |
| | | temp.setReservoirName(list.get(2)); |
| | | temp.setCdNm(list.get(3)); |
| | | temp.setAlarmRecordId(list.get(list.size() - 1)); |
| | | // 放入临时集合 |
| | | tempList.add(temp); |
| | | } |
| | |
| | | Map<String, List<Temp>> listMap = tempList.stream().collect(Collectors.groupingBy(Temp::getPhone)); |
| | | |
| | | |
| | | listMap.forEach((s, temps) -> { |
| | | listMap.forEach((phone, temps) -> { |
| | | MessageRecord messageRecord = new MessageRecord(); |
| | | |
| | | messageRecord.setTheme(alarmRule.getRuleName()); |
| | | messageRecord.setSender(AuthUtil.getUserId().toString()); |
| | | messageRecord.setSource("智能告警"); |
| | | messageRecord.setStatus(0); |
| | | messageRecord.setRecipient(phone); |
| | | |
| | | |
| | | StringBuilder builder = new StringBuilder(); |
| | | StringBuilder smsRecordBuilder = new StringBuilder(); |
| | | builder.append(s).append(","); |
| | | // 站内信其实不用分组,与短信发送结构保持一致, |
| | | List<List<Temp>> lists = Lists.partition(new ArrayList<>(temps), 7000); |
| | | for (List<Temp> list : lists) { |
| | | List<AlarmRecordDetailVO> alarmRecordDetailList = new ArrayList<>(); |
| | | // 设置站内信记录信息 |
| | | MessageRecord messageRecord = new MessageRecord(); |
| | | Map<String, List<Temp>> resCollect = temps.stream().collect(Collectors.groupingBy(Temp::getReservoirCode)); |
| | | List<String> contentList = new ArrayList<>(); |
| | | resCollect.forEach((resCode, contentTemp) -> { |
| | | List<String> cdNmList = new ArrayList<>(); |
| | | //凤凰水库(测点12170062992),大新众水库(测点12170063012、测点12170062998) |
| | | //因为只能按编号分组,名称会有重复,所以拿第一条数据的名称就行 |
| | | String resName = contentTemp.get(0).getReservoirName(); |
| | | contentTemp.forEach(info -> { |
| | | //把测站加进测站集合里 |
| | | cdNmList.add("测点" + info.getCdNm()); |
| | | }); |
| | | String cdNameListStr = String.join("、", cdNmList); |
| | | contentList.add(StringUtil.format("{}({})", resName, cdNameListStr)); |
| | | }); |
| | | String contentListStr = String.join(",", contentList); |
| | | //需要填充的数据 |
| | | List<String> fillList = new ArrayList<>(); |
| | | fillList.add(contentListStr); |
| | | String sendContent = contentConvert(smsTemplate.getContent(), fillList); |
| | | messageRecord.setContent(sendContent); |
| | | |
| | | // 遍历 |
| | | for (Temp temp : list) { |
| | | builder.append(temp.getReservoirName()).append(","); |
| | | smsRecordBuilder.append(temp.getReservoirName()).append(","); |
| | | AlarmRecordDetailVO alarmRecordDetail = new AlarmRecordDetailVO(); |
| | | alarmRecordDetail.setReservoirNumber(temp.getReservoirCode()); |
| | | alarmRecordDetail.setAlarmRecordId(Long.parseLong(temp.getAlarmRecordId())); |
| | | alarmRecordDetail.setAlarmMode("站内信"); |
| | | alarmRecordDetail.setPhone(temp.getPhone()); |
| | | alarmRecordDetail.setReservoirName(temp.getReservoirName()); |
| | | // 加入集合 |
| | | alarmRecordDetailList.add(alarmRecordDetail); |
| | | } |
| | | |
| | | |
| | | String row = builder.substring(0, builder.length() - 1); |
| | | // 组装数据 |
| | | String[] titleArr = smsRequestTemplate.getTitle().split(","); |
| | | String[][] dyns = new String[2][titleArr.length]; |
| | | dyns[0] = titleArr; |
| | | dyns[1] = row.split(","); |
| | | // 内容处理 |
| | | String str = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s"); |
| | | // 短信内容拼接(完成发送的结果信息) |
| | | String substring = smsRecordBuilder.substring(0, smsRecordBuilder.length() - 1); |
| | | // 格式转换 |
| | | String format = String.format(str, substring.split(",")); |
| | | |
| | | |
| | | messageRecord.setTheme(alarmRule.getRuleName()); |
| | | messageRecord.setSender(AuthUtil.getUserId().toString()); |
| | | messageRecord.setSource("智能告警"); |
| | | messageRecord.setStatus(0); |
| | | |
| | | // 删除 最后一个 告警记录id |
| | | list.remove(list.size() - 1); |
| | | // 删除 0 水库编码 |
| | | list.remove(0); |
| | | |
| | | // 设置手机号 |
| | | // messageRecord.setRecipient(list.get(0)); |
| | | messageRecord.setContent(format); |
| | | // 放入集合 |
| | | messageRecordList.add(messageRecord); |
| | | |
| | | } |
| | | messageRecordList.add(messageRecord); |
| | | }); |
| | | |
| | | // 保存告警记录详情信息 |
| | |
| | | } |
| | | |
| | | |
| | | public Map<String, Object> saveInStationInfoMergeNoCd(SmsRequestTemplate smsRequestTemplate, AlarmRule alarmRule) { |
| | | |
| | | // 取出数据 |
| | | SMSSendRequest request = new SMSSendRequest(); |
| | | SmsTemplate smsTemplate = smsRequestTemplate.getSmsTemplate(); |
| | | request.setTemplateId(smsTemplate.getTemplateId()); |
| | | List<List<String>> templateContent = smsRequestTemplate.getTemplateContent(); |
| | | |
| | | List<MessageRecord> messageRecordList = new ArrayList<>(); |
| | | List<Temp> tempList = new ArrayList<>(); |
| | | // 合并数据 |
| | | for (List<String> list : templateContent) { |
| | | Temp temp = new Temp(); |
| | | temp.setPhone(list.get(1)); |
| | | temp.setReservoirCode(list.get(0)); |
| | | temp.setReservoirName(list.get(2)); |
| | | temp.setAlarmRecordId(list.get(list.size() - 1)); |
| | | // 放入临时集合 |
| | | tempList.add(temp); |
| | | } |
| | | |
| | | // 按手机号分组 |
| | | Map<String, List<Temp>> listMap = tempList.stream().collect(Collectors.groupingBy(Temp::getPhone)); |
| | | |
| | | |
| | | listMap.forEach((phone, temps) -> { |
| | | MessageRecord messageRecord = new MessageRecord(); |
| | | |
| | | messageRecord.setTheme(alarmRule.getRuleName()); |
| | | messageRecord.setSender(AuthUtil.getUserId().toString()); |
| | | messageRecord.setSource("智能告警"); |
| | | messageRecord.setStatus(0); |
| | | messageRecord.setRecipient(phone); |
| | | List<String> contentList = new ArrayList<>(); |
| | | //因为只能按编号分组,名称会有重复,所以拿第一条数据的名称就行 |
| | | temps.forEach(info -> { |
| | | //把水库加进集合 |
| | | contentList.add(info.getReservoirName()); |
| | | }); |
| | | String contentListStr = String.join(",", contentList); |
| | | //需要填充的数据 |
| | | List<String> fillList = new ArrayList<>(); |
| | | fillList.add(contentListStr); |
| | | String sendContent = contentConvert(smsTemplate.getContent(), fillList); |
| | | messageRecord.setContent(sendContent); |
| | | messageRecordList.add(messageRecord); |
| | | }); |
| | | |
| | | // 保存告警记录详情信息 |
| | | if (smsRequestTemplate.getIsSendStation()) { |
| | | saveMessageRecord(messageRecordList); |
| | | } |
| | | Map<String, Object> map = new HashMap<>(2); |
| | | // 返回 |
| | | return map; |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 把填充内容补充到模板中 |
| | | * |
| | | * @param templateString 模板 |
| | | * @param strList 填充内容集合 |
| | | * @return |
| | | */ |
| | | private String contentConvert(String templateString, List<String> strList) { |
| | | |
| | | //把{}转换成%s |
| | | String formatTemplate = templateString.replaceAll("\\{.+?\\}", "%s"); |
| | | String content = String.format(formatTemplate, strList.toArray()); |
| | | return content; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 保存站内信记录信息 |
| | | * |
| | | * @param messageRecordList |
| | | */ |
| | | public void saveMessageRecord(List<MessageRecord> messageRecordList) { |
| | |
| | | for (MessageRecord messageRecord : messageRecordList) { |
| | | // 通过手机号获取用户id信息 |
| | | R<List<User>> listR = userClient.userInfoByPhone("000000", messageRecord.getRecipient()); |
| | | if (listR.getData().size()>0) { |
| | | if (listR.getData().size() > 0) { |
| | | messageRecord.setRecipient(listR.getData().get(0).getId().toString()); |
| | | } |
| | | } |
| | |
| | | for (MessageRecord messageRecord : messageRecordList) { |
| | | Map<String, Object> map = new HashMap<>(2); |
| | | // 查询当前用户未读消息个数 |
| | | map.put("count",messageClient.getNotReadNumber(messageRecord.getRecipient())); |
| | | map.put("record",messageRecord); |
| | | SSEServer.sendMessage("web:"+messageRecord.getRecipient(),new JSONObject(map).toJSONString()); |
| | | map.put("count", messageClient.getNotReadNumber(messageRecord.getRecipient())); |
| | | map.put("record", messageRecord); |
| | | SSEServer.sendMessage("web:" + messageRecord.getRecipient(), new JSONObject(map).toJSONString()); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 新增测试信息 |
| | | * |
| | | * @param messageRecordList |
| | | */ |
| | | private void addSendMsgTest(List<MessageRecord> messageRecordList) { |
| | |
| | | |
| | | /** |
| | | * 创建告警外呼任务 |
| | | * |
| | | * @param smsRequestTemplate |
| | | * @return |
| | | */ |
| | |
| | | // 修改手机号码为被叫号码 |
| | | titles.set(0, "被叫号码"); |
| | | titles.add("告警记录id"); |
| | | titles.add(0,"水库编号"); |
| | | map.put("titles",titles); |
| | | titles.add(0, "水库编号"); |
| | | map.put("titles", titles); |
| | | // 处理人员及预警相关数据并组装 |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | Map<String, String> stringMap = new HashMap<>(); |
| | | for (int i = 0; i < titles.size(); i++) { |
| | | stringMap.put(titles.get(i),list.get(i)); |
| | | stringMap.put(titles.get(i), list.get(i)); |
| | | } |
| | | mapList.add(stringMap); |
| | | } |
| | | map.put("list",mapList); |
| | | map.put("scenesId",smsRequestTemplate.getSmsTemplate().getTemplateId()); |
| | | map.put("list", mapList); |
| | | map.put("scenesId", smsRequestTemplate.getSmsTemplate().getTemplateId()); |
| | | String taskName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss")) + smsRequestTemplate.getAlarmRule().getRuleName() + "智能外呼"; |
| | | map.put("taskName",taskName); |
| | | map.put("taskName", taskName); |
| | | String taskScheduleTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
| | | map.put("taskScheduleTime",taskScheduleTime); |
| | | map.put("taskScheduleTime", taskScheduleTime); |
| | | // 创建外呼任务 |
| | | return outCallClient.createOutCallTaskByAlarm(map); |
| | | } |
| | | |
| | | |
| | | } |