diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/shate/DateUploadController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/shate/DateUploadController.java index 0f874fa..e25cab9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/shate/DateUploadController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/shate/DateUploadController.java @@ -1,16 +1,18 @@ package com.ruoyi.web.controller.shate; +import com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.BarChart; import com.ruoyi.common.utils.CustomXWPFDocument; import com.ruoyi.common.utils.shate.PageUtils; import com.ruoyi.system.domain_shate.*; -import com.ruoyi.system.service_shate.IDateUploadService; -import com.ruoyi.system.service_shate.IPlantingSuitabilityService; -import com.ruoyi.system.service_shate.ISeedingSuccessService; -import com.ruoyi.system.service_shate.IVegetationHealthServices; +import com.ruoyi.system.service_shate.*; import io.swagger.annotations.Api; +import io.swagger.v3.oas.models.security.SecurityScheme; +import net.sf.jsqlparser.statement.create.procedure.CreateProcedure; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.springframework.boot.autoconfigure.web.ServerProperties; import org.springframework.util.ResourceUtils; import org.springframework.web.bind.annotation.*; import org.w3c.dom.Document; @@ -24,6 +26,7 @@ import javax.servlet.http.HttpServletResponse; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.*; +import java.lang.reflect.AnnotatedArrayType; import java.text.SimpleDateFormat; import java.util.*; @@ -35,32 +38,33 @@ import java.util.*; @RequestMapping(value = "/api/Upload", produces = "application/json;charset=UTF-8") @Api(tags = "文件上传记录") -public class DateUploadController -{ +public class DateUploadController { @Resource IPlantingSuitabilityService plantingSuitabilityService; @Resource + ILandUseServices landUseServices; + @Resource IVegetationHealthServices vegetationHealthServices; @Resource private IDateUploadService service; + @Resource + private ITopographicFactorService factorService; + @Resource ISeedingSuccessService seedingSuccessService; - private String FilePathName; + private String FilePathName; - private String ExePathName; + private String ExePathName; - private String FilePaths; + private String FilePaths; - private String ShpPaths; + private String ShpPaths; - - - @RequestMapping(value = "/SelectUpload",method = {RequestMethod.POST}) - public AjaxResult SelectUpload(@RequestBody paging paging) - { + @RequestMapping(value = "/SelectUpload", method = {RequestMethod.POST}) + public AjaxResult SelectUpload(@RequestBody paging paging) { // LocalDate tomorrow = LocalDate.of(2022,10,2); // LocalDate today = LocalDate.now(); // @@ -69,49 +73,39 @@ public class DateUploadController // return AjaxResult.error("软件授权日期已过,请联系管理人员!"); // } - String type1=paging.getType1().replace(" ",""); - String type=paging.getType().replace(" ",""); - String type2=""; + String type1 = paging.getType1().replace(" ", ""); + String type = paging.getType().replace(" ", ""); + String type2 = ""; - if (paging.getType2()!=null) - { - type2= paging.getType2().toUpperCase(); + if (paging.getType2() != null) { + type2 = paging.getType2().toUpperCase(); } - String date=paging.getUploadTime(); - String name=paging.getType3(); - String dateTime =paging.getDateTime(); + String date = paging.getUploadTime(); + String name = paging.getType3(); + String dateTime = paging.getDateTime(); - if ( name!=null && name!="") - { - if (name.equals("1")) - { - name="M_Heal%"; - } - else if(name.equals("2")) - { - name="H_Heal%"; + if (name != null && name != "") { + if (name.equals("1")) { + name = "M_Heal%"; + } else if (name.equals("2")) { + name = "H_Heal%"; } } - List Seeding= service.selectUpload(paging.getZone(),type.toUpperCase(), type1.toUpperCase(), - type2,paging.getYear(),date,name,dateTime); - pageVO vaue=new pageVO(); - List value= PageUtils.getListPaging(Seeding,paging.getPageNum(),paging.getPageSize()); + List Seeding = service.selectUpload(paging.getZone(), type.toUpperCase(), type1.toUpperCase(), + type2, paging.getYear(), date, name, dateTime); + pageVO vaue = new pageVO(); + List value = PageUtils.getListPaging(Seeding, paging.getPageNum(), paging.getPageSize()); vaue.setValue(value); vaue.setTotal(Seeding.size()); return AjaxResult.success(vaue); } - - - - - @RequestMapping(value = "/delUpload",method = {RequestMethod.POST}) - public AjaxResult DelUpload(@RequestBody UplodFile uplodFile) - { - return delUploadFile(uplodFile.getId()); + @RequestMapping(value = "/delUpload", method = {RequestMethod.POST}) + public AjaxResult DelUpload(@RequestBody UplodFile uplodFile) { + return delUploadFile(uplodFile.getId()); // List ids=uplodFile.getId(); // Integer Seeding=0; // UploadFile file=new UploadFile(); @@ -132,84 +126,77 @@ public class DateUploadController } - @RequestMapping(value = "/delUpload1",method = {RequestMethod.DELETE}) - public AjaxResult DelUpload1(@RequestParam("id") List id) - { - List ids=id; - Integer Seeding=0; - for (int i=0; i id) { + List ids = id; + Integer Seeding = 0; + for (int i = 0; i < ids.size(); i++) { + Seeding = service.DelUpload(ids.get(i)); + if (Seeding == 0) { + return AjaxResult.error("没有此id单据!" + ids.get(i)); + } } return AjaxResult.success(Seeding); } - @RequestMapping(value = "/InitShp",method = {RequestMethod.POST}) - public AjaxResult InitShp(@RequestBody UplodFile uplodFile) - { - List dateUploads=infr(uplodFile.getDateUploads()); + @RequestMapping(value = "/InitShp", method = {RequestMethod.POST}) + public AjaxResult InitShp(@RequestBody UplodFile uplodFile) { + List dateUploads = infr(uplodFile.getDateUploads()); - for (int i=0; i dateUploads=infr(uplodFile.getDateUploads()); + List dateUploads = infr(uplodFile.getDateUploads()); - for (int i=0; i infr(List dateUpload) - { - for (int i=0;i infr(List dateUpload) { + for (int i = 0; i < dateUpload.size(); i++) { - String [] typesList=dateUpload.get(i).getType1().split("\\/"); + String[] typesList = dateUpload.get(i).getType1().split("\\/"); - String type1=typesList[1].replace(" ","").toUpperCase(); + String type1 = typesList[1].replace(" ", "").toUpperCase(); - String type=typesList[0].replace(" ","").toUpperCase(); + String type = typesList[0].replace(" ", "").toUpperCase(); - Date d=new Date(); + Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String dateNowStr = sdf.format(d); - if(type1.equals("EVALUATIONINDICATORS")) - { + if (type1.equals("EVALUATIONINDICATORS")) { String[] strs = dateUpload.get(i).getFileName().split("\\."); - String name=strs[0]; + String name = strs[0]; - String[] strs2=name.split("\\_"); + String[] strs2 = name.split("\\_"); - String[] typeValue=name.split("2"); + String[] typeValue = name.split("2"); - String type2=typeValue[0]; + String type2 = typeValue[0]; - String name1=strs2[strs2.length-1]; + String name1 = strs2[strs2.length - 1]; - String name2=strs2[strs2.length-2]; + String name2 = strs2[strs2.length - 2]; dateUpload.get(i).setDataTime(name2); @@ -221,34 +208,33 @@ public class DateUploadController dateUpload.get(i).setType1(type1); - dateUpload.get(i).setYear(name2.substring(0,4)); + dateUpload.get(i).setYear(name2.substring(0, 4)); - dateUpload.get(i).setType2(type2.substring(0,type2.length()-1).toUpperCase()); + dateUpload.get(i).setType2(type2.substring(0, type2.length() - 1).toUpperCase()); dateUpload.get(i).setExtent1(dateUpload.get(i).getExtent().toString()); - DateUpload uploadValue=service.selectShp(name1,type,""); - MyThread1 demo=new MyThread1(name.replace(".tif",""), - FilePaths+dateUpload.get(i).getData_id(), - ShpPaths+uploadValue.getData_id()); + DateUpload uploadValue = service.selectShp(name1, type, ""); + MyThread1 demo = new MyThread1(name.replace(".tif", ""), + FilePaths + dateUpload.get(i).getData_id(), + ShpPaths + uploadValue.getData_id()); demo.run(); - } - else if(type1.equals("BOUNDARIES"))//Boundaries + } else if (type1.equals("BOUNDARIES"))//Boundaries { String[] strs = dateUpload.get(i).getFileName().split("\\."); - String name=strs[0]; + String name = strs[0]; - String[] strs2=name.split("\\_"); + String[] strs2 = name.split("\\_"); - String name1=strs2[strs2.length-1]; + String name1 = strs2[strs2.length - 1]; dateUpload.get(i).setZone(name1); dateUpload.get(i).setCreatedTime(dateNowStr); - dateUpload.get(i).setYear(dateNowStr.substring(0,4)); + dateUpload.get(i).setYear(dateNowStr.substring(0, 4)); dateUpload.get(i).setType(type); @@ -256,102 +242,96 @@ public class DateUploadController dateUpload.get(i).setExtent1(dateUpload.get(i).getExtent().toString()); - } - else if(type1.equals("LANDUSE")) - { - String[] strs = dateUpload.get(i).getFileName().split("\\."); - - String name=strs[0]; - - String[] strs2=name.split("\\_"); - - String[] typeValue=name.split("2"); - - String type2=typeValue[0]; - - String name1=strs2[strs2.length-1]; - - String name2=strs2[strs2.length-2]; - - dateUpload.get(i).setDataTime(name2); - - dateUpload.get(i).setZone(name1); - - dateUpload.get(i).setCreatedTime(dateNowStr); - - dateUpload.get(i).setType(type); - - dateUpload.get(i).setType1(type1); - - dateUpload.get(i).setYear(name2.substring(0,4)); - - dateUpload.get(i).setType2(type2.substring(0,type2.length()-1).toUpperCase()); - - dateUpload.get(i).setExtent1(dateUpload.get(i).getExtent().toString()); - - DateUpload uploadValue=service.selectShp(name1,type,""); - MyThread1 demo=new MyThread1(name.replace(".tif",""), - FilePaths+dateUpload.get(i).getData_id(), - ShpPaths+uploadValue.getData_id()); - demo.run(); - - } - else if(type1.equals("SUITABILITY")) - { - String[] strs = dateUpload.get(i).getFileName().split("\\."); - - String name=strs[0]; - - String[] strs2=name.split("\\_"); - - String[] typeValue=name.split("2"); - - String type2=typeValue[0]; - - String name1=strs2[strs2.length-1]; - - String name2=strs2[strs2.length-2]; - - dateUpload.get(i).setDataTime(name2); - - dateUpload.get(i).setZone(name1); - - dateUpload.get(i).setCreatedTime(dateNowStr); - - dateUpload.get(i).setType(type); - - dateUpload.get(i).setType1(type1); - - dateUpload.get(i).setYear(name2.substring(0,4)); - - dateUpload.get(i).setType2(type2.substring(0,type2.length()-1).toUpperCase()); - - dateUpload.get(i).setExtent1(dateUpload.get(i).getExtent().toString()); - - DateUpload uploadValue=service.selectShp(name1,type,""); - - MyThread1 demo=new MyThread1(name.replace(".tif",""), - FilePaths+dateUpload.get(i).getData_id(), - ShpPaths+uploadValue.getData_id()); - demo.run(); - } - else - { + } else if (type1.equals("LANDUSE")) { String[] strs = dateUpload.get(i).getFileName().split("\\."); - String name=strs[0]; + String name = strs[0]; - String[] strs2=name.split("\\_"); + String[] strs2 = name.split("\\_"); - String name1=strs2[strs2.length-1]; + String[] typeValue = name.split("2"); - String name2=strs2[strs2.length-2]; + String type2 = typeValue[0]; + + String name1 = strs2[strs2.length - 1]; + + String name2 = strs2[strs2.length - 2]; dateUpload.get(i).setDataTime(name2); - Integer month=Integer.parseInt(name2.substring(4,6)); + dateUpload.get(i).setZone(name1); - dateUpload.get(i).setYear(name2.substring(0,4)); + dateUpload.get(i).setCreatedTime(dateNowStr); + + dateUpload.get(i).setType(type); + + dateUpload.get(i).setType1(type1); + + dateUpload.get(i).setYear(name2.substring(0, 4)); + + dateUpload.get(i).setType2(type2.substring(0, type2.length() - 1).toUpperCase()); + + dateUpload.get(i).setExtent1(dateUpload.get(i).getExtent().toString()); + + DateUpload uploadValue = service.selectShp(name1, type, ""); + MyThread1 demo = new MyThread1(name.replace(".tif", ""), + FilePaths + dateUpload.get(i).getData_id(), + ShpPaths + uploadValue.getData_id()); + demo.run(); + + } else if (type1.equals("SUITABILITY")) { + String[] strs = dateUpload.get(i).getFileName().split("\\."); + + String name = strs[0]; + + String[] strs2 = name.split("\\_"); + + String[] typeValue = name.split("2"); + + String type2 = typeValue[0]; + + String name1 = strs2[strs2.length - 1]; + + String name2 = strs2[strs2.length - 2]; + + dateUpload.get(i).setDataTime(name2); + + dateUpload.get(i).setZone(name1); + + dateUpload.get(i).setCreatedTime(dateNowStr); + + dateUpload.get(i).setType(type); + + dateUpload.get(i).setType1(type1); + + dateUpload.get(i).setYear(name2.substring(0, 4)); + + dateUpload.get(i).setType2(type2.substring(0, type2.length() - 1).toUpperCase()); + + dateUpload.get(i).setExtent1(dateUpload.get(i).getExtent().toString()); + + DateUpload uploadValue = service.selectShp(name1, type, ""); + + MyThread1 demo = new MyThread1(name.replace(".tif", ""), + FilePaths + dateUpload.get(i).getData_id(), + ShpPaths + uploadValue.getData_id()); + demo.run(); + } else { + String[] strs = dateUpload.get(i).getFileName().split("\\."); + + String name = strs[0]; + + String[] strs2 = name.split("\\_"); + + String name1 = strs2[strs2.length - 1]; + + String name2 = strs2[strs2.length - 2]; + + dateUpload.get(i).setDataTime(name2); + + Integer month = Integer.parseInt(name2.substring(4, 6)); + + dateUpload.get(i).setYear(name2.substring(0, 4)); dateUpload.get(i).setMonth(month); @@ -366,29 +346,29 @@ public class DateUploadController dateUpload.get(i).setExtent1(dateUpload.get(i).getExtent().toString()); - DateUpload uploadValue=service.selectShp(name1,type,""); - MyThread1 demo=new MyThread1(name.replace(".tif",""), - FilePaths+dateUpload.get(i).getData_id(), - ShpPaths+uploadValue.getData_id()); + DateUpload uploadValue = service.selectShp(name1, type, ""); + MyThread1 demo = new MyThread1(name.replace(".tif", ""), + FilePaths + dateUpload.get(i).getData_id(), + ShpPaths + uploadValue.getData_id()); demo.run(); } } - return dateUpload; + return dateUpload; } /** * 调用exe + * * @param fileName 文件名称 * @param filePath tif文件路径 - * @param shpPath shp文件路径 + * @param shpPath shp文件路径 */ - @RequestMapping(value = "/callExe",method = {RequestMethod.GET}) - public void callExe(String fileName,String filePath,String shpPath) - { - BufferedReader bufferedReader=null; - Process proc=null; + @RequestMapping(value = "/callExe", method = {RequestMethod.GET}) + public void callExe(String fileName, String filePath, String shpPath) { + BufferedReader bufferedReader = null; + Process proc = null; try { // String til = UrlFileUpload.fileUpload(filePath,FilePathName); @@ -396,30 +376,31 @@ public class DateUploadController // String shp = UrlFileUpload.fileUpload(shpPath,FilePathName); String[] cmd = {ExePathName, fileName, - filePath+".tif", - shpPath+".zip"}; + filePath + ".tif", + shpPath + ".zip"}; ProcessBuilder pb = new ProcessBuilder(); pb.command(cmd); - proc=pb.start(); + proc = pb.start(); System.out.println("Start calling algorithm"); - bufferedReader =new BufferedReader(new InputStreamReader(proc.getErrorStream())); - String aa=null; - String line=null; - while ((line=bufferedReader.readLine())!=null){ - aa=aa+line; + bufferedReader = new BufferedReader(new InputStreamReader(proc.getErrorStream())); + String aa = null; + String line = null; + while ((line = bufferedReader.readLine()) != null) { + aa = aa + line; } System.out.println(aa); } catch (IOException e) { e.printStackTrace(); - System.out.println(e.getMessage());; + System.out.println(e.getMessage()); + ; } } - public class MyThread1 extends Thread{ + public class MyThread1 extends Thread { private String FileName; @@ -427,24 +408,26 @@ public class DateUploadController private String ShpPath; - public MyThread1(String fileName,String filePath,String shpPath){ + public MyThread1(String fileName, String filePath, String shpPath) { this.FileName = fileName; this.FilePath = filePath; this.ShpPath = shpPath; } + @Override - public void run(){ - callExe(FileName,FilePath,ShpPath); + public void run() { + callExe(FileName, FilePath, ShpPath); } } /** * 删除 + * * @return */ - @RequestMapping(value = "/delUploadFile",method = {RequestMethod.DELETE}) - public AjaxResult delUploadFile(List id) { + @RequestMapping(value = "/delUploadFile", method = {RequestMethod.DELETE}) + public AjaxResult delUploadFile(List id) { List ids = id; @@ -454,11 +437,11 @@ public class DateUploadController for (int i = 0; i < ids.size(); i++) { - Integer Seeding=0; + Integer Seeding = 0; DateUpload value = service.selectDel(ids.get(i)); - String type1=value.getType1(); - String type= value.getType(); + String type1 = value.getType1(); + String type = value.getType(); if (type1.equals("EVALUATIONINDICATORS")) { @@ -466,31 +449,34 @@ public class DateUploadController String[] typeValue = value.getFileName().split("2"); String type2 = typeValue[0]; - type2=type2.substring(0,type2.length()-1); - file.UploadFile1(type2, value.getZone(), value.getDataTime(),service,""); - Seeding= service.DelUpload(ids.get(i)); - if (Seeding==0){return AjaxResult.error("没有此id单据!"+ids.get(i));} + type2 = type2.substring(0, type2.length() - 1); + file.UploadFile1(type2, value.getZone(), value.getDataTime(), service, ""); + Seeding = service.DelUpload(ids.get(i)); + if (Seeding == 0) { + return AjaxResult.error("没有此id单据!" + ids.get(i)); + } } // && // (type1.equals("RSIMAGES") || type1.equals("PLANTINGDISTRIBUTION") || type1.equals("VEGETATIONHEALTH")) - else if (type.equals("VEGETATIONHEALTH")) - { + else if (type.equals("VEGETATIONHEALTH")) { String[] typeValue = value.getFileName().split("_"); - String resolution=typeValue[0]; + String resolution = typeValue[0]; String type2 = "Heal"; - file.UploadFile1(type2, value.getZone(), value.getDataTime(),service,resolution); - Seeding= service.DelUpload(ids.get(i)); - if (Seeding==0){return AjaxResult.error("没有此id单据!"+ids.get(i));} - } - else - { + file.UploadFile1(type2, value.getZone(), value.getDataTime(), service, resolution); + Seeding = service.DelUpload(ids.get(i)); + if (Seeding == 0) { + return AjaxResult.error("没有此id单据!" + ids.get(i)); + } + } else { String[] typeValue = value.getFileName().split("_"); String type2 = typeValue[0]; - file.UploadFile1(type2, value.getZone(), value.getDataTime(),service,""); - Seeding= service.DelUpload(ids.get(i)); - if (Seeding==0){return AjaxResult.error("没有此id单据!"+ids.get(i));} + file.UploadFile1(type2, value.getZone(), value.getDataTime(), service, ""); + Seeding = service.DelUpload(ids.get(i)); + if (Seeding == 0) { + return AjaxResult.error("没有此id单据!" + ids.get(i)); + } } } @@ -498,7 +484,7 @@ public class DateUploadController return AjaxResult.success("成功!"); } - public void readXml() { + public void readXml() { try { // 创建解析器工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); @@ -509,7 +495,7 @@ public class DateUploadController File file = new File("route.xml"); - Document doc =db.parse(file); + Document doc = db.parse(file); NodeList routeList = doc.getElementsByTagName("Rodel"); // 遍历每个book节点 for (int i = 0; i < routeList.getLength(); i++) { @@ -525,14 +511,13 @@ public class DateUploadController // 区分,去掉空格和换行符 if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) { + this.ExePathName = childNodes.item(1).getTextContent().trim(); - this.ExePathName=childNodes.item(1).getTextContent().trim(); + this.FilePathName = childNodes.item(3).getTextContent().trim(); - this.FilePathName=childNodes.item(3).getTextContent().trim(); + this.FilePaths = childNodes.item(5).getTextContent().trim(); - this.FilePaths=childNodes.item(5).getTextContent().trim(); - - this.ShpPaths=childNodes.item(7).getTextContent().trim(); + this.ShpPaths = childNodes.item(7).getTextContent().trim(); } } } @@ -540,133 +525,300 @@ public class DateUploadController e.printStackTrace(); } } + + /** * 导出Word + * * @param */ - @RequestMapping(value = "/exportWord",method = {RequestMethod.GET}) + @RequestMapping(value = "/exportWord1", method = {RequestMethod.GET}) @ResponseBody - public void exportWord(HttpServletResponse response, HttpServletRequest request) throws Exception { + public void exportWord1(HttpServletResponse response, HttpServletRequest request) throws Exception { + String [] zoneList=new String[]{"01","02","03"}; //接受前端传来的数据 - String year = "2022";//request.getParameter("year"); - String zone = "03";//request.getParameter("zone"); + String year = "2022"; //创建文本对象 CustomXWPFDocument docxDocument = new CustomXWPFDocument(); //创建标题 - BarChart.setTitle(docxDocument,"Evaluation report of planting monitoring in ITBA Nature Reserve"); + BarChart.setTitle(docxDocument, "Evaluation report of planting monitoring in ITBA Nature Reserve"); //创建第一个段落的标题 BarChart.createFirstLevelTopic(docxDocument, "1.Background information"); //创建第一个段落的内容 - BarChart.createParagraphAndInsertWord(docxDocument, "Date time: "+year); - BarChart.createParagraphAndInsertWord(docxDocument, "Evaluation area: "+zone); + BarChart.createParagraphAndInsertWord(docxDocument, "Date time: " + year); + String zoneString=""; + for (String zone:zoneList){ + zone+=" | "; + zoneString+=zone; + } + zoneString=zoneString.substring(0,zoneString.length()-3); + BarChart.createParagraphAndInsertWord(docxDocument, "Evaluation area: " + zoneString); + Integer number=0; + for (int i=0;i landUses = landUseServices.sqlSeeding1(zone, year); + UplodFile main = landUseServices.mainClass(zone, year); + //x轴 + String[] xAxisData = new String[]{"Fields", "Buildings", "Roads", "Water", "Forest", "Grass", "Soil", "Desert", "Rocks", "Other"}; + //y轴 + Double[] yAxisData = new Double[]{landUses.get(0).getArea(), landUses.get(1).getArea(), landUses.get(2).getArea(), landUses.get(3).getArea(), landUses.get(4).getArea(), landUses.get(5).getArea(), landUses.get(6).getArea(), landUses.get(7).getArea(), landUses.get(8).getArea(), landUses.get(9).getArea()}; + BarChart.drawTable(docxDocument, xAxisData, yAxisData);//标题2图标 + BarChart.setPicTitle(docxDocument, "Figure "+(number+2)+" Statistical data on land use types"); + BarChart.createParagraphAndInsertWord(docxDocument, "In "+zone+" region, the total area of field is "+landUses.get(0).getArea()+" hm², the building is "+landUses.get(1).getArea()+" hm², the road is "+landUses.get(2).getArea()+" hm², the water is "+landUses.get(3).getArea()+" hm², the forest is "+landUses.get(4).getArea()+" hm², the grass is "+landUses.get(5).getArea()+" hm², the soil is "+landUses.get(6).getArea()+" hm², the desert is "+landUses.get(7).getArea()+" hm², the rock is "+landUses.get(8).getArea()+" hm², and other land use types are "+landUses.get(9).getArea()+" hm²."); + BarChart.createSecondLevelTopic(docxDocument, i+2+".2 Monitoring results of planting suitability evaluation index"); + //2.2.1海拔、坡向、坡度 + //海拔 + BarChart.createSecondLevelTopic(docxDocument, i+2+".2.1. Monitoring results of terrain index"); + BarChart.insertPic(docxDocument, "C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); + BarChart.setPicTitle(docxDocument, "Figure "+(number+3)+" Spatial distribution data of altitude"); + //绘制折线图(已取消) + String[] xAxis = new String[]{"<400", "400-600", "600-100", "1000-1500", ">1500"};//x轴 + Double[] yAxis = new Double[]{main.getAltitudes().get(0).getLevel1(), + main.getAltitudes().get(0).getLevel2(), main.getAltitudes().get(0).getLevel3(), + main.getAltitudes().get(0).getLevel4(), main.getAltitudes().get(0).getLevel5()};//y轴 + BarChart.drawTable(docxDocument, xAxis, yAxis); + BarChart.setPicTitle(docxDocument, "Figure "+(number+4)+" Classification statistics of altitude"); + BarChart.createParagraphAndInsertWord(docxDocument, "In " + zone + " region, the area with an altitude lower than 400m is " + main.getAltitudes().get(0).getLevel1() + " hm², the area with 400-600m is " + main.getAltitudes().get(0).getLevel2() + " hm², the area with 600-1000m is " + main.getAltitudes().get(0).getLevel3() + " hm², and the area with 1000-1500m is " + main.getAltitudes().get(0).getLevel4() + " hm². The area with an altitude higher than 1500m is " + main.getAltitudes().get(0).getLevel5() + " hm²."); + //坡向 + BarChart.insertPic(docxDocument, "C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); + BarChart.setPicTitle(docxDocument, "Figure "+(number+5)+" Spatial distribution data of aspect"); + String[] xAspectAxis = new String[]{"North", "Northeast", "East", "Southeast", "South", "Southwest", "West", "NorthWest"};//x轴 + Double[] yAspectAxis = new Double[]{main.getAspects().get(0).getNorth(), main.getAspects().get(0).getNortheast(), + main.getAspects().get(0).getEast(), main.getAspects().get(0).getSoutheast(), main.getAspects().get(0).getSouth(), + main.getAspects().get(0).getSouthwest(), main.getAspects().get(0).getWest(), main.getAspects().get(0).getNorthwest()};//y轴 + BarChart.drawTable(docxDocument, xAspectAxis, yAspectAxis);//标题2图标 + BarChart.setPicTitle(docxDocument, "Figure "+(number+6)+" Classification statistics of aspect"); + BarChart.createParagraphAndInsertWord(docxDocument, "In " + zone + " region, the area with the north aspect is " + main.getAspects().get(0).getNorth() + " hm², the area with the northeast aspect is " + main.getAspects().get(0).getNortheast() + " hm², the area with the east aspect is " + main.getAspects().get(0).getEast() + " hm², the area with the southeast aspect is " + main.getAspects().get(0).getSoutheast() + " hm², and the area with the south aspect is " + main.getAspects().get(0).getNorth() + " hm², the area with the southwest aspect is " + main.getAspects().get(0).getSouthwest() + " hm², the area with the west aspect is " + main.getAspects().get(0).getWest() + " hm², and the area with the northwest aspect is " + main.getAspects().get(0).getNorthwest() + " hm²."); + //坡度 + BarChart.insertPic(docxDocument, "C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); + BarChart.setPicTitle(docxDocument, "Figure "+(number+7)+" Spatial distribution data of slope"); + String[] xSlopeAxis = new String[]{"<10°", "10°~30°", "30°~50°", "50°~70°", ">70°"};//x轴 + Double[] ySlopeAxis = new Double[]{main.getSlopes().get(0).getLevel1(), + main.getSlopes().get(0).getLevel2(), main.getSlopes().get(0).getLevel3(), + main.getSlopes().get(0).getLevel4(), main.getSlopes().get(0).getLevel5()}; + BarChart.drawTable(docxDocument, xSlopeAxis, ySlopeAxis);//标题2图标 + BarChart.setPicTitle(docxDocument, "Figure "+(number+8)+" Classification statistics of slope"); + BarChart.createParagraphAndInsertWord(docxDocument, "In " + zone + " region, the area of slope less than 10° is " + main.getSlopes().get(0).getLevel1() + " hm2, the area of 10°-30° is " + main.getSlopes().get(0).getLevel2() + " hm2, the area of 30°-50° is " + main.getSlopes().get(0).getLevel3() + " hm2, and the area of 50°-70° is " + main.getSlopes().get(0).getLevel4() + "hm2. The area greater than 70° is " + main.getSlopes().get(0).getLevel5() + " hm2."); - //创建第二段落的标题 - BarChart.createFirstLevelTopic(docxDocument, "2.Results of remote sensing monitoring of seeding success rate"); - //循环判断有多少个资源 - List seedingSuccessRates = seedingSuccessService.sqlSeeding(zone, year); - for (SeedingSuccessRate seedingSuccessRate : seedingSuccessRates) { - //图片的url - //String productCode1 = seedingSuccessRate.getProductCode1(); - //String productCode2 = seedingSuccessRate.getProductCode2(); - //创建第二段落的内容 - BarChart.insertPic(docxDocument, "C:\\Users\\xkrs\\Desktop\\pic\\1.png"); - BarChart.setPicTitle(docxDocument, "Spatial distribution data of successful seeding regions"); - BarChart.insertPic(docxDocument, "C:\\Users\\xkrs\\Desktop\\pic\\2.png"); - BarChart.setPicTitle(docxDocument, "Spatial distribution data of seeding success rate"); - BarChart.createParagraphAndInsertWord(docxDocument, ""+BarChart.changeDate(seedingSuccessRate.getImageDate())+". The total planting area in "+seedingSuccessRate.getZone()+" area was "+BarChart.getDoubleNumber((seedingSuccessRate.getSeedingSuccessArea()/seedingSuccessRate.getSeedingSuccess())) +" hm², the vegetation survival area was "+seedingSuccessRate.getSeedingSuccessArea()+" hm², and the seeding success rate was "+seedingSuccessRate.getSeedingSuccess()+"%."); - } - //第三段的标题 - BarChart.createFirstLevelTopic(docxDocument, "3.Results of remote sensing monitoring of vegetation health"); - //获取ProductCode1的集合 - List M_code=new ArrayList<>(); - List H_code=new ArrayList<>(); - //查询数据库中有多少条数据 - List vegetationHealths = vegetationHealthServices.sqlInfo(zone, year); - //循环查询的数据分别加入到不同的集合中作为中质量和高质量的循环次数 - for (VegetationHealth vegetationHealth : vegetationHealths) { - String productCode1 = vegetationHealth.getProductCode1(); - if(productCode1.startsWith("M")) - { - M_code.add(vegetationHealth.getProductCode1()); - } - if(productCode1.startsWith("H")) - { - H_code.add(vegetationHealth.getProductCode1()); - } - } - //第三段的内容 - //第三段的第一个小标题 - int size=H_code.size()+M_code.size(); - BarChart.createSecondLevelTopic(docxDocument, "3.1.Monitoring results of medium resolution data"); - for(int i = 0; i vegetationHealths_M = vegetationHealthServices.sqlSeeding(zone, M_code.get(i), year); - for (VegetationHealth vegetationHealth_m : vegetationHealths_M) { - //第三段的第一个小标题的内容 - BarChart.insertPic(docxDocument, "C:\\Users\\xkrs\\Desktop\\pic\\2.png"); - BarChart.setPicTitle(docxDocument, "Spatial distribution data of vegetation planting area"); - BarChart.insertPic(docxDocument, "C:\\Users\\xkrs\\Desktop\\pic\\1.png"); - BarChart.setPicTitle(docxDocument, "Spatial distribution data of vegetation health status"); - //插入柱状图表 - String[] xAxisData = new String[]{"Health", "Normal", "Not-Health"}; - Double m1 = vegetationHealth_m.getHealthy(); - Double m2 = vegetationHealth_m.getNormal(); - Double m3 = vegetationHealth_m.getNotHealthy(); - Double[] yAxisData = new Double[]{m1, m2, m3}; - BarChart.drawTable(docxDocument,xAxisData,yAxisData); - BarChart.setPicTitle(docxDocument, "Statistical data on vegetation health"); - BarChart.createParagraphAndInsertWord(docxDocument, ""+BarChart.changeDate(vegetationHealth_m.getImageDate())+". Based on the monitoring results of high resolution satellite images, the area of healthy vegetation growth in "+vegetationHealth_m.getZone()+" region was "+vegetationHealth_m.getHealthy()+" hm², accounting for "+BarChart.getDoubleNumber((vegetationHealth_m.getHealthy()/vegetationHealth_m.getTotalArea())*100)+"%. The area with normal vegetation growth was "+vegetationHealth_m.getNormal()+" hm², accounting for "+BarChart.getDoubleNumber((vegetationHealth_m.getNormal()/vegetationHealth_m.getTotalArea())*100)+"%. The area of unhealthy vegetation growth was "+vegetationHealth_m.getNotHealthy()+" hm², accounting for "+BarChart.getDoubleNumber((vegetationHealth_m.getNotHealthy()/vegetationHealth_m.getTotalArea())*100)+"%."); - } - } - //第三段的第二个小标题 - BarChart.createSecondLevelTopic(docxDocument, "3.2.Monitoring results of high resolution data"); - for(int i=0;i vegetationHealths_H = vegetationHealthServices.sqlSeeding(zone, H_code.get(i), year); - for (VegetationHealth vegetationHealth_h : vegetationHealths_H) { - //第三段的第二个小标题的内容 - BarChart.insertPic(docxDocument, "C:\\Users\\xkrs\\Desktop\\pic\\1.png"); - BarChart.setPicTitle(docxDocument, "Spatial distribution data of vegetation planting area"); - BarChart.insertPic(docxDocument, "C:\\Users\\xkrs\\Desktop\\pic\\2.png"); - BarChart.setPicTitle(docxDocument, "Spatial distribution data of vegetation health status"); - //此处插入图表 - String[] xAxisData1 = new String[]{"Health", "Normal", "Not-Health"}; - Double h1 = vegetationHealth_h.getHealthy(); - Double h2 = vegetationHealth_h.getNormal(); - Double h3 = vegetationHealth_h.getNotHealthy(); - Double[] yAxisData1 = new Double[]{h1, h2, h3}; - BarChart.drawTable(docxDocument, xAxisData1, yAxisData1); - BarChart.setPicTitle(docxDocument, "Statistical data on vegetation health"); - BarChart.createParagraphAndInsertWord(docxDocument, "" + BarChart.changeDate(vegetationHealth_h.getImageDate()) + ". Based on the monitoring results of high resolution satellite images, the area of healthy vegetation growth in " + vegetationHealth_h.getZone() + " region was " + vegetationHealth_h.getHealthy() + " hm², accounting for " + BarChart.getDoubleNumber((vegetationHealth_h.getHealthy() / vegetationHealth_h.getTotalArea()) * 100) + "%. The area with normal vegetation growth was " + vegetationHealth_h.getNormal() + " hm², accounting for " + BarChart.getDoubleNumber((vegetationHealth_h.getNormal() / vegetationHealth_h.getTotalArea()) * 100) + "%. The area of unhealthy vegetation growth was " + vegetationHealth_h.getNotHealthy() + " hm², accounting for " + BarChart.getDoubleNumber((vegetationHealth_h.getNotHealthy() / vegetationHealth_h.getTotalArea()) * 100) + "%."); - } - } - //第四个标题 - List plantingSuitabilities = plantingSuitabilityService.sqlSeeding(zone); - for (PlantingSuitability suitability : plantingSuitabilities) { - BarChart.createFirstLevelTopic(docxDocument,"4.Results of remote sensing monitoring of planting suitability"); - //获取图片的url - String productCode1 = suitability.getProductCode1(); - //第四个标题的内容 - BarChart.insertPic(docxDocument,"C:\\Users\\xkrs\\Desktop\\pic\\1.png"); - BarChart.setPicTitle(docxDocument,"Spatial distribution data of planting suitability"); + //2.2.2 沙化指数、湿度指数、盐渍化指数 + BarChart.createSecondLevelTopic(docxDocument, i+2+".2.2. Monitoring results of soil index"); + //沙化指数 + BarChart.insertPic(docxDocument, "C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); + BarChart.setPicTitle(docxDocument, "Figure "+(number+9)+" Spatial distribution data of soil desertification factor"); + String[] xDesertificationAxis = new String[]{"<0.1", "01~0.3", "0.3~0.5", "0.5~0.7", ">0.7"};//x轴 + Double[] yDesertificationAxis = new Double[]{main.getSoilDesertifications().get(0).getLevel1(), + main.getSoilDesertifications().get(0).getLevel2(), main.getSoilDesertifications().get(0).getLevel3(), + main.getSoilDesertifications().get(0).getLevel4(), main.getSoilDesertifications().get(0).getLevel5()}; + BarChart.drawTable(docxDocument, xDesertificationAxis, yDesertificationAxis); + BarChart.setPicTitle(docxDocument, "Figure "+(number+10)+" Classification statistics of soil desertification factor"); + BarChart.createParagraphAndInsertWord(docxDocument, "In " + zone + " region, the area of soil desertification factor less than 0.1 is " + main.getSoilDesertifications().get(0).getLevel1() + " hm2, the area of 0.1-0.3 is " + main.getSoilDesertifications().get(0).getLevel2() + "hm2, the area of 0.3-0.5 is " + main.getSoilDesertifications().get(0).getLevel3() + " hm2, and the area of 0.5-0.7 is " + main.getSoilDesertifications().get(0).getLevel4() + " hm2. The area greater than 0.7 is " + main.getSoilDesertifications().get(0).getLevel5() + " hm2."); + //湿度指数 + BarChart.insertPic(docxDocument, "C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); + BarChart.setPicTitle(docxDocument, "Figure "+(number+11)+" Spatial distribution data of soil moisture factor"); + Double[] yMoistureAxis = new Double[]{main.getSoilMoistures().get(0).getLevel1(), + main.getSoilMoistures().get(0).getLevel2(), main.getSoilMoistures().get(0).getLevel3(), + main.getSoilMoistures().get(0).getLevel4(), main.getSoilMoistures().get(0).getLevel5()}; + BarChart.drawTable(docxDocument, xDesertificationAxis, yMoistureAxis); + BarChart.setPicTitle(docxDocument, "Figure "+(number+12)+" Classification statistics of soil moisture factor"); + BarChart.createParagraphAndInsertWord(docxDocument, "In " + zone + " region, the area of soil moisture factor less than 0.1 is " + main.getSoilMoistures().get(0).getLevel1() + " hm2, the area of 0.1-0.3 is " + main.getSoilMoistures().get(0).getLevel2() + " hm2, the area of 0.3-0.5 is " + main.getSoilMoistures().get(0).getLevel3() + " hm2, and the area of 0.5-0.7 is " + main.getSoilMoistures().get(0).getLevel4() + "hm2. The area greater than 0.7 is " + main.getSoilMoistures().get(0).getLevel5() + " hm2."); + //盐渍化指数 + BarChart.insertPic(docxDocument, "C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); + BarChart.setPicTitle(docxDocument, "Figure "+(number+13)+" Spatial distribution data of soil salinization factor"); + Double[] ySalinizationsAxis = new Double[]{main.getSoilSalinizations().get(0).getLevel1(), + main.getSoilSalinizations().get(0).getLevel2(), main.getSoilSalinizations().get(0).getLevel3(), + main.getSoilSalinizations().get(0).getLevel4(), main.getSoilSalinizations().get(0).getLevel5()}; + BarChart.drawTable(docxDocument, xDesertificationAxis, ySalinizationsAxis);//标题2图标 + BarChart.setPicTitle(docxDocument, "Figure "+(number+14)+" Classification statistics of soil salinization factor"); + BarChart.createParagraphAndInsertWord(docxDocument, "In " + zone + " region, In 01 area, the area of soil salinization factor less than " + main.getSoilSalinizations().get(0).getLevel1() + " is 252 hm2, the area of 0.1-0.3 is " + main.getSoilSalinizations().get(0).getLevel2() + " hm2, the area of 0.3-0.5 is " + main.getSoilSalinizations().get(0).getLevel3() + " hm2, and the area of 0.5-0.7 is " + main.getSoilSalinizations().get(0).getLevel4() + " hm2. The area greater than 0.7 is " + main.getSoilSalinizations().get(0).getLevel5() + " hm2."); + + //2.2.3 水域因子、道路因子 + BarChart.createSecondLevelTopic(docxDocument, "2.2.3. Monitoring results of regional index"); + //道路因子 + BarChart.insertPic(docxDocument, "C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); + BarChart.setPicTitle(docxDocument, "Figure "+(number+15)+" Spatial distribution data of road factor"); + Double[] yRoadAxis = new Double[]{main.getRoadFactors().get(0).getLevel1(), + main.getRoadFactors().get(0).getLevel2(), main.getRoadFactors().get(0).getLevel3(), + main.getRoadFactors().get(0).getLevel4(), main.getRoadFactors().get(0).getLevel5()}; + BarChart.drawTable(docxDocument, xDesertificationAxis, yRoadAxis);//标题2图标 + BarChart.setPicTitle(docxDocument, "Figure "+(number+16)+" Classification statistics of road factor"); + BarChart.createParagraphAndInsertWord(docxDocument, "In " + zone + " region, the area of road factor less than 0.1 is " + main.getRoadFactors().get(0).getLevel1() + " hm2, the area of 0.1-0.3 is " + main.getRoadFactors().get(0).getLevel2() + " hm2, the area of 0.3-0.5 is " + main.getRoadFactors().get(0).getLevel3() + " hm2, and the area of 0.5-0.7 is " + main.getRoadFactors().get(0).getLevel4() + " hm2. The area greater than 0.7 is " + main.getRoadFactors().get(0).getLevel5() + "hm2."); + //水域因子 + BarChart.insertPic(docxDocument, "C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); + BarChart.setPicTitle(docxDocument, "Figure "+(number+17)+" Spatial distribution data of water factor"); + Double[] yWaterAxis = new Double[]{main.getWaterFactors().get(0).getLevel1(), + main.getWaterFactors().get(0).getLevel2(), main.getWaterFactors().get(0).getLevel3(), + main.getWaterFactors().get(0).getLevel4(), main.getWaterFactors().get(0).getLevel5()}; + BarChart.drawTable(docxDocument, xDesertificationAxis, yWaterAxis);//标题2图标 + BarChart.setPicTitle(docxDocument, "Figure "+(number+18)+" Classification statistics of water factor"); + BarChart.createParagraphAndInsertWord(docxDocument, "In " + zone + " region, the area of water factor less than 0.1 is " + main.getWaterFactors().get(0).getLevel1() + " hm2, the area of 0.1-0.3 is " + main.getWaterFactors().get(0).getLevel2() + " hm2, the area of 0.3-0.5 is " + main.getWaterFactors().get(0).getLevel3() + " hm2, and the area of 0.5-0.7 is " + main.getWaterFactors().get(0).getLevel4() + " hm2. The area greater than 0.7 is " + main.getWaterFactors().get(0).getLevel5() + " hm2."); + //2.3 + BarChart.createSecondLevelTopic(docxDocument, i+2+".3. Monitoring results of planting suitability"); + //查找适宜性 + PlantingSuitability suitability = plantingSuitabilityService.sqlSeeding1(zone, year); + BarChart.insertPic(docxDocument, "C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); + BarChart.setPicTitle(docxDocument, "Figure "+(number+19)+" Spatial distribution data of planting suitability"); //此处插入图表 String[] xAxisData2 = new String[]{"Very Suitable", "Suitable", "Not Suitable"}; - Double s1 = suitability.getVerySuitable(); - Double s2 = suitability.getSuitable(); - Double s3 = suitability.getNotSuitable(); - Double[] yAxisData2 = new Double[]{s1, s2, s3}; - BarChart.drawTable(docxDocument,xAxisData2,yAxisData2); - BarChart.setPicTitle(docxDocument,"Classification statistics of planting suitability"); + Double x1 = suitability.getVerySuitable(); + Double x2 = suitability.getSuitable(); + Double x3 = suitability.getNotSuitable(); + Double[] yAxisData2 = new Double[]{x1, x2, x3}; + BarChart.drawTable(docxDocument, xAxisData2, yAxisData2); + BarChart.setPicTitle(docxDocument, "Figure "+(number+20)+" Classification statistics of planting suitability"); BarChart.createParagraphAndInsertWord(docxDocument,"In "+suitability.getZone()+" region, the area of very suitable region was "+suitability.getVerySuitable()+" hm², accounting for "+BarChart.getDoubleNumber((suitability.getVerySuitable()/suitability.getTotalArea())*100)+"%. The area of suitable grade was "+suitability.getSuitable()+" hm², accounting for "+BarChart.getDoubleNumber((suitability.getSuitable()/suitability.getTotalArea())*100)+"%. The area of unsuitable area was "+suitability.getNotSuitable()+" hm², accounting for "+BarChart.getDoubleNumber((suitability.getNotSuitable()/suitability.getTotalArea())*100)+"%."); + number+=20; } + response.setCharacterEncoding("UTF-8"); response.setContentType("application/msword"); //文件名 String fileName = "Evaluation report of planting monitoring in ITBA Nature Reserve - V2.0.docx"; - response.setHeader("Content-Disposition","attachment;fileName="+new String(fileName.getBytes("UTF-8"), "ISO-8859-1")); + response.setHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1")); ServletOutputStream responseOutputStream = response.getOutputStream(); docxDocument.write(responseOutputStream); responseOutputStream.flush(); responseOutputStream.close(); } + +// /** +// * 导出Word +// * @param +// */ +// @RequestMapping(value = "/exportWord",method = {RequestMethod.GET}) +// @ResponseBody +// public void exportWord(HttpServletResponse response, HttpServletRequest request) throws Exception { +// //接受前端传来的数据 +// String year = "2022";//request.getParameter("year"); +// String zone = "03";//request.getParameter("zone"); +// //创建文本对象 +// CustomXWPFDocument docxDocument = new CustomXWPFDocument(); +// //创建标题 +// BarChart.setTitle(docxDocument,"Evaluation report of planting monitoring in ITBA Nature Reserve"); +// //创建第一个段落的标题 +// BarChart.createFirstLevelTopic(docxDocument, "1.Background information"); +// //创建第一个段落的内容 +// BarChart.createParagraphAndInsertWord(docxDocument, "Date time: "+year); +// BarChart.createParagraphAndInsertWord(docxDocument, "Evaluation area: "+zone); +// +// +// //创建第二段落的标题 +// BarChart.createFirstLevelTopic(docxDocument, "2.Results of remote sensing monitoring of seeding success rate"); +// //循环判断有多少个资源 +// List seedingSuccessRates = seedingSuccessService.sqlSeeding(zone, year); +// for (SeedingSuccessRate seedingSuccessRate : seedingSuccessRates) { +// //图片的url +// //String productCode1 = seedingSuccessRate.getProductCode1(); +// //String productCode2 = seedingSuccessRate.getProductCode2(); +// //创建第二段落的内容 +// BarChart.insertPic(docxDocument, "C:\\Users\\xkrs\\Desktop\\pic\\1.png"); +// BarChart.setPicTitle(docxDocument, "Spatial distribution data of successful seeding regions"); +// BarChart.insertPic(docxDocument, "C:\\Users\\xkrs\\Desktop\\pic\\2.png"); +// BarChart.setPicTitle(docxDocument, "Spatial distribution data of seeding success rate"); +// BarChart.createParagraphAndInsertWord(docxDocument, ""+BarChart.changeDate(seedingSuccessRate.getImageDate())+ +// ". The total planting area in "+seedingSuccessRate.getZone()+" area was "+ +// BarChart.getDoubleNumber((seedingSuccessRate.getSeedingSuccessArea()/seedingSuccessRate.getSeedingSuccess())) + +// " hm², the vegetation survival area was "+seedingSuccessRate.getSeedingSuccessArea()+" hm², and the seeding success rate was "+seedingSuccessRate.getSeedingSuccess()+"%."); +// } +// //第三段的标题 +// BarChart.createFirstLevelTopic(docxDocument, "3.Results of remote sensing monitoring of vegetation health"); +// //获取ProductCode1的集合 +// List M_code=new ArrayList<>(); +// List H_code=new ArrayList<>(); +// //查询数据库中有多少条数据 +// List vegetationHealths = vegetationHealthServices.sqlInfo(zone, year); +// //循环查询的数据分别加入到不同的集合中作为中质量和高质量的循环次数 +// for (VegetationHealth vegetationHealth : vegetationHealths) { +// String productCode1 = vegetationHealth.getProductCode1(); +// if(productCode1.startsWith("M")) +// { +// M_code.add(vegetationHealth.getProductCode1()); +// } +// if(productCode1.startsWith("H")) +// { +// H_code.add(vegetationHealth.getProductCode1()); +// } +// } +// //第三段的内容 +// //第三段的第一个小标题 +// int size=H_code.size()+M_code.size(); +// BarChart.createSecondLevelTopic(docxDocument, "3.1.Monitoring results of medium resolution data"); +// for(int i = 0; i vegetationHealths_M = vegetationHealthServices.sqlSeeding(zone, M_code.get(i), year); +// for (VegetationHealth vegetationHealth_m : vegetationHealths_M) { +// //第三段的第一个小标题的内容 +// BarChart.insertPic(docxDocument, "C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); +// BarChart.setPicTitle(docxDocument, "Spatial distribution data of vegetation planting area"); +// BarChart.insertPic(docxDocument, "C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); +// BarChart.setPicTitle(docxDocument, "Spatial distribution data of vegetation health status"); +// //插入柱状图表 +// String[] xAxisData = new String[]{"Health", "Normal", "Not-Health"}; +// Double m1 = vegetationHealth_m.getHealthy(); +// Double m2 = vegetationHealth_m.getNormal(); +// Double m3 = vegetationHealth_m.getNotHealthy(); +// Double[] yAxisData = new Double[]{m1, m2, m3}; +// BarChart.drawTable(docxDocument,xAxisData,yAxisData); +// BarChart.setPicTitle(docxDocument, "Statistical data on vegetation health"); +// BarChart.createParagraphAndInsertWord(docxDocument, ""+BarChart.changeDate(vegetationHealth_m.getImageDate())+". Based on the monitoring results of high resolution satellite images, the area of healthy vegetation growth in "+vegetationHealth_m.getZone()+" region was "+vegetationHealth_m.getHealthy()+" hm², accounting for "+BarChart.getDoubleNumber((vegetationHealth_m.getHealthy()/vegetationHealth_m.getTotalArea())*100)+"%. The area with normal vegetation growth was "+vegetationHealth_m.getNormal()+" hm², accounting for "+BarChart.getDoubleNumber((vegetationHealth_m.getNormal()/vegetationHealth_m.getTotalArea())*100)+"%. The area of unhealthy vegetation growth was "+vegetationHealth_m.getNotHealthy()+" hm², accounting for "+BarChart.getDoubleNumber((vegetationHealth_m.getNotHealthy()/vegetationHealth_m.getTotalArea())*100)+"%."); +// } +// } +// //第三段的第二个小标题 +// BarChart.createSecondLevelTopic(docxDocument, "3.2.Monitoring results of high resolution data"); +// for(int i=0;i vegetationHealths_H = vegetationHealthServices.sqlSeeding(zone, H_code.get(i), year); +// for (VegetationHealth vegetationHealth_h : vegetationHealths_H) { +// //第三段的第二个小标题的内容 +// BarChart.insertPic(docxDocument, "C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); +// BarChart.setPicTitle(docxDocument, "Spatial distribution data of vegetation planting area"); +// BarChart.insertPic(docxDocument, "C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); +// BarChart.setPicTitle(docxDocument, "Spatial distribution data of vegetation health status"); +// //此处插入图表 +// String[] xAxisData1 = new String[]{"Health", "Normal", "Not-Health"}; +// Double h1 = vegetationHealth_h.getHealthy(); +// Double h2 = vegetationHealth_h.getNormal(); +// Double h3 = vegetationHealth_h.getNotHealthy(); +// Double[] yAxisData1 = new Double[]{h1, h2, h3}; +// BarChart.drawTable(docxDocument, xAxisData1, yAxisData1); +// BarChart.setPicTitle(docxDocument, "Statistical data on vegetation health"); +// BarChart.createParagraphAndInsertWord(docxDocument, "" + BarChart.changeDate(vegetationHealth_h.getImageDate()) + ". Based on the monitoring results of high resolution satellite images, the area of healthy vegetation growth in " + vegetationHealth_h.getZone() + " region was " + vegetationHealth_h.getHealthy() + " hm², accounting for " + BarChart.getDoubleNumber((vegetationHealth_h.getHealthy() / vegetationHealth_h.getTotalArea()) * 100) + "%. The area with normal vegetation growth was " + vegetationHealth_h.getNormal() + " hm², accounting for " + BarChart.getDoubleNumber((vegetationHealth_h.getNormal() / vegetationHealth_h.getTotalArea()) * 100) + "%. The area of unhealthy vegetation growth was " + vegetationHealth_h.getNotHealthy() + " hm², accounting for " + BarChart.getDoubleNumber((vegetationHealth_h.getNotHealthy() / vegetationHealth_h.getTotalArea()) * 100) + "%."); +// } +// } +// //第四个标题 +// List plantingSuitabilities = plantingSuitabilityService.sqlSeeding(zone); +// for (PlantingSuitability suitability : plantingSuitabilities) { +// BarChart.createFirstLevelTopic(docxDocument,"4.Results of remote sensing monitoring of planting suitability"); +// //获取图片的url +// String productCode1 = suitability.getProductCode1(); +// //第四个标题的内容 +// BarChart.insertPic(docxDocument,"C:\\Users\\HP\\Desktop\\文本文档\\1650791783(1).jpg"); +// BarChart.setPicTitle(docxDocument,"Spatial distribution data of planting suitability"); +// //此处插入图表 +// String[] xAxisData2 = new String[]{"Very Suitable", "Suitable", "Not Suitable"}; +// Double s1 = suitability.getVerySuitable(); +// Double s2 = suitability.getSuitable(); +// Double s3 = suitability.getNotSuitable(); +// Double[] yAxisData2 = new Double[]{s1, s2, s3}; +// BarChart.drawTable(docxDocument,xAxisData2,yAxisData2); +// BarChart.setPicTitle(docxDocument,"Classification statistics of planting suitability"); +// BarChart.createParagraphAndInsertWord(docxDocument,"In "+suitability.getZone()+" region, the area of very suitable region was "+suitability.getVerySuitable()+" hm², accounting for "+BarChart.getDoubleNumber((suitability.getVerySuitable()/suitability.getTotalArea())*100)+"%. The area of suitable grade was "+suitability.getSuitable()+" hm², accounting for "+BarChart.getDoubleNumber((suitability.getSuitable()/suitability.getTotalArea())*100)+"%. The area of unsuitable area was "+suitability.getNotSuitable()+" hm², accounting for "+BarChart.getDoubleNumber((suitability.getNotSuitable()/suitability.getTotalArea())*100)+"%."); +// } +// response.setCharacterEncoding("UTF-8"); +// response.setContentType("application/msword"); +// //文件名 +// String fileName = "Evaluation report of planting monitoring in ITBA Nature Reserve - V2.0.docx"; +// response.setHeader("Content-Disposition","attachment;fileName="+new String(fileName.getBytes("UTF-8"), "ISO-8859-1")); +// ServletOutputStream responseOutputStream = response.getOutputStream(); +// docxDocument.write(responseOutputStream); +// responseOutputStream.flush(); +// responseOutputStream.close(); +// } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/shate/TopographicFactorController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/shate/TopographicFactorController.java index a47f154..5642de0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/shate/TopographicFactorController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/shate/TopographicFactorController.java @@ -57,7 +57,6 @@ public class TopographicFactorController { { Max=ce.getLevel5(); } - } for (int i=0;i yAxisSource = XDDFDataSourcesFactory.fromArray(yAxisData); // 设置Y轴数据 + yAxis.setTitle("hm²"); + // 7、创建折线图对象 + XDDFLineChartData lineChart = (XDDFLineChartData) xChart.createData(ChartTypes.LINE, xAxis, yAxis); + + // 8、加载折线图数据集 + XDDFLineChartData.Series lineSeries = (XDDFLineChartData.Series) lineChart.addSeries(xAxisSource, yAxisSource); + lineSeries.setSmooth(false); // 线条样式:true平滑曲线,false折线 + lineSeries.setMarkerSize((short) 6); // 标记点大小 + lineSeries.setMarkerStyle(MarkerStyle.CIRCLE); // 标记点样式 + + // 9、绘制折线图 + xChart.plot(lineChart); + } + public static void drawTable(XWPFDocument document, String[] xAxisData,Double[] yAxisData) throws Exception { /*int numOfPoints = categories.length; String categoryDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, 0, 0)); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain_shate/WordHelp.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain_shate/WordHelp.java new file mode 100644 index 0000000..2cd37df --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain_shate/WordHelp.java @@ -0,0 +1,30 @@ +package com.ruoyi.system.domain_shate; + +import java.sql.DataTruncation; + +/** + * @Author: JinSheng Song + * @Date: 2022/11/14 16:20 + */ +public class WordHelp { + + private String year; + + private String[] zone; + + public String getYear() { + return year; + } + + public void setYear(String year) { + this.year = year; + } + + public String[] getZone() { + return zone; + } + + public void setZone(String[] zone) { + this.zone = zone; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper_shate/PlantingSuitabilityMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper_shate/PlantingSuitabilityMapper.java index 5ae519c..d2109da 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper_shate/PlantingSuitabilityMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper_shate/PlantingSuitabilityMapper.java @@ -14,6 +14,9 @@ public interface PlantingSuitabilityMapper { List sqlSeeding(@Param("zone") String zone); + PlantingSuitability sqlSeeding1(@Param("zone") String zone, + @Param("year") String year); + Integer InsertSeeding(PlantingSuitability suitability); List sqlYear(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/ILandUseServices.java b/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/ILandUseServices.java index 3db92c3..14cb916 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/ILandUseServices.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/ILandUseServices.java @@ -2,6 +2,7 @@ package com.ruoyi.system.service_shate; import com.ruoyi.system.domain_shate.LandUse; import com.ruoyi.system.domain_shate.SeedingSuccessRate; +import com.ruoyi.system.domain_shate.UplodFile; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -21,4 +22,6 @@ public interface ILandUseServices List sqlYear(); + UplodFile mainClass(String zone,String year); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/IPlantingSuitabilityService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/IPlantingSuitabilityService.java index 2ea49ca..1697868 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/IPlantingSuitabilityService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/IPlantingSuitabilityService.java @@ -13,6 +13,8 @@ public interface IPlantingSuitabilityService { List sqlSeeding(String zone); + PlantingSuitability sqlSeeding1(String zone,String year); + Integer InsertSeeding(PlantingSuitability suitability); List sqlYear(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/impl/LandUseServiceipml.java b/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/impl/LandUseServiceipml.java index 7840849..bfed388 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/impl/LandUseServiceipml.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/impl/LandUseServiceipml.java @@ -1,9 +1,13 @@ package com.ruoyi.system.service_shate.impl; -import com.ruoyi.system.domain_shate.LandUse; -import com.ruoyi.system.domain_shate.SeedingSuccessRate; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.system.domain_shate.*; import com.ruoyi.system.mapper_shate.LandUseMapper; +import com.ruoyi.system.mapper_shate.SoilFactorMapper; import com.ruoyi.system.service_shate.ILandUseServices; +import com.ruoyi.system.service_shate.IRegionalFactorService; +import com.ruoyi.system.service_shate.ISoilFactorService; +import com.ruoyi.system.service_shate.ITopographicFactorService; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -21,6 +25,15 @@ public class LandUseServiceipml implements ILandUseServices @Resource private LandUseMapper mapper; + @Resource + private ITopographicFactorService factorService; + + @Resource + private ISoilFactorService soilFactorService; + + @Resource + private IRegionalFactorService regionalFactorService; + @Override public List sqlSeeding(String zone, String[] landUses,String year) { List value=mapper.sqlSeeding(zone, landUses,year); @@ -42,4 +55,35 @@ public class LandUseServiceipml implements ILandUseServices public List sqlYear() { return mapper.sqlYear(); } + + @Override + public UplodFile mainClass(String zone,String year) { + + UplodFile file=new UplodFile(); + //海拔 + List altitude = factorService.sqlAltitude(zone,year); + //坡度 + List slopes = factorService.sqlSlope(zone,year); + //坡向 + List aspects = factorService.sqlAspect(zone,year); + //沙化指数 + List desertifications=soilFactorService.sqlDesert(zone,year); + //湿度指数 + List moistures=soilFactorService.sqlMoisture(zone,year); + //盐渍化指数 + List salinizations=soilFactorService.sqlSalin(zone,year); + //水域因子 + List waterFactors=regionalFactorService.sqlWater(zone,year); + //道路因子 + List roadFactors=regionalFactorService.sqlRoad(zone,year); + file.setWaterFactors(waterFactors); + file.setRoadFactors(roadFactors); + file.setSoilMoistures(moistures); + file.setSoilSalinizations(salinizations); + file.setSoilDesertifications(desertifications); + file.setAspects(aspects); + file.setSlopes(slopes); + file.setAltitudes(altitude); + return file; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/impl/PlantingSuitabilityServiceIpml.java b/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/impl/PlantingSuitabilityServiceIpml.java index 046bf34..0e2da1f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/impl/PlantingSuitabilityServiceIpml.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service_shate/impl/PlantingSuitabilityServiceIpml.java @@ -22,6 +22,12 @@ public class PlantingSuitabilityServiceIpml implements IPlantingSuitabilityServi return value; } + @Override + public PlantingSuitability sqlSeeding1(String zone, String year) { + PlantingSuitability value=mapper.sqlSeeding1(zone,year); + return value; + } + @Override public Integer InsertSeeding(PlantingSuitability suitability) { return mapper.InsertSeeding(suitability); diff --git a/ruoyi-system/src/main/resources/mapper/system/PlantingSuitabilityMapper.xml b/ruoyi-system/src/main/resources/mapper/system/PlantingSuitabilityMapper.xml index 47517ec..a306071 100644 --- a/ruoyi-system/src/main/resources/mapper/system/PlantingSuitabilityMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/PlantingSuitabilityMapper.xml @@ -34,6 +34,18 @@ + + +