From 39caebba35fc84824f5cd51d189fe322d5145803 Mon Sep 17 00:00:00 2001
From: tangzy <tangzy123456>
Date: Tue, 09 Nov 2021 16:15:14 +0800
Subject: [PATCH] 1.山洪

---
 src/main/java/org/springblade/modules/mountainrain/controller/BigriverController.java |  259 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 234 insertions(+), 25 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..53acc7c 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,44 @@
  */
 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 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.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.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.text.ParseException;
-import java.text.SimpleDateFormat;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.security.MessageDigest;
 import java.util.*;
 
 /**
- *  控制器
+ * 控制器
  *
  * @author Blade
  * @since 2019-11-07
@@ -53,11 +66,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 +79,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 +144,200 @@
 		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");
+		wb.write(out);
+		out.close();
+	}
+
+	/***
+	 * MD5加码 生成32位md5码
+	 */
+	public static String string2MD5(String inStr) {
+		MessageDigest md5 = null;
+		try {
+			md5 = MessageDigest.getInstance("MD5");
+		} catch (Exception e) {
+			System.out.println(e.toString());
+			e.printStackTrace();
+			return "";
+		}
+		char[] charArray = inStr.toCharArray();
+		byte[] byteArray = new byte[charArray.length];
+
+		for (int i = 0; i < charArray.length; i++)
+			byteArray[i] = (byte) charArray[i];
+		byte[] md5Bytes = md5.digest(byteArray);
+		StringBuffer hexValue = new StringBuffer();
+		for (int i = 0; i < md5Bytes.length; i++) {
+			int val = ((int) md5Bytes[i]) & 0xff;
+			if (val < 16)
+				hexValue.append("0");
+			hexValue.append(Integer.toHexString(val));
+		}
+		return hexValue.toString();
+
+	}
+
+
 }

--
Gitblit v1.9.3