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 {
if (Objects.nonNull(greenwaveInfoByGreenId) && greenwaveInfoByGreenId.size() > 0) {
greenwaveInducesDTO.setGreenName(greenwaveInfoByGreenId.get(0).getName());
greenwaveInducesDTO.setDesignSpeed(greenwaveInfoByGreenId.get(0).getDesignSpeed());
greenwaveInducesDTO.setWkt(greenwaveInfoByGreenId.get(0).getWkt());
}
greenwaveInducesDTO.setStatus(o.getStatus());
greenwaveInducesDTO.setStrategyId(o.getStrategyId());
......
......@@ -28,6 +28,7 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@Api(value = "InduceSendController", description = "诱导屏-下发消息接口(对接易华录)")
@RestController
......@@ -101,9 +102,10 @@ public class InduceSendController {
// 根据 equipCode 获取文件名
LambdaQueryWrapper<InduceHist> InduceHistQueryWrapper = new LambdaQueryWrapper<>();
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);
if (pictureFile == null) {
if (Objects.isNull(pictureFile) && pictureFile.getFilePath() == null) {
return ResponseEntity.status(HttpStatus.OK)
.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 {
@ApiModelProperty(name = "诱导屏列表")
private List<InduceDTO> induceList;
@ApiModelProperty(name = "绿波带坐标")
private String wkt;
}
......@@ -30,7 +30,7 @@ public class CrossIndexServiceImpl implements CrossIndexService {
@Override
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)) {
Map<Integer, CrossDirDataRealtimePO> dirDataMap = new HashMap<>(crossDirDataRealtimePOS.size());
for (CrossDirDataRealtimePO crossDirDataRealtimePO : crossDirDataRealtimePOS) {
......
......@@ -70,10 +70,14 @@ public class InduceSendServiceImpl implements InduceSendService {
@Value("${spring.rabbitmq.queue-name}")
private String queueName;
/**
* 是否下发屏幕
*/
@Value("${spring.rabbitmq.sending}")
private Boolean sending=false;
private FTPClient ftpClient;
@Override
public void send(MessageParam param) throws IOException, TemplateException {
//生成诱导屏推送sourceId
......@@ -88,8 +92,10 @@ public class InduceSendServiceImpl implements InduceSendService {
LambdaQueryWrapper<DeviceInduces> deviceQueryWrapper = new LambdaQueryWrapper<>();
deviceQueryWrapper.eq(DeviceInduces::getEquipCode, induceTemplate.getEquipCode());
DeviceInduces deviceInduces = deviceInducesService.getOne(deviceQueryWrapper);
param.setResolutionWidth(deviceInduces.getResolutionWidth().intValue());
param.setResolutionHeight(deviceInduces.getResolutionHeight().intValue());
if(Objects.nonNull(deviceInduces)) {
param.setResolutionWidth(deviceInduces.getResolutionWidth().intValue());
param.setResolutionHeight(deviceInduces.getResolutionHeight().intValue());
}
}
// 获取图片字节数组
byte[] imageBytes = induceTemplate.getFileContent();
......@@ -107,7 +113,9 @@ public class InduceSendServiceImpl implements InduceSendService {
String filePath = uploadFile(image,dirName, fileName);
param.setFtpPath(filePath);
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());
// //如果已发布,则调用下屏服务
......@@ -138,16 +146,20 @@ public class InduceSendServiceImpl implements InduceSendService {
// messageProperties.setContentType("text/plain"); // 设置内容类型为text/plain
// 创建Message并设置内容
// 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);
//1、增加下发记录log 2、计数 3、标记已发布状体
induceHist.setEquipCode(induceTemplate.getEquipCode());
induceHist.setGreenId(param.getGreenId());
induceHistService.save(induceHist);
//保存诱导状态信息
greenwaveinduces.setInducesCount(Objects.isNull(greenwaveinduces.getInducesCount()) ? 0 : greenwaveinduces.getInducesCount()+1);
greenwaveinduces.setStatus(1);
greenwaveInducesService.saveOrUpdate(greenwaveinduces);
if(Objects.nonNull(greenwaveinduces)) {
greenwaveinduces.setInducesCount(Objects.isNull(greenwaveinduces.getInducesCount()) ? 0 : greenwaveinduces.getInducesCount() + 1);
greenwaveinduces.setStatus(1);
greenwaveInducesService.saveOrUpdate(greenwaveinduces);
}
}
}
......
......@@ -10,6 +10,7 @@ import net.wanji.opt.synthesis.pojo.StrategyControlDataEntity;
import net.wanji.opt.synthesis.pojo.StrategyControlDetailList;
import net.wanji.opt.synthesis.pojo.StrategyControlVO;
import net.wanji.opt.synthesis.pojo.StrategyFactoryEntity;
import net.wanji.opt.synthesis.pojo.request.StrategyHistReq;
import net.wanji.opt.synthesis.service.StrategyControlService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -22,7 +23,7 @@ import javax.ws.rs.core.MediaType;
* @date 2024/11/03 12:42
* @description 神思电子获取1.1策略计划基础信息
*/
@Api(value = "StrategyControlController", description = "策略控制")
@Api(value = "strategyControl", description = "策略控制")
@RequestMapping("/strategyControl")
@RestController
public class StrategyControlController {
......@@ -59,6 +60,18 @@ public class StrategyControlController {
@ApiOperation(value = "策略控制查询列表", notes = "策略控制查询列表",
response = JsonViewObject.class,
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")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = StrategyControlDataEntity.class),
......
......@@ -27,20 +27,6 @@ public class StrategyGreenBeltController {
@Resource
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,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@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;
import net.wanji.opt.synthesis.pojo.StrategyControlDetailList;
import net.wanji.opt.synthesis.pojo.StrategyControlVO;
import net.wanji.opt.synthesis.pojo.StrategyFactoryEntity;
import net.wanji.opt.synthesis.pojo.request.StrategyHistReq;
/**
* @author duanruiming
......@@ -15,6 +16,7 @@ public interface StrategyControlService {
JsonViewObject strategyInfoPageList(StrategyControlDataEntity entity) throws Exception;
JsonViewObject crossStrategyInfoList(Integer type) throws Exception;
JsonViewObject crossStrategyHistList() throws Exception;
JsonViewObject crossOptInfoList(Integer type) throws Exception;
JsonViewObject strategyPlanDetail(String crossId) throws Exception;
......
......@@ -81,7 +81,7 @@ public class InducesMonitorTask {
* #绿波调度计划扫描周期
* 5 分钟 300000
*/
//@Scheduled(fixedRate = 30000)
//@Scheduled(fixedRate = 300000)
public void refresh() throws Exception {
long start = System.currentTimeMillis();
AtomicLong synCount = new AtomicLong();
......@@ -200,7 +200,8 @@ public class InducesMonitorTask {
messageParam.setEquipCode(v.getEquipCode());
messageParam.setSourceId(v.getSourceId());
messageParam.setType("TFMH");
//induceSendService.send(messageParam);//临时屏蔽此处功能,因为上屏的时候可以设置生效时间
//屏蔽此处功能,因为上屏的时候可以设置生效时间
//induceSendService.send(messageParam);
log.info("发送下屏信息成功.");
});
}
......@@ -208,7 +209,7 @@ public class InducesMonitorTask {
log.error("发送下屏信息失败");
}
//保存绿波状态
n.setStatus(0);
//n.setStatus(0);
//greenwaveInducesHistService.saveOrUpdate(n);
log.info("同步绿波状态信息(下屏)->" + o.getPlanName());
synCount.getAndIncrement();
......
......@@ -62,8 +62,7 @@ public class CrossRunSchemeCache implements CommandLineRunner {
Integer schemeId = getCurrentSchemeId(crossSectionPOS, currentTime, currentPlanId);
CrossSchemePO crossSchemePO = crossSchemeMapper.selectSchemePOById(schemeId);
if (Objects.nonNull(crossSchemePO)) {
currentRunSchemeNoCache.put(crossId, crossSchemePO.getSchemeNo());
}
}
}
}
}
......
......@@ -29,5 +29,4 @@ public interface CrossDirDataRealtimeMapper extends BaseMapper<CrossDirDataRealt
CrossDirDataRealtimePO selectByCrossIdAndDirs(String crossId, List<Integer> dirCodeList);
List<CrossDirDataRealtimePO> selectMaxBatchTime(String crossId);
}
......@@ -97,11 +97,4 @@
and in_out_type = 1
</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>
\ 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