Commit b8331bb4 authored by duanruiming's avatar duanruiming

[update] 下发相位

parent 7793515c
...@@ -43,26 +43,36 @@ public class DTControlCommandServiceImpl implements ControlCommandService { ...@@ -43,26 +43,36 @@ public class DTControlCommandServiceImpl implements ControlCommandService {
public JsonViewObject schemeSend(SchemeSendVO schemeSendVO) throws Exception { public JsonViewObject schemeSend(SchemeSendVO schemeSendVO) throws Exception {
String crossId = schemeSendVO.getCrossCode(); String crossId = schemeSendVO.getCrossCode();
CrossInfoPO crossInfoPO = crossInfoCache.getCrossInfoCache().get(crossId); CrossInfoPO crossInfoPO = crossInfoCache.getCrossInfoCache().get(crossId);
List<SchemeSendVO.Pattern> patternList = schemeSendVO.getPatternList(); List<SchemeSendVO.Pattern> schemeVOList = schemeSendVO.getPatternList();
StringBuilder sb = new StringBuilder(); setSchemePhaseStageInfo(crossInfoPO, schemeVOList);
for (SchemeSendVO.Pattern pattern : patternList) { return JsonViewObject.newInstance().success("下发成功异常");
sb.append(buidSchemeHex(pattern)); }
}
String bodyValueLeght = String.format("%02x", patternList.size() * 6); // 调度数量 * 属性数量 private void setSchemePhaseStageInfo(CrossInfoPO crossInfoPO, List<SchemeSendVO.Pattern> schemeVOList) {
String message = String.format(Constants.COMMAND_SET_COMMON, Constants.COMMAND_SET, bodyValueLeght, sb.toString()); setPhaseStageInfo(crossInfoPO, schemeVOList);
String schemeSign = StringUtils.join(Constants.COMMAND_SCHME_CONFIG, Constants.COMMAND_SET_REPLY); setSchemeInfo(crossInfoPO, schemeVOList);
String schemeMessageHex = Constants.buildMessage(message);
MessageResultPojo resultPojo = NettyClient.sendMessage(crossInfoPO.getIp(), crossInfoPO.getPort(), schemeMessageHex, schemeSign, 300); }
if (Objects.nonNull(resultPojo) && StringUtils.isNotBlank(resultPojo.getHexMessageResult())) {
return JsonViewObject.newInstance().success("下发方案成功"); private void setSchemeInfo(CrossInfoPO crossInfoPO, List<SchemeSendVO.Pattern> schemeVOList) {
for (SchemeSendVO.Pattern schemeVO : schemeVOList) {
String schemeNo = schemeVO.getPatternNo();
String cycle = schemeVO.getCycle();
String offset = schemeVO.getOffset();
List<SchemeSendVO.Pattern.Ring> rings = schemeVO.getRings();
for (SchemeSendVO.Pattern.Ring ring : rings) {
String ringNo = ring.getRingNo();
List<SchemeSendVO.Pattern.Ring.Phase> phaseList = ring.getPhaseList();
}
} }
return JsonViewObject.newInstance().success("下发方案异常");
} }
private String buidSchemeHex(SchemeSendVO.Pattern pattern) { private void setPhaseStageInfo(CrossInfoPO crossInfoPO, List<SchemeSendVO.Pattern> schemeVOList) {
return null;
} }
@Override @Override
public JsonViewObject planSend(PlanSendVO planSendVO) throws Exception { public JsonViewObject planSend(PlanSendVO planSendVO) throws Exception {
String crossId = planSendVO.getCrossCode(); String crossId = planSendVO.getCrossCode();
...@@ -72,6 +82,7 @@ public class DTControlCommandServiceImpl implements ControlCommandService { ...@@ -72,6 +82,7 @@ public class DTControlCommandServiceImpl implements ControlCommandService {
for (PlanSendVO.Plan plan : planList) { for (PlanSendVO.Plan plan : planList) {
sb.append(buidDailyPlanHex(plan)); sb.append(buidDailyPlanHex(plan));
} }
// 只下发有效计划返回报错
if (planList.size() < 8) { if (planList.size() < 8) {
for (int i = planList.size() + 1; i <= 8 - planList.size(); i++) { for (int i = planList.size() + 1; i <= 8 - planList.size(); i++) {
PlanSendVO.Plan plan = new PlanSendVO.Plan(); PlanSendVO.Plan plan = new PlanSendVO.Plan();
...@@ -282,9 +293,44 @@ public class DTControlCommandServiceImpl implements ControlCommandService { ...@@ -282,9 +293,44 @@ public class DTControlCommandServiceImpl implements ControlCommandService {
@Override @Override
public JsonViewObject phaseTimingSend(PhaseTimingSendVO phaseTimingSendVO) throws Exception { public JsonViewObject phaseTimingSend(PhaseTimingSendVO phaseTimingSendVO) throws Exception {
String crossId = phaseTimingSendVO.getCrossCode();
CrossInfoPO crossInfoPO = crossInfoCache.getCrossInfoCache().get(crossId);
List<PhaseTimingSendVO.Phase> phaseList = phaseTimingSendVO.getPhaseList();
setLights();
setPhaseLights();
setPhaseInfo(crossInfoPO, phaseList);
return null; return null;
} }
private void setPhaseLights() {
}
private void setLights() {
}
private void setPhaseInfo(CrossInfoPO crossInfoPO, List<PhaseTimingSendVO.Phase> phaseList) {
for (PhaseTimingSendVO.Phase phase : phaseList) {
Integer phaseNo = phase.getPhaseNo();
Integer yellow = phase.getYellow();
Integer allRed = phase.getAllred();
String greenFlash = phase.getGreenFlash();
String maxGreen = phase.getMaxGreen();
String minGreen = phase.getMinGreen();
List<PhaseTimingSendVO.Phase.Lane> lanes = phase.getLanes();
String matchStr = "0402%s%s";
StringBuffer sb = new StringBuffer();
for (int i = 2; i <= 31 ; i++) {
sb.append(String.format(matchStr, String.format("%02x", i), String.format("%02x", phaseNo)));
if (i == 2) {
sb.append("");
}
}
}
}
@Override @Override
public JsonViewObject phaseDiffSend() { public JsonViewObject phaseDiffSend() {
return null; return null;
......
...@@ -136,6 +136,7 @@ public class DTStaticInfoServiceImpl implements StaticInfoService { ...@@ -136,6 +136,7 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
for (PhaseStageInfoPojo phaseStageInfoPojo : phaseStageInfoPojos) { for (PhaseStageInfoPojo phaseStageInfoPojo : phaseStageInfoPojos) {
if (Objects.equals(phaseStageId, phaseStageInfoPojo.getPhaseStageId())) { if (Objects.equals(phaseStageId, phaseStageInfoPojo.getPhaseStageId())) {
List<Integer> phaseList = phaseStageInfoPojo.getPhaseList(); List<Integer> phaseList = phaseStageInfoPojo.getPhaseList();
int ringNo = 0;
for (Integer phaseId : phaseList) { for (Integer phaseId : phaseList) {
CrossPhasePO crossPhasePO = new CrossPhasePO(); CrossPhasePO crossPhasePO = new CrossPhasePO();
crossPhasePO.setCrossId(crossId); crossPhasePO.setCrossId(crossId);
...@@ -144,7 +145,7 @@ public class DTStaticInfoServiceImpl implements StaticInfoService { ...@@ -144,7 +145,7 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
++sort; ++sort;
crossPhasePO.setSort(sort); crossPhasePO.setSort(sort);
crossPhasePO.setPlanId(schemeInfoPojo.getSchemeId()); crossPhasePO.setPlanId(schemeInfoPojo.getSchemeId());
crossPhasePO.setRingNo(1); crossPhasePO.setRingNo(++ringNo);
crossPhasePO.setGroupNo(1); crossPhasePO.setGroupNo(1);
crossPhasePO.setPhaseTime(phaseStageTime); crossPhasePO.setPhaseTime(phaseStageTime);
crossPhasePO.setControlMode(1); crossPhasePO.setControlMode(1);
......
package net.wanji.com.util; package net.wanji.com.util;
import cn.hutool.core.util.HexUtil; import cn.hutool.core.util.HexUtil;
import freemarker.template.utility.StringUtil;
/** /**
* @author duanruiming * @author duanruiming
...@@ -34,4 +35,23 @@ public class CommonUtils { ...@@ -34,4 +35,23 @@ public class CommonUtils {
String minute = String.format("%02x", Integer.valueOf(split[1])); String minute = String.format("%02x", Integer.valueOf(split[1]));
return sb.append(hour).append(minute).toString(); return sb.append(hour).append(minute).toString();
} }
public static String getBinary(Integer param) {
int[] array = new int[64];
array[param - 1] = 1;
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < array.length / 8; i++) {
StringBuffer sb = new StringBuffer();
for (int j = 0; j < 8; j++) {
sb.append(array[i * 8 + j]);
}
String hex = String.format("%02x", Integer.parseInt(sb.reverse().toString(), 2));
resultSb.insert(0, hex);
}
return StringUtil.leftPad(resultSb.toString(), 16, "0");
}
public static void main(String[] args) {
System.err.println(getBinary(8));
}
} }
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