Commit aae93b9c authored by duanruiming's avatar duanruiming

[update] 持久化操作

parent 5ae01ef4
...@@ -13,8 +13,8 @@ ...@@ -13,8 +13,8 @@
<groupId>net.wanji</groupId> <groupId>net.wanji</groupId>
<artifactId>signal-datacenter-service</artifactId> <artifactId>signal-datacenter-service</artifactId>
<version>0.2.1</version> <version>0.2.1</version>
<name>signal-dataCenter-service</name> <name>signal-datacenter-service</name>
<description>signal-dataCenter-service</description> <description>signal-datacenter-service</description>
<properties> <properties>
<java.version>1.8</java.version> <java.version>1.8</java.version>
...@@ -178,7 +178,7 @@ ...@@ -178,7 +178,7 @@
<plugin> <plugin>
<artifactId>maven-assembly-plugin</artifactId> <artifactId>maven-assembly-plugin</artifactId>
<configuration> <configuration>
<finalName>signal-dataCenter-service</finalName> <finalName>signal-datacenter-service</finalName>
<descriptors> <descriptors>
<descriptor>src/main/assembly/package.xml</descriptor> <descriptor>src/main/assembly/package.xml</descriptor>
</descriptors> </descriptors>
......
package net.wanji.datacenter.mapper; package net.wanji.datacenter.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wanji.datacenter.pojo.po.CrossBaseLaneInfoPO;
import org.apache.ibatis.annotations.Mapper;
/** /**
* @author duanruiming * @author duanruiming
* @date 2023/03/10 20:32 * @date 2023/03/10 20:32
*/ */
public interface CrossBaseLaneInfoMapper extends BaseMapper { @Mapper
public interface CrossBaseLaneInfoMapper extends BaseMapper<CrossBaseLaneInfoPO> {
} }
package net.wanji.datacenter.mapper; package net.wanji.datacenter.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wanji.datacenter.pojo.po.CrossDataRealTimePO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @author duanruiming * @author duanruiming
* @date 2023/03/10 20:06 * @date 2023/03/10 20:06
*/ */
public interface CrossDataRealTimeMapper extends BaseMapper { @Mapper
public interface CrossDataRealTimeMapper extends BaseMapper<CrossDataRealTimePO> {
void insertBatch(@Param("list") List<CrossDataRealTimePO> list);
} }
package net.wanji.datacenter.mapper; package net.wanji.datacenter.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wanji.datacenter.pojo.po.CrossDirDataRealTimePO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @author duanruiming * @author duanruiming
* @date 2023/03/10 21:09 * @date 2023/03/10 21:09
*/ */
public interface CrossDirDataRealTimeMapper extends BaseMapper { @Mapper
public interface CrossDirDataRealTimeMapper extends BaseMapper<CrossDirDataRealTimePO> {
void insertBatch(@Param("list")List<CrossDirDataRealTimePO> list);
} }
package net.wanji.datacenter.mapper; package net.wanji.datacenter.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wanji.datacenter.pojo.po.CrossLaneDataRealTimePO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @author duanruiming * @author duanruiming
* @date 2023/03/10 21:11 * @date 2023/03/10 21:11
*/ */
public interface CrossLaneDataRealTimeMapper extends BaseMapper { @Mapper
public interface CrossLaneDataRealTimeMapper extends BaseMapper<CrossLaneDataRealTimePO> {
void insertBatch(@Param("list") List<CrossLaneDataRealTimePO> list);
} }
package net.wanji.datacenter.mapper; package net.wanji.datacenter.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wanji.datacenter.pojo.po.CrossTurnDataRealtimePO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @author duanruiming * @author duanruiming
* @date 2023/03/10 21:11 * @date 2023/03/10 21:11
*/ */
public interface CrossTurnDataRealTimeMapper extends BaseMapper { @Mapper
public interface CrossTurnDataRealTimeMapper extends BaseMapper<CrossTurnDataRealtimePO> {
void insertBatch(@Param("list") List<CrossTurnDataRealtimePO> list);
} }
package net.wanji.datacenter.pojo.convert; package net.wanji.datacenter.pojo.convert;
import net.wanji.common.framework.Constants;
import net.wanji.datacenter.pojo.dto.LanePeriodicDataDTO; import net.wanji.datacenter.pojo.dto.LanePeriodicDataDTO;
import net.wanji.datacenter.pojo.po.*; import net.wanji.datacenter.pojo.po.*;
import org.springframework.stereotype.Component;
import java.util.Date; import java.util.Date;
...@@ -11,6 +11,7 @@ import java.util.Date; ...@@ -11,6 +11,7 @@ import java.util.Date;
* @date 2023/03/11 14:04 * @date 2023/03/11 14:04
*/ */
@SuppressWarnings("all") @SuppressWarnings("all")
@Component
public class LanePeriodicDataEventListConvert { public class LanePeriodicDataEventListConvert {
public CrossDataRealTimePO convert2CrossDataRealTimePO(LanePeriodicDataDTO.EventList eventList, CrossBaseLaneInfoPO laneInfoPO) { public CrossDataRealTimePO convert2CrossDataRealTimePO(LanePeriodicDataDTO.EventList eventList, CrossBaseLaneInfoPO laneInfoPO) {
...@@ -76,7 +77,7 @@ public class LanePeriodicDataEventListConvert { ...@@ -76,7 +77,7 @@ public class LanePeriodicDataEventListConvert {
CrossDirDataRealTimePO crossDirDataRealTimePO = new CrossDirDataRealTimePO(); CrossDirDataRealTimePO crossDirDataRealTimePO = new CrossDirDataRealTimePO();
// 路口方向ID(路口ID_方向_进出口_主辅路序号) // 路口方向ID(路口ID_方向_进出口_主辅路序号)
crossDirDataRealTimePO.setId(String.join(Constants.SystemParam.SEPARATOR_UNDER_LINE, String.valueOf(dir), String.valueOf(type))); crossDirDataRealTimePO.setId(String.valueOf(dir).concat(String.valueOf(type)));
crossDirDataRealTimePO.setDirType(dir); crossDirDataRealTimePO.setDirType(dir);
crossDirDataRealTimePO.setInOutType(type); crossDirDataRealTimePO.setInOutType(type);
crossDirDataRealTimePO.setCrossId(crossId); crossDirDataRealTimePO.setCrossId(crossId);
...@@ -84,6 +85,7 @@ public class LanePeriodicDataEventListConvert { ...@@ -84,6 +85,7 @@ public class LanePeriodicDataEventListConvert {
crossDirDataRealTimePO.setStatus(0000); crossDirDataRealTimePO.setStatus(0000);
crossDirDataRealTimePO.setTrafficIndex(0000.00); crossDirDataRealTimePO.setTrafficIndex(0000.00);
crossDirDataRealTimePO.setStartTime(now); crossDirDataRealTimePO.setStartTime(now);
crossDirDataRealTimePO.setCapacity(trafficFlow);
crossDirDataRealTimePO.setDuration(0000); crossDirDataRealTimePO.setDuration(0000);
crossDirDataRealTimePO.setFlow(trafficFlow); crossDirDataRealTimePO.setFlow(trafficFlow);
crossDirDataRealTimePO.setSpeed(meanV); crossDirDataRealTimePO.setSpeed(meanV);
...@@ -115,7 +117,7 @@ public class LanePeriodicDataEventListConvert { ...@@ -115,7 +117,7 @@ public class LanePeriodicDataEventListConvert {
Integer turn = laneInfoPO.getTurn(); Integer turn = laneInfoPO.getTurn();
CrossTurnDataRealtimePO crossTurnDataRealtimePO = new CrossTurnDataRealtimePO(); CrossTurnDataRealtimePO crossTurnDataRealtimePO = new CrossTurnDataRealtimePO();
crossTurnDataRealtimePO.setId(String.join(Constants.SystemParam.SEPARATOR_UNDER_LINE, crossId, null, String.valueOf(turn))); crossTurnDataRealtimePO.setId( crossId.concat("").concat(String.valueOf(turn)));
crossTurnDataRealtimePO.setTurnType(""); crossTurnDataRealtimePO.setTurnType("");
crossTurnDataRealtimePO.setInDir(0000); crossTurnDataRealtimePO.setInDir(0000);
crossTurnDataRealtimePO.setOutDir(0000); crossTurnDataRealtimePO.setOutDir(0000);
......
...@@ -31,6 +31,8 @@ public class CrossDirDataRealTimePO { ...@@ -31,6 +31,8 @@ public class CrossDirDataRealTimePO {
private Double trafficIndex; private Double trafficIndex;
@ApiModelProperty(name = "开始时间",notes = "") @ApiModelProperty(name = "开始时间",notes = "")
private Date startTime; private Date startTime;
@ApiModelProperty(name = "通行能力",notes = "")
private Integer capacity;
@ApiModelProperty(name = "持续时间",notes = "") @ApiModelProperty(name = "持续时间",notes = "")
private Integer duration; private Integer duration;
@ApiModelProperty(name = "交通流量(辆)",notes = "") @ApiModelProperty(name = "交通流量(辆)",notes = "")
......
package net.wanji.datacenter.service.impl; package net.wanji.datacenter.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.datacenter.kafka.ConsumerHandler; import net.wanji.datacenter.kafka.ConsumerHandler;
...@@ -10,12 +11,13 @@ import net.wanji.datacenter.pojo.dto.LanePeriodicDataDTO; ...@@ -10,12 +11,13 @@ import net.wanji.datacenter.pojo.dto.LanePeriodicDataDTO;
import net.wanji.datacenter.pojo.po.*; import net.wanji.datacenter.pojo.po.*;
import net.wanji.datacenter.service.DataProcessService; import net.wanji.datacenter.service.DataProcessService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @author duanruiming * @author duanruiming
...@@ -58,14 +60,15 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService { ...@@ -58,14 +60,15 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
} }
@Override @Override
@Transactional
public void save(Object convertData) throws Exception { public void save(Object convertData) throws Exception {
LanePeriodicDataDTO lanePeriodicDataDTO = (LanePeriodicDataDTO) convertData; LanePeriodicDataDTO lanePeriodicDataDTO = (LanePeriodicDataDTO) convertData;
int laneNum = lanePeriodicDataDTO.getLaneNum(); int laneNum = lanePeriodicDataDTO.getLaneNum();
List<CrossDataRealTimePO> crossDataRealTimePOS = new ArrayList<>(laneNum); List<CrossDataRealTimePO> crossDataRealTimePOS = new ArrayList<>(laneNum);
List<CrossDirDataRealTimePO> crossDirDataRealTimePOS = new ArrayList<>(); List<CrossDirDataRealTimePO> crossDirDataRealTimePOS = new ArrayList<>(laneNum);
List<CrossTurnDataRealtimePO> crossTurnDataRealtimePOS = new ArrayList<>(); List<CrossTurnDataRealtimePO> crossTurnDataRealtimePOS = new ArrayList<>(laneNum);
List<CrossLaneDataRealTimePO> crossLaneDataRealTimePOS = new ArrayList<>(); List<CrossLaneDataRealTimePO> crossLaneDataRealTimePOS = new ArrayList<>(laneNum);
List<LanePeriodicDataDTO.EventList> eventLists = lanePeriodicDataDTO.getEventList(); List<LanePeriodicDataDTO.EventList> eventLists = lanePeriodicDataDTO.getEventList();
if (CollectionUtils.isEmpty(eventLists)) { if (CollectionUtils.isEmpty(eventLists)) {
...@@ -73,7 +76,9 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService { ...@@ -73,7 +76,9 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
throw new Exception("当前车道周期实时数据车道列表为空"); throw new Exception("当前车道周期实时数据车道列表为空");
} }
// 通过车道编号获取车道信息 // 通过车道编号获取车道信息
List<String> LaneIdList = eventLists.stream().map(LanePeriodicDataDTO.EventList::getLaneId).collect(Collectors.toList()); // List<String> LaneIdList = eventLists.stream().map(LanePeriodicDataDTO.EventList::getLaneId).collect(Collectors.toList());
// "14PU609IQA014PUG09IRA0010012"
List<String> LaneIdList = Arrays.asList("14PU609IQA014PUG09IRA0010011");
List<CrossBaseLaneInfoPO> crossBaseLaneInfoPOS = crossBaseLaneInfoMapper.selectBatchIds(LaneIdList); List<CrossBaseLaneInfoPO> crossBaseLaneInfoPOS = crossBaseLaneInfoMapper.selectBatchIds(LaneIdList);
for (LanePeriodicDataDTO.EventList laneRealTimeItem : eventLists) { for (LanePeriodicDataDTO.EventList laneRealTimeItem : eventLists) {
...@@ -90,14 +95,21 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService { ...@@ -90,14 +95,21 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
crossLaneDataRealTimePOS.add(lanePeriodicDataEventListConvert.convert2CrossLaneDataRealTimePO(laneRealTimeItem, laneInfoPO)); crossLaneDataRealTimePOS.add(lanePeriodicDataEventListConvert.convert2CrossLaneDataRealTimePO(laneRealTimeItem, laneInfoPO));
String crossId = laneInfoPO.getCrossId();
crossDataRealTimeMapper.delete(new LambdaQueryWrapper<CrossDataRealTimePO>().eq(CrossDataRealTimePO::getCrossId, crossId));
crossDirDataRealTimeMapper.delete(new LambdaQueryWrapper<CrossDirDataRealTimePO>().eq(CrossDirDataRealTimePO::getCrossId, crossId));
crossTurnDataRealTimeMapper.delete(new LambdaQueryWrapper<CrossTurnDataRealtimePO>().eq(CrossTurnDataRealtimePO::getCrossId, crossId));
crossLaneDataRealTimeMapper.delete(new LambdaQueryWrapper<CrossLaneDataRealTimePO>().eq(CrossLaneDataRealTimePO::getCrossId, crossId));
} }
} }
} }
crossDataRealTimeMapper.insertBatch(crossDataRealTimePOS);
crossDataRealTimeMapper.insert(crossDataRealTimePOS); crossDirDataRealTimeMapper.insertBatch(crossDirDataRealTimePOS);
crossDirDataRealTimeMapper.insert(crossDirDataRealTimePOS); crossTurnDataRealTimeMapper.insertBatch(crossTurnDataRealtimePOS);
crossTurnDataRealTimeMapper.insert(crossTurnDataRealtimePOS); crossLaneDataRealTimeMapper.insertBatch(crossLaneDataRealTimePOS);
crossLaneDataRealTimeMapper.insert(crossLaneDataRealTimePOS);
} }
} }
...@@ -33,7 +33,66 @@ public class DataProcessTask { ...@@ -33,7 +33,66 @@ public class DataProcessTask {
String message = bean.receive(beanName); String message = bean.receive(beanName);
// 数据转化 // 数据转化
if (StringUtils.isBlank(message)) { if (StringUtils.isBlank(message)) {
message = "{\"eventList\":[{\"dynamic_queue_length_max\":40.975341796875,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":48,\"lane_flow_rate\":36.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.75,\"lane_saturation_flow_rate\":48,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.3242078320733432,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.335211267605633,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.01257999986410141,\"traffic_flow\":3,\"trolley_equivalent\":3,\"vehicle_length_ratio_mean\":0.012526985547440197,\"vehicle_nums_ratio_mean\":0.020196877121520705},{\"dynamic_queue_length_max\":40.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.06967829167842865,\"laneId\":\"\",\"lane_capacity\":276,\"lane_flow_rate\":204.0,\"lane_no_stop_rate\":0.8936170339584351,\"lane_one_stop_rate\":0.10638298094272614,\"lane_saturation\":0.739130437374115,\"lane_saturation_flow_rate\":276,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":17.12477208828104,\"light_green_start_queue_length\":9.938938453279693,\"mean_delay\":5.74468085106383,\"mean_stops_number\":0,\"mean_v\":1.8776506024096384,\"static_queue_length_max\":40.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.7083266377449036,\"traffic_flow\":17,\"trolley_equivalent\":17,\"vehicle_length_ratio_mean\":0.3361885299892225,\"vehicle_nums_ratio_mean\":0.28029531568228105},{\"dynamic_queue_length_max\":68.16592407226563,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":2.1223698196739984,\"light_green_start_queue_length\":0.4052462495606521,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":3.4737642585551347,\"static_queue_length_max\":3.681959867477417,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.006259700711133706,\"vehicle_nums_ratio_mean\":0.018911842165738647},{\"dynamic_queue_length_max\":61.581146240234375,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":72,\"lane_flow_rate\":48.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.6666666865348816,\"lane_saturation_flow_rate\":72,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":1.3318108032489646,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.212631578947371,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.008883332833647728,\"traffic_flow\":4,\"trolley_equivalent\":4,\"vehicle_length_ratio_mean\":0.003597769999430241,\"vehicle_nums_ratio_mean\":0.004687550599710195},{\"dynamic_queue_length_max\":63.37282943725586,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":264,\"lane_flow_rate\":252.0,\"lane_no_stop_rate\":0.9696969985961914,\"lane_one_stop_rate\":0.03030303120613098,\"lane_saturation\":0.9545454382896423,\"lane_saturation_flow_rate\":264,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":4.945268778965391,\"light_green_start_queue_length\":2.922568074588118,\"mean_delay\":1.3636363636363635,\"mean_stops_number\":0,\"mean_v\":3.3937572254335286,\"static_queue_length_max\":16.445341110229492,\"static_queue_length_min\":0.0,\"time_occupancy\":0.26542335748672485,\"traffic_flow\":21,\"trolley_equivalent\":21,\"vehicle_length_ratio_mean\":0.03733014619358526,\"vehicle_nums_ratio_mean\":0.029208289426470076},{\"dynamic_queue_length_max\":56.268768310546875,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":96,\"lane_flow_rate\":96.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":96,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":4.970868834133806,\"light_green_start_queue_length\":2.2785396247074523,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":1.8774834437086092,\"static_queue_length_max\":21.169273376464844,\"static_queue_length_min\":0.0,\"time_occupancy\":0.21854667365550995,\"traffic_flow\":8,\"trolley_equivalent\":8,\"vehicle_length_ratio_mean\":0.01890855935545738,\"vehicle_nums_ratio_mean\":0.016454919001741307},{\"dynamic_queue_length_max\":74.82034301757813,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":336,\"lane_flow_rate\":336.0,\"lane_no_stop_rate\":0.9259259104728699,\"lane_one_stop_rate\":0.07407407462596893,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":336,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":10.449663754167227,\"light_green_start_queue_length\":6.243474763015221,\"mean_delay\":3.888888888888889,\"mean_stops_number\":0,\"mean_v\":3.417926565874727,\"static_queue_length_max\":22.74837303161621,\"static_queue_length_min\":0.0,\"time_occupancy\":0.36901333928108215,\"traffic_flow\":24,\"trolley_equivalent\":28,\"vehicle_length_ratio_mean\":0.09141811475446049,\"vehicle_nums_ratio_mean\":0.08030259135657844},{\"dynamic_queue_length_max\":470.63189697265625,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":180,\"lane_flow_rate\":180.0,\"lane_no_stop_rate\":0.9555555582046509,\"lane_one_stop_rate\":0.04444444552063942,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":180,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":16.329852498810865,\"light_green_start_queue_length\":11.722974982754938,\"mean_delay\":2.5,\"mean_stops_number\":0,\"mean_v\":1.8117421602787458,\"static_queue_length_max\":46.890625,\"static_queue_length_min\":0.0,\"time_occupancy\":0.6800199747085571,\"traffic_flow\":11,\"trolley_equivalent\":15,\"vehicle_length_ratio_mean\":0.06779336408589944,\"vehicle_nums_ratio_mean\":0.0582711032875646},{\"dynamic_queue_length_max\":23.018892288208008,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.012964434921741486,\"laneId\":\"\",\"lane_capacity\":72,\"lane_flow_rate\":36.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.5,\"lane_saturation_flow_rate\":72,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.6141861389423239,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.541960784313726,\"static_queue_length_max\":17.1435604095459,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0071033332496881485,\"traffic_flow\":3,\"trolley_equivalent\":3,\"vehicle_length_ratio_mean\":0.002242794503171429,\"vehicle_nums_ratio_mean\":0.00287633546288533},{\"dynamic_queue_length_max\":114.65453338623047,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":14.023659467697144,\"light_green_start_queue_length\":0.0992967753574766,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":3.6110457516339856,\"static_queue_length_max\":4.859949588775635,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0012805742346469846,\"vehicle_nums_ratio_mean\":0.0027028174197727415},{\"dynamic_queue_length_max\":372.0594177246094,\"dynamic_queue_length_min\":2.3399829864501953,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":444,\"lane_flow_rate\":384.0,\"lane_no_stop_rate\":0.9885714054107666,\"lane_one_stop_rate\":0.011428571306169033,\"lane_saturation\":0.8648648858070374,\"lane_saturation_flow_rate\":444,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":154.56714787976495,\"light_green_start_queue_length\":13.386706187807281,\"mean_delay\":0.9428571428571428,\"mean_stops_number\":0,\"mean_v\":4.7758273381294964,\"static_queue_length_max\":43.37940979003906,\"static_queue_length_min\":0.0,\"time_occupancy\":0.036986663937568665,\"traffic_flow\":29,\"trolley_equivalent\":32,\"vehicle_length_ratio_mean\":0.07698311852651615,\"vehicle_nums_ratio_mean\":0.05800237682902805},{\"dynamic_queue_length_max\":371.6435241699219,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":96,\"lane_flow_rate\":72.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.75,\"lane_saturation_flow_rate\":96,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":149.71256256103516,\"light_green_start_queue_length\":12.456866034146014,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":9.356060606060607,\"static_queue_length_max\":368.05401611328125,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0038433328736573458,\"traffic_flow\":6,\"trolley_equivalent\":6,\"vehicle_length_ratio_mean\":0.013071173843431356,\"vehicle_nums_ratio_mean\":0.014736083131637588},{\"dynamic_queue_length_max\":370.0,\"dynamic_queue_length_min\":2.965820550918579,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":492,\"lane_flow_rate\":432.0,\"lane_no_stop_rate\":0.9834254384040833,\"lane_one_stop_rate\":0.016574585810303688,\"lane_saturation\":0.8780487775802612,\"lane_saturation_flow_rate\":492,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":188.10887777394262,\"light_green_start_queue_length\":15.665639088071625,\"mean_delay\":1.2430939226519337,\"mean_stops_number\":0,\"mean_v\":5.717452107279695,\"static_queue_length_max\":85.60419464111328,\"static_queue_length_min\":0.0,\"time_occupancy\":0.4382700026035309,\"traffic_flow\":36,\"trolley_equivalent\":36,\"vehicle_length_ratio_mean\":0.09328616546556728,\"vehicle_nums_ratio_mean\":0.07687118187298883},{\"dynamic_queue_length_max\":370.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":408,\"lane_flow_rate\":336.0,\"lane_no_stop_rate\":0.9520000219345093,\"lane_one_stop_rate\":0.04800000041723251,\"lane_saturation\":0.8235294222831726,\"lane_saturation_flow_rate\":408,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":107.36373444261223,\"light_green_start_queue_length\":8.63355828975809,\"mean_delay\":3.36,\"mean_stops_number\":0,\"mean_v\":4.588161925601749,\"static_queue_length_max\":81.62080383300781,\"static_queue_length_min\":0.0,\"time_occupancy\":0.46894001960754395,\"traffic_flow\":28,\"trolley_equivalent\":28,\"vehicle_length_ratio_mean\":0.05922727869761613,\"vehicle_nums_ratio_mean\":0.04411490205599492},{\"dynamic_queue_length_max\":75.41883850097656,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":180,\"lane_flow_rate\":168.0,\"lane_no_stop_rate\":0.7727272510528564,\"lane_one_stop_rate\":0.22727273404598236,\"lane_saturation\":0.9333333373069763,\"lane_saturation_flow_rate\":180,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":22.843779037738667,\"light_green_start_queue_length\":11.869044271008722,\"mean_delay\":16.363636363636363,\"mean_stops_number\":0,\"mean_v\":4.588436830835113,\"static_queue_length_max\":28.49137306213379,\"static_queue_length_min\":0.0,\"time_occupancy\":0.8092133402824402,\"traffic_flow\":12,\"trolley_equivalent\":14,\"vehicle_length_ratio_mean\":0.1949437555578175,\"vehicle_nums_ratio_mean\":0.14591537143096822},{\"dynamic_queue_length_max\":46.60673904418945,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.13525336980819702,\"laneId\":\"\",\"lane_capacity\":204,\"lane_flow_rate\":192.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.9411764740943909,\"lane_saturation_flow_rate\":204,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":15.36799144744873,\"light_green_start_queue_length\":8.714151109967913,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":3.4473863636363635,\"static_queue_length_max\":42.199012756347656,\"static_queue_length_min\":0.0,\"time_occupancy\":0.33947670459747314,\"traffic_flow\":16,\"trolley_equivalent\":16,\"vehicle_length_ratio_mean\":0.049264598236964906,\"vehicle_nums_ratio_mean\":0.04934657162253903},{\"dynamic_queue_length_max\":44.676570892333984,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.060385480523109436,\"laneId\":\"\",\"lane_capacity\":48,\"lane_flow_rate\":48.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":48,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.017500000000001,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0068066660314798355,\"traffic_flow\":4,\"trolley_equivalent\":4,\"vehicle_length_ratio_mean\":0.0019217923015497692,\"vehicle_nums_ratio_mean\":0.0013577732518669382},{\"dynamic_queue_length_max\":50.045387268066406,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.14726360142230988,\"laneId\":\"\",\"lane_capacity\":336,\"lane_flow_rate\":336.0,\"lane_no_stop_rate\":0.9534883499145508,\"lane_one_stop_rate\":0.04651162773370743,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":336,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":14.72541080202375,\"light_green_start_queue_length\":6.800526142120361,\"mean_delay\":3.488372093023256,\"mean_stops_number\":0,\"mean_v\":2.981413612565444,\"static_queue_length_max\":50.019309997558594,\"static_queue_length_min\":0.0,\"time_occupancy\":0.5300833582878113,\"traffic_flow\":26,\"trolley_equivalent\":28,\"vehicle_length_ratio_mean\":0.07812055642542715,\"vehicle_nums_ratio_mean\":0.08565286695906603},{\"dynamic_queue_length_max\":29.523109436035156,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":84,\"lane_flow_rate\":72.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.8571428656578064,\"lane_saturation_flow_rate\":84,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.469166666666671,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.01454333309084177,\"traffic_flow\":5,\"trolley_equivalent\":6,\"vehicle_length_ratio_mean\":0.002055284612067929,\"vehicle_nums_ratio_mean\":0.0017396469789545145},{\"dynamic_queue_length_max\":48.40139389038086,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.06887155026197433,\"laneId\":\"\",\"lane_capacity\":108,\"lane_flow_rate\":108.0,\"lane_no_stop_rate\":0.9285714030265808,\"lane_one_stop_rate\":0.0714285746216774,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":108,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":17.13508483341762,\"light_green_start_queue_length\":17.13508483341762,\"mean_delay\":2.142857142857143,\"mean_stops_number\":0,\"mean_v\":1.7502366863905314,\"static_queue_length_max\":48.40139389038086,\"static_queue_length_min\":0.0,\"time_occupancy\":0.2147066742181778,\"traffic_flow\":9,\"trolley_equivalent\":9,\"vehicle_length_ratio_mean\":0.08763728947969861,\"vehicle_nums_ratio_mean\":0.08780974202308214},{\"dynamic_queue_length_max\":371.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":828,\"lane_flow_rate\":696.0,\"lane_no_stop_rate\":0.9490445852279663,\"lane_one_stop_rate\":0.05095541477203369,\"lane_saturation\":0.8405796885490417,\"lane_saturation_flow_rate\":828,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":101.03698022024972,\"light_green_start_queue_length\":24.407301357814244,\"mean_delay\":4.012738853503185,\"mean_stops_number\":0,\"mean_v\":4.42488933601609,\"static_queue_length_max\":52.10312271118164,\"static_queue_length_min\":0.0,\"time_occupancy\":0.6676632761955261,\"traffic_flow\":56,\"trolley_equivalent\":58,\"vehicle_length_ratio_mean\":0.1073623936127325,\"vehicle_nums_ratio_mean\":0.10431093066103772},{\"dynamic_queue_length_max\":372.4347839355469,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":108,\"lane_flow_rate\":60.0,\"lane_no_stop_rate\":0.9909090995788574,\"lane_one_stop_rate\":0.00909090880304575,\"lane_saturation\":0.5555555820465088,\"lane_saturation_flow_rate\":108,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":183.26575967243738,\"light_green_start_queue_length\":1.7458618027823312,\"mean_delay\":0.5454545454545454,\"mean_stops_number\":0,\"mean_v\":2.369907407407407,\"static_queue_length_max\":15.441865921020508,\"static_queue_length_min\":0.0,\"time_occupancy\":0.260696679353714,\"traffic_flow\":5,\"trolley_equivalent\":5,\"vehicle_length_ratio_mean\":0.03587172349544403,\"vehicle_nums_ratio_mean\":0.03281992581373906},{\"dynamic_queue_length_max\":373.38916015625,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":60,\"lane_flow_rate\":60.0,\"lane_no_stop_rate\":0.9918032884597778,\"lane_one_stop_rate\":0.008196720853447914,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":60,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":208.2078195299421,\"light_green_start_queue_length\":0.4642688206263951,\"mean_delay\":0.6147540983606558,\"mean_stops_number\":0,\"mean_v\":2.714743202416921,\"static_queue_length_max\":7.421406269073486,\"static_queue_length_min\":0.0,\"time_occupancy\":0.22264666855335236,\"traffic_flow\":5,\"trolley_equivalent\":5,\"vehicle_length_ratio_mean\":0.047669618556627505,\"vehicle_nums_ratio_mean\":0.038675322940918314},{\"dynamic_queue_length_max\":51.19540786743164,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.12543940544128418,\"laneId\":\"\",\"lane_capacity\":300,\"lane_flow_rate\":276.0,\"lane_no_stop_rate\":0.9047619104385376,\"lane_one_stop_rate\":0.095238097012043,\"lane_saturation\":0.9200000166893005,\"lane_saturation_flow_rate\":300,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":23.933147975376674,\"light_green_start_queue_length\":18.824801445007324,\"mean_delay\":11.071428571428571,\"mean_stops_number\":0,\"mean_v\":3.4368482490272374,\"static_queue_length_max\":51.19540786743164,\"static_queue_length_min\":0.0,\"time_occupancy\":0.7569065690040588,\"traffic_flow\":19,\"trolley_equivalent\":23,\"vehicle_length_ratio_mean\":0.22347544479637185,\"vehicle_nums_ratio_mean\":0.17155088182698078},{\"dynamic_queue_length_max\":48.06354904174805,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.25814419984817505,\"laneId\":\"\",\"lane_capacity\":456,\"lane_flow_rate\":420.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.9210526347160339,\"lane_saturation_flow_rate\":456,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":6.743759768349784,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":9.33344947735192,\"static_queue_length_max\":21.375097274780273,\"static_queue_length_min\":0.0,\"time_occupancy\":0.08263000845909119,\"traffic_flow\":35,\"trolley_equivalent\":35,\"vehicle_length_ratio_mean\":0.032610454184976226,\"vehicle_nums_ratio_mean\":0.029173267185839763},{\"dynamic_queue_length_max\":52.07501983642578,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.07083287835121155,\"laneId\":\"\",\"lane_capacity\":204,\"lane_flow_rate\":180.0,\"lane_no_stop_rate\":0.8285714387893677,\"lane_one_stop_rate\":0.17142857611179352,\"lane_saturation\":0.8823529481887817,\"lane_saturation_flow_rate\":204,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":28.14895793369838,\"light_green_start_queue_length\":27.185110364641464,\"mean_delay\":12.428571428571429,\"mean_stops_number\":0,\"mean_v\":2.3490223463687148,\"static_queue_length_max\":51.60746765136719,\"static_queue_length_min\":0.0,\"time_occupancy\":0.5188466310501099,\"traffic_flow\":15,\"trolley_equivalent\":15,\"vehicle_length_ratio_mean\":0.23345167850677204,\"vehicle_nums_ratio_mean\":0.16815644997574808},{\"dynamic_queue_length_max\":48.34062576293945,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.08141857385635376,\"laneId\":\"\",\"lane_capacity\":336,\"lane_flow_rate\":180.0,\"lane_no_stop_rate\":0.9117646813392639,\"lane_one_stop_rate\":0.0882352963089943,\"lane_saturation\":0.5357142686843872,\"lane_saturation_flow_rate\":336,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":20.943053245544434,\"light_green_start_queue_length\":15.544171469552177,\"mean_delay\":9.264705882352942,\"mean_stops_number\":0,\"mean_v\":3.3683863080684575,\"static_queue_length_max\":45.82487106323242,\"static_queue_length_min\":0.0,\"time_occupancy\":0.648930013179779,\"traffic_flow\":15,\"trolley_equivalent\":15,\"vehicle_length_ratio_mean\":0.17561335737380096,\"vehicle_nums_ratio_mean\":0.13609791253437337},{\"dynamic_queue_length_max\":42.26611328125,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":4.69802736384528,\"light_green_start_queue_length\":0.11607186283384051,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.513181818181817,\"static_queue_length_max\":3.347986936569214,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0040865438365619644,\"vehicle_nums_ratio_mean\":0.014162329443492052},{\"dynamic_queue_length_max\":48.721282958984375,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.1409478783607483,\"laneId\":\"\",\"lane_capacity\":348,\"lane_flow_rate\":204.0,\"lane_no_stop_rate\":0.875,\"lane_one_stop_rate\":0.125,\"lane_saturation\":0.5862069129943848,\"lane_saturation_flow_rate\":348,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":26.508986609322683,\"light_green_start_queue_length\":16.698043823242188,\"mean_delay\":13.125,\"mean_stops_number\":0,\"mean_v\":2.713824228028499,\"static_queue_length_max\":46.516483306884766,\"static_queue_length_min\":0.0,\"time_occupancy\":0.6088699698448181,\"traffic_flow\":17,\"trolley_equivalent\":17,\"vehicle_length_ratio_mean\":0.23827141966830082,\"vehicle_nums_ratio_mean\":0.15022252876379824},{\"dynamic_queue_length_max\":0.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":0.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0,\"vehicle_nums_ratio_mean\":0.0},{\"dynamic_queue_length_max\":0.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":0.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0,\"vehicle_nums_ratio_mean\":0.0},{\"dynamic_queue_length_max\":59.1076774597168,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":2.1744209017072404,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.006782431415935317,\"vehicle_nums_ratio_mean\":0.005984921610262308},{\"dynamic_queue_length_max\":10.900229454040527,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":24,\"lane_flow_rate\":24.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":24,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.6599999999999975,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.003563334234058857,\"traffic_flow\":2,\"trolley_equivalent\":2,\"vehicle_length_ratio_mean\":0.0002124606500817899,\"vehicle_nums_ratio_mean\":0.0002143852518920743},{\"dynamic_queue_length_max\":0.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":0.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0,\"vehicle_nums_ratio_mean\":0.0},{\"dynamic_queue_length_max\":25.074373245239258,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":24,\"lane_flow_rate\":24.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":24,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.664999999999999,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0022033341228961945,\"traffic_flow\":2,\"trolley_equivalent\":2,\"vehicle_length_ratio_mean\":0.00029760406802118187,\"vehicle_nums_ratio_mean\":0.0003037124401804386}],\"laneNum\":35,\"orgCode\":\"040001\",\"timeStamp\":\"2023-03-10 17:03:14:710\"}"; // message = "{\"eventList\":[{\"dynamic_queue_length_max\":40.975341796875,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":48,\"lane_flow_rate\":36.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.75,\"lane_saturation_flow_rate\":48,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.3242078320733432,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.335211267605633,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.01257999986410141,\"traffic_flow\":3,\"trolley_equivalent\":3,\"vehicle_length_ratio_mean\":0.012526985547440197,\"vehicle_nums_ratio_mean\":0.020196877121520705},{\"dynamic_queue_length_max\":40.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.06967829167842865,\"laneId\":\"\",\"lane_capacity\":276,\"lane_flow_rate\":204.0,\"lane_no_stop_rate\":0.8936170339584351,\"lane_one_stop_rate\":0.10638298094272614,\"lane_saturation\":0.739130437374115,\"lane_saturation_flow_rate\":276,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":17.12477208828104,\"light_green_start_queue_length\":9.938938453279693,\"mean_delay\":5.74468085106383,\"mean_stops_number\":0,\"mean_v\":1.8776506024096384,\"static_queue_length_max\":40.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.7083266377449036,\"traffic_flow\":17,\"trolley_equivalent\":17,\"vehicle_length_ratio_mean\":0.3361885299892225,\"vehicle_nums_ratio_mean\":0.28029531568228105},{\"dynamic_queue_length_max\":68.16592407226563,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":2.1223698196739984,\"light_green_start_queue_length\":0.4052462495606521,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":3.4737642585551347,\"static_queue_length_max\":3.681959867477417,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.006259700711133706,\"vehicle_nums_ratio_mean\":0.018911842165738647},{\"dynamic_queue_length_max\":61.581146240234375,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":72,\"lane_flow_rate\":48.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.6666666865348816,\"lane_saturation_flow_rate\":72,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":1.3318108032489646,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.212631578947371,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.008883332833647728,\"traffic_flow\":4,\"trolley_equivalent\":4,\"vehicle_length_ratio_mean\":0.003597769999430241,\"vehicle_nums_ratio_mean\":0.004687550599710195},{\"dynamic_queue_length_max\":63.37282943725586,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":264,\"lane_flow_rate\":252.0,\"lane_no_stop_rate\":0.9696969985961914,\"lane_one_stop_rate\":0.03030303120613098,\"lane_saturation\":0.9545454382896423,\"lane_saturation_flow_rate\":264,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":4.945268778965391,\"light_green_start_queue_length\":2.922568074588118,\"mean_delay\":1.3636363636363635,\"mean_stops_number\":0,\"mean_v\":3.3937572254335286,\"static_queue_length_max\":16.445341110229492,\"static_queue_length_min\":0.0,\"time_occupancy\":0.26542335748672485,\"traffic_flow\":21,\"trolley_equivalent\":21,\"vehicle_length_ratio_mean\":0.03733014619358526,\"vehicle_nums_ratio_mean\":0.029208289426470076},{\"dynamic_queue_length_max\":56.268768310546875,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":96,\"lane_flow_rate\":96.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":96,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":4.970868834133806,\"light_green_start_queue_length\":2.2785396247074523,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":1.8774834437086092,\"static_queue_length_max\":21.169273376464844,\"static_queue_length_min\":0.0,\"time_occupancy\":0.21854667365550995,\"traffic_flow\":8,\"trolley_equivalent\":8,\"vehicle_length_ratio_mean\":0.01890855935545738,\"vehicle_nums_ratio_mean\":0.016454919001741307},{\"dynamic_queue_length_max\":74.82034301757813,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":336,\"lane_flow_rate\":336.0,\"lane_no_stop_rate\":0.9259259104728699,\"lane_one_stop_rate\":0.07407407462596893,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":336,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":10.449663754167227,\"light_green_start_queue_length\":6.243474763015221,\"mean_delay\":3.888888888888889,\"mean_stops_number\":0,\"mean_v\":3.417926565874727,\"static_queue_length_max\":22.74837303161621,\"static_queue_length_min\":0.0,\"time_occupancy\":0.36901333928108215,\"traffic_flow\":24,\"trolley_equivalent\":28,\"vehicle_length_ratio_mean\":0.09141811475446049,\"vehicle_nums_ratio_mean\":0.08030259135657844},{\"dynamic_queue_length_max\":470.63189697265625,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":180,\"lane_flow_rate\":180.0,\"lane_no_stop_rate\":0.9555555582046509,\"lane_one_stop_rate\":0.04444444552063942,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":180,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":16.329852498810865,\"light_green_start_queue_length\":11.722974982754938,\"mean_delay\":2.5,\"mean_stops_number\":0,\"mean_v\":1.8117421602787458,\"static_queue_length_max\":46.890625,\"static_queue_length_min\":0.0,\"time_occupancy\":0.6800199747085571,\"traffic_flow\":11,\"trolley_equivalent\":15,\"vehicle_length_ratio_mean\":0.06779336408589944,\"vehicle_nums_ratio_mean\":0.0582711032875646},{\"dynamic_queue_length_max\":23.018892288208008,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.012964434921741486,\"laneId\":\"\",\"lane_capacity\":72,\"lane_flow_rate\":36.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.5,\"lane_saturation_flow_rate\":72,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.6141861389423239,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.541960784313726,\"static_queue_length_max\":17.1435604095459,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0071033332496881485,\"traffic_flow\":3,\"trolley_equivalent\":3,\"vehicle_length_ratio_mean\":0.002242794503171429,\"vehicle_nums_ratio_mean\":0.00287633546288533},{\"dynamic_queue_length_max\":114.65453338623047,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":14.023659467697144,\"light_green_start_queue_length\":0.0992967753574766,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":3.6110457516339856,\"static_queue_length_max\":4.859949588775635,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0012805742346469846,\"vehicle_nums_ratio_mean\":0.0027028174197727415},{\"dynamic_queue_length_max\":372.0594177246094,\"dynamic_queue_length_min\":2.3399829864501953,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":444,\"lane_flow_rate\":384.0,\"lane_no_stop_rate\":0.9885714054107666,\"lane_one_stop_rate\":0.011428571306169033,\"lane_saturation\":0.8648648858070374,\"lane_saturation_flow_rate\":444,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":154.56714787976495,\"light_green_start_queue_length\":13.386706187807281,\"mean_delay\":0.9428571428571428,\"mean_stops_number\":0,\"mean_v\":4.7758273381294964,\"static_queue_length_max\":43.37940979003906,\"static_queue_length_min\":0.0,\"time_occupancy\":0.036986663937568665,\"traffic_flow\":29,\"trolley_equivalent\":32,\"vehicle_length_ratio_mean\":0.07698311852651615,\"vehicle_nums_ratio_mean\":0.05800237682902805},{\"dynamic_queue_length_max\":371.6435241699219,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":96,\"lane_flow_rate\":72.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.75,\"lane_saturation_flow_rate\":96,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":149.71256256103516,\"light_green_start_queue_length\":12.456866034146014,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":9.356060606060607,\"static_queue_length_max\":368.05401611328125,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0038433328736573458,\"traffic_flow\":6,\"trolley_equivalent\":6,\"vehicle_length_ratio_mean\":0.013071173843431356,\"vehicle_nums_ratio_mean\":0.014736083131637588},{\"dynamic_queue_length_max\":370.0,\"dynamic_queue_length_min\":2.965820550918579,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":492,\"lane_flow_rate\":432.0,\"lane_no_stop_rate\":0.9834254384040833,\"lane_one_stop_rate\":0.016574585810303688,\"lane_saturation\":0.8780487775802612,\"lane_saturation_flow_rate\":492,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":188.10887777394262,\"light_green_start_queue_length\":15.665639088071625,\"mean_delay\":1.2430939226519337,\"mean_stops_number\":0,\"mean_v\":5.717452107279695,\"static_queue_length_max\":85.60419464111328,\"static_queue_length_min\":0.0,\"time_occupancy\":0.4382700026035309,\"traffic_flow\":36,\"trolley_equivalent\":36,\"vehicle_length_ratio_mean\":0.09328616546556728,\"vehicle_nums_ratio_mean\":0.07687118187298883},{\"dynamic_queue_length_max\":370.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":408,\"lane_flow_rate\":336.0,\"lane_no_stop_rate\":0.9520000219345093,\"lane_one_stop_rate\":0.04800000041723251,\"lane_saturation\":0.8235294222831726,\"lane_saturation_flow_rate\":408,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":107.36373444261223,\"light_green_start_queue_length\":8.63355828975809,\"mean_delay\":3.36,\"mean_stops_number\":0,\"mean_v\":4.588161925601749,\"static_queue_length_max\":81.62080383300781,\"static_queue_length_min\":0.0,\"time_occupancy\":0.46894001960754395,\"traffic_flow\":28,\"trolley_equivalent\":28,\"vehicle_length_ratio_mean\":0.05922727869761613,\"vehicle_nums_ratio_mean\":0.04411490205599492},{\"dynamic_queue_length_max\":75.41883850097656,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":180,\"lane_flow_rate\":168.0,\"lane_no_stop_rate\":0.7727272510528564,\"lane_one_stop_rate\":0.22727273404598236,\"lane_saturation\":0.9333333373069763,\"lane_saturation_flow_rate\":180,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":22.843779037738667,\"light_green_start_queue_length\":11.869044271008722,\"mean_delay\":16.363636363636363,\"mean_stops_number\":0,\"mean_v\":4.588436830835113,\"static_queue_length_max\":28.49137306213379,\"static_queue_length_min\":0.0,\"time_occupancy\":0.8092133402824402,\"traffic_flow\":12,\"trolley_equivalent\":14,\"vehicle_length_ratio_mean\":0.1949437555578175,\"vehicle_nums_ratio_mean\":0.14591537143096822},{\"dynamic_queue_length_max\":46.60673904418945,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.13525336980819702,\"laneId\":\"\",\"lane_capacity\":204,\"lane_flow_rate\":192.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.9411764740943909,\"lane_saturation_flow_rate\":204,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":15.36799144744873,\"light_green_start_queue_length\":8.714151109967913,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":3.4473863636363635,\"static_queue_length_max\":42.199012756347656,\"static_queue_length_min\":0.0,\"time_occupancy\":0.33947670459747314,\"traffic_flow\":16,\"trolley_equivalent\":16,\"vehicle_length_ratio_mean\":0.049264598236964906,\"vehicle_nums_ratio_mean\":0.04934657162253903},{\"dynamic_queue_length_max\":44.676570892333984,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.060385480523109436,\"laneId\":\"\",\"lane_capacity\":48,\"lane_flow_rate\":48.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":48,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.017500000000001,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0068066660314798355,\"traffic_flow\":4,\"trolley_equivalent\":4,\"vehicle_length_ratio_mean\":0.0019217923015497692,\"vehicle_nums_ratio_mean\":0.0013577732518669382},{\"dynamic_queue_length_max\":50.045387268066406,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.14726360142230988,\"laneId\":\"\",\"lane_capacity\":336,\"lane_flow_rate\":336.0,\"lane_no_stop_rate\":0.9534883499145508,\"lane_one_stop_rate\":0.04651162773370743,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":336,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":14.72541080202375,\"light_green_start_queue_length\":6.800526142120361,\"mean_delay\":3.488372093023256,\"mean_stops_number\":0,\"mean_v\":2.981413612565444,\"static_queue_length_max\":50.019309997558594,\"static_queue_length_min\":0.0,\"time_occupancy\":0.5300833582878113,\"traffic_flow\":26,\"trolley_equivalent\":28,\"vehicle_length_ratio_mean\":0.07812055642542715,\"vehicle_nums_ratio_mean\":0.08565286695906603},{\"dynamic_queue_length_max\":29.523109436035156,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":84,\"lane_flow_rate\":72.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.8571428656578064,\"lane_saturation_flow_rate\":84,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.469166666666671,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.01454333309084177,\"traffic_flow\":5,\"trolley_equivalent\":6,\"vehicle_length_ratio_mean\":0.002055284612067929,\"vehicle_nums_ratio_mean\":0.0017396469789545145},{\"dynamic_queue_length_max\":48.40139389038086,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.06887155026197433,\"laneId\":\"\",\"lane_capacity\":108,\"lane_flow_rate\":108.0,\"lane_no_stop_rate\":0.9285714030265808,\"lane_one_stop_rate\":0.0714285746216774,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":108,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":17.13508483341762,\"light_green_start_queue_length\":17.13508483341762,\"mean_delay\":2.142857142857143,\"mean_stops_number\":0,\"mean_v\":1.7502366863905314,\"static_queue_length_max\":48.40139389038086,\"static_queue_length_min\":0.0,\"time_occupancy\":0.2147066742181778,\"traffic_flow\":9,\"trolley_equivalent\":9,\"vehicle_length_ratio_mean\":0.08763728947969861,\"vehicle_nums_ratio_mean\":0.08780974202308214},{\"dynamic_queue_length_max\":371.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":828,\"lane_flow_rate\":696.0,\"lane_no_stop_rate\":0.9490445852279663,\"lane_one_stop_rate\":0.05095541477203369,\"lane_saturation\":0.8405796885490417,\"lane_saturation_flow_rate\":828,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":101.03698022024972,\"light_green_start_queue_length\":24.407301357814244,\"mean_delay\":4.012738853503185,\"mean_stops_number\":0,\"mean_v\":4.42488933601609,\"static_queue_length_max\":52.10312271118164,\"static_queue_length_min\":0.0,\"time_occupancy\":0.6676632761955261,\"traffic_flow\":56,\"trolley_equivalent\":58,\"vehicle_length_ratio_mean\":0.1073623936127325,\"vehicle_nums_ratio_mean\":0.10431093066103772},{\"dynamic_queue_length_max\":372.4347839355469,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":108,\"lane_flow_rate\":60.0,\"lane_no_stop_rate\":0.9909090995788574,\"lane_one_stop_rate\":0.00909090880304575,\"lane_saturation\":0.5555555820465088,\"lane_saturation_flow_rate\":108,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":183.26575967243738,\"light_green_start_queue_length\":1.7458618027823312,\"mean_delay\":0.5454545454545454,\"mean_stops_number\":0,\"mean_v\":2.369907407407407,\"static_queue_length_max\":15.441865921020508,\"static_queue_length_min\":0.0,\"time_occupancy\":0.260696679353714,\"traffic_flow\":5,\"trolley_equivalent\":5,\"vehicle_length_ratio_mean\":0.03587172349544403,\"vehicle_nums_ratio_mean\":0.03281992581373906},{\"dynamic_queue_length_max\":373.38916015625,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":60,\"lane_flow_rate\":60.0,\"lane_no_stop_rate\":0.9918032884597778,\"lane_one_stop_rate\":0.008196720853447914,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":60,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":208.2078195299421,\"light_green_start_queue_length\":0.4642688206263951,\"mean_delay\":0.6147540983606558,\"mean_stops_number\":0,\"mean_v\":2.714743202416921,\"static_queue_length_max\":7.421406269073486,\"static_queue_length_min\":0.0,\"time_occupancy\":0.22264666855335236,\"traffic_flow\":5,\"trolley_equivalent\":5,\"vehicle_length_ratio_mean\":0.047669618556627505,\"vehicle_nums_ratio_mean\":0.038675322940918314},{\"dynamic_queue_length_max\":51.19540786743164,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.12543940544128418,\"laneId\":\"\",\"lane_capacity\":300,\"lane_flow_rate\":276.0,\"lane_no_stop_rate\":0.9047619104385376,\"lane_one_stop_rate\":0.095238097012043,\"lane_saturation\":0.9200000166893005,\"lane_saturation_flow_rate\":300,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":23.933147975376674,\"light_green_start_queue_length\":18.824801445007324,\"mean_delay\":11.071428571428571,\"mean_stops_number\":0,\"mean_v\":3.4368482490272374,\"static_queue_length_max\":51.19540786743164,\"static_queue_length_min\":0.0,\"time_occupancy\":0.7569065690040588,\"traffic_flow\":19,\"trolley_equivalent\":23,\"vehicle_length_ratio_mean\":0.22347544479637185,\"vehicle_nums_ratio_mean\":0.17155088182698078},{\"dynamic_queue_length_max\":48.06354904174805,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.25814419984817505,\"laneId\":\"\",\"lane_capacity\":456,\"lane_flow_rate\":420.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.9210526347160339,\"lane_saturation_flow_rate\":456,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":6.743759768349784,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":9.33344947735192,\"static_queue_length_max\":21.375097274780273,\"static_queue_length_min\":0.0,\"time_occupancy\":0.08263000845909119,\"traffic_flow\":35,\"trolley_equivalent\":35,\"vehicle_length_ratio_mean\":0.032610454184976226,\"vehicle_nums_ratio_mean\":0.029173267185839763},{\"dynamic_queue_length_max\":52.07501983642578,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.07083287835121155,\"laneId\":\"\",\"lane_capacity\":204,\"lane_flow_rate\":180.0,\"lane_no_stop_rate\":0.8285714387893677,\"lane_one_stop_rate\":0.17142857611179352,\"lane_saturation\":0.8823529481887817,\"lane_saturation_flow_rate\":204,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":28.14895793369838,\"light_green_start_queue_length\":27.185110364641464,\"mean_delay\":12.428571428571429,\"mean_stops_number\":0,\"mean_v\":2.3490223463687148,\"static_queue_length_max\":51.60746765136719,\"static_queue_length_min\":0.0,\"time_occupancy\":0.5188466310501099,\"traffic_flow\":15,\"trolley_equivalent\":15,\"vehicle_length_ratio_mean\":0.23345167850677204,\"vehicle_nums_ratio_mean\":0.16815644997574808},{\"dynamic_queue_length_max\":48.34062576293945,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.08141857385635376,\"laneId\":\"\",\"lane_capacity\":336,\"lane_flow_rate\":180.0,\"lane_no_stop_rate\":0.9117646813392639,\"lane_one_stop_rate\":0.0882352963089943,\"lane_saturation\":0.5357142686843872,\"lane_saturation_flow_rate\":336,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":20.943053245544434,\"light_green_start_queue_length\":15.544171469552177,\"mean_delay\":9.264705882352942,\"mean_stops_number\":0,\"mean_v\":3.3683863080684575,\"static_queue_length_max\":45.82487106323242,\"static_queue_length_min\":0.0,\"time_occupancy\":0.648930013179779,\"traffic_flow\":15,\"trolley_equivalent\":15,\"vehicle_length_ratio_mean\":0.17561335737380096,\"vehicle_nums_ratio_mean\":0.13609791253437337},{\"dynamic_queue_length_max\":42.26611328125,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":4.69802736384528,\"light_green_start_queue_length\":0.11607186283384051,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.513181818181817,\"static_queue_length_max\":3.347986936569214,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0040865438365619644,\"vehicle_nums_ratio_mean\":0.014162329443492052},{\"dynamic_queue_length_max\":48.721282958984375,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.1409478783607483,\"laneId\":\"\",\"lane_capacity\":348,\"lane_flow_rate\":204.0,\"lane_no_stop_rate\":0.875,\"lane_one_stop_rate\":0.125,\"lane_saturation\":0.5862069129943848,\"lane_saturation_flow_rate\":348,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":26.508986609322683,\"light_green_start_queue_length\":16.698043823242188,\"mean_delay\":13.125,\"mean_stops_number\":0,\"mean_v\":2.713824228028499,\"static_queue_length_max\":46.516483306884766,\"static_queue_length_min\":0.0,\"time_occupancy\":0.6088699698448181,\"traffic_flow\":17,\"trolley_equivalent\":17,\"vehicle_length_ratio_mean\":0.23827141966830082,\"vehicle_nums_ratio_mean\":0.15022252876379824},{\"dynamic_queue_length_max\":0.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":0.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0,\"vehicle_nums_ratio_mean\":0.0},{\"dynamic_queue_length_max\":0.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":0.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0,\"vehicle_nums_ratio_mean\":0.0},{\"dynamic_queue_length_max\":59.1076774597168,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":2.1744209017072404,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.006782431415935317,\"vehicle_nums_ratio_mean\":0.005984921610262308},{\"dynamic_queue_length_max\":10.900229454040527,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":24,\"lane_flow_rate\":24.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":24,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.6599999999999975,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.003563334234058857,\"traffic_flow\":2,\"trolley_equivalent\":2,\"vehicle_length_ratio_mean\":0.0002124606500817899,\"vehicle_nums_ratio_mean\":0.0002143852518920743},{\"dynamic_queue_length_max\":0.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":0.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0,\"vehicle_nums_ratio_mean\":0.0},{\"dynamic_queue_length_max\":25.074373245239258,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":24,\"lane_flow_rate\":24.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":24,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.664999999999999,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0022033341228961945,\"traffic_flow\":2,\"trolley_equivalent\":2,\"vehicle_length_ratio_mean\":0.00029760406802118187,\"vehicle_nums_ratio_mean\":0.0003037124401804386}],\"laneNum\":35,\"orgCode\":\"040001\",\"timeStamp\":\"2023-03-10 17:03:14:710\"}";
message = "{\n" +
" \"eventList\": [\n" +
" {\n" +
" \"dynamic_queue_length_max\": 40.975341796875,\n" +
" \"dynamic_queue_length_min\": 0.0,\n" +
" \"green_light_efficiency\": 0.0,\n" +
" \"laneId\": \"14PU609IQA014PUG09IRA0010011\",\n" +
" \"lane_capacity\": 48,\n" +
" \"lane_flow_rate\": 36.0,\n" +
" \"lane_no_stop_rate\": 1.0,\n" +
" \"lane_one_stop_rate\": 0.0,\n" +
" \"lane_saturation\": 0.75,\n" +
" \"lane_saturation_flow_rate\": 48,\n" +
" \"lane_three_stop_rate\": 0.0,\n" +
" \"lane_two_stop_rate\": 0.0,\n" +
" \"light_green_finish_queue_length\": 0.3242078320733432,\n" +
" \"light_green_start_queue_length\": 0.0,\n" +
" \"mean_delay\": 0.0,\n" +
" \"mean_stops_number\": 0,\n" +
" \"mean_v\": 4.335211267605633,\n" +
" \"static_queue_length_max\": 0.0,\n" +
" \"static_queue_length_min\": 0.0,\n" +
" \"time_occupancy\": 0.01257999986410141,\n" +
" \"traffic_flow\": 3,\n" +
" \"trolley_equivalent\": 3,\n" +
" \"vehicle_length_ratio_mean\": 0.012526985547440197,\n" +
" \"vehicle_nums_ratio_mean\": 0.020196877121520705\n" +
" },\n" +
" {\n" +
" \"dynamic_queue_length_max\": 40.0,\n" +
" \"dynamic_queue_length_min\": 0.0,\n" +
" \"green_light_efficiency\": 0.06967829167842865,\n" +
" \"laneId\": \"14PU609IQA014PUG09IRA0010012\",\n" +
" \"lane_capacity\": 276,\n" +
" \"lane_flow_rate\": 204.0,\n" +
" \"lane_no_stop_rate\": 0.8936170339584351,\n" +
" \"lane_one_stop_rate\": 0.10638298094272614,\n" +
" \"lane_saturation\": 0.739130437374115,\n" +
" \"lane_saturation_flow_rate\": 276,\n" +
" \"lane_three_stop_rate\": 0.0,\n" +
" \"lane_two_stop_rate\": 0.0,\n" +
" \"light_green_finish_queue_length\": 17.12477208828104,\n" +
" \"light_green_start_queue_length\": 9.938938453279693,\n" +
" \"mean_delay\": 5.74468085106383,\n" +
" \"mean_stops_number\": 0,\n" +
" \"mean_v\": 1.8776506024096384,\n" +
" \"static_queue_length_max\": 40.0,\n" +
" \"static_queue_length_min\": 0.0,\n" +
" \"time_occupancy\": 0.7083266377449036,\n" +
" \"traffic_flow\": 17,\n" +
" \"trolley_equivalent\": 17,\n" +
" \"vehicle_length_ratio_mean\": 0.3361885299892225,\n" +
" \"vehicle_nums_ratio_mean\": 0.28029531568228105\n" +
" }\n" +
" ],\n" +
" \"laneNum\": 2,\n" +
" \"orgCode\": \"040001\",\n" +
" \"timeStamp\": \"2023-03-1017: 03: 14: 710\"\n" +
"}";
} }
Object convert = bean.convert(message); Object convert = bean.convert(message);
// 本地保存 // 本地保存
...@@ -43,7 +102,7 @@ public class DataProcessTask { ...@@ -43,7 +102,7 @@ public class DataProcessTask {
} }
} }
} catch (Exception e) { } catch (Exception e) {
log.error("数据加工处理失败"); log.error("数据加工处理失败", e);
} }
} }
......
...@@ -37,7 +37,7 @@ server: ...@@ -37,7 +37,7 @@ server:
mybatis-plus: mybatis-plus:
mapper-locations: classpath:mapper/*.xml,classpath:mapper/*/*.xml mapper-locations: classpath:mapper/*.xml,classpath:mapper/*/*.xml
typeAliasesPackage: net.wanji.datacenter.entity typeAliasesPackage: net.wanji.datacenter.pojo.po
check-config-location: true check-config-location: true
configuration: configuration:
#是否开启自动驼峰命名规则(camel case)映射 #是否开启自动驼峰命名规则(camel case)映射
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.datacenter.mapper.CrossDataRealTimeMapper"> <mapper namespace="net.wanji.datacenter.mapper.CrossDataRealTimeMapper">
<resultMap id="BaseResultMap" type="net.wanji.datacenter.pojo.po.CrossDataRealTimePO">
<result column="cross_id" property="crossId"></result>
<result column="status" property="status"></result>
<result column="type" property="type"></result>
<result column="traffic_index" property="trafficIndex"></result>
<result column="start_time" property="startTime"></result>
<result column="duration" property="duration"></result>
<result column="is_unbalance" property="unbalanceStatus"></result>
<result column="is_spillover" property="spilloverStatus"></result>
<result column="is_congestion" property="congestionStatus"></result>
<result column="unbalance_index" property="unbalanceIndex"></result>
<result column="spillover_index" property="spilloverIndex"></result>
<result column="congestion_index" property="congestionIndex"></result>
<result column="unbalance_dirs" property="unbalanceDirs"></result>
<result column="spillover_dirs" property="spilloverDirs"></result>
<result column="congestion_dirs" property="congestionDirs"></result>
<result column="flow" property="flow"></result>
<result column="flow_rate" property="flowRate"></result>
<result column="speed" property="speed"></result>
<result column="queue_length" property="queueLength"></result>
<result column="stop_times" property="stopTimes"></result>
<result column="delay_time" property="delayTime"></result>
<result column="sturation" property="sturation"></result>
<result column="batch_time" property="batchTime"></result>
<result column="gmt_create" property="gmtCreate"></result>
<result column="gmt_modified" property="gmtModified"></result>
</resultMap>
<sql id="Base_Column_List">
cross_id, status, type, traffic_index, start_time, duration, is_unbalance, is_spillover, is_congestion,
unbalance_index, spillover_index, congestion_index, unbalance_dirs, spillover_dirs, congestion_dirs,
flow, flow_rate, speed, queue_length, stop_times, delay_time, sturation, batch_time, gmt_create, gmt_modified
</sql>
<insert id="insertBatch" parameterType="net.wanji.datacenter.pojo.po.CrossDataRealTimePO">
insert into t_cross_data_realtime
(<include refid="Base_Column_List"></include>)
values
<foreach collection="list" item="entity" separator=",">
(#{entity.crossId},#{entity.status},#{entity.type},#{entity.trafficIndex},#{entity.startTime},#{entity.duration},#{entity.unbalanceStatus},#{entity.spilloverStatus},#{entity.congestionIndex},
#{entity.unbalanceIndex},#{entity.spilloverIndex},#{entity.congestionIndex},#{entity.unbalanceDirs},#{entity.spilloverDirs},#{entity.congestionDirs},
#{entity.flow},#{entity.flowRate},#{entity.speed},#{entity.queueLength},#{entity.stopTimes},#{entity.delayTime},#{entity.sturation},#{entity.batchTime},#{entity.gmtCreate},#{entity.gmtModified})
</foreach>
</insert>
</mapper> </mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.datacenter.mapper.CrossDirDataRealTimeMapper"> <mapper namespace="net.wanji.datacenter.mapper.CrossDirDataRealTimeMapper">
<resultMap id="BaseResultMap" type="net.wanji.datacenter.pojo.po.CrossDirDataRealTimePO">
<result column="id" property="id"></result>
<result column="dir_type" property="dirType"></result>
<result column="in_out_type" property="inOutType"></result>
<result column="cross_id" property="crossId"></result>
<result column="length" property="length"></result>
<result column="status" property="status"></result>
<result column="traffic_index" property="trafficIndex"></result>
<result column="start_time" property="startTime"></result>
<result column="capacity" property="capacity"></result>
<result column="duration" property="duration"></result>
<result column="flow" property="flow"></result>
<result column="speed" property="speed"></result>
<result column="queue_length" property="queueLength"></result>
<result column="stop_times" property="stopTimes"></result>
<result column="delay_time" property="delayTime"></result>
<result column="sturation" property="sturation"></result>
<result column="batch_time" property="batchTime"></result>
<result column="gmt_create" property="gmtCreate"></result>
<result column="gmt_modified" property="gmtModified"></result>
<result column="effusion_time" property="effusionTime"></result>
</resultMap>
<sql id="Base_Column_List">
id, dir_type, in_out_type, cross_id, length, status, traffic_index, start_time, capacity, duration, flow,
speed, queue_length, stop_times, delay_time, sturation, batch_time, gmt_create, gmt_modified, effusion_time
</sql>
<insert id="insertBatch" parameterType="net.wanji.datacenter.pojo.po.CrossDirDataRealTimePO">
insert into t_cross_dir_data_realtime
(<include refid="Base_Column_List"></include>)
values
<foreach collection="list" item="entity" separator=",">
(#{entity.id},#{entity.dirType},#{entity.inOutType},#{entity.crossId},#{entity.length},#{entity.status},#{entity.trafficIndex},#{entity.startTime},#{entity.capacity}, #{entity.duration},#{entity.flow},
#{entity.speed},#{entity.queueLength},#{entity.stopTimes},#{entity.delayTime},#{entity.sturation},#{entity.batchTime},#{entity.gmtCreate},#{entity.gmtModified},#{entity.effusionTime})
</foreach>
</insert>
</mapper> </mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.datacenter.mapper.CrossLaneDataRealTimeMapper"> <mapper namespace="net.wanji.datacenter.mapper.CrossLaneDataRealTimeMapper">
<resultMap id="BaseResultMap" type="net.wanji.datacenter.pojo.po.CrossLaneDataRealTimePO">
<result column="id" property="id"></result>
<result column="cross_id" property="crossId"></result>
<result column="flow" property="flow"></result>
<result column="speed" property="speed"></result>
<result column="in_speed" property="inSpeed"></result>
<result column="out_speed" property="outSpeed"></result>
<result column="queue_length" property="queueLength"></result>
<result column="stop_times" property="stopTimes"></result>
<result column="delay_time" property="delayTime"></result>
<result column="capacity" property="capacity"></result>
<result column="sturation" property="sturation"></result>
<result column="vehhead_dist" property="vehheadDist"></result>
<result column="vehhead_time" property="vehheadTime"></result>
<result column="quality" property="quality"></result>
<result column="batch_time" property="batchTime"></result>
<result column="gmt_create" property="gmtCreate"></result>
<result column="gmt_modified" property="gmtModified"></result>
</resultMap>
<sql id="Base_Column_List">
id, cross_id, flow, speed, in_speed, out_speed, queue_length, stop_times, delay_time, capacity, sturation,
vehhead_dist, vehhead_time, quality, batch_time, gmt_create, gmt_modified
</sql>
<insert id="insertBatch" parameterType="net.wanji.datacenter.pojo.po.CrossLaneDataRealTimePO">
insert into t_lane_data_realtime
(<include refid="Base_Column_List"></include>)
values
<foreach collection="list" item="entity" separator=",">
(#{entity.id},#{entity.crossId},#{entity.flow},#{entity.speed},#{entity.inSpeed},#{entity.outSpeed},#{entity.queueLength},#{entity.stopTimes},#{entity.delayTime},#{entity.capacity},#{entity.sturation},
#{entity.vehheadDist},#{entity.vehheadTime},#{entity.quality},#{entity.batchTime},#{entity.gmtCreate},#{entity.gmtModified})
</foreach>
</insert>
</mapper> </mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.datacenter.mapper.CrossTurnDataRealTimeMapper"> <mapper namespace="net.wanji.datacenter.mapper.CrossTurnDataRealTimeMapper">
<resultMap id="BaseResultMap" type="net.wanji.datacenter.pojo.po.CrossTurnDataRealtimePO">
<result column="id" property="id"></result>
<result column="turn_type" property="turnType"></result>
<result column="in_dir" property="inDir"></result>
<result column="out_dir" property="outDir"></result>
<result column="cross_id" property="crossId"></result>
<result column="flow" property="flow"></result>
<result column="status" property="status"></result>
<result column="traffic_index" property="trafficIndex"></result>
<result column="speed" property="speed"></result>
<result column="in_speed" property="inSpeed"></result>
<result column="out_speed" property="outSpeed"></result>
<result column="queue_length" property="queueLength"></result>
<result column="stop_times" property="stopTimes"></result>
<result column="delay_time" property="delayTime"></result>
<result column="sturation" property="sturation"></result>
<result column="vehhead_dist" property="vehheadDist"></result>
<result column="vehhead_time" property="vehheadTime"></result>
<result column="quality" property="quality"></result>
<result column="batch_time" property="batchTime"></result>
<result column="gmt_create" property="gmtCreate"></result>
<result column="gmt_modified" property="gmtModified"></result>
</resultMap>
<sql id="Base_Column_List">
id, turn_type, in_dir, out_dir, cross_id, flow, status, traffic_index, speed, in_speed, out_speed, queue_length,
stop_times, delay_time, sturation, vehhead_dist, vehhead_time, quality, batch_time, gmt_create, gmt_modified
</sql>
<insert id="insertBatch" parameterType="net.wanji.datacenter.pojo.po.CrossTurnDataRealtimePO">
insert into t_cross_turn_data_realtime
(<include refid="Base_Column_List"></include>)
values
<foreach collection="list" item="entity" separator=",">
(#{entity.id},#{entity.turnType},#{entity.inDir},#{entity.outDir},#{entity.crossId},#{entity.flow},#{entity.status},#{entity.trafficIndex},#{entity.speed},#{entity.inSpeed},#{entity.outSpeed},#{entity.queueLength},
#{entity.stopTimes},#{entity.delayTime},#{entity.sturation},#{entity.vehheadDist},#{entity.vehheadTime},#{entity.quality},#{entity.batchTime},#{entity.gmtCreate},#{entity.gmtModified})
</foreach>
</insert>
</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