| | |
| | | package cn.gistack.alerts.notice.service.impl; |
| | | |
| | | import cn.com.flaginfo.sdk.cmc.api.result.ComResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendDataResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecord; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecordDetail; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRule; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRecordService; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRecordDetailVO; |
| | | import cn.gistack.alerts.notice.constant.ZnwhColumnConstant; |
| | | import cn.gistack.alerts.notice.constant.ZtApiUrlConstant; |
| | | import cn.gistack.alerts.notice.constant.ZtConfigConstant; |
| | | import cn.gistack.alerts.notice.enums.PersonEnum; |
| | | import cn.gistack.alerts.notice.util.FormatUtil; |
| | | import cn.gistack.alerts.push.service.IPushService; |
| | | import cn.gistack.alerts.sms.entity.SmsRecord; |
| | | import cn.gistack.alerts.sms.entity.SmsResult; |
| | | import cn.gistack.alerts.sms.entity.SmsTemplate; |
| | | import cn.gistack.alerts.sms.service.ISmsTemplateService; |
| | | import cn.gistack.alerts.sms.vo.SmsRequestTemplate; |
| | | import cn.gistack.alerts.sms.vo.Temp; |
| | | import cn.gistack.alerts.sse.server.SSEServer; |
| | | import cn.gistack.common.utils.SpringContextUtil; |
| | | import cn.gistack.sm.intelligentCall.feign.OutCallClient; |
| | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.google.common.collect.Lists; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.api.R; |
| | |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Component |
| | | @Slf4j |
| | |
| | | return map; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 保存站内信记录(水库合并) |
| | | * @param smsRequestTemplate |
| | | * @param alarmRule |
| | | * @return |
| | | */ |
| | | public Map<String, Object> saveInStationInfoMerge(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(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) -> { |
| | | 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(); |
| | | |
| | | // 遍历 |
| | | 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); |
| | | |
| | | } |
| | | }); |
| | | |
| | | // 保存告警记录详情信息 |
| | | if (smsRequestTemplate.getIsSendStation()) { |
| | | saveMessageRecord(messageRecordList); |
| | | } |
| | | Map<String, Object> map = new HashMap<>(2); |
| | | // 返回 |
| | | return map; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 保存站内信记录信息 |
| | | * @param messageRecordList |