Commit 0d99eb1d authored by wangjinjing's avatar wangjinjing

推送车流

parent 2654c420
......@@ -59,13 +59,14 @@ public class ScheduleTaskConfig {
}
}
@Scheduled(cron = "0 */2 * * * ?")//每2分钟执行一次
private void sendToguangda() {
/***
* 每2分钟执行一次查询事件推送给广达
*/
@Scheduled(cron = "0 */2 * * * ?")
private void sendToguangdaEvent() {
//查询所有未推送的数据
List<Traffalarmrecord> resultlist=traffalarmrecordService.getTraffalarmrecordBystatus();
for(Traffalarmrecord record:resultlist)
{
List<Traffalarmrecord> resultlist = traffalarmrecordService.getTraffalarmrecordBystatus();
for (Traffalarmrecord record : resultlist) {
try {
ResultObj obj = eventWriteService.updateAndAutoSendEvent(record);
if (obj.getStatus() != 200) {
......@@ -73,14 +74,16 @@ public class ScheduleTaskConfig {
} else {
log.info(record.getRecordid() + " send to guangda success");
}
}catch (Exception ex){
log.error(record.getRecordid() + " send to guangda fail"+ex.toString());
} catch (Exception ex) {
log.error(record.getRecordid() + " send to guangda fail" + ex.toString());
}
}
}
// @Scheduled(cron = "0 30/5 6-19 * * ?")//每隔5分钟统计当天目前为止的数据
// private void statistoday() {
// //判断是否为空表
......
......@@ -33,14 +33,4 @@ public class RouterController {
return "login";
}
/**
* 首页入口
*
* @return
*/
@GetMapping("/{id}/chat")
public String index(@PathVariable("id") String id) {
return "index";
}
}
......@@ -16,6 +16,8 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import javax.websocket.server.PathParam;
......@@ -24,10 +26,7 @@ import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.*;
@RestController
......@@ -38,6 +37,8 @@ public class TraffController {
@Autowired
WebSocket webSocket;
@Autowired
TraffFlowService traffFlowService;
private Map<String, RateLimiter> rateLimiterMap;
private String port;
......@@ -45,8 +46,6 @@ public class TraffController {
private Integer rate = 10;
private SbtdspsrMapper sbtdspsrMapper;
@Autowired
TraffFlowService traffFlowService;
@Value("${flv.resisvalue}")
private String resisvalue;
......@@ -313,32 +312,64 @@ public class TraffController {
public ResultObj traffflow(@RequestBody Vehicles vehicles) {
if ("TRAFFIC_STATISTICS_VEHICLES".equalsIgnoreCase(vehicles.getType())) {
log.info("Vehicles");
String[] sbAndTd = vehicles.getVideo_id().split("_");
String sbbh = sbAndTd[0];
int tdbh = Integer.valueOf(sbAndTd[1]) + 1;
//根据设备编号查询设备信息
List<Sbtdspsr> sbtdspsrList=sbtdspsrMapper.selectBySbbh(sbbh,tdbh);
if(sbtdspsrList.size()>0) {
//重置videoid
vehicles.setVideo_id(sbbh + "_" + tdbh);
Date date = new Date(Long.valueOf(vehicles.getTs()));
//直接放入表中
List<Vehiclesdetail> vels = vehicles.getObjs();
int result = 0;
int upnum = 0, downnum = 0;
VideoDeviceTraffic traff = new VideoDeviceTraffic();
for (Vehiclesdetail detail : vels) {
Vehicle v = new Vehicle();
v.setId(UUID.randomUUID().toString());
v.setCreate_time(new Date(Long.valueOf(vehicles.getTs())));
v.setCreate_time(date);
v.setType(detail.getType());
v.setDirection(detail.getDirection());
v.setRuleTag(detail.getRuleTag());
v.setClassification_confidence(detail.getClassification_confidence());
v.setVideo_id(vehicles.getVideo_id());
result = traffFlowService.saveTraffFlowDetail(v);
if(detail.getDirection().equals("1"))
{
upnum++;
}
else if(detail.getDirection().equals("1"))
{
downnum++;
}
}
Sbtdspsr sbtdspsr = sbtdspsrList.get(0);
//发送给广达
traff.setDeviceId(sbtdspsr.getWbbh());
traff.setDateTime(date);
traff.setSsjg(sbtdspsrList.get(0).getXzbh());
traff.setDeviceName(sbtdspsr.getTdmc());
if(upnum>0) {
traff.setFx("1");
traff.setFxmc("上行");
//发送给广达上行数据
log.info("上行traff"+traff.toString());
traffFlowService.sendMessage(traff);
}
if(downnum>0) {
traff.setFx("2");
traff.setFxmc("下行");
//发送给广达上行数
log.info("下行"+traff.toString());
traffFlowService.sendMessage(traff);
}
//查询近五分钟的车流量,当天车流量websocket 直接推送过去
// log.info("fivevehivle");
//根据连接的name ,群发根据videoid 查询的结果
webSocket.GroupSendingByVideoid(vehicles.getVideo_id());
}
}
return ResultObj.ok();
}
......
......@@ -13,4 +13,6 @@ public class Vehicles {
private String video_id;
private String ts;
List<Vehiclesdetail> objs;
}
package com.hzjt.domain;
import java.util.Date;
public class VideoDeviceTraffic {
private String deviceId;
private String deviceName;
private Date dateTime;
private String ssjg;
private String speed;
private String flowRate;
private String fx;
private String fxmc;
private String sjly;
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getDeviceName() {
return deviceName;
}
public void setDeviceName(String deviceName) {
this.deviceName = deviceName;
}
public Date getDateTime() {
return dateTime;
}
public void setDateTime(Date dateTime) {
this.dateTime = dateTime;
}
public String getSsjg() {
return ssjg;
}
public void setSsjg(String ssjg) {
this.ssjg = ssjg;
}
public String getSpeed() {
return speed;
}
public void setSpeed(String speed) {
this.speed = speed;
}
public String getFlowRate() {
return flowRate;
}
public void setFlowRate(String flowRate) {
this.flowRate = flowRate;
}
public String getFx() {
return fx;
}
public void setFx(String fx) {
this.fx = fx;
}
public String getFxmc() {
return fxmc;
}
public void setFxmc(String fxmc) {
this.fxmc = fxmc;
}
public String getSjly() {
return sjly;
}
public void setSjly(String sjly) {
this.sjly = sjly;
}
@Override
public String toString() {
return "VideoDeviceTraffic{" +
"deviceId='" + deviceId + '\'' +
", deviceName='" + deviceName + '\'' +
", dateTime=" + dateTime +
", ssjg='" + ssjg + '\'' +
", speed='" + speed + '\'' +
", flowRate='" + flowRate + '\'' +
", fx='" + fx + '\'' +
", fxmc='" + fxmc + '\'' +
", sjly='" + sjly + '\'' +
'}';
}
}
package com.hzjt.domain;
public class VideoDeviceTrafficParam extends VideoDeviceTraffic {
private Integer pushstatus;
public Integer getPushstatus() {
return pushstatus;
}
public void setPushstatus(Integer pushstatus) {
this.pushstatus = pushstatus;
}
}
......@@ -3,6 +3,7 @@ package com.hzjt.mapper;
import com.hzjt.domain.DeviceChannelid;
import com.hzjt.domain.Traffalarmrecord;
import com.hzjt.domain.TraffalarmrecordResult;
import com.hzjt.domain.VideoDeviceTraffic;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.additional.dialect.oracle.InsertListMapper;
import tk.mybatis.mapper.common.BaseMapper;
......@@ -35,4 +36,6 @@ public interface TraffAlarmRecordMapper extends BaseMapper<Traffalarmrecord>, Co
List<Traffalarmrecord> getTraffalarmrecordBystatus();
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.hzjt.mapper;
import com.hzjt.domain.Vehicle;
import com.hzjt.domain.Vehicles;
import com.hzjt.domain.Vehiclesdetail;
import com.hzjt.domain.VideoDeviceTraffic;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
......@@ -27,4 +28,6 @@ public interface TraffFlowMapper {
Integer insertOrUpdatevehicleTodaystatistic();
String selectSbtddspsrRtspByVideoid(String videoid);
List<VideoDeviceTraffic> getTraffVicleBystatus();
}
......@@ -15,17 +15,12 @@ import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import sun.misc.BASE64Encoder;
import tk.mybatis.mapper.entity.Condition;
import tk.mybatis.mapper.entity.Example;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
......
......@@ -56,7 +56,6 @@ public class QingZhiLoginCacheService {
}
}
} catch (Exception e) {
System.out.println(e.toString());
log.error(e.getMessage());
}
return token;
......
package com.hzjt.service;
import com.hzjt.domain.Vehicle;
import com.hzjt.domain.Vehicles;
import com.hzjt.domain.Vehiclesdetail;
import com.hzjt.domain.*;
import com.hzjt.mapper.TraffFlowMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
@Slf4j
@Service
public class TraffFlowService {
@Autowired
private TraffFlowMapper traffFlowMapper;
@Autowired
private RestTemplate restTemplate;
@Value("${qingzhi.eventwrite.timeout}")
private Integer timeout;
@Value("${qingzhi.deviceTraffic.url}")
private String url;
@Autowired
QingZhiLoginCacheService qingZhiLoginCacheService;
public void saveTraffFlow(Vehicles vehicles) {
traffFlowMapper.add(vehicles);
......@@ -58,6 +72,22 @@ public class TraffFlowService {
}
public List<VideoDeviceTraffic> getTraffVicleBystatus() {
return traffFlowMapper.getTraffVicleBystatus();
}
public void sendMessage(VideoDeviceTraffic videoDeviceTraffic){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
//判断token
String token= qingZhiLoginCacheService.keepAlive();
headers.add("token", token);
HttpEntity<VideoDeviceTraffic> requestEntity = new HttpEntity<>(videoDeviceTraffic, headers);
try{
ResultObj obj= CompletableFuture.supplyAsync(() -> restTemplate.postForObject(url, requestEntity, ResultObj.class)).get(timeout,TimeUnit.SECONDS);
}catch (Exception ex){
log.error(videoDeviceTraffic.getDeviceId()+videoDeviceTraffic.getDateTime()+":"+ex.toString());
}
}
}
\ No newline at end of file
......@@ -22,4 +22,8 @@ public class TraffalarmrecordService {
return traffalarmrecordMapper.getTraffalarmrecordBystatus();
}
}
\ No newline at end of file
......@@ -15,71 +15,42 @@ mybatis.configuration.default-statement-timeout=3000
#mybatis.mapperLocations = classpath:xxx.xml
logging.level.com.hzjt=debug
## \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u077F\uFFFD-\uFFFD\uFFFD\uFFFD\uFFFD\u0534\uFFFD\uFFFD\uFFFD\uFFFD
#spring.datasource.url=jdbc:dm://127.0.0.1:12345/auditlocal_cq
#spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver
#spring.datasource.username=SYSDBA
#spring.datasource.password=SYSDBA
##\uFFFD\uFFFD\uFFFD\u04F3\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
#spring.datasource.type=org.apache.commons.dbcp.BasicDataSource
#spring.datasource.dbcp2.max-wait-millis=10000
#spring.datasource.dbcp2.min-idle=5
#spring.datasource.dbcp2.initial-size=5
#spring.datasoe.dbcp2.validation-query=SELECT x
#spring.datasource.dbcp2.connection-properties=characterEncoding=utf8
spring.datasource.username=test
spring.datasource.password=test
spring.datasource.url=jdbc:oracle:thin:@192.168.168.212:1523:helowin
#spring.datasource.username=hzjt
#spring.datasource.password=hzjt
#spring.datasource.url=jdbc:oracle:thin:@33.50.1.22:1521:orcl
# Mysql\uFFFD\uFFFD\uFFFD\u077F\uFFFD-\uFFFD\uFFFD\uFFFD\uFFFD\u0534\uFFFD\uFFFD\uFFFD\uFFFD
#spring.datasource.username=test
#spring.datasource.password=test
#spring.datasource.url=jdbc:oracle:thin:@192.168.168.212:1523:helowin
spring.datasource.username=hzjt
spring.datasource.password=hzjt
spring.datasource.url=jdbc:oracle:thin:@33.50.1.22:1521:orcl
spring.datasource.driverClassName=oracle.jdbc.OracleDriver
# druid
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# \uFFFD\uFFFD\u02BC\uFFFD\uFFFD\uFFFD\uFFFD\u0421\uFFFD\uFFFD\uFFFD\uFFFD\u0421\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
# \uFFFD\uFFFD\uFFFD\u00FB\uFFFD\u0221\uFFFD\uFFFD\uFFFD\u04F5\u0234\uFFFD\uFFFD\uFFFD\u02B1\uFFFD\uFFFD\u02B1\uFFFD\uFFFD
spring.datasource.maxWait=60000
# \uFFFD\uFFFD\uFFFD\u00FC\uFFFD\uFFFD\uFFFD\uFFFD\u00F2\u017D\uFFFD\uFFFD\uFFFD\u04BB\uFFFD\u03BC\uFFFD\u28EC\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04AA\uFFFD\u0631\u0575\u013F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04E3\uFFFD\uFFFD\uFFFD\u03BB\uFFFD\u01FA\uFFFD\uFFFD\uFFFD
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# \uFFFD\uFFFDPSCache\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05B8\uFFFD\uFFFD\u00FF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDPSCache\uFFFD\u0134\uFFFD\u0421
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# \uFFFD\uFFFD\uFFFD\u00FC\uFFFD\uFFFD\u0373\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0635\uFFFDfilters\uFFFD\uFFFD\u0225\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u063D\uFFFD\uFFFD\uFFFDsql\uFFFD\u07B7\uFFFD\u0373\uFFFD\u01A3\uFFFD'wall'\uFFFD\uFFFD\uFFFD\u06B7\uFFFD\uFFFD\uFFFD\u01FD
spring.datasource.filters=stat,wall
# \u0368\uFFFD\uFFFDconnectProperties\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDmergeSql\uFFFD\uFFFD\uFFFD\u0723\uFFFD\uFFFD\uFFFDSQL\uFFFD\uFFFD\u00BC
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# \uFFFD\u03F2\uFFFD\uFFFD\uFFFD\uFFFDDruidDataSource\uFFFD\u013C\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
spring.datasource.useGlobalDataSourceStat=true
#redis
# Redis\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05B7
spring.redis.host=127.0.0.1
# Redis\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04F6\u02FF\uFFFD
spring.redis.port=6379
# Redis\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uB8E8\u012C\uFFFD\uFFFD\u03AA\uFFFD\u0563\uFFFD
#spring.redis.password=123456
# Redis\uFFFD\uFFFD\uFFFD\u077F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u012C\uFFFD\uFFFD\u03AA0\uFFFD\uFFFD
spring.redis.database=0
# \uFFFD\uFFFD\uFFFD\u04F3\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u02B9\uFFFD\u00F8\uFFFD\u05B5\uFFFD\uFFFD\u02BE\u00FB\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u01A3\uFFFD
spring.redis.pool.max-active=8
# \uFFFD\uFFFD\uFFFD\u04F3\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0234\uFFFD\u02B1\uFFFD\u48E8\u02B9\uFFFD\u00F8\uFFFD\u05B5\uFFFD\uFFFD\u02BE\u00FB\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u01A3\uFFFD
spring.redis.pool.max-wait=5000
# \uFFFD\uFFFD\uFFFD\u04F3\uFFFD\uFFFD\u0435\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
spring.redis.pool.max-idle=8
# \uFFFD\uFFFD\uFFFD\u04F3\uFFFD\uFFFD\u0435\uFFFD\uFFFD\uFFFD\u0421\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
spring.redis.pool.min-idle=0
# \uFFFD\uFFFD\uFFFD\u04F3\uFFFD\u02B1\u02B1\uFFFD\u48E8\uFFFD\uFFFD\uFFFD\uB8E9
spring.redis.timeout=2000
#spring-session \u02B9\uFFFD\uFFFD
spring.session.store-type=none
ip.host=33.57.1.22
port=21
......@@ -108,3 +79,4 @@ spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=true
gs.traff.cloud.web.fileagent.url=ftp://reader:reader@33.50.1.22:21/gstraff/
jms.queueName=demo_queue
qingzhi.deviceTraffic.url=http://33.50.1.213:38080/api/jtldpt/impld/videoDeviceTraffic
\ No newline at end of file
......@@ -164,6 +164,19 @@
select squrllj from sbtdspsr where sbbh||'_'||tdbh =#{videoid} and rownum=1
</select>
<select id="getTraffVicleBystatus" resultType="com.hzjt.domain.VideoDeviceTrafficParam">
select
video_id deviceId,
ts dateTime ,
type ,
ruletag,
total
a.pushstatus
from VEHICLESTATISTIC ta
left join TRAFFVICLEWRITERESULT a on a.VIDEOID=b.VIDEOID
</select>
</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