guoshilong
2024-04-15 b3ec16fd6d3c61814d55465ccd1c39d9fc49fff4
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java
@@ -695,6 +695,50 @@
      return null;
   }
   /**
    * 调用中台接口查询数据,返回结果不同处理
    *
    * @param params
    * @param url
    * @return
    */
   public JSONArray getZtDataV2(String params, String url) {
      // 获取环境
      String activeProfile = SpringContextUtil.getActiveProfile();
      if (activeProfile.equals("dev")) {
         url = ZtApiUrlConstant.url_prefix_dev + url;
      }
      if (activeProfile.equals("prod")) {
         url = ZtApiUrlConstant.url_prefix_prod + url;
      }
      if (activeProfile.equals("test")) {
         url = ZtApiUrlConstant.url_prefix_test + url;
      }
      //设置请求头
      HttpHeaders headers = new HttpHeaders();
      headers.add(ZtConfigConstant.header_key, ZtConfigConstant.header_value);
      //封装请求头
      HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers);
      try {
         //有请求头,有参数请求
         ResponseEntity<String> responseEntity =
            restTemplate.exchange(url + params,
               HttpMethod.GET,
               formEntity,
               String.class);
         JSONObject jsonObject = JSON.parseObject(responseEntity.getBody());
         JSONObject data = jsonObject.getJSONObject("data");
         // 返回
         return JSONArray.parseArray(data.get("data").toString());
      } catch (Exception e) {
         e.printStackTrace();
      }
      return null;
   }
   /**
    * 保存站内信记录信息
    *
@@ -841,6 +885,84 @@
   }
   /**
    * 保存站内信记录(水库合并)
    *
    * @param smsRequestTemplate
    * @param alarmRule
    * @return
    */
   public Map<String, Object> saveInStationInfoMergeVideo(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(2));
         temp.setCdNm(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((phone, temps) -> {
         MessageRecord messageRecord = new MessageRecord();
         messageRecord.setTheme(alarmRule.getRuleName());
         messageRecord.setSender(AuthUtil.getUserId().toString());
         messageRecord.setSource("智能告警");
         messageRecord.setStatus(0);
         messageRecord.setRecipient(phone);
         StringBuilder builder = new StringBuilder();
         Map<String, List<Temp>> resCollect = temps.stream().collect(Collectors.groupingBy(Temp::getReservoirCode));
         List<String> contentList = new ArrayList<>();
         resCollect.forEach((resCode, contentTemp) -> {
            List<String> cdNmList = new ArrayList<>();
            //凤凰水库(测点12170062992),大新众水库(测点12170063012、测点12170062998)
            //因为只能按编号分组,名称会有重复,所以拿第一条数据的名称就行
            String resName = contentTemp.get(0).getReservoirName();
            contentTemp.forEach(info -> {
               //把测站加进测站集合里
               cdNmList.add( info.getCdNm());
            });
            String cdNameListStr = String.join("、", cdNmList);
            contentList.add(StringUtil.format("{}({})", resName, cdNameListStr));
         });
         String contentListStr = String.join(",", contentList);
         //需要填充的数据
         List<String> fillList = new ArrayList<>();
         fillList.add(contentListStr);
         String sendContent = contentConvert(smsTemplate.getContent(), fillList);
         messageRecord.setContent(sendContent);
         messageRecordList.add(messageRecord);
      });
      // 保存告警记录详情信息
      if (smsRequestTemplate.getIsSendStation()) {
         saveMessageRecord(messageRecordList);
      }
      Map<String, Object> map = new HashMap<>(2);
      // 返回
      return map;
   }
   public Map<String, Object> saveInStationInfoMergeNoCd(SmsRequestTemplate smsRequestTemplate, AlarmRule alarmRule) {
      // 取出数据