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 00000000..a6afb431 Binary files /dev/null and b/zc-business/src/main/resources/wordTemplate/sdhsEventChart.docx differ 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 00000000..28939d44 Binary files /dev/null and b/zc-business/src/main/resources/wordTemplate/wordTemplate2.docx differ