/** * 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.rsvr.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.city.service.CityService; import org.springblade.modules.rsvr.entity.RsvrR; import org.springblade.modules.rsvr.service.IRsvrRService; import org.springblade.modules.rsvr.vo.RsvrRVO; import org.springblade.modules.rsvr.wrapper.RsvrRWrapper; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; 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-11 */ @RestController @AllArgsConstructor @RequestMapping("/rsvrr") @Api(value = "", tags = "接口") public class RsvrRController extends BladeController { private IRsvrRService rsvrRService; private CityService cityService; /** * 详情 */ @ApiLog("详情") @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入rsvrR") public R detail(RsvrR rsvrR) { RsvrR detail = rsvrRService.getOne(Condition.getQueryWrapper(rsvrR)); return R.data(RsvrRWrapper.build().entityVO(detail)); } /** * 分页 */ @ApiLog("分页") @GetMapping("/list") @ApiOperationSupport(order = 2) @ApiOperation(value = "分页", notes = "传入rsvrR") public R> list(RsvrR rsvrR, Query query) { IPage pages = rsvrRService.page(Condition.getPage(query), Condition.getQueryWrapper(rsvrR)); return R.data(RsvrRWrapper.build().pageVO(pages)); } /** * 新增 */ @ApiLog("新增") @PostMapping("/save") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入rsvrR") public R save(@Valid @RequestBody RsvrR rsvrR) { return R.status(rsvrRService.save(rsvrR)); } /** * 修改 */ @ApiLog("修改") @PostMapping("/update") @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入rsvrR") public R update(@Valid @RequestBody RsvrR rsvrR) { return R.status(rsvrRService.updateById(rsvrR)); } /** * 新增或修改 */ @ApiLog(" 新增或修改") @PostMapping("/submit") @ApiOperationSupport(order = 6) @ApiOperation(value = "新增或修改", notes = "传入rsvrR") public R submit(@Valid @RequestBody RsvrR rsvrR) { return R.status(rsvrRService.saveOrUpdate(rsvrR)); } /** * 水库水情自定义信息 */ @PostMapping("/selectsk") public R selectyjck(String beginTime, String endTime) throws ParseException { String substring = beginTime.substring(0, 10); String r = beginTime.substring(11, 13); //截取月日 String[] strs = substring.split("-"); //月 String year = strs[1].toString(); //日 String day = strs[2].toString(); String substrings = endTime.substring(0, 10); String rs = endTime.substring(11, 13); //截取月日 String[] strss = substrings.split("-"); //月 String years = strss[1].toString(); //日 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 = ""; List> 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 = rsvrRService.selectyjck(egmd, edmd, beginTime, endTime); String s = rsvrRService.selectCode(beginTime, endTime); 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> sel = rsvrRService.sel(egmd, edmd, code); map.addAll(sel); //用来判断是否重复统计超警信息 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(); 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 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) { } 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 + "立方米每秒。"; } } } } } } if (number == 0) { text += texta + texth; } else { text += "有" + number + "个水库站预警;" + texta + texth; } //水库涨幅,跌幅信息 List> selecthds = rsvrRService.selectsk(beginTime, endTime); Map m1 = new HashMap(); Map m2 = new HashMap(); Map m = new HashMap(); for (int j = 0; j < selecthds.size(); j++) { String stcd = selecthds.get(j).get("STCD").toString(); //站点名称 String stnm = selecthds.get(j).get("STNM").toString(); if (selecthds.get(j).get("ADDVNM") == null) { continue; } //省,市 String addvcd5 = selecthds.get(j).get("ADDVNM").toString(); //最大值 BigDecimal maxZ = (BigDecimal) selecthds.get(j).get("maxZ"); //最大值出现时间 String maxTM = selecthds.get(j).get("maxTM").toString(); //最小值 BigDecimal minZ = (BigDecimal) selecthds.get(j).get("minZ"); //最小值出现时间 String minTM = selecthds.get(j).get("minTM").toString(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date sd1 = df.parse(maxTM); Date sd2 = df.parse(minTM); double v = maxZ.doubleValue(); double v1 = minZ.doubleValue(); //涨幅值 double v2 = v - v1; double v3 = (double) Math.round(v2 * 100) / 100; m1.put(v3, stnm.replaceAll(" ", "") + "站"); c.put(stcd, v3); //获取涨幅最大的信息 } if (m1.size() != 0) { Object maxKey = getMaxKey(m1); String s1 = m1.get(maxKey).toString(); text += " 涨幅最大的是:" + s1 + "(涨" + maxKey + "米)。"; } // //如果最大时间大于最小时间就是涨幅 // if (sd1.after(sd2)) { // //创建一个map集合保存涨幅数据 // double v = maxZ.doubleValue(); // double v1 = minZ.doubleValue(); // //涨幅值 // double v2 = v - v1; // double v3 = (double) Math.round(v2 * 100) / 100; // m1.put(v3, stnm.replaceAll(" ", "") + "站"); // c.put(stcd, v3); // } // //跌幅 // 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> 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 = 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 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; } 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 + "立方米每秒;"; } // 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)); } 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; } } 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中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]; } /** * 水位流量曲线 * * @param stcd * @return */ @PostMapping("/selList") public R selList(String stcd) { List> newList = rsvrRService.selList(stcd); Map> mm = new HashMap(); for (Map temp : newList) { if (mm.containsKey(temp.get("LNNM"))) mm.get(temp.get("LNNM")).add(temp); else { List ll = new ArrayList<>(); ll.add(temp); mm.put((String) temp.get("LNNM"), ll); } } List> res = new ArrayList(); for (Map.Entry> 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> 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> 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> 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; if (k == 13) { map = rsvrRService.selectyj(egmd, edmd, times, dateEnd); } else { map = rsvrRService.selectyj(egmd, edmd, times, dateEnd); } List> lists = new ArrayList<>(); for (int i = 0; i < map.size(); i++) { Map maps = new HashMap(); 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); } }