From 45bcbb7dbde7d448dc0f2b20baac0bac3de930a4 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 17 Dec 2024 09:13:14 +0800
Subject: [PATCH] 增加发送打印信息
---
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/OpenApiServiceImpl.java | 237 +++++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 180 insertions(+), 57 deletions(-)
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/OpenApiServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/OpenApiServiceImpl.java
index c290bf4..a3f6be3 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/OpenApiServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/service/impl/OpenApiServiceImpl.java
@@ -14,6 +14,7 @@
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
+import org.apache.logging.log4j.util.Strings;
import org.springblade.core.redis.cache.BladeRedis;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
@@ -25,6 +26,8 @@
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* 南科院水库预警算法api调用服务接口
@@ -110,30 +113,36 @@
// 获取当前时间
LocalDateTime now = LocalDateTime.now();
// 减去一个小时
- LocalDateTime oneHourAgo = now.minusHours(1);
+ LocalDateTime oneHourAgo = now.minusHours(8);
// 格式化时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
String oneHour = oneHourAgo.format(formatter) + ":00";
String nowHour = now.format(formatter) + ":00";
+
// 调用中台接口获取实时测点数据
JSONArray ztData = getZtData("",
- ZtConfigConstant.url_prefix + DamEnum.ofType(type).getApiUrl() + "?tm_list=" + "'" + oneHour + "'," + "'" + nowHour + "'");
+ ZtConfigConstant.url_prefix + DamEnum.ofType(type).getApiUrl() + "?start_tm=" + oneHour + "&end_tm=" + nowHour + "");
// 解析数据
for (int i = 0; i < ztData.size(); i++) {
JSONObject jsonObject = ztData.getJSONObject(i);
Map<String,Object> map = new HashMap<>();
- map.put("batchId",UUID.randomUUID());
- map.put("serialNo",getSerialNo());
// 水库信息设置
- waterInfoSet(jsonObject, map);
- // 测点信息设置
- pointValueInfoSet(jsonObject,map, DamEnum.ofType(type).getName());
- // 发送请求
-// String response = sendPostJsonRequest(OpenApiConstant.POINT_VALUE_INLET_URL, map);
-// JSONObject parseObject = JSON.parseObject(response);
-// Integer status = parseObject.getInteger("status");
-// flag = status==200?true:false;
- log.info("测点输入结果:" + flag);
+ flag = waterInfoSet(jsonObject, map);
+ if (flag) {
+ // 测点信息设置
+ flag = pointValueInfoSet(jsonObject, map, type,flag);
+ }
+ if (flag) {
+ map.put("batchId",UUID.randomUUID());
+ map.put("serialNo",getSerialNo());
+ log.info("发送数据:{}",map);
+ // 发送请求
+ String response = sendPostJsonRequest(OpenApiConstant.POINT_VALUE_INLET_URL, map);
+ JSONObject parseObject = JSON.parseObject(response);
+ Integer status = parseObject.getInteger("status");
+ flag = status==200?true:false;
+ log.info("测点输入结果:" + flag);
+ }
}
}
@@ -142,40 +151,98 @@
* @param jsonObject
* @param map
*/
- private void waterInfoSet(JSONObject jsonObject, Map<String, Object> map) {
- List<Map<String,Object>> waterLevelInfoList = new ArrayList<>();
+ private boolean waterInfoSet(JSONObject jsonObject, Map<String, Object> map) {
+ String rz = jsonObject.getString("rz");
+ if(Strings.isBlank(rz)){
+ return false;
+ }
+ // 需要过滤2022高标准水库才发送
+ String res_cd = replaceSpecialStr(jsonObject.getString("res_cd"));
+ String flag = openApiMapper.getResInfoBy2022(res_cd);
+ if (Strings.isBlank(flag)){
+ return false;
+ }
+ List<Map<String, Object>> waterLevelInfoList = new ArrayList<>();
Map<String, Object> waterLevelInfoMap = new HashMap<>();
- waterLevelInfoMap.put("damCode",jsonObject.getString("res_cd"));
- waterLevelInfoMap.put("waterLevel",jsonObject.getString("res_cd"));
- waterLevelInfoMap.put("waterLevelTime",jsonObject.getString("res_cd"));
- waterLevelInfoMap.put("rainCondition",jsonObject.getString("res_cd"));
- waterLevelInfoMap.put("rainConditionTime",jsonObject.getString("res_cd"));
+ waterLevelInfoMap.put("damCode", res_cd);
+ waterLevelInfoMap.put("waterLevel", jsonObject.getString("rz"));
+ waterLevelInfoMap.put("waterLevelTime", jsonObject.getString("rz_tm"));
+ waterLevelInfoMap.put("rainCondition", jsonObject.getString("drp"));
+ waterLevelInfoMap.put("rainConditionTime", jsonObject.getString("drp_tm"));
waterLevelInfoList.add(waterLevelInfoMap);
- map.put("waterLevelInfo",waterLevelInfoList);
+ map.put("waterLevelInfo", waterLevelInfoList);
+ return true;
}
/**
* 测点信息设置
* @param map
*/
- private void pointValueInfoSet(JSONObject jsonObject,Map<String, Object> map,String type) {
+ private boolean pointValueInfoSet(JSONObject jsonObject,Map<String, Object> map,String type,boolean flag) {
+ flag = false;
+ int num = 0;
List<Map<String,Object>> pointValueInfoList = new ArrayList<>();
JSONArray childArray = jsonObject.getJSONArray("child");
//遍历处理
for (int i = 0; i < childArray.size(); i++) {
JSONObject childArrayJSONObject = childArray.getJSONObject(i);
- String pointCodeTemp = jsonObject.getString("res_cd") + "_"
- + childArrayJSONObject.getString("cd")
- + "_" + type;
- Map<String, Object> pointValueInfoMap = new HashMap<>();
- pointValueInfoMap.put("damCode",jsonObject.getString("res_cd"));
- pointValueInfoMap.put("pointCode",pointCodeTemp);
- pointValueInfoMap.put("type",type);
- pointValueInfoMap.put("value",childArrayJSONObject.getString("sy_val"));
- pointValueInfoMap.put("time",childArrayJSONObject.getString("tm"));
- pointValueInfoList.add(pointValueInfoMap);
+ String sy_val = childArrayJSONObject.getString("sy_val");
+ // type 为3 时为位移,位移返回数据格式不一致
+ if (type.equals("3")){
+ // 获取-位移_z 垂直 du是数值位移(垂直),de向东位移(上下游),dn向北位移(左右岸)
+ String du = childArrayJSONObject.getString("du");
+ String de = childArrayJSONObject.getString("de");
+ String dn = childArrayJSONObject.getString("dn");
+ if (!Strings.isBlank(du)){
+ num = setPointValue(jsonObject, DamEnum.ofType("5").getName(), num, pointValueInfoList, childArrayJSONObject, du);
+ }
+ if (!Strings.isBlank(dn)){
+ num = setPointValue(jsonObject, DamEnum.ofType("4").getName(), num, pointValueInfoList, childArrayJSONObject, dn);
+ }
+ if (!Strings.isBlank(de)){
+ num = setPointValue(jsonObject, DamEnum.ofType("3").getName(), num, pointValueInfoList, childArrayJSONObject, de);
+ }
+ }else {
+ // 有测点值才加入
+ if (!Strings.isBlank(sy_val)) {
+ // 设置测点信息
+ num = setPointValue(jsonObject, DamEnum.ofType(type).getName(), num, pointValueInfoList, childArrayJSONObject, sy_val);
+ }
+ }
}
- map.put("pointValueInfo",pointValueInfoList);
+ // 只要有一个测点值设置
+ if (num>0) {
+ flag = true;
+ map.put("pointValueInfo", pointValueInfoList);
+ }
+ return flag;
+ }
+
+ /**
+ * 设置测点数据
+ * @param jsonObject
+ * @param type
+ * @param num
+ * @param pointValueInfoList
+ * @param childArrayJSONObject
+ * @param sy_val
+ * @return
+ */
+ private int setPointValue(JSONObject jsonObject, String type, int num, List<Map<String, Object>> pointValueInfoList, JSONObject childArrayJSONObject, String sy_val) {
+ num++;
+ String res_cd = replaceSpecialStr(jsonObject.getString("res_cd"));
+ // 测点编码:水库GUID+测点编码+类型
+ String pointCodeTemp = res_cd + "_"
+ + childArrayJSONObject.getString("cd")
+ + "_" + type;
+ Map<String, Object> pointValueInfoMap = new HashMap<>();
+ pointValueInfoMap.put("damCode", res_cd);
+ pointValueInfoMap.put("pointCode", pointCodeTemp);
+ pointValueInfoMap.put("type", type);
+ pointValueInfoMap.put("value", sy_val);
+ pointValueInfoMap.put("time", childArrayJSONObject.getString("tm"));
+ pointValueInfoList.add(pointValueInfoMap);
+ return num;
}
/**
@@ -210,6 +277,7 @@
* @return
*/
public JSONArray getZtData(String params, String url) {
+ log.info("实时测点请求中台接口:{}",url);
//设置请求头
HttpHeaders headers = new HttpHeaders();
headers.add(ZtConfigConstant.header_key, ZtConfigConstant.header_value);
@@ -223,6 +291,7 @@
formEntity,
String.class);
JSONObject jsonObject = JSON.parseObject(responseEntity.getBody());
+ log.info("实时测点请求中台接口结果数据:{}",jsonObject);
// 返回
return JSONArray.parseArray(jsonObject.get("data").toString());
} catch (Exception e) {
@@ -246,21 +315,58 @@
for (int i = 0; i < dataJsonArray.size(); i++) {
DamAlarmRecord damAlarmRecord = new DamAlarmRecord();
JSONObject alarmRecordJSONObject = dataJsonArray.getJSONObject(i);
- damAlarmRecord.setPointId(alarmRecordJSONObject.getString("pointId"));
+ // 设置测点信息,类型、测点编号
+ setPointInfo(damAlarmRecord,alarmRecordJSONObject.getString("pointId"));
+ // 设置其他信息
damAlarmRecord.setResGuid(alarmRecordJSONObject.getString("RS_CODE"));
damAlarmRecord.setCollecTime(alarmRecordJSONObject.getDate("collecTime"));
damAlarmRecord.setPointValue(alarmRecordJSONObject.getString("ponitValue"));
- JSONObject generalInfo = alarmRecordJSONObject.getJSONObject("generalInfo");
- damAlarmRecord.setPointWarnLevel(generalInfo.getInteger("pointWarnLevel"));
- damAlarmRecord.setPointWarnInfo(generalInfo.getString("pointWarnInfo"));
damAlarmRecord.setCreateTime(new Date());
- // 保存
+ // 获取回调类型:1:告警规则法 2: 预测法 3:待补充
+ Integer callbackType = alarmRecordJSONObject.getInteger("callbackType");
+ damAlarmRecord.setCallbackType(callbackType);
+ if (callbackType==1){
+ JSONObject generalInfo = alarmRecordJSONObject.getJSONObject("generalInfo");
+ damAlarmRecord.setPointWarnLevel(generalInfo.getInteger("pointWarnLevel"));
+ damAlarmRecord.setPointWarnInfo(generalInfo.getString("pointWarnInfo"));
+ }
+ if (callbackType==2){
+ damAlarmRecord.setValue(alarmRecordJSONObject.getString("value"));
+ damAlarmRecord.setTimeValue(alarmRecordJSONObject.getString("timeValue"));
+ }
+ // 保存详情,预测没有详情
flag = damAlarmRecordService.save(damAlarmRecord);
- if (flag){
+ if (callbackType==1 && flag){
flag = saveDamAlarmRecordDetail(alarmRecordJSONObject.getJSONArray("detailInfo"),damAlarmRecord);
}
}
return flag;
+ }
+
+ /**
+ * 设置测点信息
+ * @param pointId
+ */
+ private void setPointInfo(DamAlarmRecord damAlarmRecord,String pointId) {
+ damAlarmRecord.setPointId(pointId);
+ // 测点值解析赋值
+ String[] point = pointId.split("_");
+ // 渗压、渗流
+ if (point.length==3) {
+ // 设置测点id
+ damAlarmRecord.setStationId(point[1]);
+ String typeName = point[2];
+ // 设置 大坝安全监测类型
+ damAlarmRecord.setType(Integer.parseInt(DamEnum.ofName(typeName).getKey()));
+ }
+ // 位移
+ if (point.length==4) {
+ // 设置测点id
+ damAlarmRecord.setStationId(point[1]);
+ String typeName = point[2] + "_" + point[3];
+ // 设置 大坝安全监测类型
+ damAlarmRecord.setType(Integer.parseInt(DamEnum.ofName(typeName).getKey()));
+ }
}
/**
@@ -271,25 +377,42 @@
@Transactional(rollbackFor = Exception.class)
public boolean saveDamAlarmRecordDetail(JSONArray detailInfo,DamAlarmRecord damAlarmRecord) {
boolean flag = false;
- List<DamAlarmRecordDetail> list = new ArrayList<>();
- for (int i = 0; i < detailInfo.size(); i++) {
- DamAlarmRecordDetail damAlarmRecordDetail = new DamAlarmRecordDetail();
- JSONObject jsonObject = detailInfo.getJSONObject(i);
- damAlarmRecordDetail.setDamAlarmRecordId(damAlarmRecord.getId());
- damAlarmRecordDetail.setAlgorithmName(jsonObject.getString("algorithmName"));
- damAlarmRecordDetail.setAlgorithmWarnLevel(jsonObject.getInteger("algorithmWarnLevel"));
- damAlarmRecordDetail.setAlgorithmWarnInfo(jsonObject.getString("algorithmWarnInfo"));
- damAlarmRecordDetail.setAlgorithmWarnExplain(jsonObject.getString("algorithmWarnExplain"));
- damAlarmRecordDetail.setCreateTime(new Date());
- // 加入集合
- list.add(damAlarmRecordDetail);
- }
- // 保存
- if (list.size()>0) {
- flag = damAlarmRecordDetailService.saveBatch(list);
- }else {
- flag = true;
+ if (null!=detailInfo) {
+ List<DamAlarmRecordDetail> list = new ArrayList<>();
+ for (int i = 0; i < detailInfo.size(); i++) {
+ DamAlarmRecordDetail damAlarmRecordDetail = new DamAlarmRecordDetail();
+ JSONObject jsonObject = detailInfo.getJSONObject(i);
+ damAlarmRecordDetail.setDamAlarmRecordId(damAlarmRecord.getId());
+ damAlarmRecordDetail.setAlgorithmName(jsonObject.getString("algorithmName"));
+ damAlarmRecordDetail.setAlgorithmWarnLevel(jsonObject.getInteger("algorithmWarnLevel"));
+ damAlarmRecordDetail.setAlgorithmWarnInfo(jsonObject.getString("algorithmWarnInfo"));
+ damAlarmRecordDetail.setAlgorithmWarnExplain(jsonObject.getString("algorithmWarnExplain"));
+ damAlarmRecordDetail.setCreateTime(new Date());
+ // 加入集合
+ list.add(damAlarmRecordDetail);
+ }
+ // 保存
+ if (list.size() > 0) {
+ flag = damAlarmRecordDetailService.saveBatch(list);
+ } else {
+ flag = true;
+ }
}
return flag;
}
+
+ /**
+ * 去除字符串中的空格、回车、换行符、制表符等
+ * @param str
+ * @return
+ */
+ public static String replaceSpecialStr(String str) {
+ String repl = "";
+ if (str!=null) {
+ Pattern p = Pattern.compile("\\s*|\t|\r|\n");
+ Matcher m = p.matcher(str);
+ repl = m.replaceAll("");
+ }
+ return repl;
+ }
}
--
Gitblit v1.9.3