Commit 77c41809 authored by zhouleilei's avatar zhouleilei

Merge remote-tracking branch 'origin/master'

parents eb95cab1 75d367da
package net.wanji.opt.cache;
import lombok.extern.slf4j.Slf4j;
import net.wanji.databus.dao.entity.GreenwaveInfoPO;
import net.wanji.databus.dao.mapper.GreenwaveInfoMapper;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author duanruiming
* @date 2024/11/29 11:19
*/
@Component
@Slf4j
public class GreenWaveInfoCache implements CommandLineRunner {
public static final Map<Integer, GreenwaveInfoPO> greenWaveMap = new HashMap<>();
@Resource
private GreenwaveInfoMapper greenwaveInfoMapper;
@Override
public void run(String... args) throws Exception {
try {
List<GreenwaveInfoPO> greenWaveInfoPOS = greenwaveInfoMapper.selectAll();
if (!CollectionUtils.isEmpty(greenWaveInfoPOS)) {
for (GreenwaveInfoPO greenWaveInfoPO : greenWaveInfoPOS) {
greenWaveMap.put(greenWaveInfoPO.getId(), greenWaveInfoPO);
}
}
} catch (Exception e) {
log.error("绿波信息初始化失败:", e);
throw new RuntimeException("绿波信息初始化失败!");
}
}
}
...@@ -167,6 +167,7 @@ public class GreenwaveInducesHistController { ...@@ -167,6 +167,7 @@ public class GreenwaveInducesHistController {
if (Objects.nonNull(greenwaveInfoByGreenId) && greenwaveInfoByGreenId.size() > 0) { if (Objects.nonNull(greenwaveInfoByGreenId) && greenwaveInfoByGreenId.size() > 0) {
greenwaveInducesDTO.setGreenName(greenwaveInfoByGreenId.get(0).getName()); greenwaveInducesDTO.setGreenName(greenwaveInfoByGreenId.get(0).getName());
greenwaveInducesDTO.setDesignSpeed(greenwaveInfoByGreenId.get(0).getDesignSpeed()); greenwaveInducesDTO.setDesignSpeed(greenwaveInfoByGreenId.get(0).getDesignSpeed());
greenwaveInducesDTO.setWkt(greenwaveInfoByGreenId.get(0).getWkt());
} }
greenwaveInducesDTO.setStatus(o.getStatus()); greenwaveInducesDTO.setStatus(o.getStatus());
greenwaveInducesDTO.setStrategyId(o.getStrategyId()); greenwaveInducesDTO.setStrategyId(o.getStrategyId());
......
...@@ -28,6 +28,7 @@ import java.io.IOException; ...@@ -28,6 +28,7 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects;
@Api(value = "InduceSendController", description = "诱导屏-下发消息接口(对接易华录)") @Api(value = "InduceSendController", description = "诱导屏-下发消息接口(对接易华录)")
@RestController @RestController
...@@ -101,9 +102,10 @@ public class InduceSendController { ...@@ -101,9 +102,10 @@ public class InduceSendController {
// 根据 equipCode 获取文件名 // 根据 equipCode 获取文件名
LambdaQueryWrapper<InduceHist> InduceHistQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<InduceHist> InduceHistQueryWrapper = new LambdaQueryWrapper<>();
InduceHistQueryWrapper.eq(InduceHist::getEquipCode, equipCode); InduceHistQueryWrapper.eq(InduceHist::getEquipCode, equipCode);
InduceHistQueryWrapper.orderByDesc(InduceHist::getCreateTime); InduceHistQueryWrapper.orderByAsc(InduceHist::getCreateTime);
// InduceHist pictureFile=this.induceHistService.getOne(InduceHistQueryWrapper);
InduceHist pictureFile = this.induceHistService.getOne(InduceHistQueryWrapper,false); InduceHist pictureFile = this.induceHistService.getOne(InduceHistQueryWrapper,false);
if (pictureFile == null) { if (Objects.isNull(pictureFile) && pictureFile.getFilePath() == null) {
return ResponseEntity.status(HttpStatus.OK) return ResponseEntity.status(HttpStatus.OK)
.body("无效的文件ID".getBytes(StandardCharsets.UTF_8)); .body("无效的文件ID".getBytes(StandardCharsets.UTF_8));
} }
......
package net.wanji.opt.controller.signalopt;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author duanruiming
* @date 2024/11/28 16:03
*/
@Api(value = "CrossIndexController", description = "路口指标控制器")
@RequestMapping("/crossIndex")
@RestController
public class GreenBeltController {
}
...@@ -46,5 +46,8 @@ public class GreenwaveInducesDTO { ...@@ -46,5 +46,8 @@ public class GreenwaveInducesDTO {
@ApiModelProperty(name = "诱导屏列表") @ApiModelProperty(name = "诱导屏列表")
private List<InduceDTO> induceList; private List<InduceDTO> induceList;
@ApiModelProperty(name = "绿波带坐标")
private String wkt;
} }
...@@ -30,7 +30,7 @@ public class CrossIndexServiceImpl implements CrossIndexService { ...@@ -30,7 +30,7 @@ public class CrossIndexServiceImpl implements CrossIndexService {
@Override @Override
public Map<Integer, CrossDirDataRealtimePO> crossDirIndex(CrossIdBO crossIdBO) { public Map<Integer, CrossDirDataRealtimePO> crossDirIndex(CrossIdBO crossIdBO) {
List<CrossDirDataRealtimePO> crossDirDataRealtimePOS = crossDirDataRealtimeMapper.selectMaxBatchTime(crossIdBO.getCrossId()); List<CrossDirDataRealtimePO> crossDirDataRealtimePOS = crossDirDataRealtimeMapper.selectBycrossId(crossIdBO.getCrossId());
if (!CollectionUtils.isEmpty(crossDirDataRealtimePOS)) { if (!CollectionUtils.isEmpty(crossDirDataRealtimePOS)) {
Map<Integer, CrossDirDataRealtimePO> dirDataMap = new HashMap<>(crossDirDataRealtimePOS.size()); Map<Integer, CrossDirDataRealtimePO> dirDataMap = new HashMap<>(crossDirDataRealtimePOS.size());
for (CrossDirDataRealtimePO crossDirDataRealtimePO : crossDirDataRealtimePOS) { for (CrossDirDataRealtimePO crossDirDataRealtimePO : crossDirDataRealtimePOS) {
......
...@@ -70,10 +70,14 @@ public class InduceSendServiceImpl implements InduceSendService { ...@@ -70,10 +70,14 @@ public class InduceSendServiceImpl implements InduceSendService {
@Value("${spring.rabbitmq.queue-name}") @Value("${spring.rabbitmq.queue-name}")
private String queueName; private String queueName;
/**
* 是否下发屏幕
*/
@Value("${spring.rabbitmq.sending}")
private Boolean sending=false;
private FTPClient ftpClient; private FTPClient ftpClient;
@Override @Override
public void send(MessageParam param) throws IOException, TemplateException { public void send(MessageParam param) throws IOException, TemplateException {
//生成诱导屏推送sourceId //生成诱导屏推送sourceId
...@@ -88,9 +92,11 @@ public class InduceSendServiceImpl implements InduceSendService { ...@@ -88,9 +92,11 @@ public class InduceSendServiceImpl implements InduceSendService {
LambdaQueryWrapper<DeviceInduces> deviceQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceInduces> deviceQueryWrapper = new LambdaQueryWrapper<>();
deviceQueryWrapper.eq(DeviceInduces::getEquipCode, induceTemplate.getEquipCode()); deviceQueryWrapper.eq(DeviceInduces::getEquipCode, induceTemplate.getEquipCode());
DeviceInduces deviceInduces = deviceInducesService.getOne(deviceQueryWrapper); DeviceInduces deviceInduces = deviceInducesService.getOne(deviceQueryWrapper);
if(Objects.nonNull(deviceInduces)) {
param.setResolutionWidth(deviceInduces.getResolutionWidth().intValue()); param.setResolutionWidth(deviceInduces.getResolutionWidth().intValue());
param.setResolutionHeight(deviceInduces.getResolutionHeight().intValue()); param.setResolutionHeight(deviceInduces.getResolutionHeight().intValue());
} }
}
// 获取图片字节数组 // 获取图片字节数组
byte[] imageBytes = induceTemplate.getFileContent(); byte[] imageBytes = induceTemplate.getFileContent();
if (imageBytes != null || imageBytes.length > 0) { if (imageBytes != null || imageBytes.length > 0) {
...@@ -107,7 +113,9 @@ public class InduceSendServiceImpl implements InduceSendService { ...@@ -107,7 +113,9 @@ public class InduceSendServiceImpl implements InduceSendService {
String filePath = uploadFile(image,dirName, fileName); String filePath = uploadFile(image,dirName, fileName);
param.setFtpPath(filePath); param.setFtpPath(filePath);
induceHist.setFilePath(PATH + dirName+"/"+fileName); induceHist.setFilePath(PATH + dirName+"/"+fileName);
greenwaveinduces.setSourceId(PATH + dirName+"/"+fileName); if(Objects.nonNull(greenwaveinduces)) {
greenwaveinduces.setSourceId(PATH + dirName + "/" + fileName);
}
} }
log.info("上传文件至ftp-filePath:{}", param.getFtpPath()); log.info("上传文件至ftp-filePath:{}", param.getFtpPath());
// //如果已发布,则调用下屏服务 // //如果已发布,则调用下屏服务
...@@ -138,18 +146,22 @@ public class InduceSendServiceImpl implements InduceSendService { ...@@ -138,18 +146,22 @@ public class InduceSendServiceImpl implements InduceSendService {
// messageProperties.setContentType("text/plain"); // 设置内容类型为text/plain // messageProperties.setContentType("text/plain"); // 设置内容类型为text/plain
// 创建Message并设置内容 // 创建Message并设置内容
// Message messageSend = new Message(message.getBytes(), messageProperties); // Message messageSend = new Message(message.getBytes(), messageProperties);
//rabbitTemplate.convertAndSend("",queueName, message); if(sending) {
rabbitTemplate.convertAndSend("", queueName, message);
}
log.info("mqtt发送信息-topic:{},queueName:{},message:{}", queueName, message); log.info("mqtt发送信息-topic:{},queueName:{},message:{}", queueName, message);
//1、增加下发记录log 2、计数 3、标记已发布状体 //1、增加下发记录log 2、计数 3、标记已发布状体
induceHist.setEquipCode(induceTemplate.getEquipCode()); induceHist.setEquipCode(induceTemplate.getEquipCode());
induceHist.setGreenId(param.getGreenId()); induceHist.setGreenId(param.getGreenId());
induceHistService.save(induceHist); induceHistService.save(induceHist);
//保存诱导状态信息 //保存诱导状态信息
greenwaveinduces.setInducesCount(Objects.isNull(greenwaveinduces.getInducesCount()) ? 0 : greenwaveinduces.getInducesCount()+1); if(Objects.nonNull(greenwaveinduces)) {
greenwaveinduces.setInducesCount(Objects.isNull(greenwaveinduces.getInducesCount()) ? 0 : greenwaveinduces.getInducesCount() + 1);
greenwaveinduces.setStatus(1); greenwaveinduces.setStatus(1);
greenwaveInducesService.saveOrUpdate(greenwaveinduces); greenwaveInducesService.saveOrUpdate(greenwaveinduces);
} }
} }
}
@Override @Override
public String uploadFile(BufferedImage image,String directoryName, String fileName) { public String uploadFile(BufferedImage image,String directoryName, String fileName) {
......
...@@ -10,6 +10,7 @@ import net.wanji.opt.synthesis.pojo.StrategyControlDataEntity; ...@@ -10,6 +10,7 @@ import net.wanji.opt.synthesis.pojo.StrategyControlDataEntity;
import net.wanji.opt.synthesis.pojo.StrategyControlDetailList; import net.wanji.opt.synthesis.pojo.StrategyControlDetailList;
import net.wanji.opt.synthesis.pojo.StrategyControlVO; import net.wanji.opt.synthesis.pojo.StrategyControlVO;
import net.wanji.opt.synthesis.pojo.StrategyFactoryEntity; import net.wanji.opt.synthesis.pojo.StrategyFactoryEntity;
import net.wanji.opt.synthesis.pojo.request.StrategyHistReq;
import net.wanji.opt.synthesis.service.StrategyControlService; import net.wanji.opt.synthesis.service.StrategyControlService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -22,7 +23,7 @@ import javax.ws.rs.core.MediaType; ...@@ -22,7 +23,7 @@ import javax.ws.rs.core.MediaType;
* @date 2024/11/03 12:42 * @date 2024/11/03 12:42
* @description 神思电子获取1.1策略计划基础信息 * @description 神思电子获取1.1策略计划基础信息
*/ */
@Api(value = "StrategyControlController", description = "策略控制") @Api(value = "strategyControl", description = "策略控制")
@RequestMapping("/strategyControl") @RequestMapping("/strategyControl")
@RestController @RestController
public class StrategyControlController { public class StrategyControlController {
...@@ -59,6 +60,18 @@ public class StrategyControlController { ...@@ -59,6 +60,18 @@ public class StrategyControlController {
@ApiOperation(value = "策略控制查询列表", notes = "策略控制查询列表", @ApiOperation(value = "策略控制查询列表", notes = "策略控制查询列表",
response = JsonViewObject.class, response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON) produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/crossStrategyHistList")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = StrategyControlDataEntity.class),
})
public JsonViewObject crossStrategyHistList() throws Exception {
return strategyControlService.crossStrategyHistList();
}
@ApiOperation(value = "策略控制历史查询列表", notes = "策略控制历史查询列表",
response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/crossStrategyInfoList") @GetMapping(value = "/crossStrategyInfoList")
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "OK", response = StrategyControlDataEntity.class), @ApiResponse(code = 200, message = "OK", response = StrategyControlDataEntity.class),
......
...@@ -27,20 +27,6 @@ public class StrategyGreenBeltController { ...@@ -27,20 +27,6 @@ public class StrategyGreenBeltController {
@Resource @Resource
private StrategyGreenBeltServiceImpl strategyGreenBeltService; private StrategyGreenBeltServiceImpl strategyGreenBeltService;
@ApiOperation(value = "绿波时序图数据查询", notes = "绿波时序图数据查询", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/greenBletData")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = GreenBeltInfoVO.class),
})
public JsonViewObject greenBletData(String greenId) throws Exception {
//String key = Constants.GREEN_ID_OPT_KEY.concat(greenId);
//Object obj = redisUtils.get(key);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
//GreenBeltInfoVO greenBeltInfoVO = JacksonUtils.getInstance().readValue(String.valueOf(obj), GreenBeltInfoVO.class);
return jsonViewObject.success(null);
}
@ApiOperation(value = "绿波时序图图形查询", notes = "绿波时序图图形查询", response = JsonViewObject.class, @ApiOperation(value = "绿波时序图图形查询", notes = "绿波时序图图形查询", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON) produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/greenBeltChart") @GetMapping(value = "/greenBeltChart")
......
package net.wanji.opt.synthesis.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author duanruiming
* @date 2024/11/29 11:03
*/
@Data
@ApiModel(value = "StrategyControlHistVO", description = "策略控制操作实体")
public class StrategyControlHistVO {
@ApiModelProperty("路口编号干线编号")
private String id;
@ApiModelProperty("路口名称干线名称")
private String name;
@ApiModelProperty("策略号")
private Integer strategy;
@ApiModelProperty("策略名称")
private String strategyName;
@ApiModelProperty("优化时间")
private String optTime;
@ApiModelProperty("优化结果")
private String result;
@ApiModelProperty("经纬度")
private String wkt;
}
package net.wanji.opt.synthesis.pojo.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author duanruiming
* @date 2024/11/29 11:10
*/
@Data
@ApiModel(value = "StrategyHistReq", description = "策略控制历史请求实体")
public class StrategyHistReq {
@ApiModelProperty("路口编号/干线编号")
private String id;
@ApiModelProperty("当前日期,为空查询时间")
private Date currentDate;
}
...@@ -5,6 +5,7 @@ import net.wanji.opt.synthesis.pojo.StrategyControlDataEntity; ...@@ -5,6 +5,7 @@ import net.wanji.opt.synthesis.pojo.StrategyControlDataEntity;
import net.wanji.opt.synthesis.pojo.StrategyControlDetailList; import net.wanji.opt.synthesis.pojo.StrategyControlDetailList;
import net.wanji.opt.synthesis.pojo.StrategyControlVO; import net.wanji.opt.synthesis.pojo.StrategyControlVO;
import net.wanji.opt.synthesis.pojo.StrategyFactoryEntity; import net.wanji.opt.synthesis.pojo.StrategyFactoryEntity;
import net.wanji.opt.synthesis.pojo.request.StrategyHistReq;
/** /**
* @author duanruiming * @author duanruiming
...@@ -15,6 +16,7 @@ public interface StrategyControlService { ...@@ -15,6 +16,7 @@ public interface StrategyControlService {
JsonViewObject strategyInfoPageList(StrategyControlDataEntity entity) throws Exception; JsonViewObject strategyInfoPageList(StrategyControlDataEntity entity) throws Exception;
JsonViewObject crossStrategyInfoList(Integer type) throws Exception; JsonViewObject crossStrategyInfoList(Integer type) throws Exception;
JsonViewObject crossStrategyHistList() throws Exception;
JsonViewObject crossOptInfoList(Integer type) throws Exception; JsonViewObject crossOptInfoList(Integer type) throws Exception;
JsonViewObject strategyPlanDetail(String crossId) throws Exception; JsonViewObject strategyPlanDetail(String crossId) throws Exception;
......
...@@ -11,16 +11,17 @@ import lombok.extern.slf4j.Slf4j; ...@@ -11,16 +11,17 @@ import lombok.extern.slf4j.Slf4j;
import net.wanji.common.enums.DateStyle; import net.wanji.common.enums.DateStyle;
import net.wanji.common.framework.Constants; import net.wanji.common.framework.Constants;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.utils.licenseUtils.DateUtils;
import net.wanji.common.utils.tool.JacksonUtils; import net.wanji.common.utils.tool.JacksonUtils;
import net.wanji.databus.dao.entity.GreenwaveInfoPO; import net.wanji.databus.dao.entity.GreenwaveInfoPO;
import net.wanji.databus.dao.mapper.BaseCrossInfoMapper; import net.wanji.databus.dao.mapper.BaseCrossInfoMapper;
import net.wanji.databus.dao.mapper.GreenwaveInfoMapper; import net.wanji.databus.dao.mapper.GreenwaveInfoMapper;
import net.wanji.databus.po.BaseCrossInfoPO; import net.wanji.databus.po.BaseCrossInfoPO;
import net.wanji.opt.dao.mapper.StrategyControlInfoMapper; import net.wanji.opt.cache.GreenWaveInfoCache;
import net.wanji.opt.dao.mapper.StrategyDailyPlanInfoMapper; import net.wanji.opt.dao.mapper.*;
import net.wanji.opt.dao.mapper.StrategyFactoryMapper; import net.wanji.opt.po.StrategyGreenOptHistEntity;
import net.wanji.opt.dao.mapper.StrategyPlanInfoMapper;
import net.wanji.opt.synthesis.pojo.*; import net.wanji.opt.synthesis.pojo.*;
import net.wanji.opt.synthesis.pojo.request.StrategyHistReq;
import net.wanji.opt.synthesis.service.PushStrategyControlService; import net.wanji.opt.synthesis.service.PushStrategyControlService;
import net.wanji.opt.synthesis.service.StrategyControlService; import net.wanji.opt.synthesis.service.StrategyControlService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -31,6 +32,9 @@ import org.springframework.util.CollectionUtils; ...@@ -31,6 +32,9 @@ import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -56,6 +60,8 @@ public class StrategyControlServiceImpl implements StrategyControlService { ...@@ -56,6 +60,8 @@ public class StrategyControlServiceImpl implements StrategyControlService {
private StrategyFactoryMapper strategyFactoryMapper; private StrategyFactoryMapper strategyFactoryMapper;
@Resource @Resource
private GreenwaveInfoMapper greenwaveInfoMapper; private GreenwaveInfoMapper greenwaveInfoMapper;
@Resource
private StrategyGreenOptHistMapper strategyGreenOptHistMapper;
@Override @Override
...@@ -102,7 +108,6 @@ public class StrategyControlServiceImpl implements StrategyControlService { ...@@ -102,7 +108,6 @@ public class StrategyControlServiceImpl implements StrategyControlService {
private StrategyControlReq convertReq(StrategyControlVO vo) throws Exception { private StrategyControlReq convertReq(StrategyControlVO vo) throws Exception {
try { try {
ObjectMapper instance = JacksonUtils.getInstance();
List<StrategyControlDataVO> dataList = vo.getDataList(); List<StrategyControlDataVO> dataList = vo.getDataList();
StrategyControlReq req = new StrategyControlReq(); StrategyControlReq req = new StrategyControlReq();
if (!CollectionUtils.isEmpty(dataList)) { if (!CollectionUtils.isEmpty(dataList)) {
...@@ -158,10 +163,121 @@ public class StrategyControlServiceImpl implements StrategyControlService { ...@@ -158,10 +163,121 @@ public class StrategyControlServiceImpl implements StrategyControlService {
return JsonViewObject.newInstance().success(pageInfo.getRecords()); return JsonViewObject.newInstance().success(pageInfo.getRecords());
} }
@Override
public JsonViewObject crossStrategyHistList() throws Exception {
List<StrategyControlHistVO> results = new ArrayList<>();
LocalDate currentDate = LocalDate.now();
LocalDateTime midnight = currentDate.atStartOfDay();
LambdaQueryWrapper<StrategyGreenOptHistEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.ge(StrategyGreenOptHistEntity::getControlTime, midnight);
List<StrategyGreenOptHistEntity> entities = strategyGreenOptHistMapper.selectList(queryWrapper);
if (!CollectionUtils.isEmpty(entities)) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Map<Integer, GreenwaveInfoPO> greenWaveMap = GreenWaveInfoCache.greenWaveMap;
for (StrategyGreenOptHistEntity entity : entities) {
StrategyControlHistVO histVO = new StrategyControlHistVO();
histVO.setId(String.valueOf(entity.getGreenId()));
if(greenWaveMap.isEmpty()) {
continue;
}
String controlTime = entity.getControlTime();
Date parse = format.parse(controlTime);
GreenwaveInfoPO greenwaveInfoPO = greenWaveMap.get(entity.getGreenId());
if (Objects.nonNull(greenwaveInfoPO)) {
histVO.setName(greenwaveInfoPO.getName());
histVO.setWkt(greenwaveInfoPO.getWkt());
}
LambdaQueryWrapper<StrategyControlDataEntity> strategyQuery = new LambdaQueryWrapper<>();
strategyQuery.eq(StrategyControlDataEntity::getBizId, entity.getGreenId());
strategyQuery.eq(StrategyControlDataEntity::getBizType, 1);
strategyQuery.le(StrategyControlDataEntity::getScheduleStart, parse);
strategyQuery.ge(StrategyControlDataEntity::getScheduleEnd, parse);
// 应该是下发时间在调度下发时间内,但是目前神思下发可能没有走策略
List<StrategyControlDataEntity> strategyList = strategyControlInfoMapper.selectList(strategyQuery);
if (!CollectionUtils.isEmpty(strategyList)) {
StrategyControlDataEntity strategyControlDataEntity = strategyList.get(0);
histVO.setStrategy(strategyControlDataEntity.getStrategy());
histVO.setStrategyName("绿波带");
}
histVO.setOptTime(entity.getControlTime());
histVO.setResult(Objects.equals(1, entity.getControlMethod()) ? "失败" : "成功");
results.add(histVO);
}
}
//LambdaQueryWrapper<StrategyControlDataEntity> queryWrapper = new LambdaQueryWrapper<>();
//queryWrapper.isNotNull(StrategyControlDataEntity::getScheduleStart);
//queryWrapper.orderByDesc(StrategyControlDataEntity::getScheduleEnd);
//List<StrategyControlDataEntity> entities = strategyControlInfoMapper.selectList(queryWrapper);
//if (!CollectionUtils.isEmpty(entities)) {
// for (StrategyControlDataEntity entity : entities) {
// Integer type = entity.getBizType();
// if (type == 0) {
// BaseCrossInfoPO baseCrossInfoPO = baseCrossInfoMapper.selectById(entity.getBizId());
// entity.setCrossName(baseCrossInfoPO.getName());
// String location = baseCrossInfoPO.getLocation();
// location = location.replace("POINT(", "").replace(" ", ",").replace(")", "");
// entity.setWkt(location);
// }
// if (type == 1) {
// GreenwaveInfoPO greenwaveInfoPO = greenwaveInfoMapper.selectById(Integer.valueOf(entity.getBizId()));
// entity.setCrossName(greenwaveInfoPO.getName());
// entity.setWkt(greenwaveInfoPO.getWkt());
// }
// results.add(entity);
// }
//}
return JsonViewObject.newInstance().success(results);
}
@Override @Override
public JsonViewObject crossStrategyInfoList(Integer type) throws Exception { public JsonViewObject crossStrategyInfoList(Integer type) throws Exception {
try { try {
List<StrategyControlDataEntity> results = getCurrentStrateInfoList(type); List<StrategyControlDataEntity> results = new ArrayList<>();
List<StrategyControlDataEntity> entities = getCurrentStrateInfoList(type);
Map<String, StrategyControlDataEntity> map = entities.stream().collect(Collectors.toMap(StrategyControlDataEntity::getBizId, entity -> entity));
// 路口
if (Objects.equals(0, type)) {
List<BaseCrossInfoPO> baseCrossInfoPOS = baseCrossInfoMapper.selectAll();
if (!CollectionUtils.isEmpty(baseCrossInfoPOS)) {
for (BaseCrossInfoPO baseCrossInfoPO : baseCrossInfoPOS) {
StrategyControlDataEntity strategyControlDataEntity = new StrategyControlDataEntity();
String crossId = baseCrossInfoPO.getId();
strategyControlDataEntity.setBizType(0);
strategyControlDataEntity.setBizId(baseCrossInfoPO.getId());
strategyControlDataEntity.setStrategy(null);
strategyControlDataEntity.setTime(null);
strategyControlDataEntity.setStatus(0);
strategyControlDataEntity.setCrossName(baseCrossInfoPO.getName());
String location = baseCrossInfoPO.getLocation();
location = location.replace("POINT(", "").replace(" ", ",").replace(")", "");
strategyControlDataEntity.setWkt(location);
if (map.containsKey(crossId)) {
strategyControlDataEntity = map.get(crossId);
}
results.add(strategyControlDataEntity);
}
}
} // 干线
if (Objects.equals(1, type)) {
List<GreenwaveInfoPO> greenwaveInfoPOS = greenwaveInfoMapper.selectAll();
if (!CollectionUtils.isEmpty(greenwaveInfoPOS)) {
for (GreenwaveInfoPO greenwaveInfoPO : greenwaveInfoPOS) {
StrategyControlDataEntity strategyControlDataEntity = new StrategyControlDataEntity();
Integer greenId = greenwaveInfoPO.getId();
strategyControlDataEntity.setBizType(1);
strategyControlDataEntity.setBizId(String.valueOf(greenId));
strategyControlDataEntity.setStrategy(null);
strategyControlDataEntity.setTime(null);
strategyControlDataEntity.setStatus(0);
strategyControlDataEntity.setCrossName(greenwaveInfoPO.getName());
strategyControlDataEntity.setWkt(greenwaveInfoPO.getWkt());
if (map.containsKey(greenId)) {
strategyControlDataEntity = map.get(greenId);
}
results.add(strategyControlDataEntity);
}
}
}
return JsonViewObject.newInstance().success(results); return JsonViewObject.newInstance().success(results);
} catch (Exception e) { } catch (Exception e) {
log.error("策略控制查询列表:{}", e); log.error("策略控制查询列表:{}", e);
...@@ -173,6 +289,8 @@ public class StrategyControlServiceImpl implements StrategyControlService { ...@@ -173,6 +289,8 @@ public class StrategyControlServiceImpl implements StrategyControlService {
ObjectMapper instance = JacksonUtils.getInstance(); ObjectMapper instance = JacksonUtils.getInstance();
LambdaQueryWrapper<StrategyControlDataEntity> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<StrategyControlDataEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(StrategyControlDataEntity::getBizType, type); queryWrapper.eq(StrategyControlDataEntity::getBizType, type);
queryWrapper.ge(StrategyControlDataEntity::getScheduleStart, new Date());
queryWrapper.le(StrategyControlDataEntity::getScheduleEnd, new Date());
List<StrategyControlDataEntity> entities = strategyControlInfoMapper.selectList(queryWrapper); List<StrategyControlDataEntity> entities = strategyControlInfoMapper.selectList(queryWrapper);
List<StrategyControlDataEntity> results = new ArrayList<>(entities.size()); List<StrategyControlDataEntity> results = new ArrayList<>(entities.size());
Date current = new Date(); Date current = new Date();
...@@ -205,7 +323,10 @@ public class StrategyControlServiceImpl implements StrategyControlService { ...@@ -205,7 +323,10 @@ public class StrategyControlServiceImpl implements StrategyControlService {
DateTime endHourDate = DateUtil.parse(entHour, "HH:mm"); DateTime endHourDate = DateUtil.parse(entHour, "HH:mm");
if (currentTime.before(startHourDate) || currentTime.after(endHourDate)) { if (currentTime.before(startHourDate) || currentTime.after(endHourDate)) {
result.setTime(hour); result.setTime(hour);
result.setStatus(1);
} }
// 如果有调度策略在执行,设置为开启,否则关闭,提供前端过滤配置和未配置
result.setStatus(0);
} }
} }
} }
...@@ -241,7 +362,7 @@ public class StrategyControlServiceImpl implements StrategyControlService { ...@@ -241,7 +362,7 @@ public class StrategyControlServiceImpl implements StrategyControlService {
BeanUtils.copyProperties(strategyControlDataEntity, strategyControlDataExt); BeanUtils.copyProperties(strategyControlDataEntity, strategyControlDataExt);
String strategyName = ""; String strategyName = "";
for (StrategyFactoryEntity strategyFactoryEntity : strategyFactoryEntities) { for (StrategyFactoryEntity strategyFactoryEntity : strategyFactoryEntities) {
if (strategy == strategyFactoryEntity.getScene()) { if (Objects.equals(strategy, strategyFactoryEntity.getScene())) {
strategyName = strategyFactoryEntity.getStrategyName(); strategyName = strategyFactoryEntity.getStrategyName();
} }
} }
......
...@@ -81,7 +81,7 @@ public class InducesMonitorTask { ...@@ -81,7 +81,7 @@ public class InducesMonitorTask {
* #绿波调度计划扫描周期 * #绿波调度计划扫描周期
* 5 分钟 300000 * 5 分钟 300000
*/ */
//@Scheduled(fixedRate = 30000) //@Scheduled(fixedRate = 300000)
public void refresh() throws Exception { public void refresh() throws Exception {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
AtomicLong synCount = new AtomicLong(); AtomicLong synCount = new AtomicLong();
...@@ -200,7 +200,8 @@ public class InducesMonitorTask { ...@@ -200,7 +200,8 @@ public class InducesMonitorTask {
messageParam.setEquipCode(v.getEquipCode()); messageParam.setEquipCode(v.getEquipCode());
messageParam.setSourceId(v.getSourceId()); messageParam.setSourceId(v.getSourceId());
messageParam.setType("TFMH"); messageParam.setType("TFMH");
//induceSendService.send(messageParam);//临时屏蔽此处功能,因为上屏的时候可以设置生效时间 //屏蔽此处功能,因为上屏的时候可以设置生效时间
//induceSendService.send(messageParam);
log.info("发送下屏信息成功."); log.info("发送下屏信息成功.");
}); });
} }
...@@ -208,7 +209,7 @@ public class InducesMonitorTask { ...@@ -208,7 +209,7 @@ public class InducesMonitorTask {
log.error("发送下屏信息失败"); log.error("发送下屏信息失败");
} }
//保存绿波状态 //保存绿波状态
n.setStatus(0); //n.setStatus(0);
//greenwaveInducesHistService.saveOrUpdate(n); //greenwaveInducesHistService.saveOrUpdate(n);
log.info("同步绿波状态信息(下屏)->" + o.getPlanName()); log.info("同步绿波状态信息(下屏)->" + o.getPlanName());
synCount.getAndIncrement(); synCount.getAndIncrement();
......
...@@ -62,7 +62,6 @@ public class CrossRunSchemeCache implements CommandLineRunner { ...@@ -62,7 +62,6 @@ public class CrossRunSchemeCache implements CommandLineRunner {
Integer schemeId = getCurrentSchemeId(crossSectionPOS, currentTime, currentPlanId); Integer schemeId = getCurrentSchemeId(crossSectionPOS, currentTime, currentPlanId);
CrossSchemePO crossSchemePO = crossSchemeMapper.selectSchemePOById(schemeId); CrossSchemePO crossSchemePO = crossSchemeMapper.selectSchemePOById(schemeId);
if (Objects.nonNull(crossSchemePO)) { if (Objects.nonNull(crossSchemePO)) {
currentRunSchemeNoCache.put(crossId, crossSchemePO.getSchemeNo());
} }
} }
} }
......
...@@ -29,5 +29,4 @@ public interface CrossDirDataRealtimeMapper extends BaseMapper<CrossDirDataRealt ...@@ -29,5 +29,4 @@ public interface CrossDirDataRealtimeMapper extends BaseMapper<CrossDirDataRealt
CrossDirDataRealtimePO selectByCrossIdAndDirs(String crossId, List<Integer> dirCodeList); CrossDirDataRealtimePO selectByCrossIdAndDirs(String crossId, List<Integer> dirCodeList);
List<CrossDirDataRealtimePO> selectMaxBatchTime(String crossId);
} }
...@@ -97,11 +97,4 @@ ...@@ -97,11 +97,4 @@
and in_out_type = 1 and in_out_type = 1
</select> </select>
<select id="selectMaxBatchTime" resultType="net.wanji.databus.po.CrossDirDataRealtimePO">
select <include refid="Base_Column_List"/>
from t_cross_dir_data_realtime
where cross_id = #{crossId} and in_out_type = 1
and batch_time in (select max(batch_time) from t_cross_dir_data_realtime where cross_id = #{crossId})
</select>
</mapper> </mapper>
\ No newline at end of file
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