| | |
| | | */ |
| | | 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 |
| | |
| | | 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)); |
| | |
| | | |
| | | |
| | | /** |
| | | * 新增 |
| | | */ |
| | | * 新增 |
| | | */ |
| | | @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("导入成功"); |
| | | // } |
| | | |
| | | /** |
| | | * 大江大河预警 |
| | |
| | | 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)); |
| | |
| | | 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(); |
| | | |
| | | } |
| | | |
| | | |
| | | } |