Commit 88dd9f6a authored by zhouleilei's avatar zhouleilei

神思现场测试相位步进和延长步进功能,加上真实下发海信逻辑。下发方案优化策略开发

parent d98ac14a
package net.wanji.utc.hisense.service.impl; package net.wanji.utc.hisense.service.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.utils.tool.StringUtils; import net.wanji.common.utils.tool.StringUtils;
import net.wanji.databus.dao.mapper.CrossInfoMapper;
import net.wanji.databus.dto.CrossSchemeRingsDTO;
import net.wanji.databus.dto.ExtendPhaseDTO; import net.wanji.databus.dto.ExtendPhaseDTO;
import net.wanji.databus.dto.StepingPhaseDTO; import net.wanji.databus.dto.StepingPhaseDTO;
import net.wanji.databus.po.CrossInfoPOExt; import net.wanji.databus.po.CrossInfoPOExt;
import net.wanji.databus.vo.TempSchemeSendVO;
import net.wanji.databus.dao.mapper.CrossInfoMapper;
import net.wanji.databus.vo.*; import net.wanji.databus.vo.*;
import net.wanji.utc.hisense.common.OperationBaseDom; import net.wanji.utc.hisense.common.OperationBaseDom;
import net.wanji.utc.hisense.common.constants.HttpConstants; import net.wanji.utc.hisense.common.constants.HttpConstants;
import net.wanji.utc.hisense.pojo.dto.RingPhaseDTO;
import net.wanji.utc.hisense.pojo.dto.StagePhaseDTO;
import net.wanji.utc.hisense.pojo.result.CrossSchemeRings;
import net.wanji.utc.hisense.service.ControlCommandService; import net.wanji.utc.hisense.service.ControlCommandService;
import net.wanji.utc.hisense.service.StaticInfoService;
import net.wanji.utc.hisense.util.OkHttpClientUtil; import net.wanji.utc.hisense.util.OkHttpClientUtil;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.dom4j.Document; import org.dom4j.Document;
...@@ -23,6 +28,9 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -23,6 +28,9 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/** /**
* @author duanruiming * @author duanruiming
...@@ -36,6 +44,8 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -36,6 +44,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
private String hisenseUrl; private String hisenseUrl;
@Resource @Resource
private CrossInfoMapper crossInfoMapper; private CrossInfoMapper crossInfoMapper;
@Resource
private StaticInfoService staticInfoService;
@Override @Override
public JsonViewObject schemeSend(SchemeSendVO schemeSendVO) throws Exception { public JsonViewObject schemeSend(SchemeSendVO schemeSendVO) throws Exception {
...@@ -339,9 +349,60 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -339,9 +349,60 @@ public class ControlCommandServiceImpl implements ControlCommandService {
//指令执行失败 //指令执行失败
jsonViewObject.fail("临时方案 - 指令执行失败"); jsonViewObject.fail("临时方案 - 指令执行失败");
} }
Integer code = jsonViewObject.getCode();
int optResult = 1;
if (code != 200) {
optResult = 2;
}
CrossSchemeRingsDTO crossSchemeRingsDTO = new CrossSchemeRingsDTO();
crossSchemeRingsDTO.setCrossId(tempSchemeSendVO.getCrossId());
crossSchemeRingsDTO.setPattern(tempSchemeSendVO.getPattern());
//方案优化记录
crossSchemeOptLog(crossSchemeRingsDTO, tempSchemeSendVO.getSplit(), optResult);
return jsonViewObject; return jsonViewObject;
} }
/**
* @return void
* @Description 方案优化记录
* @Param tempSchemeSendVO 环图查询参数
* @Param split 优化的绿信比
* @Param result 下发结果
**/
private void crossSchemeOptLog(CrossSchemeRingsDTO crossSchemeRingsDTO, String split, int result) throws Exception {
//TODO
//方案环图请求
CrossSchemeRings crossSchemeRings = staticInfoService.crossSchemeRings(crossSchemeRingsDTO);
if (Optional.ofNullable(crossSchemeRings).isPresent()) {
//环数
int ringCount = Integer.parseInt(crossSchemeRings.getRingCount());
//周期长度
String cycleLen = crossSchemeRings.getCycleLen();
JSONObject cycleJSONObject = crossSchemeRings.getCycleList();
//相位差
String offset = crossSchemeRings.getOffset();
int cycle = Integer.valueOf(cycleLen);
//方案号
int schemeNo = (Integer.valueOf(crossSchemeRings.getPattern()) + 2) / 3;
List<CrossSchemeRings.Phase> phaseList = crossSchemeRings.getPhaseList();
CrossSchemeRings.Phase phase = phaseList.get(0);
//封装环和环上相位数据
Map<Integer, List<RingPhaseDTO>> ringPhasesMap = StaticInfoServiceImpl.getRingPhasesMap(ringCount, cycleJSONObject, phase);
//环封装阶段
List<StagePhaseDTO> stagePhaseDTOList = StaticInfoServiceImpl.stagePhaseList(cycle, ringCount, ringPhasesMap);
System.out.println(stagePhaseDTOList);
}
}
public static void main(String[] args) {
}
@Override @Override
public JsonViewObject extendPhase(ExtendPhaseDTO extendPhaseDTO) throws Exception { public JsonViewObject extendPhase(ExtendPhaseDTO extendPhaseDTO) throws Exception {
CrossInfoPOExt crossInfoPOExt = crossInfoMapper.selectById(extendPhaseDTO.getCrossId()); CrossInfoPOExt crossInfoPOExt = crossInfoMapper.selectById(extendPhaseDTO.getCrossId());
...@@ -351,13 +412,13 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -351,13 +412,13 @@ public class ControlCommandServiceImpl implements ControlCommandService {
element.addElement(HttpConstants.MESSAGETYPE).setText(HttpConstants.MESSAGETYPE_22); element.addElement(HttpConstants.MESSAGETYPE).setText(HttpConstants.MESSAGETYPE_22);
Element messageContent = (Element) document.selectSingleNode(HttpConstants.SYSTEMSCRIPTION_MESSAGECONTENT); Element messageContent = (Element) document.selectSingleNode(HttpConstants.SYSTEMSCRIPTION_MESSAGECONTENT);
messageContent.addElement(HttpConstants.SPOT).setText(crossInfoPOExt.getCode()); messageContent.addElement(HttpConstants.SPOT).setText(crossInfoPOExt.getCode());
//暂时按照神思的写死 //相位驻留
messageContent.addElement(HttpConstants.COMMAND).setText("1"); messageContent.addElement(HttpConstants.COMMAND).setText("1");
messageContent.addElement(HttpConstants.CTRLSTEP).setText("0"); messageContent.addElement(HttpConstants.CTRLSTEP).setText("0");
//给海信发送http请求 //给海信发送http请求
// String post = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML()); String post = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML());
String post = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + /*String post = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" + "<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
" <subSystem>Hisense</subSystem>\n" + " <subSystem>Hisense</subSystem>\n" +
" <messageType>12</messageType>\n" + " <messageType>12</messageType>\n" +
...@@ -373,7 +434,7 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -373,7 +434,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
" <CoordCycleStatus>160</CoordCycleStatus>\n" + " <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" + " <CoordSyncStatus>123</CoordSyncStatus>\n" +
" </messageContent>\n" + " </messageContent>\n" +
"</systemScription>"; "</systemScription>";*/
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
if (StringUtils.isBlank(post)) { if (StringUtils.isBlank(post)) {
log.error("HTTP请求 5.12. 步进及取消控制 失败"); log.error("HTTP请求 5.12. 步进及取消控制 失败");
...@@ -381,14 +442,15 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -381,14 +442,15 @@ public class ControlCommandServiceImpl implements ControlCommandService {
} }
Document postResult = DocumentHelper.parseText(post); Document postResult = DocumentHelper.parseText(post);
String result = postResult.selectSingleNode(HttpConstants.SYSTEMSCRIPTION_RESULT).getText(); String result = postResult.selectSingleNode(HttpConstants.SYSTEMSCRIPTION_RESULT).getText();
//解除步进
messageContent.selectSingleNode(HttpConstants.COMMAND).setText("0");
if (HttpConstants.RESULT_1.equals(result) || HttpConstants.RESULT_2.equals(result)) { if (HttpConstants.RESULT_1.equals(result) || HttpConstants.RESULT_2.equals(result)) {
//执行成功,开始延长 //执行成功,开始延长
Thread.sleep(extendPhaseDTO.getExtendTime() * 1000); Thread.sleep(extendPhaseDTO.getExtendTime() * 1000);
//延长结束,解除步进
messageContent.selectSingleNode(HttpConstants.COMMAND).setText("0");
//给海信发送http请求 //给海信发送http请求
// String post1 = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML()); String post1 = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML());
String post1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + /*String post1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" + "<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
" <subSystem>Hisense</subSystem>\n" + " <subSystem>Hisense</subSystem>\n" +
" <messageType>12</messageType>\n" + " <messageType>12</messageType>\n" +
...@@ -404,7 +466,7 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -404,7 +466,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
" <CoordCycleStatus>160</CoordCycleStatus>\n" + " <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" + " <CoordSyncStatus>123</CoordSyncStatus>\n" +
" </messageContent>\n" + " </messageContent>\n" +
"</systemScription>"; "</systemScription>";*/
if (StringUtils.isNotBlank(post1)) { if (StringUtils.isNotBlank(post1)) {
Document extendPost = DocumentHelper.parseText(post1); Document extendPost = DocumentHelper.parseText(post1);
String extendResult = extendPost.selectSingleNode(HttpConstants.SYSTEMSCRIPTION_RESULT).getText(); String extendResult = extendPost.selectSingleNode(HttpConstants.SYSTEMSCRIPTION_RESULT).getText();
...@@ -416,8 +478,8 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -416,8 +478,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
log.error("HTTP请求 5.12. 步进及取消控制 失败"); log.error("HTTP请求 5.12. 步进及取消控制 失败");
//重新发起三次取消控制请求 //重新发起三次取消控制请求
for (int j = 0; j < 3; j++) { for (int j = 0; j < 3; j++) {
// String httpPost = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML()); String httpPost = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML());
String httpPost = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + /*String httpPost = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" + "<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
" <subSystem>Hisense</subSystem>\n" + " <subSystem>Hisense</subSystem>\n" +
" <messageType>12</messageType>\n" + " <messageType>12</messageType>\n" +
...@@ -433,7 +495,7 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -433,7 +495,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
" <CoordCycleStatus>160</CoordCycleStatus>\n" + " <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" + " <CoordSyncStatus>123</CoordSyncStatus>\n" +
" </messageContent>\n" + " </messageContent>\n" +
"</systemScription>"; "</systemScription>";*/
if (StringUtils.isNotBlank(httpPost)) { if (StringUtils.isNotBlank(httpPost)) {
Document extendPost = DocumentHelper.parseText(httpPost); Document extendPost = DocumentHelper.parseText(httpPost);
String extendResult = extendPost.selectSingleNode(HttpConstants.SYSTEMSCRIPTION_RESULT).getText(); String extendResult = extendPost.selectSingleNode(HttpConstants.SYSTEMSCRIPTION_RESULT).getText();
...@@ -445,6 +507,7 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -445,6 +507,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
} }
} else { } else {
messageContent.selectSingleNode(HttpConstants.COMMAND).setText("0");
//重新发起三次取消控制请求 //重新发起三次取消控制请求
for (int j = 0; j < 3; j++) { for (int j = 0; j < 3; j++) {
String httpPost = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML()); String httpPost = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML());
...@@ -480,9 +543,9 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -480,9 +543,9 @@ public class ControlCommandServiceImpl implements ControlCommandService {
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
if (stepingPhaseDTO.getCommand() == 0) { if (stepingPhaseDTO.getCommand() == 0) {
//取消步进 //取消步进
// boolean isOk = sendMesIsOk(document.asXML()); boolean isOk = sendMesIsOk(document.asXML());
boolean isOk = true; // boolean isOk = true;
if (true) { if (isOk) {
return jsonViewObject.success("取消步进 - 控制成功"); return jsonViewObject.success("取消步进 - 控制成功");
} else { } else {
return jsonViewObject.fail("取消步进 - 控制失败"); return jsonViewObject.fail("取消步进 - 控制失败");
...@@ -490,8 +553,8 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -490,8 +553,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
} else if (stepingPhaseDTO.getCommand() == 1) { } else if (stepingPhaseDTO.getCommand() == 1) {
//逻辑:第一次发送步进指令是相位驻留,以后发送才是相位步进,步进成功则取消步进。步进失败,也立即下发取消步进控制 //逻辑:第一次发送步进指令是相位驻留,以后发送才是相位步进,步进成功则取消步进。步进失败,也立即下发取消步进控制
//相位驻留 //相位驻留
// String xmlPost = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML()); String xmlPost = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML());
String xmlPost = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + /* String xmlPost = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" + "<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
" <subSystem>Hisense</subSystem>\n" + " <subSystem>Hisense</subSystem>\n" +
" <messageType>12</messageType>\n" + " <messageType>12</messageType>\n" +
...@@ -507,7 +570,7 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -507,7 +570,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
" <CoordCycleStatus>160</CoordCycleStatus>\n" + " <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" + " <CoordSyncStatus>123</CoordSyncStatus>\n" +
" </messageContent>\n" + " </messageContent>\n" +
"</systemScription>"; "</systemScription>";*/
if (StringUtils.isNotBlank(xmlPost)) { if (StringUtils.isNotBlank(xmlPost)) {
Document extendPost = DocumentHelper.parseText(xmlPost); Document extendPost = DocumentHelper.parseText(xmlPost);
...@@ -516,8 +579,8 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -516,8 +579,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
//开始步进 //开始步进
//给海信发送http请求 //给海信发送http请求
for (int i = 0; i < stepingPhaseDTO.getStepCount(); i++) { for (int i = 0; i < stepingPhaseDTO.getStepCount(); i++) {
// String post = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML()); String post = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML());
String post = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + /*String post = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" + "<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
" <subSystem>Hisense</subSystem>\n" + " <subSystem>Hisense</subSystem>\n" +
" <messageType>12</messageType>\n" + " <messageType>12</messageType>\n" +
...@@ -533,7 +596,7 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -533,7 +596,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
" <CoordCycleStatus>160</CoordCycleStatus>\n" + " <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" + " <CoordSyncStatus>123</CoordSyncStatus>\n" +
" </messageContent>\n" + " </messageContent>\n" +
"</systemScription>"; "</systemScription>";*/
if (StringUtils.isNotBlank(post)) { if (StringUtils.isNotBlank(post)) {
Document postResult = DocumentHelper.parseText(post); Document postResult = DocumentHelper.parseText(post);
String result = postResult.selectSingleNode(HttpConstants.SYSTEMSCRIPTION_RESULT).getText(); String result = postResult.selectSingleNode(HttpConstants.SYSTEMSCRIPTION_RESULT).getText();
...@@ -543,8 +606,8 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -543,8 +606,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
log.error("路口号 :{},第 {} 次步进失败,result:{}", stepingPhaseDTO.getCrossId(), i + 1, result); log.error("路口号 :{},第 {} 次步进失败,result:{}", stepingPhaseDTO.getCrossId(), i + 1, result);
messageContent.selectSingleNode(HttpConstants.COMMAND).setText("0"); messageContent.selectSingleNode(HttpConstants.COMMAND).setText("0");
//取消步进 //取消步进
// boolean isOk = sendMesIsOk(document.asXML()); boolean isOk = sendMesIsOk(document.asXML());
boolean isOk = true; // boolean isOk = true;
if (isOk) { if (isOk) {
return jsonViewObject.fail("相位步进失败,取消步进成功,路口号: " + stepingPhaseDTO.getCrossId()); return jsonViewObject.fail("相位步进失败,取消步进成功,路口号: " + stepingPhaseDTO.getCrossId());
} else { } else {
...@@ -556,8 +619,8 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -556,8 +619,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
} else { } else {
messageContent.selectSingleNode(HttpConstants.COMMAND).setText("0"); messageContent.selectSingleNode(HttpConstants.COMMAND).setText("0");
//取消步进 //取消步进
// boolean isOk = sendMesIsOk(document.asXML()); boolean isOk = sendMesIsOk(document.asXML());
boolean isOk = true; // boolean isOk = true;
if (isOk) { if (isOk) {
return jsonViewObject.fail("相位步进失败,取消步进成功,路口号: " + stepingPhaseDTO.getCrossId()); return jsonViewObject.fail("相位步进失败,取消步进成功,路口号: " + stepingPhaseDTO.getCrossId());
} else { } else {
...@@ -568,8 +631,8 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -568,8 +631,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
} }
messageContent.selectSingleNode(HttpConstants.COMMAND).setText("0"); messageContent.selectSingleNode(HttpConstants.COMMAND).setText("0");
//取消步进 //取消步进
// boolean isOk = sendMesIsOk(document.asXML()); boolean isOk = sendMesIsOk(document.asXML());
boolean isOk = true; // boolean isOk = true;
if (isOk) { if (isOk) {
return jsonViewObject.success("相位步进成功,,路口号: " + stepingPhaseDTO.getCrossId()); return jsonViewObject.success("相位步进成功,,路口号: " + stepingPhaseDTO.getCrossId());
} else { } else {
......
...@@ -152,18 +152,9 @@ public class StaticInfoServiceImpl implements StaticInfoService { ...@@ -152,18 +152,9 @@ public class StaticInfoServiceImpl implements StaticInfoService {
List<CrossSchemeRings.Phase> phaseList = crossSchemeRings.getPhaseList(); List<CrossSchemeRings.Phase> phaseList = crossSchemeRings.getPhaseList();
CrossSchemeRings.Phase phase = phaseList.get(0); CrossSchemeRings.Phase phase = phaseList.get(0);
//16 个相位的红灯时间(单位秒),中间用空格隔开,不存在的相位置 0。
String[] redTime = phase.getRedTime().split(" ");
//16 个相位的绿灯时间(单位秒),中间用空格隔开,不存在的相位置 0。
String[] greenTime = phase.getGreenTime().split(" ");
//16 个相位的黄灯时间(单位秒),中间用空格隔开,不存在的相位置 0。
String[] yellowTime = phase.getYellowTime().split(" ");
//16 个相位的最小绿时间(单位秒),中间用空格隔开,不存在的相位置 0。
String[] minGTime = phase.getMinGTime().split(" ");
//16 个相位的最大绿时间(单位秒),中间用空格隔开,不存在的相位置 0。
String[] maxGTime = phase.getMaxGTime().split(" ");
//封装环和环上相位数据 //封装环和环上相位数据
Map<Integer, List<RingPhaseDTO>> ringPhasesMap = getRingPhasesMap(ringCount, cycleJSONObject, redTime, greenTime, yellowTime, minGTime, maxGTime); Map<Integer, List<RingPhaseDTO>> ringPhasesMap = getRingPhasesMap(ringCount, cycleJSONObject, phase);
//16 个相位的放行方向,每个相位由 8 字节整型值存储(最多支持 7 个放行方向),每个字节表示一个放行方向, //16 个相位的放行方向,每个相位由 8 字节整型值存储(最多支持 7 个放行方向),每个字节表示一个放行方向,
String[] channelDim = phase.getChannelDim().split(" "); String[] channelDim = phase.getChannelDim().split(" ");
//数据处理 //数据处理
...@@ -186,7 +177,18 @@ public class StaticInfoServiceImpl implements StaticInfoService { ...@@ -186,7 +177,18 @@ public class StaticInfoServiceImpl implements StaticInfoService {
* @Param greenTime 绿 * @Param greenTime 绿
* @Param yellowTime 黄 * @Param yellowTime 黄
**/ **/
private Map<Integer, List<RingPhaseDTO>> getRingPhasesMap(int ringCount, JSONObject cycleJSONObject, String[] redTime, String[] greenTime, String[] yellowTime, String[] minGTime, String[] maxGTime) { public static Map<Integer, List<RingPhaseDTO>> getRingPhasesMap(int ringCount, JSONObject cycleJSONObject, CrossSchemeRings.Phase phaseDto) {
//16 个相位的红灯时间(单位秒),中间用空格隔开,不存在的相位置 0。
String[] redTime = phaseDto.getRedTime().split(" ");
//16 个相位的绿灯时间(单位秒),中间用空格隔开,不存在的相位置 0。
String[] greenTime = phaseDto.getGreenTime().split(" ");
//16 个相位的黄灯时间(单位秒),中间用空格隔开,不存在的相位置 0。
String[] yellowTime = phaseDto.getYellowTime().split(" ");
//16 个相位的最小绿时间(单位秒),中间用空格隔开,不存在的相位置 0。
String[] minGTime = phaseDto.getMinGTime().split(" ");
//16 个相位的最大绿时间(单位秒),中间用空格隔开,不存在的相位置 0。
String[] maxGTime = phaseDto.getMaxGTime().split(" ");
Map<Integer, List<RingPhaseDTO>> map = new HashMap<>(); Map<Integer, List<RingPhaseDTO>> map = new HashMap<>();
for (int i = 1; i <= ringCount; i++) { for (int i = 1; i <= ringCount; i++) {
//取出环中的数据,并去掉空格和_,得到相位 //取出环中的数据,并去掉空格和_,得到相位
...@@ -220,27 +222,6 @@ public class StaticInfoServiceImpl implements StaticInfoService { ...@@ -220,27 +222,6 @@ public class StaticInfoServiceImpl implements StaticInfoService {
ringPhase.setPhaseTime(red + green + yellow); ringPhase.setPhaseTime(red + green + yellow);
ringPhaseDTOS.add(ringPhase); ringPhaseDTOS.add(ringPhase);
} }
/*char[] charArray = ringPhases.toCharArray();
for (int i1 = 0; i1 < charArray.length; i1++) {
RingPhaseDTO ringPhase = new RingPhaseDTO();
int phaseId = Character.getNumericValue(charArray[i1]);
int red = Integer.valueOf(redTime[phaseId - 1]);
int green = Integer.valueOf(greenTime[phaseId - 1]);
int yellow = Integer.valueOf(yellowTime[phaseId - 1]);
int minG = Integer.valueOf(minGTime[phaseId - 1]);
int maxG = Integer.valueOf(maxGTime[phaseId - 1]);
ringPhase.setPhaseId(phaseId);
ringPhase.setPhaseStatus(0);
ringPhase.setRedTime(red);
ringPhase.setGreenTime(green);
ringPhase.setYellowTime(yellow);
ringPhase.setMaxGTime(maxG);
ringPhase.setMinGTime(minG);
ringPhase.setPhaseTime(red + green + yellow);
ringPhaseDTOS.add(ringPhase);
}*/
map.put(i, ringPhaseDTOS); map.put(i, ringPhaseDTOS);
} }
return map; return map;
...@@ -253,6 +234,20 @@ public class StaticInfoServiceImpl implements StaticInfoService { ...@@ -253,6 +234,20 @@ public class StaticInfoServiceImpl implements StaticInfoService {
* @Param phasesTime 各个相位的红绿黄时间和 * @Param phasesTime 各个相位的红绿黄时间和
**/ **/
private void getStagesByRings(Map<String, Integer> lightsMap, AtomicInteger lightNum, int cycle, int ringCount, String crossId, int schemeNo, Map<Integer, List<RingPhaseDTO>> ringPhasesMap, List<CrossLightsPO> crossLightsList, List<CrossPhasePO> crossPhaseList, List<CrossPhaseLightsPO> crossPhaseLightsPOList, String[] channelDim) { private void getStagesByRings(Map<String, Integer> lightsMap, AtomicInteger lightNum, int cycle, int ringCount, String crossId, int schemeNo, Map<Integer, List<RingPhaseDTO>> ringPhasesMap, List<CrossLightsPO> crossLightsList, List<CrossPhasePO> crossPhaseList, List<CrossPhaseLightsPO> crossPhaseLightsPOList, String[] channelDim) {
//环转阶段
List<StagePhaseDTO> stagePhaseList = stagePhaseList(cycle, ringCount, ringPhasesMap);
if (CollectionUtil.isNotEmpty(stagePhaseList)) {
//将结果组装到结果集
doView(lightsMap, lightNum, cycle, ringCount, crossId, schemeNo, stagePhaseList, crossLightsList, crossPhaseList, crossPhaseLightsPOList, channelDim);
}
}
/**
* @Description 环封装阶段
* @Param [cycle, ringCount, ringPhasesMap]
* @return java.util.List<net.wanji.utc.hisense.pojo.dto.StagePhaseDTO>
**/
public static List<StagePhaseDTO> stagePhaseList(int cycle, int ringCount,Map<Integer, List<RingPhaseDTO>> ringPhasesMap){
//已经计算的阶段时长 //已经计算的阶段时长
int stageTime = 0; int stageTime = 0;
//循环次数,也代表阶段号 //循环次数,也代表阶段号
...@@ -362,10 +357,7 @@ public class StaticInfoServiceImpl implements StaticInfoService { ...@@ -362,10 +357,7 @@ public class StaticInfoServiceImpl implements StaticInfoService {
stagePhaseList.add(stagePhase); stagePhaseList.add(stagePhase);
count++; count++;
} }
if (CollectionUtil.isNotEmpty(stagePhaseList)) { return stagePhaseList;
//将结果组装到结果集
doView(lightsMap, lightNum, cycle, ringCount, crossId, schemeNo, stagePhaseList, crossLightsList, crossPhaseList, crossPhaseLightsPOList, channelDim);
}
} }
/** /**
......
package net.wanji.databus.dao.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.sql.Date;
/**
* @ClassName CrossSchemeOptLog
* @Description 路口方案优化记录表
* @Author zhouleilei
* @Date 2024/11/23 14:23
*/
@Data
public class CrossSchemeOptLogPO {
@ApiModelProperty(value = "主键id")
private Integer id;
@ApiModelProperty(value = "")
private String crossId;
@ApiModelProperty(value = "")
private Integer schemeId;
@ApiModelProperty(value = "")
private Integer offset;
@ApiModelProperty(value = "")
private String phaseNo;
@ApiModelProperty(value = "")
private Integer oriPhaseTime;
@ApiModelProperty(value = "")
private Integer optPhaseTime;
@ApiModelProperty(value = "")
private Integer optTime;
@ApiModelProperty(value = "优化结果:1-成功 2-失败")
private String optResult;
@ApiModelProperty(value = "")
private Integer batchTime;
@ApiModelProperty(value = "")
private Date insertTime;
}
package net.wanji.databus.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wanji.databus.dao.entity.CrossSchemeOptLogPO;
/**
* @ClassName CrossSchemeOptLogMapper
* @Description CrossSchemeOptLogMapper
* @Author zhouleilei
* @Date 2024/11/23 14:34
*/
public interface CrossSchemeOptLogMapper extends BaseMapper<CrossSchemeOptLogPO> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.databus.dao.mapper.CrossSchemeOptLogMapper">
</mapper>
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