Commit aae93b9c authored by duanruiming's avatar duanruiming

[update] 持久化操作

parent 5ae01ef4
......@@ -13,8 +13,8 @@
<groupId>net.wanji</groupId>
<artifactId>signal-datacenter-service</artifactId>
<version>0.2.1</version>
<name>signal-dataCenter-service</name>
<description>signal-dataCenter-service</description>
<name>signal-datacenter-service</name>
<description>signal-datacenter-service</description>
<properties>
<java.version>1.8</java.version>
......@@ -178,7 +178,7 @@
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<finalName>signal-dataCenter-service</finalName>
<finalName>signal-datacenter-service</finalName>
<descriptors>
<descriptor>src/main/assembly/package.xml</descriptor>
</descriptors>
......
package net.wanji.datacenter.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wanji.datacenter.pojo.po.CrossBaseLaneInfoPO;
import org.apache.ibatis.annotations.Mapper;
/**
* @author duanruiming
* @date 2023/03/10 20:32
*/
public interface CrossBaseLaneInfoMapper extends BaseMapper {
@Mapper
public interface CrossBaseLaneInfoMapper extends BaseMapper<CrossBaseLaneInfoPO> {
}
package net.wanji.datacenter.mapper;
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
* @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;
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
* @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;
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
* @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;
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
* @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;
import net.wanji.common.framework.Constants;
import net.wanji.datacenter.pojo.dto.LanePeriodicDataDTO;
import net.wanji.datacenter.pojo.po.*;
import org.springframework.stereotype.Component;
import java.util.Date;
......@@ -11,6 +11,7 @@ import java.util.Date;
* @date 2023/03/11 14:04
*/
@SuppressWarnings("all")
@Component
public class LanePeriodicDataEventListConvert {
public CrossDataRealTimePO convert2CrossDataRealTimePO(LanePeriodicDataDTO.EventList eventList, CrossBaseLaneInfoPO laneInfoPO) {
......@@ -76,7 +77,7 @@ public class LanePeriodicDataEventListConvert {
CrossDirDataRealTimePO crossDirDataRealTimePO = new CrossDirDataRealTimePO();
// 路口方向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.setInOutType(type);
crossDirDataRealTimePO.setCrossId(crossId);
......@@ -84,6 +85,7 @@ public class LanePeriodicDataEventListConvert {
crossDirDataRealTimePO.setStatus(0000);
crossDirDataRealTimePO.setTrafficIndex(0000.00);
crossDirDataRealTimePO.setStartTime(now);
crossDirDataRealTimePO.setCapacity(trafficFlow);
crossDirDataRealTimePO.setDuration(0000);
crossDirDataRealTimePO.setFlow(trafficFlow);
crossDirDataRealTimePO.setSpeed(meanV);
......@@ -115,7 +117,7 @@ public class LanePeriodicDataEventListConvert {
Integer turn = laneInfoPO.getTurn();
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.setInDir(0000);
crossTurnDataRealtimePO.setOutDir(0000);
......
......@@ -31,6 +31,8 @@ public class CrossDirDataRealTimePO {
private Double trafficIndex;
@ApiModelProperty(name = "开始时间",notes = "")
private Date startTime;
@ApiModelProperty(name = "通行能力",notes = "")
private Integer capacity;
@ApiModelProperty(name = "持续时间",notes = "")
private Integer duration;
@ApiModelProperty(name = "交通流量(辆)",notes = "")
......
package net.wanji.datacenter.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.wanji.datacenter.kafka.ConsumerHandler;
......@@ -10,12 +11,13 @@ import net.wanji.datacenter.pojo.dto.LanePeriodicDataDTO;
import net.wanji.datacenter.pojo.po.*;
import net.wanji.datacenter.service.DataProcessService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author duanruiming
......@@ -58,14 +60,15 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
}
@Override
@Transactional
public void save(Object convertData) throws Exception {
LanePeriodicDataDTO lanePeriodicDataDTO = (LanePeriodicDataDTO) convertData;
int laneNum = lanePeriodicDataDTO.getLaneNum();
List<CrossDataRealTimePO> crossDataRealTimePOS = new ArrayList<>(laneNum);
List<CrossDirDataRealTimePO> crossDirDataRealTimePOS = new ArrayList<>();
List<CrossTurnDataRealtimePO> crossTurnDataRealtimePOS = new ArrayList<>();
List<CrossLaneDataRealTimePO> crossLaneDataRealTimePOS = new ArrayList<>();
List<CrossDirDataRealTimePO> crossDirDataRealTimePOS = new ArrayList<>(laneNum);
List<CrossTurnDataRealtimePO> crossTurnDataRealtimePOS = new ArrayList<>(laneNum);
List<CrossLaneDataRealTimePO> crossLaneDataRealTimePOS = new ArrayList<>(laneNum);
List<LanePeriodicDataDTO.EventList> eventLists = lanePeriodicDataDTO.getEventList();
if (CollectionUtils.isEmpty(eventLists)) {
......@@ -73,7 +76,9 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
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);
for (LanePeriodicDataDTO.EventList laneRealTimeItem : eventLists) {
......@@ -90,14 +95,21 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
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.insert(crossDataRealTimePOS);
crossDirDataRealTimeMapper.insert(crossDirDataRealTimePOS);
crossTurnDataRealTimeMapper.insert(crossTurnDataRealtimePOS);
crossLaneDataRealTimeMapper.insert(crossLaneDataRealTimePOS);
crossDataRealTimeMapper.insertBatch(crossDataRealTimePOS);
crossDirDataRealTimeMapper.insertBatch(crossDirDataRealTimePOS);
crossTurnDataRealTimeMapper.insertBatch(crossTurnDataRealtimePOS);
crossLaneDataRealTimeMapper.insertBatch(crossLaneDataRealTimePOS);
}
}
......@@ -37,7 +37,7 @@ server:
mybatis-plus:
mapper-locations: classpath:mapper/*.xml,classpath:mapper/*/*.xml
typeAliasesPackage: net.wanji.datacenter.entity
typeAliasesPackage: net.wanji.datacenter.pojo.po
check-config-location: true
configuration:
#是否开启自动驼峰命名规则(camel case)映射
......
<?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">
<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>
\ No newline at end of file
<?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">
<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>
\ No newline at end of file
<?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">
<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>
\ No newline at end of file
<?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">
<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>
\ 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