Commit b8331bb4 authored by duanruiming's avatar duanruiming

[update] 下发相位

parent 7793515c
......@@ -43,26 +43,36 @@ public class DTControlCommandServiceImpl implements ControlCommandService {
public JsonViewObject schemeSend(SchemeSendVO schemeSendVO) throws Exception {
String crossId = schemeSendVO.getCrossCode();
CrossInfoPO crossInfoPO = crossInfoCache.getCrossInfoCache().get(crossId);
List<SchemeSendVO.Pattern> patternList = schemeSendVO.getPatternList();
StringBuilder sb = new StringBuilder();
for (SchemeSendVO.Pattern pattern : patternList) {
sb.append(buidSchemeHex(pattern));
}
String bodyValueLeght = String.format("%02x", patternList.size() * 6); // 调度数量 * 属性数量
String message = String.format(Constants.COMMAND_SET_COMMON, Constants.COMMAND_SET, bodyValueLeght, sb.toString());
String schemeSign = StringUtils.join(Constants.COMMAND_SCHME_CONFIG, Constants.COMMAND_SET_REPLY);
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("下发方案成功");
List<SchemeSendVO.Pattern> schemeVOList = schemeSendVO.getPatternList();
setSchemePhaseStageInfo(crossInfoPO, schemeVOList);
return JsonViewObject.newInstance().success("下发成功异常");
}
private void setSchemePhaseStageInfo(CrossInfoPO crossInfoPO, List<SchemeSendVO.Pattern> schemeVOList) {
setPhaseStageInfo(crossInfoPO, schemeVOList);
setSchemeInfo(crossInfoPO, schemeVOList);
}
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) {
return null;
private void setPhaseStageInfo(CrossInfoPO crossInfoPO, List<SchemeSendVO.Pattern> schemeVOList) {
}
@Override
public JsonViewObject planSend(PlanSendVO planSendVO) throws Exception {
String crossId = planSendVO.getCrossCode();
......@@ -72,6 +82,7 @@ public class DTControlCommandServiceImpl implements ControlCommandService {
for (PlanSendVO.Plan plan : planList) {
sb.append(buidDailyPlanHex(plan));
}
// 只下发有效计划返回报错
if (planList.size() < 8) {
for (int i = planList.size() + 1; i <= 8 - planList.size(); i++) {
PlanSendVO.Plan plan = new PlanSendVO.Plan();
......@@ -282,9 +293,44 @@ public class DTControlCommandServiceImpl implements ControlCommandService {
@Override
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;
}
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
public JsonViewObject phaseDiffSend() {
return null;
......
......@@ -136,6 +136,7 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
for (PhaseStageInfoPojo phaseStageInfoPojo : phaseStageInfoPojos) {
if (Objects.equals(phaseStageId, phaseStageInfoPojo.getPhaseStageId())) {
List<Integer> phaseList = phaseStageInfoPojo.getPhaseList();
int ringNo = 0;
for (Integer phaseId : phaseList) {
CrossPhasePO crossPhasePO = new CrossPhasePO();
crossPhasePO.setCrossId(crossId);
......@@ -144,7 +145,7 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
++sort;
crossPhasePO.setSort(sort);
crossPhasePO.setPlanId(schemeInfoPojo.getSchemeId());
crossPhasePO.setRingNo(1);
crossPhasePO.setRingNo(++ringNo);
crossPhasePO.setGroupNo(1);
crossPhasePO.setPhaseTime(phaseStageTime);
crossPhasePO.setControlMode(1);
......
package net.wanji.com.util;
import cn.hutool.core.util.HexUtil;
import freemarker.template.utility.StringUtil;
/**
* @author duanruiming
......@@ -34,4 +35,23 @@ public class CommonUtils {
String minute = String.format("%02x", Integer.valueOf(split[1]));
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