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 |  406 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 383 insertions(+), 23 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 c13ac6e..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("导入成功");
+//	}
 
 	/**
 	 * 大江大河预警
@@ -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