Browse Source

一类交流站数据存储相关代码

develop
Mr.Wang 1 year ago
parent
commit
d703999717
  1. 79
      zc-business/src/main/java/com/zc/business/domain/DcYzsqbdcHmbldData.java
  2. 28
      zc-business/src/main/java/com/zc/business/mapper/DcYzsqbdcHmbldDataMapper.java
  3. 6
      zc-business/src/main/java/com/zc/business/message/device/listener/DevicePropertyReportListener.java
  4. 18
      zc-business/src/main/java/com/zc/business/service/IDcYzsqbdcHmbldDataService.java
  5. 206
      zc-business/src/main/java/com/zc/business/service/impl/DcYzsqbdcHmbldDataServiceImpl.java
  6. 31
      zc-business/src/main/resources/mapper/business/DcYzsqbdcHmbldDataMapper.xml

79
zc-business/src/main/java/com/zc/business/domain/DcYzsqbdcHmbldData.java

@ -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;
}

28
zc-business/src/main/java/com/zc/business/mapper/DcYzsqbdcHmbldDataMapper.java

@ -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);
}

6
zc-business/src/main/java/com/zc/business/message/device/listener/DevicePropertyReportListener.java

@ -9,6 +9,7 @@ import com.zc.business.domain.MdDeviceData;
import com.zc.business.enums.IotProductEnum;
import com.zc.business.service.IDcMeteorologicalDetectorDataService;
import com.zc.business.service.IMiddleDatabaseService;
import com.zc.business.service.IDcYzsqbdcHmbldDataService;
import com.zc.common.core.redis.stream.RedisStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -22,7 +23,6 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -43,6 +43,9 @@ public class DevicePropertyReportListener implements StreamListener<String, Obje
@Autowired
private IMiddleDatabaseService middleDatabaseService;
@Autowired
private IDcYzsqbdcHmbldDataService dcYzsqbdcHmbldDataService;
@Override
public void onMessage(ObjectRecord<String, String> message) {
String streamKay = message.getStream();
@ -86,6 +89,7 @@ public class DevicePropertyReportListener implements StreamListener<String, Obje
middleDatabaseService.insertMiddleDatabaseDeviceData(mdDeviceData);
} else if (IotProductEnum.ONE_STOP_PRODUCT.value().equals(productId)){
//交调
dcYzsqbdcHmbldDataService.addDcYzsqbdcHmbldDataList(data);
}
}

18
zc-business/src/main/java/com/zc/business/service/IDcYzsqbdcHmbldDataService.java

@ -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);
}

206
zc-business/src/main/java/com/zc/business/service/impl/DcYzsqbdcHmbldDataServiceImpl.java

@ -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()));
}
}

31
zc-business/src/main/resources/mapper/business/DcYzsqbdcHmbldDataMapper.xml

@ -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…
Cancel
Save