Commit 1eb81bc8 authored by zhoushiguang's avatar zhoushiguang

干线交通状态分析

parent 951affee
...@@ -16,6 +16,7 @@ import net.wanji.common.framework.rest.JsonViewObject; ...@@ -16,6 +16,7 @@ import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.framework.rest.impl.AbstractRestServerImpl; import net.wanji.common.framework.rest.impl.AbstractRestServerImpl;
import net.wanji.opt.entity.GreenwaveHist; import net.wanji.opt.entity.GreenwaveHist;
import net.wanji.opt.service.GreenwaveHistProvider; import net.wanji.opt.service.GreenwaveHistProvider;
import net.wanji.opt.vo.GreenWaveRunStateVO;
import net.wanji.opt.vo.GreenwaveCrossMetricsVO; import net.wanji.opt.vo.GreenwaveCrossMetricsVO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -49,6 +50,32 @@ public class GreenwaveHistRestServer { ...@@ -49,6 +50,32 @@ public class GreenwaveHistRestServer {
private GreenwaveHistProvider greenwaveHistProvider; private GreenwaveHistProvider greenwaveHistProvider;
@GetMapping("/findGreenWaveRunState")
@ApiOperation(httpMethod="GET",value="绿波干线运行状态查询", notes="")
@ApiImplicitParams({
@ApiImplicitParam(name = "greenId", value = "绿波ID", required = true, dataType = "Integer",defaultValue = "1"),
@ApiImplicitParam(name = "startTime", value = "截止时间,格式:yyyy-MM-dd HH:mm:ss", required = false, dataType = "String",defaultValue = "2024-12-04 00:00:00"),
@ApiImplicitParam(name = "endTime", value = "截止时间,格式:yyyy-MM-dd HH:mm:ss", required = false, dataType = "String",defaultValue = "2024-12-05 00:00:00")
})
@ApiResponses({
@ApiResponse(code = 200, message = "成功", response = GreenWaveRunStateVO.class,
responseHeaders = {@ResponseHeader(name = "Content-Type", description = "application/json")})
})
public JsonViewObject findGreenWaveRunState(Integer greenId,@RequestParam(defaultValue ="2024-12-04 00:00:00") String startTime,
@RequestParam(defaultValue ="2024-12-05 00:00:00") String endTime) {
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
try {
List<GreenWaveRunStateVO> list = greenwaveHistProvider.findGreenWaveRunState(greenId,startTime,endTime);
jsonView.success(list);
} catch (DubboProviderException e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonView;
}
@GetMapping("/findStatisticIndexTrend") @GetMapping("/findStatisticIndexTrend")
@ApiOperation(httpMethod="GET",value="绿波历史数据-数据指标统计", notes="") @ApiOperation(httpMethod="GET",value="绿波历史数据-数据指标统计", notes="")
......
...@@ -5,6 +5,8 @@ import net.wanji.common.framework.mapper.BaseInterfaceMapper; ...@@ -5,6 +5,8 @@ import net.wanji.common.framework.mapper.BaseInterfaceMapper;
import net.wanji.databus.po.CrossDataHistPO; import net.wanji.databus.po.CrossDataHistPO;
import net.wanji.databus.po.CrossDirDataHistPO; import net.wanji.databus.po.CrossDirDataHistPO;
import net.wanji.opt.entity.GreenwaveHist; import net.wanji.opt.entity.GreenwaveHist;
import net.wanji.opt.vo.GreenWaveRunStateVO;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -53,5 +55,12 @@ public interface GreenwaveHistoryMapper extends BaseInterfaceMapper<GreenwaveHis ...@@ -53,5 +55,12 @@ public interface GreenwaveHistoryMapper extends BaseInterfaceMapper<GreenwaveHis
*/ */
List<CrossDataHistPO> findGreenWaveCrossIndex(Map<String,Object> params); List<CrossDataHistPO> findGreenWaveCrossIndex(Map<String,Object> params);
/**
* 干线运行状态查询
* @param params
* @return
*/
List<GreenWaveRunStateVO> findGreenWaveRunState(Map<String,Object> params);
} }
...@@ -5,6 +5,7 @@ import net.wanji.common.framework.dubbointerface.BaseDubboInterface; ...@@ -5,6 +5,7 @@ import net.wanji.common.framework.dubbointerface.BaseDubboInterface;
import net.wanji.common.framework.exception.DubboProviderException; import net.wanji.common.framework.exception.DubboProviderException;
import net.wanji.databus.po.CrossDirDataHistPO; import net.wanji.databus.po.CrossDirDataHistPO;
import net.wanji.opt.entity.GreenwaveHist; import net.wanji.opt.entity.GreenwaveHist;
import net.wanji.opt.vo.GreenWaveRunStateVO;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -70,4 +71,12 @@ public interface GreenwaveHistProvider extends BaseDubboInterface<GreenwaveHist> ...@@ -70,4 +71,12 @@ public interface GreenwaveHistProvider extends BaseDubboInterface<GreenwaveHist>
*/ */
JSONObject findGreenWaveCrossIndex(String crossId, String startTime, String endTime, String groupType) throws DubboProviderException; JSONObject findGreenWaveCrossIndex(String crossId, String startTime, String endTime, String groupType) throws DubboProviderException;
/**
* 干线运行状态查询
* @param greenId
* @param startTime
* @param endTime
* @return
*/
List<GreenWaveRunStateVO> findGreenWaveRunState(Integer greenId, String startTime, String endTime) throws DubboProviderException;
} }
...@@ -12,6 +12,7 @@ import net.wanji.databus.po.CrossDirDataHistPO; ...@@ -12,6 +12,7 @@ import net.wanji.databus.po.CrossDirDataHistPO;
import net.wanji.opt.dao.mapper.GreenwaveHistoryMapper; import net.wanji.opt.dao.mapper.GreenwaveHistoryMapper;
import net.wanji.opt.entity.GreenwaveHist; import net.wanji.opt.entity.GreenwaveHist;
import net.wanji.opt.service.GreenwaveHistProvider; import net.wanji.opt.service.GreenwaveHistProvider;
import net.wanji.opt.vo.GreenWaveRunStateVO;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -103,23 +104,23 @@ public class GreenwaveHistProviderImpl extends BaseDubboInterfaceImpl<GreenwaveH ...@@ -103,23 +104,23 @@ public class GreenwaveHistProviderImpl extends BaseDubboInterfaceImpl<GreenwaveH
@Override @Override
public List<Map<String, Object>> findGreenCross(Integer greenId) throws DubboProviderException { public List<Map<String, Object>> findGreenCross(Integer greenId) throws DubboProviderException {
Map<String,Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("greenId",greenId); params.put("greenId", greenId);
List<Map<String, Object>> list = greenwaveHistoryMapper.findGreenCross(params); List<Map<String, Object>> list = greenwaveHistoryMapper.findGreenCross(params);
String dirs = list.stream().map(o->o.get("inDir").toString()).distinct().collect(Collectors.joining(",")); String dirs = list.stream().map(o -> o.get("inDir").toString()).distinct().collect(Collectors.joining(","));
return list; return list;
} }
@Override @Override
public JSONObject findUnCoordinateCrossIndex(String crossId, String greenDir, String startTime, String endTime) { public JSONObject findUnCoordinateCrossIndex(String crossId, String greenDir, String startTime, String endTime) {
Map<String,Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("crossId",crossId); params.put("crossId", crossId);
params.put("startDate",startTime); params.put("startDate", startTime);
params.put("endDate",endTime); params.put("endDate", endTime);
params.put("greenDir",greenDir); params.put("greenDir", greenDir);
List<GreenwaveHist> list = greenwaveHistoryMapper.findUnCoordinateCrossIndex(params); List<GreenwaveHist> list = greenwaveHistoryMapper.findUnCoordinateCrossIndex(params);
...@@ -166,12 +167,12 @@ public class GreenwaveHistProviderImpl extends BaseDubboInterfaceImpl<GreenwaveH ...@@ -166,12 +167,12 @@ public class GreenwaveHistProviderImpl extends BaseDubboInterfaceImpl<GreenwaveH
} }
@Override @Override
public JSONObject findGreenWaveCrossDirIndex(String crossId, String startTime, String endTime,String groupType) { public JSONObject findGreenWaveCrossDirIndex(String crossId, String startTime, String endTime, String groupType) {
Map<String,Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("crossId",crossId); params.put("crossId", crossId);
params.put("startDate",startTime); params.put("startDate", startTime);
params.put("endDate",endTime); params.put("endDate", endTime);
params.put("groupType",groupType); params.put("groupType", groupType);
List<CrossDirDataHistPO> list = greenwaveHistoryMapper.findGreenWaveCrossDirIndex(params); List<CrossDirDataHistPO> list = greenwaveHistoryMapper.findGreenWaveCrossDirIndex(params);
...@@ -218,14 +219,13 @@ public class GreenwaveHistProviderImpl extends BaseDubboInterfaceImpl<GreenwaveH ...@@ -218,14 +219,13 @@ public class GreenwaveHistProviderImpl extends BaseDubboInterfaceImpl<GreenwaveH
} }
@Override @Override
public JSONObject findGreenWaveCrossIndex(String crossId, String startTime, String endTime,String groupType) { public JSONObject findGreenWaveCrossIndex(String crossId, String startTime, String endTime, String groupType) {
Map<String,Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("crossId",crossId); params.put("crossId", crossId);
params.put("startDate",startTime); params.put("startDate", startTime);
params.put("endDate",endTime); params.put("endDate", endTime);
params.put("groupType",groupType); params.put("groupType", groupType);
List<CrossDataHistPO> list = greenwaveHistoryMapper.findGreenWaveCrossIndex(params); List<CrossDataHistPO> list = greenwaveHistoryMapper.findGreenWaveCrossIndex(params);
...@@ -246,4 +246,28 @@ public class GreenwaveHistProviderImpl extends BaseDubboInterfaceImpl<GreenwaveH ...@@ -246,4 +246,28 @@ public class GreenwaveHistProviderImpl extends BaseDubboInterfaceImpl<GreenwaveH
return jsonObject; return jsonObject;
} }
@Override
public List<GreenWaveRunStateVO> findGreenWaveRunState(Integer greenId, String startTime, String endTime) {
Map<String, Object> params = new HashMap<>();
params.put("greenId", greenId);
params.put("startDate", startTime);
params.put("endDate", endTime);
int[] stateList = new int[]{1, 2, 3};
List<GreenWaveRunStateVO> list = greenwaveHistoryMapper.findGreenWaveRunState(params);
Map<Integer,GreenWaveRunStateVO> groupList = list.stream().collect(Collectors.toMap(o -> o.getState(), o -> o));
for (int state : stateList) {
if (!groupList.containsKey(state)) {
GreenWaveRunStateVO tmp = new GreenWaveRunStateVO();
tmp.setState(state);
tmp.setGreenId(greenId);
list.add(tmp);
}
}
return list;
}
} }
package net.wanji.opt.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Data;
import lombok.NoArgsConstructor;
import net.wanji.databus.vo.AbnormalCrossListVO;
import java.util.List;
@NoArgsConstructor
@Data
@ApiModel(value = "GreenWaveRunStateVO", description = "干线运行状态")
public class GreenWaveRunStateVO {
@ApiModelProperty(value = "干线ID")
private Integer greenId;
@ApiModelProperty(value = "干线运行状态 1:畅通 2:缓行 3:拥堵")
private int state;
@ApiModelProperty(value = "状态持续时长,单位秒")
private int duration;
@ApiModelProperty(value = "分析时段总时长,单位秒")
private int totalTime;
}
...@@ -171,6 +171,16 @@ ...@@ -171,6 +171,16 @@
) t ) t
GROUP BY t.cross_id,unit_time GROUP BY t.cross_id,unit_time
</select> </select>
<!-- 查看干线拥堵运行状态 -->
<select id="findGreenWaveRunState" resultType="net.wanji.opt.vo.GreenWaveRunStateVO">
select type as state,
SUM(TIMESTAMPDIFF(SECOND,start_time, end_time)) duration,
TIMESTAMPDIFF(SECOND,#{startDate}, #{endDate}) total_time
from t_event_info t
where <!-- type in (705,706) and --> start_time > #{startDate}
and start_time &lt; #{endDate}
GROUP BY type
</select>
<!--新增操作 --> <!--新增操作 -->
<insert id="save" parameterType="net.wanji.opt.entity.GreenwaveHist"> <insert id="save" parameterType="net.wanji.opt.entity.GreenwaveHist">
......
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