From a98b1db4392c357304036e8b3cdd01646920300d Mon Sep 17 00:00:00 2001
From: tangzy <tangzy123456>
Date: Thu, 21 Jul 2022 15:41:23 +0800
Subject: [PATCH] 1.山洪
---
src/main/java/org/springblade/modules/mountainrain/controller/BigriverController.java | 408 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 384 insertions(+), 24 deletions(-)
diff --git a/src/main/java/org/springblade/modules/mountainrain/controller/BigriverController.java b/src/main/java/org/springblade/modules/mountainrain/controller/BigriverController.java
index cf1c8c3..d84e7e8 100644
--- a/src/main/java/org/springblade/modules/mountainrain/controller/BigriverController.java
+++ b/src/main/java/org/springblade/modules/mountainrain/controller/BigriverController.java
@@ -15,31 +15,51 @@
*/
package org.springblade.modules.mountainrain.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 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.excel.util.ExcelUtil;
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.excel.BgrExcel;
-import org.springblade.modules.mountainrain.excel.BgrImporter;
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
@@ -53,11 +73,11 @@
private IBigriverService iBigriverService;
/**
- * 详情
- */
+ * 详情
+ */
@ApiLog("详情")
@GetMapping("/detail")
- @ApiOperationSupport(order = 1)
+ @ApiOperationSupport(order = 1)
@ApiOperation(value = "详情", notes = "site")
public R<Yucbig> detail(Yucbig yucbig) {
Yucbig detail = iBigriverService.getOne(Condition.getQueryWrapper(yucbig));
@@ -66,37 +86,37 @@
/**
- * 新增
- */
+ * 新增
+ */
@ApiLog("新增")
@PostMapping("/save")
- @ApiOperationSupport(order = 4)
+ @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)
+ @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("导入成功");
- }
+// /**
+// * 大江大河预报数据导入
+// */
+// @PostMapping("import-bgr")
+// public R importbgr(MultipartFile file) {
+// BgrImporter bgrImporter = new BgrImporter(iBigriverService, false);
+// ExcelUtil.save(file, bgrImporter, BgrExcel.class);
+// return R.success("导入成功");
+// }
/**
* 大江大河预警
@@ -115,7 +135,7 @@
String yjsw = selctsmriver.get(i).get("yjsw").toString();
Double yjz = Double.parseDouble(yjsw);
//水位
- String zs = selctsmriver.get(i).get("yuz").toString();
+ String zs = selctsmriver.get(i).get("Z").toString();
Double z = Double.parseDouble(zs);
if (z > yjz) {
listyj.add(selctsmriver.get(i));
@@ -131,4 +151,344 @@
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);
+ }
+
}
--
Gitblit v1.9.3