From de03fbb8c8e21686cef2f7c7501b7cec49ac175b Mon Sep 17 00:00:00 2001 From: lau572 <1010031226@qq.com> Date: Tue, 20 Aug 2024 16:27:48 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AB=98=E9=80=9F=E4=BA=91=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DcSdhsEventController.java | 109 ++++- .../zc/business/domain/DcSdhsEventQuery.java | 12 +- .../business/service/IDcSdhsEventService.java | 12 + .../service/impl/DcSdhsEventServiceImpl.java | 417 +++++++++++++++++- .../wordTemplate/sdhsEventChart.docx | Bin 0 -> 29060 bytes .../resources/wordTemplate/wordTemplate2.docx | Bin 0 -> 16719 bytes 6 files changed, 534 insertions(+), 16 deletions(-) create mode 100644 zc-business/src/main/resources/wordTemplate/sdhsEventChart.docx create mode 100644 zc-business/src/main/resources/wordTemplate/wordTemplate2.docx diff --git a/zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java b/zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java index ebd5cc4c..ec37b6db 100644 --- a/zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java +++ b/zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java @@ -1,15 +1,34 @@ package com.zc.business.controller; +import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.domain.AjaxResult; +import com.zc.business.domain.DcSdhsEventQuery; +import com.zc.business.enums.UniversalEnum; import com.zc.business.service.IDcSdhsEventService; +import com.zc.business.utils.PoiUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.poi.xwpf.usermodel.ParagraphAlignment; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBrType; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import static com.zc.business.utils.PoiUtil.insertTOC; + /** * @Description 高速云事件分析Controller * @@ -32,4 +51,88 @@ public class DcSdhsEventController { return dcSdhsEventService.importData(file); } + @PostMapping("/export") + @ApiOperation("导出") + public void trafficSituationReport(HttpServletResponse response,DcSdhsEventQuery dcSdhsEventQuery) throws Exception { + try { + SimpleDateFormat df = new SimpleDateFormat(UniversalEnum.TIME_FORMAT_YEARS_MONTH_DAY.getValue()); + String date = df.format(new Date()); + String outputPath = RuoYiConfig.getDownloadPath() +"/高速云事件分析报告" + date + ".docx"; + // 读取Word模板 + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("wordTemplate/wordTemplate2.docx"); + XWPFDocument newDoc = new XWPFDocument(inputStream); + + // 创建并插入带超链接的目录 + insertTOC(newDoc); + + + //换页 + XWPFParagraph breakPara = newDoc.createParagraph(); + breakPara.setAlignment(ParagraphAlignment.CENTER); + CTP ctP = breakPara.getCTP(); + CTR ctr = ctP.addNewR(); + CTBr ctBr = ctr.addNewBr(); + ctBr.setType(STBrType.PAGE); + + List exportKey = dcSdhsEventQuery.getExportKey(); + if (exportKey != null && exportKey.size() > 0){ + //交通事件 + if (exportKey.contains("1") || exportKey.contains("2") || exportKey.contains("3") + || exportKey.contains("4") || exportKey.contains("5") || exportKey.contains("6")){ + PoiUtil.createHeading1(newDoc,"交通事件"); + for (String trafficIncidentType : exportKey) { + if ("1".equals(trafficIncidentType)){ + + } else if ("2".equals(trafficIncidentType)){ + + } else if ("3".equals(trafficIncidentType)){ + + } else if ("4".equals(trafficIncidentType)){ + + } else if ("5".equals(trafficIncidentType)){ + //事故地市分布 + dcSdhsEventService.exportRegionAnalysis(newDoc,dcSdhsEventQuery); + } else if ("6".equals(trafficIncidentType)){ + //交通管制情况统计 + dcSdhsEventService.exportStationAnalysis(newDoc,dcSdhsEventQuery); + } + + } + } + + } + + + + + // 保存新生成的Word文件 + /*FileOutputStream out = new FileOutputStream(outputPath); + newDoc.write(out); + out.close();*/ + + // 不保存直接返回文件流 + newDoc.write(response.getOutputStream()); + // 关闭文档 + newDoc.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @ApiOperation("查询事故地市分布") + @PostMapping("/selectRegionAnalysis") + public AjaxResult selectRegionAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery) + { + return dcSdhsEventService.selectRegionAnalysis(dcSdhsEventQuery); + } + + + @ApiOperation("查询交通管制情况分析") + @PostMapping("/selectStationAnalysis") + public AjaxResult selectStationAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery) + { + return dcSdhsEventService.selectStationAnalysis(dcSdhsEventQuery); + } + + } diff --git a/zc-business/src/main/java/com/zc/business/domain/DcSdhsEventQuery.java b/zc-business/src/main/java/com/zc/business/domain/DcSdhsEventQuery.java index 5adde9ca..93ebaebd 100644 --- a/zc-business/src/main/java/com/zc/business/domain/DcSdhsEventQuery.java +++ b/zc-business/src/main/java/com/zc/business/domain/DcSdhsEventQuery.java @@ -15,7 +15,7 @@ import java.util.Map; * @author ruoyi * @date 2024-08-19 */ -public class DcSdhsEventQuery extends BaseEntity +public class DcSdhsEventQuery { private static final long serialVersionUID = 1L; @@ -26,15 +26,15 @@ public class DcSdhsEventQuery extends BaseEntity private String type; /** 开始时间 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date startTime; /** 结束时间 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date endTime; /** 需要导出的键 */ - private Map exportKey; + private List exportKey; public String getDirection() { return direction; @@ -68,11 +68,11 @@ public class DcSdhsEventQuery extends BaseEntity this.endTime = endTime; } - public Map getExportKey() { + public List getExportKey() { return exportKey; } - public void setExportKey(Map exportKey) { + public void setExportKey(List exportKey) { this.exportKey = exportKey; } diff --git a/zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java b/zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java index 1dcfa5aa..6f72eb33 100644 --- a/zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java +++ b/zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java @@ -1,8 +1,13 @@ package com.zc.business.service; import com.ruoyi.common.core.domain.AjaxResult; +import com.zc.business.domain.DcSdhsEventQuery; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; + /** * 高速云事件分析Service接口 * @@ -13,4 +18,11 @@ public interface IDcSdhsEventService { AjaxResult importData(MultipartFile file) throws Exception; + AjaxResult selectRegionAnalysis(DcSdhsEventQuery dcSdhsEventQuery); + + void exportRegionAnalysis(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery); + + AjaxResult selectStationAnalysis(DcSdhsEventQuery dcSdhsEventQuery); + + void exportStationAnalysis(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery); } 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 a9630d10..2962026a 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 @@ -1,22 +1,40 @@ package com.zc.business.service.impl; +import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.utils.StakeMarkUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.zc.business.constant.RedisKeyConstants; import com.zc.business.domain.DcSdhsEvent; +import com.zc.business.domain.DcSdhsEventQuery; +import com.zc.business.enums.UniversalEnum; import com.zc.business.service.IDcSdhsEventService; +import com.zc.business.utils.PoiUtil; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.apache.poi.xwpf.usermodel.*; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; +import java.io.InputStream; +import java.lang.reflect.Array; +import java.math.BigInteger; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import static com.zc.business.utils.PoiUtil.*; +import static com.zc.business.utils.PoiUtil.addDescription; /** * 高速云事件分析Service业务层处理 @@ -33,19 +51,21 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService { @Override public AjaxResult importData(MultipartFile file) throws IOException { - List eventList = new ArrayList<>(); + List importData = new ArrayList<>(); try { ExcelUtil util = new ExcelUtil(DcSdhsEvent.class); - eventList = util.importExcel(file.getInputStream()); + importData = util.importExcel(file.getInputStream()); } catch (Exception e){ e.printStackTrace(); return AjaxResult.error("导入失败,请检查数据是否有误"); } redisCache.deleteObject(RedisKeyConstants.SDHS_EVENT); - if (eventList != null && eventList.size() > 0){ + + List eventList = new ArrayList<>(); + if (importData != null && importData.size() > 0){ int id = 1; - for (DcSdhsEvent dcSdhsEvent : eventList) { + for (DcSdhsEvent dcSdhsEvent : importData) { //插入id备用 dcSdhsEvent.setId(id); @@ -68,6 +88,36 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService { dcSdhsEvent.setMultiVehicle("否"); } + String stakeMark = dcSdhsEvent.getStakeMark(); + + if (StringUtils.isNotEmpty(stakeMark) && !"无".equals(stakeMark) && !StakeMarkUtils.checkStakeMark(stakeMark)){ + //尝试桩号补零 + List numbers = new ArrayList<>(); + + // 匹配大小桩号数字 + Pattern pattern = Pattern.compile("\\d+"); + Matcher matcher = pattern.matcher(stakeMark); + while (matcher.find()) { + numbers.add(matcher.group()); // 将匹配到的数字字符串添加到列表中 + } + List formattedNumbers = new ArrayList<>(); + for (String number : numbers) { + while (number.length() < 3) { + number = "0" + number; + } + formattedNumbers.add(number); + } + stakeMark = "K" + String.join("+",formattedNumbers); + + + //如果还验证不通过 则此条信息作废 + if (!StakeMarkUtils.checkStakeMark(stakeMark)){ + continue; + } + dcSdhsEvent.setStakeMark(stakeMark); + } + + eventList.add(dcSdhsEvent); id++; } @@ -99,4 +149,357 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService { return numbers; } + + + /** + * @Description 事故地市分布 + * + * @author liuwenge + * @date 2024/8/20 9:13 + * @param dcSdhsEventQuery + * @return com.ruoyi.common.core.domain.AjaxResult + */ + @Override + public AjaxResult selectRegionAnalysis(DcSdhsEventQuery dcSdhsEventQuery){ + + List eventList = redisCache.getCacheList(RedisKeyConstants.SDHS_EVENT); + if (eventList == null || eventList.size() == 0){ + return AjaxResult.error("请先导入数据"); + } + + //先筛选时间范围 + eventList = eventList.stream() + .filter(item -> item.getStartTime() != null + && item.getStartTime().getTime() >= dcSdhsEventQuery.getStartTime().getTime() + && item.getStartTime().getTime() <= dcSdhsEventQuery.getEndTime().getTime() + && item.getEventType().equals("交通事故")) + .collect(Collectors.toList()); + + //筛选方向 + if (StringUtils.isNotEmpty(dcSdhsEventQuery.getDirection())){ + if (dcSdhsEventQuery.getDirection().equals("1")){ + //菏泽方向 + eventList = eventList.stream() + .filter(item -> item.getDirection().equals("广州方向") || item.getDirection().equals("双向")) + .collect(Collectors.toList()); + } else if (dcSdhsEventQuery.getDirection().equals("3")){ + //济南方向 + eventList = eventList.stream() + .filter(item -> item.getDirection().equals("济南方向") || item.getDirection().equals("双向")) + .collect(Collectors.toList()); + } + } + + //地市统计 + Map region = eventList.stream() + .collect(Collectors.groupingBy(item -> getRange(item.getStakeMark()), Collectors.counting())); + List> list = new ArrayList<>(); + region.forEach((key,count)->{ + Map map = new HashMap<>(); + map.put("regionName",key); + map.put("num",count); + list.add(map); + }); + return AjaxResult.success(list); + } + + private static String getRange(String stakeMark) { + Long stakeMarkMetre = StakeMarkUtils.formatMetreLong(stakeMark); + + if (stakeMarkMetre == null){ + return "其他"; + } + if (stakeMarkMetre >= 0 && stakeMarkMetre <= 132469) { + return "济南"; + } else if (stakeMarkMetre > 132469 && stakeMarkMetre <= 160708) { + return "泰安"; + } else if (stakeMarkMetre > 160708 && stakeMarkMetre <= 200752) { + return "济宁"; + } else if (stakeMarkMetre > 200752) { + return "菏泽"; + } else { + return "其他"; + } + } + + /** + * @Description 导出事故地市分布 + * + * @author liuwenge + * @date 2024/8/20 9:17 + * @param doc + * @param dcSdhsEventQuery + * @return void + */ + @Override + public void exportRegionAnalysis(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery){ + + AjaxResult ajaxResult = selectRegionAnalysis(dcSdhsEventQuery); + if (ajaxResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) { + + PoiUtil.createHeading2(doc,"事故地市分布"); + List> data = (List>) ajaxResult.get("data"); + if (data != null && data.size() != UniversalEnum.ZERO.getNumber()){ + + //插入图表 + try { + + // 复制Word模板 + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("wordTemplate/sdhsEventChart.docx"); + + 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 = 0; i < data.size(); i++) { + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(data.get(i).get("regionName").toString()); + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(data.get(i).get("num").toString())); + } + for (int i = sheet.getLastRowNum(); i > data.size();i--){ + sheet.removeRow(sheet.getRow(i)); + } + PoiUtil.wordExportChar(chart,"事故地市分布" , singleBarSeriesNames,sheet ); + + + // 追加到同一个Word文档中 + mergeChart(chart,doc); + + + // 关闭复制的模板文档 + copiedTemplate.close(); + + } catch (Exception e){ + e.printStackTrace(); + } + + + //换行 + createLineBreak(doc); + + + //插入表格 + XWPFTable table = doc.createTable(data.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(0).getCell(0), "地市"); + setTableFonts(table.getRow(0).getCell(1), "数量"); + for (int i = 0; i < data.size(); i++) { + setTableFonts(table.getRow(i+1).getCell(0), data.get(i).get("regionName").toString()); + setTableFonts(table.getRow(i+1).getCell(1), data.get(i).get("num").toString()); + } + } else { + addDescription(doc,UniversalEnum.NO_DATA_AVAILABLE.getValue()); + } + + } else { + addDescription(doc,UniversalEnum.NO_DATA_AVAILABLE.getValue()); + } + + } + + + /** + * @Description 查询交通管制情况统计 + * + * @author liuwenge + * @date 2024/8/20 11:06 + * @param dcSdhsEventQuery + * @return com.ruoyi.common.core.domain.AjaxResult + */ + @Override + public AjaxResult selectStationAnalysis(DcSdhsEventQuery dcSdhsEventQuery){ + + List eventList = redisCache.getCacheList(RedisKeyConstants.SDHS_EVENT); + if (eventList == null || eventList.size() == 0){ + return AjaxResult.error("请先导入数据"); + } + + eventList = eventList.stream().filter(item -> item.getStartTime() != null + && item.getStartTime().getTime() >= dcSdhsEventQuery.getStartTime().getTime() + && item.getStartTime().getTime() <= dcSdhsEventQuery.getEndTime().getTime()) + .collect(Collectors.toList()); + + //筛选方向 + if (StringUtils.isNotEmpty(dcSdhsEventQuery.getDirection())){ + if (dcSdhsEventQuery.getDirection().equals("1")){ + //菏泽方向 + eventList = eventList.stream() + .filter(item -> item.getDirection().equals("广州方向") + || item.getDirection().equals("双向")) + .collect(Collectors.toList()); + } else if (dcSdhsEventQuery.getDirection().equals("3")){ + //济南方向 + eventList = eventList.stream() + .filter(item -> item.getDirection().equals("济南方向") || item.getDirection().equals("双向")) + .collect(Collectors.toList()); + } + } + + //封闭 + List closeList = eventList.stream() + .filter(item -> item.getEventType().equals("交通管制") && item.getEventSubclass().equals("收费站封闭")) + .collect(Collectors.toList()); + //分割站点名称, 然后分组 + Map closeStation = closeList.stream().collect(Collectors.groupingBy(item -> getStationName(item.getTitle()), + Collectors.counting())); + + //限行 + List restrictionList = eventList.stream() + .filter(item -> item.getEventType().equals("交通管制") && item.getEventSubclass().equals("收费站限行")) + .collect(Collectors.toList()); + //分割站点名称, 然后分组 + Map restrictionStation = restrictionList.stream().collect(Collectors.groupingBy(item -> getStationName(item.getTitle()), + Collectors.counting())); + + //合并 站点名称 + Set stationSet = new HashSet<>(); + stationSet.addAll(closeStation.keySet()); + stationSet.addAll(restrictionStation.keySet()); + + //收费站统 + List> list = new ArrayList<>(); + for (String stationName : stationSet) { + Map map = new HashMap<>(); + map.put("stationName",stationName); + if (closeStation.containsKey(stationName)){ + map.put("close",closeStation.get(stationName)); + } else { + map.put("close",0); + } + + if (restrictionStation.containsKey(stationName)){ + map.put("restriction",restrictionStation.get(stationName)); + } else { + map.put("restriction",0); + } + list.add(map); + } + + return AjaxResult.success(list); + } + + /** + * @Description 从标题中截取收费站名称 + * + * @author liuwenge + * @date 2024/8/19 15:32 + * @param title + * @return java.lang.String + */ + private static String getStationName(String title) { + + String[] titleStr = title.split(",山东"); + if (titleStr.length > 1){ + String[] stationStr = titleStr[1].split("发生"); + if (stationStr.length > 0){ + return stationStr[0]; + } else { + return "其他"; + } + } else { + return "其他"; + } + } + + + /** + * @Description 导出交通管制情况统计 + * + * @author liuwenge + * @date 2024/8/20 11:05 + * @param doc + * @param dcSdhsEventQuery + * @return com.ruoyi.common.core.domain.AjaxResult + */ + @Override + public void exportStationAnalysis(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery){ + + AjaxResult ajaxResult = selectStationAnalysis(dcSdhsEventQuery); + if (ajaxResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) { + + PoiUtil.createHeading2(doc,"交通管制情况统计"); + List> data = (List>) ajaxResult.get("data"); + if (data != null && data.size() != UniversalEnum.ZERO.getNumber()){ + + //插入图表 + try { + + // 复制Word模板 + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.DRAWING_TEMPLATE.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 = {UniversalEnum.CLOSE.getValue(),UniversalEnum.TRAFFIC_RESTRICTION.getValue()}; + //分类信息 + for (int i = UniversalEnum.ZERO.getNumber(); i < data.size(); i++){ + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()).setCellValue(data.get(i).get("stationName").toString()); + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(data.get(i).get("close").toString())); + sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.TWO.getNumber()).setCellValue(Long.parseLong(data.get(i).get("restriction").toString())); + } + + for (int i = sheet.getLastRowNum(); i > data.size();i--){ + sheet.removeRow(sheet.getRow(i)); + } + PoiUtil.wordExportChar(chart, "交通管制情况统计", singleBarSeriesNames,sheet ); + + + // 追加到同一个Word文档中 + mergeChart(chart,doc); + + + // 关闭复制的模板文档 + copiedTemplate.close(); + + } catch (Exception e){ + e.printStackTrace(); + } + + + //换行 + createLineBreak(doc); + + + //插入表格 + XWPFTable table = doc.createTable(data.size()+1, 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(0).getCell(1), "封闭"); + setTableFonts(table.getRow(0).getCell(2), "限行"); + + //excel + for (int i = 0; i < data.size(); i++){ + setTableFonts(table.getRow(i+1).getCell(0), data.get(i).get("stationName").toString()); + setTableFonts(table.getRow(i+1).getCell(1), data.get(i).get("close").toString()); + setTableFonts(table.getRow(i+1).getCell(2), data.get(i).get("restriction").toString()); + } + } else { + addDescription(doc,UniversalEnum.NO_DATA_AVAILABLE.getValue()); + } + + } else { + addDescription(doc,UniversalEnum.NO_DATA_AVAILABLE.getValue()); + } + } + + } diff --git a/zc-business/src/main/resources/wordTemplate/sdhsEventChart.docx b/zc-business/src/main/resources/wordTemplate/sdhsEventChart.docx new file mode 100644 index 0000000000000000000000000000000000000000..a6afb431eb1ac1f42a61c90871f5350f468fc469 GIT binary patch literal 29060 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 IvHphmKaaH=od5s; literal 0 HcmV?d00001 diff --git a/zc-business/src/main/resources/wordTemplate/wordTemplate2.docx b/zc-business/src/main/resources/wordTemplate/wordTemplate2.docx new file mode 100644 index 0000000000000000000000000000000000000000..28939d443ad9242bac1c3148d659bc8ee64029ee GIT binary patch literal 16719 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 DvoRl8 literal 0 HcmV?d00001