短信导入发送数据返回提示修改,告警短信发送修改(新增市县水利部人员查询并放入短信中)
20 files modified
1 files added
464 ■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/notice/feign/NoticeClient.java 6 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/notice/feign/NoticeClientFallBack.java 4 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztmd/feign/IAttResManagePersonClient.java 9 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztmd/feign/IAttResManagePersonClientFallback.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/feign/NoticeFeignClient.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java 56 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java 10 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java 5 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java 168 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/feign/AttResManagePersonClient.java 11 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml 15 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.java 11 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.xml 10 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java 8 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResManagePersonService.java 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java 11 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResManagePersonServiceImpl.java 29 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/AttResBaseVO.java 23 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/AlarmXxlJob.java 59 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/notice/feign/NoticeClient.java
@@ -1,10 +1,9 @@
package cn.gistack.alerts.notice.feign;
import feign.Request;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
 * 告警 feign 远程调用
@@ -19,13 +18,14 @@
    /**
     * 发送告警通知
     * @param options 单独超时时间设置
     * @param name
     * @param content
     * @param type
     * @return
     */
    @GetMapping(CREATE_ALARM_NOTICE_TASK_JOB_HANDLER)
    String createAlarmNoticeTaskJobHandler(@RequestParam("name") String name,
    void createAlarmNoticeTaskJobHandler(@RequestParam("name") String name,
                                           @RequestParam("content") String content,
                                           @RequestParam("title") String type);
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/notice/feign/NoticeClientFallBack.java
@@ -1,5 +1,6 @@
package cn.gistack.alerts.notice.feign;
import feign.Request;
import org.springframework.stereotype.Component;
/**
@@ -11,7 +12,6 @@
public class NoticeClientFallBack implements NoticeClient {
    @Override
    public String createAlarmNoticeTaskJobHandler(String name, String content, String type) {
        return null;
    public void createAlarmNoticeTaskJobHandler(String name, String content, String type) {
    }
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztmd/feign/IAttResManagePersonClient.java
@@ -33,6 +33,7 @@
    String SYNCHARONIZATION_ADD_USER = API_PREFIX + "/synchronizationAddUser";
    String SYNCHARONIZATION_UPDATE_USER = API_PREFIX + "/synchronizationUpdateUser";
    String GET_PERSON_LIST_BY_WATER_CODE_LIST = API_PREFIX + "/getPersonListByWaterCodeList";
    String GET_CITY_COUNTY_PERSONG_LIST_BY_RES_GUID = API_PREFIX + "/getCityCountyPersonListByResGuid";
    @GetMapping(QUERY_LIST_BY_PHONE)
    R queryListByPhone(@RequestParam("userPhone") String userPhone);
@@ -70,4 +71,12 @@
     */
    @PostMapping(GET_PERSON_LIST_BY_WATER_CODE_LIST)
    Set<String> getPersonListByWaterCodeList(@RequestBody List<String> list);
    /**
     * 根据水库编号查询市县水利部人员姓名及联系方式
     * @param res_cd 水库编号
     * @return
     */
    @GetMapping(GET_CITY_COUNTY_PERSONG_LIST_BY_RES_GUID)
    List<PersonVO> getCityCountyPersonListByResGuid(@RequestParam("res_cd") String res_cd);
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztmd/feign/IAttResManagePersonClientFallback.java
@@ -52,4 +52,9 @@
    public Set<String> getPersonListByWaterCodeList(List<String> list) {
        return null;
    }
    @Override
    public List<PersonVO> getCityCountyPersonListByResGuid(String res_cd) {
        return null;
    }
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/feign/NoticeFeignClient.java
@@ -1,6 +1,7 @@
package cn.gistack.alerts.notice.feign;
import cn.gistack.alerts.notice.strategy.NoticeStrategyContext;
import feign.Request;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springframework.web.bind.annotation.GetMapping;
@@ -29,7 +30,7 @@
     */
    @GetMapping(CREATE_ALARM_NOTICE_TASK_JOB_HANDLER)
    @Override
    public String createAlarmNoticeTaskJobHandler(String name, String content, String type) {
        return applicationContext.doSomethingByStrategy(name, content, type);
    public void createAlarmNoticeTaskJobHandler(String name, String content, String type) {
        applicationContext.doSomethingByStrategy(name, content, type);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
@@ -218,20 +218,48 @@
    private void addPatrolTechnologyInfo(List<String> list) {
        // 查询巡查责任人姓名,技术责任人姓名信息
        List<PersonVO> personVOList = attResManagePersonClient.getPersonListByResGuid(list.get(0),"4,5");
        String xczrr = "";
        String jszrr = "";
        for (PersonVO personVO : personVOList) {
            if (personVO.getType().equals("5")){
                xczrr = personVO.getName();
        if (personVOList.size()>0) {
            String xczrr = "";
            String jszrr = "";
            for (PersonVO personVO : personVOList) {
                if (personVO.getType().equals("5")) {
                    xczrr = personVO.getName();
                }
                if (personVO.getType().equals("4")) {
                    jszrr = personVO.getName();
                }
            }
            if (personVO.getType().equals("4")){
                jszrr = personVO.getName();
            }
            // 巡查责任人姓名
            list.add(xczrr);
            // 技术责任人姓名
            list.add(jszrr);
        }else {
            // 巡查责任人姓名
            list.add("?");
            // 技术责任人姓名
            list.add("?");
        }
        // 巡查责任人姓名
        list.add(xczrr);
        // 技术责任人姓名
        list.add(jszrr);
    }
    /**
     * 拼接市县水利部人员姓名及联系方式
     * @param list
     */
    private void addCityCountyBusinessPersonInfo(List<String> list) {
        // 根据水库编号查询市县水利部人员姓名及联系方式
        List<PersonVO> personVOList = attResManagePersonClient.getCityCountyPersonListByResGuid(list.get(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("?");
        }
    }
    /**
@@ -414,10 +442,13 @@
            for (List<String> list : smsRequestTemplate.getTemplateContent()) {
                // 依次拼接巡查责任人,技术责任人姓名
                addPatrolTechnologyInfo(list);
                // 拼接市县水利部人员姓名及联系方式
                addCityCountyBusinessPersonInfo(list);
                // 保存告警记录信息
                AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule);
                if (null != alarmRecord) {
                    list.add(alarmRecord.getId().toString());
//                    list.add("999");
                }
            }
            // 调用短信服务
@@ -429,6 +460,7 @@
        return "水位初次超汛限告警";
    }
    /**
     * 策略7: 水位小幅超汛限告警
     *
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java
@@ -63,11 +63,8 @@
        if(validatePhone(request.getUserNumber())) {
            // 发送操作
            ComResult<SMSSendDataResult> resultComResult = SmsUtils.sendMsg(request);
            SmsResponseVO smsResponse = new SmsResponseVO();
            smsResponse.setCode(resultComResult.getCode().toString());
            smsResponse.setMsg(resultComResult.getMsg());
            // 记录发送记录操作
            SmsResult smsResult = smsService.saveSendResult(smsResponse,request, 1);
            SmsResult smsResult = smsService.saveSendResult(resultComResult.getCode().toString(),resultComResult.getMsg(),request, 1);
            if (null != smsResult){
                smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId());
            }
@@ -96,11 +93,8 @@
            request.setTemplateId(templateId);
            // 发送操作
            ComResult<SMSSendDataResult> resultComResult = SmsUtils.sendMsg(request);
            SmsResponseVO smsResponse = new SmsResponseVO();
            smsResponse.setCode(resultComResult.getCode().toString());
            smsResponse.setMsg(resultComResult.getMsg());
            // 记录发送记录操作
            SmsResult smsResult = smsService.saveSendResult(smsResponse,request, 1);
            SmsResult smsResult = smsService.saveSendResult(resultComResult.getCode().toString(),resultComResult.getMsg(),request, 1);
            if (null != smsResult){
                smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId());
            }
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java
@@ -44,11 +44,8 @@
        request.setUserNumber(userNumber);
        request.setTemplateId(templateId);
        request.setMessageContent(messageContent);
        SmsResponseVO smsResponse = new SmsResponseVO();
        smsResponse.setCode(code);
        smsResponse.setMsg(msg);
        // 记录发送记录操作
        SmsResult smsResult = smsService.saveSendResult(smsResponse,request, number);
        SmsResult smsResult = smsService.saveSendResult(code,msg,request, number);
        if (null != smsResult){
            smsService.saveSendRecord(request, code,msg,smsResult.getId());
        }
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java
@@ -38,12 +38,13 @@
    /**
     * 保存短信发送结果
     * @param smsResponse
     * @param code
     * @param msg
     * @param request
     * @param number
     * @return
     */
    SmsResult saveSendResult(SmsResponseVO smsResponse, SMSSendRequest request, Integer number);
    SmsResult saveSendResult(String code,String msg, SMSSendRequest request, Integer number);
    /**
     * 短信发送记录保存
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java
@@ -83,7 +83,7 @@
        List<ComResult<SMSSendDataResult>> list = new ArrayList<>();
        if (phoneNumbers.size()>0){
            // 先保存结果记录
            SmsResult smsResult = saveSendResult(null,request, phoneNumbers.size());
            SmsResult smsResult = saveSendResult(null,null,request, phoneNumbers.size());
            // 遍历发送
            for (String phone : phoneNumbers) {
                request.setUserNumber(phone);
@@ -112,7 +112,7 @@
        request.setTemplateId(smsTemplate.getTemplateId());
        List<List<String>> templateContent = smsRequestTemplate.getTemplateContent();
        // 先保存结果记录
        SmsResult smsResult = saveSendResult(null,request, templateContent.size());
        SmsResult smsResult = saveSendResult(null,null,request, templateContent.size());
        List<SmsRecord> smsRecordList = new ArrayList<>();
        // 遍历处理
        for (List<String> list : templateContent) {
@@ -145,7 +145,7 @@
                String format = String.format(s, list.toArray());
                // 设置内容
                request.setMessageContent(format);
                // 保存记录
                // 保存短信发送记录
                smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
                if (null != smsRecord){
                    alarmRecordDetail.setAlarmContent(format);
@@ -164,6 +164,129 @@
    }
    /**
     * 发送 具名 变量模板短信(告警定制)
     * @param smsRequestTemplate
     * @return
     */
//    @Override
//    public Map<String, Object> sendSignMsg(SmsRequestTemplate smsRequestTemplate) {
//        // 取出数据
//        SMSSendRequest request = new SMSSendRequest();
//        SmsTemplate smsTemplate = smsRequestTemplate.getSmsTemplate();
//        request.setTemplateId(smsTemplate.getTemplateId());
//        // 批量发送短信
//        Map<String, Object> map = batchSendAlertsSms(smsRequestTemplate.getSmsTemplate(), smsRequestTemplate.getTemplateContent());
//        int count = Integer.parseInt(map.get("errCount").toString());
//        ComResult<DynSMSSendDataResult> resultComResult =(ComResult<DynSMSSendDataResult>) map.get("resultComResult");
//        // 保存短信结果记录
//        SmsResult smsResult = saveSendResult(resultComResult.getCode().toString(),resultComResult.getMsg(),request, smsRequestTemplate.getTemplateContent().size()-count);
//        // 保存详情记录(短信详情,告警详情)
////        List<SmsRecord> smsRecordList = saveAlertsAndSmsDetail(smsResult,resultComResult,smsRequestTemplate.getSmsTemplate(), smsRequestTemplate.getTemplateContent(),request);
//        // 设置返回数据
//        Map<String, Object> params = new HashMap<>(2);
////        params.put("smsRecord",smsRecordList.size());
//        // 返回
//        return params;
//    }
    /**
     * 保存详情记录(短信详情,告警详情)
     * @param smsResult
     * @param resultComResult
     * @param smsTemplate
     * @param templateContent
     * @param request
     * @return
     */
    private List<SmsRecord> saveAlertsAndSmsDetail(SmsResult smsResult,
                                        ComResult<DynSMSSendDataResult> resultComResult,
                                        SmsTemplate smsTemplate,
                                        List<List<String>> templateContent,
                                        SMSSendRequest request) {
        List<SmsRecord> smsRecordList = new ArrayList<>();
        // 遍历处理
        for (List<String> list : templateContent) {
            AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail();
            alarmRecordDetail.setReservoirNumber(list.get(0));
            alarmRecordDetail.setAlarmRecordId(Long.parseLong(list.get(list.size() - 1)));
            alarmRecordDetail.setAlarmMode("短信");
            // 删除 最后一个 告警记录id
            list.remove(list.size() - 1);
            // 删除 0 水库编码
            list.remove(0);
            SmsRecord smsRecord = new SmsRecord();
            if (null != smsResult){
                alarmRecordDetail.setPhone(list.get(0));
                // 设置手机号
                request.setUserNumber(list.get(0));
                // 内容处理
                String s = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s");
                // 短信内容拼接(完成发送的结果信息)
                // 需要删除最前面的手机号
                list.remove(0);
                // 格式转换
                String format = String.format(s, list.toArray());
                // 设置内容
                request.setMessageContent(format);
                // 保存短信发送记录
                smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
                if (null != smsRecord){
                    alarmRecordDetail.setAlarmContent(format);
                    alarmRecordDetail.setSendRecordId(smsRecord.getId());
                    alarmRecordDetail.setCreateTime(new Date());
                    // 保存告警记录详情信息
                    boolean save = alarmRecordDetailService.save(alarmRecordDetail);
                }
            }
            smsRecordList.add(smsRecord);
        }
        // 返回
        return smsRecordList;
    }
    /**
     * 批量发送告警短信
     * @param smsTemplate
     * @param templateContent
     */
    private Map<String, Object> batchSendAlertsSms(SmsTemplate smsTemplate, List<List<String>> templateContent) {
        Map<String, Object> map = new HashMap<>(2);
        int count = 0;
        StringBuilder builder = new StringBuilder();
        // 拼接短信标题数组
        String [] titleArr = getSmsTitleArr(smsTemplate);
        // 遍历,拼接短信
        for (List<String> list : templateContent) {
            // 删除 最后一个 告警记录id
            list.remove(list.size() - 1);
            // 删除 0 水库编码
            list.remove(0);
            String join = String.join(",", list);
            // 转换,校验手机号码
            if (validator(list.get(0))){
                builder.append(join).append(";");
            }else {
                count++;
            }
        }
        String datas = builder.toString();
        String[] rows = datas.split(";");
        String[][] dyns = new String[rows.length + 1][titleArr.length];
        dyns[0] = titleArr;
        int rowNum = 1;
        for (String row : rows) {
            String[] cols = row.split(",");
            dyns[rowNum++] = cols;
        }
        //请求参数
        ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(smsTemplate.getTemplateId(), dyns);
        map.put("resultComResult",resultComResult);
        map.put("errCount",count);
        //返回
        return map;
    }
    /**
     * 保存站内信记录信息
     * @param smsRequestTemplate
     * @return
@@ -176,7 +299,7 @@
        request.setTemplateId(smsTemplate.getTemplateId());
        List<List<String>> templateContent = smsRequestTemplate.getTemplateContent();
        // 先保存结果记录
        SmsResult smsResult = saveSendResult(null,request, templateContent.size());
        SmsResult smsResult = saveSendResult(null,null,request, templateContent.size());
        List<SmsRecord> smsRecordList = new ArrayList<>();
        // 遍历处理
        for (List<String> list : templateContent) {
@@ -263,21 +386,19 @@
    /**
     * 发送记录保存
     * @param smsResponse 响应消息
     * @param code 响应消息cdoe
     * @param msg 响应消息
     * @param request 发送信息
     * @param number 号码个数
     */
    @Override
    public SmsResult saveSendResult(SmsResponseVO smsResponse, SMSSendRequest request, Integer number) {
    public SmsResult saveSendResult(String code,String msg, SMSSendRequest request, Integer number) {
        // 先保存结果表
        SmsResult smsResult = new SmsResult();
        smsResult.setTemplateId(request.getTemplateId());
        smsResult.setContent(request.getMessageContent());
        smsResult.setNumber(number);
        if (null!= smsResponse) {
            smsResult.setResCode(smsResponse.getCode());
            smsResult.setResMsg(smsResponse.getMsg());
        }
        smsResult.setResCode(code);
        smsResult.setResMsg(msg);
        //插入记录
        boolean save = smsResultService.save(smsResult);
        if (save){
@@ -361,10 +482,7 @@
                        dyns[rowNum++] = cols;
                    }
                    ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(templateId, dyns);
                    SmsResponseVO smsResponse = new SmsResponseVO();
                    smsResponse.setCode(resultComResult.getCode().toString());
                    smsResponse.setMsg(resultComResult.getMsg());
                    SmsResult smsResult = getSaveSmsResult(smsResponse,templateId, rows, "");
                    SmsResult smsResult = getSaveSmsResult(resultComResult.getCode().toString(),resultComResult.getMsg(),templateId, rows);
                    if (null != smsResult) {
                        List<SmsRecord> smsRecordList = new ArrayList<>();
                        Pattern compile = Pattern.compile("[^0-9]");
@@ -396,19 +514,17 @@
    /**
     * 保存短信发送结果
     * @param smsResponse
     * @param code
     * @param msg
     * @param templateId
     * @param rows
     * @param content
     * @return
     */
    private SmsResult getSaveSmsResult(SmsResponseVO smsResponse,String templateId, String[] rows, String content) {
    private SmsResult getSaveSmsResult(String code,String msg,String templateId, String[] rows) {
        SMSSendRequest request = new SMSSendRequest();
        request.setTemplateId(templateId);
        request.setMessageContent(content);
        request.setUserNumber("");
        // 先保存结果记录
        return saveSendResult(smsResponse,request, rows.length);
        return saveSendResult(code,msg,request, rows.length);
    }
    /**
@@ -519,7 +635,7 @@
        ComResult<DynSMSSendDataResult> resultComResult = (ComResult<DynSMSSendDataResult>)batchSendSmsMap.get("resultComResult");
        errPhones = (List<String>) batchSendSmsMap.get("errPhones");
        // 计算差值
        Integer diff = size - errPhones.size();
        Integer diff = personList.size() - errPhones.size();
        if (resultComResult.getCode()==0){
            String successMsg = "发送成功!共导入水库个数 "+ size +" 个,其中发送号码 "+ diff + " 个。";
            // 返回
@@ -572,12 +688,10 @@
            String[] cols = row.split(",");
            dyns[rowNum++] = cols;
        }
        //请求参数
        //请求发送短信
        ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(smsTemplate.getTemplateId(), dyns);
        SmsResponseVO smsResponse = new SmsResponseVO();
        smsResponse.setCode(resultComResult.getCode().toString());
        smsResponse.setMsg(resultComResult.getMsg());
        SmsResult smsResult = getSaveSmsResult(smsResponse,smsTemplate.getTemplateId(), rows, "");
        // 保存发送结果
        SmsResult smsResult = getSaveSmsResult(resultComResult.getCode().toString(),resultComResult.getMsg(),smsTemplate.getTemplateId(), rows);
        // 异步记录发送记录
        asyncService.batchSaveSendRecord(smsResult,rows,smsTemplate,resultComResult);
        // 返回
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/feign/AttResManagePersonClient.java
@@ -104,4 +104,15 @@
    public Set<String> getPersonListByWaterCodeList(List<String> list) {
        return attResManagePersonService.getPersonListByWaterCodeList(list);
    }
    /**
     * 根据水库编号查询市县水利部人员姓名及联系方式
     * @param res_cd 水库编号
     * @return
     */
    @Override
    @GetMapping(GET_CITY_COUNTY_PERSONG_LIST_BY_RES_GUID)
    public List<PersonVO> getCityCountyPersonListByResGuid(String res_cd) {
        return attResManagePersonService.getCityCountyPersonListByResGuid(res_cd);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java
@@ -2,6 +2,7 @@
import cn.gistack.sm.sjztmd.dto.AttResBaseUserDTO;
import cn.gistack.sm.sjztmd.entity.AttResBase;
import cn.gistack.sm.sjztmd.vo.AttResBaseVO;
import cn.gistack.sm.sjztmd.vo.ManagePersonVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -45,4 +46,10 @@
    Boolean updateResBaseByGuid(@Param("attResBase") AttResBase attResBase);
    /**
     * 查询当前水库对应的市级编号和县区编号
     * @param res_cd
     * @return
     */
    AttResBaseVO getCityCountyCodeByResGuid(@Param("guid") String res_cd);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml
@@ -132,4 +132,19 @@
        WHERE "guid" = #{attResBase.guid}
    </update>
    <!--查询当前水库对应的市级编号和县区编号-->
    <select id="getCityCountyCodeByResGuid" resultType="cn.gistack.sm.sjztmd.vo.AttResBaseVO">
        SELECT
            case when b."ad_grad" = 3 THEN b."ad_code"
                 when c."ad_grad" = 3 THEN c."ad_code" END AS countyCode,
            case when b."ad_grad" = 2 THEN b."ad_code"
                 when c."ad_grad" = 2 THEN c."ad_code"
                 ELSE d."ad_code" END AS cityCode
        FROM sjzt_md."att_res_base" a
        LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
        LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
        LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
        where a."guid" = #{guid}
    </select>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.java
@@ -50,4 +50,15 @@
     */
    @DS("zt")
    Set<String> getPersonListByWaterCodeList(@Param("list") List<String> list);
    /**
     * 根据水库编号查询市县水利部人员姓名及联系方式
     * @param res_cd 水库编号
     * @param roleAlias 角色别名
     * @param type 人员类型
     * @return
     */
    List<PersonVO> getCityCountyPersonListByResGuid(@Param("adCode") String res_cd,
                                                    @Param("roleAlias") String roleAlias,
                                                    @Param("type") String type);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.xml
@@ -174,4 +174,14 @@
        group by b."user_phone"
    </select>
    <!--根据水库编号查询市县水利部人员姓名及联系方式-->
    <select id="getCityCountyPersonListByResGuid" resultType="cn.gistack.sm.sjztmd.vo.PersonVO">
        select real_name as name,phone,#{type} as type from YWXT.blade_user bu
        left join YWXT.blade_dept bd on locate(bd.id,bu.dept_id)>0 and bd.is_deleted = 0
        left join YWXT.blade_role br on locate(br.id,bu.role_id)>0 and br.is_deleted = 0
        where bu.is_deleted = 0
        and br.role_alias = #{roleAlias}
        and bd.ad_code = #{adCode}
    </select>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java
@@ -4,6 +4,7 @@
import cn.gistack.sm.sjztmd.entity.AttAdBase;
import cn.gistack.sm.sjztmd.entity.AttResBase;
import cn.gistack.sm.sjztmd.vo.AttAdBaseVO;
import cn.gistack.sm.sjztmd.vo.AttResBaseVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -34,4 +35,11 @@
    Object getAttResBaseUserPage(IPage<AttResBaseUserDTO> page, Map<String, Object> params);
    Boolean updateResBaseByGuid(AttResBase attResBase);
    /**
     * 查询当前水库对应的市级编号和县区编号
     * @param res_cd
     * @return
     */
    AttResBaseVO getCityCountyCodeByResGuid(String res_cd);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResManagePersonService.java
@@ -62,4 +62,11 @@
     * @return
     */
    Set<String> getPersonListByWaterCodeList(List<String> list);
    /**
     * 根据水库编号查询市县水利部人员姓名及联系方式
     * @param res_cd 水库编号
     * @return
     */
    List<PersonVO> getCityCountyPersonListByResGuid(String res_cd);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java
@@ -5,6 +5,7 @@
import cn.gistack.sm.sjztmd.entity.AttResBase;
import cn.gistack.sm.sjztmd.mapper.AttResBaseMapper;
import cn.gistack.sm.sjztmd.service.IAttResBaseService;
import cn.gistack.sm.sjztmd.vo.AttResBaseVO;
import cn.gistack.sm.sjztmd.vo.ManagePersonVO;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -86,4 +87,14 @@
        attResBase.setUpdateTime(DateUtil.now());
        return baseMapper.updateResBaseByGuid(attResBase);
    }
    /**
     * 查询当前水库对应的市级编号和县区编号
     * @param res_cd
     * @return
     */
    @Override
    public AttResBaseVO getCityCountyCodeByResGuid(String res_cd) {
        return baseMapper.getCityCountyCodeByResGuid(res_cd);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResManagePersonServiceImpl.java
@@ -1,9 +1,12 @@
package cn.gistack.sm.sjztmd.service.impl;
import cn.gistack.sm.sjztmd.entity.AttResBase;
import cn.gistack.sm.sjztmd.entity.AttResManagePerson;
import cn.gistack.sm.sjztmd.entity.PatrolResponsiblePerson;
import cn.gistack.sm.sjztmd.mapper.AttResManagePersonMapper;
import cn.gistack.sm.sjztmd.service.IAttResBaseService;
import cn.gistack.sm.sjztmd.service.IAttResManagePersonService;
import cn.gistack.sm.sjztmd.vo.AttResBaseVO;
import cn.gistack.sm.sjztmd.vo.PersonVO;
import cn.gistack.sm.sjztmd.vo.UserPersonVO;
import cn.gistack.system.user.entity.User;
@@ -17,6 +20,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -33,6 +37,9 @@
    @Autowired
    private IUserClient userClient;
    @Autowired
    private IAttResBaseService attResBaseService;
    @Override
    public Boolean saveOrUpdateResManagePerson(AttResManagePerson attResManagePerson) {
@@ -138,4 +145,26 @@
    public Set<String> getPersonListByWaterCodeList(List<String> list) {
        return baseMapper.getPersonListByWaterCodeList(list);
    }
    /**
     * 根据水库编号查询市县水利部人员姓名及联系方式
     * @param res_cd 水库编号
     * @return
     */
    @Override
    public List<PersonVO> getCityCountyPersonListByResGuid(String res_cd) {
        List<PersonVO> personVOList = new ArrayList<>();
        // 查询当前水库对应的市级编号和县区编号
        AttResBaseVO attResBaseVO = attResBaseService.getCityCountyCodeByResGuid(res_cd);
        if (null!= attResBaseVO) {
            // 通过编号查询对应的人员
            List<PersonVO> cityPerson = baseMapper.getCityCountyPersonListByResGuid(attResBaseVO.getCityCode(), "sdglywuser", "市州水库管理业务人员");
            List<PersonVO> countyPerson = baseMapper.getCityCountyPersonListByResGuid(attResBaseVO.getCountyCode(), "qxglywuser", "区县水库管理业务人员");
            // 和
            personVOList.addAll(cityPerson);
            personVOList.addAll(countyPerson);
        }
        // 返回
        return personVOList;
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/AttResBaseVO.java
New file
@@ -0,0 +1,23 @@
package cn.gistack.sm.sjztmd.vo;
import lombok.Data;
import java.io.Serializable;
/**
 * 实体类
 *
 * @author Chill
 */
@Data
public class AttResBaseVO implements Serializable {
    /**
     * 市编号
     */
    private String cityCode;
    /**
     * 区县编号
     */
    private String countyCode;
}
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/AlarmXxlJob.java
@@ -4,8 +4,11 @@
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.log.XxlJobLogger;
import feign.Request;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
/**
 * 告警定时任务执行器
@@ -28,8 +31,7 @@
    public ReturnT<String> waterInfoNotHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("水位信息接收不到","","waterInfoNotHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("水位信息接收不到","","waterInfoNotHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -45,8 +47,7 @@
    public ReturnT<String> waterDataExcHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("水位数据异常","","waterDataExcHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("水位数据异常","","waterDataExcHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -62,8 +63,7 @@
    public ReturnT<String> waterLessDeadHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("水位超低于死水位","","waterLessDeadHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("水位超低于死水位","","waterLessDeadHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -79,8 +79,7 @@
    public ReturnT<String> waterMoreDeadLessHJHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("水位高于死水位,低于旱警水位","","waterMoreDeadLessHJHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("水位高于死水位,低于旱警水位","","waterMoreDeadLessHJHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -96,8 +95,7 @@
    public ReturnT<String> waterComeOverHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("水位接近汛限告警","","waterComeOverHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("水位接近汛限告警","","waterComeOverHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -109,12 +107,11 @@
     * @return
     * @throws Exception
     */
    @XxlJob("waterFirstOverHandle")
    @XxlJob("waterFirstOverHandle_test")
    public ReturnT<String> waterFirstOverHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("水位初次超汛限告警","","waterFirstOverHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("水位初次超汛限告警","","waterFirstOverHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -130,8 +127,7 @@
    public ReturnT<String> waterSmallScaleOverHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("水位小幅超汛限告警","","waterSmallScaleOverHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("水位小幅超汛限告警","","waterSmallScaleOverHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -147,8 +143,7 @@
    public ReturnT<String> waterBigScaleOverHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("水位大幅超汛限告警","","waterBigScaleOverHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("水位大幅超汛限告警","","waterBigScaleOverHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -164,8 +159,7 @@
    public ReturnT<String> waterComeDesignHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("水位接近设计洪水位告警","","waterComeDesignHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("水位接近设计洪水位告警","","waterComeDesignHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -181,8 +175,7 @@
    public ReturnT<String> waterMoreDesignHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("水位超设计洪水位告警","","waterMoreDesignHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("水位超设计洪水位告警","","waterMoreDesignHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -198,8 +191,7 @@
    public ReturnT<String> waterMoreCheckHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("水位超校核洪水位告警","","waterMoreCheckHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("水位超校核洪水位告警","","waterMoreCheckHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -215,8 +207,7 @@
    public ReturnT<String> waterComeOneHourUpHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("近1h水位陡升","","waterComeOneHourUpHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("近1h水位陡升","","waterComeOneHourUpHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -232,8 +223,7 @@
    public ReturnT<String> waterComeOneHourDownHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("近1h水位陡降","","waterComeOneHourDownHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("近1h水位陡降","","waterComeOneHourDownHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -249,8 +239,7 @@
    public ReturnT<String> rainstormHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("暴雨降雨预警","","rainstormHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("暴雨降雨预警","","rainstormHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -266,8 +255,7 @@
    public ReturnT<String> alreadyHeavyRainHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("已降大雨告警","","alreadyHeavyRainHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("已降大雨告警","","alreadyHeavyRainHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -283,8 +271,7 @@
    public ReturnT<String> alreadyRainstormHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("已降暴雨告警","","alreadyRainstormHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("已降暴雨告警","","alreadyRainstormHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -300,8 +287,7 @@
    public ReturnT<String> twoHourRainHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("2小时降雨告警","","twoHourRainHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("2小时降雨告警","","twoHourRainHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
@@ -317,8 +303,7 @@
    public ReturnT<String> sixHourRainHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        String result = noticeClient.createAlarmNoticeTaskJobHandler("6小时降雨告警","","sixHourRainHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        noticeClient.createAlarmNoticeTaskJobHandler("6小时降雨告警","","sixHourRainHandle");
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;