/** * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). *

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springblade.modules.river.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.modules.river.entity.RiverR; import org.springblade.modules.river.service.IRiverRService; import org.springblade.modules.river.vo.RiverRVO; import org.springblade.modules.river.wrapper.RiverRWrapper; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * 控制器 * * @author Blade * @since 2019-11-07 */ @RestController @AllArgsConstructor @RequestMapping("/riverr") @Api(value = "", tags = "接口") public class RiverRController extends BladeController { private IRiverRService riverRService; /** * 详情 */ @ApiLog("详情") @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入riverR") public R detail(RiverR riverR) { RiverR detail = riverRService.getOne(Condition.getQueryWrapper(riverR)); return R.data(RiverRWrapper.build().entityVO(detail)); } /** * 分页 */ @ApiLog("分页") @GetMapping("/list") @ApiOperationSupport(order = 2) @ApiOperation(value = "分页", notes = "传入riverR") public R> list(RiverR riverR, Query query) { IPage pages = riverRService.page(Condition.getPage(query), Condition.getQueryWrapper(riverR)); return R.data(RiverRWrapper.build().pageVO(pages)); } /** * 新增 */ @ApiLog("新增") @PostMapping("/save") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入riverR") public R save(@Valid @RequestBody RiverR riverR) { return R.status(riverRService.save(riverR)); } /** * 修改 */ @ApiLog("修改") @PostMapping("/update") @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入riverR") public R update(@Valid @RequestBody RiverR riverR) { return R.status(riverRService.updateById(riverR)); } /** * 新增或修改 */ @ApiLog("新增或修改") @PostMapping("/submit") @ApiOperationSupport(order = 6) @ApiOperation(value = "新增或修改", notes = "传入riverR") public R submit(@Valid @RequestBody RiverR riverR) { 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> selecthd = riverRService.selecthd(beginTime, endTime); // //Map sel = riverRService.sel(); // //selecthd.add(sel); // //基本站信息 // List> 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 { // //DecimalFormat dfs = new DecimalFormat("#0.000"); // texta += "流量" + Q + "立方米每秒;"; // } // } // } // } // } // } // } //// //河道涨幅,跌幅信息 // //List> 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); // // } /** * 河道最新 * * @return * @throws ParseException */ @PostMapping("/selecthdt") public R selecthdt() throws ParseException { int w = 1; SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = df.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 - w; 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 = ""; //定义统计数量 int number = 0; //定义List保存警戒信息 List alist = new ArrayList(); //定义List保存未警戒信息 List blist = new ArrayList(); //河道超警信息 List> selecthd = riverRService.selecthdt(dateBegin24, time, timec); //Map sel = riverRService.sel(); //selecthd.add(sel); List> list1 = riverRService.selectP(); //用来判断是否重复统计超警信息 Map mnum = new HashMap(); //查询数据为空 if (selecthd.size() == 0) { text += "暂无河道超警信息。廖家湾水位暂无数据,流量暂无数据;娄家村水位暂无数据,流量暂无数据;"; } //不为空遍历数据计算是否超出预警值 else { for (int i = 0; i < selecthd.size(); i++) { //实时河道水位值 BigDecimal z = (BigDecimal) selecthd.get(i).get("Z"); double Z = z.doubleValue(); //超警戒水位值 if (selecthd.get(i).get("WRZ") == null || selecthd.get(i).get("Q") == null) { String stnm = selecthd.get(i).get("STNM").toString(); if (stnm.equals("廖家湾") || stnm.equals("娄家村")) { String stcd = selecthd.get(i).get("STCD").toString(); //Map 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"); String format = dfc.format(vz); double v = Double.parseDouble(format); texta += stnm.replaceAll(" ", "") + "水位" + dfc.format(Z) + "米、"; if (v < 0) { texta += "比昨日8时下跌" + Math.abs(v) + "米、"; } else { texta += "比昨日8时上涨" + Math.abs(v) + "米、"; } if (selecthd.get(i).get("Q") == null) { texta += "流量暂无信息;"; } } blist.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) { String stnm = selecthd.get(i).get("STNM").toString(); if (stnm.equals("廖家湾") || stnm.equals("娄家村")) { String stcd = selecthd.get(i).get("STCD").toString(); //Map 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"); String format = dfc.format(vz); double v = Double.parseDouble(format); texta += stnm.replaceAll(" ", "") + "水位" + dfc.format(Z) + "米、"; if (v < 0) { texta += "比昨日8时下跌" + Math.abs(v) + "米、"; } else { texta += "比昨日8时上涨" + Math.abs(v) + "米、"; } if (selecthd.get(i).get("Q") == null) { texta += "流量暂无数据;"; } else { //DecimalFormat dfl = new DecimalFormat("#0.000"); double v5 = roundToSignificantFigures(Q, 3); String a = String.valueOf(v5); String s1 = subZeroAndDot(a); texta += "流量" + s1 + "立方米每秒;"; } } blist.add(selecthd.get(i)); } else { //如果map集合保存了站点则不重复统计数量 if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) { } else { alist.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("娄家村")) { String stcd = selecthd.get(i).get("STCD").toString(); //Map 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"); String format = dfc.format(vz); double v = Double.parseDouble(format); texta += "。" + stnm.replaceAll(" ", "") + "站超出警戒水位" + dfc.format(v3) + "米、" + "水位" + dfc.format(Z) + "米、"; if (v < 0) { texta += "比昨日8时下跌" + Math.abs(v) + "米、"; } else { texta += "比昨日8时上涨" + Math.abs(v) + "米、"; } if (selecthd.get(i).get("Q") == null) { texta += "流量暂无数据、"; } else { //DecimalFormat dfl = new DecimalFormat("#0.000"); //texta += "流量" + Q + "立方米每秒;"; double v5 = roundToSignificantFigures(Q, 3); String a = String.valueOf(v5); String s1 = subZeroAndDot(a); texta += "流量" + s1 + "立方米每秒;"; } } } } } if (number == 0) { text += "暂无河道超警戒信息。" + texta; } else { text += "有" + number + "个河道站超警戒。" + texta; } } Map m = new HashMap(); List list = new ArrayList(); m.put("text", text); m.put("number", number); m.put("Yjlist", alist); m.put("list1", list1); m.put("list", blist); list.add(m); return R.data(list); } /** * 河道实时预警 * * @return */ @ApiLog("河道实时预警") @PostMapping("/selecthdyj") public R selecthdyj(String times, 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); List> list; if (k == 13) { list = riverRService.selecthdyj(times, dateEnd); } else { list = riverRService.selecthdyj(times, dateEnd); } List> lists = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { Map maps = new HashMap(); BigDecimal b = (BigDecimal) list.get(i).get("Z"); int i1 = b.intValue(); if (i1 == 0) { list.get(i).put("yuc", "无预警"); } else { BigDecimal bigDecimalz = (BigDecimal) list.get(i).get("Z");//实时水位 BigDecimal bigDecimalw = (BigDecimal) list.get(i).get("WRZ");//警戒水位 double wrz = bigDecimalw.doubleValue();//警戒水位 double z = bigDecimalz.doubleValue();//实时水位 Double fy = (Double) list.get(i).get("fy"); Double oy = (Double) list.get(i).get("oy"); Double toy = (Double) list.get(i).get("toy"); Double ty = (Double) list.get(i).get("ty"); if (z < wrz || wrz == 0) { list.get(i).put("yuc", "无预警"); } else if (z >= wrz && z < fy) { list.get(i).put("yuc", "蓝色预警"); } else if (z >= fy && z < oy) { list.get(i).put("yuc", "黄色预警"); } else if (z >= oy && z < ty) { list.get(i).put("yuc", "橙色预警"); } else { list.get(i).put("yuc", "红色预警"); } } maps.put("YjList", list.get(i)); lists.add(maps); } return R.data(lists); } /** * 求Map中Key(键)的最大值 * * @param map * @return */ public static Object getMaxKey(Map map) { if (map == null) return null; Set set = map.keySet(); Object[] obj = set.toArray(); Arrays.sort(obj); return obj[obj.length - 1]; } /** * 求Map中Value(值)的最大值 * * @param map * @return */ public static Object getMaxValue(Map map) { if (map == null) return null; Collection c = map.values(); Object[] obj = c.toArray(); Arrays.sort(obj); return obj[obj.length - 1]; } 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 = riverRService.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); // } // /** // * 河道自定义时间查询 // * // * @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 t = beginTime.substring(11, 13); // String hs; // if (t.substring(0, 1).equals("0")) { // hs = beginTime.substring(12, 13); // } else { // hs = beginTime.substring(11, 13); // } // String ts = endTime.substring(11, 13); // String hss; // if (ts.substring(0, 1).equals("0")) { // hss = beginTime.substring(12, 13); // } else { // hss = beginTime.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> selecthd = riverRService.selecthdcs(beginTime, endTime); // //Map sel = riverRService.sel(); // //selecthd.add(sel); // //基本站信息 // List> 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 { // double v5 = roundToSignificantFigures(Q, 3); // String a = String.valueOf(v5); // String s1 = subZeroAndDot(a); // texta += "流量" + s1 + "立方米每秒;"; // } // } // } // 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"); // double v5 = roundToSignificantFigures(Q, 3); // String a = String.valueOf(v5); // String s1 = subZeroAndDot(a); // texta += "流量" + s1 + "立方米每秒;"; // } // } // } // } // } // // } // } // 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); // // } /** * 河道自定义时间查询 * * @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 t = beginTime.substring(11, 13); String hs; if (t.substring(0, 1).equals("0")) { hs = beginTime.substring(12, 13); } else { hs = beginTime.substring(11, 13); } String ts = endTime.substring(11, 13); String hss; if (ts.substring(0, 1).equals("0")) { hss = beginTime.substring(12, 13); } else { hss = beginTime.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; String s = riverRService.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> selecthd = riverRService.selecthdcss(beginTime, endTime,code); Collections.sort(selecthd, new Comparator>() { public int compare(Map o1, Map o2) { Double name1 = Double.valueOf(o1.get("Z").toString()) ;//name1是从你list里面拿出来的一个 Double name2 = Double.valueOf(o2.get("Z").toString()) ; //name1是从你list里面拿出来的第二个name return name2.compareTo(name1); } }); //基本站信息 List> 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 { double v5 = roundToSignificantFigures(Q, 3); String a = String.valueOf(v5); String s1 = subZeroAndDot(a); texta += "流量" + s1 + "立方米每秒;"; } } } 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"); double v5 = roundToSignificantFigures(Q, 3); String a = String.valueOf(v5); String s1 = subZeroAndDot(a); texta += "流量" + s1 + "立方米每秒;"; } } } } } } } 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); } // @PostMapping("/ss") // public R ss(String beginTime, String endTime) { // String s = riverRService.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> list = riverRService.selecthdcss(beginTime, endTime, code); // Collections.sort(list, new Comparator>() { // public int compare(Map o1, Map o2) { // Double name1 = Double.valueOf(o1.get("Z").toString()) ;//name1是从你list里面拿出来的一个 // Double name2 = Double.valueOf(o2.get("Z").toString()) ; //name1是从你list里面拿出来的第二个name // return name2.compareTo(name1); // } // }); // return R.data(list); // } }