济菏高速数据中心代码
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

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));
}
}