Commit 98347442 by heguantao

""

parents
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hikcreate</groupId>
<artifactId>tocc_camera_receive</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>tocc_camera_receive</name>
<description>接收视频数据</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka-test</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
<dependency>
<groupId>com.hikvision.ga</groupId>
<artifactId>artemis-http-client</artifactId>
<version>1.1.3</version>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</exclusion>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
package com.hikcreate.tocc_camera_receive;
import com.alibaba.fastjson.JSONObject;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.ParseException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
@SpringBootApplication
@EnableScheduling
public class ToccCameraReceiveApplication {
// private static String subUrl ;
// private static String unSubUrl = "https://10.15.16.150:60443/api/eventService/v1/eventUnSubscriptionByEventTypes";
// private static ArrayList<String> subParams = new ArrayList<>();
private static String ipAndPort ;
public static void main(String[] args) {
// subUrl= args[0]; // https://10.15.16.150:60443/api/eventService/v1/eventSubscriptionByEventTypes
ipAndPort =args[0];// ip:port 10.11.57.109:60033
SpringApplication.run(ToccCameraReceiveApplication.class, args);
}
@Scheduled(fixedRate =1000*60*10) //30000
public static void doPost() {
ArtemisConfig.host = "10.15.16.150:60443";// 代理API网关nginx服务器ip端口
ArtemisConfig.appKey = "21306706";// 秘钥appkey
ArtemisConfig.appSecret = "CAiyW1w8RCUpDXPqS2hu";// 秘钥appSecret
/**
* 能力开放平台的网站路径
* TODO 路径不用修改,就是/artemis
*/
final String ARTEMIS_PATH = "/artemis";
//取消订阅
final String unSubscribeApi = ARTEMIS_PATH +"/api/eventService/v1/eventUnSubscriptionByEventTypes";
Map<String, String> unSubscribePath = new HashMap<String, String>(2) {
{
put("https://", unSubscribeApi);//根据现场环境部署确认是http还是https
}
};
final String unSubBody = "{\"eventTypes\":[131616,131676]}";
String unSubResult =ArtemisHttpUtil.doPostStringArtemis(unSubscribePath,unSubBody,null,null,"application/json",null);
System.out.println("取消订阅:"+unSubResult);
//订阅
final String getCamsApi = ARTEMIS_PATH +"/api/eventService/v1/eventSubscriptionByEventTypes";
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", getCamsApi);//根据现场环境部署确认是http还是https
}
};
String body1= "{\"eventTypes\":[131676],\"eventDest\":\"http://"+ipAndPort+"/passengerRcv\"}".replaceAll(" ","");
String result1 =ArtemisHttpUtil.doPostStringArtemis(path,body1,null,null,"application/json",null);// post请求application/json类型参数
System.out.println(result1);
String body2 = "{\"eventTypes\": [131616],\"eventDest\": \"http://"+ipAndPort+"/regionalPopulationRcv\"}".replaceAll(" ","");
String result2 =ArtemisHttpUtil.doPostStringArtemis(path,body2,null,null,"application/json",null);// post请求application/json类型参数
System.out.println(result2);
//return result;
}
}
package com.hikcreate.tocc_camera_receive.bean;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author :heguantao
* @date :Created in 2021/1/6 15:03
* @description:
* @modified By:
* @version: $
*/
@Data
@Accessors(chain = true)
public class DataBean {
private String framesPeopleCounting ;
private String activePostCount ;
private String channelID ;
private String dataProcInterval ;
private String dataType ;
private String dateTime ;
private String eventDescription ;
private String eventState ;
private String eventType ;
private String ipAddress ;
private String portNo ;
private String protocol ;
private String recvTime ;
private String sendTime ;
private String targetAttrs ;
}
package com.hikcreate.tocc_camera_receive.bean;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author :heguantao
* @date :Created in 2021/1/6 14:59
* @description:
* @modified By:
* @version: $
*/
@Data
@Accessors(chain = true)
public class EventBean {
private String data ;
private String eventId ;
private String eventType ;
private String happenTime ;
private String srcIndex ;
private String srcParentIndex;
private String srcType ;
private String status ;
private String timeout ;
}
package com.hikcreate.tocc_camera_receive.bean;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author :heguantao
* @date :Created in 2021/1/7 11:28
* @description:
* @modified By:
* @version: $
*/
@Data
@Accessors(chain = true)
public class FramesPeopleCountingBean {
private String backgroundImage;
private String taskInfo;
private String dataSource;
private String framesPeopleCountingNum;
private String grayscaleImage;
private String personDensityImage;
private String timeStamp;
}
package com.hikcreate.tocc_camera_receive.bean;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author :heguantao
* @date :Created in 2021/1/6 14:58
* @description:
* @modified By:
* @version: $
*/
@Data
@Accessors(chain = true)
public class ParamsBean {
private String ability ;
private String dataProcInterval;
private String events ;
private String sendTime;
}
package com.hikcreate.tocc_camera_receive.bean;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author :heguantao
* @date :Created in 2021/1/6 15:06
* @description:
* @modified By:
* @version: $
*/
@Data
@Accessors(chain = true)
public class PeopleCountingBean {
private String enter ;
private String exit ;
private String imageUrl ;
private String pass ;
private String statisticalMethods ;
private String targetAttrs ;
private String taskInfo ;
}
package com.hikcreate.tocc_camera_receive.bean;
import lombok.Data;
/**
* @author :heguantao
* @date :Created in 2021/1/6 14:54
* @description:
* @modified By:
* @version: $
*/
@Data
public class ReceiveBean {
private String method;
private String params;
}
package com.hikcreate.tocc_camera_receive.bean;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author :heguantao
* @date :Created in 2021/1/7 11:22
* @description:
* @modified By:
* @version: $
*/
@Data
@Accessors(chain = true)
public class RegionData {
private String activePostCount;
private String channelID;
private String channelName;
private String dataProcInterval;
private String dataType;
private String dateTime;
private String eventDescription;
private String eventState;
private String eventType;
private String ipAddress;
private String peopleCounting;
private String portNo;
private String protocol;
private String recvTime;
private String sendTime;
}
package com.hikcreate.tocc_camera_receive.bean;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author :heguantao
* @date :Created in 2021/1/7 11:56
* @description:
* @modified By:
* @version: $
*/
@Data
@Accessors(chain = true)
public class ResponseData {
private String code; // “200” 表示成功,其他表示请求失败返回的错误码(网关错误码)
private String msg; // 调用成功/具体的网关错误信息
//private String data; // 响应数据参数,请求成功返回的业务节点信息。
}
package com.hikcreate.tocc_camera_receive.bean;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author :heguantao
* @date :Created in 2021/1/6 15:10
* @description:
* @modified By:
* @version: $
*/
@Data
@Accessors(chain = true)
public class TargetAttrsBean {
private String cameraIndexCode;
private String deviceId;
private String deviceIndexCode;
private String imageServerCode;
private String recognitionSign;
private String serviceIndexCode;
private String timeZone;
private String uploadMode;
}
package com.hikcreate.tocc_camera_receive.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hikcreate.tocc_camera_receive.bean.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author :heguantao
* @date :Created in 2021/1/12 11:02
* @description:
* @modified By:
* @version: $
*/
@RestController
public class CameraDataController{
private static Logger log = LoggerFactory.getLogger(CameraDataController.class);
@RequestMapping("passengerRcv")
public String receivePassengerRcv(@RequestBody String item) {
//log.info("1==" + item);
ResponseData response = new ResponseData();
if (item != "" && item != null) {
try {
item = item.replaceAll(" ", "");
ReceiveBean receiveBean = JSONObject.parseObject(item, ReceiveBean.class);
String params = receiveBean.getParams();
ParamsBean paramsBean = JSONObject.parseObject(params, ParamsBean.class);
String events = paramsBean.getEvents();
if (events != null && !events.equals("")) {
List<EventBean> eventBeans = JSONArray.parseArray(events, EventBean.class);
HashMap<String, String> map = new HashMap<>();
for (EventBean eventBean: eventBeans) {
map.put("eventType", eventBean.getEventType());
map.put("happenTime", eventBean.getHappenTime());
map.put("srcType", eventBean.getSrcType());
map.put("status", eventBean.getStatus());
map.put("timeout", eventBean.getTimeout());
String dataStr = eventBean.getData();
if (dataStr != null && !dataStr.equals("")){
DataBean dataBean = JSON.parseObject(dataStr, DataBean.class);
map.put("activePostCount", dataBean.getActivePostCount());
map.put("channelID", dataBean.getChannelID());
map.put("dataType", dataBean.getDataType());
map.put("eventState", dataBean.getEventState());
map.put("eventTypeName", dataBean.getEventType());
map.put("dateTime", dataBean.getDateTime());
map.put("recvTime", dataBean.getRecvTime());
map.put("sendTime", dataBean.getSendTime());
String framesPeopleCountingStr = dataBean.getFramesPeopleCounting();
if (framesPeopleCountingStr != null && !framesPeopleCountingStr.equals("")){
FramesPeopleCountingBean framesPeopleCountingBean = JSON.parseObject(framesPeopleCountingStr, FramesPeopleCountingBean.class);
map.put("framesPeopleCountingNum", framesPeopleCountingBean.getFramesPeopleCountingNum());
}
String targetAttrsStr = dataBean.getTargetAttrs();
if (targetAttrsStr != null && !targetAttrsStr.equals("")){
TargetAttrsBean targetAttrsBean = JSON.parseObject(targetAttrsStr, TargetAttrsBean.class);
map.put("cameraIndexCode", targetAttrsBean.getCameraIndexCode());
map.put("deviceId", targetAttrsBean.getDeviceId());
}
}
log.info(JSON.toJSONString(map));
}
}
return response.setCode("200").setMsg("接收数据成功!").toString();
}catch (Exception e){
e.printStackTrace();
return response.setCode("100").setMsg("解析json错误!").toString();
}
}
return response.setCode("100").setMsg("接收数据为空!").toString();
}
@RequestMapping("regionalPopulationRcv")
public String receiveRegionalPopulation(@RequestBody String item) {
ResponseData response = new ResponseData();
//log.info("2==" + item);
item = item.replaceAll(" ", "");
if (!item.equals("")) {
try {
ReceiveBean receiveBean = JSON.parseObject(item, ReceiveBean.class);
String params = receiveBean.getParams();
ParamsBean paramsBean = JSON.parseObject(params, ParamsBean.class);
String events = paramsBean.getEvents();
if (events != null && !events.equals("")) {
List<EventBean> eventBeans = JSONArray.parseArray(events, EventBean.class);
if (eventBeans != null && eventBeans.size() > 0) {
Map<String, String> map = new HashMap<>();
for (EventBean eventBean : eventBeans) {
map.put("eventType", eventBean.getEventType());
map.put("happenTime", eventBean.getHappenTime());
map.put("srcType", eventBean.getSrcType());
map.put("status", eventBean.getStatus());
map.put("timeout", eventBean.getTimeout());
String dataStr = eventBean.getData();
if (dataStr != null && !dataStr.equals("")) {
RegionData regionData = JSON.parseObject(dataStr, RegionData.class);
map.put("activePostCount", regionData.getActivePostCount());
map.put("channelID", regionData.getChannelID());
map.put("dataType", regionData.getDataType());
map.put("dateTime", regionData.getDateTime());
map.put("eventState", regionData.getEventState());
map.put("eventTypeName", regionData.getEventType());
map.put("recvTime", regionData.getRecvTime());
map.put("sendTime", regionData.getSendTime());
String peopleCountingStr = regionData.getPeopleCounting();
if (peopleCountingStr != null && peopleCountingStr != "") {
List<PeopleCountingBean> peopleCountingBeans = JSONArray.parseArray(peopleCountingStr, PeopleCountingBean.class);
if (peopleCountingBeans != null && peopleCountingBeans.size() > 0) {
for (PeopleCountingBean peopleCountingBean : peopleCountingBeans) {
map.put("enter", peopleCountingBean.getEnter());
map.put("exit", peopleCountingBean.getExit());
map.put("pass", peopleCountingBean.getPass());
String targetAttrs = peopleCountingBean.getTargetAttrs();
if (targetAttrs != null && targetAttrs != "") {
TargetAttrsBean targetAttrsBean = JSON.parseObject(targetAttrs, TargetAttrsBean.class);
map.put("cameraIndexCode", targetAttrsBean.getCameraIndexCode());
map.put("deviceId", targetAttrsBean.getDeviceId());
map.put("deviceIndexCode", targetAttrsBean.getDeviceIndexCode());
}
log.info(JSON.toJSONString(map));
}
}
}
}
}
}
}
return response.setCode("200").setMsg("接收数据成功!").toString();
} catch (Exception e) {
e.printStackTrace();
return response.setCode("100").setMsg("解析json错误!").toString();
}
}
return response.setCode("100").setMsg("接收数据为空!").toString();
}
}
server.port=60033
\ No newline at end of file
log4j.appender.Mylog.MyConsole=org.apache.log4j.ConsoleAppender
log4j.appender.Mylog.MyConsole.target=System.err
log4j.appender.Mylog.MyConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.Mylog.MyConsole.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %10p (%c:%M) - %m%n
#d:/test/cameraDataReceive.log
#/software/hgt/test/cameraDataReceive.log
log4j.appender.Mylog.File=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Mylog.File.file=/software/hgt/test/cameraDataReceive.log
log4j.appender.Mylog.File.DatePattern='.'yyyy-MM-dd
log4j.appender.Mylog.File.layout=org.apache.log4j.PatternLayout
log4j.appender.Mylog.File.layout.ConversionPattern=%m%n
log4j.logger.com.hikcreate.tocc_camera_receive.controller.CameraDataController=info,Mylog.File,Mylog.MyConsole
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