From 2ad13ffab2a9170690e3b511c6d53eac68aa7f2b Mon Sep 17 00:00:00 2001 From: lau572 <1010031226@qq.com> Date: Fri, 12 Jul 2024 11:54:15 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AB=98=E9=80=9F=E8=BF=90=E8=90=A5=E5=BF=AB?= =?UTF-8?q?=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/controller/WordController.java | 374 +++++++++++++++++- .../resources/wordTemplate/chartTemplate.docx | Bin 71251 -> 71082 bytes .../wordTemplate/chartTemplate2.docx | Bin 28097 -> 57442 bytes 3 files changed, 366 insertions(+), 8 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/WordController.java b/zc-business/src/main/java/com/zc/business/controller/WordController.java index 3f23e803..a82c0592 100644 --- a/zc-business/src/main/java/com/zc/business/controller/WordController.java +++ b/zc-business/src/main/java/com/zc/business/controller/WordController.java @@ -2,12 +2,16 @@ package com.zc.business.controller; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.DateUtils; import com.zc.business.domain.DcTollStationStatisticsData; import com.zc.business.enums.TrafficDataPeriodTypeEnum; import com.zc.business.enums.UniversalEnum; import com.zc.business.mapper.DcTrafficIncidentsMapper; +import com.zc.business.service.IDcGantryStatisticsDataService; import com.zc.business.service.IDcTollStationStatisticsDataService; +import com.zc.business.service.IDcTrafficStatisticsService; import com.zc.business.utils.PoiUtil; +import com.zc.common.core.httpclient.exception.HttpException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.poi.xssf.usermodel.XSSFSheet; @@ -20,9 +24,11 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; @@ -48,6 +54,10 @@ public class WordController { @Autowired private IDcTollStationStatisticsDataService dcTollStationStatisticsDataService; + @Autowired + private IDcTrafficStatisticsService dcTrafficStatisticsService; + @Autowired + private IDcGantryStatisticsDataService dcGantryStatisticsDataService; @PostMapping("/trafficSituationReport") @@ -84,6 +94,10 @@ public class WordController { trafficAccident(newDoc); /** 出入口车流量 */ trafficFlow(newDoc); + /** 全路段实时车流量*/ + realTimeTrafficFlow(newDoc); + /** 车流量时段分析*/ + trafficPeriodAnalysis(newDoc); @@ -316,14 +330,12 @@ public class WordController { XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); //系列信息 - String[] singleBarSeriesNames = {UniversalEnum.CLOSE.getValue(),UniversalEnum.TRAFFIC_RESTRICTION.getValue(),UniversalEnum.INTERVAL_RELEASE.getValue()}; + String[] singleBarSeriesNames = {UniversalEnum.CLOSE.getValue(),UniversalEnum.TRAFFIC_RESTRICTION.getValue()}; //分类信息 for (int i = UniversalEnum.ZERO.getNumber(); i < tollStationAnalysisList.size(); i++){ sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(tollStationAnalysisList.get(i).get("facilityName").toString()); sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(tollStationAnalysisList.get(i).get("facilityClose").toString())); sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.TWO.getNumber()).setCellValue(Long.parseLong(tollStationAnalysisList.get(i).get("facilityRestriction").toString())); - sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.THREE.getNumber()).setCellValue(Long.parseLong(tollStationAnalysisList.get(i).get("facilityInterval").toString())); - } PoiUtil.wordExportChar(chart, UniversalEnum.TRAFFIC_CONTROL_SITUATION.getValue(), singleBarSeriesNames,sheet ); @@ -349,7 +361,7 @@ public class WordController { List> trafficControlAnalysisList = dcTrafficIncidentsMapper.selectTrafficControlAnalysis(startDate,endDate); if (trafficControlAnalysisList != null && trafficControlAnalysisList.size() > UniversalEnum.ZERO.getNumber()) { - XWPFTable table = doc.createTable(UniversalEnum.SEVEN.getNumber(), UniversalEnum.FOUR.getNumber()); + XWPFTable table = doc.createTable(UniversalEnum.SEVEN.getNumber(), UniversalEnum.THREE.getNumber()); //列宽自动分割 CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW(); infoTableWidth.setType(STTblWidth.DXA); @@ -357,14 +369,12 @@ public class WordController { setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ONE.getNumber()), UniversalEnum.CLOSE.getValue()); setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.TWO.getNumber()), UniversalEnum.TRAFFIC_RESTRICTION.getValue()); - setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.THREE.getNumber()), UniversalEnum.INTERVAL_RELEASE.getValue()); //excel for (int i = UniversalEnum.ZERO.getNumber(); i < trafficControlAnalysisList.size(); i++){ setTableFonts(table.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), trafficControlAnalysisList.get(i).get("controlCauseName").toString()); setTableFonts(table.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()), trafficControlAnalysisList.get(i).get("facilityClose").toString()); setTableFonts(table.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.TWO.getNumber()), trafficControlAnalysisList.get(i).get("facilityRestriction").toString()); - setTableFonts(table.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.THREE.getNumber()), trafficControlAnalysisList.get(i).get("facilityInterval").toString()); } try { @@ -380,13 +390,12 @@ public class WordController { XSSFWorkbook workbook = chart.getWorkbook(); XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); //系列信息 - String[] singleBarSeriesNames = {UniversalEnum.CLOSE.getValue(),UniversalEnum.TRAFFIC_RESTRICTION.getValue(),UniversalEnum.INTERVAL_RELEASE.getValue()}; + String[] singleBarSeriesNames = {UniversalEnum.CLOSE.getValue(),UniversalEnum.TRAFFIC_RESTRICTION.getValue()}; //分类信息 for (int i = UniversalEnum.ZERO.getNumber(); i < trafficControlAnalysisList.size(); i++){ sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(trafficControlAnalysisList.get(i).get("controlCauseName").toString()); sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(trafficControlAnalysisList.get(i).get("facilityClose").toString())); sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.TWO.getNumber()).setCellValue(Long.parseLong(trafficControlAnalysisList.get(i).get("facilityRestriction").toString())); - sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.THREE.getNumber()).setCellValue(Long.parseLong(trafficControlAnalysisList.get(i).get("facilityInterval").toString())); } for (int i = sheet.getLastRowNum(); i > trafficControlAnalysisList.size();i--){ sheet.removeRow(sheet.getRow(i)); @@ -631,6 +640,355 @@ public class WordController { } + /** + * @Description 全路段实时车流量 + * + * @author liuwenge + * @date 2024/3/28 9:14 + * @param doc + * @return void + */ + public void realTimeTrafficFlow(XWPFDocument doc) throws IOException, HttpException { + + Map>> result = dcTrafficStatisticsService.realTimeTrafficFlowHour(); + + + if (result != null) { + + // 13菏泽 24济南 + List> thisYearJN = result.get("2"); + List> lastYearJN = result.get("4"); + List> thisYearHZ = result.get("1"); + List> lastYearHZ = result.get("3"); + + PoiUtil.createHeading2(doc, "全路段实时车流量-济南方向"); + + XWPFTable table = doc.createTable(15,3); + //列宽自动分割 + CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW(); + infoTableWidth.setType(STTblWidth.DXA); + infoTableWidth.setW(BigInteger.valueOf(UniversalEnum.NINE_THOUSAND_AND_SEVENTY_TWO.getNumber())); + + + //插入表头 + setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), "路段"); + setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ONE.getNumber()), "本期车流量"); + setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.TWO.getNumber()), "去年同期"); + + + //excel + for (int i = UniversalEnum.ZERO.getNumber(); i < thisYearJN.size(); i++){ + setTableFonts(table.getRow(i+1).getCell(0), thisYearJN.get(i).get("name").toString()); + setTableFonts(table.getRow(i+1).getCell(1), thisYearJN.get(i).get("totalFlow").toString()); + setTableFonts(table.getRow(i+1).getCell(2), lastYearJN.get(i).get("totalFlow").toString()); + } + + try { + + // 复制Word模板 + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.DRAWING_TEMPLATE_2.getValue()); + XWPFDocument copiedTemplate = new XWPFDocument(inputStream); + + //获取word中所有图表对象 + List charts = copiedTemplate.getCharts(); + XWPFChart chart = charts.get(UniversalEnum.ONE.getNumber()); + XSSFWorkbook workbook = chart.getWorkbook(); + XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); + + //系列信息 + String[] singleBarSeriesNames = {"本期车流量","去年同期"}; + //分类信息 + for (int i = UniversalEnum.ZERO.getNumber(); i < thisYearJN.size(); i++){ + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(thisYearJN.get(i).get("name").toString()); + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(thisYearJN.get(i).get("totalFlow").toString())); + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.TWO.getNumber()).setCellValue(Long.parseLong(lastYearJN.get(i).get("totalFlow").toString())); + + } + PoiUtil.wordExportChar(chart, "全路段实时车流量-济南方向", singleBarSeriesNames,sheet ); + + // 追加到同一个Word文档中 + mergeChart(chart,doc); +// PoiUtil.mergeDoc(copiedTemplate, doc); + + // 关闭复制的模板文档 + copiedTemplate.close(); + + } catch (Exception e){ + e.printStackTrace(); + } + + //换行 + createLineBreak(doc); + + PoiUtil.createHeading2(doc, "全路段实时车流量-菏泽方向"); + + XWPFTable tableHZ = doc.createTable(15,3); + //列宽自动分割 + CTTblWidth infoTableWidthHZ = tableHZ.getCTTbl().addNewTblPr().addNewTblW(); + infoTableWidthHZ.setType(STTblWidth.DXA); + infoTableWidthHZ.setW(BigInteger.valueOf(UniversalEnum.NINE_THOUSAND_AND_SEVENTY_TWO.getNumber())); + + + //插入表头 + setTableFonts(tableHZ.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), "路段"); + setTableFonts(tableHZ.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ONE.getNumber()), "本期车流量"); + setTableFonts(tableHZ.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.TWO.getNumber()), "去年同期"); + + //excel + for (int i = UniversalEnum.ZERO.getNumber(); i < thisYearHZ.size(); i++){ + setTableFonts(tableHZ.getRow(i+1).getCell(0), thisYearHZ.get(i).get("name").toString()); + setTableFonts(tableHZ.getRow(i+1).getCell(1), thisYearHZ.get(i).get("totalFlow").toString()); + setTableFonts(tableHZ.getRow(i+1).getCell(2), lastYearHZ.get(i).get("totalFlow").toString()); + } + + try { + + // 复制Word模板 + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.DRAWING_TEMPLATE_2.getValue()); + XWPFDocument copiedTemplate = new XWPFDocument(inputStream); + + //获取word中所有图表对象 + List charts = copiedTemplate.getCharts(); + XWPFChart chart = charts.get(UniversalEnum.ONE.getNumber()); + XSSFWorkbook workbook = chart.getWorkbook(); + XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); + + //系列信息 + String[] singleBarSeriesNames = {"本期车流量","去年同期"}; + //分类信息 + for (int i = UniversalEnum.ZERO.getNumber(); i < thisYearJN.size(); i++){ + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(thisYearHZ.get(i).get("name").toString()); + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(thisYearHZ.get(i).get("totalFlow").toString())); + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.TWO.getNumber()).setCellValue(Long.parseLong(lastYearHZ.get(i).get("totalFlow").toString())); + + } + PoiUtil.wordExportChar(chart, "全路段实时车流量-菏泽方向", singleBarSeriesNames,sheet ); + + // 追加到同一个Word文档中 + mergeChart(chart,doc); +// PoiUtil.mergeDoc(copiedTemplate, doc); + + // 关闭复制的模板文档 + copiedTemplate.close(); + + } catch (Exception e){ + e.printStackTrace(); + } + + //换行 + createLineBreak(doc); + + } + + + + } + + /** + * @Description 车流量时段分析 + * + * @author liuwenge + * @date 2024/3/28 9:14 + * @param doc + * @return void + */ + public void trafficPeriodAnalysis(XWPFDocument doc) throws IOException, HttpException { + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(UniversalEnum.TIME_FORMAT_YEARS_MONTH_DAY.getValue()); + LocalDate currentDate = LocalDate.now(); + String nowYear = currentDate.format(formatter); + //String nowYear =startDate; + // 获取一年前的日期 + LocalDate oneYearAgo = currentDate.minusYears(UniversalEnum.ONE.getNumber()); + String lastYear = oneYearAgo.format(formatter); + + //济南方向-本期 + List> thisYearJN = dcGantryStatisticsDataService.trafficPeriodAnalysis(nowYear,"3","4"); + Map>> thisYearJNData = new HashMap<>(); + if (thisYearJN != null && thisYearJN.size() > 0){ + thisYearJNData = thisYearJN.stream().collect(Collectors.groupingBy(item -> item.get("statisticalHour"))); + } + //济南方向-去年同期 + List> lastYearJN = dcGantryStatisticsDataService.trafficPeriodAnalysis(lastYear,"3","4"); + Map>> lastYearJNData = new HashMap<>(); + if (lastYearJN != null && lastYearJN.size() > 0){ + lastYearJNData = lastYearJN.stream().collect(Collectors.groupingBy(item -> item.get("statisticalHour"))); + } + + PoiUtil.createHeading2(doc, "车流量时段分析-济南方向"); + + XWPFTable table = doc.createTable(25,3); + //列宽自动分割 + CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW(); + infoTableWidth.setType(STTblWidth.DXA); + infoTableWidth.setW(BigInteger.valueOf(UniversalEnum.NINE_THOUSAND_AND_SEVENTY_TWO.getNumber())); + + + //插入表头 + setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), "时段"); + setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ONE.getNumber()), "本期车流量"); + setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.TWO.getNumber()), "去年同期"); + + + //excel + for (int i = 0; i < 24; i++){ + setTableFonts(table.getRow(i+1).getCell(0), i + "时-" + (i+1) + "时"); + if (thisYearJNData != null && thisYearJNData.containsKey(String.valueOf(i))){ + String trafficVolume = thisYearJNData.get(String.valueOf(i)).get(0).get("trafficVolume"); + setTableFonts(table.getRow(i+1).getCell(1), trafficVolume); + } else { + setTableFonts(table.getRow(i+1).getCell(1), "0"); + } + if (lastYearJNData != null && lastYearJNData.containsKey(String.valueOf(i))){ + String trafficVolume = lastYearJNData.get(String.valueOf(i)).get(0).get("trafficVolume"); + setTableFonts(table.getRow(i+1).getCell(2), trafficVolume); + } else { + setTableFonts(table.getRow(i+1).getCell(2), "0"); + } + + } + + try { + + // 复制Word模板 + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.DRAWING_TEMPLATE_2.getValue()); + XWPFDocument copiedTemplate = new XWPFDocument(inputStream); + + //获取word中所有图表对象 + List charts = copiedTemplate.getCharts(); + XWPFChart chart = charts.get(UniversalEnum.TWO.getNumber()); + XSSFWorkbook workbook = chart.getWorkbook(); + XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); + + //系列信息 + String[] singleBarSeriesNames = {"本期车流量","去年同期"}; + //分类信息 + for (int i = 0; i < 24; i++){ + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(i + "时-" + (i+1) + "时"); + if (thisYearJNData != null && thisYearJNData.containsKey(String.valueOf(i))){ + String trafficVolume = thisYearJNData.get(String.valueOf(i)).get(0).get("trafficVolume"); + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(trafficVolume)); + } else { + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(0); + } + if (lastYearJNData != null && lastYearJNData.containsKey(String.valueOf(i))){ + String trafficVolume = lastYearJNData.get(String.valueOf(i)).get(0).get("trafficVolume"); + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.TWO.getNumber()).setCellValue(Long.parseLong(trafficVolume)); + } else { + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.TWO.getNumber()).setCellValue(0); + } + + } + PoiUtil.wordExportChar(chart, "车流量时段分析-济南方向", singleBarSeriesNames,sheet ); + + // 追加到同一个Word文档中 + mergeChart(chart,doc); +// PoiUtil.mergeDoc(copiedTemplate, doc); + + // 关闭复制的模板文档 + copiedTemplate.close(); + + } catch (Exception e){ + e.printStackTrace(); + } + + + //换行 + createLineBreak(doc); + + //菏泽方向-本期 + List> thisYearHZ = dcGantryStatisticsDataService.trafficPeriodAnalysis(nowYear,"1","4"); + Map>> thisYearHZData = new HashMap<>(); + if (thisYearHZ != null && thisYearHZ.size() > 0){ + thisYearHZData = thisYearHZ.stream().collect(Collectors.groupingBy(item -> item.get("statisticalHour"))); + } + //菏泽方向-去年同期 + List> lastYearHZ = dcGantryStatisticsDataService.trafficPeriodAnalysis(lastYear,"1","4"); + Map>> lastYearHZData = new HashMap<>(); + if (lastYearHZ != null && lastYearHZ.size() > 0){ + lastYearHZData = lastYearHZ.stream().collect(Collectors.groupingBy(item -> item.get("statisticalHour"))); + } + + PoiUtil.createHeading2(doc, "车流量时段分析-菏泽方向"); + + XWPFTable tableHZ = doc.createTable(25,3); + //列宽自动分割 + CTTblWidth infoTableWidthHZ = tableHZ.getCTTbl().addNewTblPr().addNewTblW(); + infoTableWidthHZ.setType(STTblWidth.DXA); + infoTableWidthHZ.setW(BigInteger.valueOf(UniversalEnum.NINE_THOUSAND_AND_SEVENTY_TWO.getNumber())); + + + //插入表头 + setTableFonts(tableHZ.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), "时段"); + setTableFonts(tableHZ.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.ONE.getNumber()), "本期车流量"); + setTableFonts(tableHZ.getRow(UniversalEnum.ZERO.getNumber()).getCell(UniversalEnum.TWO.getNumber()), "去年同期"); + + + //excel + for (int i = 0; i < 24; i++){ + setTableFonts(tableHZ.getRow(i+1).getCell(0), i + "时-" + (i+1) + "时"); + if (thisYearHZData != null && thisYearHZData.containsKey(String.valueOf(i))){ + String trafficVolume = thisYearHZData.get(String.valueOf(i)).get(0).get("trafficVolume"); + setTableFonts(tableHZ.getRow(i+1).getCell(1), trafficVolume); + } else { + setTableFonts(tableHZ.getRow(i+1).getCell(1), "0"); + } + if (lastYearHZData != null && lastYearHZData.containsKey(String.valueOf(i))){ + String trafficVolume = lastYearHZData.get(String.valueOf(i)).get(0).get("trafficVolume"); + setTableFonts(tableHZ.getRow(i+1).getCell(2), trafficVolume); + } else { + setTableFonts(tableHZ.getRow(i+1).getCell(2), "0"); + } + + } + + try { + + // 复制Word模板 + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.DRAWING_TEMPLATE_2.getValue()); + XWPFDocument copiedTemplate = new XWPFDocument(inputStream); + + //获取word中所有图表对象 + List charts = copiedTemplate.getCharts(); + XWPFChart chart = charts.get(UniversalEnum.TWO.getNumber()); + XSSFWorkbook workbook = chart.getWorkbook(); + XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); + + //系列信息 + String[] singleBarSeriesNames = {"本期车流量","去年同期"}; + //分类信息 + for (int i = 0; i < 24; i++){ + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(i + "时-" + (i+1) + "时"); + if (thisYearHZData != null && thisYearHZData.containsKey(String.valueOf(i))){ + String trafficVolume = thisYearHZData.get(String.valueOf(i)).get(0).get("trafficVolume"); + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(trafficVolume)); + } else { + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(0); + } + if (lastYearHZData != null && lastYearHZData.containsKey(String.valueOf(i))){ + String trafficVolume = lastYearHZData.get(String.valueOf(i)).get(0).get("trafficVolume"); + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.TWO.getNumber()).setCellValue(Long.parseLong(trafficVolume)); + } else { + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.TWO.getNumber()).setCellValue(0); + } + + } + PoiUtil.wordExportChar(chart, "车流量时段分析-菏泽方向", singleBarSeriesNames,sheet ); + + // 追加到同一个Word文档中 + mergeChart(chart,doc); +// PoiUtil.mergeDoc(copiedTemplate, doc); + + // 关闭复制的模板文档 + copiedTemplate.close(); + + } catch (Exception e){ + e.printStackTrace(); + } + //换行 + createLineBreak(doc); + } + /** * @Description 封闭原因统计 diff --git a/zc-business/src/main/resources/wordTemplate/chartTemplate.docx b/zc-business/src/main/resources/wordTemplate/chartTemplate.docx index 2f9a8f6510de6f4a5c7f790c4b888573ade6fe8f..64977233bc0984dbffb0c3ef5922bab8ca9eab0b 100644 GIT binary patch delta 10233 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 H^#J}K0D9jU delta 10313 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 E0Q=kBVE_OC delta 5703 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