diff --git a/src/main/java/org/springnewfiber/dataadapter/xf/controller/MonitorDataController.java b/src/main/java/org/springnewfiber/dataadapter/xf/controller/MonitorDataController.java index 39f2b87..0ffaaa5 100644 --- a/src/main/java/org/springnewfiber/dataadapter/xf/controller/MonitorDataController.java +++ b/src/main/java/org/springnewfiber/dataadapter/xf/controller/MonitorDataController.java @@ -1,6 +1,8 @@ package org.springnewfiber.dataadapter.xf.controller; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Maps; @@ -24,6 +26,7 @@ import org.springnewfiber.dataadapter.xf.enums.EDataAccessType; import org.springnewfiber.dataadapter.xf.service.DataAccessRecordService; +import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; @@ -72,6 +75,10 @@ DTO = JSONObject.parseArray(data, MonitorLakeData.class); } else if (xfDataEnum == XfDataEnum.Meteorological) { DTO = JSONObject.parseArray(data, MonitorMeteorologicalData.class); + // 整点数据 特殊处理 这个整点减去上个整点。。算出p1 + DTO.forEach(i -> { + checkSetQxzP1((MonitorMeteorologicalData) i); + }); } else if (xfDataEnum == XfDataEnum.PptnData) { DTO = JSONObject.parseArray(data, MonitorPptnData.class); DTO.forEach(i -> { @@ -118,6 +125,56 @@ } } + private boolean checkDateTT(MonitorMeteorologicalData data) { + Date tt = data.getTm(); + String mmssDateStr = DateUtil.format(tt, "mmss"); + if (StrUtil.equalsIgnoreCase("0000", mmssDateStr)) { + return true; + } + return false; + } + + /** + * 气象站内存计算一小时降雨量 + * + * @param data + */ + private void checkSetQxzP1(MonitorMeteorologicalData data) { + if (!checkDateTT(data)) { + return; + } + String st = data.getStcd(); + MonitorMeteorologicalData old; + Date tm = data.getTm(); + data.setP1(BigDecimal.ZERO); + if (redis.exists(st) && (old = redis.get(st)) != null && tm.compareTo(old.getTm()) > 0) { + if (DateUtil.offsetHour(old.getTm(), 1).compareTo(tm) == 0) { + BigDecimal p1=data.getPresum().subtract(old.getPresum()); + if(p1.compareTo(BigDecimal.ZERO)>-1){ + data.setP1(p1); + } + } + redis.set(data.getStcd(), data); + } else if (!redis.exists(st)) { + redis.set(data.getStcd(), data); + } + } + + public static void main(String[] args) { + String dateStr = "2022-08-30 09:00:01"; + Date tt = DateUtil.parse(dateStr); + String dateStr1 = "2022-08-30 10:00:00"; + Date ttup1 = DateUtil.parse(dateStr1); +// String mmssDateStr = DateUtil.format(tt, "mmss"); +// if (StrUtil.equalsIgnoreCase("0000", mmssDateStr)) { +// System.err.println(dateStr); +// } else { +// System.out.println(dateStr); +// } + Date tt1 = DateUtil.offsetHour(tt, 1); + System.out.println(ttup1.compareTo(tt1)); + } + private void checkSet(MonitorPptnData pptnData) { String st = pptnData.getStcd(); Date tm = pptnData.getTm(); @@ -176,6 +233,7 @@ model = RealTimeSerializer.xfObjectToRealMap(DTO); } else if (xfDataEnum == XfDataEnum.Meteorological) { MonitorMeteorologicalData DTO = JSONObject.parseObject(data, MonitorMeteorologicalData.class); + checkSetQxzP1(DTO); model = RealTimeSerializer.xfObjectToRealMap(DTO); } else if (xfDataEnum == XfDataEnum.PptnData) { MonitorPptnData DTO = JSONObject.parseObject(data, MonitorPptnData.class); diff --git a/src/main/java/org/springnewfiber/dataadapter/xf/controller/MonitorDataController.java b/src/main/java/org/springnewfiber/dataadapter/xf/controller/MonitorDataController.java index 39f2b87..0ffaaa5 100644 --- a/src/main/java/org/springnewfiber/dataadapter/xf/controller/MonitorDataController.java +++ b/src/main/java/org/springnewfiber/dataadapter/xf/controller/MonitorDataController.java @@ -1,6 +1,8 @@ package org.springnewfiber.dataadapter.xf.controller; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Maps; @@ -24,6 +26,7 @@ import org.springnewfiber.dataadapter.xf.enums.EDataAccessType; import org.springnewfiber.dataadapter.xf.service.DataAccessRecordService; +import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; @@ -72,6 +75,10 @@ DTO = JSONObject.parseArray(data, MonitorLakeData.class); } else if (xfDataEnum == XfDataEnum.Meteorological) { DTO = JSONObject.parseArray(data, MonitorMeteorologicalData.class); + // 整点数据 特殊处理 这个整点减去上个整点。。算出p1 + DTO.forEach(i -> { + checkSetQxzP1((MonitorMeteorologicalData) i); + }); } else if (xfDataEnum == XfDataEnum.PptnData) { DTO = JSONObject.parseArray(data, MonitorPptnData.class); DTO.forEach(i -> { @@ -118,6 +125,56 @@ } } + private boolean checkDateTT(MonitorMeteorologicalData data) { + Date tt = data.getTm(); + String mmssDateStr = DateUtil.format(tt, "mmss"); + if (StrUtil.equalsIgnoreCase("0000", mmssDateStr)) { + return true; + } + return false; + } + + /** + * 气象站内存计算一小时降雨量 + * + * @param data + */ + private void checkSetQxzP1(MonitorMeteorologicalData data) { + if (!checkDateTT(data)) { + return; + } + String st = data.getStcd(); + MonitorMeteorologicalData old; + Date tm = data.getTm(); + data.setP1(BigDecimal.ZERO); + if (redis.exists(st) && (old = redis.get(st)) != null && tm.compareTo(old.getTm()) > 0) { + if (DateUtil.offsetHour(old.getTm(), 1).compareTo(tm) == 0) { + BigDecimal p1=data.getPresum().subtract(old.getPresum()); + if(p1.compareTo(BigDecimal.ZERO)>-1){ + data.setP1(p1); + } + } + redis.set(data.getStcd(), data); + } else if (!redis.exists(st)) { + redis.set(data.getStcd(), data); + } + } + + public static void main(String[] args) { + String dateStr = "2022-08-30 09:00:01"; + Date tt = DateUtil.parse(dateStr); + String dateStr1 = "2022-08-30 10:00:00"; + Date ttup1 = DateUtil.parse(dateStr1); +// String mmssDateStr = DateUtil.format(tt, "mmss"); +// if (StrUtil.equalsIgnoreCase("0000", mmssDateStr)) { +// System.err.println(dateStr); +// } else { +// System.out.println(dateStr); +// } + Date tt1 = DateUtil.offsetHour(tt, 1); + System.out.println(ttup1.compareTo(tt1)); + } + private void checkSet(MonitorPptnData pptnData) { String st = pptnData.getStcd(); Date tm = pptnData.getTm(); @@ -176,6 +233,7 @@ model = RealTimeSerializer.xfObjectToRealMap(DTO); } else if (xfDataEnum == XfDataEnum.Meteorological) { MonitorMeteorologicalData DTO = JSONObject.parseObject(data, MonitorMeteorologicalData.class); + checkSetQxzP1(DTO); model = RealTimeSerializer.xfObjectToRealMap(DTO); } else if (xfDataEnum == XfDataEnum.PptnData) { MonitorPptnData DTO = JSONObject.parseObject(data, MonitorPptnData.class); diff --git a/src/main/java/org/springnewfiber/dataadapter/xf/entity/MonitorMeteorologicalData.java b/src/main/java/org/springnewfiber/dataadapter/xf/entity/MonitorMeteorologicalData.java index 24f9831..75a6009 100644 --- a/src/main/java/org/springnewfiber/dataadapter/xf/entity/MonitorMeteorologicalData.java +++ b/src/main/java/org/springnewfiber/dataadapter/xf/entity/MonitorMeteorologicalData.java @@ -55,4 +55,7 @@ @JsonProperty(value ="us") @ApiModelProperty(value = "风速m/s") private BigDecimal windSpeed; + @JsonProperty(value ="drp") + @ApiModelProperty(value = "1小时降雨量") //内存计算小时降雨量 + private BigDecimal p1; }