zhongrj
2023-07-10 93c783e6ddf2731eab9cf264a7882632c8ce955f
初次超汛限告警新增站内信信息发送
5 files modified
61 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/AsyncNoticeHandle.java 5 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java 19 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java 3 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java 23 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/vo/SmsRequestTemplate.java 11 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/AsyncNoticeHandle.java
@@ -64,16 +64,19 @@
     * @param uuid
     * @param alarmRule
     * @param adCode
     * @param isSendStation 是否发送站内信
     * @return
     */
    @Async
    public Map<String, Object> waterFirstOverHandle(String templateId, String uuid, AlarmRule alarmRule,String adCode) {
    public Map<String, Object> waterFirstOverHandle(String templateId, String uuid, AlarmRule alarmRule,String adCode,Boolean isSendStation) {
        Map<String, Object> map = new HashMap<>();
        // 调用中台服务接口查询数据
        JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.over_z_res_api);
        // 只发短信,将发短信信息组装好
        SmsRequestTemplate smsRequestTemplate
            = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterFirstOverList,true,adCode);
        smsRequestTemplate.setIsSendStation(isSendStation);
        // 拼接后面内容
        if (smsRequestTemplate.getPersonVOList().size()>0) {
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java
@@ -19,12 +19,15 @@
import cn.gistack.sm.sjztmd.feign.IAttResManagePersonClient;
import cn.gistack.sm.sjztmd.vo.PersonVO;
import cn.gistack.system.feign.ISysClient;
import cn.gistack.system.user.entity.User;
import cn.gistack.system.user.feign.IUserClient;
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.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
@@ -58,6 +61,9 @@
    @Autowired
    private IMessageClient messageClient;
    @Autowired
    private IUserClient userClient;
    /**
@@ -81,6 +87,7 @@
        SmsTemplate smsTemplate = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("template_id",templateId).eq("is_deleted",0));
        if (null != smsTemplate) {
            SmsRequestTemplate smsRequestTemplate = new SmsRequestTemplate();
            smsRequestTemplate.setAlarmRule(alarmRule);
            // 设置模板信息
            smsRequestTemplate.setSmsTemplate(smsTemplate);
            // 解析模板并设置 title
@@ -454,7 +461,7 @@
            messageRecord.setTheme(alarmRule.getRuleName());
            messageRecord.setSender(AuthUtil.getUserId().toString());
            messageRecord.setSource("智能告警");
            messageRecord.setStatus(2);
            messageRecord.setStatus(0);
            // 设置告警记录信息
            AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail();
@@ -490,7 +497,9 @@
            messageRecordList.add(messageRecord);
        }
        // 保存告警记录详情信息
        saveMessageRecord(messageRecordList);
        if (smsRequestTemplate.getIsSendStation()) {
            saveMessageRecord(messageRecordList);
        }
        Map<String, Object> map = new HashMap<>(2);
        // 返回
        return map;
@@ -501,6 +510,12 @@
     * @param messageRecordList
     */
    public void saveMessageRecord(List<MessageRecord> messageRecordList) {
        // 遍历,查询对应的用户id
        for (MessageRecord messageRecord : messageRecordList) {
            // 通过手机号获取用户id信息
            R<List<User>> listR = userClient.userInfoByPhone("000000", messageRecord.getRecipient());
            messageRecord.setRecipient(listR.getData().get(0).getId().toString());
        }
        // 保存记录
        messageClient.saveMessageRecord(messageRecordList);
        // 发起通知
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
@@ -223,7 +223,8 @@
        // 查询当前策略对应的告警规则信息
        AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1));
        if (null!=alarmRule) {
            asyncNoticeHandle.waterFirstOverHandle(templateId, uuid, alarmRule,adCode);
            // 短信发送
            asyncNoticeHandle.waterFirstOverHandle(templateId, uuid, alarmRule,adCode,true);
            // 返回
            return "水位初次超汛限告警";
        }
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java
@@ -6,7 +6,9 @@
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendDataResult;
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
import cn.gistack.alerts.alarmRule.entity.AlarmRecordDetail;
import cn.gistack.alerts.alarmRule.entity.AlarmRule;
import cn.gistack.alerts.alarmRule.service.AlarmRecordDetailService;
import cn.gistack.alerts.notice.service.impl.NoticeHandle;
import cn.gistack.alerts.notice.util.FormatUtil;
import cn.gistack.alerts.sms.constant.MinConstant;
import cn.gistack.alerts.sms.dto.DynSMSSendRequestDTO;
@@ -24,12 +26,14 @@
import cn.gistack.alerts.sms.vo.SmsResponseVO;
import cn.gistack.sm.intelligentCall.entity.CallNotFillRecord;
import cn.gistack.sm.intelligentCall.feign.OutCallClient;
import cn.gistack.sm.message.entity.MessageRecord;
import cn.gistack.sm.sjztmd.feign.IAttResManagePersonClient;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.google.common.collect.Lists;
import org.jetbrains.annotations.NotNull;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -75,6 +79,9 @@
    @Autowired
    private SmsAsyncService asyncService;
    @Autowired
    private NoticeHandle noticeHandle;
    /**
     * 发送 xx 变量模板短信
     * @param phoneNumbers 手机号集合
@@ -112,13 +119,22 @@
        // 取出数据
        SMSSendRequest request = new SMSSendRequest();
        SmsTemplate smsTemplate = smsRequestTemplate.getSmsTemplate();
        AlarmRule alarmRule = smsRequestTemplate.getAlarmRule();
        request.setTemplateId(smsTemplate.getTemplateId());
        List<List<String>> templateContent = smsRequestTemplate.getTemplateContent();
        // 先保存结果记录
        SmsResult smsResult = saveSendResult(null,null,request, templateContent.size());
        List<SmsRecord> smsRecordList = new ArrayList<>();
        List<MessageRecord> messageRecordList = new ArrayList<>();
        // 遍历处理
        for (List<String> list : templateContent) {
            // 设置站内信记录信息
            MessageRecord messageRecord = new MessageRecord();
            messageRecord.setTheme(alarmRule.getRuleName());
            messageRecord.setSender(AuthUtil.getUserId().toString());
            messageRecord.setSource("智能告警");
            messageRecord.setStatus(0);
            AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail();
            alarmRecordDetail.setReservoirNumber(list.get(0));
            alarmRecordDetail.setAlarmRecordId(Long.parseLong(list.get(list.size() - 1)));
@@ -141,6 +157,7 @@
                alarmRecordDetail.setPhone(list.get(0));
                // 设置手机号
                request.setUserNumber(list.get(0));
                messageRecord.setRecipient(list.get(0));
                // 内容处理
                String s = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s");
                // 短信内容拼接(完成发送的结果信息)
@@ -150,6 +167,8 @@
                String format = String.format(s, list.toArray());
                // 设置内容
                request.setMessageContent(format);
                messageRecord.setContent(format);
                messageRecordList.add(messageRecord);
                // 保存短信发送记录
                smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
                if (null != smsRecord){
@@ -162,6 +181,10 @@
            }
            smsRecordList.add(smsRecord);
        }
        if (smsRequestTemplate.getIsSendStation()) {
            // 保存站内信信息
            noticeHandle.saveMessageRecord(messageRecordList);
        }
        Map<String, Object> map = new HashMap<>(2);
        map.put("smsRecord",smsRecordList.size());
        // 返回
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/vo/SmsRequestTemplate.java
@@ -1,6 +1,7 @@
package cn.gistack.alerts.sms.vo;
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
import cn.gistack.alerts.alarmRule.entity.AlarmRule;
import cn.gistack.alerts.sms.entity.SmsTemplate;
import cn.gistack.sm.sjztmd.vo.PersonVO;
import lombok.Data;
@@ -60,4 +61,14 @@
     * 短信模板对象信息
     */
    private SmsTemplate smsTemplate;
    /**
     * 是否发送站内信
     */
    private Boolean isSendStation;
    /**
     * 告警规则信息
     */
    private AlarmRule alarmRule;
}