diff --git a/zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java b/zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java index 333b406d..4f2d858e 100644 --- a/zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java +++ b/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 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)); + } } diff --git a/zc-business/src/main/java/com/zc/business/domain/DcSdhsEvent.java b/zc-business/src/main/java/com/zc/business/domain/DcSdhsEvent.java index 1ea35a4c..b1cca730 100644 --- a/zc-business/src/main/java/com/zc/business/domain/DcSdhsEvent.java +++ b/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; } diff --git a/zc-business/src/main/java/com/zc/business/mapper/DcSdhsEventMapper.java b/zc-business/src/main/java/com/zc/business/mapper/DcSdhsEventMapper.java new file mode 100644 index 00000000..b8cab80a --- /dev/null +++ b/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 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 selectTimeList(); + + /** + * 批量插入 + * + * @param + * @return 结果 + */ + public boolean batchInsert(List dcSdhsEventList); + + boolean deleteByTimeRange(String startTime, String endTime); +} diff --git a/zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java b/zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java index 795f4168..b1a826df 100644 --- a/zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java +++ b/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 > trafficFlowStatistics(DcSdhsEventQuery dcSdhsEventQuery); + + /** + * 查询高速云事件 + * + * @param id 高速云事件主键 + * @return 高速云事件 + */ + public DcSdhsEvent selectDcSdhsEventById(Long id); + + /** + * 查询高速云事件列表 + * + * @param dcSdhsEvent 高速云事件 + * @return 高速云事件集合 + */ + List 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); } diff --git a/zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java b/zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java index a598f939..caa49a3e 100644 --- a/zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java +++ b/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 eventCache = redisCache.getCacheList(RedisKeyConstants.SDHS_EVENT); - if (eventCache != null && eventCache.size() > 0){ - Set oldStartTime = new HashSet<>(); - eventCache.forEach(item -> { - oldStartTime.add(item.getStartTime()); - }); - - if (importData != null && importData.size() > 0) { - - List duplicateData = new ArrayList<>(); - for (DcSdhsEvent importDatum : importData) { - if (oldStartTime.contains(importDatum.getStartTime())){ - duplicateData.add(importDatum.getStartTime()); - } + List timeList = dcSdhsEventMapper.selectTimeList(); + if (timeList != null && timeList.size() > 0 && importData != null && importData.size() > 0){ + List 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 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 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 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 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); + } } diff --git a/zc-business/src/main/resources/mapper/business/DcSdhsEventMapper.xml b/zc-business/src/main/resources/mapper/business/DcSdhsEventMapper.xml new file mode 100644 index 00000000..e4eab739 --- /dev/null +++ b/zc-business/src/main/resources/mapper/business/DcSdhsEventMapper.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + 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, + + + #{road}, + #{dept}, + #{eventType}, + #{startTime}, + #{endTime}, + #{status}, + #{source}, + #{title}, + #{eventSubclass}, + #{carType}, + #{carNum}, + #{multiVehicle}, + #{direction}, + #{stakeMark}, + #{weather}, + + + + + 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 + + (#{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}) + + + + + update dc_sdhs_event + + road = #{road}, + dept = #{dept}, + event_type = #{eventType}, + start_time = #{startTime}, + end_time = #{endTime}, + status = #{status}, + source = #{source}, + title = #{title}, + event_subclass = #{eventSubclass}, + car_type = #{carType}, + car_num = #{carNum}, + multi_vehicle = #{multiVehicle}, + direction = #{direction}, + stake_mark = #{stakeMark}, + weather = #{weather}, + + where id = #{id} + + + + delete from dc_sdhs_event where id = #{id} + + + + delete from dc_sdhs_event where id in + + #{id} + + + + delete from dc_sdhs_event + where start_time >= #{startTime} and start_time <= #{endTime} + + \ No newline at end of file