tangzy
2021-11-09 39caebba35fc84824f5cd51d189fe322d5145803
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();
   }
}