Browse Source

门架导出

develop
王兴琳 6 months ago
parent
commit
3aafd2813e
  1. 26
      zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java
  2. 7
      zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java
  3. 24
      zc-business/src/main/java/com/zc/business/domain/TrafficFlowStatisticsMap.java
  4. 3
      zc-business/src/main/java/com/zc/business/mapper/DcGantryStatisticsDataMapper.java
  5. 1
      zc-business/src/main/java/com/zc/business/mapper/DcTollStationStatisticsDataMapper.java
  6. 3
      zc-business/src/main/java/com/zc/business/service/IDcGantryStatisticsDataService.java
  7. 26
      zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java
  8. 9
      zc-business/src/main/java/com/zc/business/service/IDcTollStationStatisticsDataService.java
  9. 7
      zc-business/src/main/java/com/zc/business/service/impl/DcGantryStatisticsDataImpl.java
  10. 356
      zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java
  11. 5
      zc-business/src/main/java/com/zc/business/service/impl/DcTollStationStatisticsDataImpl.java
  12. 93
      zc-business/src/main/resources/mapper/business/DcGantryStatisticsDataMapper.xml
  13. 22
      zc-business/src/main/resources/mapper/business/DcTollStationStatisticsDataMapper.xml
  14. BIN
      zc-business/src/main/resources/wordTemplate/frameDataAnalysis.docx
  15. BIN
      zc-business/src/main/resources/wordTemplate/tollGateEntrance.docx

26
zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java

@ -146,10 +146,10 @@ public class DcSdhsEventController {
for (String trafficIncidentType : exportKey) { for (String trafficIncidentType : exportKey) {
if ("8".equals(trafficIncidentType)){ if ("8".equals(trafficIncidentType)){
//门架车流量 //门架车流量
dcSdhsEventService.exporFrameDataAnalysis(newDoc,dcSdhsEventQuery);
} else if ("9".equals(trafficIncidentType)){ } else if ("9".equals(trafficIncidentType)){
//收费站车流量 //收费站车流量
dcSdhsEventService.exporttollGateEntrance(newDoc,dcSdhsEventQuery);
} }
} }
@ -226,7 +226,29 @@ public class DcSdhsEventController {
@ApiOperation("事故车型分析") @ApiOperation("事故车型分析")
public AjaxResult accidentModelAnalysis(DcSdhsEventQuery dcSdhsEventQuery){ public AjaxResult accidentModelAnalysis(DcSdhsEventQuery dcSdhsEventQuery){
return AjaxResult.success( dcSdhsEventService.accidentModelAnalysis(dcSdhsEventQuery)); return AjaxResult.success( dcSdhsEventService.accidentModelAnalysis(dcSdhsEventQuery));
} /**
* 收费站出入口分析
* @param dcSdhsEventQuery
* @return
*/
@GetMapping("/TollBoothStatisticsList")
@ApiOperation("收费站出入口分析")
public AjaxResult TollBoothStatisticsList(DcSdhsEventQuery dcSdhsEventQuery){
return AjaxResult.success( dcSdhsEventService.TollBoothStatisticsList(dcSdhsEventQuery));
} }
/**
* 门架分析
* @param dcSdhsEventQuery
* @return
*/
@GetMapping("/gantryAnalysis")
@ApiOperation("门架分析")
public AjaxResult gantryAnalysis(DcSdhsEventQuery dcSdhsEventQuery){
return AjaxResult.success( dcSdhsEventService.trafficFlowStatistics(dcSdhsEventQuery));
}
@ApiOperation("查询交通管制情况分析") @ApiOperation("查询交通管制情况分析")
@PostMapping("/selectStationAnalysis") @PostMapping("/selectStationAnalysis")
public AjaxResult selectStationAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery) public AjaxResult selectStationAnalysis(@RequestBody DcSdhsEventQuery dcSdhsEventQuery)

7
zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java

@ -1065,6 +1065,13 @@ public AjaxResult trafficFlowAtTollStationEntrance(String startDate, String endD
// 将查询结果封装为成功响应并返回 // 将查询结果封装为成功响应并返回
return AjaxResult.success(mapList); return AjaxResult.success(mapList);
} }
@ApiOperation("获取据库中收费站数数据")
@GetMapping("/history/TollBoothStatisticsList")
public AjaxResult TollBoothStatisticsList(String startDate, String accessType,String periodType) throws HttpException, IOException{
List<DcTollStationStatisticsDataMap> mapList = dcTollStationStatisticsDataService.TollBoothStatisticsList(startDate,accessType,periodType);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(mapList);
}
/** /**
* 导出全路段双向实时车流量 * 导出全路段双向实时车流量

24
zc-business/src/main/java/com/zc/business/domain/TrafficFlowStatisticsMap.java

@ -0,0 +1,24 @@
package com.zc.business.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TrafficFlowStatisticsMap {
private String intervalName;
private String stakeMake;
private String endMake;
private String facilityCode;
private String direction;
private String statisticalDate;
private String facilityName;
private Long trafficVolume;
private String periodType;
}

3
zc-business/src/main/java/com/zc/business/mapper/DcGantryStatisticsDataMapper.java

@ -2,6 +2,7 @@ package com.zc.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zc.business.domain.DcGantryStatisticsData; import com.zc.business.domain.DcGantryStatisticsData;
import com.zc.business.domain.TrafficFlowStatisticsMap;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -57,6 +58,8 @@ public interface DcGantryStatisticsDataMapper extends BaseMapper<DcGantryStatist
* @return * @return
*/ */
List<Map<String, String>> trafficFlowStatistics(@Param("startDate")String startDate, @Param("endDate")String endDate, @Param("direction")String direction, @Param("periodType")String periodType); List<Map<String, String>> trafficFlowStatistics(@Param("startDate")String startDate, @Param("endDate")String endDate, @Param("direction")String direction, @Param("periodType")String periodType);
//桩号升序排列
List<TrafficFlowStatisticsMap> trafficFlowStatisticsAsc(@Param("startDate")String startDate, @Param("endDate")String endDate, @Param("direction")String direction, @Param("periodType")String periodType);
List<Map<String, String>> sectionTrafficRanking(@Param("startDate")String startDate, @Param("direction")String direction, @Param("periodType")String periodType); List<Map<String, String>> sectionTrafficRanking(@Param("startDate")String startDate, @Param("direction")String direction, @Param("periodType")String periodType);
} }

1
zc-business/src/main/java/com/zc/business/mapper/DcTollStationStatisticsDataMapper.java

@ -36,5 +36,6 @@ public interface DcTollStationStatisticsDataMapper extends BaseMapper<DcTollStat
Date getMaxStatisticalDate(); Date getMaxStatisticalDate();
List<Map<String, String>> TollBoothStatistics(@Param("startDate") String startDate, @Param("accessType") String accessType, @Param("periodType") String periodType); List<Map<String, String>> TollBoothStatistics(@Param("startDate") String startDate, @Param("accessType") String accessType, @Param("periodType") String periodType);
List<DcTollStationStatisticsDataMap> TollBoothStatisticsList(@Param("startDate") String startDate, @Param("accessType") String accessType, @Param("periodType") String periodType);
} }

3
zc-business/src/main/java/com/zc/business/service/IDcGantryStatisticsDataService.java

@ -2,6 +2,7 @@ package com.zc.business.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.zc.business.domain.DcGantryStatisticsData; import com.zc.business.domain.DcGantryStatisticsData;
import com.zc.business.domain.TrafficFlowStatisticsMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -54,6 +55,8 @@ public interface IDcGantryStatisticsDataService extends IService<DcGantryStatist
List<Map<String, String>> trafficFlowStatistics(String startDate, String endDate, String direction, String periodType); List<Map<String, String>> trafficFlowStatistics(String startDate, String endDate, String direction, String periodType);
//桩号升序排列
List<TrafficFlowStatisticsMap> trafficFlowStatisticsAsc(String startDate, String endDate, String direction, String periodType);
List<Map<String, String>> sectionTrafficRanking(String startDate, String direction, String periodType); List<Map<String, String>> sectionTrafficRanking(String startDate, String direction, String periodType);
} }

26
zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java

@ -1,8 +1,7 @@
package com.zc.business.service; package com.zc.business.service;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.zc.business.domain.DcSdhsEvent; import com.zc.business.domain.*;
import com.zc.business.domain.DcSdhsEventQuery;
import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFDocument;
import com.zc.business.domain.DcSdhsEventQuery; import com.zc.business.domain.DcSdhsEventQuery;
import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFDocument;
@ -67,4 +66,27 @@ public interface IDcSdhsEventService
void exportAccidentType(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery); void exportAccidentType(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery);
AjaxResult selectWeather(); AjaxResult selectWeather();
/**
* 收费站出入口分析
* @param dcSdhsEventQuery
* @return
*/
Map<String, List<DcTollStationStatisticsDataMap> > TollBoothStatisticsList(DcSdhsEventQuery dcSdhsEventQuery);
/**
* 收费站出入口
* @param newDoc
* @param dcSdhsEventQuery
*/
void exporttollGateEntrance(XWPFDocument newDoc,DcSdhsEventQuery dcSdhsEventQuery);
/**
* 门架数据导出
* @param newDoc
* @param dcSdhsEventQuery
*/
void exporFrameDataAnalysis(XWPFDocument newDoc,DcSdhsEventQuery dcSdhsEventQuery);
Map<String, List<TrafficFlowStatisticsMap> > trafficFlowStatistics(DcSdhsEventQuery dcSdhsEventQuery);
} }

9
zc-business/src/main/java/com/zc/business/service/IDcTollStationStatisticsDataService.java

@ -42,4 +42,13 @@ public interface IDcTollStationStatisticsDataService extends IService<DcTollStat
List<DcTollStationStatisticsData> accumulatedFlow(DcTollStationStatisticsData request); List<DcTollStationStatisticsData> accumulatedFlow(DcTollStationStatisticsData request);
List<Map<String, String>> TollBoothStatistics(String startDate, String accessType, String periodType); List<Map<String, String>> TollBoothStatistics(String startDate, String accessType, String periodType);
/**
* 统计收费站数据
* @param startDate
* @param accessType
* @param periodType
* @return
*/
List<DcTollStationStatisticsDataMap> TollBoothStatisticsList(String startDate,String accessType, String periodType);
} }

7
zc-business/src/main/java/com/zc/business/service/impl/DcGantryStatisticsDataImpl.java

@ -7,6 +7,7 @@ import com.ruoyi.common.exception.ServiceException;
import com.zc.business.domain.DcGantryMetricsStatisticsData; import com.zc.business.domain.DcGantryMetricsStatisticsData;
import com.zc.business.domain.DcGantryStatisticsData; import com.zc.business.domain.DcGantryStatisticsData;
import com.zc.business.domain.OdsTollEtctuData; import com.zc.business.domain.OdsTollEtctuData;
import com.zc.business.domain.TrafficFlowStatisticsMap;
import com.zc.business.enums.TrafficDataPeriodTypeEnum; import com.zc.business.enums.TrafficDataPeriodTypeEnum;
import com.zc.business.enums.UniversalEnum; import com.zc.business.enums.UniversalEnum;
import com.zc.business.mapper.DcGantryStatisticsDataMapper; import com.zc.business.mapper.DcGantryStatisticsDataMapper;
@ -229,6 +230,12 @@ public class DcGantryStatisticsDataImpl extends ServiceImpl<DcGantryStatisticsDa
return dcGantryStatisticsDataMapper.trafficFlowStatistics(startDate,endDate,direction,periodType); return dcGantryStatisticsDataMapper.trafficFlowStatistics(startDate,endDate,direction,periodType);
} }
//桩号升序排列
@Override
public List<TrafficFlowStatisticsMap> trafficFlowStatisticsAsc(String startDate, String endDate, String direction, String periodType) {
return dcGantryStatisticsDataMapper.trafficFlowStatisticsAsc(startDate,endDate,direction,periodType);
}
@Override @Override
public List<Map<String, String>> sectionTrafficRanking(String startDate, String direction, String periodType) { public List<Map<String, String>> sectionTrafficRanking(String startDate, String direction, String periodType) {

356
zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java

@ -10,23 +10,26 @@ import com.zc.business.constant.RedisKeyConstants;
import com.zc.business.controller.WeatherForecastController; import com.zc.business.controller.WeatherForecastController;
import com.zc.business.domain.DcSdhsEvent; import com.zc.business.domain.DcSdhsEvent;
import com.zc.business.domain.DcSdhsEventQuery; import com.zc.business.domain.DcSdhsEventQuery;
import com.zc.business.domain.DcTollStationStatisticsDataMap;
import com.zc.business.domain.TrafficFlowStatisticsMap;
import com.zc.business.enums.UniversalEnum; import com.zc.business.enums.UniversalEnum;
import com.zc.business.service.IDcGantryStatisticsDataService;
import com.zc.business.service.IDcSdhsEventService; import com.zc.business.service.IDcSdhsEventService;
import com.zc.business.service.IDcTollStationStatisticsDataService;
import com.zc.business.utils.PoiUtil; 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.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFRow;
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.CTTblWidth; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.naming.NamingEnumeration;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -35,18 +38,16 @@ import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters; import java.time.temporal.TemporalAdjusters;
import java.util.*; import java.util.*;
import java.time.ZoneId;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.zc.business.utils.PoiUtil.*; import static com.zc.business.utils.PoiUtil.*;
import static com.zc.business.utils.PoiUtil.addDescription;
/** /**
* 高速云事件分析Service业务层处理 * 高速云事件分析Service业务层处理
* *
@ -61,6 +62,10 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
@Autowired @Autowired
private WeatherForecastController weatherForecastController; private WeatherForecastController weatherForecastController;
@Autowired
private IDcTollStationStatisticsDataService dcTollStationStatisticsDataService;
@Autowired
private IDcGantryStatisticsDataService dcGantryStatisticsDataService;
@Override @Override
public AjaxResult importData(String fileName, String fileUrl) throws IOException { public AjaxResult importData(String fileName, String fileUrl) throws IOException {
@ -237,6 +242,7 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
/** /**
* 事故车型分析 导出 * 事故车型分析 导出
*
* @param doc * @param doc
* @param dcSdhsEventQuery * @param dcSdhsEventQuery
*/ */
@ -351,6 +357,7 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
/** /**
* 事故车型分析 查询 * 事故车型分析 查询
*
* @param dcSdhsEventQuery * @param dcSdhsEventQuery
* @return * @return
*/ */
@ -421,6 +428,7 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
/** /**
* 事故时间分析查询 * 事故时间分析查询
*
* @param dcSdhsEventQuery * @param dcSdhsEventQuery
* @return * @return
*/ */
@ -512,6 +520,7 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
/** /**
* // 在指定时间范围内的事件 * // 在指定时间范围内的事件
*
* @param dcSdhsEventQuery * @param dcSdhsEventQuery
* @param cacheList * @param cacheList
* @param zoneId * @param zoneId
@ -542,6 +551,7 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
/** /**
* 事故时间分析导出 * 事故时间分析导出
*
* @param doc * @param doc
* @param dcSdhsEventQuery * @param dcSdhsEventQuery
*/ */
@ -689,17 +699,15 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
createLineBreak(doc); createLineBreak(doc);
} }
/** /**
* @param input
* @return java.util.List<java.lang.Integer>
* @Description 提取文字中的数字 * @Description 提取文字中的数字
*
* @author liuwenge * @author liuwenge
* @date 2024/8/15 17:05 * @date 2024/8/15 17:05
* @param input
* @return java.util.List<java.lang.Integer>
*/ */
private static List<Integer> extractNumbers(String input) { private static List<Integer> extractNumbers(String input) {
List<Integer> numbers = new ArrayList<>(); List<Integer> numbers = new ArrayList<>();
@ -736,12 +744,11 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
/** /**
* @param dcSdhsEventQuery
* @return com.ruoyi.common.core.domain.AjaxResult
* @Description 事故地市分布 * @Description 事故地市分布
*
* @author liuwenge * @author liuwenge
* @date 2024/8/20 9:13 * @date 2024/8/20 9:13
* @param dcSdhsEventQuery
* @return com.ruoyi.common.core.domain.AjaxResult
*/ */
@Override @Override
public AjaxResult selectRegionAnalysis(DcSdhsEventQuery dcSdhsEventQuery) { public AjaxResult selectRegionAnalysis(DcSdhsEventQuery dcSdhsEventQuery) {
@ -807,13 +814,12 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
} }
/** /**
* @Description 导出事故地市分布
*
* @author liuwenge
* @date 2024/8/20 9:17
* @param doc * @param doc
* @param dcSdhsEventQuery * @param dcSdhsEventQuery
* @return void * @return void
* @Description 导出事故地市分布
* @author liuwenge
* @date 2024/8/20 9:17
*/ */
@Override @Override
public void exportRegionAnalysis(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery) { public void exportRegionAnalysis(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery) {
@ -893,12 +899,11 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
/** /**
* @param dcSdhsEventQuery
* @return com.ruoyi.common.core.domain.AjaxResult
* @Description 查询交通管制情况统计 * @Description 查询交通管制情况统计
*
* @author liuwenge * @author liuwenge
* @date 2024/8/20 11:06 * @date 2024/8/20 11:06
* @param dcSdhsEventQuery
* @return com.ruoyi.common.core.domain.AjaxResult
*/ */
@Override @Override
public AjaxResult selectStationAnalysis(DcSdhsEventQuery dcSdhsEventQuery) { public AjaxResult selectStationAnalysis(DcSdhsEventQuery dcSdhsEventQuery) {
@ -980,12 +985,11 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
} }
/** /**
* @param title
* @return java.lang.String
* @Description 从标题中截取收费站名称 * @Description 从标题中截取收费站名称
*
* @author liuwenge * @author liuwenge
* @date 2024/8/19 15:32 * @date 2024/8/19 15:32
* @param title
* @return java.lang.String
*/ */
private static String getStationName(String title) { private static String getStationName(String title) {
@ -1004,13 +1008,12 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
/** /**
* @Description 导出交通管制情况统计
*
* @author liuwenge
* @date 2024/8/20 11:05
* @param doc * @param doc
* @param dcSdhsEventQuery * @param dcSdhsEventQuery
* @return com.ruoyi.common.core.domain.AjaxResult * @return com.ruoyi.common.core.domain.AjaxResult
* @Description 导出交通管制情况统计
* @author liuwenge
* @date 2024/8/20 11:05
*/ */
@Override @Override
public void exportStationAnalysis(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery) { public void exportStationAnalysis(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery) {
@ -1094,12 +1097,11 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
/** /**
* @param dcSdhsEventQuery
* @return com.ruoyi.common.core.domain.AjaxResult
* @Description 查询交通事故类型统计 * @Description 查询交通事故类型统计
*
* @author liuwenge * @author liuwenge
* @date 2024/8/21 10:56 * @date 2024/8/21 10:56
* @param dcSdhsEventQuery
* @return com.ruoyi.common.core.domain.AjaxResult
*/ */
@Override @Override
public AjaxResult selectAccidentType(DcSdhsEventQuery dcSdhsEventQuery) { public AjaxResult selectAccidentType(DcSdhsEventQuery dcSdhsEventQuery) {
@ -1130,13 +1132,12 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
} }
/** /**
* @Description 导出交通事故类型统计
*
* @author liuwenge
* @date 2024/8/21 11:07
* @param doc * @param doc
* @param dcSdhsEventQuery * @param dcSdhsEventQuery
* @return void * @return void
* @Description 导出交通事故类型统计
* @author liuwenge
* @date 2024/8/21 11:07
*/ */
@Override @Override
public void exportAccidentType(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery) { public void exportAccidentType(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery) {
@ -1334,4 +1335,289 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
result.put("dataList",dataList); result.put("dataList",dataList);
return AjaxResult.success(result); return AjaxResult.success(result);
} }
/**
* 收费站出入口分析
*
* @param dcSdhsEventQuery
* @return
*/
@Override
public Map<String, List<DcTollStationStatisticsDataMap>> TollBoothStatisticsList(DcSdhsEventQuery dcSdhsEventQuery) {
Date startTime = dcSdhsEventQuery.getStartTime();
LocalDateTime localDateTime = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
// 定义日期时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 将 LocalDateTime 转换为字符串
String startDate = localDateTime.format(formatter);
String type = dcSdhsEventQuery.getType();
String periodType = "";
if (type.equals("2")) {
periodType = "4";
}
if (type.equals("1")) {
periodType = "3";
}
if (type.equals("0")) {
periodType = "1";
}
Map<String, List<DcTollStationStatisticsDataMap>> map = new HashMap<>();
//入口
List<DcTollStationStatisticsDataMap> entrance = dcTollStationStatisticsDataService.TollBoothStatisticsList(startDate, "1",periodType);
//出口
List<DcTollStationStatisticsDataMap> exit = dcTollStationStatisticsDataService.TollBoothStatisticsList(startDate, "2",periodType);
map.put("entrance", entrance);
map.put("exit", exit);
return map;
}
/**
* 收费站出入口导出
*
* @param doc
* @param dcSdhsEventQuery
*/
@Override
public void exporttollGateEntrance(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery) {
Map<String, List<DcTollStationStatisticsDataMap>> map = TollBoothStatisticsList( dcSdhsEventQuery);
List<DcTollStationStatisticsDataMap> entrance = map.get("entrance");
List<DcTollStationStatisticsDataMap> exit = map.get("exit");
int rows = entrance.size();
String name = "wordTemplate/tollGateEntrance.docx";
// 创建表格
XWPFTable table = doc.createTable(rows+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(0), "收费站");
setTableFonts(table.getRow(0).getCell(1), "入口");
setTableFonts(table.getRow(0).getCell(2), "出口");
// 填充表格数据
for (int i = 0; i < rows ; i++) {
setTableFonts(table.getRow(i + 1).getCell(0), (entrance.get(i).getFacilityName()));
Integer entranceValue = entrance.get(i).getTrafficVolume();
setTableFonts(table.getRow(i + 1).getCell(1), String.valueOf(entranceValue));
Integer exitValue = exit.get(i).getTrafficVolume();
setTableFonts(table.getRow(i + 1).getCell(2), String.valueOf(exitValue));
}
// 图表部分
try {
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(name);
XWPFDocument copiedTemplate = new XWPFDocument(inputStream);
List<XWPFChart> charts = copiedTemplate.getCharts();
XWPFChart chart = charts.get(0);
XSSFWorkbook workbook = chart.getWorkbook();
XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber());
// 更新图表数据
for (int i = UniversalEnum.ZERO.getNumber(); i < rows; i++) {
sheet.getRow(i + 1).getCell(0).setCellValue(entrance.get(i).getFacilityName());
int rowIndex = i + UniversalEnum.ONE.getNumber(); // 计算行索引
Row row = sheet.getRow(rowIndex);
if (row == null) {
// 如果行不存在,则创建新行
row = sheet.createRow(rowIndex);
}
// 现在可以安全地访问或创建单元格了
Cell cell = row.getCell(UniversalEnum.ONE.getNumber());
if (cell == null) {
// 通常情况下,getCell 会创建新的单元格,但这里我们显式地检查以防万一
cell = row.createCell(UniversalEnum.ONE.getNumber(), CellType.NUMERIC);
}
// 设置单元格的值
sheet.getRow(i + 1).getCell(1).setCellValue( entrance.get(i).getTrafficVolume());
int rowIndexTwo = i + 1 + UniversalEnum.ONE.getNumber(); // 计算行索引
Row rowTwo = sheet.getRow(rowIndexTwo);
if (rowTwo == null) {
// 如果行不存在,则创建新行
rowTwo = sheet.createRow(rowIndexTwo);
}
// 现在可以安全地访问或创建单元格了
Cell cellTwo = row.getCell(UniversalEnum.TWO.getNumber());
if (cellTwo == null) {
// 通常情况下,getCell 会创建新的单元格,但这里我们显式地检查以防万一
cell = row.createCell(UniversalEnum.TWO.getNumber(), CellType.NUMERIC);
}
sheet.getRow(i + 1).getCell(2).setCellValue(exit.get(i).getTrafficVolume());
//sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(entries.get(i).getValue().toString()));
}
/* for (int i = 0; i < 24; i++) {
sheet.getRow(i + 1).getCell(0).setCellValue((i) + "点");
sheet.getRow(i + 1).getCell(1).setCellValue(currentYearData.get(i));
sheet.getRow(i + 1).getCell(2).setCellValue(lastYearData.get(i));
}*/
for (int i = sheet.getLastRowNum(); i > entrance.size(); i--) {
sheet.removeRow(sheet.getRow(i));
}
// 更新图表
PoiUtil.wordExportChar(chart, "收费站出入口车流量", new String[]{"入口", "出口"}, sheet);
// 合并图表到Word文档
mergeChart(chart, doc);
// 关闭模板文档
copiedTemplate.close();
} catch (Exception e) {
e.printStackTrace();
}
//换行
createLineBreak(doc);
}
/**
* 收门架数据导出
*
* @param doc
* @param dcSdhsEventQuery
*/
@Override
public void exporFrameDataAnalysis(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery) {
Map<String, List<TrafficFlowStatisticsMap>> map = trafficFlowStatistics( dcSdhsEventQuery);
List<TrafficFlowStatisticsMap>entrance = map.get("hezeDirection");
List<TrafficFlowStatisticsMap> exit = map.get("jinanDirection");
int rows = entrance.size();
String name = "wordTemplate/frameDataAnalysis.docx";
// 创建表格
XWPFTable table = doc.createTable(rows+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(0), "门架");
setTableFonts(table.getRow(0).getCell(1), "菏泽方向");
setTableFonts(table.getRow(0).getCell(2), "济南方向");
// 填充表格数据
for (int i = 0; i < rows ; i++) {
setTableFonts(table.getRow(i + 1).getCell(0), (entrance.get(i).getFacilityName()));
Long entranceValue = entrance.get(i).getTrafficVolume()!=null ?entrance.get(i).getTrafficVolume() : 0;
setTableFonts(table.getRow(i + 1).getCell(1), String.valueOf(entranceValue));
Long exitValue = exit.get(i).getTrafficVolume()!=null ?exit.get(i).getTrafficVolume() : 0;
setTableFonts(table.getRow(i + 1).getCell(2), String.valueOf(exitValue));
}
// 图表部分
try {
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(name);
XWPFDocument copiedTemplate = new XWPFDocument(inputStream);
List<XWPFChart> charts = copiedTemplate.getCharts();
XWPFChart chart = charts.get(0);
XSSFWorkbook workbook = chart.getWorkbook();
XSSFSheet sheet = workbook.getSheetAt(UniversalEnum.ZERO.getNumber());
// 更新图表数据
for (int i = UniversalEnum.ZERO.getNumber(); i < rows; i++) {
sheet.getRow(i + 1).getCell(0).setCellValue(entrance.get(i).getFacilityName());
int rowIndex = i + UniversalEnum.ONE.getNumber(); // 计算行索引
Row row = sheet.getRow(rowIndex);
if (row == null) {
// 如果行不存在,则创建新行
row = sheet.createRow(rowIndex);
}
// 现在可以安全地访问或创建单元格了
Cell cell = row.getCell(UniversalEnum.ONE.getNumber());
if (cell == null) {
// 通常情况下,getCell 会创建新的单元格,但这里我们显式地检查以防万一
cell = row.createCell(UniversalEnum.ONE.getNumber(), CellType.NUMERIC);
}
// 设置单元格的值
sheet.getRow(i + 1).getCell(1).setCellValue( entrance.get(i).getTrafficVolume()!=null ?entrance.get(i).getTrafficVolume() : 0);
int rowIndexTwo = i + 1 + UniversalEnum.ONE.getNumber(); // 计算行索引
Row rowTwo = sheet.getRow(rowIndexTwo);
if (rowTwo == null) {
// 如果行不存在,则创建新行
rowTwo = sheet.createRow(rowIndexTwo);
}
// 现在可以安全地访问或创建单元格了
Cell cellTwo = row.getCell(UniversalEnum.TWO.getNumber());
if (cellTwo == null) {
// 通常情况下,getCell 会创建新的单元格,但这里我们显式地检查以防万一
cell = row.createCell(UniversalEnum.TWO.getNumber(), CellType.NUMERIC);
}
sheet.getRow(i + 1).getCell(2).setCellValue(exit.get(i).getTrafficVolume()!=null ?exit.get(i).getTrafficVolume() : 0);
//sheet.getRow(i+UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ONE.getNumber()).setCellValue(Long.parseLong(entries.get(i).getValue().toString()));
}
/* for (int i = 0; i < 24; i++) {
sheet.getRow(i + 1).getCell(0).setCellValue((i) + "点");
sheet.getRow(i + 1).getCell(1).setCellValue(currentYearData.get(i));
sheet.getRow(i + 1).getCell(2).setCellValue(lastYearData.get(i));
}*/
for (int i = sheet.getLastRowNum(); i > entrance.size(); i--) {
sheet.removeRow(sheet.getRow(i));
}
// 更新图表
PoiUtil.wordExportChar(chart, "门架车流量", new String[]{"菏泽", "济南"}, sheet);
// 合并图表到Word文档
mergeChart(chart, doc);
// 关闭模板文档
copiedTemplate.close();
} catch (Exception e) {
e.printStackTrace();
}
//换行
createLineBreak(doc);
}
/**
* 门架数据分析
* @param dcSdhsEventQuery
* @return
*/
@Override
public Map<String, List<TrafficFlowStatisticsMap>> trafficFlowStatistics(DcSdhsEventQuery dcSdhsEventQuery) {
Date startTime = dcSdhsEventQuery.getStartTime();
LocalDateTime localDateTime = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
// 定义日期时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 将 LocalDateTime 转换为字符串
String startDate = localDateTime.format(formatter);
String type = dcSdhsEventQuery.getType();
String periodType = "";
if (type.equals("2")) {
periodType = "4";
}
if (type.equals("1")) {
periodType = "3";
}
if (type.equals("0")) {
periodType = "1";
}
//菏泽方向
List<TrafficFlowStatisticsMap> hezeDirection = dcGantryStatisticsDataService.trafficFlowStatisticsAsc(startDate,startDate,"1",periodType);
//济南方向
List<TrafficFlowStatisticsMap> jinanDirection = dcGantryStatisticsDataService.trafficFlowStatisticsAsc(startDate,startDate,"3",periodType);
Map<String, List<TrafficFlowStatisticsMap>> map = new HashMap<>();
map.put("hezeDirection",hezeDirection);
map.put("jinanDirection",jinanDirection);
return map;
}
} }

5
zc-business/src/main/java/com/zc/business/service/impl/DcTollStationStatisticsDataImpl.java

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.zc.business.domain.DcTollStationStatisticsData; import com.zc.business.domain.DcTollStationStatisticsData;
import com.zc.business.domain.DcTollStationStatisticsDataMap;
import com.zc.business.domain.OdsTollEnpassData; import com.zc.business.domain.OdsTollEnpassData;
import com.zc.business.domain.OdsTollExpassData; import com.zc.business.domain.OdsTollExpassData;
import com.zc.business.enums.TrafficDataPeriodTypeEnum; import com.zc.business.enums.TrafficDataPeriodTypeEnum;
@ -238,6 +239,10 @@ public class DcTollStationStatisticsDataImpl extends ServiceImpl<DcTollStationSt
public List<Map<String, String>> TollBoothStatistics(String startDate, String accessType, String periodType) { public List<Map<String, String>> TollBoothStatistics(String startDate, String accessType, String periodType) {
return dcTollStationStatisticsDataMapper.TollBoothStatistics(startDate,accessType,periodType); return dcTollStationStatisticsDataMapper.TollBoothStatistics(startDate,accessType,periodType);
} }
@Override
public List<DcTollStationStatisticsDataMap> TollBoothStatisticsList(String startDate, String accessType, String periodType) {
return dcTollStationStatisticsDataMapper.TollBoothStatisticsList(startDate,accessType,periodType);
}
/** /**
* 恢复日缓存数据的方法获取当月收费站站点入口和出口数据 * 恢复日缓存数据的方法获取当月收费站站点入口和出口数据

93
zc-business/src/main/resources/mapper/business/DcGantryStatisticsDataMapper.xml

@ -29,6 +29,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="trafficVolume" column="traffic_volume"/> <result property="trafficVolume" column="traffic_volume"/>
<result property="periodType" column="period_type"/> <result property="periodType" column="period_type"/>
</resultMap> </resultMap>
<resultMap type="com.zc.business.domain.TrafficFlowStatisticsMap" id="trafficFlowStatistics">
<result property="intervalName" column="interval_name"/>
<result property="stakeMake" column="stake_make"/>
<result property="endMake" column="end_make"/>
<result property="facilityCode" column="facility_code"/>
<result property="direction" column="direction"/>
<result property="statisticalDate" column="statistical_date"/>
<result property="facilityName" column="facility_name"/>
<result property="trafficVolume" column="traffic_volume"/>
<result property="periodType" column="period_type"/>
</resultMap>
<!-- 插入或更新交通路段数据 --> <!-- 插入或更新交通路段数据 -->
<insert id="insertOrUpdate" parameterType="com.zc.business.domain.DcGantryStatisticsData"> <insert id="insertOrUpdate" parameterType="com.zc.business.domain.DcGantryStatisticsData">
INSERT INTO INSERT INTO
@ -337,6 +348,88 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
ORDER BY ORDER BY
dgsd.statistical_date DESC dgsd.statistical_date DESC
</select> </select>
<!-- 桩号升序排列-->
<select id="trafficFlowStatisticsAsc" resultMap="trafficFlowStatistics" resultType="com.zc.business.domain.TrafficFlowStatisticsMap" >
SELECT
i.interval_name,
i.stake_make,
i.end_make,
ps.facility_code,
ps.facility_name,
ps.direction,
dgsd.traffic_volume,
dgsd.statistical_date,
dgsd.period_type
FROM
(
SELECT
'K054+394' AS stake_make,
'K059+289' AS end_make,
'殷家林枢纽-大学城立交' AS interval_name UNION ALL
SELECT
'K059+289',
'K072+847',
'大学城立交-长清立交' UNION ALL
SELECT
'K072+847',
'K083+835',
'长清立交-松竹枢纽' UNION ALL
SELECT
'K083+835',
'K086+499',
'松竹枢纽-孝里立交' UNION ALL
SELECT
'K086+499',
'K099+750',
'孝里立交-平阴北立交' UNION ALL
SELECT
'K099+750',
'K105+904',
'平阴北立交-平阴立交' UNION ALL
SELECT
'K105+904',
'K117+878',
'平阴立交-孔村枢纽' UNION ALL
SELECT
'K117+878',
'K126+233',
'孔村枢纽-平阴南立交' UNION ALL
SELECT
'K126+233',
'K145+933',
'平阴南立交-东平立交' UNION ALL
SELECT
'K145+933',
'K155+652',
'东平立交-东平湖枢纽' UNION ALL
SELECT
'K155+652',
'K173+950',
'东平湖枢纽-梁山东立交' UNION ALL
SELECT
'K173+950',
'K179+396',
'梁山东立交-梁山立交' UNION ALL
SELECT
'K179+396',
'K190+495',
'梁山立交-嘉祥西立交' UNION ALL
SELECT
'K190+495',
'K202+979',
'嘉祥西立交'
) AS i
JOIN dc_facility AS ps ON ps.stake_mark BETWEEN CONCAT( i.stake_make, '+0' )
AND CONCAT( i.end_make, '+0' )
AND ps.direction =#{direction}
LEFT JOIN dc_gantry_statistics_data AS dgsd ON ps.facility_code = dgsd.gantry_code
AND DATE ( dgsd.statistical_date ) BETWEEN #{startDate} AND #{endDate}
AND dgsd.period_type = #{periodType}
WHERE
ps.facility_type = '10'
ORDER BY
i.stake_make ASC
</select>
<select id="sectionTrafficRanking" resultMap="trafficPeriodAnalysisMap" resultType="map" > <select id="sectionTrafficRanking" resultMap="trafficPeriodAnalysisMap" resultType="map" >
SELECT SELECT

22
zc-business/src/main/resources/mapper/business/DcTollStationStatisticsDataMapper.xml

@ -123,4 +123,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE fa.facility_type = 1 WHERE fa.facility_type = 1
</select> </select>
<select id="TollBoothStatisticsList" parameterType="string" resultType="com.zc.business.domain.DcTollStationStatisticsDataMap" >
SELECT
IFNULL( fa.facility_name, '') AS facility_name,
IFNULL(fa.stake_mark, '') AS stake_mark,
IFNULL(dt.id,'') AS id,
IFNULL( dt.access_type, '') AS access_type,
IFNULL( dt.period_type, '') AS period_type,
IFNULL( dt.traffic_volume, 0) AS traffic_volume,
IFNULL( dt.toll_station_code, '') AS toll_station_code,
IFNULL( dt.statistical_date, '') AS statistical_date
FROM
dc_facility AS fa
LEFT JOIN
dc_toll_station_statistics_data AS dt
ON
fa.facility_code = dt.toll_station_code
AND dt.statistical_date = #{startDate}
AND dt.period_type = #{periodType}
AND dt.access_type = #{accessType}
WHERE fa.facility_type = 1
</select>
</mapper> </mapper>

BIN
zc-business/src/main/resources/wordTemplate/frameDataAnalysis.docx

Binary file not shown.

BIN
zc-business/src/main/resources/wordTemplate/tollGateEntrance.docx

Binary file not shown.
Loading…
Cancel
Save