Browse Source

事件 主页推送 WebSocket

develop
王兴琳 11 months ago
parent
commit
8e13acabbf
  1. 4
      zc-business/src/main/java/com/zc/business/controller/DcEventController.java
  2. 6
      zc-business/src/main/java/com/zc/business/enums/EventSubclassEnum.java
  3. 2
      zc-business/src/main/java/com/zc/business/enums/WarningSubclassEnum.java
  4. 34
      zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java
  5. 36
      zc-business/src/main/java/com/zc/business/service/impl/DcWarningServiceImpl.java

4
zc-business/src/main/java/com/zc/business/controller/DcEventController.java

@ -6,6 +6,7 @@ import javax.servlet.http.HttpServletResponse;
import com.zc.business.domain.DcEvent;
import com.zc.business.service.IDcEventService;
import com.zc.common.core.websocket.WebSocketService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@ -94,6 +95,7 @@ public class DcEventController extends BaseController
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id)
{
DcEvent dcEvent = dcEventService.selectDcEventById(id);
return AjaxResult.success(dcEvent);
}
@ -122,10 +124,8 @@ public class DcEventController extends BaseController
//@PreAuthorize("@ss.hasPermi('system:event:add')")
@Log(title = "事件信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody DcEvent dcEvent)
{
return toAjax(dcEventService.insertDcEvent(dcEvent));
}

6
zc-business/src/main/java/com/zc/business/enums/EventSubclassEnum.java

@ -11,6 +11,12 @@ public enum EventSubclassEnum {
NATURAL("1-4", "自然","前方*发生自然现象请注意"),
OTHER_ACCIDENTS("1-5", "其他事故","前方*发生事故谨慎驾驶"),
VEHICLE_MALFUNCTION("2-1", "车辆故障","前方*发生故障注意避让"),
THE_MAIN_LINE_IS_CLOSED_AND_RESTRICTED("3-1", "主线封闭和限行","前方*主线封闭和限行"),
TOLL_BOOTHS_ARE_CLOSED_AND_RESTRICTED("3-2", "收费站封闭和限行","前方*收费站封闭和限行"),
THE_INTERCHANGE_IS_CLOSED_AND_RESTRICTED("3-3", "立交封闭和限行","前方*立交封闭和限行"),
THE_SERVICE_AREA_IS_CLOSED_AND_RESTRICTED("3-4", "服务区封闭和限行","前方*服务区封闭和限行"),
ROAD_CONGESTION("4-1", "道路拥堵","前方*道路拥堵"),
OVERPASS_CONGESTION("4-2", "立交拥堵","前方*立交拥堵"),
TOLL_STATION_CONGESTION("4-3", "收费站拥堵","前方*收费站拥堵"),

2
zc-business/src/main/java/com/zc/business/enums/WarningSubclassEnum.java

@ -27,7 +27,7 @@ public enum WarningSubclassEnum {
EMERGENCY_LANE_BLOCKED("4-7", "应急车道被占用", "发生"),
VEHICLE_EXIT_EMERGENCY_LANE("4-8", "车离开应急车道", "发生"),
OTHER_CONDITION("4-9", "其他", "发生停车"),
OTHER_UNKNOWN("4-10", "未知车", "发生停车"),
OTHER_UNKNOWN("4-10", "未知车", "发生停车"),
REVERSING_OR_GOING_BACKWARDS("5-1", "倒车/逆行", "发生"),
LINEBALL("5-2", "压线", "发生压线"),
TURNROUND("5-3", "掉头", "发生掉头"),

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

@ -12,6 +12,7 @@ import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.service.ISysDeptService;
import com.sun.xml.bind.v2.TODO;
import com.zc.business.domain.*;
import com.zc.business.enums.EventSubclassEnum;
import com.zc.business.enums.ValueConverter;
import com.zc.business.mapper.*;
import com.zc.business.service.IDcEventProcessService;
@ -19,6 +20,7 @@ import com.zc.business.service.IDcEventService;
import com.zc.business.service.IMiddleDatabaseService;
import com.zc.business.utils.diff.Diff;
import com.zc.business.utils.diff.model.Result;
import com.zc.common.core.websocket.WebSocketService;
import org.junit.Test;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
@ -80,7 +82,9 @@ public class DcEventServiceImpl extends ServiceImpl<DcEventMapper, DcEvent> impl
@Autowired
private IDcEventProcessService dcEventProcessService;
private final String HAPPEN = "发生";
private final String EVENT = "事件";
private final String SUBEVENT = "0";
/**
* 查询事件信息
*
@ -187,6 +191,9 @@ public class DcEventServiceImpl extends ServiceImpl<DcEventMapper, DcEvent> impl
int i7 = dcEventMapper.insertDcEvent(dcEvent);
if (i7>0 && eventType != 3){
extracted(dcEvent);//事件推送到 首页
}
if (i7 > 0) {
if (dcEvent.getDcEventTrafficControl().getFacilityIds().length<1 &&dcEventId == null){//非 事件处置 和收费站等多条数据添加
@ -295,6 +302,7 @@ if (dcEvent.getDcEventTrafficControl().getFacilityIds().length<1 &&dcEventId ==
dcEvent.setStakeMark(extracted(facilityId));
}
dcEventMapper.insertDcEvent(dcEvent);
extracted(dcEvent);
//中间库
MdEvent mdEvent = new MdEvent(dcEvent);
middleDatabaseService.insertMiddleDatabaseEvent(mdEvent);
@ -350,7 +358,7 @@ if (dcEvent.getDcEventTrafficControl().getFacilityIds().length<1 &&dcEventId ==
middleDatabaseService.insertMiddleDatabaseEvent(mdEvent);
dcEventMapper.insertDcEvent(dcEvent);
extracted(dcEvent);
int i6 = dcEventTrafficControlMapper.insertDcEventTrafficControl(dcEvent.getDcEventTrafficControl());
}
}
@ -411,6 +419,28 @@ if (dcEvent.getDcEventTrafficControl().getFacilityIds().length<1 &&dcEventId ==
}
}
/**
* 推送 事件信息
* @param dcEvent
*/
private void extracted(DcEvent dcEvent) {
String direction = "";// 方向
String EventSubclass = "";// 事件类型
if (dcEvent.getDirection().equals("1")) {
direction="菏泽方向";
}else {
direction="济南方向";
}
for (EventSubclassEnum eventSubclass : EventSubclassEnum.values()) {
if (eventSubclass.getCode().equals(dcEvent.getEventSubclass())) {
EventSubclass=eventSubclass.getInfo();
break;
}
}
String content= direction+" " + dcEvent.getStakeMark()+" "+HAPPEN+EventSubclass+EVENT ;
WebSocketService.broadcast(SUBEVENT, content); //推送事件消息 0不是感知事件
}
//根据路网设施查询桩号
private String extracted(String facilityId) {
DcFacility facility = dcFacilityService.getFacility(facilityId);

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

@ -12,10 +12,12 @@ import com.zc.business.domain.DcWaringStrategy;
import com.zc.business.domain.DcWarning;
import com.zc.business.domain.DcWarningBatchConvert;
import com.zc.business.enums.ValueConverter;
import com.zc.business.enums.WarningSubclassEnum;
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 com.zc.common.core.websocket.WebSocketService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -47,7 +49,9 @@ public class DcWarningServiceImpl implements IDcWarningService
private IDcEventService dcEventService;
@Resource
private RedisCache redisCache;
private final String HAPPEN = "发生";
private final String EVENT = "事件";
private final String SUBEVENT = "1";
private static final String WARNINGSTRATEGY = "warningStrategy";//redis策略缓存的key
private static final String WARNINGDATA = "warningData:";//redis事件缓存的key
private static String JUDGE = "1"; //自定义判断参数,1为满足0为不满足
@ -123,6 +127,10 @@ public class DcWarningServiceImpl implements IDcWarningService
dcWarning.setEndTime(DateUtils.getObtainDateAfter(Integer.parseInt(strategyTime)));//注入过期时间
if (dataId==null){//如果不存在直接加入数据库,加入缓存,配置对应的缓存过期时间以及数据库过期时间
int insertDcWarning = dcWarningMapper.insertDcWarning(dcWarning);//加入数据库
//事件推送至 Websocket
extracted(dcWarning);
if (insertDcWarning==0){
return 0;
}
@ -136,6 +144,8 @@ public class DcWarningServiceImpl implements IDcWarningService
redisCache.deleteObject(WARNINGDATA+key);
String id = dcWarning.getId();
redisCache.setCacheObject(WARNINGDATA+key,id,Integer.parseInt(strategyTime),TimeUnit.MINUTES);
//事件推送至 Websocket
extracted(dcWarning);
return dcWarningMapper.insertDcWarning(dcWarning);
}
String otherConfig="";
@ -164,9 +174,33 @@ public class DcWarningServiceImpl implements IDcWarningService
redisCache.setCacheObject(WARNINGDATA+key,dataId,Integer.parseInt(strategyTime),TimeUnit.MINUTES);//重新设置延迟时间
return dcWarningMapper.updateOtherConfig(dataId, jsonObject.toString(),dcWarning.getEndTime());//修改数据库配置
}
//事件推送至 Websocket
extracted(dcWarning);
return dcWarningMapper.insertDcWarning(dcWarning);//如果没有配置策略直接加入数据库;
}
/**
* 事件推送至 Websocket
* @param dcWarning
*/
private void extracted(DcWarning dcWarning) {
String direction = "";// 方向
String EventSubclass = "";// 事件类型
if (dcWarning.getDirection().equals("1")) {
direction="菏泽方向";
}else {
direction="济南方向";
}
for (WarningSubclassEnum eventSubclass : WarningSubclassEnum.values()) {
if (eventSubclass.getCode().equals(dcWarning.getWarningSubclass())) {
EventSubclass=eventSubclass.getInfo();
break;
}
}
String content= direction+" " + dcWarning.getStakeMark()+" "+HAPPEN+EventSubclass+EVENT ;
WebSocketService.broadcast(SUBEVENT, content); //推送事件消息 0不是感知事件
}
//优先级策略(还差优先级策略需要配置)
// public int priority(DcWarning dcWarning){
// dcWarning.setCreateTime(DateUtils.getNowDate());

Loading…
Cancel
Save