6 changed files with 367 additions and 1 deletions
@ -0,0 +1,79 @@ |
|||
package com.zc.business.domain; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* 一类交流站和毫米波雷达存储数据实体类 |
|||
*/ |
|||
@Data |
|||
public class DcYzsqbdcHmbldData { |
|||
|
|||
private String id; |
|||
// 物联网设备id
|
|||
private String iotDeviceId; |
|||
// 数据源 1一站式情报调查,2毫米波雷达
|
|||
private String sjy; |
|||
// 设备编号(设备身份识别码)
|
|||
private String sbbh; |
|||
// 上报周期(交通数据处理周期)
|
|||
private String sbzq; |
|||
// 时间序号(一站式情报调查)
|
|||
private String sjxh; |
|||
// 上报时间
|
|||
private String sbsj; |
|||
// 平均车速
|
|||
private Integer pjcs; |
|||
// 车道数
|
|||
private Integer lane; |
|||
// 方向
|
|||
private String direction; |
|||
// 总的车流量
|
|||
private Integer zdcll; |
|||
// 跟车百分比
|
|||
private String gcbfb; |
|||
// 平均车头间距
|
|||
private String pjctjj; |
|||
// 时间占有率
|
|||
private String sjzyl; |
|||
// 中小客车交通量
|
|||
private Integer zxkcjtl; |
|||
// 中小客车平均地点车速
|
|||
private Integer zxkcpjcs; |
|||
// 小型货车交通量
|
|||
private Integer xxhcjtl; |
|||
// 小型货车平均地点车速
|
|||
private Integer xxhcpjcs; |
|||
// 大客车交通量
|
|||
private Integer dkcjtl; |
|||
// 大客车平均地点车速
|
|||
private Integer dkcpjcs; |
|||
// 中型货车交通量
|
|||
private Integer zxhcjtl; |
|||
// 中型货车平均地点车速
|
|||
private Integer zxhcpjcs; |
|||
// 大型货车交通量
|
|||
private Integer dxhcjtl; |
|||
// 大型货车平均地点车速
|
|||
private Integer dxhcpjcs; |
|||
// 特大型货车交通量
|
|||
private Integer tdxhcjtl; |
|||
// 特大型货车平均地点车速
|
|||
private Integer tdxhcpjcs; |
|||
// 集装箱车交通量
|
|||
private Integer jzxcjtl; |
|||
// 集装箱车平均地点车速
|
|||
private Integer jzxcpjcs; |
|||
// 拖拉机交通量
|
|||
private Integer tljjtl; |
|||
// 拖拉机平均地点车速
|
|||
private Integer tljpjcs; |
|||
// 摩托车交通量
|
|||
private Integer mtcjtl; |
|||
// 摩托车平均地点车速
|
|||
private Integer mtcpjcs; |
|||
private Date updateTime; |
|||
private Date createTime; |
|||
|
|||
} |
@ -0,0 +1,28 @@ |
|||
package com.zc.business.mapper; |
|||
|
|||
|
|||
import com.zc.business.domain.DcYzsqbdcHmbldData; |
|||
|
|||
import java.util.List; |
|||
|
|||
|
|||
/** |
|||
* 一类调查站Mapper接口 |
|||
* |
|||
* @author ruoyi |
|||
* @date 2024-01-12 |
|||
*/ |
|||
public interface DcYzsqbdcHmbldDataMapper |
|||
{ |
|||
|
|||
/** |
|||
* 批量新增一类调查站数据 |
|||
* |
|||
* @param list 一类调查站数据 |
|||
* @return 结果 |
|||
*/ |
|||
int insertDcEvent(List<DcYzsqbdcHmbldData> list); |
|||
|
|||
} |
|||
|
|||
|
@ -0,0 +1,18 @@ |
|||
package com.zc.business.service; |
|||
|
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 一类交通调查站Service接口 |
|||
* |
|||
* @author wangjiabao |
|||
* @date 2024-01-03 |
|||
*/ |
|||
public interface IDcYzsqbdcHmbldDataService |
|||
{ |
|||
|
|||
/** |
|||
* 一类交通调查站数据插入 |
|||
*/ |
|||
boolean addDcYzsqbdcHmbldDataList(Map map); |
|||
} |
@ -0,0 +1,206 @@ |
|||
package com.zc.business.service.impl; |
|||
|
|||
import com.alibaba.fastjson.JSONArray; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.ruoyi.common.utils.DateUtils; |
|||
import com.ruoyi.common.utils.uuid.UUID; |
|||
import com.zc.business.domain.DcYzsqbdcHmbldData; |
|||
import com.zc.business.mapper.DcYzsqbdcHmbldDataMapper; |
|||
import com.zc.business.service.IDcYzsqbdcHmbldDataService; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 一类交通调查站Service业务层处理 |
|||
* |
|||
* @author wangjiabao |
|||
*/ |
|||
@Service |
|||
public class DcYzsqbdcHmbldDataServiceImpl implements IDcYzsqbdcHmbldDataService { |
|||
|
|||
@Resource |
|||
private DcYzsqbdcHmbldDataMapper dcYzsqbdcHmbldDataMapper; |
|||
|
|||
/** |
|||
* 添加一类交流站实时数据到数据库中 |
|||
* |
|||
* @param data |
|||
* @return |
|||
*/ |
|||
@Override |
|||
public boolean addDcYzsqbdcHmbldDataList(Map data) { |
|||
List<DcYzsqbdcHmbldData> list = new ArrayList<>(); |
|||
JSONObject properties = JSONObject.parseObject(data.get("properties").toString()); |
|||
if (properties.get("01") == null) { |
|||
return false; |
|||
} |
|||
JSONObject oneStopIntelligenceInvestigation = JSONObject.parseObject(properties.get("01").toString()); |
|||
// 上行
|
|||
DcYzsqbdcHmbldData upstream = new DcYzsqbdcHmbldData(); |
|||
setCommonDcYzsqbdcHmbldData(upstream, "1", oneStopIntelligenceInvestigation); |
|||
upstream.setIotDeviceId(data.get("deviceId").toString()); |
|||
|
|||
// 下行
|
|||
DcYzsqbdcHmbldData down = new DcYzsqbdcHmbldData(); |
|||
setCommonDcYzsqbdcHmbldData(down, "2", oneStopIntelligenceInvestigation); |
|||
down.setIotDeviceId(data.get("deviceId").toString()); |
|||
|
|||
// 平均车道数
|
|||
int averageNumberOfLanes = Integer.parseInt(oneStopIntelligenceInvestigation.get("numberOfLanes").toString()) / 2; |
|||
|
|||
JSONArray array = JSONArray.parseArray(oneStopIntelligenceInvestigation.get("lanes").toString()); |
|||
for (Object object : array) { |
|||
JSONObject lanesData = JSONObject.parseObject(object.toString()); |
|||
|
|||
if (lanesData.get("laneNumber").toString().equals("11") || |
|||
lanesData.get("laneNumber").toString().equals("12") || |
|||
lanesData.get("laneNumber").toString().equals("13") || |
|||
lanesData.get("laneNumber").toString().equals("14") || |
|||
lanesData.get("laneNumber").toString().equals("01") |
|||
) { |
|||
// 上行数据
|
|||
processingVehicleModelData(upstream, lanesData); |
|||
} else { |
|||
// 下行数据
|
|||
processingVehicleModelData(down, lanesData); |
|||
} |
|||
|
|||
} |
|||
|
|||
averageSpeedOfAllLanesBasedOnType(upstream, averageNumberOfLanes); |
|||
averageSpeedOfAllLanesBasedOnType(down, averageNumberOfLanes); |
|||
|
|||
list.add(upstream); |
|||
list.add(down); |
|||
int number = dcYzsqbdcHmbldDataMapper.insertDcEvent(list); |
|||
if (number > 0) { |
|||
return true; |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
/** |
|||
* 初始化上行和下行数据 |
|||
* |
|||
* @param data |
|||
* @param direction |
|||
* @param oneStopIntelligenceInvestigation |
|||
*/ |
|||
public void setCommonDcYzsqbdcHmbldData(DcYzsqbdcHmbldData data, String direction, JSONObject oneStopIntelligenceInvestigation) { |
|||
data.setId(UUID.randomUUID().toString()); |
|||
// 数据源
|
|||
data.setSjy("1"); |
|||
// 方向
|
|||
data.setDirection(direction); |
|||
// 设备编号
|
|||
data.setSbbh(oneStopIntelligenceInvestigation.get("deviceIdentificationCode").toString()); |
|||
// 上报周期
|
|||
data.setSbzq(oneStopIntelligenceInvestigation.get("trafficDataProcessingCycle").toString()); |
|||
// 时间序号
|
|||
data.setSjxh(oneStopIntelligenceInvestigation.get("timeSequenceNumber").toString()); |
|||
// 上报时间 年月日
|
|||
data.setSbsj(oneStopIntelligenceInvestigation.get("time").toString()); |
|||
// 车道数
|
|||
data.setLane(Integer.parseInt(oneStopIntelligenceInvestigation.get("numberOfLanes").toString())); |
|||
// 创建时间
|
|||
data.setCreateTime(DateUtils.getNowDate()); |
|||
data.setZdcll(0); |
|||
data.setZxkcjtl(0); |
|||
data.setMtcpjcs(0); |
|||
data.setXxhcjtl(0); |
|||
data.setXxhcpjcs(0); |
|||
data.setDkcjtl(0); |
|||
data.setDkcpjcs(0); |
|||
data.setZxhcjtl(0); |
|||
data.setZxhcpjcs(0); |
|||
data.setDxhcjtl(0); |
|||
data.setDxhcpjcs(0); |
|||
data.setTdxhcjtl(0); |
|||
data.setTdxhcpjcs(0); |
|||
data.setJzxcjtl(0); |
|||
data.setJzxcpjcs(0); |
|||
data.setTljjtl(0); |
|||
data.setTljpjcs(0); |
|||
data.setMtcjtl(0); |
|||
data.setMtcpjcs(0); |
|||
|
|||
|
|||
|
|||
} |
|||
|
|||
/** |
|||
* 计算每个车型所有车道车速的平均值 |
|||
* |
|||
* @param data |
|||
* @param averageNumberOfLanes |
|||
*/ |
|||
public static void averageSpeedOfAllLanesBasedOnType(DcYzsqbdcHmbldData data, int averageNumberOfLanes) { |
|||
data.setMtcpjcs(data.getMtcpjcs() / averageNumberOfLanes); |
|||
data.setXxhcpjcs(data.getXxhcpjcs() / averageNumberOfLanes); |
|||
data.setDkcpjcs(data.getDkcpjcs() / averageNumberOfLanes); |
|||
data.setZxhcpjcs(data.getZxhcpjcs() / averageNumberOfLanes); |
|||
data.setDxhcpjcs(data.getDxhcpjcs() / averageNumberOfLanes); |
|||
data.setTdxhcpjcs(data.getTdxhcpjcs() / averageNumberOfLanes); |
|||
data.setJzxcpjcs(data.getJzxcpjcs() / averageNumberOfLanes); |
|||
data.setTljpjcs(data.getTljpjcs() / averageNumberOfLanes); |
|||
data.setMtcpjcs(data.getMtcpjcs() / averageNumberOfLanes); |
|||
|
|||
int pjcs = data.getMtcpjcs() + data.getXxhcpjcs() + data.getDkcpjcs() + |
|||
data.getZxhcpjcs() + data.getDxhcpjcs() + data.getTdxhcpjcs() + |
|||
data.getJzxcpjcs() + data.getTljpjcs() + data.getMtcpjcs(); |
|||
data.setPjcs(pjcs / 9); |
|||
} |
|||
|
|||
/** |
|||
* 处理车辆类型数据 |
|||
* |
|||
* @param data |
|||
* @param lanesData |
|||
*/ |
|||
public static void processingVehicleModelData(DcYzsqbdcHmbldData data, JSONObject lanesData) { |
|||
// 总的车流量
|
|||
data.setZdcll(data.getZdcll() + Integer.parseInt(lanesData.get("totalTrafficFlow").toString())); |
|||
// 中小客车交通量
|
|||
data.setZxkcjtl(data.getZxkcjtl() + Integer.parseInt(lanesData.get("trafficNumberOfInAndSmall").toString())); |
|||
// 中小客车平均地点车速
|
|||
data.setZxkcpjcs(data.getZxkcpjcs() + Integer.parseInt(lanesData.get("inAndSmallAverageVehicleSpeed").toString())); |
|||
// 小型货车交通量
|
|||
data.setXxhcjtl(data.getXxhcjtl() + Integer.parseInt(lanesData.get("trafficVolumeOfSmallTrucks").toString())); |
|||
// 小型货车平均地点车速
|
|||
data.setXxhcpjcs(data.getXxhcpjcs() + Integer.parseInt(lanesData.get("smallTrucksAverageVehicleSpeed").toString())); |
|||
// 大客车交通量
|
|||
data.setDkcjtl(data.getDkcjtl() + Integer.parseInt(lanesData.get("busTrafficVolume").toString())); |
|||
// 大客车平均地点车速
|
|||
data.setDkcpjcs(data.getDkcpjcs() + Integer.parseInt(lanesData.get("averageSpeedOfBus").toString())); |
|||
// 中型货车交通量
|
|||
data.setZxhcjtl(data.getZxhcjtl() + Integer.parseInt(lanesData.get("mediumTruckTrafficVolume").toString())); |
|||
// 中型货车平均地点车速
|
|||
data.setZxhcpjcs(data.getZxhcpjcs() + Integer.parseInt(lanesData.get("averageSpeedOfMediumSizeTrucks").toString())); |
|||
// 大型货车交通量
|
|||
data.setDxhcjtl(data.getDxhcjtl() + Integer.parseInt(lanesData.get("largeTruckTrafficVolume").toString())); |
|||
// 大型货车平均地点车速
|
|||
data.setDxhcpjcs(data.getDxhcpjcs() + Integer.parseInt(lanesData.get("averageSpeedOfLargeTrucks").toString())); |
|||
// 特大型货车交通量
|
|||
data.setTdxhcjtl(data.getTdxhcjtl() + Integer.parseInt(lanesData.get("extraLargeTrucksTrafficVolume").toString())); |
|||
// 特大型货车平均地点车速
|
|||
data.setTdxhcpjcs(data.getTdxhcpjcs() + Integer.parseInt(lanesData.get("averageSpeedOfExtraLargeTrucks").toString())); |
|||
// 集装箱车交通量
|
|||
data.setJzxcjtl(data.getJzxcjtl() + Integer.parseInt(lanesData.get("containerTruckTrafficVolume").toString())); |
|||
// 集装箱车平均地点车速
|
|||
data.setJzxcpjcs(data.getJzxcpjcs() + Integer.parseInt(lanesData.get("averageSpeedOfContainerTruck").toString())); |
|||
// 拖拉机交通量
|
|||
data.setTljjtl(data.getTljjtl() + Integer.parseInt(lanesData.get("tractorTrafficVolume").toString())); |
|||
// 拖拉机平均地点车速
|
|||
data.setTljpjcs(data.getTljpjcs() + Integer.parseInt(lanesData.get("averageSpeedOfTractor").toString())); |
|||
// 摩托车交通量
|
|||
data.setMtcjtl(data.getMtcjtl() + Integer.parseInt(lanesData.get("motorcycleTrafficVolume").toString())); |
|||
// 摩托车平均地点车速
|
|||
data.setMtcpjcs(data.getMtcpjcs() + Integer.parseInt(lanesData.get("averageSpeedOfMotorcycle").toString())); |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,31 @@ |
|||
<?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="com.zc.business.mapper.DcYzsqbdcHmbldDataMapper"> |
|||
|
|||
|
|||
|
|||
<insert id="insertDcEvent" parameterType="java.util.List"> |
|||
insert into dc_yzsqbdc_hmbld_data |
|||
|
|||
(id,iot_device_id,sjy, sbbh, sbzq, sjxh, sbsj, lane, direction, zdcll, pjcs, zxkcjtl, zxkcpjcs, |
|||
xxhcjtl, xxhcpjcs, |
|||
dkcjtl, dkcpjcs, zxhcjtl, zxhcpjcs, dxhcjtl, dxhcpjcs, tdxhcjtl, tdxhcpjcs, jzxcjtl, jzxcpjcs, tljjtl, |
|||
tljpjcs, mtcjtl, mtcpjcs,create_time) values |
|||
|
|||
<foreach collection="list" separator="," item="item"> |
|||
( |
|||
#{item.id}, |
|||
#{item.iotDeviceId}, |
|||
#{item.sjy},#{item.sbbh},#{item.sbzq},#{item.sjxh},#{item.sbsj},#{item.lane},#{item.direction},#{item.zdcll}, |
|||
#{item.pjcs},#{item.zxkcjtl},#{item.zxkcpjcs},#{item.xxhcjtl},#{item.xxhcpjcs}, |
|||
#{item.dkcjtl},#{item.dkcpjcs},#{item.zxhcjtl},#{item.zxhcpjcs},#{item.dxhcjtl},#{item.dxhcpjcs},#{item.tdxhcjtl}, |
|||
#{item.tdxhcpjcs},#{item.jzxcjtl},#{item.jzxcpjcs},#{item.tljjtl},#{item.tljpjcs},#{item.mtcjtl},#{item.mtcpjcs}, |
|||
#{item.createTime} |
|||
) |
|||
</foreach> |
|||
|
|||
</insert> |
|||
|
|||
</mapper> |
Loading…
Reference in new issue