tangzy
2021-10-07 2461281f7bdf6a4e7a016b528280ed5ec7b9f2a2
src/main/java/org/springblade/modules/river/controller/RiverRController.java
@@ -114,224 +114,181 @@
      return R.status(riverRService.saveOrUpdate(riverR));
   }
   /**
    * 河道自定义时间查询
    *
    * @param beginTime
    * @param endTime
    * @return
    * @throws ParseException
    */
   @PostMapping("/selecthd")
   public R selecthd(String beginTime, String endTime) throws ParseException {
      String substring = beginTime.substring(0, 10);
      String substrings = endTime.substring(0, 10);
      String hs = beginTime.substring(11, 13);
      String hss = endTime.substring(11, 13);
      //截取月日
      String[] strs = substring.split("-");
      //月
      String year = strs[1].toString();
      //日
      String day = strs[2].toString();
      //截取月日
      String[] strss = substrings.split("-");
      //月
      String years = strss[1].toString();
      //日
      String days = strss[2].toString();
      //定义短信内容头
      String text = year + "月" + day + "日" + hs + "时" + "-" + years + "月" + days + "日" + hss + "时";
      String texta = "";
      //定义统计数量
      int number = 0;
      //河道超警信息
      List<Map<String, Object>> selecthd = riverRService.selecthd(beginTime, endTime);
      //Map<String, Object> sel = riverRService.sel();
      //selecthd.add(sel);
      //基本站信息
      List<Map<String, Object>> list1 = riverRService.selectP();
      //用来判断是否重复统计超警信息
      Map mnum = new HashMap();
      Map mnums = new HashMap();
      //定义list保存预警信息
      List ylist = new ArrayList();
      //定义list保存未预警信息
      List alist = new ArrayList();
      //查询数据为空
      if (selecthd.size() == 0) {
         text += "暂无河道超警信息。廖家湾水位暂无数据,流量暂无数据;娄家村水位暂无数据,流量暂无数据;";
      }
      //不为空遍历数据计算是否超出预警值
      else {
         int c = 0;
         for (int i = 0; i < selecthd.size(); i++) {
            //实时河道水位值
            BigDecimal z = (BigDecimal) selecthd.get(i).get("Z");
            double Z = z.doubleValue();
            //超警戒水位值
            if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
            } else {
               if (selecthd.get(i).get("WRZ") == null || selecthd.get(i).get("Q") == null) {
                  String stnm = selecthd.get(i).get("STNM").toString();
                  mnum.put(selecthd.get(i).get("STCD").toString(), i);
                  if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                     DecimalFormat df = new DecimalFormat("#0.00");
                     texta += stnm.replaceAll(" ", "") + "水位" + df.format(Z) + "米,";
                     if (selecthd.get(i).get("Q") == null) {
                        texta += "流量暂无数据";
                     }
                  }
                  alist.add(selecthd.get(i));
                  continue;
               }
               BigDecimal wrz = (BigDecimal) selecthd.get(i).get("WRZ");
               double WRZ = wrz.doubleValue();
               BigDecimal q = (BigDecimal) selecthd.get(i).get("Q");
               double Q = q.doubleValue();
               if (Z <= WRZ) {
                  if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
                  } else {
                     String stnm = selecthd.get(i).get("STNM").toString();
                     mnum.put(selecthd.get(i).get("STCD").toString(), i);
                     if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                        DecimalFormat df = new DecimalFormat("#0.00");
                        texta += stnm.replaceAll(" ", "") + "水位" + df.format(Z) + "米,";
                        if (selecthd.get(i).get("Q") == null) {
                           texta += "流量暂无数据";
                        } else {
                           DecimalFormat dfs = new DecimalFormat("#0.000");
                           texta += "流量" + Q + "立方米每秒;";
                        }
                     }
                  }
                  alist.add(selecthd.get(i));
               } else {
                  //如果map集合保存了站点则不重复统计数量
                  if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
                  } else {
                     ylist.add(selecthd.get(i));
                     mnum.put(selecthd.get(i).get("STCD").toString(), i);
                     number++;
                     //超出警戒水位多少
                     Double num = Z - WRZ;
                     double v3 = (double) Math.round(num * 100) / 100;
                     //县,市
                     String addvcd5 = selecthd.get(i).get("ADDVNM").toString();
                     //站点名称
                     String stnm = selecthd.get(i).get("STNM").toString();
                     if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                        DecimalFormat df = new DecimalFormat("#0.00");
                        texta += stnm.replaceAll(" ", "") + "站超出警戒水位" + df.format(v3) + "米," + "水位" + df.format(Z) + "米,";
                        if (selecthd.get(i).get("Q") == null) {
                           texta += "流量暂无数据;";
                        } else {
//   /**
//    * 河道自定义时间查询
//    *
//    * @param beginTime
//    * @param endTime
//    * @return
//    * @throws ParseException
//    */
//   @PostMapping("/selecthd")
//   public R selecthd(String beginTime, String endTime) throws ParseException {
//      String substring = beginTime.substring(0, 10);
//      String substrings = endTime.substring(0, 10);
//      String hs = beginTime.substring(11, 13);
//      String hss = endTime.substring(11, 13);
//      //截取月日
//      String[] strs = substring.split("-");
//      //月
//      String year = strs[1].toString();
//      //日
//      String day = strs[2].toString();
//      //截取月日
//      String[] strss = substrings.split("-");
//      //月
//      String years = strss[1].toString();
//      //日
//      String days = strss[2].toString();
//      //定义短信内容头
//      String text = year + "月" + day + "日" + hs + "时" + "-" + years + "月" + days + "日" + hss + "时";
//      String texta = "";
//      //定义统计数量
//      int number = 0;
//      //河道超警信息
//      List<Map<String, Object>> selecthd = riverRService.selecthd(beginTime, endTime);
//      //Map<String, Object> sel = riverRService.sel();
//      //selecthd.add(sel);
//      //基本站信息
//      List<Map<String, Object>> list1 = riverRService.selectP();
//      //用来判断是否重复统计超警信息
//      Map mnum = new HashMap();
//      Map mnums = new HashMap();
//      //定义list保存预警信息
//      List ylist = new ArrayList();
//      //定义list保存未预警信息
//      List alist = new ArrayList();
//      //查询数据为空
//      if (selecthd.size() == 0) {
//         text += "暂无河道超警信息。廖家湾水位暂无数据,流量暂无数据;娄家村水位暂无数据,流量暂无数据;";
//      }
//      //不为空遍历数据计算是否超出预警值
//      else {
//         int c = 0;
//         for (int i = 0; i < selecthd.size(); i++) {
//            //实时河道水位值
//            BigDecimal z = (BigDecimal) selecthd.get(i).get("Z");
//            double Z = z.doubleValue();
//            //超警戒水位值
//            if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
//            } else {
//               if (selecthd.get(i).get("WRZ") == null || selecthd.get(i).get("Q") == null) {
//                  String stnm = selecthd.get(i).get("STNM").toString();
//                  mnum.put(selecthd.get(i).get("STCD").toString(), i);
//                  if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
//                     DecimalFormat df = new DecimalFormat("#0.00");
//                     texta += stnm.replaceAll(" ", "") + "水位" + df.format(Z) + "米,";
//                     if (selecthd.get(i).get("Q") == null) {
//                        texta += "流量暂无数据";
//                     }
//                  }
//                  alist.add(selecthd.get(i));
//                  continue;
//               }
//               BigDecimal wrz = (BigDecimal) selecthd.get(i).get("WRZ");
//               double WRZ = wrz.doubleValue();
//               BigDecimal q = (BigDecimal) selecthd.get(i).get("Q");
//               double Q = q.doubleValue();
//               if (Z <= WRZ) {
//                  if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
//                  } else {
//                     String stnm = selecthd.get(i).get("STNM").toString();
//                     mnum.put(selecthd.get(i).get("STCD").toString(), i);
//                     if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
//                        DecimalFormat df = new DecimalFormat("#0.00");
//                        texta += stnm.replaceAll(" ", "") + "水位" + df.format(Z) + "米,";
//                        if (selecthd.get(i).get("Q") == null) {
//                           texta += "流量暂无数据";
//                        } else {
                           //DecimalFormat dfs = new DecimalFormat("#0.000");
                           texta += "流量" + Q + "立方米每秒;";
                        }
                     }
                  }
               }
            }
//                           texta += "流量" + Q + "立方米每秒;";
//                        }
//                     }
//                  }
//                  alist.add(selecthd.get(i));
//               } else {
//                  //如果map集合保存了站点则不重复统计数量
//                  if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
//                  } else {
//                     ylist.add(selecthd.get(i));
//                     mnum.put(selecthd.get(i).get("STCD").toString(), i);
//                     number++;
//                     //超出警戒水位多少
//                     Double num = Z - WRZ;
//                     double v3 = (double) Math.round(num * 100) / 100;
//                     //县,市
//                     String addvcd5 = selecthd.get(i).get("ADDVNM").toString();
//                     //站点名称
//                     String stnm = selecthd.get(i).get("STNM").toString();
//                     if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
//                        DecimalFormat df = new DecimalFormat("#0.00");
//                        texta += stnm.replaceAll(" ", "") + "站超出警戒水位" + df.format(v3) + "米," + "水位" + df.format(Z) + "米,";
//                        if (selecthd.get(i).get("Q") == null) {
//                           texta += "流量暂无数据;";
//                        } else {
//                           //DecimalFormat dfs = new DecimalFormat("#0.000");
//                           texta += "流量" + Q + "立方米每秒;";
//                        }
//                     }
//                  }
//               }
//            }
//         }
//      }
////      //河道涨幅,跌幅信息
//      //List<Map<String, Object>> selecthds = riverRService.selecthds(beginTime, endTime);
//      Map m1 = new HashMap();
//      Map m2 = new HashMap();
//      Map c = new HashMap();
//      Map m = new HashMap();
//      List list = new ArrayList();
////      for (int j = 0; j < selecthds.size(); j++) {
////         //站点编码
////         String stcd = selecthds.get(j).get("STCD").toString();
////         //站点名称
////         String stnm = selecthds.get(j).get("STNM").toString();
////         //省,市
////         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 (number == 0) {
//         text += "暂无河道超警戒信息。" + texta;
//      } else {
//         text += "有" + number + "个河道站超警戒。" + texta;
//      }
////      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("list1", list1);
//      m.put("clist", c);
//      list.add(m);
//      return R.data(list);
//
//   }
         }
         if (number == 0) {
            text += "暂无河道超警戒信息。" + texta;
         } else {
            text += "有" + number + "个河道站超警戒。" + texta;
         }
      }
      //河道涨幅,跌幅信息
      List<Map<String, Object>> selecthds = riverRService.selecthds(beginTime, endTime);
      Map m1 = new HashMap();
      Map m2 = new HashMap();
      Map c = new HashMap();
      Map m = new HashMap();
      List list = new ArrayList();
      for (int j = 0; j < selecthds.size(); j++) {
         //站点编码
         String stcd = selecthds.get(j).get("STCD").toString();
         //站点名称
         String stnm = selecthds.get(j).get("STNM").toString();
         //省,市
         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(Math.abs(v3), stnm.replaceAll(" ", "") + "站");
//            c.put(stcd,Math.abs(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){
//         text += "暂无涨幅信息。";
//      }
//      else {
//         //获取涨幅最大的信息
//         Object maxKey = getMaxKey(m1);
//         String s1 = m1.get(maxKey).toString();
//         text += "涨幅最大的是:" + s1 + "(涨" + maxKey + "米)。";
//      }
//      if (m2.size()==0){
//         text += "暂无跌幅信息。";
//      }
//      else {
//         //获取跌幅最大的信息
//         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("list1", list1);
      m.put("clist", c);
      list.add(m);
      return R.data(list);
   }
   /**
    * 河道最新
@@ -397,8 +354,8 @@
               String stnm = selecthd.get(i).get("STNM").toString();
               if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                  String stcd = selecthd.get(i).get("STCD").toString();
                  Map<String, Object> stringObjectMap = riverRService.selectZ(stcd, timec);
                  BigDecimal zc = (BigDecimal) stringObjectMap.get("Z");
                  //Map<String, Object> stringObjectMap = riverRService.selectZ(stcd, timec);
                  BigDecimal zc = (BigDecimal) selecthd.get(i).get("Zc");
                  double ZC = zc.doubleValue();
                  double vz = Z - ZC;
                  DecimalFormat dfc = new DecimalFormat("#0.00");
@@ -425,8 +382,8 @@
               String stnm = selecthd.get(i).get("STNM").toString();
               if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                  String stcd = selecthd.get(i).get("STCD").toString();
                  Map<String, Object> stringObjectMap = riverRService.selectZ(stcd, timec);
                  BigDecimal zc = (BigDecimal) stringObjectMap.get("Z");
                  //Map<String, Object> stringObjectMap = riverRService.selectZ(stcd, timec);
                  BigDecimal zc = (BigDecimal) selecthd.get(i).get("Zc");
                  double ZC = zc.doubleValue();
                  double vz = Z - ZC;
                  DecimalFormat dfc = new DecimalFormat("#0.00");
@@ -462,8 +419,8 @@
                  String stnm = selecthd.get(i).get("STNM").toString();
                  if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                     String stcd = selecthd.get(i).get("STCD").toString();
                     Map<String, Object> stringObjectMap = riverRService.selectZ(stcd, timec);
                     BigDecimal zc = (BigDecimal) stringObjectMap.get("Z");
                     //Map<String, Object> stringObjectMap = riverRService.selectZ(stcd, timec);
                     BigDecimal zc = (BigDecimal) selecthd.get(i).get("Zc");
                     double ZC = zc.doubleValue();
                     double vz = Z - ZC;
                     DecimalFormat dfc = new DecimalFormat("#0.00");
@@ -588,4 +545,167 @@
      return obj[obj.length - 1];
   }
   /**
    * 河道自定义时间查询
    *
    * @param beginTime
    * @param endTime
    * @return
    * @throws ParseException
    */
   @PostMapping("/selecthd")
   public R selecthd(String beginTime, String endTime) throws ParseException {
      String substring = beginTime.substring(0, 10);
      String substrings = endTime.substring(0, 10);
      String hs = beginTime.substring(11, 13);
      String hss = endTime.substring(11, 13);
      //截取月日
      String[] strs = substring.split("-");
      //月
      String year = strs[1].toString();
      //日
      String day = strs[2].toString();
      //截取月日
      String[] strss = substrings.split("-");
      //月
      String years = strss[1].toString();
      //日
      String days = strss[2].toString();
      //定义短信内容头
      String text = year + "月" + day + "日" + hs + "时" + "-" + years + "月" + days + "日" + hss + "时";
      String texta = "";
      //定义统计数量
      int number = 0;
      //河道超警信息
      List<Map<String, Object>> selecthd = riverRService.selecthdcs(beginTime, endTime);
      //Map<String, Object> sel = riverRService.sel();
      //selecthd.add(sel);
      //基本站信息
      List<Map<String, Object>> list1 = riverRService.selectP();
      //用来判断是否重复统计超警信息
      Map mnum = new HashMap();
      Map mnums = new HashMap();
      //定义list保存预警信息
      List ylist = new ArrayList();
      //定义list保存未预警信息
      List alist = new ArrayList();
      Map m1 = new HashMap();
      Map m2 = new HashMap();
      Map czf = new HashMap();
      Map m = new HashMap();
      List list = new ArrayList();
      //查询数据为空
      if (selecthd.size() == 0) {
         text += "暂无河道超警信息。廖家湾水位暂无数据,流量暂无数据;娄家村水位暂无数据,流量暂无数据;";
      }
      //不为空遍历数据计算是否超出预警值
      else {
         int c = 0;
         for (int i = 0; i < selecthd.size(); i++) {
            //实时河道水位值
            BigDecimal z = (BigDecimal) selecthd.get(i).get("Z");
            double Z = z.doubleValue();
            String stcd = selecthd.get(i).get("STCD").toString();
            //站点名称
            String stnms = selecthd.get(i).get("STNM").toString();
            //最大值
            BigDecimal maxZ = (BigDecimal) selecthd.get(i).get("maxZ");
            //最小值
            BigDecimal minZ = (BigDecimal) selecthd.get(i).get("minZ");
            double v = maxZ.doubleValue();
            double v1 = minZ.doubleValue();
            //涨幅值
            double v2 = v - v1;
            double v4 = (double) Math.round(v2 * 100) / 100;
            m1.put(v4, stnms.replaceAll(" ", "") + "站");
            czf.put(stcd, v4);
            //超警戒水位值
            if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
            } else {
               if (selecthd.get(i).get("WRZ") == null || selecthd.get(i).get("Q") == null) {
                  String stnm = selecthd.get(i).get("STNM").toString();
                  mnum.put(selecthd.get(i).get("STCD").toString(), i);
                  if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                     DecimalFormat df = new DecimalFormat("#0.00");
                     texta += stnm.replaceAll(" ", "") + "水位" + df.format(Z) + "米,";
                     if (selecthd.get(i).get("Q") == null) {
                        texta += "流量暂无数据";
                     }
                  }
                  alist.add(selecthd.get(i));
                  continue;
               }
               BigDecimal wrz = (BigDecimal) selecthd.get(i).get("WRZ");
               double WRZ = wrz.doubleValue();
               BigDecimal q = (BigDecimal) selecthd.get(i).get("Q");
               double Q = q.doubleValue();
               if (Z <= WRZ) {
                  if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
                  } else {
                     String stnm = selecthd.get(i).get("STNM").toString();
                     mnum.put(selecthd.get(i).get("STCD").toString(), i);
                     if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                        DecimalFormat df = new DecimalFormat("#0.00");
                        texta += stnm.replaceAll(" ", "") + "水位" + df.format(Z) + "米,";
                        if (selecthd.get(i).get("Q") == null) {
                           texta += "流量暂无数据";
                        } else {
                           DecimalFormat dfs = new DecimalFormat("#0.000");
                           texta += "流量" + Q + "立方米每秒;";
                        }
                     }
                  }
                  alist.add(selecthd.get(i));
               } else {
                  //如果map集合保存了站点则不重复统计数量
                  if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
                  } else {
                     ylist.add(selecthd.get(i));
                     mnum.put(selecthd.get(i).get("STCD").toString(), i);
                     number++;
                     //超出警戒水位多少
                     Double num = Z - WRZ;
                     double v3 = (double) Math.round(num * 100) / 100;
                     //县,市
                     String addvcd5 = selecthd.get(i).get("ADDVNM").toString();
                     //站点名称
                     String stnm = selecthd.get(i).get("STNM").toString();
                     if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                        DecimalFormat df = new DecimalFormat("#0.00");
                        texta += stnm.replaceAll(" ", "") + "站超出警戒水位" + df.format(v3) + "米," + "水位" + df.format(Z) + "米,";
                        if (selecthd.get(i).get("Q") == null) {
                           texta += "流量暂无数据;";
                        } else {
                           //DecimalFormat dfs = new DecimalFormat("#0.000");
                           texta += "流量" + Q + "立方米每秒;";
                        }
                     }
                  }
               }
            }
         }
      }
      if (number == 0) {
         text += "暂无河道超警戒信息。" + texta;
      } else {
         text += "有" + number + "个河道站超警戒。" + texta;
      }
      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("list1", list1);
      m.put("clist", czf);
      list.add(m);
      return R.data(list);
   }
}