/**
|
* 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.mountainrain.controller;
|
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import jodd.io.PathUtil;
|
import liquibase.pro.packaged.S;
|
import lombok.AllArgsConstructor;
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
import org.apache.poi.ss.usermodel.CellType;
|
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.WorkbookFactory;
|
import org.apache.poi.ss.util.CellRangeAddress;
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.python.antlr.ast.Str;
|
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.tool.api.R;
|
import org.springblade.modules.mountainrain.entity.Yucbig;
|
import org.springblade.modules.mountainrain.service.IBigriverService;
|
import org.springblade.modules.mountainrain.vo.BigriverVO;
|
import org.springblade.modules.mountainrain.wrapper.BigriverWrapper;
|
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.core.io.Resource;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.validation.Valid;
|
import java.awt.image.BufferedImage;
|
import java.io.*;
|
import java.math.BigDecimal;
|
import java.security.MessageDigest;
|
import java.text.DateFormat;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
/**
|
* 控制器
|
*
|
* @author Blade
|
* @since 2019-11-07
|
*/
|
@RestController
|
@AllArgsConstructor
|
@RequestMapping("/bigriver")
|
@Api(value = "", tags = "接口")
|
public class BigriverController extends BladeController {
|
|
private IBigriverService iBigriverService;
|
|
/**
|
* 详情
|
*/
|
@ApiLog("详情")
|
@GetMapping("/detail")
|
@ApiOperationSupport(order = 1)
|
@ApiOperation(value = "详情", notes = "site")
|
public R<Yucbig> detail(Yucbig yucbig) {
|
Yucbig detail = iBigriverService.getOne(Condition.getQueryWrapper(yucbig));
|
return R.data(BigriverWrapper.build().entityVO(detail));
|
}
|
|
|
/**
|
* 新增
|
*/
|
@ApiLog("新增")
|
@PostMapping("/save")
|
@ApiOperationSupport(order = 4)
|
@ApiOperation(value = "新增", notes = "传入site")
|
public R save(@Valid @RequestBody Yucbig yucbig) {
|
return R.status(iBigriverService.save(yucbig));
|
}
|
|
/**
|
* 修改
|
*/
|
@ApiLog("修改")
|
@PostMapping("/update")
|
@ApiOperationSupport(order = 5)
|
@ApiOperation(value = "修改", notes = "传入site")
|
public R update(@Valid @RequestBody Yucbig yucbig) {
|
return R.status(iBigriverService.updateById(yucbig));
|
}
|
|
|
// /**
|
// * 大江大河预报数据导入
|
// */
|
// @PostMapping("import-bgr")
|
// public R importbgr(MultipartFile file) {
|
// BgrImporter bgrImporter = new BgrImporter(iBigriverService, false);
|
// ExcelUtil.save(file, bgrImporter, BgrExcel.class);
|
// return R.success("导入成功");
|
// }
|
|
/**
|
* 大江大河预警
|
*
|
* @return
|
*/
|
@GetMapping("/selectbgriver")
|
public R selectbgriver() {
|
List<Map<String, Object>> selctsmriver = iBigriverService.selctbgriver();
|
//预警数据
|
List listyj = new ArrayList();
|
//无预警数据
|
List listzc = new ArrayList();
|
for (int i = 0; i < selctsmriver.size(); i++) {
|
//警戒水位
|
String yjsw = selctsmriver.get(i).get("yjsw").toString();
|
Double yjz = Double.parseDouble(yjsw);
|
//水位
|
String zs = selctsmriver.get(i).get("Z").toString();
|
Double z = Double.parseDouble(zs);
|
if (z > yjz) {
|
listyj.add(selctsmriver.get(i));
|
} else {
|
listzc.add(selctsmriver.get(i));
|
}
|
}
|
Map map = new HashMap();
|
map.put("yj", listyj);
|
map.put("zc", listzc);
|
List list = new ArrayList();
|
list.add(map);
|
return R.data(list);
|
}
|
|
|
@PostMapping("import-bgr")
|
public void importbgr(MultipartFile file) throws IOException, InvalidFormatException {
|
InputStream is = file.getInputStream();
|
HSSFWorkbook workbook = new HSSFWorkbook(is);
|
//确定版本
|
boolean isExcel2003 = file.getOriginalFilename().endsWith("xls") ? true : false;
|
List<Map<String, Object>> returnMap;//返回execlClass类见下
|
if (isExcel2003) { //判断版本
|
HSSFSheet sheet = workbook.getSheetAt(1);
|
sheet.getRow(4).getCell(12).setCellType(CellType.STRING);
|
sheet.getRow(4).getCell(13).setCellType(CellType.STRING);
|
sheet.getRow(4).getCell(14).setCellType(CellType.STRING);
|
sheet.getRow(4).getCell(15).setCellType(CellType.STRING);
|
sheet.getRow(4).getCell(3).setCellType(CellType.STRING);
|
sheet.getRow(4).getCell(8).setCellType(CellType.STRING);
|
sheet.getRow(4).getCell(9).setCellType(CellType.STRING);
|
sheet.getRow(4).getCell(10).setCellType(CellType.STRING);
|
sheet.getRow(4).getCell(11).setCellType(CellType.STRING);
|
//发布时间
|
String ftimes = sheet.getRow(1).getCell(11).getStringCellValue();
|
String substring = ftimes.substring(5, ftimes.length());
|
String year = substring.substring(0, substring.lastIndexOf("年"));
|
String yues = substring.substring(substring.indexOf("年") + 1, substring.lastIndexOf("月"));
|
String yue;
|
if (yues.length() == 1) {
|
yue = 0 + yues;
|
} else {
|
yue = yues;
|
}
|
String r = substring.substring(substring.indexOf("月") + 1, substring.lastIndexOf("日"));
|
String ms = substring.substring(substring.indexOf("日") + 1, substring.lastIndexOf("时"));
|
String ftime = year + "-" + yue + "-" + r + " " + ms + ":00:00";
|
//河名
|
String river = sheet.getRow(4).getCell(0).getStringCellValue();
|
//站点名称
|
String stnames = sheet.getRow(4).getCell(1).getStringCellValue();
|
String stcd = iBigriverService.selectINfo(stnames);
|
//降雨量
|
String drp = sheet.getRow(4).getCell(3).getStringCellValue();
|
//降雨起止时间
|
String drptime = sheet.getRow(4).getCell(4).getStringCellValue();
|
//起涨时间
|
String qztime = sheet.getRow(4).getCell(7).getStringCellValue();
|
//起涨流量
|
String qzll = sheet.getRow(4).getCell(9).getStringCellValue();
|
//发布水位
|
String fbsw = sheet.getRow(4).getCell(10).getStringCellValue();
|
//发布流量
|
String fbll = sheet.getRow(4).getCell(11).getStringCellValue();
|
//预报时间
|
String ytimes = sheet.getRow(4).getCell(12).getStringCellValue();
|
String[] split = ytimes.split(",");
|
String a;
|
if (split[0].length() == 1) {
|
a = 0 + yues;
|
} else {
|
a = yues;
|
}
|
String ytime = year + "-" + a + "-" + split[1] + " " + split[2] + ":00:00";
|
//预测水位
|
String yuz = sheet.getRow(4).getCell(13).getStringCellValue();
|
//预警流量
|
String yq = sheet.getRow(4).getCell(14).getStringCellValue();
|
//预警水位
|
String yjsw = sheet.getRow(4).getCell(15).getStringCellValue();
|
//预报水位与警戒水位比较
|
String dbi = sheet.getRow(4).getCell(16).getStringCellValue();
|
//起涨水位
|
String qzsw = sheet.getRow(4).getCell(8).getStringCellValue();
|
Yucbig yucbig = new Yucbig();
|
yucbig.setStcd(stcd);
|
yucbig.setStname(stnames);
|
yucbig.setRiver(river);
|
yucbig.setFtime(ftime);
|
yucbig.setYjsw(yjsw);
|
yucbig.setYtime(ytime);
|
yucbig.setYuz(yuz);
|
yucbig.setYq(yq);
|
yucbig.setQzsw(qzsw);
|
yucbig.setDrp(drp);
|
yucbig.setDrptime(drptime);
|
yucbig.setQztime(qztime);
|
yucbig.setQzsw(qzsw);
|
yucbig.setQzll(qzll);
|
yucbig.setFbsw(fbsw);
|
yucbig.setFbll(fbll);
|
yucbig.setDbi(dbi);
|
iBigriverService.save(yucbig);
|
} else {
|
//有多少个sheet
|
int sheets = workbook.getNumberOfSheets();
|
System.out.println("其他:" + sheets);
|
}
|
}
|
|
|
/**
|
* 主要河流导出预警模板
|
*
|
* @param emp01
|
* @throws IOException
|
* @throws InvalidFormatException
|
*/
|
@PostMapping("createEmpExcel")
|
public void createEmpExcel(@RequestBody Map<String, Object> emp01) throws IOException, InvalidFormatException {
|
// import為需要導入的EXCEL模板,exportFilePath為生成的員工EXCEL文件
|
String importFilePath = "D://excel//temple.xls";
|
//String exportFilePath = "D:\\Excel";
|
|
File fi = new File(importFilePath);
|
InputStream in = new FileInputStream(fi);
|
Workbook wb = WorkbookFactory.create(in);
|
Sheet sheet = wb.getSheetAt(1); //示意访问sheet
|
// //读取excel模板
|
// XSSFWorkbook wb = new XSSFWorkbook(in);
|
// //读取了模板内所有sheet内容
|
// XSSFSheet sheet = wb.getSheetAt(0);
|
//如果这行没有了,整个公式都不会有自动计算的效果的
|
sheet.setForceFormulaRecalculation(true);
|
//河名
|
sheet.getRow(4).getCell(0).setCellValue(emp01.get("river").toString());
|
//站名
|
sheet.getRow(4).getCell(1).setCellValue(emp01.get("stname").toString());
|
//pa
|
sheet.getRow(4).getCell(2).setCellValue(emp01.get("pa").toString());
|
//降雨量
|
sheet.getRow(4).getCell(3).setCellValue(emp01.get("drp").toString());
|
//降雨起止时间
|
sheet.getRow(4).getCell(4).setCellValue(emp01.get("drptime").toString());
|
CellRangeAddress region = new CellRangeAddress(4, 4, 4, 6);
|
sheet.addMergedRegion(region);
|
//起涨时间
|
sheet.getRow(4).getCell(7).setCellValue(emp01.get("qztime").toString());
|
//起涨水位
|
sheet.getRow(4).getCell(8).setCellValue(emp01.get("qzsw").toString());
|
//起涨流量
|
sheet.getRow(4).getCell(9).setCellValue(emp01.get("qzll").toString());
|
//发布时间水位
|
sheet.getRow(4).getCell(10).setCellValue(emp01.get("fbsw").toString());
|
//发布时间流量
|
sheet.getRow(4).getCell(11).setCellValue(emp01.get("fbll").toString());
|
//预报时间
|
sheet.getRow(4).getCell(12).setCellValue(emp01.get("ytime").toString());
|
//预报水位
|
sheet.getRow(4).getCell(13).setCellValue(emp01.get("Z").toString());
|
//预报流量
|
sheet.getRow(4).getCell(14).setCellValue(emp01.get("yq").toString());
|
//警戒水位
|
sheet.getRow(4).getCell(15).setCellValue(emp01.get("yjsw").toString());
|
//预报水位与警戒水位比较
|
sheet.getRow(4).getCell(16).setCellValue(emp01.get("dbi").toString());
|
//防洪对象
|
sheet.getRow(5).getCell(3).setCellValue(emp01.get("fh").toString());
|
CellRangeAddress regions = new CellRangeAddress(5, 6, 3, 16);
|
sheet.addMergedRegion(regions);
|
//发布时间
|
sheet.getRow(1).getCell(11).setCellValue("发布时间:" + emp01.get("ftime").toString());
|
CellRangeAddress regionf = new CellRangeAddress(1, 1, 11, 16);
|
sheet.addMergedRegion(regionf);
|
FileOutputStream out = new FileOutputStream("D://Software//nginx-1.20.0//dist//fzswz//excel//主要河流预警.xls");
|
//FileOutputStream out = new FileOutputStream("D://Temp//主要河流预警.xls");
|
wb.write(out);
|
out.close();
|
}
|
|
|
/**
|
* 大江大河预报库读取
|
*
|
* @return
|
*/
|
@GetMapping("/selectYb")
|
public R selectYb(String time) throws ParseException {
|
//预警数据
|
List listyj = new ArrayList();
|
//无预警数据
|
List listzc = new ArrayList();
|
Map mnum = new HashMap();
|
String s = iBigriverService.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);
|
String substrings = time.substring(0, 10);
|
String ftimez = substrings + " 08:00:00";
|
List<BigriverVO> list = iBigriverService.selectYb(ftimez, code);
|
for (int i = 0; i < list.size(); i++) {
|
String stcd = list.get(i).getStcd();
|
String ftime = list.get(i).getFtime();
|
String substring = ftime.substring(0, 13);
|
String times = substring + ":00:00";
|
String endTime = times;
|
Date dates = beforeHourToNowDate(time, 1);
|
DateFormat sdfc = new SimpleDateFormat("yyyy-MM-dd 08:00:00");
|
String beginTime = sdfc.format(dates);
|
List<Map<String, Object>> list1 = iBigriverService.selecF(stcd, times, beginTime, endTime);
|
for (int c = 0; c < list1.size(); c++) {
|
list.get(i).setFbsw(list1.get(c).get("fbsw").toString());
|
list.get(i).setFbll(list1.get(c).get("fbll").toString());
|
list.get(i).setQzll(list1.get(c).get("qzll").toString());
|
list.get(i).setQztime(list1.get(c).get("qztime").toString());
|
list.get(i).setQzsw(list1.get(c).get("qzsw").toString());
|
}
|
}
|
for (int i = 0; i < list.size(); i++) {
|
String yjsw = list.get(i).getYjsw();
|
Double yjz = Double.parseDouble(yjsw);
|
BigDecimal ybsws = list.get(i).getYbsw();
|
Double ybsw = ybsws.doubleValue();
|
if (ybsw > yjz) {
|
if (mnum.containsKey(list.get(i).getStcd()) == true) {
|
} else {
|
mnum.put(list.get(i).getStcd(), i);
|
listyj.add(list.get(i));
|
}
|
} else {
|
if (mnum.containsKey(list.get(i).getStcd()) == true) {
|
} else {
|
mnum.put(list.get(i).getStcd(), i);
|
listzc.add(list.get(i));
|
}
|
}
|
}
|
Map map = new HashMap();
|
map.put("yj", listyj);
|
map.put("zc", listzc);
|
List lists = new ArrayList();
|
lists.add(map);
|
return R.data(lists);
|
}
|
|
public static Date beforeHourToNowDate(String date, int hours) {
|
Calendar c = Calendar.getInstance();
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
try {
|
c.setTime(sdf.parse(date));
|
//c.set(Calendar.HOUR_OF_DAY, c.get(Calendar.HOUR_OF_DAY) - hours);
|
c.set(Calendar.DATE, c.get(Calendar.DATE) - hours);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return c.getTime();
|
}
|
|
@GetMapping("/ss")
|
public void ss() {
|
String s = iBigriverService.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);
|
}
|
|
/**
|
* 大江大河预报库读取
|
*
|
* @return
|
*/
|
@GetMapping("/selectYbs")
|
public R selectYbs(String time) throws ParseException {
|
//预警数据
|
List listyj = new ArrayList();
|
//无预警数据
|
List listzc = new ArrayList();
|
Map mnum = new HashMap();
|
String s = iBigriverService.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<Map<String, Object>> listz = new ArrayList<Map<String, Object>>();
|
List<BigriverVO> list = iBigriverService.selectYb(time, code);
|
for (int i = 0; i < list.size(); i++) {
|
Map<String, Object> map = new HashMap<String, Object>();
|
String stcd = list.get(i).getStcd();
|
String ftime = list.get(i).getFtime();
|
String substring = ftime.substring(0, 13);
|
String times = substring + ":00:00";
|
String endTime = times;
|
Date dates = beforeHourToNowDate(time, 1);
|
DateFormat sdfc = new SimpleDateFormat("yyyy-MM-dd 08:00:00");
|
String beginTime = sdfc.format(dates);
|
map.put("beginTime", beginTime);
|
map.put("endTime", endTime);
|
map.put("stcd", stcd);
|
map.put("times", times);
|
listz.add(map);
|
}
|
List<Map<String, Object>> list1 = iBigriverService.selectStation(listz);
|
for (int i = 0; i < list.size(); i++) {
|
for (int c = 0; c < list1.size(); c++) {
|
String stcd = list.get(i).getStcd();
|
String stcdz = list1.get(i).get("STCD").toString();
|
if (stcd == stcdz) {
|
list.get(i).setFbsw(list1.get(c).get("fbsw").toString());
|
list.get(i).setFbll(list1.get(c).get("fbll").toString());
|
list.get(i).setQzll(list1.get(c).get("qzll").toString());
|
list.get(i).setQztime(list1.get(c).get("qztime").toString());
|
list.get(i).setQzsw(list1.get(c).get("qzsw").toString());
|
} else {
|
continue;
|
}
|
|
}
|
}
|
for (int i = 0; i < list.size(); i++) {
|
String yjsw = list.get(i).getYjsw();
|
Double yjz = Double.parseDouble(yjsw);
|
BigDecimal ybsws = list.get(i).getYbsw();
|
Double ybsw = ybsws.doubleValue();
|
if (ybsw > yjz) {
|
if (mnum.containsKey(list.get(i).getStcd()) == true) {
|
} else {
|
mnum.put(list.get(i).getStcd(), i);
|
listyj.add(list.get(i));
|
}
|
} else {
|
if (mnum.containsKey(list.get(i).getStcd()) == true) {
|
} else {
|
mnum.put(list.get(i).getStcd(), i);
|
listzc.add(list.get(i));
|
}
|
}
|
}
|
Map map = new HashMap();
|
map.put("yj", listyj);
|
map.put("zc", listzc);
|
List lists = new ArrayList();
|
lists.add(map);
|
return R.data(lists);
|
}
|
|
}
|