package com.zc.business.controller; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; 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 io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; 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.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import static com.zc.business.utils.PoiUtil.insertTOC; /** * @Description 高速云事件分析Controller * * @author liuwenge * @date 2024/08/15 16:38 */ @Api(tags = "高速云事件分析") @RestController @RequestMapping("/business/sdhsEvent") public class DcSdhsEventController extends BaseController { @Autowired private IDcSdhsEventService dcSdhsEventService; @Autowired private WordController wordController; /*@ApiOperation("导入数据") @PostMapping("/importData") public AjaxResult importData(MultipartFile file) throws Exception { return dcSdhsEventService.importData(file); }*/ @ApiOperation("导入数据") @PostMapping("/importData") public AjaxResult importData(@ApiParam(value="文件名称", name="fileName", required=true) @RequestParam("fileName") String fileName, @ApiParam(value="文件路径", name="fileUrl", required=true) @RequestParam("fileUrl") String fileUrl) throws Exception { return dcSdhsEventService.importData(fileName,fileUrl); } @ApiOperation("清空历史数据") @PostMapping("/deleteData") public AjaxResult deleteData(){ return dcSdhsEventService.deleteData(); } //事故多发路段分析 @ApiOperation("查询事件多发路段分析") @PostMapping("/sectionAnalysis") public AjaxResult sectionAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery){ if (dcSdhsEventQuery.getType()==null||dcSdhsEventQuery.getThisTime()==null||dcSdhsEventQuery.getLastTime()==null){ return AjaxResult.error("参数异常"); } return AjaxResult.success(dcSdhsEventService.sectionAnalysis(dcSdhsEventQuery)); } //事故多发路段分析 @ApiOperation("查询事故多发路段分析") @PostMapping("/accidentSectionAnalysis") public AjaxResult accidentSectionAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery){ if (dcSdhsEventQuery.getType()==null||dcSdhsEventQuery.getThisTime()==null||dcSdhsEventQuery.getLastTime()==null){ return AjaxResult.error("参数异常"); } return AjaxResult.success(dcSdhsEventService.accidentSectionAnalysis(dcSdhsEventQuery)); } //事件类型分析 @ApiOperation("查询事件类型分析") @PostMapping("/typeAnalysis") public AjaxResult accidentTypeAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery){ if (dcSdhsEventQuery.getType()==null||dcSdhsEventQuery.getThisTime()==null||dcSdhsEventQuery.getLastTime()==null){ return AjaxResult.error("参数异常"); } return AjaxResult.success(dcSdhsEventService.accidentTypeAnalysis(dcSdhsEventQuery)); } //事故拥堵时间 @ApiOperation("查询事故拥堵时间分析") @PostMapping("/congestedTime") public AjaxResult accidentCongestedTime(@RequestBody DcSdhsEventQuery dcSdhsEventQuery){ if (dcSdhsEventQuery.getType()==null||dcSdhsEventQuery.getThisTime()==null||dcSdhsEventQuery.getLastTime()==null){ return AjaxResult.error("参数异常"); } return AjaxResult.success(dcSdhsEventService.accidentCongestedTime(dcSdhsEventQuery)); } //事故拥堵地点 @ApiOperation("查询事故拥堵地点分析") @PostMapping("/congestedLocation") public AjaxResult accidentCongestedLocation(@RequestBody DcSdhsEventQuery dcSdhsEventQuery){ if (dcSdhsEventQuery.getType()==null||dcSdhsEventQuery.getThisTime()==null||dcSdhsEventQuery.getLastTime()==null){ return AjaxResult.error("参数异常"); } return AjaxResult.success(dcSdhsEventService.accidentCongestedLocation(dcSdhsEventQuery)); } //事故多发路段、类型分析导出 @PostMapping("/sectionTypeAnalysisExport") public void sectionTypeAnalysisExport(HttpServletResponse response,@RequestBody DcSdhsEventQuery dcSdhsEventQuery) throws IOException { // 读取Word模板 // InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.EXPORT_TRAFFIC_REPORT.getValue()); // XWPFDocument newDoc = new XWPFDocument(inputStream); // dcSdhsEventService.sectionAnalysisExport(newDoc,dcSdhsEventQuery); // dcSdhsEventService.accidentTypeAnalysisExport(newDoc,dcSdhsEventQuery); // dcSdhsEventService.accidentCongestedTimeExport(newDoc,dcSdhsEventQuery); // dcSdhsEventService.accidentCongestedLocationExport(newDoc,dcSdhsEventQuery); // // 不保存直接返回文件流 // newDoc.write(response.getOutputStream()); // // 关闭文档 // newDoc.close(); System.out.println("生成通行情况快报成功!"); } @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("14") || exportKey.contains("15")){ PoiUtil.createHeading1(newDoc,"交通事件"); for (String trafficIncidentType : exportKey) { if ("1".equals(trafficIncidentType)){ //事件多发路段 dcSdhsEventService.sectionAnalysisExport(newDoc,dcSdhsEventQuery); } else if ("2".equals(trafficIncidentType)){ //事件类型分析 dcSdhsEventService.accidentTypeAnalysisExport(newDoc,dcSdhsEventQuery); } else if ("3".equals(trafficIncidentType)){ //事件时间分析 dcSdhsEventService.exportEventTimeAnalysis(newDoc, dcSdhsEventQuery); } else if ("4".equals(trafficIncidentType)){ //事件地市分布 dcSdhsEventService.exportEventRegionAnalysis(newDoc,dcSdhsEventQuery); } else if ("5".equals(trafficIncidentType)){ //交通管制情况统计 dcSdhsEventService.exportStationAnalysis(newDoc,dcSdhsEventQuery); } else if ("14".equals(trafficIncidentType)){ //拥堵地点统计 dcSdhsEventService.accidentCongestedLocationExport(newDoc,dcSdhsEventQuery); } else if ("15".equals(trafficIncidentType)){ //路段平均拥堵时长 dcSdhsEventService.accidentCongestedTimeExport(newDoc,dcSdhsEventQuery); } } } if (exportKey.contains("6")){ PoiUtil.createHeading1(newDoc,"天气情况统计"); wordController.weather(newDoc); } if (exportKey.contains("7") || exportKey.contains("8")){ PoiUtil.createHeading1(newDoc,"交通量统计"); for (String trafficIncidentType : exportKey) { if ("7".equals(trafficIncidentType)){ //门架车流量 dcSdhsEventService.exporFrameDataAnalysis(newDoc,dcSdhsEventQuery); } else if ("8".equals(trafficIncidentType)){ //收费站车流量 dcSdhsEventService.exporttollGateEntrance(newDoc,dcSdhsEventQuery); } } } if (exportKey.contains("9") || exportKey.contains("10") || exportKey.contains("11") || exportKey.contains("12") || exportKey.contains("13")){ PoiUtil.createHeading1(newDoc,"交通事故情况"); for (String trafficIncidentType : exportKey) { if ("9".equals(trafficIncidentType)){ //事故类型统计 dcSdhsEventService.exportAccidentType(newDoc, dcSdhsEventQuery); } else if ("10".equals(trafficIncidentType)){ //事故车型分析 dcSdhsEventService.exportAccidentModelAnalysis(newDoc, dcSdhsEventQuery); } else if ("11".equals(trafficIncidentType)){ //事故时间分析 dcSdhsEventService.exportAccidentTimeAnalysis(newDoc, dcSdhsEventQuery); } else if ("12".equals(trafficIncidentType)){ //事故地市分布 dcSdhsEventService.exportRegionAnalysis(newDoc,dcSdhsEventQuery); } else if ("13".equals(trafficIncidentType)){ //事故路段分布 dcSdhsEventService.accidentSectionAnalysisExport(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("查询上次上传的文件信息") @GetMapping("/getFileInfo") public AjaxResult getFileInfo() { return dcSdhsEventService.getFileInfo(); } @ApiOperation("查询事故地市分布") @PostMapping("/selectRegionAnalysis") public AjaxResult selectRegionAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery) { return dcSdhsEventService.selectRegionAnalysis(dcSdhsEventQuery); } @ApiOperation("查询事件地市分布") @PostMapping("/selectEventRegionAnalysis") public AjaxResult selectEventRegionAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery) { return dcSdhsEventService.selectEventRegionAnalysis(dcSdhsEventQuery); } /** * 事故时间分析 * @param dcSdhsEventQuery * @return */ @PostMapping("/accidentTimeAnalysis") @ApiOperation("事故时间分析") public AjaxResult accidentTimeAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery){ if (StringUtils.isEmpty(dcSdhsEventQuery.getType()) || StringUtils.isEmpty(dcSdhsEventQuery.getThisTime()) || StringUtils.isEmpty(dcSdhsEventQuery.getLastTime())){ return AjaxResult.error("参数错误"); } return AjaxResult.success( dcSdhsEventService.accidentTimeAnalysis(dcSdhsEventQuery)); } /** * 事故车型分析 * @param dcSdhsEventQuery * @return */ @PostMapping("/accidentModelAnalysis") @ApiOperation("事故车型分析") public AjaxResult accidentModelAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery){ if (StringUtils.isEmpty(dcSdhsEventQuery.getType()) || StringUtils.isEmpty(dcSdhsEventQuery.getThisTime()) || StringUtils.isEmpty(dcSdhsEventQuery.getLastTime())){ return AjaxResult.error("参数错误"); } return AjaxResult.success( dcSdhsEventService.accidentModelAnalysis(dcSdhsEventQuery)); } /** * 收费站出入口分析 * @param dcSdhsEventQuery * @return */ @PostMapping("/TollBoothStatisticsList") @ApiOperation("收费站出入口分析") public AjaxResult TollBoothStatisticsList(@RequestBody DcSdhsEventQuery dcSdhsEventQuery){ if (StringUtils.isEmpty(dcSdhsEventQuery.getType()) || StringUtils.isEmpty(dcSdhsEventQuery.getThisTime()) || StringUtils.isEmpty(dcSdhsEventQuery.getLastTime())){ return AjaxResult.error("参数错误"); } return AjaxResult.success( dcSdhsEventService.TollBoothStatisticsList(dcSdhsEventQuery)); } /** * 门架分析 * @param dcSdhsEventQuery * @return */ @PostMapping("/gantryAnalysis") @ApiOperation("门架分析") public AjaxResult gantryAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery){ if (StringUtils.isEmpty(dcSdhsEventQuery.getType()) || StringUtils.isEmpty(dcSdhsEventQuery.getThisTime()) || StringUtils.isEmpty(dcSdhsEventQuery.getLastTime())){ return AjaxResult.error("参数错误"); } return AjaxResult.success( dcSdhsEventService.trafficFlowStatistics(dcSdhsEventQuery)); } @ApiOperation("查询交通管制情况分析") @PostMapping("/selectStationAnalysis") public AjaxResult selectStationAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery) { return dcSdhsEventService.selectStationAnalysis(dcSdhsEventQuery); } @ApiOperation("查询交通事故类型统计") @PostMapping("/selectAccidentType") public AjaxResult selectAccidentType(@RequestBody DcSdhsEventQuery dcSdhsEventQuery) { return dcSdhsEventService.selectAccidentType(dcSdhsEventQuery); } @ApiOperation("查询天气情况统计") @PostMapping("/selectWeather") public AjaxResult selectWeather() { return dcSdhsEventService.selectWeather(); } /** * 查询高速云事件列表 */ @ApiOperation("查询高速云事件列表") @GetMapping("/list") public TableDataInfo list(DcSdhsEvent dcSdhsEvent) { startPage(); List list = dcSdhsEventService.selectDcSdhsEventList(dcSdhsEvent); return getDataTable(list); } /** * 导出高速云事件列表 */ @ApiOperation("导出高速云事件列表") @PostMapping("/exportList") public void exportList(HttpServletResponse response, DcSdhsEvent dcSdhsEvent) { List list = dcSdhsEventService.selectDcSdhsEventList(dcSdhsEvent); ExcelUtil util = new ExcelUtil<>(DcSdhsEvent.class); util.exportExcel(response, list, "高速云事件数据"); } /** * 获取高速云事件详细信息 */ @ApiOperation("获取高速云事件详细信息") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return AjaxResult.success(dcSdhsEventService.selectDcSdhsEventById(id)); } /** * 新增高速云事件 */ @ApiOperation("新增高速云事件") @PostMapping public AjaxResult add(@RequestBody DcSdhsEvent dcSdhsEvent) { return toAjax(dcSdhsEventService.insertDcSdhsEvent(dcSdhsEvent)); } /** * 修改高速云事件 */ @ApiOperation("修改高速云事件") @PutMapping public AjaxResult edit(@RequestBody DcSdhsEvent dcSdhsEvent) { return toAjax(dcSdhsEventService.updateDcSdhsEvent(dcSdhsEvent)); } /** * 删除高速云事件 */ @ApiOperation("删除高速云事件") @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(dcSdhsEventService.deleteDcSdhsEventByIds(ids)); } /** * 查询数据日历 */ @ApiOperation("查询数据日历") @GetMapping("/getDataCalendar/{month}") public AjaxResult getDataCalendar(@ApiParam(name = "month", value = "月份", required = true) @PathVariable("month") String month) { return dcSdhsEventService.getDataCalendar(month); } /** * 事件时间分析 * @param dcSdhsEventQuery * @return */ @PostMapping("/eventTimeAnalysis") @ApiOperation("事故时间分析") public AjaxResult eventTimeAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery){ if (StringUtils.isEmpty(dcSdhsEventQuery.getType()) || StringUtils.isEmpty(dcSdhsEventQuery.getThisTime()) || StringUtils.isEmpty(dcSdhsEventQuery.getLastTime())){ return AjaxResult.error("参数错误"); } return AjaxResult.success( dcSdhsEventService.eventTimeAnalysis(dcSdhsEventQuery)); } }