zhongrj
2023-07-26 b4a52fbe7cabe2f49a8a57ec0d1a6ae2ac3b973c
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/AsyncNoticeHandle.java
@@ -25,21 +25,185 @@
   @Autowired
   private SmsService smsService;
   /**
    * 异步发送告警信息
    * 1.水位信息接收不到
    * @param alarmRule
    * @param templateId
    * @param uuid
    * @param adCode
    * @param isSendStation
    */
   @Async
   public void waterInfoNotHandle(AlarmRule alarmRule, String templateId, String uuid, String adCode,Boolean isSendStation) {
      // 调用中台服务接口查询数据
      JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.no_z_last_api_all);
      // 只发短信,将发短信信息组装好
      SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterInfoNotList,false,adCode,uuid);
      // 遍历
      for (List<String> list : smsRequestTemplate.getTemplateContent()) {
         // 保存告警记录信息
         AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list,alarmRule,uuid);
         if (null != alarmRecord) {
            list.add(alarmRecord.getId().toString());
         }
      }
      // 调用短信服务
      smsService.sendMergeSignMsg(smsRequestTemplate);
   }
   /**
    * 策略2: 水位数据异常
    * @param alarmRule
    * @param templateId
    * @param uuid
    * @param adCode
    * @param isSendStation
    */
   @Async
   public void waterDataExcHandle(AlarmRule alarmRule, String templateId, String uuid, String adCode, boolean isSendStation) {
      // 调用中台服务接口查询数据
      JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_z_not_normal_api);
      // 只发短信,将发短信信息组装好
      SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterDataExcList,false,adCode,uuid);
      // 遍历
      for (List<String> list : smsRequestTemplate.getTemplateContent()) {
         // 保存告警记录信息
         AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list,alarmRule,uuid);
         if (null != alarmRecord) {
            list.add(alarmRecord.getId().toString());
         }
      }
      // 调用短信服务
      smsService.sendMergeSignMsg(smsRequestTemplate);
   }
   /**
    * 3.水位超低于死水位
    * @param templateId
    * @param uuid
    * @param alarmRule
    * @param adCode
    * @param isSendStation
    */
   @Async
   public Map<String, Object> waterLessDeadHandle(String templateId, String uuid, AlarmRule alarmRule, String adCode, boolean isSendStation) {
      Map<String, Object> map = new HashMap<>();
      // 调用中台服务接口查询数据
      JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_diff_dead_z_api);
      // 只发送站内信
      SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true,adCode,uuid);
      // 拼接内容后面的联系方式,当前模板县水利部人员姓名电话
      if (smsRequestTemplate.getPersonVOList().size()>0) {
         // 遍历,拼接县水利部人员电话
         for (List<String> list : smsRequestTemplate.getTemplateContent()) {
            // 后面依次拼接市县水利部门人员姓名电话
            // 拼接市县水利部人员姓名及联系方式
            noticeHandle.addCityCountyBusinessPersonInfo(list);
            // 保存告警记录信息
            AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list,alarmRule,uuid);
            if (null != alarmRecord) {
               list.add(alarmRecord.getId().toString());
            }
         }
         // 调用短信服务
         map = smsService.sendSignMsg(smsRequestTemplate);
         // 返回
         return map;
      }
      return map;
   }
   /**
    * 5.水位接近汛限告警
    * @param templateId
    * @param uuid
    * @param alarmRule
    * @param adCode
    */
   @Async
   public void waterComeOverHandle(String templateId, String uuid, AlarmRule alarmRule, String adCode) {
      // 调用中台服务接口查询数据
      JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_diff_dead_z_api);
      // 只发送站内信
      SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true,null,uuid);
      // 拼接内容后面的联系方式,当前模板县水利部人员姓名电话
      if (smsRequestTemplate.getPersonVOList().size()>0) {
         // 遍历,拼接县水利部人员电话
         for (List<String> list : smsRequestTemplate.getTemplateContent()) {
            // 后面依次拼接 巡查责任人姓名,技术责任人姓名,市县水利部门人员姓名电话(暂时不要)
            noticeHandle.addPatrolTechnologyInfo(list);
            // 市县水利部门人员姓名电话(暂时不要)
//            list.add("测试:13112341234");
            // 保存告警记录信息
//         AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list,alarmRule,uuid);
//         if (null != alarmRecord) {
//            list.add(alarmRecord.getId().toString());
            list.add("999");
//         }
         }
      }
      // 保存站内信记录信息
      noticeHandle.saveInStationInfo(smsRequestTemplate,alarmRule);
   }
   /**
    * 6.水位初次超汛限告警 处理
    * @param templateId
    * @param uuid
    * @param alarmRule
    * @param adCode
    * @param isSendStation 是否发送站内信
    * @return
    */
   @Async
   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,uuid);
      smsRequestTemplate.setIsSendStation(isSendStation);
      // 拼接后面内容
      if (smsRequestTemplate.getPersonVOList().size()>0) {
         for (List<String> list : smsRequestTemplate.getTemplateContent()) {
            // 依次拼接巡查责任人,技术责任人姓名
            noticeHandle.addPatrolTechnologyInfo(list);
            // 拼接市县水利部人员姓名及联系方式
            noticeHandle.addCityCountyBusinessPersonInfo(list);
            // 保存告警记录信息
            AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list,alarmRule,uuid);
            if (null != alarmRecord) {
               list.add(alarmRecord.getId().toString());
            }
         }
         // 调用短信服务
         map = smsService.sendSignMsg(smsRequestTemplate);
         return map;
      }
      return map;
   }
   /**
    * 10.水位超设计洪水位告警处理
    * @param templateId
    * @param uuid
    * @param alarmRule
    * @return
    */
   @Async
   public Map<String, Object> handleAlarmInfo(String templateId, String uuid, AlarmRule alarmRule) {
   public Map<String, Object> waterMoreDesignHandle(String templateId, String uuid, AlarmRule alarmRule) {
      Map<String, Object> map = new HashMap<>();
      // 调用中台服务接口查询数据
      JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.over_des_rz_warn_api);
      // 只发短信,将发短信信息组装好
      SmsRequestTemplate smsRequestTemplate
         = noticeHandle.getSendSmsTemplate(ztData, templateId, alarmRule, ZtApiDataColumnConstant.waterMoreDesignList, true, null);
         = noticeHandle.getSendSmsTemplate(ztData, templateId, alarmRule, ZtApiDataColumnConstant.waterMoreDesignList, true, null,uuid);
      // 拼接后面内容
      if (smsRequestTemplate.getPersonVOList().size() > 0) {
         for (List<String> list : smsRequestTemplate.getTemplateContent()) {