diff --git a/zc-business/src/main/java/com/zc/business/controller/DcWarningController.java b/zc-business/src/main/java/com/zc/business/controller/DcWarningController.java index 73ab8965..2c5caa34 100644 --- a/zc-business/src/main/java/com/zc/business/controller/DcWarningController.java +++ b/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); + } } diff --git a/zc-business/src/main/java/com/zc/business/enums/ValueConverter.java b/zc-business/src/main/java/com/zc/business/enums/ValueConverter.java new file mode 100644 index 00000000..9cdaa8f9 --- /dev/null +++ b/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 valueMappingHost = new HashMap<>(); + // 静态映射,用于存储转换关系 事件子类转换 + private static final Map valueMappingSon = new HashMap<>(); + // 静态映射,用于存储转换关系 事件源转换 + private static final Map 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 getValueMappingHost() { + return ValueMappingHolder.valueMappingHost; + } + public static Map getValueMappingSon() { + return ValueMappingHolder.valueMappingSon; + } + public static Map getValueMappingSource() { + return ValueMappingHolder.valueMappingSource; + } + /** + * 根据输入值返回转换后的值 + * 如果输入值不在映射中,则返回输入值本身 + * @param inputValue 输入值 + * @return 转换后的值或输入值本身 + */ + public static int convertValueHost(int inputValue) { + Map mapping = getValueMappingHost(); + return mapping.getOrDefault(inputValue, inputValue); + } + public static String convertValueSon(String inputValue) { + Map mapping = getValueMappingSon(); + return mapping.getOrDefault(inputValue, inputValue); + } + public static int convertValueSource(int inputValue) { + Map mapping = getValueMappingSource(); + return mapping.getOrDefault(inputValue, inputValue); + } + //测试 +// @Test +// public void text(){ +// String i="1-1"; +// String i1 = ValueConverter.convertValueSon(i); +// System.out.println(i1+"--------------"); +// } + +} diff --git a/zc-business/src/main/java/com/zc/business/mapper/DcWarningMapper.java b/zc-business/src/main/java/com/zc/business/mapper/DcWarningMapper.java index 672b67ea..80a6bb79 100644 --- a/zc-business/src/main/java/com/zc/business/mapper/DcWarningMapper.java +++ b/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); } diff --git a/zc-business/src/main/java/com/zc/business/service/IDcEventService.java b/zc-business/src/main/java/com/zc/business/service/IDcEventService.java index 4afceb8d..2b84d839 100644 --- a/zc-business/src/main/java/com/zc/business/service/IDcEventService.java +++ b/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); /** * 修改事件信息 * diff --git a/zc-business/src/main/java/com/zc/business/service/IDcWarningService.java b/zc-business/src/main/java/com/zc/business/service/IDcWarningService.java index 04974ba4..15bde850 100644 --- a/zc-business/src/main/java/com/zc/business/service/IDcWarningService.java +++ b/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); } diff --git a/zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java b/zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java index c83f4be3..5c502f16 100644 --- a/zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java +++ b/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; + } + } + /** * 修改事件信息 * diff --git a/zc-business/src/main/java/com/zc/business/service/impl/DcWarningServiceImpl.java b/zc-business/src/main/java/com/zc/business/service/impl/DcWarningServiceImpl.java index fd980029..95a53e6f 100644 --- a/zc-business/src/main/java/com/zc/business/service/impl/DcWarningServiceImpl.java +++ b/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("操作成功"); + } + } diff --git a/zc-business/src/main/resources/mapper/business/DcWarningMapper.xml b/zc-business/src/main/resources/mapper/business/DcWarningMapper.xml index bfa23b42..40cae765 100644 --- a/zc-business/src/main/resources/mapper/business/DcWarningMapper.xml +++ b/zc-business/src/main/resources/mapper/business/DcWarningMapper.xml @@ -137,6 +137,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} + + update dc_warning set warning_state=2 where id=#{id} + delete from dc_warning where id = #{id}