| | |
| | | package cn.gistack.alerts.notice.service.impl; |
| | | |
| | | 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.service.AlarmRecordService; |
| | | import cn.gistack.alerts.notice.constant.ZtApiUrlConstant; |
| | |
| | | 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.sse.server.SSEServer; |
| | | import cn.gistack.common.utils.SpringContextUtil; |
| | | import cn.gistack.sm.message.entity.MessageRecord; |
| | | import cn.gistack.sm.message.feign.IMessageClient; |
| | | import cn.gistack.sm.sjztmd.feign.IAttResManagePersonClient; |
| | | import cn.gistack.sm.sjztmd.vo.PersonVO; |
| | | import cn.gistack.system.feign.ISysClient; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.nacos.shaded.com.google.gson.JsonObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpHeaders; |
| | |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | |
| | | @Autowired |
| | | private IMessageClient messageClient; |
| | | |
| | | |
| | | |
| | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 保存站内信记录信息 |
| | | * @param smsRequestTemplate |
| | | * @param alarmRule |
| | | * @return |
| | | */ |
| | | public Map<String, Object> saveInStationInfo(SmsRequestTemplate smsRequestTemplate, AlarmRule alarmRule) { |
| | | // 取出数据 |
| | | SMSSendRequest request = new SMSSendRequest(); |
| | | SmsTemplate smsTemplate = smsRequestTemplate.getSmsTemplate(); |
| | | request.setTemplateId(smsTemplate.getTemplateId()); |
| | | List<List<String>> templateContent = smsRequestTemplate.getTemplateContent(); |
| | | // 先保存结果记录 |
| | | List<AlarmRecordDetail> alarmRecordDetailList = new ArrayList<>(); |
| | | List<MessageRecord> messageRecordList = new ArrayList<>(); |
| | | Set<String> phoneSet = new HashSet<>(); |
| | | // 遍历处理 |
| | | for (List<String> list : templateContent) { |
| | | // 设置站内信记录信息 |
| | | MessageRecord messageRecord = new MessageRecord(); |
| | | messageRecord.setTheme(alarmRule.getRuleName()); |
| | | messageRecord.setSender(AuthUtil.getUserId().toString()); |
| | | messageRecord.setSource("智能告警"); |
| | | messageRecord.setStatus(2); |
| | | |
| | | // 设置告警记录信息 |
| | | AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail(); |
| | | alarmRecordDetail.setReservoirNumber(list.get(0)); |
| | | alarmRecordDetail.setAlarmRecordId(Long.parseLong(list.get(list.size() - 1))); |
| | | alarmRecordDetail.setAlarmMode("站内信"); |
| | | // 未读 |
| | | alarmRecordDetail.setStatus(1); |
| | | // 删除 最后一个 告警记录id |
| | | list.remove(list.size() - 1); |
| | | // 删除 0 水库编码 |
| | | list.remove(0); |
| | | |
| | | alarmRecordDetail.setPhone(list.get(0)); |
| | | // 设置手机号 |
| | | request.setUserNumber(list.get(0)); |
| | | messageRecord.setRecipient(list.get(0)); |
| | | phoneSet.add(list.get(0)); |
| | | // 内容处理 |
| | | String s = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s"); |
| | | // 需要删除最前面的手机号 |
| | | list.remove(0); |
| | | // 格式转换 |
| | | String format = String.format(s, list.toArray()); |
| | | // 设置内容 |
| | | request.setMessageContent(format); |
| | | messageRecord.setContent(format); |
| | | // 保存记录 |
| | | alarmRecordDetail.setAlarmContent(format); |
| | | alarmRecordDetail.setCreateTime(new Date()); |
| | | // 放入集合 |
| | | alarmRecordDetailList.add(alarmRecordDetail); |
| | | messageRecordList.add(messageRecord); |
| | | } |
| | | // 保存告警记录详情信息 |
| | | saveMessageRecord(messageRecordList); |
| | | Map<String, Object> map = new HashMap<>(2); |
| | | // 返回 |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 保存站内信记录信息 |
| | | * @param messageRecordList |
| | | */ |
| | | public void saveMessageRecord(List<MessageRecord> messageRecordList) { |
| | | // 保存记录 |
| | | messageClient.saveMessageRecord(messageRecordList); |
| | | // 发起通知 |
| | | // 遍历 |
| | | 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()); |
| | | } |
| | | } |
| | | } |