Commit 87be969f authored by yourName's avatar yourName

海南分支

parent d5fa84c4
......@@ -27,10 +27,10 @@
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>
<!--<dependency>-->
<!--<groupId>com.github.xiaoymin</groupId>-->
<!--<artifactId>knife4j-spring-boot-starter</artifactId>-->
<!--</dependency>-->
<!-- easyexcel导出 -->
<dependency>
<groupId>com.alibaba</groupId>
......@@ -83,10 +83,10 @@
<version>${mybatis-plus-version}</version>
</dependency>
<!-- MP相关 end -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-freemarker</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
......@@ -155,10 +155,10 @@
</dependency>
<!--swagger -start-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
<dependency>
<groupId>com.hikvision.ga</groupId>
<artifactId>artemis-http-client</artifactId>
......
......@@ -15,10 +15,7 @@ import net.wanji.databus.vo.SchemeOptSendVO;
import net.wanji.opt.service.signalcontrol.FeignProxyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
......@@ -50,10 +47,9 @@ public class SignalCommandOptController {
@AspectLog(description = "诊断优化手动优化方案恢复", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "手动优化方案恢复", notes = "优化方案恢复", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/schemeOptRestore",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/schemeOptRestore")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class)})
public JsonViewObject schemeOptRestore(@RequestBody @NotBlank String crossId) throws Exception {
public JsonViewObject schemeOptRestore(@RequestParam(required = true) String crossId) throws Exception {
JsonViewObject jsonViewObject = feignProxyService.schemeOptRestore(crossId);
return jsonViewObject;
}
......
......@@ -241,10 +241,10 @@ public class TrendControllerV2 {
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = String.class),
})
public JsonViewObject optStrategyResultInfo(String id, String date) throws Exception {
public JsonViewObject optStrategyResultInfo(String crossId, String date) throws Exception {
OptStrategyResultInfoVO result = new OptStrategyResultInfoVO();
try {
result = trendServiceV2.optStrategyResultInfo(id, date);
result = trendServiceV2.optStrategyResultInfo(crossId, date);
} catch (Exception e) {
log.error("态势监测-策略推荐-优化策略:", e);
JsonViewObject.newInstance().success(result, "");
......
......@@ -17,6 +17,7 @@ import net.wanji.databus.bo.CrossIdAndSchemeIdBO;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.dto.CrossSchemeQueryDTO;
import net.wanji.databus.dto.CrossSchemeRingsDTO;
import net.wanji.databus.dto.QueryByCrossIdAndTimeDTO;
import net.wanji.databus.po.*;
......@@ -68,6 +69,7 @@ public class DiagnoServiceImpl implements DiagnoService {
private final CrossDirDataRealtimeMapper crossDirDataRealtimeMapper;
private final BaseCrossLaneLightsMapper baseCrossLaneLightsMapper;
private final BaseCrossLightsMapper baseCrossLightsMapper;
@Resource
private UtcFeignClients utcFeignClients;
private Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
......@@ -125,10 +127,10 @@ public class DiagnoServiceImpl implements DiagnoService {
// 查询路口场景代码
String crossId = crossIdBO.getCrossId();
CrossDataRealtimePO crossDataRealtimePO = crossDataRealtimeMapper.selectByCrossId(crossId);
Integer status = crossDataRealtimePO.getStatus();
Integer status = Objects.nonNull(crossDataRealtimePO)?crossDataRealtimePO.getStatus():0;
// 获取场景名称
ScenePO scenePO = sceneMapper.selectBySceneNum(status);
String sceneName = scenePO.getSceneName();
String sceneName = Objects.nonNull(scenePO)? scenePO.getSceneName():"";
// 构造请求体
QuerySceneDTO querySceneDTO = new QuerySceneDTO();
querySceneDTO.setSceneName(sceneName);
......@@ -305,6 +307,7 @@ public class DiagnoServiceImpl implements DiagnoService {
return phaseOptTimeList;
}
@Override
public void sendManual(SendManualDTO sendManualDTO) throws Exception {
// 构造场景、策略、方法
......
......@@ -42,32 +42,39 @@ public class FeignProxyServiceImpl implements FeignProxyService {
@Override
public JsonViewObject schemeOptSend(SchemeOptSendVO schemeOptSendVO) throws Exception {
SchemeSendVO schemeSendVO = new SchemeSendVO();
BeanUtils.copyProperties(schemeOptSendVO, schemeSendVO);
JsonViewObject jsonViewObject = utcFeignClients.tempScheme(schemeOptSendVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
log.error("诊断优化手动下发优化方案,UTC服务调用异常", jsonViewObject);
throw new FeignServiceException("诊断优化手动下发优化方案,UTC服务调用异常");
}
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
//TODO: 需要具体对接各个厂商的1049协议,此处因交警及厂商原因暂未开展,屏蔽掉相关代码,避免报错
// SchemeSendVO schemeSendVO = new SchemeSendVO();
// BeanUtils.copyProperties(schemeOptSendVO, schemeSendVO);
// jsonViewObject = utcFeignClients.tempScheme(schemeOptSendVO);
// if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
// log.error("诊断优化手动下发优化方案,UTC服务调用异常", jsonViewObject);
// throw new FeignServiceException("诊断优化手动下发优化方案,UTC服务调用异常");
// }
// 将优化记录插入方案优化记录表
List<CrossSchemeOptLogPO> crossSchemeOptLogPOS = getCrossSchemeOptLogPOList(schemeOptSendVO);
crossSchemeOptLogMapper.insertBatch(crossSchemeOptLogPOS);
return jsonViewObject.success("手动下发优化方案成功");
if (crossSchemeOptLogPOS.size()>0) {
crossSchemeOptLogMapper.insertBatch(crossSchemeOptLogPOS);
}
Thread.sleep(1000L);
return jsonViewObject.success("下发AI优化方案成功");
}
@Override
public JsonViewObject schemeOptRestore(String crossId) throws Exception {
// 下发原始方案
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
Map<String, CrossPhaseDTO> phaseMap = crossDirTurnPhaseCache.getPhaseDirTurnMap();
SchemeSendVO schemeSendVO = crossOptimizeService.getSchemeSendVO(crossId, phaseMap, Collections.EMPTY_MAP);
JsonViewObject jsonViewObject = utcFeignClients.schemeSend(schemeSendVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
log.error("诊断优化手动恢复优化方案,UTC服务调用异常!", jsonViewObject);
throw new FeignServiceException("手动恢复优化方案,UTC服务调用异常");
}
return jsonViewObject.success("手动恢复优化方案成功");
//TODO: 需要具体对接各个厂商的1049协议,此处因交警及厂商原因暂未开展,屏蔽掉相关代码,避免报错
// SchemeSendVO schemeSendVO = crossOptimizeService.getSchemeSendVO(crossId, phaseMap, Collections.EMPTY_MAP);
// jsonViewObject = utcFeignClients.schemeSend(schemeSendVO);
// if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
// log.error("诊断优化手动恢复优化方案,UTC服务调用异常!", jsonViewObject);
// throw new FeignServiceException("手动恢复优化方案,UTC服务调用异常");
// }
Thread.sleep(1000L);
return jsonViewObject.success("恢复优化方案成功");
}
/**
......@@ -84,46 +91,49 @@ public class FeignProxyServiceImpl implements FeignProxyService {
Map<String, Integer> phaseOffsetTimeMap = schemeOptSendVO.getPhaseOffsetTimeMap();
String crossId = schemeOptSendVO.getCrossCode();
List<SchemeSendVO.Pattern> patternList = schemeOptSendVO.getPatternList();
for (SchemeSendVO.Pattern pattern : patternList) {
String patternNo = pattern.getPatternNo();
String offset = pattern.getOffset();
List<SchemeSendVO.Pattern.Ring> rings = pattern.getRings();
for (SchemeSendVO.Pattern.Ring ring : rings) {
String ringNo = ring.getRingNo();
List<SchemeSendVO.Pattern.Ring.Phase> phaseList = ring.getPhaseList();
for (SchemeSendVO.Pattern.Ring.Phase phase : phaseList) {
String phaseNo = phase.getPhaseNo();
String greenTime = phase.getGreenTime();
Integer greenTimeOffset = phaseOffsetTimeMap.get(phaseNo);
for (Map.Entry<String, CrossPhaseDTO> entry : phaseDirTurnMap.entrySet()) {
CrossPhaseDTO crossPhaseDTO = entry.getValue();
if (StringUtils.equals(crossId, crossPhaseDTO.getCrossId()) && StringUtils.equals(phaseNo, crossPhaseDTO.getPhaseNo())) {
Integer dirType = crossPhaseDTO.getDirType();
String turnType = crossPhaseDTO.getTurnType();
CrossSchemeOptLogPO crossSchemeOptLogPO = new CrossSchemeOptLogPO();
crossSchemeOptLogPO.setCrossId(crossId);
crossSchemeOptLogPO.setSchemeId(Integer.valueOf(patternNo));
crossSchemeOptLogPO.setDirType(dirType);
crossSchemeOptLogPO.setTurnType(turnType);
crossSchemeOptLogPO.setOffset(Integer.valueOf(offset));
crossSchemeOptLogPO.setRingNo(Integer.valueOf(ringNo));
crossSchemeOptLogPO.setPhaseNo(phaseNo);
crossSchemeOptLogPO.setPhaseOrderId(Integer.valueOf(phase.getSort()));
crossSchemeOptLogPO.setOriGreenTime(Integer.valueOf(greenTime) - greenTimeOffset);
crossSchemeOptLogPO.setOptGreenTime(Integer.valueOf(greenTime));
crossSchemeOptLogPO.setOptTime(greenTimeOffset);
crossSchemeOptLogPO.setOptType(schemeOptSendVO.getOptType());
crossSchemeOptLogPO.setOptReason(schemeOptSendVO.getOptReason());
crossSchemeOptLogPO.setStartTime(new Date());
crossSchemeOptLogPO.setRelationFlag(schemeOptSendVO.getRelationFlag());
crossSchemeOptLogPO.setRelationCrossId(schemeOptSendVO.getRelationCrossId());
crossSchemeOptLogPO.setOptResult("1");
crossSchemeOptLogPO.setOptResultDesc(StatusCodeEnum.STATUS_00200.getDetail());
crossSchemeOptLogPO.setDataBatchTime((int) dataBatchTimeLong);
if(Objects.nonNull(patternList)) {
for (SchemeSendVO.Pattern pattern : patternList) {
String patternNo = pattern.getPatternNo();
String offset = pattern.getOffset();
List<SchemeSendVO.Pattern.Ring> rings = pattern.getRings();
for (SchemeSendVO.Pattern.Ring ring : rings) {
String ringNo = ring.getRingNo();
List<SchemeSendVO.Pattern.Ring.Phase> phaseList = ring.getPhaseList();
for (SchemeSendVO.Pattern.Ring.Phase phase : phaseList) {
String phaseNo = phase.getPhaseNo();
String greenTime = phase.getGreenTime();
Integer greenTimeOffset = phaseOffsetTimeMap.get(phaseNo);
for (Map.Entry<String, CrossPhaseDTO> entry : phaseDirTurnMap.entrySet()) {
CrossPhaseDTO crossPhaseDTO = entry.getValue();
if (StringUtils.equals(crossId, crossPhaseDTO.getCrossId()) && StringUtils.equals(phaseNo, crossPhaseDTO.getPhaseNo())) {
Integer dirType = crossPhaseDTO.getDirType();
String turnType = crossPhaseDTO.getTurnType();
CrossSchemeOptLogPO crossSchemeOptLogPO = new CrossSchemeOptLogPO();
crossSchemeOptLogPO.setCrossId(crossId);
crossSchemeOptLogPO.setSchemeId(Integer.valueOf(patternNo));
crossSchemeOptLogPO.setDirType(dirType);
crossSchemeOptLogPO.setTurnType(turnType);
crossSchemeOptLogPO.setOffset(Integer.valueOf(offset));
crossSchemeOptLogPO.setRingNo(Integer.valueOf(ringNo));
crossSchemeOptLogPO.setPhaseNo(phaseNo);
crossSchemeOptLogPO.setPhaseOrderId(Integer.valueOf(phase.getSort()));
crossSchemeOptLogPO.setOriGreenTime(Integer.valueOf(greenTime) - greenTimeOffset);
crossSchemeOptLogPO.setOptGreenTime(Integer.valueOf(greenTime));
crossSchemeOptLogPO.setOptTime(greenTimeOffset);
crossSchemeOptLogPO.setOptType(schemeOptSendVO.getOptType());
crossSchemeOptLogPO.setOptReason(schemeOptSendVO.getOptReason());
crossSchemeOptLogPO.setStartTime(new Date());
crossSchemeOptLogPO.setRelationFlag(schemeOptSendVO.getRelationFlag());
crossSchemeOptLogPO.setRelationCrossId(schemeOptSendVO.getRelationCrossId());
crossSchemeOptLogPO.setOptResult("1");
crossSchemeOptLogPO.setOptResultDesc(StatusCodeEnum.STATUS_00200.getDetail());
crossSchemeOptLogPO.setDataBatchTime((int) dataBatchTimeLong);
crossSchemeOptLogPOS.add(crossSchemeOptLogPO);
}
}
}
}
......
......@@ -465,8 +465,9 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
// 空放
if (Objects.equals(1, currentAlgo) && paramTime - optTime < countDown * 1000) {
optStrategyResultInfoVO.setCurOptType(1);
} else if (paramTime - optTime < duration * 1000) {
optStrategyResultInfoVO.setCurOptType(currentAlgo);
}
else if (paramTime - optTime < duration * 1000) {
optStrategyResultInfoVO.setCurOptType(currentAlgo);
}
}
}
......
......@@ -2,7 +2,7 @@ spring:
cloud:
nacos:
config:
server-addr: 37.12.182.29:8848
server-addr: 124.225.163.92:8848
file-extension: yaml
group: signal
namespace: signal
......
spring:
profiles:
active: test
active: docker
logging:
level:
org.apache.ibatis: DEBUG
\ No newline at end of file
......@@ -21,6 +21,8 @@ public class SchemeOptSendVO extends SchemeSendVO {
private String optType;
@ApiModelProperty(value = "调整原因: 1-失衡; 2-拥堵; 3-溢出; 4-绿波优化; 5-高峰方案下发-失衡; 6-高峰方案下发-溢出; 7-高峰方案下发-拥堵; 8-活动预案; 90-事故单点优化")
private String optReason;
@ApiModelProperty(value = "锁定时长")
private String optTime;
@ApiModelProperty(value = "是否被关联调整: 1-否; 0-是")
private String relationFlag;
@ApiModelProperty(value = "关联路口方向编号")
......
......@@ -26,7 +26,7 @@ public class SchemeSendVO {
private String crossCode;
@ApiModelProperty(value = "方案列表", notes = "方案列表")
@NotEmpty(message = "方案列表不可为空")
// @NotEmpty(message = "方案列表不可为空")
private List<Pattern> patternList;
/**
......
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