Commit 38abe07b authored by duanruiming's avatar duanruiming

[update] 运行状态

parent afb55782
......@@ -21,11 +21,13 @@ public class Constants {
public static final String COMMAND_QUERY_REPLY = "20";
public static final String COMMAND_PHASE_CONFIG = "0402";
public static final String COMMAND_LIGHT_CONFIG = "0302";
public static final String COMMAND_LIGHT_STATUS = "0303";
public static final String COMMAND_PHASE_STAGE_CONFIG = "0602";
public static final String COMMAND_SCHME_CONFIG = "0902";
public static final String COMMAND_DAILYPLAN_CONFIG = "0b02";
public static final String COMMAND_SCHEDULE_CONFIG = "0c02";
public static final String COMMAND_RUNNING_STATUS = "0d02";
public static final String COMMAND_FAULT_LIST = "1002";
......
......@@ -14,6 +14,7 @@ public enum CommandResultSign {
GET_DEVICE_INFO("2001", "getDeviceInfoService"),
GET_SIGNAL_BASE_INFO("2002","getBaseInfoService"),
GET_LIGHTS_GROUP_INFO("030220", "getLightsGroupInfoService"),
GET_LIGHTS_STATUS_INFO("030320", "getLightsStatusInfoService"),
GET_PHASE_INFO("040220", "getPhaseInfoService"),
GET_DETECTOR_INFO("2005", "getDetectorInfoService"),
GET_STAGE_INFO("060220", "getStageInfoService"),
......@@ -24,7 +25,7 @@ public enum CommandResultSign {
GET_RUNNING_STATE_INFO("0d0220", "getRunningStateInfoService"),
GET_TRAFFIC_DATA_INFO("2014", "getTrafficDataInfoService"),
GET_ALARM_INFO("2015", "getAlarmInfoService"),
GET_FAULT_INFO("2016", "getFaultInfoService"),
GET_FAULT_INFO("100220", "getFaultInfoService"),
SET_DEVICE_INFO("3001", "setDeviceInfoService"),
SET_SIGNAL_BASE_INFO("3002","setBaseInfoService"),
......
......@@ -44,6 +44,7 @@ public class SignalStatusController {
})
public JsonViewObject runningStatusAlarm() {
List<SignalStatusLogPO> signalStatusLogPOList = signalStatusService.runningStatusAlarm();
signalStatusService.runningStatusAlarm("12F7L08J8S0");
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(signalStatusLogPOList);
......
......@@ -22,7 +22,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.ws.rs.core.MediaType;
import java.util.Objects;
/**
* 静态信息接口
......@@ -47,12 +46,8 @@ public class StaticInfoController {
@ApiResponse(code = 200, message = "OK", response = SchemePhaseLightsVO.class)
})
public JsonViewObject schemePhaseLights(@RequestBody @Validated SchemePhaseLightsDTO schemePhaseLightsDTO) throws Exception {
// 命令调用
staticInfoService.schemePhaseLights(schemePhaseLightsDTO);
// 构造返回值
SchemePhaseLightsVO schemePhaseLightsVO = staticInfoService.buildSchemePhaseLightsResponse(schemePhaseLightsDTO);
SchemePhaseLightsVO schemePhaseLightsVO = staticInfoService.schemePhaseLights(schemePhaseLightsDTO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(schemePhaseLightsVO);
}
......@@ -67,20 +62,9 @@ public class StaticInfoController {
public JsonViewObject planSection(@RequestBody @Validated PlanSectionDTO planSectionDTO) throws Exception {
// 命令调用
staticInfoService.planSection(planSectionDTO);
// 构造返回值
String crossId = planSectionDTO.getCrossId();
Integer planNo = planSectionDTO.getPlanNo();
PlanSectionVO planSectionVO = new PlanSectionVO();
if (Objects.isNull(planNo) || planNo == -1) {
// 返回所有
planSectionVO = staticInfoService.buildPlanSectionResponse(crossId);
} else {
// 按计划号返回
planSectionVO = staticInfoService.buildPlanSectionResponse(crossId, planNo);
}
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(planSectionVO);
return jsonViewObject.success(null);
}
@AspectLog(description = "时间表数据", operationType = BaseEnum.OperationTypeEnum.QUERY)
......
package net.wanji.com.netty.response.impl.get;
import net.wanji.com.netty.pojo.CommandPojo;
import net.wanji.com.netty.response.CommandResponseFactory;
import org.springframework.stereotype.Service;
/**
* @author duanruiming
* @date 2023/06/16 9:45
*/
@Service
public class GetLightsStatusInfoService implements CommandResponseFactory {
@Override
public String getCommandResponse(CommandPojo commandPojo) {
return commandPojo.getResponseMsg();
}
}
......@@ -11,7 +11,7 @@ import java.util.List;
@Data
public class DailyPlanInfoPojo {
private Integer dailyPlanId;
private Integer crossId;
private Integer controlCrossId;
private List<String> startTimeChain;
private List<Integer> schemeIdChain;
private List<Integer> controlModelChain;
......
package net.wanji.com.pojo.dtconvert;
import lombok.Data;
/**
* @author duanruiming
* @date 2023/06/16 8:43
*/
@Data
public class FaultInfoPojo {
}
......@@ -11,4 +11,39 @@ public class LightsInfoPojo {
private Integer lightId;
// 1-机动车 2-非机动车 3-行人 4-车道 5-可变交通标志 6-公交车灯具 7-有轨电车专用灯 8-特殊灯
private Integer type;
public static Integer getLightsDir(Integer lightId) {
// 万集 灯组放行方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北
Integer dir = null;
if (lightId <= 4) {
dir = 1;
} else if (lightId <= 8) {
dir = 3;
} else if (lightId <= 12) {
dir = 5;
} else if (lightId <= 16) {
dir = 7;
}
return dir;
}
// 万集 灯组转向:1左转;2右转;3直行;4左掉头;5直左;6直右;7右掉头;8向左合流;9向右合流;10左转加掉头;11右转加掉头;
// 12直行加左掉头;13直行加右掉头;14左转右转;15左直右;16左转右转加掉头;17左直掉头;18左直右掉头;20行人
public static Integer getTurnDir(Integer lightId, Integer type) {
Integer turnDir = null;
if (type == 3) {
turnDir = 20;
return turnDir;
}
if (lightId % 4 == 1 && type ==1) {
turnDir = 1;
} else {
turnDir = 6;
}
return turnDir;
}
public static void main(String[] args) {
System.err.println(1 % 4 == 1);
}
}
......@@ -3,6 +3,9 @@ package net.wanji.com.pojo.dtconvert;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Objects;
/**
* @author duanruiming
* @date 2023/06/13 14:21
......@@ -12,14 +15,23 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class PhaseInfoPojo {
private Integer phaseId;
private Integer lights;
private Integer lightsId;
private Integer greenTime;
private Integer greenFlashTime;
private Integer yellowTime;
private Integer redTime;
private Integer yellowFlashTime;
private Integer redTime;
private Integer minGreenTime;
private Integer maxGreenTime;
private Integer maxGreenTime2;
private Integer extendGreenTime;
public static PhaseInfoPojo getPhaseInfoPojoByPhaseId(Integer phaseId, List<PhaseInfoPojo> phaseInfoPojos) {
for (PhaseInfoPojo phaseInfoPojo : phaseInfoPojos) {
if (Objects.equals(phaseInfoPojo.getPhaseId(), phaseId)) {
return phaseInfoPojo;
}
}
return null;
}
}
package net.wanji.com.pojo.dtconvert;
import lombok.Data;
/**
* @author duanruiming
* @date 2023/06/16 10:00
*/
@Data
public class RunningStatusPojo {
private Integer controlCrossId;
private String controlMode;
private Integer schemeId;
private Integer phaseStageId;
}
......@@ -11,7 +11,7 @@ import java.util.List;
@Data
public class ScheduleInfoPojo {
private Integer scheduleId;
private Integer crossId;
private Integer controlCrossId;
private Integer priority;
private List<Integer> week;
private List<Integer> month;
......
......@@ -2,7 +2,9 @@ package net.wanji.com.pojo.dtconvert;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @author duanruiming
......@@ -12,13 +14,37 @@ import java.util.List;
public class SchemeInfoPojo {
private Integer schemeId;
// 所属方案序号 一台信号机控制多路口时使用
private Integer crossId;
private Integer controlCrossId;
// 单位s
private Integer cycle;
// 方案协调序号 需要协调的相位序号
private Integer harmonizeId;
private Integer offset;
private List<Integer> phaseList;
private List<Integer> phaseTimeChain;
private List<Integer> phaseTypeChain;
private List<Integer> phaseStageChain;
private List<Integer> phaseStageTimeChain;
// 10 固定出现 20 检测器按需出现
private List<Integer> phaseStageTypeChain;
@Data
public static class SchemeStagePojo {
private Integer schemeId;
private Integer phaseStageId;
private Integer phaseStageTime;
private Integer phaseStageType;
}
public static List<SchemeStagePojo> getStageInfoList(SchemeInfoPojo schemeInfoPojo) {
if (Objects.nonNull(schemeInfoPojo)) {
List<SchemeStagePojo> schemeStagePojos = new ArrayList<>();
for (int i = 0; i < schemeInfoPojo.getPhaseStageChain().size(); i++) {
SchemeStagePojo schemeStagePojo = new SchemeStagePojo();
schemeStagePojo.setPhaseStageId(schemeInfoPojo.getPhaseStageChain().get(i));
schemeStagePojo.setPhaseStageTime(schemeInfoPojo.getPhaseStageTimeChain().get(i));
schemeStagePojo.setPhaseStageType(schemeInfoPojo.getPhaseStageTypeChain().get(i));
schemeStagePojos.add(schemeStagePojo);
}
return schemeStagePojos;
}
return null;
}
}
......@@ -21,11 +21,4 @@ public interface StaticInfoService extends BeanMarkService {
List<CrossSchedulesPO> crossSchedules(CrossSchedulesDTO crossSchedulesDTO) throws Exception;
SchemePhaseLightsVO buildSchemePhaseLightsResponse(SchemePhaseLightsDTO schemePhaseLightsDTO);
PlanSectionVO buildPlanSectionResponse(String crossId);
PlanSectionVO buildPlanSectionResponse(String crossId, Integer planNo);
List<CrossSchedulesPO> buildCrossSchedulesResponse(List<String> crossIdList);
}
package net.wanji.com.service.controller.impl;
import cn.hutool.core.util.HexUtil;
import net.wanji.com.cache.CrossInfoCache;
import net.wanji.com.common.constants.Constants;
import net.wanji.com.netty.NettyClient;
import net.wanji.com.pojo.dtconvert.FaultInfoPojo;
import net.wanji.com.pojo.dtconvert.RunningStatusPojo;
import net.wanji.com.pojo.netty.MessageResultPojo;
import net.wanji.com.service.controller.SignalStatusService;
import net.wanji.common.enums.BaseEnum;
import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.po.SignalStatusLogPO;
import net.wanji.databus.vo.LightsStatusVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @author duanruiming
......@@ -15,6 +27,9 @@ import java.util.List;
@Service
public class DTSignalStatusServiceImpl implements SignalStatusService {
@Resource
private CrossInfoCache crossInfoCache;
@Override
public String getBeanMark() {
return BaseEnum.VendorTypeEnum.DT.getNick();
......@@ -27,6 +42,88 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
@Override
public List<SignalStatusLogPO> runningStatusAlarm(String crossId) {
List<FaultInfoPojo> faultInfoPojos = getFaultInfoPojos(crossId);
List<String> lightsStatus = getLightsStausInfoPojos(crossId);
List<RunningStatusPojo> runningStatusPojos = getRunningStatusPojos(crossId);
return null;
}
private List<RunningStatusPojo> getRunningStatusPojos(String crossId) {
List<RunningStatusPojo> runningStatusPojos = new ArrayList<>();
CrossInfoPO crossInfoPO = crossInfoCache.getCrossInfoCache().get(crossId);
String message = String.format(Constants.COMMAND_COMMON, Constants.COMMAND_QUERY, Constants.COMMAND_RUNNING_STATUS);
String runningStatusSign = Constants.COMMAND_RUNNING_STATUS.concat(Constants.COMMAND_QUERY_REPLY);
String runnningStatusHex = Constants.buildMessage(message);
MessageResultPojo resultPojo = NettyClient.sendMessage(crossInfoPO.getIp(), crossInfoPO.getPort(), runnningStatusHex, runningStatusSign, 300);
if (Objects.nonNull(resultPojo) && StringUtils.isNotBlank(resultPojo.getHexMessageResult())) {
String hexMessageResult = resultPojo.getHexMessageResult();
String body = hexMessageResult.substring(32, hexMessageResult.length() - 2);
int size = body.length() / 14;
List<String> paramList = new ArrayList<>();
for (int i = 0; i < size; i++) {
String param = body.substring(i * 14 + 6, i * 14 + 10);
if (!StringUtils.equalsIgnoreCase("0000", param)) {
paramList.add(param);
}
}
for (int i = 0; i < paramList.size() / 4; i++) {
RunningStatusPojo runningStatusPojo = new RunningStatusPojo();
runningStatusPojo.setControlCrossId(HexUtil.hexToInt(paramList.get(i * 4)));
runningStatusPojo.setControlMode(paramList.get(i * 4 + 1));
runningStatusPojo.setSchemeId(HexUtil.hexToInt(paramList.get(i * 4 + 2)));
runningStatusPojo.setPhaseStageId(HexUtil.hexToInt(paramList.get(i * 4 + 3)));
runningStatusPojos.add(runningStatusPojo);
}
}
return runningStatusPojos;
}
private List<String> getLightsStausInfoPojos(String crossId) {
List<String> lightsStatusList = new ArrayList<>();
CrossInfoPO crossInfoPO = crossInfoCache.getCrossInfoCache().get(crossId);
String message = String.format(Constants.COMMAND_COMMON, Constants.COMMAND_QUERY, Constants.COMMAND_LIGHT_STATUS);
String lightStatusSign = Constants.COMMAND_LIGHT_STATUS.concat(Constants.COMMAND_QUERY_REPLY);
String lightStatusHex = Constants.buildMessage(message);
MessageResultPojo resultPojo = NettyClient.sendMessage(crossInfoPO.getIp(), crossInfoPO.getPort(), lightStatusHex, lightStatusSign, 300);
if (Objects.nonNull(resultPojo) && StringUtils.isNotBlank(resultPojo.getHexMessageResult())) {
String hexMessageResult = resultPojo.getHexMessageResult();
String body = hexMessageResult.substring(32, hexMessageResult.length() - 2);
int lightsStatusSize = body.length() / 14;
for (int i = 0; i < lightsStatusSize; i++) {
String param = body.substring(i * 14 + 8, i * 14 +10);
if (!StringUtils.equalsIgnoreCase("00", param)) {
lightsStatusList.add(param);
}
}
}
return lightsStatusList;
}
public static void main(String[] args) {
String message = String.format("010001000000010001%s010105%s020000", Constants.COMMAND_QUERY, Constants.COMMAND_FAULT_LIST);
String faultHex = Constants.buildMessage(message);
System.err.println(faultHex);
}
private List<FaultInfoPojo> getFaultInfoPojos(String crossId) {
CrossInfoPO crossInfoPO = crossInfoCache.getCrossInfoCache().get(crossId);
String message = String.format(Constants.COMMAND_COMMON, Constants.COMMAND_QUERY, Constants.COMMAND_FAULT_LIST);
String faultSign = Constants.COMMAND_FAULT_LIST.concat(Constants.COMMAND_QUERY_REPLY);
String faultHex = Constants.buildMessage(message);
MessageResultPojo resultPojo = NettyClient.sendMessage(crossInfoPO.getIp(), crossInfoPO.getPort(), faultHex, faultSign, 300);
List<FaultInfoPojo> faultInfoPojos = new ArrayList<>();
if (Objects.nonNull(resultPojo) && StringUtils.isNotBlank(resultPojo.getHexMessageResult())) {
String hexMessageResult = resultPojo.getHexMessageResult();
String body = hexMessageResult.substring(32, hexMessageResult.length() - 2);
int lightsStatusSize = body.length() / 14 * 64;
int paramIndex = 8;
for (int i = 0; i < lightsStatusSize; i++) {
String param = body.substring(paramIndex * i, paramIndex * i + 8);
}
}
return null;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment