Browse Source

高速云事件入库

develop
lau572 6 months ago
parent
commit
ec385f7a9d
  1. 77
      zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java
  2. 6
      zc-business/src/main/java/com/zc/business/domain/DcSdhsEvent.java
  3. 76
      zc-business/src/main/java/com/zc/business/mapper/DcSdhsEventMapper.java
  4. 51
      zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java
  5. 128
      zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java
  6. 140
      zc-business/src/main/resources/mapper/business/DcSdhsEventMapper.xml

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

@ -1,7 +1,10 @@
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.poi.ExcelUtil;
import com.zc.business.domain.DcSdhsEvent;
import com.zc.business.domain.DcSdhsEventQuery;
import com.zc.business.enums.UniversalEnum;
@ -55,6 +58,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static com.ruoyi.common.utils.PageUtils.startPage;
import static com.zc.business.utils.PoiUtil.mergeChart;
import static com.zc.business.utils.PoiUtil.setTableFonts;
@ -88,7 +92,7 @@ import static com.zc.business.utils.PoiUtil.createLineBreak;
@Api(tags = "高速云事件分析")
@RestController
@RequestMapping("/business/sdhsEvent")
public class DcSdhsEventController {
public class DcSdhsEventController extends BaseController {
@Autowired
@ -110,6 +114,14 @@ public class DcSdhsEventController {
return dcSdhsEventService.importData(fileName,fileUrl);
}
@ApiOperation("根据时间范围删除数据")
@PostMapping("/deleteData")
public AjaxResult deleteData(@ApiParam(value="开始时间", name="startTime", required=true) @RequestParam("startTime") String startTime,
@ApiParam(value="结束时间", name="endTime", required=true) @RequestParam("endTime") String endTime){
return dcSdhsEventService.deleteData(startTime,endTime);
}
//事故多发路段分析
@ApiOperation("查询事故多发路段分析")
@PostMapping("/sectionAnalysis")
@ -353,5 +365,68 @@ public class DcSdhsEventController {
}
/**
* 查询高速云事件列表
*/
@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));
}
}

6
zc-business/src/main/java/com/zc/business/domain/DcSdhsEvent.java

@ -19,7 +19,7 @@ public class DcSdhsEvent extends BaseEntity
private static final long serialVersionUID = 1L;
/** 预警编号 */
private Integer id;
private Long id;
/** 所属路线 */
@Excel(name = "所属路线")
@ -80,11 +80,11 @@ public class DcSdhsEvent extends BaseEntity
@Excel(name = "天气")
private String weather;
public Integer getId() {
public Long getId() {
return id;
}
public void setId(Integer id) {
public void setId(Long id) {
this.id = id;
}

76
zc-business/src/main/java/com/zc/business/mapper/DcSdhsEventMapper.java

@ -0,0 +1,76 @@
package com.zc.business.mapper;
import java.util.Date;
import java.util.List;
import com.ruoyi.system.domain.SysUserPost;
import com.zc.business.domain.DcSdhsEvent;
/**
* 高速云事件Mapper接口
*
* @author ruoyi
* @date 2024-09-09
*/
public interface DcSdhsEventMapper
{
/**
* 查询高速云事件
*
* @param id 高速云事件主键
* @return 高速云事件
*/
public DcSdhsEvent selectDcSdhsEventById(Long id);
/**
* 查询高速云事件列表
*
* @param dcSdhsEvent 高速云事件
* @return 高速云事件集合
*/
List<DcSdhsEvent> selectDcSdhsEventList(DcSdhsEvent dcSdhsEvent);
/**
* 新增高速云事件
*
* @param dcSdhsEvent 高速云事件
* @return 结果
*/
int insertDcSdhsEvent(DcSdhsEvent dcSdhsEvent);
/**
* 修改高速云事件
*
* @param dcSdhsEvent 高速云事件
* @return 结果
*/
int updateDcSdhsEvent(DcSdhsEvent dcSdhsEvent);
/**
* 删除高速云事件
*
* @param id 高速云事件主键
* @return 结果
*/
int deleteDcSdhsEventById(Long id);
/**
* 批量删除高速云事件
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
int deleteDcSdhsEventByIds(Long[] ids);
List<Date> selectTimeList();
/**
* 批量插入
*
* @param
* @return 结果
*/
public boolean batchInsert(List<DcSdhsEvent> dcSdhsEventList);
boolean deleteByTimeRange(String startTime, String endTime);
}

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

@ -12,6 +12,7 @@ import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -28,6 +29,8 @@ public interface IDcSdhsEventService
// AjaxResult importData(MultipartFile file) throws Exception;
AjaxResult importData(String fileName,String fileUrl) throws Exception;
AjaxResult deleteData(String startTime, String endTime);
AjaxResult getFileInfo();
@ -111,4 +114,52 @@ public interface IDcSdhsEventService
void exporFrameDataAnalysis(XWPFDocument newDoc,DcSdhsEventQuery dcSdhsEventQuery);
Map<String, List<TrafficFlowStatisticsMap> > trafficFlowStatistics(DcSdhsEventQuery dcSdhsEventQuery);
/**
* 查询高速云事件
*
* @param id 高速云事件主键
* @return 高速云事件
*/
public DcSdhsEvent selectDcSdhsEventById(Long id);
/**
* 查询高速云事件列表
*
* @param dcSdhsEvent 高速云事件
* @return 高速云事件集合
*/
List<DcSdhsEvent> selectDcSdhsEventList(DcSdhsEvent dcSdhsEvent);
/**
* 新增高速云事件
*
* @param dcSdhsEvent 高速云事件
* @return 结果
*/
int insertDcSdhsEvent(DcSdhsEvent dcSdhsEvent);
/**
* 修改高速云事件
*
* @param dcSdhsEvent 高速云事件
* @return 结果
*/
int updateDcSdhsEvent(DcSdhsEvent dcSdhsEvent);
/**
* 批量删除高速云事件
*
* @param ids 需要删除的高速云事件主键集合
* @return 结果
*/
int deleteDcSdhsEventByIds(Long[] ids);
/**
* 删除高速云事件信息
*
* @param id 高速云事件主键
* @return 结果
*/
int deleteDcSdhsEventById(Long id);
}

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

@ -13,6 +13,7 @@ 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.mapper.DcSdhsEventMapper;
import com.zc.business.service.IDcGantryStatisticsDataService;
import com.zc.business.service.IDcSdhsEventService;
import com.zc.business.service.IDcTollStationStatisticsDataService;
@ -90,6 +91,8 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
private IDcTollStationStatisticsDataService dcTollStationStatisticsDataService;
@Autowired
private IDcGantryStatisticsDataService dcGantryStatisticsDataService;
@Autowired
private DcSdhsEventMapper dcSdhsEventMapper;
@Override
public AjaxResult importData(String fileName, String fileUrl) throws IOException {
@ -109,29 +112,24 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
}
//redisCache.deleteObject(RedisKeyConstants.SDHS_EVENT);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//根据开始事件验重,如果有时间重复的则本次不导入
List<DcSdhsEvent> eventCache = redisCache.getCacheList(RedisKeyConstants.SDHS_EVENT);
if (eventCache != null && eventCache.size() > 0){
Set<Date> oldStartTime = new HashSet<>();
eventCache.forEach(item -> {
oldStartTime.add(item.getStartTime());
});
if (importData != null && importData.size() > 0) {
List<Date> duplicateData = new ArrayList<>();
for (DcSdhsEvent importDatum : importData) {
if (oldStartTime.contains(importDatum.getStartTime())){
duplicateData.add(importDatum.getStartTime());
}
List<Date> timeList = dcSdhsEventMapper.selectTimeList();
if (timeList != null && timeList.size() > 0 && importData != null && importData.size() > 0){
List<String> duplicateData = new ArrayList<>();
for (DcSdhsEvent importDatum : importData) {
if (timeList.contains(importDatum.getStartTime())){
duplicateData.add(df.format(importDatum.getStartTime()));
}
}
if (duplicateData.size() > 0){
return AjaxResult.error("本次导入含有重复数据",duplicateData);
}
if (duplicateData.size() > 0){
return AjaxResult.error("本次导入含有重复数据",duplicateData);
}
}
//整理数据后批量插入数据库
List<DcSdhsEvent> eventList = new ArrayList<>();
if (importData != null && importData.size() > 0) {
for (DcSdhsEvent dcSdhsEvent : importData) {
@ -189,9 +187,10 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
}
//不入数据库, 放入缓存
//保存至数据库
if (eventList.size() > 0) {
redisCache.setCacheList(RedisKeyConstants.SDHS_EVENT, eventList);
dcSdhsEventMapper.batchInsert(eventList);
//redisCache.setCacheList(RedisKeyConstants.SDHS_EVENT, eventList);
}
Map<String, Object> fileInfo = new HashMap<>();
@ -199,13 +198,29 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
fileInfo.put("fileUrl", fileUrl);
Date now = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String updateTime = simpleDateFormat.format(now);
String updateTime = df.format(now);
fileInfo.put("uploadTime", updateTime);
redisCache.setCacheMapValue(RedisKeyConstants.SDHS_EVENT_FILE, now.getTime(), fileInfo);
return AjaxResult.success("导入成功");
}
/**
* @Description 根据时间范围删除数据
*
* @author liuwenge
* @date 2024/9/9 11:58
* @param startTime
* @param endTime
* @return com.ruoyi.common.core.domain.AjaxResult
*/
@Override
public AjaxResult deleteData(String startTime, String endTime){
dcSdhsEventMapper.deleteByTimeRange(startTime,endTime);
return AjaxResult.success("删除成功");
}
//事故多发路段分析
@Override
public Map<String, Integer> accidentSectionAnalysis(DcSdhsEventQuery dcSdhsEventQuery) {
@ -2192,4 +2207,75 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService {
return map;
}
/**
* 查询高速云事件
*
* @param id 高速云事件主键
* @return 高速云事件
*/
@Override
public DcSdhsEvent selectDcSdhsEventById(Long id)
{
return dcSdhsEventMapper.selectDcSdhsEventById(id);
}
/**
* 查询高速云事件列表
*
* @param dcSdhsEvent 高速云事件
* @return 高速云事件
*/
@Override
public List<DcSdhsEvent> selectDcSdhsEventList(DcSdhsEvent dcSdhsEvent)
{
return dcSdhsEventMapper.selectDcSdhsEventList(dcSdhsEvent);
}
/**
* 新增高速云事件
*
* @param dcSdhsEvent 高速云事件
* @return 结果
*/
@Override
public int insertDcSdhsEvent(DcSdhsEvent dcSdhsEvent)
{
return dcSdhsEventMapper.insertDcSdhsEvent(dcSdhsEvent);
}
/**
* 修改高速云事件
*
* @param dcSdhsEvent 高速云事件
* @return 结果
*/
@Override
public int updateDcSdhsEvent(DcSdhsEvent dcSdhsEvent)
{
return dcSdhsEventMapper.updateDcSdhsEvent(dcSdhsEvent);
}
/**
* 批量删除高速云事件
*
* @param ids 需要删除的高速云事件主键
* @return 结果
*/
@Override
public int deleteDcSdhsEventByIds(Long[] ids)
{
return dcSdhsEventMapper.deleteDcSdhsEventByIds(ids);
}
/**
* 删除高速云事件信息
*
* @param id 高速云事件主键
* @return 结果
*/
@Override
public int deleteDcSdhsEventById(Long id)
{
return dcSdhsEventMapper.deleteDcSdhsEventById(id);
}
}

140
zc-business/src/main/resources/mapper/business/DcSdhsEventMapper.xml

@ -0,0 +1,140 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zc.business.mapper.DcSdhsEventMapper">
<resultMap type="DcSdhsEvent" id="DcSdhsEventResult">
<result property="id" column="id" />
<result property="road" column="road" />
<result property="dept" column="dept" />
<result property="eventType" column="event_type" />
<result property="startTime" column="start_time" />
<result property="endTime" column="end_time" />
<result property="status" column="status" />
<result property="source" column="source" />
<result property="title" column="title" />
<result property="eventSubclass" column="event_subclass" />
<result property="carType" column="car_type" />
<result property="carNum" column="car_num" />
<result property="multiVehicle" column="multi_vehicle" />
<result property="direction" column="direction" />
<result property="stakeMark" column="stake_mark" />
<result property="weather" column="weather" />
</resultMap>
<sql id="selectDcSdhsEventVo">
select id, road, dept, event_type, start_time, end_time, status, source, title, event_subclass, car_type, car_num, multi_vehicle, direction, stake_mark, weather from dc_sdhs_event
</sql>
<select id="selectDcSdhsEventList" parameterType="DcSdhsEvent" resultMap="DcSdhsEventResult">
<include refid="selectDcSdhsEventVo"/>
<where>
<if test="road != null and road != ''"> and road = #{road}</if>
<if test="dept != null and dept != ''"> and dept = #{dept}</if>
<if test="eventType != null and eventType != ''"> and event_type = #{eventType}</if>
<if test="startTime != null "> and start_time = #{startTime}</if>
<if test="endTime != null "> and end_time = #{endTime}</if>
<if test="status != null and status != ''"> and status = #{status}</if>
<if test="source != null and source != ''"> and source = #{source}</if>
<if test="title != null and title != ''"> and title = #{title}</if>
<if test="eventSubclass != null and eventSubclass != ''"> and event_subclass = #{eventSubclass}</if>
<if test="carType != null and carType != ''"> and car_type = #{carType}</if>
<if test="carNum != null "> and car_num = #{carNum}</if>
<if test="multiVehicle != null and multiVehicle != ''"> and multi_vehicle = #{multiVehicle}</if>
<if test="direction != null and direction != ''"> and direction = #{direction}</if>
<if test="stakeMark != null and stakeMark != ''"> and stake_mark = #{stakeMark}</if>
<if test="weather != null and weather != ''"> and weather = #{weather}</if>
</where>
</select>
<select id="selectDcSdhsEventById" parameterType="Long" resultMap="DcSdhsEventResult">
<include refid="selectDcSdhsEventVo"/>
where id = #{id}
</select>
<select id="selectTimeList" resultType="java.util.Date">
select DISTINCT(start_time) from dc_sdhs_event
</select>
<insert id="insertDcSdhsEvent" parameterType="DcSdhsEvent" useGeneratedKeys="true" keyProperty="id">
insert into dc_sdhs_event
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="road != null">road,</if>
<if test="dept != null">dept,</if>
<if test="eventType != null">event_type,</if>
<if test="startTime != null">start_time,</if>
<if test="endTime != null">end_time,</if>
<if test="status != null">status,</if>
<if test="source != null">source,</if>
<if test="title != null">title,</if>
<if test="eventSubclass != null">event_subclass,</if>
<if test="carType != null">car_type,</if>
<if test="carNum != null">car_num,</if>
<if test="multiVehicle != null">multi_vehicle,</if>
<if test="direction != null">direction,</if>
<if test="stakeMark != null">stake_mark,</if>
<if test="weather != null">weather,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="road != null">#{road},</if>
<if test="dept != null">#{dept},</if>
<if test="eventType != null">#{eventType},</if>
<if test="startTime != null">#{startTime},</if>
<if test="endTime != null">#{endTime},</if>
<if test="status != null">#{status},</if>
<if test="source != null">#{source},</if>
<if test="title != null">#{title},</if>
<if test="eventSubclass != null">#{eventSubclass},</if>
<if test="carType != null">#{carType},</if>
<if test="carNum != null">#{carNum},</if>
<if test="multiVehicle != null">#{multiVehicle},</if>
<if test="direction != null">#{direction},</if>
<if test="stakeMark != null">#{stakeMark},</if>
<if test="weather != null">#{weather},</if>
</trim>
</insert>
<insert id="batchInsert">
insert into dc_sdhs_event(road,dept,event_type,start_time,end_time,status,source,title,event_subclass,car_type,car_num,multi_vehicle,direction,stake_mark,weather) values
<foreach item="item" index="index" collection="list" separator=",">
(#{item.road},#{item.dept},#{item.eventType},#{item.startTime},#{item.endTime},#{item.status},#{item.source},#{item.title},#{item.eventSubclass},#{item.carType},#{item.carNum},#{item.multiVehicle},#{item.direction},#{item.stakeMark},#{item.weather})
</foreach>
</insert>
<update id="updateDcSdhsEvent" parameterType="DcSdhsEvent">
update dc_sdhs_event
<trim prefix="SET" suffixOverrides=",">
<if test="road != null">road = #{road},</if>
<if test="dept != null">dept = #{dept},</if>
<if test="eventType != null">event_type = #{eventType},</if>
<if test="startTime != null">start_time = #{startTime},</if>
<if test="endTime != null">end_time = #{endTime},</if>
<if test="status != null">status = #{status},</if>
<if test="source != null">source = #{source},</if>
<if test="title != null">title = #{title},</if>
<if test="eventSubclass != null">event_subclass = #{eventSubclass},</if>
<if test="carType != null">car_type = #{carType},</if>
<if test="carNum != null">car_num = #{carNum},</if>
<if test="multiVehicle != null">multi_vehicle = #{multiVehicle},</if>
<if test="direction != null">direction = #{direction},</if>
<if test="stakeMark != null">stake_mark = #{stakeMark},</if>
<if test="weather != null">weather = #{weather},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteDcSdhsEventById" parameterType="Long">
delete from dc_sdhs_event where id = #{id}
</delete>
<delete id="deleteDcSdhsEventByIds" parameterType="String">
delete from dc_sdhs_event where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<delete id="deleteByTimeRange">
delete from dc_sdhs_event
where start_time >= #{startTime} and start_time &lt;= #{endTime}
</delete>
</mapper>
Loading…
Cancel
Save