You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
436 lines
18 KiB
436 lines
18 KiB
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<String> 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<DcSdhsEvent> list = dcSdhsEventService.selectDcSdhsEventList(dcSdhsEvent);
|
|
return getDataTable(list);
|
|
}
|
|
|
|
/**
|
|
* 导出高速云事件列表
|
|
*/
|
|
@ApiOperation("导出高速云事件列表")
|
|
@PostMapping("/exportList")
|
|
public void exportList(HttpServletResponse response, DcSdhsEvent dcSdhsEvent)
|
|
{
|
|
List<DcSdhsEvent> list = dcSdhsEventService.selectDcSdhsEventList(dcSdhsEvent);
|
|
ExcelUtil<DcSdhsEvent> 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));
|
|
}
|
|
|
|
}
|
|
|