tangzy
2021-09-13 bc76e975aae3837eae625a2e3ffff7d02a5fc3f3
src/main/java/org/springblade/modules/rsvr/controller/RsvrRController.java
@@ -441,315 +441,245 @@
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date sd1 = df.parse(maxTM);
            Date sd2 = df.parse(minTM);
            //如果最大时间大于最小时间就是涨幅
            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) {
            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);
            //获取涨幅最大的信息
            Object maxKey = getMaxKey(m1);
            String s1 = m1.get(maxKey).toString();
            text += " 涨幅最大的是:" + s1 + "(涨" + maxKey + "米)。";
            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 + "米)。";
//            //如果最大时间大于最小时间就是涨幅
//            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);
         }
         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);
      }
      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());
      /**
       * 水库水情最新信息
       */
      @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) {
         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 (m >= b2s && m <= e2s) {
         } else if (mou >= b2s && mou <= 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 + "立方米每秒。";
                  }
               }
               blist.add(map.get(i));
               continue;
         } 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;
            }
            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();
                     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 + "立方米每秒;";
                  }
         }
         //水库水情预警信息
         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 + "米、";
                  } 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 + "立方米每秒。";
                     }
                  }
                  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 + "立方米每秒。";
                  }
                  blist.add(map.get(i));
                  continue;
               }
               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;
               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) {
@@ -818,217 +748,302 @@
                        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 + "立方米每秒。";
                        }
                     }
                  }
               }
            }
            if (number == 0) {
               text += texta + texth;
            } else {
               text += "有" + number + "个水库站超汛限;" + texta + texth;
            }
         }
         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);
            }
         }
      }
      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);
      }
      List<List<Map>> res = new ArrayList();
      for (Map.Entry<String, List<Map>> et : mm.entrySet()) {
         res.add(et.getValue());
      /**
       * 库容曲线
       *
       * @param stcd
       * @return
       */
      @PostMapping("/selLists")
      public R selLists (String stcd){
         return R.data(rsvrRService.selLists(stcd));
      }
      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();
      /**
       * 水库站水位流量过程接口
       */
      @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);
      }
      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) {
      /**
       * 河道水位流量过程接口
       */
      @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 (m >= b2s && m <= e2s) {
         } else if (mou >= b2s && mou <= 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", "红色预警");
            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;
            }
            maps.put("YjList", map.get(i));
            lists.add(maps);
         }
         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);
      }
      return R.data(lists);
   }
}