Browse Source

感知事件与交通事件转换

develop
wangsixiang 1 year ago
parent
commit
3a27b57b73
  1. 7
      zc-business/src/main/java/com/zc/business/controller/DcWarningController.java
  2. 113
      zc-business/src/main/java/com/zc/business/enums/ValueConverter.java
  3. 2
      zc-business/src/main/java/com/zc/business/mapper/DcWarningMapper.java
  4. 2
      zc-business/src/main/java/com/zc/business/service/IDcEventService.java
  5. 4
      zc-business/src/main/java/com/zc/business/service/IDcWarningService.java
  6. 89
      zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java
  7. 58
      zc-business/src/main/java/com/zc/business/service/impl/DcWarningServiceImpl.java
  8. 3
      zc-business/src/main/resources/mapper/business/DcWarningMapper.xml

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

@ -107,4 +107,11 @@ public class DcWarningController extends BaseController
{
return toAjax(dcWarningService.deleteDcWarningByIds(ids));
}
//感知事件转交通事件
@PostMapping("/updateWarningConvert")
public AjaxResult updateWarningConvert(@RequestBody DcWarning dcWarning)
{
return dcWarningService.updateWarningConvert(dcWarning);
}
}

113
zc-business/src/main/java/com/zc/business/enums/ValueConverter.java

@ -0,0 +1,113 @@
package com.zc.business.enums;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
/**
* @author 王思祥
* @ClassName ValueConverter
*/
//感知事件与交通主子类转换
public class ValueConverter {
//懒加载类来实现延迟初始化
private static class ValueMappingHolder {
// 静态映射,用于存储转换关系 事件主类转换
private static final Map<Integer, Integer> valueMappingHost = new HashMap<>();
// 静态映射,用于存储转换关系 事件子类转换
private static final Map<String, String> valueMappingSon = new HashMap<>();
// 静态映射,用于存储转换关系 事件源转换
private static final Map<Integer, Integer> valueMappingSource = new HashMap<>();
static {
valueMappingSource.put(1,5);
valueMappingSource.put(4,7);
valueMappingSource.put(7,7);
valueMappingSource.put(2,7);
valueMappingSource.put(3,7);
valueMappingSource.put(5,7);
valueMappingSource.put(6,7);
valueMappingHost.put(1, 4);
valueMappingHost.put(2, 5);
valueMappingHost.put(3, 5);
valueMappingHost.put(4, 2);
valueMappingHost.put(5, 11);
valueMappingHost.put(6, 6);
valueMappingHost.put(7, 6);
valueMappingHost.put(8, 10);
valueMappingHost.put(9, 1);
valueMappingSon.put("1-1", "4-1");
valueMappingSon.put("1-2", "4-1");
valueMappingSon.put("2-1", "5-1");
valueMappingSon.put("2-2", "5-1");
valueMappingSon.put("3-1", "5-3");
valueMappingSon.put("3-2", "5-2");
valueMappingSon.put("3-3", "5-2");
valueMappingSon.put("4-1", "2-1");
valueMappingSon.put("4-2", "2-1");
valueMappingSon.put("4-3", "2-1");
valueMappingSon.put("4-4", "2-1");
valueMappingSon.put("4-5", "2-1");
valueMappingSon.put("4-6", "2-1");
valueMappingSon.put("4-7", "2-1");
valueMappingSon.put("4-8", "2-1");
valueMappingSon.put("4-9", "2-1");
valueMappingSon.put("5-1", "11-1");
valueMappingSon.put("6-1", "6-1");
valueMappingSon.put("7-1", "6-3");
valueMappingSon.put("8-1", "10-1");
valueMappingSon.put("8-2", "10-9");
valueMappingSon.put("8-3", "10-4");
valueMappingSon.put("8-4", "10-3");
valueMappingSon.put("8-5", "10-9");
valueMappingSon.put("8-6", "10-8");
valueMappingSon.put("8-7", "10-9");
valueMappingSon.put("8-8", "10-7");
valueMappingSon.put("8-9", "10-9");
valueMappingSon.put("8-10", "10-3");
valueMappingSon.put("9-1", "1-3");
valueMappingSon.put("9-2", "1-3");
valueMappingSon.put("9-3", "1-3");
}
}
// 提供一个静态方法来获取映射关系
public static Map<Integer, Integer> getValueMappingHost() {
return ValueMappingHolder.valueMappingHost;
}
public static Map<String, String> getValueMappingSon() {
return ValueMappingHolder.valueMappingSon;
}
public static Map<Integer, Integer> getValueMappingSource() {
return ValueMappingHolder.valueMappingSource;
}
/**
* 根据输入值返回转换后的值
* 如果输入值不在映射中则返回输入值本身
* @param inputValue 输入值
* @return 转换后的值或输入值本身
*/
public static int convertValueHost(int inputValue) {
Map<Integer, Integer> mapping = getValueMappingHost();
return mapping.getOrDefault(inputValue, inputValue);
}
public static String convertValueSon(String inputValue) {
Map<String, String> mapping = getValueMappingSon();
return mapping.getOrDefault(inputValue, inputValue);
}
public static int convertValueSource(int inputValue) {
Map<Integer, Integer> mapping = getValueMappingSource();
return mapping.getOrDefault(inputValue, inputValue);
}
//测试
// @Test
// public void text(){
// String i="1-1";
// String i1 = ValueConverter.convertValueSon(i);
// System.out.println(i1+"--------------");
// }
}

2
zc-business/src/main/java/com/zc/business/mapper/DcWarningMapper.java

@ -61,4 +61,6 @@ public interface DcWarningMapper
*/
int deleteDcWarningByIds(Integer[] ids);
int selectCount();
//修改感知事件状态为已完成
int updateState(String id,Long userId);
}

2
zc-business/src/main/java/com/zc/business/service/IDcEventService.java

@ -37,7 +37,7 @@ public interface IDcEventService
* @return 结果
*/
public int insertDcEvent(DcEvent dcEvent);
public int insertDcEventWarning(DcEvent dcEvent);
/**
* 修改事件信息
*

4
zc-business/src/main/java/com/zc/business/service/IDcWarningService.java

@ -3,6 +3,7 @@ package com.zc.business.service;
import java.util.HashMap;
import java.util.List;
import com.ruoyi.common.core.domain.AjaxResult;
import com.zc.business.domain.DcWarning;
/**
@ -61,4 +62,7 @@ public interface IDcWarningService
* @return 结果
*/
int deleteDcWarningById(Integer id);
//感知事件转交通事件
AjaxResult updateWarningConvert(DcWarning dcWarning);
}

89
zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java

@ -211,6 +211,95 @@ public class DcEventServiceImpl implements IDcEventService {
}
}
@Override
public int insertDcEventWarning(DcEvent dcEvent) {
//设置事件Id UUID无下划线格式32
String uuid = dcEvent.getId();
int i7 = dcEventMapper.insertDcEvent(dcEvent);
if (i7 > 0) {
//中间库
MdEvent mdEvent = new MdEvent(dcEvent);
middleDatabaseService.insertMiddleDatabaseEvent(mdEvent);
//获取事件类型
int eventType = Math.toIntExact(dcEvent.getEventType());
switch (eventType) {
//交通事故
case 1:
if (dcEvent.getDcEventAccident() != null) {
dcEvent.getDcEventAccident().setId(uuid);
int i1 = dcEventAccidentMapper.insertDcEventAccident(dcEvent.getDcEventAccident());
}
break;
//车辆事故
case 2:
if (dcEvent.getDcEventVehicleAccident()!=null){
dcEvent.getDcEventVehicleAccident().setId(uuid);
int i5 = dcEventVehicleAccidentMapper.insertDcEventVehicleAccident(dcEvent.getDcEventVehicleAccident());
}
break;
//交通管制
case 3:
if (dcEvent.getDcEventTrafficControl()!=null){
dcEvent.getDcEventTrafficControl().setId(uuid);
int i6 = dcEventTrafficControlMapper.insertDcEventTrafficControl(dcEvent.getDcEventTrafficControl());
}
break;
//交通拥堵
case 4:
if (dcEvent.getDcEventTrafficCongestion()!=null){
dcEvent.getDcEventTrafficCongestion().setId(uuid);
int i4 = dcEventTrafficCongestionMapper.insertDcEventTrafficCongestion(dcEvent.getDcEventTrafficCongestion());
}
break;
//非法上路
case 5:
break;
//路障清除
case 6:
break;
//施工建设
case 7:
if (dcEvent.getDcEventConstruction()!=null){
dcEvent.getDcEventConstruction().setId(uuid);
int i2 = dcEventConstructionMapper.insertDcEventConstruction(dcEvent.getDcEventConstruction());
}
break;
//服务区异常
case 8:
if (dcEvent.getDcEventServiceArea()!=null){
dcEvent.getDcEventServiceArea().setId(uuid);
int i3 = dcEventServiceAreaMapper.insertDcEventServiceArea(dcEvent.getDcEventServiceArea());
}
break;
//设施设备隐患
case 9:
break;
//异常天气
case 10:
if (dcEvent.getDcEventAbnormalWeather()!=null){
dcEvent.getDcEventAbnormalWeather().setId(uuid);
int i = dcEventAbnormalWeatherMapper.insertDcEventAbnormalWeather(dcEvent.getDcEventAbnormalWeather());
}
break;
//其他事件
case 11:
break;
//
default:
break;
}
return i7;
} else {
return -1;
}
}
/**
* 修改事件信息
*

58
zc-business/src/main/java/com/zc/business/service/impl/DcWarningServiceImpl.java

@ -1,15 +1,23 @@
package com.zc.business.service.impl;
import java.util.HashMap;
import java.util.List;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.zc.business.domain.DcEvent;
import com.zc.business.domain.DcWarning;
import com.zc.business.enums.ValueConverter;
import com.zc.business.mapper.DcEventMapper;
import com.zc.business.mapper.DcWarningMapper;
import com.zc.business.service.IDcEventService;
import com.zc.business.service.IDcWarningService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.zc.business.domain.DcWarning;
import com.zc.business.service.IDcWarningService;
import java.util.HashMap;
import java.util.List;
/**
* 预警信息Service业务层处理
@ -22,7 +30,11 @@ public class DcWarningServiceImpl implements IDcWarningService
{
@Autowired
private DcWarningMapper dcWarningMapper;
//事件
@Autowired
private DcEventMapper dcEventMapper;
@Autowired
private IDcEventService dcEventService;
/**
* 查询预警信息
*
@ -104,4 +116,40 @@ public class DcWarningServiceImpl implements IDcWarningService
{
return dcWarningMapper.deleteDcWarningById(id);
}
//感知事件转交通事件(感知事件状态改为处置中,把感知事件的数据整理新增到交通事件)
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult updateWarningConvert(DcWarning dcWarning) {
if (dcWarning==null||dcWarning.getId()==null|| StringUtils.isBlank(dcWarning.getStakeMark())||
StringUtils.isBlank(dcWarning.getDirection())||dcWarning.getDeptId()==null){
return AjaxResult.error("参数错误");
}
int updateState = dcWarningMapper.updateState(dcWarning.getId(),SecurityUtils.getUserId());//感知事件状态改变为已完成
if (updateState==0){
return AjaxResult.error("操作失败");
}
DcEvent dcEvent = new DcEvent();
dcEvent.setId(dcWarning.getId());//id
dcEvent.setStakeMark(dcWarning.getStakeMark());//桩号
dcEvent.setDirection(dcWarning.getDirection());//方向
dcEvent.setDeptId(dcWarning.getDeptId());//部门
dcEvent.setOccurrenceTime(dcWarning.getWarningTime());//预警时间
dcEvent.setEventLevel(dcWarning.getWarningLevel().longValue());//事件等级
dcEvent.setEventSource((long)ValueConverter.convertValueSource(dcWarning.getWarningSource()));//事件来源
dcEvent.setEventType((long)ValueConverter.convertValueHost(dcWarning.getWarningType()));//事件主类
dcEvent.setEventSubclass(ValueConverter.convertValueSon(dcWarning.getWarningSubclass()));//事件子类
dcEvent.setEventTitle(dcWarning.getWarningTitle());//标题
dcEvent.setLang(dcWarning.getLane());//车道
dcEvent.setRemark(dcEvent.getRemark());//备注
dcEvent.setIsPerceived(1);//是否感知事件
dcEvent.setEventState(Long.valueOf(1));//状态为处理中
dcEvent.setCreateTime(DateUtils.getNowDate());//创建时间
dcEvent.setUserId(SecurityUtils.getUserId());//处置人员
int insertDcEvent = dcEventService.insertDcEventWarning(dcEvent);
if (insertDcEvent==0){
return AjaxResult.error("操作失败");
}
return AjaxResult.success("操作成功");
}
}

3
zc-business/src/main/resources/mapper/business/DcWarningMapper.xml

@ -137,6 +137,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim>
where id = #{id}
</update>
<update id="updateState">
update dc_warning set warning_state=2 where id=#{id}
</update>
<delete id="deleteDcWarningById" parameterType="Integer">
delete from dc_warning where id = #{id}

Loading…
Cancel
Save