tangzy
2021-11-09 39caebba35fc84824f5cd51d189fe322d5145803
src/main/java/org/springblade/modules/rsvr/controller/RsvrRController.java
@@ -121,7 +121,13 @@
   @PostMapping("/selectsk")
   public R selectyjck(String beginTime, String endTime) throws ParseException {
      String substring = beginTime.substring(0, 10);
      String r = beginTime.substring(11, 13);
      String t = beginTime.substring(11, 13);
      String r;
      if (t.substring(0, 1).equals("0")) {
         r = beginTime.substring(12, 13);
      } else {
         r = beginTime.substring(11, 13);
      }
      //截取月日
      String[] strs = substring.split("-");
      //月
@@ -129,7 +135,13 @@
      //日
      String day = strs[2].toString();
      String substrings = endTime.substring(0, 10);
      String rs = endTime.substring(11, 13);
      String ts = endTime.substring(11, 13);
      String rs;
      if (ts.substring(0, 1).equals("0")) {
         rs = endTime.substring(12, 13);
      } else {
         rs = endTime.substring(11, 13);
      }
      //截取月日
      String[] strss = substrings.split("-");
      //月
@@ -138,6 +150,1120 @@
      String days = strss[2].toString();
      //定义短信内容头
      String text = year + "月" + day + "日" + r + "时-" + years + "月" + days + "日" + rs + "时:";
      String texta = "";
      String texth = "";
      //定义统计数量
      int number = 0;
      String mouz = year + day;
      Integer mou = Integer.parseInt(mouz);
      String egmd = "";
      String edmd = "";
      int type;
      List<Map<String, Object>> selectfx = rsvrRService.selectfx();
      String b = (String) selectfx.get(0).get("BGMD");
      String e = (String) selectfx.get(0).get("EDMD");
      String b2 = (String) selectfx.get(1).get("BGMD");
      String e2 = (String) selectfx.get(1).get("EDMD");
      int bs = Integer.parseInt(b.trim());
      int es = Integer.parseInt(e.trim());
      int b2s = Integer.parseInt(b2.trim());
      int e2s = Integer.parseInt(e2.trim());
      if (mou >= bs && mou <= es) {
         egmd = b;
         edmd = e;
      } else if (mou >= b2s && mou <= e2s) {
         egmd = b2;
         edmd = e2;
      } else {
         String mous = "0901";
         int m = Integer.parseInt(mous);
         if (m >= bs && m <= es) {
            egmd = b;
            edmd = e;
         } else if (m >= b2s && m <= e2s) {
            egmd = b2;
            edmd = e2;
         }
      }
      String s = rsvrRService.selectCode();
      String[] split = s.split(",");
      String strArrays = "";
      for (int i = 0; i < split.length; i++) {
         strArrays += "'" + split[i] + "',";
      }
      String code = strArrays.substring(0, strArrays.length() - 1);
      List<Map<String, Object>> map = null;
      //判断时间是否相等
      if (beginTime.equals(endTime)) {
         //相
         map = rsvrRService.selectyjcd(egmd, edmd, beginTime, endTime, code);
      } else {
         //水库水情预警信息
         long cx = System.currentTimeMillis();//获取当前系统时间(毫秒)
         map = rsvrRService.selectyjck(egmd, edmd, beginTime, endTime, code);
         System.out.print("程序执行时间为1:");
         System.out.println(System.currentTimeMillis() - cx + "毫秒");
         long cxx = System.currentTimeMillis();//获取当前系统时间(毫秒)
      }
      List<Map<String, Object>> sel = rsvrRService.sel(egmd, edmd, code);
      map.addAll(sel);
      //用来判断是否重复统计超警信息
      Map mnum = new HashMap();
      Map mnums = new HashMap();
      Map c = new HashMap();
      Map m1 = new HashMap();
      //定义list保存预警信息
      List ylist = new ArrayList();
      //定义list保存未预警信息
      List alist = new ArrayList();
      List list = new ArrayList();
      double count = 0.0;
      double RZ = 0.0;
      //查询数据为空
      if (map.size() == 0) {
         Map m = new HashMap();
         text += "暂无水库超警信息。$$$$$洪门水库&&&&&库水位暂无数据、入库流量暂无数据、蓄水量暂无数据、出库流量暂无数据;$$$$$廖坊水库&&&&&库水位暂无数据、入库流量暂无数据、蓄水量暂无数据、出库流量暂无数据。";
         m.put("text", text);
         m.put("number", number);
         m.put("Yjlist", ylist);
         m.put("list", alist);
         list.add(m);
      } else {
         for (int i = 0; i < map.size(); i++) {
            BigDecimal ws = (BigDecimal) map.get(i).get("W");
            //实时水库水位值
            BigDecimal rz = (BigDecimal) map.get(i).get("RZ");
            RZ = rz.doubleValue();
            String stcd = map.get(i).get("STCD").toString();
            //站点名称
            String stnms = map.get(i).get("STNM").toString();
            double v = 0.0;
            double v1 = 0.0;
            if ("".equals(map.get(i).get("maxZ")) || null == map.get(i).get("maxZ")) {
               v = 0.0;
            } else {
               BigDecimal maxZ = (BigDecimal) map.get(i).get("maxZ");
               v = maxZ.doubleValue();
            }
            if ("".equals(map.get(i).get("minZ")) || null == map.get(i).get("minZ")) {
               v1 = 0.0;
            } else {
               BigDecimal minZ = (BigDecimal) map.get(i).get("minZ");
               v1 = minZ.doubleValue();
            }
            //涨幅值
            double v2 = v - v1;
            double v4 = (double) Math.round(v2 * 100) / 100;
            m1.put(v4, stnms.replaceAll(" ", "") + "站");
            c.put(stcd, v4);
            if (mnums.containsKey(map.get(i).get("STCD").toString()) == true) {
            } else {
               count += ws.doubleValue();
               mnums.put(map.get(i).get("STCD").toString(), i);
               if (map.get(i).get("FSLTDZ") == null || RZ == 0) {
                  String addvcd5 = map.get(i).get("ADDVNM").toString();
                  //站点名称
                  String stnm = map.get(i).get("STNM").toString();
                  if (stnm.equals("洪门")) {
                     texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&:";
                     if (RZ == 0) {
                        texta += "库水位暂无数据、";
                     } else {
                        DecimalFormat df = new DecimalFormat("#0.00");
                        texta += "库水位" + df.format(RZ) + "米、";
                     }
                     if (map.get(i).get("INQ") == null) {
                        texta += "入库流量暂无数据、";
                     } else {
                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                        double INQ = inq.doubleValue();
                        double v3 = roundToSignificantFigures(INQ, 3);
                        String a = String.valueOf(v3);
                        String s1 = subZeroAndDot(a);
                        texta += "入库流量" + s1 + "立方米每秒、";
                     }
                     if (map.get(i).get("W") == null) {
                        texta += "蓄水量暂无数据、";
                     } else {
                        BigDecimal w = (BigDecimal) map.get(i).get("W");
                        double W = w.doubleValue();
                        DecimalFormat df = new DecimalFormat("#0.00");
                        texta += "蓄水量" + df.format(W) + "百万立方米、";
                     }
                     if (map.get(i).get("OTQ") == null) {
                        texta += "出库流量暂无数据;";
                     } else {
                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                        double OTQ = otq.doubleValue();
                        double v3 = roundToSignificantFigures(OTQ, 3);
                        String a = String.valueOf(v3);
                        String s1 = subZeroAndDot(a);
                        texta += "出库流量" + s1 + "立方米每秒;";
                     }
                  }
                  if (stnm.equals("廖坊")) {
                     texth += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&:";
                     if (RZ == 0) {
                        texth += "库水位暂无数据、";
                     } else {
                        DecimalFormat df = new DecimalFormat("#0.00");
                        texth += "库水位" + df.format(RZ) + "米、";
                     }
                     if (map.get(i).get("INQ") == null) {
                        texth += "入库流量暂无数据、";
                     } else {
                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                        double INQ = inq.doubleValue();
                        double v3 = roundToSignificantFigures(INQ, 3);
                        String a = String.valueOf(v3);
                        String s1 = subZeroAndDot(a);
                        texth += "入库流量" + s1 + "立方米每秒、";
                     }
                     if (map.get(i).get("W") == null) {
                        texth += "蓄水量暂无数据、";
                     } else {
                        BigDecimal w = (BigDecimal) map.get(i).get("W");
                        double W = w.doubleValue();
                        DecimalFormat df = new DecimalFormat("#0.00");
                        texth += "蓄水量" + df.format(W) + "百万立方米、";
                     }
                     if (map.get(i).get("OTQ") == null) {
                        texth += "出库流量暂无数据。";
                     } else {
                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                        double OTQ = otq.doubleValue();
                        double v3 = roundToSignificantFigures(OTQ, 3);
                        String a = String.valueOf(v3);
                        String s1 = subZeroAndDot(a);
                        texth += "出库流量" + s1 + "立方米每秒。";
                     }
                  }
                  alist.add(map.get(i));
                  continue;
               }
               BigDecimal fsltdz = (BigDecimal) map.get(i).get("FSLTDZ");
               double FSLTDZ = fsltdz.doubleValue();
               if (RZ <= FSLTDZ) {
                  String addvcd5 = map.get(i).get("ADDVNM").toString();
                  //站点名称
                  String stnm = map.get(i).get("STNM").toString();
                  if (stnm.equals("洪门")) {
                     texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&:" + "库水位" + RZ + "米、";
                     if (map.get(i).get("INQ") == null) {
                        texta += "入库流量暂无数据、";
                     } else {
                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                        double INQ = inq.doubleValue();
                        double v3 = roundToSignificantFigures(INQ, 3);
                        String a = String.valueOf(v3);
                        String s1 = subZeroAndDot(a);
                        texta += "入库流量" + s1 + "立方米每秒、";
                     }
                     if (map.get(i).get("W") == null) {
                        texta += "蓄水量暂无数据、";
                     } else {
                        BigDecimal w = (BigDecimal) map.get(i).get("W");
                        double W = w.doubleValue();
                        DecimalFormat df = new DecimalFormat("#0.00");
                        texta += "蓄水量" + df.format(W) + "百万立方米、";
                     }
                     if (map.get(i).get("OTQ") == null) {
                        texta += "出库流量暂无数据;";
                     } else {
                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                        double OTQ = otq.doubleValue();
                        double v3 = roundToSignificantFigures(OTQ, 3);
                        String a = String.valueOf(v3);
                        String s1 = subZeroAndDot(a);
                        texta += "出库流量" + s1 + "立方米每秒;";
                     }
                  }
                  if (stnm.equals("廖坊")) {
                     texth += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&:" + "库水位" + RZ + "米、";
                     if (map.get(i).get("INQ") == null) {
                        texth += "入库流量暂无数据、";
                     } else {
                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                        double INQ = inq.doubleValue();
                        double v3 = roundToSignificantFigures(INQ, 3);
                        String a = String.valueOf(v3);
                        String s1 = subZeroAndDot(a);
                        texth += "入库流量" + s1 + "立方米每秒、";
                     }
                     if (map.get(i).get("W") == null) {
                        texth += "蓄水量暂无数据、";
                     } else {
                        BigDecimal w = (BigDecimal) map.get(i).get("W");
                        double W = w.doubleValue();
                        DecimalFormat df = new DecimalFormat("#0.00");
                        texth += "蓄水量" + df.format(W) + "百万立方米、";
                     }
                     if (map.get(i).get("OTQ") == null) {
                        texth += "出库流量暂无数据。";
                     } else {
                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                        double OTQ = otq.doubleValue();
                        double v3 = roundToSignificantFigures(OTQ, 3);
                        String a = String.valueOf(v3);
                        String s1 = subZeroAndDot(a);
                        texth += "出库流量" + s1 + "立方米每秒。";
                     }
                  }
                  alist.add(map.get(i));
               } else {
                  //如果map集合保存了站点则不重复统计数量
                  if (mnum.containsKey(map.get(i).get("STCD").toString()) == true) {
                  } else {
                     count += ws.doubleValue();
                     ylist.add(map.get(i));
                     mnum.put(map.get(i).get("STCD").toString(), i);
                     number++;
                     //超出警戒水位多少
                     Double num = RZ - FSLTDZ;
                     double v3 = (double) Math.round(num * 100) / 100;
                     //县,市
                     String addvcd5 = map.get(i).get("ADDVNM").toString();
                     //站点名称
                     String stnm = map.get(i).get("STNM").toString();
                     if (stnm.equals("洪门")) {
                        texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&:超出水位" + v3 + "米、" + "库水位" + RZ + "米、";
                        if (map.get(i).get("INQ") == null) {
                           texta += "入库流量暂无数据、";
                        } else {
                           BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                           double INQ = inq.doubleValue();
                           double v5 = roundToSignificantFigures(INQ, 3);
                           String a = String.valueOf(v5);
                           String s1 = subZeroAndDot(a);
                           texta += "入库流量" + s1 + "立方米每秒、";
                        }
                        if (map.get(i).get("W") == null) {
                           texta += "蓄水量暂无数据、";
                        } else {
                           BigDecimal w = (BigDecimal) map.get(i).get("W");
                           double W = w.doubleValue();
                           DecimalFormat df = new DecimalFormat("#0.00");
                           texta += "蓄水量" + df.format(W) + "百万立方米、";
                        }
                        if (map.get(i).get("OTQ") == null) {
                           texta += "出库流量暂无数据;";
                        } else {
                           BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                           double OTQ = otq.doubleValue();
                           double v5 = roundToSignificantFigures(OTQ, 3);
                           String a = String.valueOf(v5);
                           String s1 = subZeroAndDot(a);
                           texta += "出库流量" + s1 + "立方米每秒;";
                        }
                     }
                     if (stnm.equals("廖坊")) {
                        texth += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&:超出水位" + v3 + "米、" + "库水位" + RZ + "米、";
                        if (map.get(i).get("INQ") == null) {
                           texth += "入库流量暂无数据、";
                        } else {
                           BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                           double INQ = inq.doubleValue();
                           double v5 = roundToSignificantFigures(INQ, 3);
                           String a = String.valueOf(v5);
                           String s1 = subZeroAndDot(a);
                           texth += "入库流量" + s1 + "立方米每秒、";
                        }
                        if (map.get(i).get("W") == null) {
                           texth += "蓄水量暂无数据、";
                        } else {
                           BigDecimal w = (BigDecimal) map.get(i).get("W");
                           double W = w.doubleValue();
                           DecimalFormat df = new DecimalFormat("#0.00");
                           texth += "蓄水量" + df.format(W) + "百万立方米、";
                        }
                        if (map.get(i).get("OTQ") == null) {
                           texth += "出库流量暂无数据。";
                        } else {
                           BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                           double OTQ = otq.doubleValue();
                           double v5 = roundToSignificantFigures(OTQ, 3);
                           String a = String.valueOf(v5);
                           String s1 = subZeroAndDot(a);
                           texth += "出库流量" + s1 + "立方米每秒。";
                        }
                     }
                  }
               }
            }
         }
         DecimalFormat df = new DecimalFormat("#0.00");
         text += "全市蓄水量" + df.format(count) + "百万立方米。";
         if (number == 0) {
            text += texta + texth;
         } else {
            text += "有" + number + "个水库站预警;" + texta + texth;
         }
//         //水库涨幅,跌幅信息
         //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 (beginTime.equals(endTime)) {
         }
         else {
            if (m1.size() != 0) {
               Object maxKey = getMaxKey(m1);
               String s1 = m1.get(maxKey).toString();
               text += " 涨幅最大的是:" + s1 + "(涨" + maxKey + "米)。";
            }
         }
         m.put("text", text);
         m.put("number", number);
         m.put("Yjlist", ylist);
         m.put("list", alist);
         m.put("clist", c);
         list.add(m);
      }
      return R.data(list);
   }
//   /**
//    * 水库水情最新信息
//    */
//   @PostMapping("/selectyjcks")
//   public R selectyjcks() throws ParseException {
//      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);
//      int years = Integer.parseInt(yearc);
//      String monthc = time.substring(5, 7);
//      int months = Integer.parseInt(monthc);
//      String dayc = time.substring(8, 10);
//      int days = Integer.parseInt(dayc);
//      int da = days - ws;
//      String hss = time.substring(11, 13);
//      int hs = Integer.parseInt(hss);
//      //前一天8时
//      String timec = years + "-" + months + "-" + da + " 08:00:00";
//      //前24小时
//      Calendar calendar6 = Calendar.getInstance();
//      calendar6.set(Calendar.HOUR_OF_DAY, calendar6.get(Calendar.HOUR_OF_DAY) - 24);
//      String dateBegin24 = df.format(calendar6.getTime());
//
//      String substring = time.substring(0, 10);
//      //截取月日
//      String[] strs = substring.split("-");
//      //月
//      String year = strs[1].toString();
//      //日
//      String day = strs[2].toString();
//      //定义短信内容头
//      String text = year + "月" + day + "日" + hs + "时";
//      String texta = "";
//      String texth = "";
//      //定义统计数量
//      int number = 0;
//      String mouz = year + day;
//      Integer mou = Integer.parseInt(mouz);
//      String egmd = "";
//      String edmd = "";
//      List<Map<String, Object>> selectfx = rsvrRService.selectfx();
//      String b = (String) selectfx.get(0).get("BGMD");
//      String e = (String) selectfx.get(0).get("EDMD");
//      String b2 = (String) selectfx.get(1).get("BGMD");
//      String e2 = (String) selectfx.get(1).get("EDMD");
//      int bs = Integer.parseInt(b.trim());
//      int es = Integer.parseInt(e.trim());
//      int b2s = Integer.parseInt(b2.trim());
//      int e2s = Integer.parseInt(e2.trim());
//      if (mou >= bs && mou <= es) {
//         egmd = b;
//         edmd = e;
//      } else if (mou >= b2s && mou <= e2s) {
//         egmd = b2;
//         edmd = e2;
//      } else {
//         String mous = "0901";
//         int m = Integer.parseInt(mous);
//         if (m >= bs && m <= es) {
//            egmd = b;
//            edmd = e;
//         } else if (m >= b2s && m <= e2s) {
//            egmd = b2;
//            edmd = e2;
//         }
//      }
//      //水库水情预警信息
//      List<Map<String, Object>> map = rsvrRService.selectyjcks(egmd, edmd, timec, timez, time, dateEnd);
//      //用来判断是否重复统计超警信息
//      Map mnum = new HashMap();
//      //定义list保存预警信息
//      List alist = new ArrayList();
//      List blist = new ArrayList();
//      double RZ = 0.0;
//      double count = 0.0;
//      double v = 0.0;
//      //定义list保存未预警信息
//      //查询数据为空
//      if (map.size() == 0) {
//         text += "暂无水库超汛限。$$$$$洪门水库&&&&&库水位暂无数据、入库流量暂无数据、蓄水量暂无数据、出库流量暂无数据;$$$$$廖坊水库&&&&&库水位暂无数据、入库流量暂无数据、蓄水量暂无数据、出库流量暂无数据。";
//      } else {
//         for (int i = 0; i < map.size(); i++) {
//            BigDecimal wss = (BigDecimal) map.get(i).get("W");
//            count += wss.doubleValue();
//            BigDecimal rz = (BigDecimal) map.get(i).get("RZ");
//            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);
//            //BigDecimal zc = (BigDecimal) stringObjectMap.get("RZ");
//            BigDecimal zc = (BigDecimal) map.get(i).get("RZS");
//            double ZC = zc.doubleValue();
//            Double vs = RZ - ZC;
//            DecimalFormat dfc = new DecimalFormat("#0.00");
//            String format = dfc.format(vs);
//            v = Double.parseDouble(format);
//            if (map.get(i).get("FSLTDZ") == null || RZ == 0) {
//               String addvcd5 = map.get(i).get("ADDVNM").toString();
//               //站点名称
//               String stnm = map.get(i).get("STNM").toString();
//               //实时水库水位值
//               if (stnm.equals("洪门")) {
//                  texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
//                  if (RZ == 0) {
//                     texta += "库水位暂无数据、";
//                  } else {
//                     texta += "库水位" + RZ + "米、";
//                  }
//                  if (v < 0) {
//                     texta += "比昨日8时下降" + Math.abs(v) + "米、";
//                  } else {
//                     texta += "比昨日8时上涨" + Math.abs(v) + "米、";
//                  }
//                  if (map.get(i).get("INQ") == null) {
//                     texta += "入库流量暂无数据、";
//                  } else {
//                     BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
//                     double INQ = inq.doubleValue();
//                     double v1 = roundToSignificantFigures(INQ, 3);
//                     String a = String.valueOf(v1);
//                     String s = subZeroAndDot(a);
//                     texta += "入库流量" + s + "立方米每秒、";
//                  }
//                  if (map.get(i).get("W") == null) {
//                     texta += "蓄水量暂无数据、";
//                  } else {
//                     BigDecimal w = (BigDecimal) map.get(i).get("W");
//                     double W = w.doubleValue();
//                     if (W == 0.0) {
//                        texta += "蓄水量暂无数据、";
//                     } else {
//                        DecimalFormat dfs = new DecimalFormat("#0.00");
//                        texta += "蓄水量" + dfs.format(W) + "百万立方米、";
//                     }
//                  }
//                  if (map.get(i).get("OTQ") == null) {
//                     texta += "出库流量暂无数据、";
//                  } else {
//                     BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
//                     double OTQ = otq.doubleValue();
//                     double v1 = roundToSignificantFigures(OTQ, 3);
//                     String a = String.valueOf(v1);
//                     String s = subZeroAndDot(a);
//                     texta += "出库流量" + s + "立方米每秒;";
//                  }
////                  texta += "汛限水位暂无数据;";
//               } else if (stnm.equals("廖坊")) {
//                  texth += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
//                  if (RZ == 0) {
//                     texth += "库水位暂无数据、";
//                  } else {
//                     texth += "库水位" + RZ + "米、";
//                  }
//                  if (v < 0) {
//                     texth += "比昨日8时下降" + Math.abs(v) + "米、";
//                  } else {
//                     texth += "比昨日8时上涨" + Math.abs(v) + "米、";
//                  }
//                  if (map.get(i).get("INQ") == null) {
//                     texth += "入库流量暂无数据、";
//                  } else {
//                     BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
//                     double INQ = inq.doubleValue();
//                     double v1 = roundToSignificantFigures(INQ, 3);
//                     String a = String.valueOf(v1);
//                     String s = subZeroAndDot(a);
//                     texth += "入库流量" + s + "立方米每秒、";
//                  }
//                  if (map.get(i).get("W") == null) {
//                     texth += "蓄水量暂无数据、";
//                  } else {
//                     BigDecimal w = (BigDecimal) map.get(i).get("W");
//                     double W = w.doubleValue();
//                     System.out.println("-----------:" + W);
//                     if (W == 0.0) {
//                        texth += "蓄水量暂无数据、";
//                     } else {
//                        DecimalFormat dfs = new DecimalFormat("#0.00");
//                        texth += "蓄水量" + dfs.format(W) + "百万立方米、";
//                     }
//                  }
//                  if (map.get(i).get("OTQ") == null) {
//                     texth += "出库流量暂无数据、";
//                  } else {
//                     BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
//                     double OTQ = otq.doubleValue();
//                     double v1 = roundToSignificantFigures(OTQ, 3);
//                     String a = String.valueOf(v1);
//                     String s = subZeroAndDot(a);
//                     texth += "出库流量" + s + "立方米每秒。";
//                  }
//               }
//               blist.add(map.get(i));
//               continue;
//            }
//            BigDecimal fsltdz = (BigDecimal) map.get(i).get("FSLTDZ");
//            double FSLTDZ = fsltdz.doubleValue();
//            if (RZ <= FSLTDZ) {
//               //县,市
//               String addvcd5 = map.get(i).get("ADDVNM").toString();
//               //站点名称
//               String stnm = map.get(i).get("STNM").toString();
//               //站点名称
//               if (stnm.equals("洪门")) {
//                  texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
//                  if (RZ == 0) {
//                     texta += "库水位暂无数据、";
//                  } else {
//                     texta += "库水位" + RZ + "米、";
//                  }
//                  if (v < 0) {
//                     texta += "比昨日8时下降" + Math.abs(v) + "米、";
//                  } else {
//                     texta += "比昨日8时上涨" + Math.abs(v) + "米、";
//                  }
//                  if (map.get(i).get("INQ") == null) {
//                     texta += "入库流量暂无数据、";
//                  } else {
//                     BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
//                     double INQ = inq.doubleValue();
//                     double v1 = roundToSignificantFigures(INQ, 3);
//                     String a = String.valueOf(v1);
//                     String s = subZeroAndDot(a);
//                     texta += "入库流量" + s + "立方米每秒、";
//                  }
//                  if (map.get(i).get("W") == null) {
//                     texta += "蓄水量暂无数据、";
//                  } else {
//                     BigDecimal w = (BigDecimal) map.get(i).get("W");
//                     double W = w.doubleValue();
//                     DecimalFormat dfs = new DecimalFormat("#0.00");
//                     texta += "蓄水量" + dfs.format(W) + "百万立方米、";
//                  }
//                  if (map.get(i).get("OTQ") == null) {
//                     texta += "出库流量暂无数据;";
//                  } else {
//                     BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
//                     double OTQ = otq.doubleValue();
//                     double v1 = roundToSignificantFigures(OTQ, 3);
//                     String a = String.valueOf(v1);
//                     String s = subZeroAndDot(a);
//                     texta += "出库流量" + s + "立方米每秒;";
//                  }
////                  texta += "汛限水位暂无数据;";
//               } else if (stnm.equals("廖坊")) {
//                  texth += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
//                  if (RZ == 0) {
//                     texth += "库水位暂无数据、";
//                  } else {
//                     texth += "库水位" + RZ + "米、";
//                  }
//                  if (v < 0) {
//                     texth += "比昨日8时下降" + Math.abs(v) + "米、";
//                  } else {
//                     texth += "比昨日8时上涨" + Math.abs(v) + "米、";
//                  }
//                  if (map.get(i).get("INQ") == null) {
//                     texth += "入库流量暂无数据、";
//                  } else {
//                     BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
//                     double INQ = inq.doubleValue();
//                     double v1 = roundToSignificantFigures(INQ, 3);
//                     String a = String.valueOf(v1);
//                     String s = subZeroAndDot(a);
//                     texth += "入库流量" + s + "立方米每秒、";
//                  }
//                  if (map.get(i).get("W") == null) {
//                     texth += "蓄水量暂无数据、";
//                  } else {
//                     BigDecimal w = (BigDecimal) map.get(i).get("W");
//                     double W = w.doubleValue();
//                     DecimalFormat dfs = new DecimalFormat("#0.00");
//                     texth += "蓄水量" + dfs.format(W) + "百万立方米、";
//                  }
//                  if (map.get(i).get("OTQ") == null) {
//                     texth += "出库流量暂无数据。";
//                  } else {
//                     BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
//                     double OTQ = otq.doubleValue();
//                     double v1 = roundToSignificantFigures(OTQ, 3);
//                     String a = String.valueOf(v1);
//                     String s = subZeroAndDot(a);
//                     texth += "出库流量" + s + "立方米每秒。";
//                  }
//               }
//               blist.add(map.get(i));
//            } else {
//               //如果map集合保存了站点则不重复统计数量
//               //如果map集合保存了站点则不重复统计数量
//               if (mnum.containsKey(map.get(i).get("STCD").toString()) == true) {
//               } else {
//                  alist.add(map.get(i));
//                  mnum.put(map.get(i).get("STCD").toString(), i);
//                  number++;
//                  //超出警戒水位多少
//                  Double num = RZ - FSLTDZ;
//                  double v3 = (double) Math.round(num * 100) / 100;
//                  //县,市
//                  String addvcd5 = map.get(i).get("ADDVNM").toString();
//                  //站点名称
//                  String stnm = map.get(i).get("STNM").toString();
//                  if (stnm.equals("洪门")) {
//                     texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
//                     if (RZ == 0) {
//                        texta += "库水位暂无数据、";
//                     } else {
//                        texta += "库水位" + RZ + "米、";
//                     }
//                     if (v < 0) {
//                        texta += "比昨日8时下降" + Math.abs(v) + "米、";
//                     } else {
//                        texta += "比昨日8时上涨" + Math.abs(v) + "米、";
//                     }
//                     if (map.get(i).get("INQ") == null) {
//                        texta += "入库流量暂无数据、";
//                     } else {
//                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
//                        double INQ = inq.doubleValue();
//                        double v1 = roundToSignificantFigures(INQ, 3);
//                        String a = String.valueOf(v1);
//                        String s = subZeroAndDot(a);
//                        texta += "入库流量" + s + "立方米每秒、";
//                     }
//                     if (map.get(i).get("W") == null) {
//                        texta += "蓄水量暂无数据、";
//                     } else {
//                        BigDecimal w = (BigDecimal) map.get(i).get("W");
//                        double W = w.doubleValue();
//                        if (W == 0.0) {
//                           texta += "蓄水量暂无数据、";
//                        } else {
//                           DecimalFormat dfs = new DecimalFormat("#0.00");
//                           texta += "蓄水量" + dfs.format(W) + "百万立方米、";
//                        }
//                     }
//                     if (map.get(i).get("OTQ") == null) {
//                        texta += "出库流量暂无数据;";
//                     } else {
//                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
//                        double OTQ = otq.doubleValue();
//                        double v1 = roundToSignificantFigures(OTQ, 3);
//                        String a = String.valueOf(v1);
//                        String s = subZeroAndDot(a);
//                        texta += "出库流量" + s + "立方米每秒;";
//                     }
////                  texta += "汛限水位暂无数据;";
//                  } else if (stnm.equals("廖坊")) {
//                     texth += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
//                     if (RZ == 0) {
//                        texth += "库水位暂无数据、";
//                     } else {
//                        texth += "库水位" + RZ + "米、";
//                     }
//                     if (v < 0) {
//                        texth += "比昨日8时下降" + Math.abs(v) + "米、";
//                     } else {
//                        texth += "比昨日8时上涨" + Math.abs(v) + "米、";
//                     }
//                     if (map.get(i).get("INQ") == null) {
//                        texth += "入库流量暂无数据、";
//                     } else {
//                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
//                        double INQ = inq.doubleValue();
//                        double v1 = roundToSignificantFigures(INQ, 3);
//                        String a = String.valueOf(v1);
//                        String s = subZeroAndDot(a);
//                        texth += "入库流量" + s + "立方米每秒、";
//                     }
//                     if (map.get(i).get("W") == null) {
//                        texth += "蓄水量暂无数据、";
//                     } else {
//                        BigDecimal w = (BigDecimal) map.get(i).get("W");
//                        double W = w.doubleValue();
//                        System.out.println("-----------:" + W);
//                        if (W == 0.0) {
//                           texth += "蓄水量暂无数据、";
//                        } else {
//                           DecimalFormat dfs = new DecimalFormat("#0.00");
//                           texth += "蓄水量" + dfs.format(W) + "百万立方米、";
//                        }
//                     }
//                     if (map.get(i).get("OTQ") == null) {
//                        texth += "出库流量暂无数据。";
//                     } else {
//                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
//                        double OTQ = otq.doubleValue();
//                        double v1 = roundToSignificantFigures(OTQ, 3);
//                        String a = String.valueOf(v1);
//                        String s = subZeroAndDot(a);
//                        texth += "出库流量" + s + "立方米每秒。";
//                     }
//                  }
//               }
//            }
//         }
//         DecimalFormat dfs = new DecimalFormat("#0.00");
//         text += "全市蓄水量" + dfs.format(count) + "百万立方米。";
//         if (number == 0) {
//            text += texta + texth;
//         } else {
//            text += "有" + number + "个水库站超汛限;" + texta + texth;
//         }
//      }
//      Map m = new HashMap();
//      List list = new ArrayList();
//      m.put("text", text);
//      m.put("number", number);
//      m.put("Yjlist", alist);
//      m.put("list", blist);
//      list.add(m);
//      return R.data(list);
//   }
   /**
    * 水库详情
    *
    * @param stcd
    * @return
    */
   @PostMapping("/selectInfo")
   public R selectInfo(String stcd) {
      return R.data(rsvrRService.selectInfo(stcd));
   }
   @PostMapping("/selectTinfo")
   public R selectTinfo(String stcd) {
      Calendar cal = Calendar.getInstance();
      int mnth = cal.get(Calendar.MONTH) + 1;
      return R.data(rsvrRService.selectTinfo(mnth, stcd));
   }
   /**
    * 求Map<K,V>中Key(键)的最大值
    *
    * @param map
    * @return
    */
   public static Object getMaxKey(Map<Double, Integer> map) {
      if (map == null) return null;
      Set<Double> set = map.keySet();
      Object[] obj = set.toArray();
      Arrays.sort(obj);
      return obj[obj.length - 1];
   }
   /**
    * 求Map<K,V>中Value(值)的最大值
    *
    * @param map
    * @return
    */
   public static Object getMaxValue(Map<Integer, Integer> map) {
      if (map == null) return null;
      Collection<Integer> c = map.values();
      Object[] obj = c.toArray();
      Arrays.sort(obj);
      return obj[obj.length - 1];
   }
   /**
    * 水位流量曲线
    *
    * @param stcd
    * @return
    */
   @PostMapping("/selList")
   public R selList(String stcd) {
      List<Map<String, Object>> newList = rsvrRService.selList(stcd);
      Map<String, List<Map>> mm = new HashMap();
      for (Map temp : newList) {
         if (mm.containsKey(temp.get("LNNM")))
            mm.get(temp.get("LNNM")).add(temp);
         else {
            List<Map> ll = new ArrayList<>();
            ll.add(temp);
            mm.put((String) temp.get("LNNM"), ll);
         }
      }
      List<List<Map>> res = new ArrayList();
      for (Map.Entry<String, List<Map>> et : mm.entrySet()) {
         res.add(et.getValue());
      }
      return R.data(res);
   }
   /**
    * 库容曲线
    *
    * @param stcd
    * @return
    */
   @PostMapping("/selLists")
   public R selLists(String stcd) {
      return R.data(rsvrRService.selLists(stcd));
   }
   /**
    * 水库站水位流量过程接口
    */
   @PostMapping("/selectRsvrList")
   @ApiOperation(value = "水库站水位过程接口", notes = "code,dateBegin,dateEnd")
   public R selectRsvrList(String code, String dateBegin, String dateEnd) {
      List<Map<String, Object>> list = rsvrRService.selectRsvrList(code, dateBegin, dateEnd);
      return R.data(list);
   }
   /**
    * 河道水位流量过程接口
    */
   @PostMapping("/selectRiverList")
   @ApiOperation(value = "水库站水位过程接口", notes = "code,dateBegin,dateEnd")
   public R selectRiverList(String code, String dateBegin, String dateEnd) {
      List<Map<String, Object>> list = rsvrRService.selectRsvrLists(code, dateBegin, dateEnd);
      return R.data(list);
   }
   /**
    * 水库实时预警
    */
   @ApiLog("水库实时预警")
   @PostMapping("/selectyj")
   @ApiOperation(value = "水库实时预警", notes = "")
   public R selectyj(String times, int mou, int k) {
      Date date = null;
      // 把Date按照格式转换成字符串
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      try {
         date = sdf.parse(times);
      } catch (ParseException e) {
         e.printStackTrace();
      }
      String dateEnd = sdf.format(date);
      String egmd = "";
      String edmd = "";
      List<Map<String, Object>> selectfx = rsvrRService.selectfx();
      String b = (String) selectfx.get(0).get("BGMD");
      String e = (String) selectfx.get(0).get("EDMD");
      String b2 = (String) selectfx.get(1).get("BGMD");
      String e2 = (String) selectfx.get(1).get("EDMD");
      int bs = Integer.parseInt(b.trim());
      int es = Integer.parseInt(e.trim());
      int b2s = Integer.parseInt(b2.trim());
      int e2s = Integer.parseInt(e2.trim());
      if (mou >= bs && mou <= es) {
         egmd = b;
         edmd = e;
      } else if (mou >= b2s && mou <= e2s) {
         egmd = b2;
         edmd = e2;
      } else {
         String mous = "0901";
         int m = Integer.parseInt(mous);
         if (m >= bs && m <= es) {
            egmd = b;
            edmd = e;
         } else if (m >= b2s && m <= e2s) {
            egmd = b2;
            edmd = e2;
         }
      }
      List<Map<String, Object>> map;
      if (k == 13) {
         map = rsvrRService.selectyj(egmd, edmd, times, dateEnd);
      } else {
         map = rsvrRService.selectyj(egmd, edmd, times, dateEnd);
      }
      List<Map<String, Object>> lists = new ArrayList<>();
      for (int i = 0; i < map.size(); i++) {
         Map<String, Object> maps = new HashMap<String, Object>();
         BigDecimal bigDecimaldz = (BigDecimal) map.get(i).get("FSLTDZ");//汛限水位
         BigDecimal bigDecimalrz = (BigDecimal) map.get(i).get("RZ");//当前水位
         BigDecimal bigDecimallz = (BigDecimal) map.get(i).get("DSFLZ");//设计水位
         BigDecimal bigDecimalmz = (BigDecimal) map.get(i).get("NORMZ");//防洪高水位
         double dz = bigDecimaldz.doubleValue();
         double rz = bigDecimalrz.doubleValue();
         double lz = bigDecimallz.doubleValue();
         double mz = bigDecimalmz.doubleValue();
         double num = 0.5;
         double s = dz - num;
         if (dz == 0) {
            map.get(i).put("yj", "无预警");
            maps.put("YjList", map.get(i));
            lists.add(maps);
         } else {
            if (rz > 0 && rz < s) {
               map.get(i).put("yj", "无预警");
            } else if (rz >= s && rz < dz) {
               map.get(i).put("yj", "蓝色预警");
            } else if (rz >= dz && rz < mz) {
               map.get(i).put("yj", "黄色预警");
            } else if (rz >= mz && rz < lz) {
               map.get(i).put("yj", "橙色预警");
            } else {
               map.get(i).put("yj", "红色预警");
            }
            maps.put("YjList", map.get(i));
            lists.add(maps);
         }
      }
      return R.data(lists);
   }
   public static double roundToSignificantFigures(double num, int n) {
      if (num == 0) {
         return 0;
      }
      final double d = Math.ceil(Math.log10(num < 0 ? -num : num));
      final int power = n - (int) d;
      final double magnitude = Math.pow(10, power);
      final long shifted = Math.round(num * magnitude);
      return shifted / magnitude;
   }
   public static String subZeroAndDot(String s) {
      if (s.indexOf(".") > 0) {
         s = s.replaceAll("0+?$", "");//去掉多余的0
         s = s.replaceAll("[.]$", "");//如最后一位是.则去掉
      }
      return s;
   }
   @PostMapping("/ss")
   public void ss() {
      String s = rsvrRService.selectCode();
      String[] split = s.split(",");
      String strArrays = "";
      for (int i = 0; i < split.length; i++) {
         strArrays += "'" + split[i] + "',";
      }
      String code = strArrays.substring(0, strArrays.length() - 1);
      System.out.println(code);
      System.out.println(split.length);
   }
   /**
    * 水库水情最新信息
    */
   @PostMapping("/selectyjcks")
   public R selectyjcks() throws ParseException {
      int ws = 1;
      SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd 08:00:00");
      String time = df.format(new Date());
      Date date = null;
      // 把Date按照格式转换成字符串
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 08:00:00");
      try {
         date = sdf.parse(time);
      } catch (ParseException e) {
         e.printStackTrace();
      }
      String dateEnd = sdf.format(date);
      SimpleDateFormat dfz = new SimpleDateFormat("yyyy-MM-dd 08:00:00");
      String timez = dfz.format(new Date());
      String yearc = time.substring(0, 4);
      int years = Integer.parseInt(yearc);
      String monthc = time.substring(5, 7);
      int months = Integer.parseInt(monthc);
      String dayc = time.substring(8, 10);
      int days = Integer.parseInt(dayc);
      int da = days - ws;
      String hss = time.substring(11, 13);
      int hs = Integer.parseInt(hss);
      //前一天8时
      //String timec = years + "-" + months + "-" + da + " 08:00:00";
      SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd 08:00:00");
      Calendar now = Calendar.getInstance();
      now.setTime(new Date());
      now.add(Calendar.DAY_OF_MONTH, -1);
      String timec = sdfs.format(now.getTime());
      //前24小时
      Calendar calendar6 = Calendar.getInstance();
      calendar6.set(Calendar.HOUR_OF_DAY, calendar6.get(Calendar.HOUR_OF_DAY) - 24);
      String dateBegin24 = df.format(calendar6.getTime());
      String substring = time.substring(0, 10);
      //截取月日
      String[] strs = substring.split("-");
      //月
      String year = strs[1].toString();
      //日
      String day = strs[2].toString();
      //定义短信内容头
      String text = year + "月" + day + "日" + hs + "时";
      String texta = "";
      String texth = "";
      //定义统计数量
@@ -172,514 +1298,248 @@
            edmd = e2;
         }
      }
      //水库水情预警信息
      List<Map<String, Object>> map = rsvrRService.selectyjck(egmd, edmd, beginTime, endTime);
      String s = rsvrRService.selectCode(beginTime, endTime);
      String[] split = s.split(",");
      String sc = rsvrRService.selectCode();
      String[] split = sc.split(",");
      String strArrays = "";
      for (int i = 0; i < split.length; i++) {
         strArrays += "'" + split[i] + "',";
      }
      String code = strArrays.substring(0, strArrays.length() - 1);
      List<Map<String, Object>> sel = rsvrRService.sel(egmd, edmd, code);
      map.addAll(sel);
      //水库水情预警信息
      List<Map<String, Object>> map = rsvrRService.selectskshi(egmd, edmd, timec, time,dateEnd,code);
      //用来判断是否重复统计超警信息
      Map mnum = new HashMap();
      Map mnums = new HashMap();
      Map c = new HashMap();
      //定义list保存预警信息
      List ylist = new ArrayList();
      //定义list保存未预警信息
      List alist = new ArrayList();
      List list = new ArrayList();
      List blist = new ArrayList();
      double RZ = 0.0;
      double count = 0.0;
      double v = 0.0;
      //定义list保存未预警信息
      //查询数据为空
      if (map.size() == 0) {
         Map m = new HashMap();
         text += "暂无水库超警信息。$$$$$洪门水库&&&&&库水位暂无数据、入库流量暂无数据、蓄水量暂无数据、出库流量暂无数据;$$$$$廖坊水库&&&&&库水位暂无数据、入库流量暂无数据、蓄水量暂无数据、出库流量暂无数据。";
         m.put("text", text);
         m.put("number", number);
         m.put("Yjlist", ylist);
         m.put("list", alist);
         list.add(m);
         text += "暂无水库超汛限。$$$$$洪门水库&&&&&库水位暂无数据、入库流量暂无数据、蓄水量暂无数据、出库流量暂无数据;$$$$$廖坊水库&&&&&库水位暂无数据、入库流量暂无数据、蓄水量暂无数据、出库流量暂无数据。";
      } else {
         for (int i = 0; i < map.size(); i++) {
            //实时水库水位值
            BigDecimal wss = (BigDecimal) map.get(i).get("W");
            count += wss.doubleValue();
            BigDecimal rz = (BigDecimal) map.get(i).get("RZ");
            RZ = rz.doubleValue();
            if (mnums.containsKey(map.get(i).get("STCD").toString()) == true) {
            } else {
               mnums.put(map.get(i).get("STCD").toString(), i);
               if (map.get(i).get("FSLTDZ") == null || RZ == 0) {
                  String addvcd5 = map.get(i).get("ADDVNM").toString();
                  //站点名称
                  String stnm = map.get(i).get("STNM").toString();
                  if (stnm.equals("洪门")) {
                     texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&:";
                     if (RZ == 0) {
                        texta += "库水位暂无数据、";
                     } else {
                        DecimalFormat df = new DecimalFormat("#0.00");
                        texta += "库水位" + df.format(RZ) + "米、";
                     }
                     if (map.get(i).get("INQ") == null) {
                        texta += "入库流量暂无数据、";
                     } else {
                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                        double INQ = inq.doubleValue();
                        //DecimalFormat df = new DecimalFormat("#0.000");
                        texta += "入库流量" + INQ + "立方米每秒、";
                     }
                     if (map.get(i).get("W") == null) {
                        texta += "蓄水量暂无数据、";
                     } else {
                        BigDecimal w = (BigDecimal) map.get(i).get("W");
                        double W = w.doubleValue();
                        texta += "蓄水量" + W + "百万立方米、";
                     }
                     if (map.get(i).get("OTQ") == null) {
                        texta += "出库流量暂无数据;";
                     } else {
                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                        double OTQ = otq.doubleValue();
                        //DecimalFormat df = new DecimalFormat("#0.000");
                        texta += "出库流量" + OTQ + "立方米每秒;";
                     }
                  }
                  if (stnm.equals("廖坊")) {
                     texth += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&:";
                     if (RZ == 0) {
                        texth += "库水位暂无数据、";
                     } else {
                        DecimalFormat df = new DecimalFormat("#0.00");
                        texth += "库水位" + df.format(RZ) + "米、";
                     }
                     if (map.get(i).get("INQ") == null) {
                        texth += "入库流量暂无数据、";
                     } else {
                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                        double INQ = inq.doubleValue();
                        //DecimalFormat df = new DecimalFormat("#0.000");
                        texth += "入库流量" + INQ + "立方米每秒、";
                     }
                     if (map.get(i).get("W") == null) {
                        texth += "蓄水量暂无数据、";
                     } else {
                        BigDecimal w = (BigDecimal) map.get(i).get("W");
                        double W = w.doubleValue();
                        texth += "蓄水量" + W + "百万立方米、";
                     }
                     if (map.get(i).get("OTQ") == null) {
                        texth += "出库流量暂无数据。";
                     } else {
                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                        double OTQ = otq.doubleValue();
                        //DecimalFormat df = new DecimalFormat("#0.000");
                        texth += "出库流量" + OTQ + "立方米每秒。";
                     }
                  }
                  alist.add(map.get(i));
                  continue;
               }
               BigDecimal fsltdz = (BigDecimal) map.get(i).get("FSLTDZ");
               double FSLTDZ = fsltdz.doubleValue();
               if (RZ <= FSLTDZ) {
                  String addvcd5 = map.get(i).get("ADDVNM").toString();
                  //站点名称
                  String stnm = map.get(i).get("STNM").toString();
                  if (stnm.equals("洪门")) {
                     texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&:" + "库水位" + RZ + "米、";
                     if (map.get(i).get("INQ") == null) {
                        texta += "入库流量暂无数据、";
                     } else {
                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                        double INQ = inq.doubleValue();
                        //DecimalFormat df = new DecimalFormat("#0.000");
                        texta += "入库流量" + INQ + "立方米每秒、";
                     }
                     if (map.get(i).get("W") == null) {
                        texta += "蓄水量暂无数据、";
                     } else {
                        BigDecimal w = (BigDecimal) map.get(i).get("W");
                        double W = w.doubleValue();
                        texta += "蓄水量" + W + "百万立方米、";
                     }
                     if (map.get(i).get("OTQ") == null) {
                        texta += "出库流量暂无数据;";
                     } else {
                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                        double OTQ = otq.doubleValue();
                        //DecimalFormat df = new DecimalFormat("#0.000");
                        texta += "出库流量" + OTQ + "立方米每秒;";
                     }
                  }
                  if (stnm.equals("廖坊")) {
                     texth += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&:" + "库水位" + RZ + "米、";
                     if (map.get(i).get("INQ") == null) {
                        texth += "入库流量暂无数据、";
                     } else {
                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                        double INQ = inq.doubleValue();
                        //DecimalFormat df = new DecimalFormat("#0.000");
                        texth += "入库流量" + INQ + "立方米每秒、";
                     }
                     if (map.get(i).get("W") == null) {
                        texth += "蓄水量暂无数据、";
                     } else {
                        BigDecimal w = (BigDecimal) map.get(i).get("W");
                        double W = w.doubleValue();
                        texth += "蓄水量" + W + "百万立方米、";
                     }
                     if (map.get(i).get("OTQ") == null) {
                        texth += "出库流量暂无数据。";
                     } else {
                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                        double OTQ = otq.doubleValue();
                        //DecimalFormat df = new DecimalFormat("#0.000");
                        texth += "出库流量" + OTQ + "立方米每秒。";
                     }
                  }
                  alist.add(map.get(i));
               } else {
                  //如果map集合保存了站点则不重复统计数量
                  if (mnum.containsKey(map.get(i).get("STCD").toString()) == true) {
            String stcd = map.get(i).get("STCD").toString();
            String ti = map.get(i).get("TM").toString();
            //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();
            Double vs = RZ - ZC;
            DecimalFormat dfc = new DecimalFormat("#0.00");
            String format = dfc.format(vs);
            v = Double.parseDouble(format);
            if (map.get(i).get("FSLTDZ") == null || RZ == 0) {
               String addvcd5 = map.get(i).get("ADDVNM").toString();
               //站点名称
               String stnm = map.get(i).get("STNM").toString();
               //实时水库水位值
               if (stnm.equals("洪门")) {
                  texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
                  if (RZ == 0) {
                     texta += "库水位暂无数据、";
                  } else {
                     ylist.add(map.get(i));
                     mnum.put(map.get(i).get("STCD").toString(), i);
                     number++;
                     //超出警戒水位多少
                     Double num = RZ - FSLTDZ;
                     double v3 = (double) Math.round(num * 100) / 100;
                     //县,市
                     String addvcd5 = map.get(i).get("ADDVNM").toString();
                     //站点名称
                     String stnm = map.get(i).get("STNM").toString();
                     if (stnm.equals("洪门")) {
                        texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&:超出水位" + v3 + "米、" + "库水位" + RZ + "米、";
                        if (map.get(i).get("INQ") == null) {
                           texta += "入库流量暂无数据、";
                        } else {
                           BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                           double INQ = inq.doubleValue();
                           //DecimalFormat df = new DecimalFormat("#0.000");
                           texta += "入库流量" + INQ + "立方米每秒、";
                        }
                        if (map.get(i).get("W") == null) {
                           texta += "蓄水量暂无数据、";
                        } else {
                           BigDecimal w = (BigDecimal) map.get(i).get("W");
                           double W = w.doubleValue();
                           texta += "蓄水量" + W + "百万立方米、";
                        }
                        if (map.get(i).get("OTQ") == null) {
                           texta += "出库流量暂无数据;";
                        } else {
                           BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                           double OTQ = otq.doubleValue();
                           //DecimalFormat df = new DecimalFormat("#0.000");
                           texta += "出库流量" + OTQ + "立方米每秒;";
                        }
                     }
                     if (stnm.equals("廖坊")) {
                        texth += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&:超出水位" + v3 + "米、" + "库水位" + RZ + "米、";
                        if (map.get(i).get("INQ") == null) {
                           texth += "入库流量暂无数据、";
                        } else {
                           BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                           double INQ = inq.doubleValue();
                           //DecimalFormat df = new DecimalFormat("#0.000");
                           texth += "入库流量" + INQ + "立方米每秒、";
                        }
                        if (map.get(i).get("W") == null) {
                           texth += "蓄水量暂无数据、";
                        } else {
                           BigDecimal w = (BigDecimal) map.get(i).get("W");
                           double W = w.doubleValue();
                           texth += "蓄水量" + W + "百万立方米、";
                        }
                        if (map.get(i).get("OTQ") == null) {
                           texth += "出库流量暂无数据。";
                        } else {
                           BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                           double OTQ = otq.doubleValue();
                           //DecimalFormat df = new DecimalFormat("#0");
                           texth += "出库流量" + OTQ + "立方米每秒。";
                        }
                     texta += "库水位" + RZ + "米、";
                  }
                  if (v < 0) {
                     texta += "比昨日8时下降" + Math.abs(v) + "米、";
                  } else {
                     texta += "比昨日8时上涨" + Math.abs(v) + "米、";
                  }
                  if (map.get(i).get("INQ") == null) {
                     texta += "入库流量暂无数据、";
                  } else {
                     BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                     double INQ = inq.doubleValue();
                     double v1 = roundToSignificantFigures(INQ, 3);
                     String a = String.valueOf(v1);
                     String s = subZeroAndDot(a);
                     texta += "入库流量" + s + "立方米每秒、";
                  }
                  if (map.get(i).get("W") == null) {
                     texta += "蓄水量暂无数据、";
                  } else {
                     BigDecimal w = (BigDecimal) map.get(i).get("W");
                     double W = w.doubleValue();
                     if (W == 0.0) {
                        texta += "蓄水量暂无数据、";
                     } else {
                        DecimalFormat dfs = new DecimalFormat("#0.00");
                        texta += "蓄水量" + dfs.format(W) + "百万立方米、";
                     }
                  }
                  if (map.get(i).get("OTQ") == null) {
                     texta += "出库流量暂无数据、";
                  } else {
                     BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                     double OTQ = otq.doubleValue();
                     double v1 = roundToSignificantFigures(OTQ, 3);
                     String a = String.valueOf(v1);
                     String s = subZeroAndDot(a);
                     texta += "出库流量" + s + "立方米每秒;";
                  }
//                  texta += "汛限水位暂无数据;";
               } else if (stnm.equals("廖坊")) {
                  texth += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
                  if (RZ == 0) {
                     texth += "库水位暂无数据、";
                  } else {
                     texth += "库水位" + RZ + "米、";
                  }
                  if (v < 0) {
                     texth += "比昨日8时下降" + Math.abs(v) + "米、";
                  } else {
                     texth += "比昨日8时上涨" + Math.abs(v) + "米、";
                  }
                  if (map.get(i).get("INQ") == null) {
                     texth += "入库流量暂无数据、";
                  } else {
                     BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                     double INQ = inq.doubleValue();
                     double v1 = roundToSignificantFigures(INQ, 3);
                     String a = String.valueOf(v1);
                     String s = subZeroAndDot(a);
                     texth += "入库流量" + s + "立方米每秒、";
                  }
                  if (map.get(i).get("W") == null) {
                     texth += "蓄水量暂无数据、";
                  } else {
                     BigDecimal w = (BigDecimal) map.get(i).get("W");
                     double W = w.doubleValue();
                     System.out.println("-----------:" + W);
                     if (W == 0.0) {
                        texth += "蓄水量暂无数据、";
                     } else {
                        DecimalFormat dfs = new DecimalFormat("#0.00");
                        texth += "蓄水量" + dfs.format(W) + "百万立方米、";
                     }
                  }
                  if (map.get(i).get("OTQ") == null) {
                     texth += "出库流量暂无数据、";
                  } else {
                     BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                     double OTQ = otq.doubleValue();
                     double v1 = roundToSignificantFigures(OTQ, 3);
                     String a = String.valueOf(v1);
                     String s = subZeroAndDot(a);
                     texth += "出库流量" + s + "立方米每秒。";
                  }
               }
            }
         }
         if (number == 0) {
            text += texta + texth;
         } else {
            text += "有" + number + "个水库站预警;" + texta + texth;
         }
         //水库涨幅,跌幅信息
         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) {
               blist.add(map.get(i));
               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);
//            }
//            //跌幅
//            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) {
//            //获取涨幅最大的信息
//            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);
            m.put("list", alist);
            m.put("clist", c);
            list.add(m);
         }
         return R.data(list);
      }
      /**
       * 水库水情最新信息
       */
      @PostMapping("/selectyjcks")
      public R selectyjcks () throws ParseException {
         int ws = 1;
         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String time = df.format(new Date());
         SimpleDateFormat dfz = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
         String timez = dfz.format(new Date());
         String yearc = time.substring(0, 4);
         int years = Integer.parseInt(yearc);
         String monthc = time.substring(5, 7);
         int months = Integer.parseInt(monthc);
         String dayc = time.substring(8, 10);
         int days = Integer.parseInt(dayc);
         int da = days - ws;
         String hss = time.substring(11, 13);
         int hs = Integer.parseInt(hss);
         //前一天8时
         String timec = years + "-" + months + "-" + da + " 08:00:00";
         //前24小时
         Calendar calendar6 = Calendar.getInstance();
         calendar6.set(Calendar.HOUR_OF_DAY, calendar6.get(Calendar.HOUR_OF_DAY) - 24);
         String dateBegin24 = df.format(calendar6.getTime());
         String substring = time.substring(0, 10);
         //截取月日
         String[] strs = substring.split("-");
         //月
         String year = strs[1].toString();
         //日
         String day = strs[2].toString();
         //定义短信内容头
         String text = year + "月" + day + "日" + hs + "时";
         String texta = "";
         String texth = "";
         //定义统计数量
         int number = 0;
         String mouz = year + day;
         Integer mou = Integer.parseInt(mouz);
         String egmd = "";
         String edmd = "";
         List<Map<String, Object>> selectfx = rsvrRService.selectfx();
         String b = (String) selectfx.get(0).get("BGMD");
         String e = (String) selectfx.get(0).get("EDMD");
         String b2 = (String) selectfx.get(1).get("BGMD");
         String e2 = (String) selectfx.get(1).get("EDMD");
         int bs = Integer.parseInt(b.trim());
         int es = Integer.parseInt(e.trim());
         int b2s = Integer.parseInt(b2.trim());
         int e2s = Integer.parseInt(e2.trim());
         if (mou >= bs && mou <= es) {
            egmd = b;
            edmd = e;
         } else if (mou >= b2s && mou <= e2s) {
            egmd = b2;
            edmd = e2;
         } else {
            String mous = "0901";
            int m = Integer.parseInt(mous);
            if (m >= bs && m <= es) {
               egmd = b;
               edmd = e;
            } else if (m >= b2s && m <= e2s) {
               egmd = b2;
               edmd = e2;
            }
         }
         //水库水情预警信息
         List<Map<String, Object>> map = rsvrRService.selectyjcks(egmd, edmd, timec, timez);
         //用来判断是否重复统计超警信息
         Map mnum = new HashMap();
         //定义list保存预警信息
         List alist = new ArrayList();
         List blist = new ArrayList();
         double RZ = 0.0;
         double v = 0.0;
         //定义list保存未预警信息
         //查询数据为空
         if (map.size() == 0) {
            text += "暂无水库超汛限。$$$$$洪门水库&&&&&库水位暂无数据、入库流量暂无数据、蓄水量暂无数据、出库流量暂无数据;$$$$$廖坊水库&&&&&库水位暂无数据、入库流量暂无数据、蓄水量暂无数据、出库流量暂无数据。";
         } else {
            for (int i = 0; i < map.size(); i++) {
               BigDecimal rz = (BigDecimal) map.get(i).get("RZ");
               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);
               //BigDecimal zc = (BigDecimal) stringObjectMap.get("RZ");
               BigDecimal zc = (BigDecimal) map.get(i).get("RZS");
               double ZC = zc.doubleValue();
               Double vs = RZ - ZC;
               DecimalFormat dfc = new DecimalFormat("#0.00");
               String format = dfc.format(vs);
               v = Double.parseDouble(format);
               if (map.get(i).get("FSLTDZ") == null || RZ == 0) {
                  String addvcd5 = map.get(i).get("ADDVNM").toString();
                  //站点名称
                  String stnm = map.get(i).get("STNM").toString();
                  //实时水库水位值
                  if (stnm.equals("洪门")) {
                     texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
                     if (RZ == 0) {
                        texta += "库水位暂无数据、";
                     } else {
                        texta += "库水位" + RZ + "米、";
                     }
                     if (v < 0) {
                        texta += "比昨日8时下降" + Math.abs(v) + "米、";
                     } else {
                        texta += "比昨日8时上涨" + Math.abs(v) + "米、";
                     }
                     if (map.get(i).get("INQ") == null) {
                        texta += "入库流量暂无数据、";
                     } else {
                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                        double INQ = inq.doubleValue();
                        texta += "入库流量" + INQ + "立方米每秒、";
                     }
                     if (map.get(i).get("W") == null) {
                        texta += "蓄水量暂无数据、";
                     } else {
                        BigDecimal w = (BigDecimal) map.get(i).get("W");
                        double W = w.doubleValue();
                        texta += "蓄水量" + W + "百万立方米、";
                     }
                     if (map.get(i).get("OTQ") == null) {
                        texta += "出库流量暂无数据、";
                     } else {
                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                        double OTQ = otq.doubleValue();
                        texta += "出库流量" + OTQ + "立方米每秒;";
                     }
//                  texta += "汛限水位暂无数据;";
                  } else if (stnm.equals("廖坊")) {
                     texth += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
                     if (RZ == 0) {
                        texth += "库水位暂无数据、";
                     } else {
                        texth += "库水位" + RZ + "米、";
                     }
                     if (v < 0) {
                        texth += "比昨日8时下降" + Math.abs(v) + "米、";
                     } else {
                        texth += "比昨日8时上涨" + Math.abs(v) + "米、";
                     }
                     if (map.get(i).get("INQ") == null) {
                        texth += "入库流量暂无数据、";
                     } else {
                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                        double INQ = inq.doubleValue();
                        texth += "入库流量" + INQ + "立方米每秒、";
                     }
                     if (map.get(i).get("W") == null) {
                        texth += "蓄水量暂无数据、";
                     } else {
                        BigDecimal w = (BigDecimal) map.get(i).get("W");
                        double W = w.doubleValue();
                        texth += "蓄水量" + W + "百万立方米、";
                     }
                     if (map.get(i).get("OTQ") == null) {
                        texth += "出库流量暂无数据、";
                     } else {
                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                        double OTQ = otq.doubleValue();
                        texth += "出库流量" + OTQ + "立方米每秒。";
                     }
            BigDecimal fsltdz = (BigDecimal) map.get(i).get("FSLTDZ");
            double FSLTDZ = fsltdz.doubleValue();
            if (RZ <= FSLTDZ) {
               //县,市
               String addvcd5 = map.get(i).get("ADDVNM").toString();
               //站点名称
               String stnm = map.get(i).get("STNM").toString();
               //站点名称
               if (stnm.equals("洪门")) {
                  texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
                  if (RZ == 0) {
                     texta += "库水位暂无数据、";
                  } else {
                     texta += "库水位" + RZ + "米、";
                  }
                  blist.add(map.get(i));
                  continue;
                  if (v < 0) {
                     texta += "比昨日8时下降" + Math.abs(v) + "米、";
                  } else {
                     texta += "比昨日8时上涨" + Math.abs(v) + "米、";
                  }
                  if (map.get(i).get("INQ") == null) {
                     texta += "入库流量暂无数据、";
                  } else {
                     BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                     double INQ = inq.doubleValue();
                     double v1 = roundToSignificantFigures(INQ, 3);
                     String a = String.valueOf(v1);
                     String s = subZeroAndDot(a);
                     texta += "入库流量" + s + "立方米每秒、";
                  }
                  if (map.get(i).get("W") == null) {
                     texta += "蓄水量暂无数据、";
                  } else {
                     BigDecimal w = (BigDecimal) map.get(i).get("W");
                     double W = w.doubleValue();
                     DecimalFormat dfs = new DecimalFormat("#0.00");
                     texta += "蓄水量" + dfs.format(W) + "百万立方米、";
                  }
                  if (map.get(i).get("OTQ") == null) {
                     texta += "出库流量暂无数据;";
                  } else {
                     BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                     double OTQ = otq.doubleValue();
                     double v1 = roundToSignificantFigures(OTQ, 3);
                     String a = String.valueOf(v1);
                     String s = subZeroAndDot(a);
                     texta += "出库流量" + s + "立方米每秒;";
                  }
//                  texta += "汛限水位暂无数据;";
               } else if (stnm.equals("廖坊")) {
                  texth += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
                  if (RZ == 0) {
                     texth += "库水位暂无数据、";
                  } else {
                     texth += "库水位" + RZ + "米、";
                  }
                  if (v < 0) {
                     texth += "比昨日8时下降" + Math.abs(v) + "米、";
                  } else {
                     texth += "比昨日8时上涨" + Math.abs(v) + "米、";
                  }
                  if (map.get(i).get("INQ") == null) {
                     texth += "入库流量暂无数据、";
                  } else {
                     BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                     double INQ = inq.doubleValue();
                     double v1 = roundToSignificantFigures(INQ, 3);
                     String a = String.valueOf(v1);
                     String s = subZeroAndDot(a);
                     texth += "入库流量" + s + "立方米每秒、";
                  }
                  if (map.get(i).get("W") == null) {
                     texth += "蓄水量暂无数据、";
                  } else {
                     BigDecimal w = (BigDecimal) map.get(i).get("W");
                     double W = w.doubleValue();
                     DecimalFormat dfs = new DecimalFormat("#0.00");
                     texth += "蓄水量" + dfs.format(W) + "百万立方米、";
                  }
                  if (map.get(i).get("OTQ") == null) {
                     texth += "出库流量暂无数据。";
                  } else {
                     BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                     double OTQ = otq.doubleValue();
                     double v1 = roundToSignificantFigures(OTQ, 3);
                     String a = String.valueOf(v1);
                     String s = subZeroAndDot(a);
                     texth += "出库流量" + s + "立方米每秒。";
                  }
               }
               BigDecimal fsltdz = (BigDecimal) map.get(i).get("FSLTDZ");
               double FSLTDZ = fsltdz.doubleValue();
               if (RZ <= FSLTDZ) {
               blist.add(map.get(i));
            } else {
               //如果map集合保存了站点则不重复统计数量
               //如果map集合保存了站点则不重复统计数量
               if (mnum.containsKey(map.get(i).get("STCD").toString()) == true) {
               } else {
                  alist.add(map.get(i));
                  mnum.put(map.get(i).get("STCD").toString(), i);
                  number++;
                  //超出警戒水位多少
                  Double num = RZ - FSLTDZ;
                  double v3 = (double) Math.round(num * 100) / 100;
                  //县,市
                  String addvcd5 = map.get(i).get("ADDVNM").toString();
                  //站点名称
                  String stnm = map.get(i).get("STNM").toString();
                  //站点名称
                  if (stnm.equals("洪门")) {
                     texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
                     if (RZ == 0) {
@@ -697,21 +1557,32 @@
                     } else {
                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                        double INQ = inq.doubleValue();
                        texta += "入库流量" + INQ + "立方米每秒、";
                        double v1 = roundToSignificantFigures(INQ, 3);
                        String a = String.valueOf(v1);
                        String s = subZeroAndDot(a);
                        texta += "入库流量" + s + "立方米每秒、";
                     }
                     if (map.get(i).get("W") == null) {
                        texta += "蓄水量暂无数据、";
                     } else {
                        BigDecimal w = (BigDecimal) map.get(i).get("W");
                        double W = w.doubleValue();
                        texta += "蓄水量" + W + "百万立方米、";
                        if (W == 0.0) {
                           texta += "蓄水量暂无数据、";
                        } else {
                           DecimalFormat dfs = new DecimalFormat("#0.00");
                           texta += "蓄水量" + dfs.format(W) + "百万立方米、";
                        }
                     }
                     if (map.get(i).get("OTQ") == null) {
                        texta += "出库流量暂无数据;";
                     } else {
                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                        double OTQ = otq.doubleValue();
                        texta += "出库流量" + OTQ + "立方米每秒;";
                        double v1 = roundToSignificantFigures(OTQ, 3);
                        String a = String.valueOf(v1);
                        String s = subZeroAndDot(a);
                        texta += "出库流量" + s + "立方米每秒;";
                     }
//                  texta += "汛限水位暂无数据;";
                  } else if (stnm.equals("廖坊")) {
@@ -731,319 +1602,56 @@
                     } else {
                        BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                        double INQ = inq.doubleValue();
                        texth += "入库流量" + INQ + "立方米每秒、";
                        double v1 = roundToSignificantFigures(INQ, 3);
                        String a = String.valueOf(v1);
                        String s = subZeroAndDot(a);
                        texth += "入库流量" + s + "立方米每秒、";
                     }
                     if (map.get(i).get("W") == null) {
                        texth += "蓄水量暂无数据、";
                     } else {
                        BigDecimal w = (BigDecimal) map.get(i).get("W");
                        double W = w.doubleValue();
                        texth += "蓄水量" + W + "百万立方米、";
                        System.out.println("-----------:" + W);
                        if (W == 0.0) {
                           texth += "蓄水量暂无数据、";
                        } else {
                           DecimalFormat dfs = new DecimalFormat("#0.00");
                           texth += "蓄水量" + dfs.format(W) + "百万立方米、";
                        }
                     }
                     if (map.get(i).get("OTQ") == null) {
                        texth += "出库流量暂无数据。";
                     } else {
                        BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                        double OTQ = otq.doubleValue();
                        texth += "出库流量" + OTQ + "立方米每秒。";
                     }
                  }
                  blist.add(map.get(i));
               } else {
                  //如果map集合保存了站点则不重复统计数量
                  //如果map集合保存了站点则不重复统计数量
                  if (mnum.containsKey(map.get(i).get("STCD").toString()) == true) {
                  } else {
                     alist.add(map.get(i));
                     mnum.put(map.get(i).get("STCD").toString(), i);
                     number++;
                     //超出警戒水位多少
                     Double num = RZ - FSLTDZ;
                     double v3 = (double) Math.round(num * 100) / 100;
                     //县,市
                     String addvcd5 = map.get(i).get("ADDVNM").toString();
                     //站点名称
                     String stnm = map.get(i).get("STNM").toString();
                     if (stnm.equals("洪门")) {
                        texta += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
                        if (RZ == 0) {
                           texta += "库水位暂无数据、";
                        } else {
                           texta += "库水位" + RZ + "米、";
                        }
                        if (v < 0) {
                           texta += "比昨日8时下降" + Math.abs(v) + "米、";
                        } else {
                           texta += "比昨日8时上涨" + Math.abs(v) + "米、";
                        }
                        if (map.get(i).get("INQ") == null) {
                           texta += "入库流量暂无数据、";
                        } else {
                           BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                           double INQ = inq.doubleValue();
                           texta += "入库流量" + INQ + "立方米每秒、";
                        }
                        if (map.get(i).get("W") == null) {
                           texta += "蓄水量暂无数据、";
                        } else {
                           BigDecimal w = (BigDecimal) map.get(i).get("W");
                           double W = w.doubleValue();
                           texta += "蓄水量" + W + "百万立方米、";
                        }
                        if (map.get(i).get("OTQ") == null) {
                           texta += "出库流量暂无数据;";
                        } else {
                           BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                           double OTQ = otq.doubleValue();
                           texta += "出库流量" + OTQ + "立方米每秒;";
                        }
//                  texta += "汛限水位暂无数据;";
                     } else if (stnm.equals("廖坊")) {
                        texth += "$$$$$" + stnm.replaceAll(" ", "") + "水库&&&&&";
                        if (RZ == 0) {
                           texth += "库水位暂无数据、";
                        } else {
                           texth += "库水位" + RZ + "米、";
                        }
                        if (v < 0) {
                           texth += "比昨日8时下降" + Math.abs(v) + "米、";
                        } else {
                           texth += "比昨日8时上涨" + Math.abs(v) + "米、";
                        }
                        if (map.get(i).get("INQ") == null) {
                           texth += "入库流量暂无数据、";
                        } else {
                           BigDecimal inq = (BigDecimal) map.get(i).get("INQ");
                           double INQ = inq.doubleValue();
                           texth += "入库流量" + INQ + "立方米每秒、";
                        }
                        if (map.get(i).get("W") == null) {
                           texth += "蓄水量暂无数据、";
                        } else {
                           BigDecimal w = (BigDecimal) map.get(i).get("W");
                           double W = w.doubleValue();
                           texth += "蓄水量" + W + "百万立方米、";
                        }
                        if (map.get(i).get("OTQ") == null) {
                           texth += "出库流量暂无数据。";
                        } else {
                           BigDecimal otq = (BigDecimal) map.get(i).get("OTQ");
                           double OTQ = otq.doubleValue();
                           texth += "出库流量" + OTQ + "立方米每秒。";
                        }
                        double v1 = roundToSignificantFigures(OTQ, 3);
                        String a = String.valueOf(v1);
                        String s = subZeroAndDot(a);
                        texth += "出库流量" + s + "立方米每秒。";
                     }
                  }
               }
            }
            if (number == 0) {
               text += texta + texth;
            } else {
               text += "有" + number + "个水库站超汛限;" + texta + texth;
            }
         }
         Map m = new HashMap();
         List list = new ArrayList();
         m.put("text", text);
         m.put("number", number);
         m.put("Yjlist", alist);
         m.put("list", blist);
         list.add(m);
         return R.data(list);
      }
      /**
       * 水库详情
       *
       * @param stcd
       * @return
       */
      @PostMapping("/selectInfo")
      public R selectInfo (String stcd){
         return R.data(rsvrRService.selectInfo(stcd));
      }
      @PostMapping("/selectTinfo")
      public R selectTinfo (String stcd){
         Calendar cal = Calendar.getInstance();
         int mnth = cal.get(Calendar.MONTH) + 1;
         return R.data(rsvrRService.selectTinfo(mnth, stcd));
      }
      /**
       * 求Map<K,V>中Key(键)的最大值
       *
       * @param map
       * @return
       */
      public static Object getMaxKey (Map < Double, Integer > map){
         if (map == null) return null;
         Set<Double> set = map.keySet();
         Object[] obj = set.toArray();
         Arrays.sort(obj);
         return obj[obj.length - 1];
      }
      /**
       * 求Map<K,V>中Value(值)的最大值
       *
       * @param map
       * @return
       */
      public static Object getMaxValue (Map < Integer, Integer > map){
         if (map == null) return null;
         Collection<Integer> c = map.values();
         Object[] obj = c.toArray();
         Arrays.sort(obj);
         return obj[obj.length - 1];
      }
      /**
       * 水位流量曲线
       *
       * @param stcd
       * @return
       */
      @PostMapping("/selList")
      public R selList (String stcd){
         List<Map<String, Object>> newList = rsvrRService.selList(stcd);
         Map<String, List<Map>> mm = new HashMap();
         for (Map temp : newList) {
            if (mm.containsKey(temp.get("LNNM")))
               mm.get(temp.get("LNNM")).add(temp);
            else {
               List<Map> ll = new ArrayList<>();
               ll.add(temp);
               mm.put((String) temp.get("LNNM"), ll);
            }
         }
         List<List<Map>> res = new ArrayList();
         for (Map.Entry<String, List<Map>> et : mm.entrySet()) {
            res.add(et.getValue());
         }
         return R.data(res);
      }
      /**
       * 库容曲线
       *
       * @param stcd
       * @return
       */
      @PostMapping("/selLists")
      public R selLists (String stcd){
         return R.data(rsvrRService.selLists(stcd));
      }
      /**
       * 水库站水位流量过程接口
       */
      @PostMapping("/selectRsvrList")
      @ApiOperation(value = "水库站水位过程接口", notes = "code,dateBegin,dateEnd")
      public R selectRsvrList (String code, String dateBegin, String dateEnd){
         List<Map<String, Object>> list = rsvrRService.selectRsvrList(code, dateBegin, dateEnd);
         return R.data(list);
      }
      /**
       * 河道水位流量过程接口
       */
      @PostMapping("/selectRiverList")
      @ApiOperation(value = "水库站水位过程接口", notes = "code,dateBegin,dateEnd")
      public R selectRiverList (String code, String dateBegin, String dateEnd){
         List<Map<String, Object>> list = rsvrRService.selectRsvrLists(code, dateBegin, dateEnd);
         return R.data(list);
      }
      /**
       * 水库实时预警
       */
      @ApiLog("水库实时预警")
      @PostMapping("/selectyj")
      @ApiOperation(value = "水库实时预警", notes = "")
      public R selectyj (String times,int mou, int k){
         Date date = null;
         // 把Date按照格式转换成字符串
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         try {
            date = sdf.parse(times);
         } catch (ParseException e) {
            e.printStackTrace();
         }
         String dateEnd = sdf.format(date);
         String egmd = "";
         String edmd = "";
         List<Map<String, Object>> selectfx = rsvrRService.selectfx();
         String b = (String) selectfx.get(0).get("BGMD");
         String e = (String) selectfx.get(0).get("EDMD");
         String b2 = (String) selectfx.get(1).get("BGMD");
         String e2 = (String) selectfx.get(1).get("EDMD");
         int bs = Integer.parseInt(b.trim());
         int es = Integer.parseInt(e.trim());
         int b2s = Integer.parseInt(b2.trim());
         int e2s = Integer.parseInt(e2.trim());
         if (mou >= bs && mou <= es) {
            egmd = b;
            edmd = e;
         } else if (mou >= b2s && mou <= e2s) {
            egmd = b2;
            edmd = e2;
         DecimalFormat dfs = new DecimalFormat("#0.00");
         text += "全市蓄水量" + dfs.format(count) + "百万立方米。";
         if (number == 0) {
            text += texta + texth;
         } else {
            String mous = "0901";
            int m = Integer.parseInt(mous);
            if (m >= bs && m <= es) {
               egmd = b;
               edmd = e;
            } else if (m >= b2s && m <= e2s) {
               egmd = b2;
               edmd = e2;
            }
            text += "有" + number + "个水库站超汛限;" + texta + texth;
         }
         List<Map<String, Object>> map;
         if (k == 13) {
            map = rsvrRService.selectyj(egmd, edmd, times, dateEnd);
         } else {
            map = rsvrRService.selectyj(egmd, edmd, times, dateEnd);
         }
         List<Map<String, Object>> lists = new ArrayList<>();
         for (int i = 0; i < map.size(); i++) {
            Map<String, Object> maps = new HashMap<String, Object>();
            BigDecimal bigDecimaldz = (BigDecimal) map.get(i).get("FSLTDZ");//汛限水位
            BigDecimal bigDecimalrz = (BigDecimal) map.get(i).get("RZ");//当前水位
            BigDecimal bigDecimallz = (BigDecimal) map.get(i).get("DSFLZ");//设计水位
            BigDecimal bigDecimalmz = (BigDecimal) map.get(i).get("NORMZ");//防洪高水位
            double dz = bigDecimaldz.doubleValue();
            double rz = bigDecimalrz.doubleValue();
            double lz = bigDecimallz.doubleValue();
            double mz = bigDecimalmz.doubleValue();
            double num = 0.5;
            double s = dz - num;
            if (dz == 0) {
               map.get(i).put("yj", "无预警");
               maps.put("YjList", map.get(i));
               lists.add(maps);
            } else {
               if (rz > 0 && rz < s) {
                  map.get(i).put("yj", "无预警");
               } else if (rz >= s && rz < dz) {
                  map.get(i).put("yj", "蓝色预警");
               } else if (rz >= dz && rz < mz) {
                  map.get(i).put("yj", "黄色预警");
               } else if (rz >= mz && rz < lz) {
                  map.get(i).put("yj", "橙色预警");
               } else {
                  map.get(i).put("yj", "红色预警");
               }
               maps.put("YjList", map.get(i));
               lists.add(maps);
            }
         }
         return R.data(lists);
      }
      Map m = new HashMap();
      List list = new ArrayList();
      m.put("text", text);
      m.put("number", number);
      m.put("Yjlist", alist);
      m.put("list", blist);
      list.add(m);
      return R.data(list);
   }
}