Commit 9a8e6f2a authored by zhoushiguang's avatar zhoushiguang
parents 2240007d 2a2ad463
package net.wanji.web.task;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.databus.dao.mapper.BaseCrossInfoMapper;
import net.wanji.databus.po.BaseCrossInfoPO;
import net.wanji.databus.vo.CrossInfoVO;
import net.wanji.web.service.impl.PlanSendServiceImpl;
import org.apache.commons.collections.CollectionUtils;
import org.joda.time.LocalDateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import java.util.ArrayList;
import java.util.List;
/**
* @author zhouleilei
* 信号机同步任务
* @date 2025/02/18 11:35
*/
//@Component
//@RequiredArgsConstructor
@Slf4j
public class SignalSynchronizationTask {
@Autowired
private BaseCrossInfoMapper baseCrossInfoMapper;
@Autowired
private PlanSendServiceImpl planSendService;
@Scheduled(fixedRate = 1 * 1000)
public void syncSignalStatus() {
log.info("===开始同步,当前时间:{}", LocalDateTime.now());
CrossInfoVO crossInfoVO = new CrossInfoVO();
crossInfoVO.setIsSignal(1);
List<BaseCrossInfoPO> baseCrossInfoPOS = baseCrossInfoMapper.selectAll(crossInfoVO);
List<String> errorCrossIds = new ArrayList<>();
List<String> okCrossIds = new ArrayList<>();
if (CollectionUtils.isNotEmpty(baseCrossInfoPOS)) {
baseCrossInfoPOS.forEach(po -> {
CrossIdBO crossIdBO = new CrossIdBO();
crossIdBO.setCrossId(po.getId());
try {
JsonViewObject jsonViewObject = planSendService.syncScheme(crossIdBO);
if (jsonViewObject.getCode() == 200) {
okCrossIds.add(po.getId());
log.info("路口同步成功,路口号:{},时间:{}",po.getId(),LocalDateTime.now());
} else {
errorCrossIds.add(po.getId());
log.error("路口同步失败路口号:{},时间:{}",po.getId(),LocalDateTime.now());
}
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}
log.info("===同步完成,当前时间:{},成功路口:{},失败路口:{}", LocalDateTime.now(), okCrossIds, errorCrossIds);
System.exit(0);
}
}
utc.service.url=http://173.17.0.1:32000/utc
utc.dt.service.url=http://173.17.0.1:39002/utc-dt
utc.hisense.service.url=http://173.17.0.1:39003/utc-hisense
control.url=http://173.17.0.1:32001/web
ehualu.url=http://173.17.0.1:30015
\ No newline at end of file
utc.service.url=http://192.168.150.1:32000/utc
utc.dt.service.url=http://192.168.150.1:39002/utc-dt
utc.hisense.service.url=http://192.168.150.1:39003/utc-hisense
control.url=http://192.168.150.1:32001/web
ehualu.url=http://192.168.150.1:30015
\ No newline at end of file
......@@ -9,6 +9,7 @@ import net.wanji.opt.synthesis.pojo.StrategyFactoryEntity;
import net.wanji.opt.synthesis.pojo.vo.StrategyControlVO;
import net.wanji.opt.synthesis.pojo.vo.StrategyFactoryQueryVO;
import net.wanji.opt.synthesis.service.StrategyControlService;
import net.wanji.opt.vo.StrategyLockSendVO;
import net.wanji.opt.vo.StrategyNameCrossVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.validation.annotation.Validated;
......@@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.ws.rs.core.MediaType;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
......@@ -153,6 +155,30 @@ public class StrategyControlController {
return strategyControlService.strategyFactoryList(vo);
}
@ApiOperation(value = "策略管理-路口详情-策略锁定", notes = "策略管理-路口详情-策略锁定",
response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/strategyLockSend",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = StrategyNameCrossVO.class),
})
public JsonViewObject strategyLockCrossInfo(@RequestBody StrategyLockSendVO strategyLockSendVO) throws Exception {
return strategyControlService.strategyLockSend(strategyLockSendVO);
}
@ApiOperation(value = "策略管理-路口详情-策略恢复", notes = "策略管理-路口详情-策略恢复",
response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/strategyLockRecoverSend",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = StrategyNameCrossVO.class),
})
public JsonViewObject strategyLockRecoverSend(@RequestBody StrategyLockSendVO strategyLockSendVO) throws Exception {
return strategyControlService.strategyLockRecoverSend(strategyLockSendVO);
}
@ApiOperation(value = "策略管理-路口详情-优化策略查询", notes = "策略管理-路口详情-优化策略查询",
response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
......
......@@ -6,6 +6,7 @@ import net.wanji.opt.synthesis.pojo.StrategyControlDetailList;
import net.wanji.opt.synthesis.pojo.StrategyFactoryEntity;
import net.wanji.opt.synthesis.pojo.vo.StrategyControlVO;
import net.wanji.opt.synthesis.pojo.vo.StrategyFactoryQueryVO;
import net.wanji.opt.vo.StrategyLockSendVO;
import java.util.List;
......@@ -39,4 +40,8 @@ public interface StrategyControlService {
JsonViewObject strategyFactoryDel(List<Integer> ids) throws Exception;
JsonViewObject strategyNameCrossInfo(String crossId) throws Exception;
JsonViewObject strategyLockSend(StrategyLockSendVO strategyLockSendVO) throws Exception;
JsonViewObject strategyLockRecoverSend(StrategyLockSendVO strategyLockSendVO) throws Exception;
}
......@@ -28,10 +28,12 @@ import net.wanji.opt.synthesis.pojo.*;
import net.wanji.opt.synthesis.pojo.vo.*;
import net.wanji.opt.synthesis.service.PushStrategyControlService;
import net.wanji.opt.synthesis.service.StrategyControlService;
import net.wanji.opt.vo.StrategyLockSendVO;
import net.wanji.opt.vo.StrategyNameCrossVO;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
......@@ -429,21 +431,28 @@ public class StrategyControlServiceImpl implements StrategyControlService {
queryWrapper.ge(StrategyCrossResultEntity::getIssueTime, midNight);
queryWrapper.eq(StrategyCrossResultEntity::getResponseCode, 200);
List<StrategyCrossResultEntity> resultEntityList = strategyCrossResultMapper.selectList(queryWrapper);
int optCount = 0;
int optTime = 0;
if (!CollectionUtils.isEmpty(resultEntityList)) {
// 1:绿灯空放 2:失衡 3:溢出
int optCount = 0;
int optTime = 0;
Map<Integer, List<StrategyCrossResultEntity>> typeMap = resultEntityList.stream().collect(Collectors.groupingBy(StrategyCrossResultEntity::getCurrentAlgo));
for (Map.Entry<Integer, List<StrategyCrossResultEntity>> entry : typeMap.entrySet()) {
Integer type = entry.getKey();
List<StrategyCrossResultEntity> value = entry.getValue();
optCount = value.size();
optCount += value.size();
for (StrategyCrossResultEntity entity : value) {
if (Objects.equals(1, type)) {
optTime += Math.abs(entity.getExtendTime());
Integer rtnType = entity.getRtnType();
if (rtnType < 0 && rtnType >= -150) {
optTime += Math.abs(entity.getExtendTime());
} else if (rtnType < -150 && rtnType >= -250){
optTime += 1;
}
}
if (Objects.equals(2, type)) {
optTime += entity.getDuration();
if (Objects.nonNull(entity.getDuration())) {
optTime += entity.getDuration();
}
}
if (Objects.equals(3, type)) {
Integer rtnType = entity.getRtnType();
......@@ -456,10 +465,52 @@ public class StrategyControlServiceImpl implements StrategyControlService {
}
}
}
strategyOptTimesVO.setCount(optCount);
strategyOptTimesVO.setTimes(optTime);
}
// 绿波优化次数
long current = System.currentTimeMillis();
LambdaQueryWrapper<StrategyGreenOptHistEntity> greenQuery = new LambdaQueryWrapper<>();
greenQuery.ge(StrategyGreenOptHistEntity::getControlTime, midNight);
greenQuery.eq(StrategyGreenOptHistEntity::getResponseCode, 200);
greenQuery.orderByDesc(StrategyGreenOptHistEntity::getControlTime);
List<StrategyGreenOptHistEntity> entities = strategyGreenOptHistMapper.selectList(greenQuery);
if (!CollectionUtils.isEmpty(entities)) {
Map<Integer, List<StrategyGreenOptHistEntity>> listMap = entities.stream().collect(Collectors.groupingBy(StrategyGreenOptHistEntity::getGreenId));
for (Map.Entry<Integer, List<StrategyGreenOptHistEntity>> entry : listMap.entrySet()) {
Integer greenId = entry.getKey();
int greenOptCount = 0;
int greenOptTime = 0;
long endTime = current;
List<StrategyGreenOptHistEntity> value = entry.getValue();
// 策略正常结束
StrategyGreenOptHistEntity last = value.get(0);
if (Objects.nonNull(last) && Objects.equals(-1, last.getControlMethod())) {
Date parse = DateUtil.parse(last.getControlTime(), "yyyy-MM-dd HH:mm:ss");
long controlLong = parse.getTime();
endTime = controlLong;
}
for (StrategyGreenOptHistEntity entity : value) {
if (Objects.equals(0 , entity.getDirType())) {
continue;
}
String controlTime = entity.getControlTime();
Integer controlMethod = entity.getControlMethod();
Date parse = DateUtil.parse(controlTime, "yyyy-MM-dd HH:mm:ss");
long controlLong = parse.getTime();
// 优化次数:去掉-1, 剩余记录总数 当前情况未考虑多次启动停止
if (!Objects.equals(-1, controlMethod)) {
greenOptCount += 1;
long temp = endTime;
int offset = (int) ((temp - controlLong) / 1000);
greenOptTime += offset;
}
endTime = controlLong;
}
optCount += greenOptCount;
optTime += greenOptTime;
}
}
strategyOptTimesVO.setCount(optCount);
strategyOptTimesVO.setTimes(optTime);
return JsonViewObject.newInstance().success(strategyOptTimesVO);
}
......@@ -548,8 +599,8 @@ public class StrategyControlServiceImpl implements StrategyControlService {
queryWrapper.ge(StrategyGreenOptHistEntity::getControlTime, date);
queryWrapper.orderByAsc(StrategyGreenOptHistEntity::getControlTime);
List<StrategyGreenOptHistEntity> entities = strategyGreenOptHistMapper.selectList(queryWrapper);
String optMethod = "效率提升";
if (!CollectionUtils.isEmpty(entities)) {
String optMethod = "效率提升";
Map<Integer, Optional<StrategyGreenOptHistEntity>> groupMap = entities.stream().collect(Collectors.groupingBy(StrategyGreenOptHistEntity::getGreenId, Collectors.maxBy(Comparator.comparing(StrategyGreenOptHistEntity::getControlTime))));
for (Map.Entry<Integer, Optional<StrategyGreenOptHistEntity>> entry : groupMap.entrySet()) {
Integer greenId = entry.getKey();
......@@ -567,9 +618,8 @@ public class StrategyControlServiceImpl implements StrategyControlService {
Map<Integer, GreenwaveInfoPO> greenWaveMap = GreenWaveInfoCache.greenWaveMap;
GreenwaveInfoPO greenwaveInfoPO = greenWaveMap.get(greenId);
String dir = entity.getDir();
String desc = GreenBeltDirEnum.getDesc(dir);
ext.setBizId(String.valueOf(entity.getGreenId()));
ext.setCrossName(greenwaveInfoPO.getName() + desc);
ext.setCrossName(greenwaveInfoPO.getName());
String location = greenwaveInfoPO.getWkt();
ext.setWkt(location);
ext.setOptMethod(optMethod);
......@@ -593,9 +643,25 @@ public class StrategyControlServiceImpl implements StrategyControlService {
results.add(ext);
}
}
} else {
Map<Integer, GreenwaveInfoPO> greenWaveMap = GreenWaveInfoCache.greenWaveMap;
for (Map.Entry<Integer, GreenwaveInfoPO> entry : greenWaveMap.entrySet()) {
Integer greenId = entry.getKey();
GreenwaveInfoPO value = entry.getValue();
StrategyControlDataExt ext = new StrategyControlDataExt();
ext.setBizId(String.valueOf(greenId));
ext.setCrossName(value.getName());
ext.setWkt(value.getWkt());
ext.setOptMethod(optMethod);
ext.setStrategyName("动态绿波");
ext.setOptStatus("未优化");
ext.setStatus(0);
results.add(ext);
}
}
results.stream().distinct().sorted(Comparator.comparing(StrategyControlDataExt::getStatus).reversed()).collect(Collectors.toList());
Collections.sort(results, Comparator.comparingInt(StrategyControlDataExt::getStatus).reversed());
results.stream().distinct().collect(Collectors.toList());
return results;
}
......@@ -619,10 +685,11 @@ public class StrategyControlServiceImpl implements StrategyControlService {
currentAlgo = null;
}
if (Objects.isNull(currentAlgo)) {
// 0无策略
if (Objects.isNull(currentAlgo) || Objects.equals(0, currentAlgo)) {
ext.setOptStatus("正常");
ext.setOptMethod("畅通");
} else if (Objects.equals(1, currentAlgo)) {
} else if (Objects.equals(2, currentAlgo)) {
ext.setOptStatus("优化中");
ext.setOptMethod("均衡调控");
} else {
......@@ -1044,6 +1111,7 @@ public class StrategyControlServiceImpl implements StrategyControlService {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
LambdaQueryWrapper<StrategyFactoryEntity> queryWrapper = new LambdaQueryWrapper<>();
if (Objects.isNull(vo)) {
queryWrapper.orderByDesc(StrategyFactoryEntity::getId);
List<StrategyFactoryEntity> result = strategyFactoryMapper.selectList(queryWrapper);
jsonViewObject.success(result);
} else {
......@@ -1063,6 +1131,7 @@ public class StrategyControlServiceImpl implements StrategyControlService {
if (StringUtils.isNotBlank(vo.getCompany())) {
queryWrapper.eq(StrategyFactoryEntity::getCompany, vo.getCompany());
}
queryWrapper.orderByDesc(StrategyFactoryEntity::getId);
Page<StrategyFactoryEntity> result = strategyFactoryMapper.selectPage(page, queryWrapper);
jsonViewObject.success(result);
}
......@@ -1073,15 +1142,15 @@ public class StrategyControlServiceImpl implements StrategyControlService {
public JsonViewObject strategyFactorySave(StrategyFactoryEntity entity) throws Exception {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
LambdaQueryWrapper<StrategyFactoryEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(StrategyFactoryEntity::getStrategyNo, entity.getStrategyNo());
List<StrategyFactoryEntity> entities = strategyFactoryMapper.selectList(queryWrapper);
if (Objects.nonNull(entities) && entities.size() > 0) {
return jsonViewObject.success("策略编号重复, 请修改策略编号");
}
if (Objects.nonNull(entity.getId())) {
strategyFactoryMapper.updateById(entity);
} else {
LambdaQueryWrapper<StrategyFactoryEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(StrategyFactoryEntity::getStrategyNo, entity.getStrategyNo());
List<StrategyFactoryEntity> entities = strategyFactoryMapper.selectList(queryWrapper);
if (Objects.nonNull(entities) && entities.size() > 0) {
return jsonViewObject.fail("策略编号重复");
}
strategyFactoryMapper.insert(entity);
}
} catch (Exception e) {
......@@ -1179,21 +1248,27 @@ public class StrategyControlServiceImpl implements StrategyControlService {
}
List<StrategyFactoryEntity> factoryEntities = strategyFactoryMapper.selectList(factoryQuery);
String currentName = "";
List<String> strategyNames = new ArrayList<>();
String currentNo = "";
List<StrategyNameCrossVO.Detail> details = new ArrayList<>();
for (StrategyFactoryEntity factoryEntity : factoryEntities) {
String company = factoryEntity.getCompany();
String strategyName = factoryEntity.getStrategyName();
String method = factoryEntity.getMethod();
String strategyNo = factoryEntity.getStrategyNo();
String name = String.join("-", company, method, strategyName);
strategyNames.add(name);
StrategyNameCrossVO.Detail detail = new StrategyNameCrossVO.Detail();
detail.setStrategyNo(strategyNo);
detail.setStrategyName(name);
details.add(detail);
if (StringUtils.equals(strategyNo, currentStrategyNo)) {
currentName = name;
currentNo = currentStrategyNo;
}
}
if (StringUtils.isNotBlank(currentName)) {
strategyNameCrossVO.setCurrentName(currentName);
strategyNameCrossVO.setStrategyNo(currentNo);
} else {
if (!CollectionUtils.isEmpty(factoryEntities)) {
StrategyFactoryEntity strategyFactoryEntity = factoryEntities.get(0);
......@@ -1202,9 +1277,10 @@ public class StrategyControlServiceImpl implements StrategyControlService {
String method = strategyFactoryEntity.getMethod();
String name = String.join("-", company, method, strategyName);
strategyNameCrossVO.setCurrentName(name);
strategyNameCrossVO.setStrategyNo(strategyFactoryEntity.getStrategyNo());
}
}
strategyNameCrossVO.setStrategyNames(strategyNames);
strategyNameCrossVO.setDetails(details);
}
return jsonViewObject.success(strategyNameCrossVO);
} catch (Exception e) {
......@@ -1212,4 +1288,78 @@ public class StrategyControlServiceImpl implements StrategyControlService {
return jsonViewObject.fail("策略管理-路口详情-优化策略查询失败");
}
}
@Override
public JsonViewObject strategyLockSend(StrategyLockSendVO strategyLockSendVO) throws Exception {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
ObjectMapper instance = JacksonUtils.getInstance();
LambdaQueryWrapper<StrategyControlDataEntity> queryWrapper = new LambdaQueryWrapper<>();
Date current = new Date();
queryWrapper.eq(StrategyControlDataEntity::getBizId, strategyLockSendVO.getCrossId());
queryWrapper.eq(StrategyControlDataEntity::getBizType, 0);
queryWrapper.le(StrategyControlDataEntity::getScheduleStart, current);
queryWrapper.ge(StrategyControlDataEntity::getScheduleEnd, current);
queryWrapper.orderByAsc(StrategyControlDataEntity::getId);
List<StrategyControlDataEntity> entities = strategyControlInfoMapper.selectList(queryWrapper);
for (StrategyControlDataEntity entity : entities) {
StrategyControlDataEntity result = new StrategyControlDataEntity();
BeanUtils.copyProperties(entity, result);
String time = entity.getTime();
List<StrategyControlDataVO.TimeTable> timeTables = instance.readValue(time, new TypeReference<List<StrategyControlDataVO.TimeTable>>() {});
for (StrategyControlDataVO.TimeTable timeTable : timeTables) {
Integer week = timeTable.getWeek();
int curWeek = DateUtil.getWeek(new Date());
if (curWeek == 0) {
curWeek = 7;
}
if (!Objects.equals(curWeek, week)) {
continue;
}
String[] timeList = timeTable.getTimeList();
for (String s : timeList) {
String[] hours = s.split(",");
for (String hour : hours) {
String[] currentHour = hour.split("-");
String startHour = currentHour[0];
String entHour = currentHour[1];
if (StringUtils.equals("24:00", entHour)) {
entHour = "23:59";
}
String format = DateUtil.format(current, Constants.DATE_FORMAT.E_DATE_FORMAT_HOUR_MINUTE);
Date currentTime = DateUtil.parse(format, "HH:mm");
Date startHourDate = DateUtil.parse(startHour, "HH:mm");
Date endHourDate = DateUtil.parse(entHour, "HH:mm");
if (currentTime.after(startHourDate) && currentTime.before(endHourDate)) {
// 正在执行测策略 0=绿波带,1=失衡,2=溢出,3=空放
Integer strategy = entity.getStrategy();
// 当前策略延长时间
Double lockTime = strategyLockSendVO.getLockTime();
LocalTime lockEndTime = LocalTime.parse(entHour);
if (Objects.equals(lockTime, 0.5)) {
lockEndTime = lockEndTime.plusMinutes(30);
} else {
lockEndTime = lockEndTime.plusHours(lockTime.intValue());
}
log.error("延长之后时间:{}", lockEndTime.toString());
}
}
}
}
}
} catch (Exception e) {
log.error("策略锁定下发失败:{}", e);
return jsonViewObject.success("策略锁定成功");
}
log.error("收到请求参数:{}", strategyLockSendVO);
return jsonViewObject.success("策略锁定成功");
}
@Override
public JsonViewObject strategyLockRecoverSend(StrategyLockSendVO strategyLockSendVO) throws Exception {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
log.error("收到请求参数:{}", strategyLockSendVO);
return jsonViewObject.success("策略恢复成功");
}
}
package net.wanji.opt.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author duanruiming
* @date 2025/02/15 14:51
* @description 策略管理-地图路口详情-策略锁定实体
*/
@Data
@ApiModel(value = "StrategyLockSendVO", description = "策略管理-地图路口详情-策略锁定实体")
public class StrategyLockSendVO {
@ApiModelProperty(name = "路口ID",notes = "")
private String crossId;
@ApiModelProperty(name = "锁定时间",notes = "")
private Double lockTime;
@ApiModelProperty(name = "策略编号",notes = "")
private String strategyNo;
}
......@@ -14,5 +14,12 @@ import java.util.List;
@ApiModel(value = "StrategyNameCrossVO", description = "策略管理-路口详情-优化策略返回实体")
public class StrategyNameCrossVO {
private String currentName;
private List<String> strategyNames;
private String strategyNo;
private List<Detail> details;
@Data
public static class Detail {
private String strategyName;
private String strategyNo;
}
}
......@@ -273,9 +273,18 @@ public class SignalStatusServiceImpl implements SignalStatusService {
log.error("海信灯态推送百度失败:{}", e.getMessage());
}
try {
OkHttpClientUtil.jsonPost(yiGouUrl, jackson.writeValueAsString(hisenseLightStatusPojos));
HisenseLightStatusPojo hisenseLightStatusPojo = hisenseLightStatusPojos.get(0);
String bodyStr = hisenseLightStatusPojo.getBody();
List<HisenseLightStatusPojo.Body> bodies = jackson.readValue(bodyStr, new TypeReference<List<HisenseLightStatusPojo.Body>>() {});
for (HisenseLightStatusPojo.Body body : bodies) {
HisenseLightStatusPojo.ContentBody content = body.getContent();
String crossId = content.getCrossId();
if (StringUtils.equalsIgnoreCase("255136", crossId)) {
OkHttpClientUtil.jsonPost(yiGouUrl, jackson.writeValueAsString(hisenseLightStatusPojos));
}
}
} catch (Exception e) {
log.error("海信灯态推送易购失败:{}", e.getMessage());
log.error("海信灯态推送易购失败:{}", e);
}
}
......
......@@ -806,23 +806,9 @@ public class StaticInfoServiceImpl implements StaticInfoService {
element.addElement(HttpConstants.MESSAGETYPE).setText(HttpConstants.MESSAGETYPE_30);
Element messageContent = (Element) document.selectSingleNode(HttpConstants.SYSTEMSCRIPTION_MESSAGECONTENT);
messageContent.addElement(HttpConstants.SPOT).setText(crossInfoPOExt.getCode());
//获取当前运行的方案号
/*
//获取当前运行的方案号 从灯态中获取
Integer integer = planMap.get(crossSchemeRingsDTO.getCrossId());
/*if (ObjectUtil.isEmpty(integer)){
CoordinationStatus coordinationStatus = crossPlan(crossSchemeRingsDTO.getCrossId());
if (ObjectUtil.isEmpty(coordinationStatus)) {
//获取方案号失败
log.error("请求方案环图前,获取当前运行方案号失败,crossId:{}", crossSchemeRingsDTO.getCrossId());
return null;
} else if ("255".equals(coordinationStatus.getCoordPatternStatus())) {
//黃闪
CrossSchemeRings crossSchemeRings = new CrossSchemeRings();
crossSchemeRings.setSpot(crossSchemeRingsDTO.getCrossId());
crossSchemeRings.setPattern(coordinationStatus.getCoordPatternStatus());
return crossSchemeRings;
}
integer = Integer.valueOf(coordinationStatus.getCoordPatternStatus());
}*/
if (ObjectUtil.isEmpty(integer)){
//获取方案号失败
log.error("请求方案环图前,获取当前运行方案号失败,没有该路口的灯态信息,crossId:{}", crossSchemeRingsDTO.getCrossId());
......@@ -834,8 +820,23 @@ public class StaticInfoServiceImpl implements StaticInfoService {
crossSchemeRings.setPattern(String.valueOf(integer));
return crossSchemeRings;
}
messageContent.addElement(HttpConstants.PATTERN).setText(String.valueOf(integer));*/
//获取当前运行的方案号 从海信视图获取
CoordinationStatus coordinationStatus = crossPlan(crossSchemeRingsDTO.getCrossId());
if (ObjectUtil.isEmpty(coordinationStatus)) {
//获取方案号失败
log.error("请求方案环图前,获取当前运行方案号失败,crossId:{}", crossSchemeRingsDTO.getCrossId());
return null;
} else if ("255".equals(coordinationStatus.getCoordPatternStatus())) {
//黃闪
CrossSchemeRings crossSchemeRings = new CrossSchemeRings();
crossSchemeRings.setSpot(crossSchemeRingsDTO.getCrossId());
crossSchemeRings.setPattern(coordinationStatus.getCoordPatternStatus());
return crossSchemeRings;
}
messageContent.addElement(HttpConstants.PATTERN).setText(coordinationStatus.getCoordPatternStatus());
messageContent.addElement(HttpConstants.PATTERN).setText(String.valueOf(integer));
//给海信发送http请求
String post = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML());
......
......@@ -6,6 +6,7 @@ import net.wanji.common.utils.tool.StringUtils;
import okhttp3.*;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
/**
* @ClassName OkHttpClient
......@@ -48,7 +49,10 @@ public class OkHttpClientUtil {
return null;
}
// 创建 OkHttpClient 实例
OkHttpClient client = new OkHttpClient();
OkHttpClient client = new OkHttpClient().newBuilder()
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
// 创建请求体
RequestBody body = RequestBody.create(json, MediaType.get("application/json; charset=utf-8"));
// 创建请求
......@@ -66,7 +70,7 @@ public class OkHttpClientUtil {
}
} catch (Exception e) {
log.error("OkHttpClientUtil远程服务url:{}, 调用异常:{}", url, e.getMessage());
throw new Exception();
throw new Exception(e);
}
return null;
}
......
......@@ -325,8 +325,8 @@ public class SignalStatusTask {
} else {
Integer countDown = null;
if (phaseMap.get(dir) instanceof Map) {
Map<Integer, Integer> turnMap = (Map<Integer, Integer>) phaseMap.get(dir);
countDown = turnMap.get(turn);
Map<String, Integer> turnMap = (Map<String, Integer>) phaseMap.get(dir);
countDown = turnMap.get(String.valueOf(turn));
} else {
countDown = (Integer) phaseMap.get(key);
}
......
package net.wanji.utc.util;
import cn.hutool.core.util.ObjectUtil;
import io.swagger.annotations.ApiModelProperty;
import net.wanji.databus.dao.entity.BaseCrossSchemePO;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassName ApiModelPropertyUtils
* @Description 通过反射打印 属性的注解
* @Author zhouleilei
* @Date 2025/2/12 17:22
*/
public class ApiModelPropertyUtils {
public static void main(String[] args) {
// GreenwaveScenePO areaIndex = new GreenwaveScenePO();
// System.out.println(areaIndex.toString().replaceAll("=null",""));
// 替换为你的类
Class<BaseCrossSchemePO> clazz = BaseCrossSchemePO.class;
List<String> list = new ArrayList<>();
// 遍历所有字段
for (Field field : clazz.getDeclaredFields()) {
// 获取 @ApiModelProperty 注解
ApiModelProperty apiModelProperty = field.getAnnotation(ApiModelProperty.class);
if (apiModelProperty != null) {
System.out.print(field.getName() +"\t");
System.out.println(ObjectUtil.isNotEmpty(apiModelProperty.value())?apiModelProperty.value():apiModelProperty.name());
// list.add(apiModelProperty.value());
// 你可以继续打印其他属性如 notes, required 等
}
}
}
}
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