From 87204491aac135822f96f3fff297ddca400ea8c9 Mon Sep 17 00:00:00 2001
From: tangzy <tangzy123456>
Date: Wed, 20 Oct 2021 15:09:32 +0800
Subject: [PATCH] 1.山洪
---
src/main/java/org/springblade/modules/rsvr/controller/RsvrRController.java | 221 ++++++++++++++++++++++++++++++++-----------------------
1 files changed, 128 insertions(+), 93 deletions(-)
diff --git a/src/main/java/org/springblade/modules/rsvr/controller/RsvrRController.java b/src/main/java/org/springblade/modules/rsvr/controller/RsvrRController.java
index f47aa96..6c4a99d 100644
--- a/src/main/java/org/springblade/modules/rsvr/controller/RsvrRController.java
+++ b/src/main/java/org/springblade/modules/rsvr/controller/RsvrRController.java
@@ -172,8 +172,6 @@
edmd = e2;
}
}
- //水库水情预警信息
- List<Map<String, Object>> map = rsvrRService.selectyjck(egmd, edmd, beginTime, endTime);
String s = rsvrRService.selectCode(beginTime, endTime);
String[] split = s.split(",");
String strArrays = "";
@@ -181,6 +179,8 @@
strArrays += "'" + split[i] + "',";
}
String code = strArrays.substring(0, strArrays.length() - 1);
+ //水库水情预警信息
+ List<Map<String, Object>> map = rsvrRService.selectyjck(egmd, edmd, beginTime, endTime);
List<Map<String, Object>> sel = rsvrRService.sel(egmd, edmd, code);
map.addAll(sel);
//用来判断是否重复统计超警信息
@@ -228,7 +228,8 @@
BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
double INQ = inq.doubleValue();
//DecimalFormat df = new DecimalFormat("#0.000");
- texta += "入库流量" + INQ + "立方米每秒、";
+ String vc = formatSignificantDigit(INQ);
+ texta += "入库流量" + vc + "立方米每秒、";
}
if (map.get(i).get("W") == null) {
texta += "蓄水量暂无数据、";
@@ -243,7 +244,8 @@
BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
double OTQ = otq.doubleValue();
//DecimalFormat df = new DecimalFormat("#0.000");
- texta += "出库流量" + OTQ + "立方米每秒;";
+ String vc = formatSignificantDigit(OTQ);
+ texta += "出库流量" + vc + "立方米每秒;";
}
}
if (stnm.equals("廖坊")) {
@@ -260,7 +262,8 @@
BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
double INQ = inq.doubleValue();
//DecimalFormat df = new DecimalFormat("#0.000");
- texth += "入库流量" + INQ + "立方米每秒、";
+ String vc = formatSignificantDigit(INQ);
+ texth += "入库流量" + vc + "立方米每秒、";
}
if (map.get(i).get("W") == null) {
texth += "蓄水量暂无数据、";
@@ -275,7 +278,8 @@
BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
double OTQ = otq.doubleValue();
//DecimalFormat df = new DecimalFormat("#0.000");
- texth += "出库流量" + OTQ + "立方米每秒。";
+ String vc = formatSignificantDigit(OTQ);
+ texth += "出库流量" + vc + "立方米每秒。";
}
}
alist.add(map.get(i));
@@ -295,7 +299,8 @@
BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
double INQ = inq.doubleValue();
//DecimalFormat df = new DecimalFormat("#0.000");
- texta += "入库流量" + INQ + "立方米每秒、";
+ String vc = formatSignificantDigit(INQ);
+ texta += "入库流量" + vc + "立方米每秒、";
}
if (map.get(i).get("W") == null) {
texta += "蓄水量暂无数据、";
@@ -310,7 +315,8 @@
BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
double OTQ = otq.doubleValue();
//DecimalFormat df = new DecimalFormat("#0.000");
- texta += "出库流量" + OTQ + "立方米每秒;";
+ String vc = formatSignificantDigit(OTQ);
+ texta += "出库流量" + vc + "立方米每秒;";
}
}
if (stnm.equals("廖坊")) {
@@ -321,7 +327,8 @@
BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
double INQ = inq.doubleValue();
//DecimalFormat df = new DecimalFormat("#0.000");
- texth += "入库流量" + INQ + "立方米每秒、";
+ String vc = formatSignificantDigit(INQ);
+ texth += "入库流量" + vc + "立方米每秒、";
}
if (map.get(i).get("W") == null) {
texth += "蓄水量暂无数据、";
@@ -336,7 +343,8 @@
BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
double OTQ = otq.doubleValue();
//DecimalFormat df = new DecimalFormat("#0.000");
- texth += "出库流量" + OTQ + "立方米每秒。";
+ String vc = formatSignificantDigit(OTQ);
+ texth += "出库流量" + vc + "立方米每秒。";
}
}
alist.add(map.get(i));
@@ -362,7 +370,8 @@
BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
double INQ = inq.doubleValue();
//DecimalFormat df = new DecimalFormat("#0.000");
- texta += "入库流量" + INQ + "立方米每秒、";
+ String vc = formatSignificantDigit(INQ);
+ texta += "入库流量" + vc + "立方米每秒、";
}
if (map.get(i).get("W") == null) {
texta += "蓄水量暂无数据、";
@@ -377,7 +386,8 @@
BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
double OTQ = otq.doubleValue();
//DecimalFormat df = new DecimalFormat("#0.000");
- texta += "出库流量" + OTQ + "立方米每秒;";
+ String vc = formatSignificantDigit(OTQ);
+ texta += "出库流量" + vc + "立方米每秒;";
}
}
if (stnm.equals("廖坊")) {
@@ -388,7 +398,8 @@
BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
double INQ = inq.doubleValue();
//DecimalFormat df = new DecimalFormat("#0.000");
- texth += "入库流量" + INQ + "立方米每秒、";
+ String vc = formatSignificantDigit(INQ);
+ texth += "入库流量" + vc + "立方米每秒、";
}
if (map.get(i).get("W") == null) {
texth += "蓄水量暂无数据、";
@@ -403,7 +414,8 @@
BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
double OTQ = otq.doubleValue();
//DecimalFormat df = new DecimalFormat("#0");
- texth += "出库流量" + OTQ + "立方米每秒。";
+ String vc = formatSignificantDigit(OTQ);
+ texth += "出库流量" + vc + "立方米每秒。";
}
}
}
@@ -416,80 +428,46 @@
} else {
text += "有" + number + "个水库站预警;" + texta + texth;
}
- //水库涨幅,跌幅信息
- List<Map<String, Object>> selecthds = rsvrRService.selectsk(beginTime, endTime);
+// //水库涨幅,跌幅信息
+ //List<Map<String, Object>> selecthds = rsvrRService.selectsk(beginTime, endTime);
Map m1 = new HashMap();
Map m2 = new HashMap();
Map m = new HashMap();
- for (int j = 0; j < selecthds.size(); j++) {
- String stcd = selecthds.get(j).get("STCD").toString();
- //站点名称
- String stnm = selecthds.get(j).get("STNM").toString();
- if (selecthds.get(j).get("ADDVNM") == null) {
- continue;
- }
- //省,市
- String addvcd5 = selecthds.get(j).get("ADDVNM").toString();
- //最大值
- BigDecimal maxZ = (BigDecimal) selecthds.get(j).get("maxZ");
- //最大值出现时间
- String maxTM = selecthds.get(j).get("maxTM").toString();
- //最小值
- BigDecimal minZ = (BigDecimal) selecthds.get(j).get("minZ");
- //最小值出现时间
- String minTM = selecthds.get(j).get("minTM").toString();
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date sd1 = df.parse(maxTM);
- Date sd2 = df.parse(minTM);
- double v = maxZ.doubleValue();
- double v1 = minZ.doubleValue();
- //涨幅值
- double v2 = v - v1;
- double v3 = (double) Math.round(v2 * 100) / 100;
- m1.put(v3, stnm.replaceAll(" ", "") + "站");
- c.put(stcd, v3);
- //获取涨幅最大的信息
- }
- if (m1.size() != 0) {
- Object maxKey = getMaxKey(m1);
- String s1 = m1.get(maxKey).toString();
- text += " 涨幅最大的是:" + s1 + "(涨" + maxKey + "米)。";
- }
-// //如果最大时间大于最小时间就是涨幅
-// if (sd1.after(sd2)) {
-// //创建一个map集合保存涨幅数据
-// double v = maxZ.doubleValue();
-// double v1 = minZ.doubleValue();
-// //涨幅值
-// double v2 = v - v1;
-// double v3 = (double) Math.round(v2 * 100) / 100;
-// m1.put(v3, stnm.replaceAll(" ", "") + "站");
-// c.put(stcd, v3);
+// for (int j = 0; j < selecthds.size(); j++) {
+// String stcd = selecthds.get(j).get("STCD").toString();
+// //站点名称
+// String stnm = selecthds.get(j).get("STNM").toString();
+// if (selecthds.get(j).get("ADDVNM") == null) {
+// continue;
// }
-// //跌幅
-// else {
-// //创建一个map集合保存跌幅数据
-// double v = maxZ.doubleValue();
-// double v1 = minZ.doubleValue();
-// //涨幅值
-// double v2 = v1 - v;
-// double v3 = (double) Math.round(v2 * 100) / 100;
-// m2.put(Math.abs(v3), stnm.replaceAll(" ", "") + "站");
-// c.put(stcd, v3);
-// }
-// }
-// if (m1.size()!=0) {
+// //省,市
+// String addvcd5 = selecthds.get(j).get("ADDVNM").toString();
+// //最大值
+// BigDecimal maxZ = (BigDecimal) selecthds.get(j).get("maxZ");
+// //最大值出现时间
+// String maxTM = selecthds.get(j).get("maxTM").toString();
+// //最小值
+// BigDecimal minZ = (BigDecimal) selecthds.get(j).get("minZ");
+// //最小值出现时间
+// String minTM = selecthds.get(j).get("minTM").toString();
+// SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+// Date sd1 = df.parse(maxTM);
+// Date sd2 = df.parse(minTM);
+// double v = maxZ.doubleValue();
+// double v1 = minZ.doubleValue();
+// //涨幅值
+// double v2 = v - v1;
+// double v3 = (double) Math.round(v2 * 100) / 100;
+// m1.put(v3, stnm.replaceAll(" ", "") + "站");
+// c.put(stcd, v3);
// //获取涨幅最大的信息
+// }
+// if (m1.size() != 0) {
// Object maxKey = getMaxKey(m1);
// String s1 = m1.get(maxKey).toString();
// text += " 涨幅最大的是:" + s1 + "(涨" + maxKey + "米)。";
// }
-// if (m2.size()!=0) {
-// //获取跌幅最大的信息
-// Object maxKey2 = getMaxKey(m2);
-// String s2 = m2.get(maxKey2).toString();
-// text += " 跌幅最大的是:" + s2 + "(跌" + maxKey2 + "米)。";
-// }
+
m.put("text", text);
m.put("number", number);
m.put("Yjlist", ylist);
@@ -508,6 +486,15 @@
int ws = 1;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = df.format(new Date());
+ Date date = null;
+ // 把Date按照格式转换成字符串
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ try {
+ date = sdf.parse(time);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ String dateEnd = sdf.format(date);
SimpleDateFormat dfz = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
String timez = dfz.format(new Date());
String yearc = time.substring(0, 4);
@@ -570,7 +557,7 @@
}
}
//水库水情预警信息
- List<Map<String, Object>> map = rsvrRService.selectyjcks(egmd, edmd, timec, timez);
+ List<Map<String, Object>> map = rsvrRService.selectyjcks(egmd, edmd, timec, timez,time,dateEnd);
//用来判断是否重复统计超警信息
Map mnum = new HashMap();
//定义list保存预警信息
@@ -588,7 +575,7 @@
RZ = rz.doubleValue();
String stcd = map.get(i).get("STCD").toString();
String ti = map.get(i).get("TM").toString();
- Map<String, Object> stringObjectMap = rsvrRService.selectRZ(stcd, timec);
+ //Map<String, Object> stringObjectMap = rsvrRService.selectRZ(stcd, timec);
//BigDecimal zc = (BigDecimal) stringObjectMap.get("RZ");
BigDecimal zc = (BigDecimal) map.get(i).get("RZS");
double ZC = zc.doubleValue();
@@ -618,7 +605,8 @@
} else {
BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
double INQ = inq.doubleValue();
- texta += "入库流量" + INQ + "立方米每秒、";
+ String vc = formatSignificantDigit(INQ);
+ texta += "入库流量" + vc + "立方米每秒、";
}
if (map.get(i).get("W") == null) {
texta += "蓄水量暂无数据、";
@@ -632,7 +620,8 @@
} else {
BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
double OTQ = otq.doubleValue();
- texta += "出库流量" + OTQ + "立方米每秒;";
+ String vc = formatSignificantDigit(OTQ);
+ texta += "出库流量" + vc + "立方米每秒;";
}
// texta += "汛限水位暂无数据;";
} else if (stnm.equals("廖坊")) {
@@ -652,7 +641,8 @@
} else {
BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
double INQ = inq.doubleValue();
- texth += "入库流量" + INQ + "立方米每秒、";
+ String vc = formatSignificantDigit(INQ);
+ texth += "入库流量" + vc + "立方米每秒、";
}
if (map.get(i).get("W") == null) {
texth += "蓄水量暂无数据、";
@@ -666,7 +656,8 @@
} else {
BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
double OTQ = otq.doubleValue();
- texth += "出库流量" + OTQ + "立方米每秒。";
+ String vc = formatSignificantDigit(OTQ);
+ texth += "出库流量" + vc + "立方米每秒。";
}
}
blist.add(map.get(i));
@@ -697,7 +688,8 @@
} else {
BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
double INQ = inq.doubleValue();
- texta += "入库流量" + INQ + "立方米每秒、";
+ String vc = formatSignificantDigit(INQ);
+ texta += "入库流量" + vc + "立方米每秒、";
}
if (map.get(i).get("W") == null) {
texta += "蓄水量暂无数据、";
@@ -711,7 +703,8 @@
} else {
BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
double OTQ = otq.doubleValue();
- texta += "出库流量" + OTQ + "立方米每秒;";
+ String vc = formatSignificantDigit(OTQ);
+ texta += "出库流量" + vc + "立方米每秒;";
}
// texta += "汛限水位暂无数据;";
} else if (stnm.equals("廖坊")) {
@@ -731,7 +724,8 @@
} else {
BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
double INQ = inq.doubleValue();
- texth += "入库流量" + INQ + "立方米每秒、";
+ String vc = formatSignificantDigit(INQ);
+ texth += "入库流量" + vc + "立方米每秒、";
}
if (map.get(i).get("W") == null) {
texth += "蓄水量暂无数据、";
@@ -745,7 +739,8 @@
} else {
BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
double OTQ = otq.doubleValue();
- texth += "出库流量" + OTQ + "立方米每秒。";
+ String vc = formatSignificantDigit(OTQ);
+ texth += "出库流量" + vc + "立方米每秒。";
}
}
blist.add(map.get(i));
@@ -781,7 +776,8 @@
} else {
BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
double INQ = inq.doubleValue();
- texta += "入库流量" + INQ + "立方米每秒、";
+ String vc = formatSignificantDigit(INQ);
+ texta += "入库流量" + vc + "立方米每秒、";
}
if (map.get(i).get("W") == null) {
texta += "蓄水量暂无数据、";
@@ -795,7 +791,8 @@
} else {
BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
double OTQ = otq.doubleValue();
- texta += "出库流量" + OTQ + "立方米每秒;";
+ String vc = formatSignificantDigit(OTQ);
+ texta += "出库流量" + vc + "立方米每秒;";
}
// texta += "汛限水位暂无数据;";
} else if (stnm.equals("廖坊")) {
@@ -815,7 +812,8 @@
} else {
BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
double INQ = inq.doubleValue();
- texth += "入库流量" + INQ + "立方米每秒、";
+ String vc = formatSignificantDigit(INQ);
+ texth += "入库流量" + vc + "立方米每秒、";
}
if (map.get(i).get("W") == null) {
texth += "蓄水量暂无数据、";
@@ -829,7 +827,8 @@
} else {
BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
double OTQ = otq.doubleValue();
- texth += "出库流量" + OTQ + "立方米每秒。";
+ String vc = formatSignificantDigit(OTQ);
+ texth += "出库流量" + vc + "立方米每秒。";
}
}
}
@@ -1045,5 +1044,41 @@
return R.data(lists);
}
+ public static int magnitude(Double price){
+ if (price == 0.0) {return 0;}
+ int fac;
+ Long i;
+ Long k = 10L;
+ if (price > 1) {
+ i = price.longValue();
+ fac = 0;
+ while (i / k != 0L) {
+ fac++;
+ k *= 10;
+ }
+ } else {
+ fac = -1;
+ while (price * k < 1) {
+ fac--;
+ k *= 10;
+ }
+ }
+ return fac;
+ }
+ /**
+ * 数字格式化 - 最少保留{num}位有效数字 - 保留 {min}~{max} 为小数 - format02
+ */
+ public static String formatSignificantDigit(Double price) {
+ int min = 2;
+ int max= 8;
+ int num = 3;
+ boolean sign = false;
+ Double rate = 1.0;
+ Double value = price * rate;
+ int level = magnitude(Math.abs(value));
+ int count = Math.max(min, Math.min(max, num - level - 1));
+ return String.format("%"+(sign?"+": "")+"."+count + "f", value);
+ }
+
}
--
Gitblit v1.9.3