/** * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com). *

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springblade.modules.mountainrain.controller; 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.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.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 */ @RestController @AllArgsConstructor @RequestMapping("/bigriver") @Api(value = "", tags = "接口") public class BigriverController extends BladeController { private IBigriverService iBigriverService; /** * 详情 */ @ApiLog("详情") @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "site") public R detail(Yucbig yucbig) { Yucbig detail = iBigriverService.getOne(Condition.getQueryWrapper(yucbig)); return R.data(BigriverWrapper.build().entityVO(detail)); } /** * 新增 */ @ApiLog("新增") @PostMapping("/save") @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) @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("导入成功"); // } /** * 大江大河预警 * * @return */ @GetMapping("/selectbgriver") public R selectbgriver() { List> selctsmriver = iBigriverService.selctbgriver(); //预警数据 List listyj = new ArrayList(); //无预警数据 List listzc = new ArrayList(); for (int i = 0; i < selctsmriver.size(); i++) { //警戒水位 String yjsw = selctsmriver.get(i).get("yjsw").toString(); Double yjz = Double.parseDouble(yjsw); //水位 String zs = selctsmriver.get(i).get("Z").toString(); Double z = Double.parseDouble(zs); if (z > yjz) { listyj.add(selctsmriver.get(i)); } else { listzc.add(selctsmriver.get(i)); } } Map map = new HashMap(); map.put("yj", listyj); map.put("zc", listzc); List list = new ArrayList(); list.add(map); 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> 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 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 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> 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> listz = new ArrayList>(); List list = iBigriverService.selectYb(time, code); for (int i = 0; i < list.size(); i++) { Map map = new HashMap(); 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> 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); } }