From 82bc5de23e4045a478150ae9435bf852315ad5fd Mon Sep 17 00:00:00 2001 From: wangsixiang <2970484253@qq.com> Date: Mon, 26 Aug 2024 19:05:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DcSdhsEventServiceImpl.java | 349 +++++++++--------- 1 file changed, 183 insertions(+), 166 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java b/zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java index c290dac0..51f7a973 100644 --- a/zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java +++ b/zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java @@ -426,50 +426,55 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService { // }else { // title="事故路段分布图-济南方向"; // } - PoiUtil.createHeading2(doc, title); - XWPFTable table = doc.createTable(map.size()+1,2); - //列宽自动分割 - 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()), "事故发生数量"); - - List> entries = new ArrayList<>(map.entrySet()); - //excel - for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ - setTableFonts(table.getRow(i+1).getCell(0), entries.get(i).getKey()); - setTableFonts(table.getRow(i+1).getCell(1), entries.get(i).getValue().toString()); - } - try{ - // 复制Word模板 - InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.CHAR_SECTION.getValue()); - XWPFDocument copiedTemplate = new XWPFDocument(inputStream); - //获取word中所有图表对象 - List charts = copiedTemplate.getCharts(); - XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); - XSSFWorkbook workbook = chart.getWorkbook(); - XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); - //系列信息 - String[] singleBarSeriesNames = {"数量"}; - //分类信息 + if (map != null && map.size() != UniversalEnum.ZERO.getNumber()){ + PoiUtil.createHeading2(doc, title); + XWPFTable table = doc.createTable(map.size()+1,2); + //列宽自动分割 + 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()), "事故发生数量"); + + List> entries = new ArrayList<>(map.entrySet()); + //excel for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ - sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(entries.get(i).getKey()); - sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(entries.get(i).getValue().toString())); + setTableFonts(table.getRow(i+1).getCell(0), entries.get(i).getKey()); + setTableFonts(table.getRow(i+1).getCell(1), entries.get(i).getValue().toString()); } - for (int i = sheet.getLastRowNum(); i > entries.size();i--){ - sheet.removeRow(sheet.getRow(i)); + try{ + // 复制Word模板 + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.CHAR_SECTION.getValue()); + XWPFDocument copiedTemplate = new XWPFDocument(inputStream); + //获取word中所有图表对象 + List charts = copiedTemplate.getCharts(); + XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); + XSSFWorkbook workbook = chart.getWorkbook(); + XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); + //系列信息 + String[] singleBarSeriesNames = {"数量"}; + //分类信息 + for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(entries.get(i).getKey()); + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(entries.get(i).getValue().toString())); + } + for (int i = sheet.getLastRowNum(); i > entries.size();i--){ + sheet.removeRow(sheet.getRow(i)); + } + PoiUtil.wordExportChar(chart, title, singleBarSeriesNames,sheet ); + // 追加到同一个Word文档中 + mergeChart(chart,doc); + // 关闭复制的模板文档 + copiedTemplate.close(); + + }catch (Exception e){ + e.printStackTrace(); } - PoiUtil.wordExportChar(chart, title, singleBarSeriesNames,sheet ); - // 追加到同一个Word文档中 - mergeChart(chart,doc); - // 关闭复制的模板文档 - copiedTemplate.close(); - - }catch (Exception e){ - e.printStackTrace(); + }else { + addDescription(doc, UniversalEnum.NO_DATA_AVAILABLE.getValue()); } + } //事故类型分析导出 @Override @@ -482,50 +487,54 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService { // }else { // title="事件类型分布图-济南方向"; // } - PoiUtil.createHeading2(doc, title); - XWPFTable table = doc.createTable(map.size()+1,2); - //列宽自动分割 - 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()), "数量"); - - List> entries = new ArrayList<>(map.entrySet()); - //excel - for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ - setTableFonts(table.getRow(i+1).getCell(0), entries.get(i).getKey()); - setTableFonts(table.getRow(i+1).getCell(1), entries.get(i).getValue().toString()); - } - try{ - // 复制Word模板 - InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.TYPE_ANALYSIS.getValue()); - XWPFDocument copiedTemplate = new XWPFDocument(inputStream); - - //获取word中所有图表对象 - List charts = copiedTemplate.getCharts(); - XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); - XSSFWorkbook workbook = chart.getWorkbook(); - XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); - //系列信息 - String[] singleBarSeriesNames = {"事件类型"}; - //分类信息 - for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ - sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(entries.get(i).getKey()); - sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(entries.get(i).getValue().toString())); + if (map != null && map.size() != UniversalEnum.ZERO.getNumber()) { + PoiUtil.createHeading2(doc, title); + XWPFTable table = doc.createTable(map.size() + 1, 2); + //列宽自动分割 + 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()), "数量"); + + List> entries = new ArrayList<>(map.entrySet()); + //excel + for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++) { + setTableFonts(table.getRow(i + 1).getCell(0), entries.get(i).getKey()); + setTableFonts(table.getRow(i + 1).getCell(1), entries.get(i).getValue().toString()); } - for (int i = sheet.getLastRowNum(); i > entries.size();i--){ - sheet.removeRow(sheet.getRow(i)); + try { + // 复制Word模板 + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.TYPE_ANALYSIS.getValue()); + XWPFDocument copiedTemplate = new XWPFDocument(inputStream); + + //获取word中所有图表对象 + List charts = copiedTemplate.getCharts(); + XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); + XSSFWorkbook workbook = chart.getWorkbook(); + XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); + //系列信息 + String[] singleBarSeriesNames = {"事件类型"}; + //分类信息 + for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++) { + sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(entries.get(i).getKey()); + sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(entries.get(i).getValue().toString())); + } + for (int i = sheet.getLastRowNum(); i > entries.size(); i--) { + sheet.removeRow(sheet.getRow(i)); + } + PoiUtil.wordExportChar(chart, title, singleBarSeriesNames, sheet); + // 追加到同一个Word文档中 + mergeChart(chart, doc); + // 关闭复制的模板文档 + copiedTemplate.close(); + + } catch (Exception e) { + e.printStackTrace(); } - PoiUtil.wordExportChar(chart, title, singleBarSeriesNames,sheet ); - // 追加到同一个Word文档中 - mergeChart(chart,doc); - // 关闭复制的模板文档 - copiedTemplate.close(); - - }catch (Exception e){ - e.printStackTrace(); + }else { + addDescription(doc, UniversalEnum.NO_DATA_AVAILABLE.getValue()); } } //事故拥堵时间导出 @@ -533,50 +542,54 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService { public void accidentCongestedTimeExport(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery) { Map map =accidentCongestedTime(dcSdhsEventQuery); String title="事故拥堵时长分布图"; - PoiUtil.createHeading2(doc, title); - XWPFTable table = doc.createTable(map.size()+1,2); - //列宽自动分割 - 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()), "时长(分钟)"); - - List> entries = new ArrayList<>(map.entrySet()); - //excel - for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ - setTableFonts(table.getRow(i+1).getCell(0), entries.get(i).getKey()); - setTableFonts(table.getRow(i+1).getCell(1), entries.get(i).getValue().toString()); - } - try{ - // 复制Word模板 - InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.CONGESTION_TIME.getValue()); - XWPFDocument copiedTemplate = new XWPFDocument(inputStream); - - //获取word中所有图表对象 - List charts = copiedTemplate.getCharts(); - XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); - XSSFWorkbook workbook = chart.getWorkbook(); - XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); - //系列信息 - String[] singleBarSeriesNames = {"事故拥堵时长"}; - //分类信息 - for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ - sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(0).setCellValue(entries.get(i).getKey()); - sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(1).setCellValue(Double.valueOf(entries.get(i).getValue())); + if (map != null && map.size() != UniversalEnum.ZERO.getNumber()) { + PoiUtil.createHeading2(doc, title); + XWPFTable table = doc.createTable(map.size() + 1, 2); + //列宽自动分割 + 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()), "时长(分钟)"); + + List> entries = new ArrayList<>(map.entrySet()); + //excel + for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++) { + setTableFonts(table.getRow(i + 1).getCell(0), entries.get(i).getKey()); + setTableFonts(table.getRow(i + 1).getCell(1), entries.get(i).getValue().toString()); } - for (int i = sheet.getLastRowNum(); i > entries.size();i--){ - sheet.removeRow(sheet.getRow(i)); + try { + // 复制Word模板 + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.CONGESTION_TIME.getValue()); + XWPFDocument copiedTemplate = new XWPFDocument(inputStream); + + //获取word中所有图表对象 + List charts = copiedTemplate.getCharts(); + XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); + XSSFWorkbook workbook = chart.getWorkbook(); + XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); + //系列信息 + String[] singleBarSeriesNames = {"事故拥堵时长"}; + //分类信息 + for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++) { + sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(0).setCellValue(entries.get(i).getKey()); + sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(1).setCellValue(Double.valueOf(entries.get(i).getValue())); + } + for (int i = sheet.getLastRowNum(); i > entries.size(); i--) { + sheet.removeRow(sheet.getRow(i)); + } + PoiUtil.wordExportChar(chart, title, singleBarSeriesNames, sheet); + // 追加到同一个Word文档中 + mergeChart(chart, doc); + // 关闭复制的模板文档 + copiedTemplate.close(); + + } catch (Exception e) { + e.printStackTrace(); } - PoiUtil.wordExportChar(chart, title, singleBarSeriesNames,sheet ); - // 追加到同一个Word文档中 - mergeChart(chart,doc); - // 关闭复制的模板文档 - copiedTemplate.close(); - - }catch (Exception e){ - e.printStackTrace(); + }else { + addDescription(doc, UniversalEnum.NO_DATA_AVAILABLE.getValue()); } } //事故拥堵地点导出 @@ -584,50 +597,54 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService { public void accidentCongestedLocationExport(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery) { Map map =accidentCongestedLocation(dcSdhsEventQuery); String title="事故拥堵地点分布图"; - PoiUtil.createHeading2(doc, title); - XWPFTable table = doc.createTable(map.size()+1,2); - //列宽自动分割 - 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()), "数量"); - - List> entries = new ArrayList<>(map.entrySet()); - //excel - for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ - setTableFonts(table.getRow(i+1).getCell(0), entries.get(i).getKey()); - setTableFonts(table.getRow(i+1).getCell(1), entries.get(i).getValue().toString()); - } - try{ - // 复制Word模板 - InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.CONGESTED_LOCATION.getValue()); - XWPFDocument copiedTemplate = new XWPFDocument(inputStream); - - //获取word中所有图表对象 - List charts = copiedTemplate.getCharts(); - XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); - XSSFWorkbook workbook = chart.getWorkbook(); - XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); - //系列信息 - String[] singleBarSeriesNames = {"事故拥堵地点"}; - //分类信息 - for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++){ - sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(0).setCellValue(entries.get(i).getKey()); - sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(1).setCellValue(entries.get(i).getValue()); + if (map != null && map.size() != UniversalEnum.ZERO.getNumber()) { + PoiUtil.createHeading2(doc, title); + XWPFTable table = doc.createTable(map.size() + 1, 2); + //列宽自动分割 + 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()), "数量"); + + List> entries = new ArrayList<>(map.entrySet()); + //excel + for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++) { + setTableFonts(table.getRow(i + 1).getCell(0), entries.get(i).getKey()); + setTableFonts(table.getRow(i + 1).getCell(1), entries.get(i).getValue().toString()); } - for (int i = sheet.getLastRowNum(); i > entries.size();i--){ - sheet.removeRow(sheet.getRow(i)); + try { + // 复制Word模板 + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.CONGESTED_LOCATION.getValue()); + XWPFDocument copiedTemplate = new XWPFDocument(inputStream); + + //获取word中所有图表对象 + List charts = copiedTemplate.getCharts(); + XWPFChart chart = charts.get(UniversalEnum.ZERO.getNumber()); + XSSFWorkbook workbook = chart.getWorkbook(); + XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber()); + //系列信息 + String[] singleBarSeriesNames = {"事故拥堵地点"}; + //分类信息 + for (int i = UniversalEnum.ZERO.getNumber(); i < entries.size(); i++) { + sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(0).setCellValue(entries.get(i).getKey()); + sheet.getRow(i + UniversalEnum.ONE.getNumber()).getCell(1).setCellValue(entries.get(i).getValue()); + } + for (int i = sheet.getLastRowNum(); i > entries.size(); i--) { + sheet.removeRow(sheet.getRow(i)); + } + PoiUtil.wordExportChar(chart, title, singleBarSeriesNames, sheet); + // 追加到同一个Word文档中 + mergeChart(chart, doc); + // 关闭复制的模板文档 + copiedTemplate.close(); + + } catch (Exception e) { + e.printStackTrace(); } - PoiUtil.wordExportChar(chart, title, singleBarSeriesNames,sheet ); - // 追加到同一个Word文档中 - mergeChart(chart,doc); - // 关闭复制的模板文档 - copiedTemplate.close(); - - }catch (Exception e){ - e.printStackTrace(); + }else { + addDescription(doc, UniversalEnum.NO_DATA_AVAILABLE.getValue()); } }