/**
|
* Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com).
|
* <p>
|
* 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
|
* <p>
|
* http://www.apache.org/licenses/LICENSE-2.0
|
* <p>
|
* 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<RsvrRVO> 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<IPage<RsvrRVO>> list(RsvrR rsvrR, Query query) {
|
IPage<RsvrR> 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<Map<String, Object>> selectfx = rsvrRService.selectfx();
|
String b = (String) selectfx.get(0).get("BGMD");
|
String e = (String) selectfx.get(0).get("EDMD");
|
String b2 = (String) selectfx.get(1).get("BGMD");
|
String e2 = (String) selectfx.get(1).get("EDMD");
|
int bs = Integer.parseInt(b.trim());
|
int es = Integer.parseInt(e.trim());
|
int b2s = Integer.parseInt(b2.trim());
|
int e2s = Integer.parseInt(e2.trim());
|
if (mou >= bs && mou <= es) {
|
egmd = b;
|
edmd = e;
|
} else if (mou >= b2s && mou <= e2s) {
|
egmd = b2;
|
edmd = e2;
|
} else {
|
String mous = "0901";
|
int m = Integer.parseInt(mous);
|
if (m >= bs && m <= es) {
|
egmd = b;
|
edmd = e;
|
} else if (m >= b2s && m <= e2s) {
|
egmd = b2;
|
edmd = e2;
|
}
|
}
|
String s = rsvrRService.selectCode(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<Map<String, Object>> map = rsvrRService.selectyjck(egmd, edmd, beginTime, endTime);
|
List<Map<String, Object>> sel = rsvrRService.sel(egmd, edmd, code);
|
map.addAll(sel);
|
//用来判断是否重复统计超警信息
|
Map mnum = new HashMap();
|
Map mnums = new HashMap();
|
Map c = new HashMap();
|
//定义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<Map<String, Object>> selecthds = rsvrRService.selectsk(beginTime, endTime);
|
Map m1 = new HashMap();
|
Map m2 = new HashMap();
|
Map m = new HashMap();
|
// for (int j = 0; j < selecthds.size(); j++) {
|
// String stcd = selecthds.get(j).get("STCD").toString();
|
// //站点名称
|
// String stnm = selecthds.get(j).get("STNM").toString();
|
// if (selecthds.get(j).get("ADDVNM") == null) {
|
// continue;
|
// }
|
// //省,市
|
// String addvcd5 = selecthds.get(j).get("ADDVNM").toString();
|
// //最大值
|
// BigDecimal maxZ = (BigDecimal) selecthds.get(j).get("maxZ");
|
// //最大值出现时间
|
// String maxTM = selecthds.get(j).get("maxTM").toString();
|
// //最小值
|
// BigDecimal minZ = (BigDecimal) selecthds.get(j).get("minZ");
|
// //最小值出现时间
|
// String minTM = selecthds.get(j).get("minTM").toString();
|
// SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
// Date sd1 = df.parse(maxTM);
|
// Date sd2 = df.parse(minTM);
|
// double v = maxZ.doubleValue();
|
// double v1 = minZ.doubleValue();
|
// //涨幅值
|
// double v2 = v - v1;
|
// double v3 = (double) Math.round(v2 * 100) / 100;
|
// m1.put(v3, stnm.replaceAll(" ", "") + "站");
|
// c.put(stcd, v3);
|
// //获取涨幅最大的信息
|
// }
|
// if (m1.size() != 0) {
|
// Object maxKey = getMaxKey(m1);
|
// String s1 = m1.get(maxKey).toString();
|
// text += " 涨幅最大的是:" + s1 + "(涨" + maxKey + "米)。";
|
// }
|
|
m.put("text", text);
|
m.put("number", number);
|
m.put("Yjlist", ylist);
|
m.put("list", alist);
|
m.put("clist", c);
|
list.add(m);
|
}
|
return R.data(list);
|
}
|
|
/**
|
* 水库水情最新信息
|
*/
|
@PostMapping("/selectyjcks")
|
public R selectyjcks() throws ParseException {
|
int ws = 1;
|
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
String time = df.format(new Date());
|
Date date = null;
|
// 把Date按照格式转换成字符串
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
try {
|
date = sdf.parse(time);
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
String dateEnd = sdf.format(date);
|
SimpleDateFormat dfz = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
|
String timez = dfz.format(new Date());
|
String yearc = time.substring(0, 4);
|
int years = Integer.parseInt(yearc);
|
String monthc = time.substring(5, 7);
|
int months = Integer.parseInt(monthc);
|
String dayc = time.substring(8, 10);
|
int days = Integer.parseInt(dayc);
|
int da = days - ws;
|
String hss = time.substring(11, 13);
|
int hs = Integer.parseInt(hss);
|
//前一天8时
|
String timec = years + "-" + months + "-" + da + " 08:00:00";
|
//前24小时
|
Calendar calendar6 = Calendar.getInstance();
|
calendar6.set(Calendar.HOUR_OF_DAY, calendar6.get(Calendar.HOUR_OF_DAY) - 24);
|
String dateBegin24 = df.format(calendar6.getTime());
|
|
String substring = time.substring(0, 10);
|
//截取月日
|
String[] strs = substring.split("-");
|
//月
|
String year = strs[1].toString();
|
//日
|
String day = strs[2].toString();
|
//定义短信内容头
|
String text = year + "月" + day + "日" + hs + "时";
|
String texta = "";
|
String texth = "";
|
//定义统计数量
|
int number = 0;
|
String mouz = year + day;
|
Integer mou = Integer.parseInt(mouz);
|
String egmd = "";
|
String edmd = "";
|
List<Map<String, Object>> selectfx = rsvrRService.selectfx();
|
String b = (String) selectfx.get(0).get("BGMD");
|
String e = (String) selectfx.get(0).get("EDMD");
|
String b2 = (String) selectfx.get(1).get("BGMD");
|
String e2 = (String) selectfx.get(1).get("EDMD");
|
int bs = Integer.parseInt(b.trim());
|
int es = Integer.parseInt(e.trim());
|
int b2s = Integer.parseInt(b2.trim());
|
int e2s = Integer.parseInt(e2.trim());
|
if (mou >= bs && mou <= es) {
|
egmd = b;
|
edmd = e;
|
} else if (mou >= b2s && mou <= e2s) {
|
egmd = b2;
|
edmd = e2;
|
} else {
|
String mous = "0901";
|
int m = Integer.parseInt(mous);
|
if (m >= bs && m <= es) {
|
egmd = b;
|
edmd = e;
|
} else if (m >= b2s && m <= e2s) {
|
egmd = b2;
|
edmd = e2;
|
}
|
}
|
//水库水情预警信息
|
List<Map<String, Object>> map = rsvrRService.selectyjcks(egmd, edmd, timec, timez,time,dateEnd);
|
//用来判断是否重复统计超警信息
|
Map mnum = new HashMap();
|
//定义list保存预警信息
|
List alist = new ArrayList();
|
List blist = new ArrayList();
|
double RZ = 0.0;
|
double 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;
|
}
|
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<K,V>中Key(键)的最大值
|
*
|
* @param map
|
* @return
|
*/
|
public static Object getMaxKey(Map<Double, Integer> map) {
|
if (map == null) return null;
|
Set<Double> set = map.keySet();
|
Object[] obj = set.toArray();
|
Arrays.sort(obj);
|
return obj[obj.length - 1];
|
}
|
|
/**
|
* 求Map<K,V>中Value(值)的最大值
|
*
|
* @param map
|
* @return
|
*/
|
public static Object getMaxValue(Map<Integer, Integer> map) {
|
if (map == null) return null;
|
Collection<Integer> c = map.values();
|
Object[] obj = c.toArray();
|
Arrays.sort(obj);
|
return obj[obj.length - 1];
|
}
|
|
|
/**
|
* 水位流量曲线
|
*
|
* @param stcd
|
* @return
|
*/
|
@PostMapping("/selList")
|
public R selList(String stcd) {
|
List<Map<String, Object>> newList = rsvrRService.selList(stcd);
|
Map<String, List<Map>> mm = new HashMap();
|
for (Map temp : newList) {
|
if (mm.containsKey(temp.get("LNNM")))
|
mm.get(temp.get("LNNM")).add(temp);
|
else {
|
List<Map> ll = new ArrayList<>();
|
ll.add(temp);
|
mm.put((String) temp.get("LNNM"), ll);
|
}
|
}
|
List<List<Map>> res = new ArrayList();
|
for (Map.Entry<String, List<Map>> et : mm.entrySet()) {
|
res.add(et.getValue());
|
}
|
return R.data(res);
|
}
|
|
/**
|
* 库容曲线
|
*
|
* @param stcd
|
* @return
|
*/
|
@PostMapping("/selLists")
|
public R selLists(String stcd) {
|
return R.data(rsvrRService.selLists(stcd));
|
}
|
|
|
/**
|
* 水库站水位流量过程接口
|
*/
|
@PostMapping("/selectRsvrList")
|
@ApiOperation(value = "水库站水位过程接口", notes = "code,dateBegin,dateEnd")
|
public R selectRsvrList(String code, String dateBegin, String dateEnd) {
|
List<Map<String, Object>> list = rsvrRService.selectRsvrList(code, dateBegin, dateEnd);
|
return R.data(list);
|
}
|
|
/**
|
* 河道水位流量过程接口
|
*/
|
@PostMapping("/selectRiverList")
|
@ApiOperation(value = "水库站水位过程接口", notes = "code,dateBegin,dateEnd")
|
public R selectRiverList(String code, String dateBegin, String dateEnd) {
|
List<Map<String, Object>> list = rsvrRService.selectRsvrLists(code, dateBegin, dateEnd);
|
return R.data(list);
|
}
|
|
/**
|
* 水库实时预警
|
*/
|
@ApiLog("水库实时预警")
|
@PostMapping("/selectyj")
|
@ApiOperation(value = "水库实时预警", notes = "")
|
public R selectyj(String times, int mou, int k) {
|
Date date = null;
|
// 把Date按照格式转换成字符串
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
try {
|
date = sdf.parse(times);
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
String dateEnd = sdf.format(date);
|
|
String egmd = "";
|
String edmd = "";
|
List<Map<String, Object>> selectfx = rsvrRService.selectfx();
|
String b = (String) selectfx.get(0).get("BGMD");
|
String e = (String) selectfx.get(0).get("EDMD");
|
String b2 = (String) selectfx.get(1).get("BGMD");
|
String e2 = (String) selectfx.get(1).get("EDMD");
|
int bs = Integer.parseInt(b.trim());
|
int es = Integer.parseInt(e.trim());
|
int b2s = Integer.parseInt(b2.trim());
|
int e2s = Integer.parseInt(e2.trim());
|
if (mou >= bs && mou <= es) {
|
egmd = b;
|
edmd = e;
|
} else if (mou >= b2s && mou <= e2s) {
|
egmd = b2;
|
edmd = e2;
|
} else {
|
String mous = "0901";
|
int m = Integer.parseInt(mous);
|
if (m >= bs && m <= es) {
|
egmd = b;
|
edmd = e;
|
} else if (m >= b2s && m <= e2s) {
|
egmd = b2;
|
edmd = e2;
|
}
|
}
|
List<Map<String, Object>> map;
|
if (k == 13) {
|
map = rsvrRService.selectyj(egmd, edmd, times, dateEnd);
|
} else {
|
map = rsvrRService.selectyj(egmd, edmd, times, dateEnd);
|
}
|
List<Map<String, Object>> lists = new ArrayList<>();
|
for (int i = 0; i < map.size(); i++) {
|
Map<String, Object> maps = new HashMap<String, Object>();
|
BigDecimal bigDecimaldz = (BigDecimal) map.get(i).get("FSLTDZ");//汛限水位
|
BigDecimal bigDecimalrz = (BigDecimal) map.get(i).get("RZ");//当前水位
|
BigDecimal bigDecimallz = (BigDecimal) map.get(i).get("DSFLZ");//设计水位
|
BigDecimal bigDecimalmz = (BigDecimal) map.get(i).get("NORMZ");//防洪高水位
|
double dz = bigDecimaldz.doubleValue();
|
double rz = bigDecimalrz.doubleValue();
|
double lz = bigDecimallz.doubleValue();
|
double mz = bigDecimalmz.doubleValue();
|
double num = 0.5;
|
double s = dz - num;
|
if (dz == 0) {
|
map.get(i).put("yj", "无预警");
|
maps.put("YjList", map.get(i));
|
lists.add(maps);
|
} else {
|
if (rz > 0 && rz < s) {
|
map.get(i).put("yj", "无预警");
|
} else if (rz >= s && rz < dz) {
|
map.get(i).put("yj", "蓝色预警");
|
} else if (rz >= dz && rz < mz) {
|
map.get(i).put("yj", "黄色预警");
|
} else if (rz >= mz && rz < lz) {
|
map.get(i).put("yj", "橙色预警");
|
} else {
|
map.get(i).put("yj", "红色预警");
|
}
|
maps.put("YjList", map.get(i));
|
lists.add(maps);
|
}
|
}
|
|
return R.data(lists);
|
}
|
|
}
|