Commit 77b1e0bc authored by hanbing's avatar hanbing

[add] 态势监测-数量实时推送

parent 97861203
...@@ -4,9 +4,13 @@ import io.swagger.annotations.Api; ...@@ -4,9 +4,13 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses; import io.swagger.annotations.ApiResponses;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.bo.*; import net.wanji.databus.bo.CrossIdBO;
import net.wanji.opt.bo.GreenwaveDetailBO;
import net.wanji.opt.bo.GreenwaveIdAndTimeStampBO;
import net.wanji.opt.bo.GreenwaveIdBO;
import net.wanji.opt.bo.SaveGreenwaveStrategyBO;
import net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO;
import net.wanji.opt.dto.trend.AbnormalCrossListDTO; import net.wanji.opt.dto.trend.AbnormalCrossListDTO;
import net.wanji.opt.dto.trend.EventAlarmDTO; import net.wanji.opt.dto.trend.EventAlarmDTO;
import net.wanji.opt.dto.trend.GreenwaveListDTO; import net.wanji.opt.dto.trend.GreenwaveListDTO;
...@@ -171,4 +175,17 @@ public class TrendController { ...@@ -171,4 +175,17 @@ public class TrendController {
return jsonViewObject.success(eventAlarmVOList); return jsonViewObject.success(eventAlarmVOList);
} }
@ApiOperation(value = "数量实时推送", notes = "数量实时推送",response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/countRealTime",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AddOrUpdateSceneDTO.class),
})
public JsonViewObject countRealTime(@RequestBody CrossIdBO crossIdBO) {
String crossId = crossIdBO.getCrossId();
CountRealTimeVO countRealTimeVO = trendService.countRealTime(crossId);
return JsonViewObject.newInstance().success(countRealTimeVO);
}
} }
\ No newline at end of file
...@@ -37,4 +37,6 @@ public interface TrendService { ...@@ -37,4 +37,6 @@ public interface TrendService {
void saveGreenwaveStrategy(SaveGreenwaveStrategyBO saveGreenwaveStrategyBO); void saveGreenwaveStrategy(SaveGreenwaveStrategyBO saveGreenwaveStrategyBO);
GreenwaveDetailVO currentGreenwaveDetail(GreenwaveIdBO bo) throws ParseException; GreenwaveDetailVO currentGreenwaveDetail(GreenwaveIdBO bo) throws ParseException;
CountRealTimeVO countRealTime(String crossId);
} }
...@@ -36,6 +36,9 @@ import java.math.BigDecimal; ...@@ -36,6 +36,9 @@ import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.regex.Matcher; import java.util.regex.Matcher;
...@@ -76,6 +79,7 @@ public class TrendServiceImpl implements TrendService { ...@@ -76,6 +79,7 @@ public class TrendServiceImpl implements TrendService {
private final SceneMapper sceneMapper; private final SceneMapper sceneMapper;
private final BaseCrossPlanMapper baseCrossPlanMapper; private final BaseCrossPlanMapper baseCrossPlanMapper;
private final MainlineEvaluateServiceImpl mainlineEvaluateServiceImpl; private final MainlineEvaluateServiceImpl mainlineEvaluateServiceImpl;
private final CrossLaneDataHistMapper crossLaneDataHistMapper;
// 用于计算路口状态,key为方向,value为状态 // 用于计算路口状态,key为方向,value为状态
private Map<Integer, Integer> preStatus = new HashMap<Integer, Integer>() {{ private Map<Integer, Integer> preStatus = new HashMap<Integer, Integer>() {{
...@@ -96,7 +100,7 @@ public class TrendServiceImpl implements TrendService { ...@@ -96,7 +100,7 @@ public class TrendServiceImpl implements TrendService {
CrossTurnDataRealtimeMapper crossTurnDataRealtimeMapper, CrossTurnDataRealtimeMapper crossTurnDataRealtimeMapper,
CrossDirDataHistMapper crossDirDataHistMapper, EventAlarmMapper eventAlarmMapper, CrossDirDataHistMapper crossDirDataHistMapper, EventAlarmMapper eventAlarmMapper,
RidInfoMapper ridInfoMapper, BaseCrossDirInfoMapper baseCrossDirInfoMapper, RidInfoMapper ridInfoMapper, BaseCrossDirInfoMapper baseCrossDirInfoMapper,
CrossSchemeOptLogMapper crossSchemeOptLogMapper, GreenwaveCrossMapper greenwaveCrossMapper, CrossDirDataRealtimeMapper crossDirDataRealtimeMapper, GreenwaveHistMapper greenwaveHistMapper, GreenwaveRealtimeMapper greenwaveRealtimeMapper, SceneStrategyIdeaMapper strategyIdeaMapper, StrategyMapper strategyMapper, BaseCrossSchedulesMapper baseCrossSchedulesMapper, BaseCrossSchedulesPlanMapper baseCrossSchedulesPlanMapper, BaseCrossSectionMapper baseCrossSectionMapper, BaseCrossSchemeMapper crossSchemeMapper, BaseCrossSchemeMapper baseCrossSchemeMapper, BaseCrossPhaseMapper baseCrossPhaseMapper, BaseCrossPhaseLightsMapper crossPhaseLightsMapper, BaseCrossLaneLightsMapper baseCrossLaneLightsMapper, CrossBaseLaneInfoMapper crossBaseLaneInfoMapper, CrossTurnDataHistMapper crossTurnDataHistMapper, @Qualifier("greenwaveSceneMapper") GreenwaveSceneMapper greenwaveSceneMapper, @Qualifier("sceneStrategyMapper") SceneStrategyMapper sceneStrategyMapper, @Qualifier("sceneMapper") SceneMapper sceneMapper, @Qualifier("baseCrossPlanMapper") BaseCrossPlanMapper baseCrossPlanMapper, MainlineEvaluateServiceImpl mainlineEvaluateServiceImpl) { CrossSchemeOptLogMapper crossSchemeOptLogMapper, GreenwaveCrossMapper greenwaveCrossMapper, CrossDirDataRealtimeMapper crossDirDataRealtimeMapper, GreenwaveHistMapper greenwaveHistMapper, GreenwaveRealtimeMapper greenwaveRealtimeMapper, SceneStrategyIdeaMapper strategyIdeaMapper, StrategyMapper strategyMapper, BaseCrossSchedulesMapper baseCrossSchedulesMapper, BaseCrossSchedulesPlanMapper baseCrossSchedulesPlanMapper, BaseCrossSectionMapper baseCrossSectionMapper, BaseCrossSchemeMapper crossSchemeMapper, BaseCrossSchemeMapper baseCrossSchemeMapper, BaseCrossPhaseMapper baseCrossPhaseMapper, BaseCrossPhaseLightsMapper crossPhaseLightsMapper, BaseCrossLaneLightsMapper baseCrossLaneLightsMapper, CrossBaseLaneInfoMapper crossBaseLaneInfoMapper, CrossTurnDataHistMapper crossTurnDataHistMapper, @Qualifier("greenwaveSceneMapper") GreenwaveSceneMapper greenwaveSceneMapper, @Qualifier("sceneStrategyMapper") SceneStrategyMapper sceneStrategyMapper, @Qualifier("sceneMapper") SceneMapper sceneMapper, @Qualifier("baseCrossPlanMapper") BaseCrossPlanMapper baseCrossPlanMapper, MainlineEvaluateServiceImpl mainlineEvaluateServiceImpl, CrossLaneDataHistMapper crossLaneDataHistMapper) {
this.greenwaveInfoMapper = greenwaveInfoMapper; this.greenwaveInfoMapper = greenwaveInfoMapper;
this.baseCrossInfoMapper = baseCrossInfoMapper; this.baseCrossInfoMapper = baseCrossInfoMapper;
this.crossDataRealtimeMapper = crossDataRealtimeMapper; this.crossDataRealtimeMapper = crossDataRealtimeMapper;
...@@ -125,6 +129,7 @@ public class TrendServiceImpl implements TrendService { ...@@ -125,6 +129,7 @@ public class TrendServiceImpl implements TrendService {
this.sceneMapper = sceneMapper; this.sceneMapper = sceneMapper;
this.baseCrossPlanMapper = baseCrossPlanMapper; this.baseCrossPlanMapper = baseCrossPlanMapper;
this.mainlineEvaluateServiceImpl = mainlineEvaluateServiceImpl; this.mainlineEvaluateServiceImpl = mainlineEvaluateServiceImpl;
this.crossLaneDataHistMapper = crossLaneDataHistMapper;
} }
@Override @Override
...@@ -1035,6 +1040,24 @@ public class TrendServiceImpl implements TrendService { ...@@ -1035,6 +1040,24 @@ public class TrendServiceImpl implements TrendService {
return greenwaveDetailVO; return greenwaveDetailVO;
} }
@Override
public CountRealTimeVO countRealTime(String crossId) {
CountRealTimeVO countRealTimeVO = new CountRealTimeVO();
// todo 统计实时条数
// countRealTimeVO.setRealTimeCount();
// 统计周期条数
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime startOfDay = LocalDateTime.now().toLocalDate().atStartOfDay(zoneId);
ZonedDateTime now = ZonedDateTime.now(zoneId);
int startTimeStamp = (int) startOfDay.toEpochSecond();
int endTimeStamp = (int) now.toEpochSecond();
Integer cycleCount = crossLaneDataHistMapper.
selectCountByCrossIdAndTimeSpan(crossId, startTimeStamp, endTimeStamp);
countRealTimeVO.setCycleCount(cycleCount);
return countRealTimeVO;
}
private MainlineSchemeAnalysisVO.GreenwaveData findMatchingData( private MainlineSchemeAnalysisVO.GreenwaveData findMatchingData(
List<MainlineSchemeAnalysisVO.GreenwaveData> greenwaveData) { List<MainlineSchemeAnalysisVO.GreenwaveData> greenwaveData) {
......
package net.wanji.opt.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Data
@ApiModel(value = "CountRealTimeVO", description = "数量实时推送")
public class CountRealTimeVO {
@ApiModelProperty(value = "实时数据条数")
private Integer realTimeCount;
@ApiModelProperty(value = "周期数据条数")
private Integer cycleCount;
}
...@@ -22,4 +22,6 @@ public interface CrossLaneDataHistMapper extends BaseMapper<CrossLaneDataHistPO> ...@@ -22,4 +22,6 @@ public interface CrossLaneDataHistMapper extends BaseMapper<CrossLaneDataHistPO>
List<CrossLaneDataHistPOExt> selectByCrossIdAndDir(String crossId, Integer dir, int endTimeStamp, int startTimeStamp); List<CrossLaneDataHistPOExt> selectByCrossIdAndDir(String crossId, Integer dir, int endTimeStamp, int startTimeStamp);
List<CrossLaneDataHistPOExt> selectByCrossId(String crossId, int endTimeStamp, int startTimeStamp); List<CrossLaneDataHistPOExt> selectByCrossId(String crossId, int endTimeStamp, int startTimeStamp);
Integer selectCountByCrossIdAndTimeSpan(String crossId, int startTimeStamp, int endTimeStamp);
} }
...@@ -84,4 +84,12 @@ ...@@ -84,4 +84,12 @@
AND batch_time <![CDATA[ >= ]]> #{startTimeStamp} AND batch_time <![CDATA[ >= ]]> #{startTimeStamp}
AND batch_time <![CDATA[ <= ]]> #{endTimeStamp}; AND batch_time <![CDATA[ <= ]]> #{endTimeStamp};
</select> </select>
<select id="selectCountByCrossIdAndTimeSpan" resultType="java.lang.Integer">
select count(*)
from t_lane_data_hist
where cross_id = #{crossId}
and batch_time <![CDATA[ >= ]]> #{startTimeStamp}
and batch_time <![CDATA[ <= ]]> #{endTimeStamp};
</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