Commit 89a55bb0 authored by yzm's avatar yzm

文件上传到本地,并且推送给dx

parent b312fd59
......@@ -12,7 +12,7 @@
<artifactId>VideoofCultural</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<description>视频截图推送</description>
<description>文物局视频截图推送</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
......@@ -60,6 +60,7 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
......@@ -67,12 +68,6 @@
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
......@@ -136,18 +131,27 @@
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.3.8</version>
</dependency>
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--kafka依赖-->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<!-- HttpClient依赖 -->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
......@@ -156,12 +160,7 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
</dependencies>
......
......@@ -25,7 +25,7 @@ public class ScheduleTaskConfig {
/***
* 每隔20分钟执行一遍判断rtsp 是否变换
*/
@Scheduled(cron = "0 0 2 * * ? ")
// @Scheduled(cron = "0 0 2 * * ? ")
private void statis() {
//查询所有监控设备,更新rtsp 地址
List<Sbtdspsr> sbtdpsrList= sbtdspsrService.list();
......
package com.cx.cn.cxquartz.config;
import com.cx.cn.cxquartz.job.WebSocket;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketConfig {
/**
* ServerEndpointExporter 作用
*
* 这个Bean会自动注册使用@ServerEndpoint注解声明的websocket endpoint
*
* @return
*/
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
\ No newline at end of file
package com.cx.cn.cxquartz.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cx.cn.cxquartz.bean.PatrolCtrlAlarm;
import com.cx.cn.cxquartz.bean.PatrolCtrlRecord;
import com.cx.cn.cxquartz.bean.PictureTime;
import com.cx.cn.cxquartz.bean.QuartzTaskInformations;
import com.cx.cn.cxquartz.job.WebSocket;
import com.cx.cn.cxquartz.service.quartz.*;
import com.cx.cn.cxquartz.service.quartz.impl.EventWriteService;
import com.cx.cn.cxquartz.util.*;
import com.cx.cn.cxquartz.vo.*;
import com.cx.cn.cxquartz.vo.Point;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -22,31 +20,21 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import sun.misc.BASE64Encoder;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;
import java.util.concurrent.*;
@RestController
@RequestMapping("/ext")
@PropertySource("classpath:file.properties")
public class ExtController {
private static final Logger logger = LoggerFactory.getLogger(ExtController.class);
@Autowired
private QuartzService quartzService;
@Value("${file.uploadpath}")
private String uploadpath;
@Value("${file.alarmpath}")
private String alarmpath;
@Value("${file.alarmurl}")
private String alarmurl;
@Value("${file.recordurl}")
private String recordurl;
@Value("${file.rtspurl}")
private String rtspurl;
@Value("${file.recogurl}")
......@@ -55,6 +43,28 @@ public class ExtController {
private String getrtspbyurl;
@Value("${file.publicpictureurl}")
private String publicpictureurl;
@Value("${voice.appKey}")
private String appKey;
@Value("${voice.corpId}")
private String corpId;
@Value("${voice.eventId}")
private Integer eventId;
@Value("${file.rootpath}")
private String filerootpath;
@Value("${file.outpath}")
private String outpath;
@Value("${file.webrl}")
private String webrl;
@Value("${voice.unionId}")
private String unionId;
@Autowired
private RestTemplate restTemplate;
@Autowired
......@@ -81,847 +91,297 @@ public class ExtController {
CodeService codeservice;
@Autowired
EventWriteService eventWriteService;
RestUtil restutil=new RestUtil();
@RequestMapping(value = "/patrolCtrlRecord", method = RequestMethod.POST)
public String upload(HttpServletRequest request) {
try {
//判断表中各监控设备id 的最新记录时间,如果为空则进行监控数据更新,不为空则获得上一次各个设备最新的截图时间
//遍历list 从 最新的记录时间开始
HttpSession session = request.getSession();
int result = 0, resultSuccess = 0, alarmresultSuccess = 0;
List<String> resultlist = new ArrayList<>();
String[] fileParam = null;//文件名称数组
String filename = "", fileatream = "", picturetime;//文件名拼接成的日期,图片生成时间
SimpleDateFormat simpledate = new SimpleDateFormat("yyyyMMddHHmmss"), newsimpledate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//日期转换成特定格式
RecursiveGetJsonData fileutil = new RecursiveGetJsonData();
fileutil.getDataFromFile(uploadpath, "jpeg");
List<File> jsonFile = fileutil.getJsonFileList(); //获得文件夹下所有文件信息
List<PictureTime> picturses = quartzService.findLastPicTime();//查询各个设备最新的记录时间
CommonUtil.removeFinishFiles(jsonFile, picturses);//去除重复文件
List<String> deviceids = new ArrayList<>();
for (File file : jsonFile) {
fileParam = file.getAbsolutePath().split("\\\\");
deviceids.add(fileParam[fileParam.length - 3]);
}
//查询该设备的国标码
List<PatrolCtrlRecord> recordList = quartzService.queryCameraCode(deviceids);
if (jsonFile.size() > 0) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
headers.add("access-token", session.getAttribute("token").toString());
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);
for (File file : jsonFile) {
fixedThreadPool.execute(() -> {
String[] fileParam1 = file.getAbsolutePath().split("\\\\");
String filename1 = fileParam1[fileParam1.length - 2] + fileParam1[fileParam1.length - 1].replace(".jpeg", "");
if (null != fileParam1 && fileParam1.length > 4) {
String fileatream1 = fileutil.ImageToBase64ByLocal(file);
for (PatrolCtrlRecord record : recordList) {
if (record.getDeviceid().equals(fileParam1[fileParam1.length - 3])) {
try {
String picturetime1 = newsimpledate.format(simpledate.parse(filename1));
record.setPatrolTime(picturetime1);
record.setRecordSrc("2");
record.setFile(fileatream1);
//调用推送接口
HttpEntity<String> requestEntity = new HttpEntity<>(JSONObject.toJSONString(record), headers);
ResponseEntity<String> response = restTemplate.exchange(recordurl, HttpMethod.POST, requestEntity, String.class);
String body = response.getBody();
JSONObject json = JSONObject.parseObject(body);
if (null != json.getString("status") && json.getString("status").equals("0")) {
record.setFile(null);
record.setPatrolTime(filename1);
quartzService.insertRecord(record);
logger.info("ext/patrolCtrlRecord success-->" + file.getAbsolutePath());
} else {
logger.info("ext/patrolCtrlRecord fail-->" + fileParam1[fileParam1.length - 1] + body);
}
PatrolCtrlAlarm alarm = new PatrolCtrlAlarm();
alarm.setCameraCode(record.getCameraCode());
alarm.setCameraName(record.getCameraName());
alarm.setFile(fileatream1);
alarm.setTime(picturetime1);
alarm.setType("2");
//调用告警接口
ResponseEntity<String> alarmresponse = restTemplate.exchange(alarmurl, HttpMethod.POST, new HttpEntity<>(JSONObject.toJSONString(alarm), headers), String.class);
JSONObject alarmjson = JSONObject.parseObject(alarmresponse.getBody());
if (null != alarmjson.getString("status") && alarmjson.getString("status").equals("0")) {
alarm.setFile(null);
alarm.setTime(filename1);
quartzService.insertAlarm(alarm);
logger.info("ext/alarm success-->" + file.getAbsolutePath());
} else {
logger.info("ext/alarm fail-->" + fileParam1[fileParam1.length - 1] + alarmresponse.getBody());
}
} catch (Exception e) {
logger.error("ext/patrolCtrlRecord-->" + e.toString());
}
}
}
}
});
logger.info("ext/patrolCtrlRecord success-->" + "总共" + jsonFile.size() + "张,推送成功" + resultSuccess + "张,告警成功" + alarmresultSuccess + "张");
}
RestUtil restutil = new RestUtil();
@Resource
public void setRestTemplate(RestTemplate restTemplate) {
restutil.restTemplate = restTemplate;
}
}
return ResultUtil.success();
} catch (Exception e) {
logger.error("ext/patrolCtrlRecord-->" + e.toString());
}
return ResultUtil.fail();
@Resource
public void setSbtdspsrService(SbtdspsrService sbtdspsrService) {
restutil.sbtdspsrService = sbtdspsrService;
}
@RequestMapping(value = "/getRTSP/{photonum}", method = RequestMethod.POST)
public String getrtsp(@RequestBody String videoid,
@PathVariable("photonum") Integer photonum) {
//根据videoID查询 rtsp 值
List<Sbtdspsr> sbtdspsrlist=sbtdspsrService.selectByRtsp(videoid);
logger.info("sbtdspsrlist:{}",JSONObject.toJSON(sbtdspsrlist));
List<Sbtdspsr> sbtdspsrlist = sbtdspsrService.selectByRtsp(videoid);
logger.info("sbtdspsrlist:{}", JSONObject.toJSON(sbtdspsrlist));
if (sbtdspsrlist.size() == 0) {
logger.info(videoid+"设备不存在");
return ResultUtil.success();
logger.info(videoid + "设备不存在");
return ResultUtil.success();
}
Sbtdspsr sbtdspsr = sbtdspsrlist.get(0);
logger.info("sbtdspsr:{}",JSONObject.toJSON(sbtdspsr));
//尝试抽取第一张图片
List<String> imgUrls = new ArrayList<>();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
Map<String, Object> maps = new HashMap<>();
if(null==sbtdspsr.getSqurllj() ||"".equals(sbtdspsr.getSqurllj())){
String rtsp=restutil.getnewRtspVlue(sbtdspsr.getSbbh(),getrtspbyurl);
sbtdspsr.setSqurllj(rtsp);
}
maps.put("rtspvalue", sbtdspsr.getSqurllj());
maps.put("refresh", 1);
logger.info("getRTSP/1:{}",videoid);
logger.info("rtspurl:{}",rtspurl);
logger.info("maps:{}",JSONObject.toJSON(maps));
HttpEntity<String> formEntity = new HttpEntity<>(null, headers);
TraffAlarmRecord traffAlarmRecord = new TraffAlarmRecord();
try {
ResponseEntity<String> exchange = restTemplate.exchange(rtspurl + "?url={rtspvalue}&refresh={refresh}",
HttpMethod.GET, formEntity, String.class, maps);
String body = exchange.getBody();
logger.info("getRTSP/1->body:",body);
if(null==body|| "".equals(body)){
//rtsp地址可能改变,重新获取
if(!videoid.contains("rtsp")) {
String rtsp =restutil.getnewRtspVlue(sbtdspsr.getSbbh(),getrtspbyurl);
maps.put("rtspvalue", rtsp);
}
}
else{
JSONObject json = JSONObject.parseObject(exchange.getBody());
if (null != json.getString("ret") && json.getString("ret").equals("0")) {
//获得图片地址
imgUrls.add(json.getString("url"));
}
//尝试抽取图片
logger.info("rtspurl" + rtspurl);
String timestamp = restutil.getPicture(imgUrls, sbtdspsr.getSbbh(), rtspurl, traffAlarmRecord);
logger.info("timestamp" + timestamp);
if (timestamp.contains(".")) {
traffAlarmRecord.setCreatetime(timestamp.split("\\.")[0]);
} else {
traffAlarmRecord.setCreatetime(timestamp);
}
}catch (Exception ex)
{
//rtsp地址可能改变,重新获取
String rtsp=restutil.getnewRtspVlue(sbtdspsr.getSbbh(),getrtspbyurl);
maps.put("rtspvalue", rtsp);
} catch (Exception ex) {
logger.info("getRTSP/1 error:{}", ex.toString());
traffAlarmRecord.setCreatetime(DateUtils.formatCurrDate());
}
try{
if(imgUrls.size()==0){
logger.info("no picture data ");
return ResultUtil.success();
try {
if (imgUrls.size() == 0) {
restutil.getPicture(imgUrls, sbtdspsr.getSbbh(), rtspurl, traffAlarmRecord);
}
//根据rtsp 进行图片获取及存储
Map<String, Object> transferRecordMap = new HashMap<>();
TraffAlarmRecord traffAlarmRecord = new TraffAlarmRecord();
traffAlarmRecord.setFdid(sbtdspsr.getSbbh());
traffAlarmRecord.setChannelid(Integer.parseInt(String.valueOf(sbtdspsr.getTdbh())));
traffAlarmRecord.setAreaid(Long.parseLong(sbtdspsr.getXzbh()));
int i = 0;
if(imgUrls.size()>0) {
i = 1;
}
//抽取图片
restutil.getPicture(imgUrls, maps, formEntity,rtspurl);
traffAlarmRecord.setCreatetime(new Date());
traffAlarmRecord.setPushstatus(9);
//免审
traffAlarmRecord.setCheckstatus(9);
//未提取特征
traffAlarmRecord.setProcessstatus("-2");
//存储到ftp 上去
for (int k = 0; k < imgUrls.size(); k++) {
TraffAlarmRecordFromImgEnum.valueOf("IMG" + k).setImg(traffAlarmRecord, imgUrls.get(k));
}
String basepath = "gstraff/" + traffAlarmRecord.getFdid() + (traffAlarmRecord.getChannelid() < 10 ? "0" + traffAlarmRecord.getChannelid() : traffAlarmRecord.getChannelid()) + "/" + DateUtils.formatCurrDayNoSign();
Ftp ftp = ftpService.reloadFtp();
traffAlarmRecord.setImg1urlfrom(imgUrls.get(0));
//String basepath = "gstraff/" + traffAlarmRecord.getFdid() + (traffAlarmRecord.getChannelid() < 10 ? "0" + traffAlarmRecord.getChannelid() : traffAlarmRecord.getChannelid()) + "/" + DateUtils.formatCurrDayNoSign();
//Ftp ftp = ftpService.reloadFtp();
//入表
traffAlarmRecordService.inserTraffAlarmRecord(traffAlarmRecord);
FileTransferManager.fetchUrlsFromRecord(traffAlarmRecord, transferRecordMap);
List<TransferResult> results = FileTransferManager.transferFile(transferRecordMap, ftp, basepath);
// logger.info("缓存数据上传结果:" + results.toString());
TraffAlarmRecord recordBak = FileTransferManager.traffAlarmRecordUrlUpdate(results);
traffAlarmRecord.setImg1path(recordBak.getImg1path());
traffAlarmRecord.setImg2path(recordBak.getImg2path());
traffAlarmRecord.setImg3path(recordBak.getImg3path());
traffAlarmRecord.setImg4path(recordBak.getImg4path());
traffAlarmRecord.setImg5path(recordBak.getImg5path());
traffAlarmRecord.setVideopath(recordBak.getVideopath());
//FileTransferManager.transferFile(traffAlarmRecord, ftp, basepath);
//更新图片地址
traffAlarmRecordService.updateTraffAlarmRecordUrl(traffAlarmRecord);
// traffAlarmRecordService.updateTraffAlarmRecordUrl(traffAlarmRecord);
return ResultUtil.success();
} catch(Exception e){
logger.error("ext/getRTSPr-->error" + e.toString());
} catch (Exception e) {
logger.error("ext/getRTSPr-->error:{}" + e.toString());
}
return ResultUtil.success();
}
/***
* 适配算法偏移-30 的情况
* @param taskno 设备编号
* @return
*/
@RequestMapping(value = "/getRecog", method = RequestMethod.POST)
public String getRecog(@RequestBody String taskno) {
@RequestMapping(value = "/getDeviceSnapshotAndRecognize", method = RequestMethod.POST)
public String getDeviceSnapshotAndRecognize(@RequestBody String devicecode) {
// logger.info("getDeviceSnapshotAndRecognize is running :{}",devicecode);
//根据判断监控是否存在,该监控检测的事件是什么
List<Map> mapList = sbtdspsrService.selectRecogByRtsp(taskno);
String model ="1";
String recordtype ="1";
List<QuartzTaskInformations> mapList = sbtdspsrService.selectRecogByRtsp(devicecode);
String model = "1";
//图片框选出来的范围
Long[] roiarray;
String videoid,tdmc;
HttpHeaders headers = new HttpHeaders();
BASE64Encoder base64Encoder = new BASE64Encoder();
if (null != mapList && !mapList.equals("") && mapList.size()>0) {
//获得该监控的检测业务与检测范围
for (Map<String, Object> mapobj: mapList) {
roiarray=new Long[4];
videoid="";
tdmc="";
for (Map.Entry<String, Object> maps:mapobj.entrySet()) {
if("videoid".equals(maps.getKey())){
videoid = String.valueOf(maps.getValue());
}
else if("metatype".equals(maps.getKey())){
model = String.valueOf(maps.getValue());
}
else if("recordtype".equals(maps.getKey())){
recordtype = String.valueOf(maps.getValue());
}
else if("objectx".equals(maps.getKey())){
roiarray[0]=new Long(String.valueOf(maps.getValue()));
}
else if("objecty".equals(maps.getKey())){
roiarray[1]=new Long(String.valueOf(maps.getValue()));
}
else if("objectw".equals(maps.getKey())){
roiarray[2]=new Long(String.valueOf(maps.getValue()));
}
else if("objecth".equals(maps.getKey())){
roiarray[3]=new Long(String.valueOf(maps.getValue()));
}
else if("tdmc".equals(maps.getKey())){
tdmc=String.valueOf(maps.getValue());
}
}
String videoid, tdmc;
if (null != mapList && !mapList.equals("") && mapList.size() > 0) {
//查询该监控下面还没有经过分析的数据
String basepath = "gstraff/" + videoid+ "/" + DateUtils.formatCurrDayNoSign();
Map<String, Object> map = new HashMap<>();
map.put("sbbh", videoid);
List<TraffAlarmRecord> traffalarmrecordlist = traffAlarmRecordService.getTraffAlarmRecordByProgress(map);
if(traffalarmrecordlist.size()<1) {
return ResultUtil.success();
}
//调用结构化服务,获得图片返回结果
map.put("sbbh", devicecode);
//List<TraffAlarmRecord> traffalarmrecordlist = traffAlarmRecordService.getTraffAlarmRecordByProgress(map);
// if (traffalarmrecordlist.size() < 1) {
// return ResultUtil.success();
// }
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
HttpEntity<String> requestEntity = null;
if (getAlarm(model, recordtype, roiarray, tdmc, headers, base64Encoder, basepath, traffalarmrecordlist))
return ResultUtil.success();
}
return ResultUtil.success();
}else {
logger.info("监控不属于该范围");
}
//更新record 表Progress 字段,0为 未检测,-2 为检测失败,将检测
//结果进行额外封装入表
logger.error("rtsp 不存在-->");
return ResultUtil.fail();
}
Map<String, Object> mapparam = new HashMap<>();
roiarray = new Long[4];
//获得该监控的检测业务与检测范围
for (QuartzTaskInformations taskinfo : mapList) {
roiarray[0] = new Long(taskinfo.getObjectx());
roiarray[1] = new Long(taskinfo.getObjecty());
roiarray[2] = new Long(taskinfo.getObjectw());
roiarray[3] = new Long(taskinfo.getObjecth());
// for (TraffAlarmRecord transferRecord : traffalarmrecordlist) {
mapparam.put("deviceCode", devicecode);
mapparam.put("model", model);
mapparam.put("roi", roiarray);
logger.info("recogurl="+recogurl);
Map objectList = restTemplate.getForObject(recogurl + "?deviceCode={deviceCode}&model={model}&roi={roi}", Map.class, mapparam);
try {
logger.info(" param:{}", new ObjectMapper().writeValueAsString(mapparam));
logger.info(" objectList result:{}", new ObjectMapper().writeValueAsString(objectList));
}catch (Exception ex){
public boolean getAlarm(String model, String recordtype, Long[] roiarray, String tdmc, HttpHeaders headers, BASE64Encoder base64Encoder, String basepath, List<TraffAlarmRecord> traffalarmrecordlist) {
HttpEntity<String> requestEntity;
for (TraffAlarmRecord transferRecord : traffalarmrecordlist) {
GoalStructureParam param = FileTransferManager.getGoalStructureParam(roiarray,
Integer.parseInt(model == null ? "1" : "".equals(model) ? "1" : model
), base64Encoder, transferRecord);
if (param.getImageList().size() < 1) {
logger.info(" no imagelist ");
transferRecord.setProcessstatus("-1");
traffAlarmRecordService.updateTraffAlarmRecordProcess(transferRecord);
continue;
}
requestEntity = new HttpEntity<>(JSONObject.toJSONString(param), headers);
try {
ResponseEntity<String> response = restTemplate.exchange(recogurl, HttpMethod.POST, requestEntity, String.class);
String body = response.getBody();
JSONObject result = JSONObject.parseObject(body);
if (null != result.get("ret") && result.get("ret").equals("200")) {
//获得返回结果,根据 Metadata.type 判断是人,车,人骑车,并将详细信息入对应的表
List<TraffpictureParam> objectList = JSONArray.parseArray(String.valueOf(result.get("ObjectList")), TraffpictureParam.class);
//获得 type,更新 recordalarm 为已分析
transferRecord.setProcessstatus("-1");
traffAlarmRecordService.updateTraffAlarmRecordProcess(transferRecord);
if (objectList.size() < 1) {
logger.info(" no picturedata ");
continue;
}
TraffrecordData traffrecordData=new TraffrecordData();
//根据结构化统计查询是否超过密度,超过则预警
Code code = codeservice.selectalarmNum(recordtype);
roiarray[0] = roiarray[0] - 30;
roiarray[1] = roiarray[1] - 30;
roiarray[2] = roiarray[2] - 30;
roiarray[3] = roiarray[3] - 30;
//判断是否统计结构化数据
TraffpictureParam traffpictureParamresult = new TraffpictureParam();
traffpictureParamresult.setImagedata(transferRecord.getImg1path());
if (("6".equals(recordtype) || "2".equals(recordtype))) {
if (null != code && null != code.getAlarmnum() && code.getAlarmnum() < objectList.size()) {
setTraffpictureParam(recordtype, transferRecord, traffpictureParamresult);
traffpictureParamresult.setTargetnum(objectList.size());
//超过则预警
traffpictureParamresult.setRecordtype(recordtype);
traffPictureService.updateTraffpicture(traffpictureParamresult);
}
else{
return true;
}
}
// if ((("6".equals(recordtype) || "2".equals(recordtype))
// && (null != code && null != code.getAlarmnum() && code.getAlarmnum() < objectList.size()))
// && (!"6".equals(recordtype) && !"2".equals(recordtype))) {
List<ObjectBoundingBox> list = new ArrayList<>();
for (TraffpictureParam traffpictureParam : objectList) {
//根据imageid 获得 base64图片
JSONObject metadata = JSONObject.parseObject(String.valueOf(traffpictureParam.getMetadata()));
JSONObject ObjectBoundingBox = metadata.getJSONObject("ObjectBoundingBox");
//获得物体特征值
if (null == ObjectBoundingBox) {
list.add(new ObjectBoundingBox(metadata.getIntValue("LeftTopX") + roiarray[0].intValue(),
metadata.getIntValue("LeftTopY") + roiarray[1].intValue(),
metadata.getIntValue("RightBtmX") - metadata.getIntValue("LeftTopX"),
metadata.getIntValue("RightBtmY") - metadata.getIntValue("LeftTopY")
));
} else {
list.add(new ObjectBoundingBox(ObjectBoundingBox.getIntValue("X") + roiarray[0].intValue(),
ObjectBoundingBox.getIntValue("Y") + roiarray[1].intValue(),
ObjectBoundingBox.getIntValue("W"),
ObjectBoundingBox.getIntValue("H")
));
}
//根据对应的解析结果获得相应的数据,存放到对应的表中
getMetaData(recordtype, roiarray, base64Encoder, transferRecord, traffpictureParamresult, list, traffpictureParam, metadata);
}
//更新 traffpicture特征值
if (String.valueOf(objectList.get("ret")).equals("0")) {
//变成为已分析
// transferRecord.setProcessstatus("-1");
// traffAlarmRecordService.updateTraffAlarmRecordProcess(transferRecord);
String recordtype=taskinfo.getRecordtype();
JobTjParam jobTjParam = new JobTjParam();
jobTjParam.setDeviceId(devicecode);
jobTjParam.setDetectType(recordtype);
String imageurl=objectList.get("url").toString();
try {
byte[] Img = FTPUtil.getFtpPicBytes(traffpictureParamresult.getImagedata());
if (null != Img) {
ByteArrayInputStream bais = new ByteArrayInputStream(Img);
BufferedImage image = ImageIO.read(bais);
Graphics g = image.getGraphics();
g.setColor(Color.RED);
//遍历所有特征值,画到图片上
for (ObjectBoundingBox box : list) {
if (null != box) {
g.drawRect(box.getX(), box.getY(), box.getW(), box.getH());
}
}
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ImageIO.write(image, "png", stream);
//上传ftp
Ftp ftp = ftpService.reloadFtp();
String filename = DateUtils.formatCurrDateNoSign() + "imgdata.png";
String ftputl = FTPUtil.getFtpUrl(ftp) + basepath + "/" + traffpictureParamresult.getId() + "/" + filename;
traffpictureParamresult.setImagedata(ftputl);
//base 64 图片
String png_base64 = base64Encoder.encode(stream.toByteArray()).trim();
FTPUtil.uploadFile(ftp, basepath + "/" + traffpictureParamresult.getId(), filename,png_base64 );
Map maprecogdata =new ObjectMapper().readValue(objectList.get("recogdata").toString(),Map.class);
List<Map> points = new ArrayList<>();
//分析结果数据
List<Map> objectresult = (List<Map>) maprecogdata.get("ObjectList");
if(objectresult.size()<1){
logger.info(" objectresult is empty");
continue;
}
//获得点位
TraffpictureParam traffpictureParamresult = eventWriteService.getResult(Integer.parseInt(taskinfo.getMetatype())
, roiarray,imageurl , objectresult, jobTjParam, points);
eventWriteService.setTraffpictureParam(recordtype,devicecode,
objectList.get("timestamp").toString(),
traffpictureParamresult);
//图片划线并上传
String basepath = DateUtils.formatCurrDayYM()+
File.separator+DateUtils.formatCurrDayDD()+ File.separator+
devicecode ;
String filename = devicecode+"_"+ DateUtils.formatCurrDateNoSign()+ "_result.jpg";
eventWriteService.uploadPicture(traffpictureParamresult,imageurl, points, basepath, filename);
String filenameurl=webrl+File.separator+outpath+File.separator+basepath+File.separator+filename;
jobTjParam.setImageUrl(filenameurl);
logger.info("file path:{}",filenameurl);
traffpictureParamresult.setImagedata(filenameurl);
traffpictureParamresult.setTargetnum( Integer.parseInt(taskinfo.getMetatype()));
traffPictureService.updateTraffpicture(traffpictureParamresult);
//回调
logger.info("send to dianxin data:{}",JSONObject.toJSONString(jobTjParam));
eventWriteService.sendEventByCallUrl(traffpictureParamresult, jobTjParam, taskinfo.getUrl());
//推送告警到前端
webSocket.GroupSending(new ObjectMapper().writeValueAsString(traffpictureParamresult));
if (unionId.contains(devicecode)) {
VoiceData voicedata = new VoiceData();
voicedata.setAppKey(appKey);
voicedata.setCorpId(corpId);
Voice voice = new Voice();
voice.setEventId(eventId);
voice.setUnionId(unionId);
voicedata.setRequestData(voice);
logger.info(" send to voice: {}", new ObjectMapper().writeValueAsString(voicedata));
eventWriteService.sendVoice(voicedata);
}
} catch (Exception ex) {
logger.info("base64画框异常:" + ex.toString());
}
traffPictureService.updateTraffpicture(traffpictureParamresult);
//推送给第三方的base64
traffrecordData.setImagedata(publicpictureurl+"?location="+traffpictureParamresult.getImagedata().replace("ftp://"+ftppath+"/",""));
//赋值推送第三方数据
traffrecordData.setRecordlevel(code.getAlarmlevel());
traffrecordData.setTargetnum(code.getMaxnum());
traffrecordData.setRecordname(code.getName());
traffrecordData.setTdmc(tdmc);
//推送给第三方
eventWriteService.sendEvent(traffpictureParamresult,traffrecordData);
logger.info(" send to meili: {}",JSONObject.toJSON(traffrecordData));
//推送告警到前端
webSocket.GroupSending(JSONObject.toJSONString(traffpictureParamresult));
//其他数据如表
//getMetaData( objectresult );
}
} catch (Exception ex) {
//推送失败
transferRecord.setProcessstatus("-3");
traffAlarmRecordService.updateTraffAlarmRecordProcess(transferRecord);
}
}
return false;
}
private void getMetaData(String recordtype, Long[] roiarray, BASE64Encoder base64Encoder, TraffAlarmRecord transferRecord, TraffpictureParam traffpictureParamresult, List<ObjectBoundingBox> list, TraffpictureParam traffpictureParam, JSONObject metadata) {
if (null != metadata) {
traffpictureParamresult.setMetatype(String.valueOf(metadata.get("Type")));
//规定区域内出现告警对象
if(null==traffpictureParamresult.getId()) {
setTraffpictureParam(recordtype, transferRecord, traffpictureParamresult);
}
if ("1".equals(metadata.get("Type"))) {
//规定范围内检测到人
Pedestrian meta = JSON.toJavaObject(metadata, Pedestrian.class);
meta.setId(traffpictureParamresult.getId());
pedestrianService.insertpedestrian(meta);
if (null != meta.getFaceBoundingBox()) {
list.add(new ObjectBoundingBox(meta.getFaceBoundingBox().getX() + roiarray[0].intValue(),
meta.getFaceBoundingBox().getY() + roiarray[1].intValue(),
meta.getFaceBoundingBox().getW(),
meta.getFaceBoundingBox().getH()
));
}
if (null != meta.getObjectBoundingBox()) {
list.add(new ObjectBoundingBox(meta.getObjectBoundingBox().getX() + roiarray[0].intValue(),
meta.getObjectBoundingBox().getY() + roiarray[1].intValue(),
meta.getObjectBoundingBox().getW(),
meta.getObjectBoundingBox().getH()
));
}
if (null != meta.getHeadBoundingBox()) {
list.add(new ObjectBoundingBox(meta.getHeadBoundingBox().getX() + roiarray[0].intValue(),
meta.getHeadBoundingBox().getY() + roiarray[1].intValue(),
meta.getHeadBoundingBox().getW(),
meta.getHeadBoundingBox().getH()
));
}
if (null != meta.getUpperBoundingBox()) {
list.add(new ObjectBoundingBox(meta.getUpperBoundingBox().getX() + roiarray[0].intValue(),
meta.getUpperBoundingBox().getY() + roiarray[1].intValue(),
meta.getUpperBoundingBox().getW(),
meta.getUpperBoundingBox().getH()
));
}
if (null != meta.getLowerBoundingBox()) {
list.add(new ObjectBoundingBox(meta.getLowerBoundingBox().getX() + roiarray[0].intValue(),
meta.getLowerBoundingBox().getY() + roiarray[1].intValue(),
meta.getLowerBoundingBox().getW(),
meta.getLowerBoundingBox().getH()
));
}
} else if (null != metadata && "2".equals(metadata.get("Type"))) {
//车辆
Traffic meta = JSON.toJavaObject(metadata, Traffic.class);
meta.setId(traffpictureParamresult.getId());
//新增到车辆详情表
trafficService.insertTraffic(meta);
if (null != meta.getObjectBoundingBox()) {
list.add(new ObjectBoundingBox(meta.getObjectBoundingBox().getX() + roiarray[0].intValue(),
meta.getObjectBoundingBox().getY() + roiarray[1].intValue(),
meta.getObjectBoundingBox().getW(),
meta.getObjectBoundingBox().getH()
));
}
} else if (null != metadata && "3".equals(metadata.get("Type"))) {
Face meta = JSON.toJavaObject(metadata, Face.class);
meta.setId(traffpictureParamresult.getId());
faceService.insertFace(meta);
if (null != meta.getFaceBoundingBox()) {
traffpictureParam.setObjx(meta.getFaceBoundingBox().getX() + roiarray[0].intValue());
traffpictureParam.setObjy(meta.getFaceBoundingBox().getY() + roiarray[1].intValue());
traffpictureParam.setObjw(meta.getFaceBoundingBox().getW());
traffpictureParam.setObjh(meta.getFaceBoundingBox().getH());
}
if (null != meta.getFaceBoundingBox()) {
list.add(new ObjectBoundingBox(meta.getFaceBoundingBox().getX() + roiarray[0].intValue(),
meta.getFaceBoundingBox().getY() + roiarray[1].intValue(),
meta.getFaceBoundingBox().getW(),
meta.getFaceBoundingBox().getH()
));
}
if (null != meta.getHeadBoundingBox()) {
list.add(new ObjectBoundingBox(meta.getHeadBoundingBox().getX() + roiarray[0].intValue(),
meta.getHeadBoundingBox().getY() + roiarray[1].intValue(),
meta.getHeadBoundingBox().getW(),
meta.getHeadBoundingBox().getH()
));
}
//人骑车
} else if (null != metadata && "4".equals(metadata.get("Type"))) {
PeopleRideBicyc meta = JSON.toJavaObject(metadata, PeopleRideBicyc.class);
meta.setId(traffpictureParamresult.getId());
peopleridebicycService.insertPeopleRideBicyc(meta);
if (null != meta.getFaceBoundingBox()) {
list.add(new ObjectBoundingBox(meta.getFaceBoundingBox().getX() + roiarray[0].intValue(),
meta.getFaceBoundingBox().getY() + roiarray[1].intValue(),
meta.getFaceBoundingBox().getW(),
meta.getFaceBoundingBox().getH()
));
}
if (null != meta.getObjectBoundingBox()) {
list.add(new ObjectBoundingBox(meta.getObjectBoundingBox().getX() + roiarray[0].intValue(),
meta.getObjectBoundingBox().getY() + roiarray[1].intValue(),
meta.getObjectBoundingBox().getW(),
meta.getObjectBoundingBox().getH()
));
}
}
//}
return ResultUtil.success();
} else {
logger.info("监控不属于该范围");
}
//更新record 表Progress 字段,0为 未检测,-2 为检测失败,将检测
//结果进行额外封装入表
return ResultUtil.success();
}
/***
* 原来推送
* @param recordtype
* @param transferRecord
* @param traffpictureParam
*/
// @RequestMapping(value = "/getRecog", method = RequestMethod.POST)
// public String getRecog(@RequestBody String videoid) {
// //根据判断监控是否存在,该监控检测的事件是什么
// List<Map> mapList = sbtdspsrService.selectRecogByRtsp(videoid);
// String model ="1";
// String recordtype ="1";
// //图片框选出来的范围
// Long[] roiarray=new Long[4];
//
// if (null != mapList && !mapList.equals("") && mapList.size()>0) {
//
// //获得该监控的检测业务与检测范围
// for (Map<String, Object> map: mapList) {
// for (Map.Entry<String, Object> maps:map.entrySet()) {
// if("videoid".equals(maps.getKey())){
// videoid = String.valueOf(maps.getValue());
// }
// else if("metatype".equals(maps.getKey())){
// model = String.valueOf(maps.getValue());
// }
// else if("recordtype".equals(maps.getKey())){
// recordtype = String.valueOf(maps.getValue());
// }
// else if("objectx".equals(maps.getKey())){
// roiarray[0]=new Long(String.valueOf(maps.getValue()));
// }
//
// else if("objecty".equals(maps.getKey())){
// roiarray[1]=new Long(String.valueOf(maps.getValue()));
// }
// else if("objectw".equals(maps.getKey())){
// roiarray[2]=new Long(String.valueOf(maps.getValue()));
// }
// else if("objecth".equals(maps.getKey())){
// roiarray[3]=new Long(String.valueOf(maps.getValue()));
// }
// private void getMetaData( List<Map> objectresult ) {
// if (null != metadata) {
// traffpictureParamresult.setMetatype(String.valueOf(metadata.get("Type")));
// if ("1".equals(metadata.get("Type"))) {
// //规定范围内检测到人
// Pedestrian meta = new ObjectMapper().convertValue(metadata, Pedestrian.class);
// meta.setId(traffpictureParamresult.getId());
// pedestrianService.insertpedestrian(meta);
// if (null != meta.getFaceBoundingBox()) {
// list.add(new ObjectBoundingBox(meta.getFaceBoundingBox().getX() + roiarray[0].intValue(),
// meta.getFaceBoundingBox().getY() + roiarray[1].intValue(),
// meta.getFaceBoundingBox().getW(),
// meta.getFaceBoundingBox().getH()
// ));
// }
// }
// //查询该监控下面还没有经过分析的数据
// String basepath = "gstraff/" + videoid+ "/" + DateUtils.formatCurrDayNoSign();
//
// Map<String, Object> map = new HashMap<>();
//
// if(videoid.split("_").length<2){
// logger.info("监控不存在");
// return ResultUtil.success();
// }
// if (null != meta.getObjectBoundingBox()) {
//
// map.put("sbbh", videoid.split("_")[0]);
// map.put("tdbh", videoid.split("_")[1]);
// List<TraffAlarmRecord> traffalarmrecordlist = traffAlarmRecordService.getTraffAlarmRecordByProgress(map);
// if(traffalarmrecordlist.size()<1) {
// return ResultUtil.success();
// }
// BASE64Decoder base64Decoder = new BASE64Decoder();
// //开启多线程
// //调用结构化服务,获得图片返回结果
// HttpHeaders headers = new HttpHeaders();
// BASE64Encoder base64Encoder = new BASE64Encoder();
// headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
// HttpEntity<String> requestEntity = null;
// for (TraffAlarmRecord transferRecord : traffalarmrecordlist) {
// GoalStructureParam param = FileTransferManager.getGoalStructureParam(roiarray,
// Integer.parseInt(model == null ? "1" : "".equals(model) ? "1" : model
// ), base64Encoder, transferRecord);
// if (param.getImageList().size() < 1) {
// logger.info(" no imagelist ");
// continue;
// list.add(new ObjectBoundingBox(meta.getObjectBoundingBox().getX() + roiarray[0].intValue(),
// meta.getObjectBoundingBox().getY() + roiarray[1].intValue(),
// meta.getObjectBoundingBox().getW(),
// meta.getObjectBoundingBox().getH()
// ));
// }
// requestEntity = new HttpEntity<>(JSONObject.toJSONString(param), headers);
// try {
// ResponseEntity<String> response = restTemplate.exchange(recogurl, HttpMethod.POST, requestEntity, String.class);
//
// String body = response.getBody();
// JSONObject result = JSONObject.parseObject(body);
// if (null != result.get("ret") && result.get("ret").equals("200")) {
// //获得返回结果,根据 Metadata.type 判断是人,车,人骑车,并将详细信息入对应的表
// List<TraffpictureParam> objectList = (List<TraffpictureParam>) JSONArray.parseArray(String.valueOf(result.get("ObjectList")), TraffpictureParam.class);
// //获得 type
// //更新 recordalarm 为一分析
// traffAlarmRecordService.updateTraffAlarmRecordProcess(transferRecord);
// if (objectList.size() < 1) {
// logger.info(" no picturedata ");
// continue;
// }
// //根据结构化统计查询是否超过密度,超过则预警
// Code code = codeservice.selectalarmNum(recordtype);
// //判断是否统计结构化数据
// if (("6".equals(recordtype) || "2".equals(recordtype))) {
// if (null != code && null != code.getAlarmnum() && code.getAlarmnum() < objectList.size()) {
// TraffpictureParam traffpictureParam = new TraffpictureParam();
// setTraffpictureParam(recordtype, base64Encoder, transferRecord, traffpictureParam);
// traffpictureParam.setTargetnum(objectList.size());
// //超过则预警
// traffpictureParam.setRecordtype(recordtype);
// traffpictureParam.setImagedata(transferRecord.getImg1path());
// traffPictureService.updateTraffpicture(traffpictureParam);
//
// //WebSocket.GroupSending(JSONObject.toJSONString(traffpictureParam));
// }
// }
// //为了适配算法偏移-30问题
//
//
// List<ObjectBoundingBox> list=new ArrayList<>();
// for (TraffpictureParam traffpictureParam : objectList) {
//
// //根据imageid 获得 base64图片
// JSONObject metadata = JSONObject.parseObject(String.valueOf(traffpictureParam.getMetadata()));
// JSONObject ObjectBoundingBox = metadata.getJSONObject("ObjectBoundingBox");
// if (null == ObjectBoundingBox) {
// traffpictureParam.setObjx(metadata.getIntValue("LeftTopX")+ roiarray[0].intValue());
// traffpictureParam.setObjy(metadata.getIntValue("LeftTopY")+roiarray[1].intValue());
// traffpictureParam.setObjw(metadata.getIntValue("RightBtmX") - metadata.getIntValue("LeftTopX"));
// traffpictureParam.setObjh(metadata.getIntValue("RightBtmY") - metadata.getIntValue("LeftTopY"));
// list.add(new ObjectBoundingBox(metadata.getIntValue("LeftTopX")+ roiarray[0].intValue(),
// metadata.getIntValue("LeftTopY")+roiarray[1].intValue(),
// metadata.getIntValue("RightBtmX") - metadata.getIntValue("LeftTopX"),
// metadata.getIntValue("RightBtmY") - metadata.getIntValue("LeftTopY")
// ));
// } else {
// traffpictureParam.setObjx(ObjectBoundingBox.getIntValue("X")+ roiarray[0].intValue());
// traffpictureParam.setObjy(ObjectBoundingBox.getIntValue("Y")+roiarray[1].intValue());
// traffpictureParam.setObjw(ObjectBoundingBox.getIntValue("W"));
// traffpictureParam.setObjh(ObjectBoundingBox.getIntValue("H"));
// list.add(new ObjectBoundingBox(ObjectBoundingBox.getIntValue("X")+ roiarray[0].intValue(),
// ObjectBoundingBox.getIntValue("Y")+roiarray[1].intValue(),
// ObjectBoundingBox.getIntValue("W"),
// ObjectBoundingBox.getIntValue("H")
// ));
// }
// if (null != metadata ) {
// traffpictureParam.setMetatype(String.valueOf(metadata.get("Type")));
// //规定区域内出现告警对象
// setTraffpictureParam(recordtype, base64Encoder, transferRecord, traffpictureParam);
// if ("1".equals(metadata.get("Type"))) {
// //规定范围内检测到人
// Pedestrian meta = JSON.toJavaObject(metadata, Pedestrian.class);
// meta.setId(traffpictureParam.getId());
// pedestrianService.insertpedestrian(meta);
// if(null!=meta.getFaceBoundingBox()) {
// list.add(new ObjectBoundingBox(meta.getFaceBoundingBox().getX()+roiarray[0].intValue(),
// meta.getFaceBoundingBox().getY()+roiarray[1].intValue(),
// meta.getFaceBoundingBox().getW(),
// meta.getFaceBoundingBox().getH()
// ));
// }
// if(null!=meta.getObjectBoundingBox()){
//
// list.add(new ObjectBoundingBox(meta.getObjectBoundingBox().getX()+roiarray[0].intValue() ,
// meta.getObjectBoundingBox().getY()+roiarray[1].intValue(),
// meta.getObjectBoundingBox().getW(),
// meta.getObjectBoundingBox().getH()
// ));
// }
//
// if(null!=meta.getHeadBoundingBox()){
//
// list.add(new ObjectBoundingBox(meta.getHeadBoundingBox().getX() +roiarray[0].intValue(),
// meta.getHeadBoundingBox().getY() +roiarray[1].intValue(),
// meta.getHeadBoundingBox().getW(),
// meta.getHeadBoundingBox().getH()
// ));
// }
// if (null != meta.getHeadBoundingBox()) {
//
// if(null!=meta.getUpperBoundingBox()) {
// list.add(new ObjectBoundingBox(meta.getUpperBoundingBox().getX() +roiarray[0].intValue(),
// meta.getUpperBoundingBox().getY() +roiarray[1].intValue(),
// meta.getUpperBoundingBox().getW(),
// meta.getUpperBoundingBox().getH()
// ));
// }
// if(null!=meta.getLowerBoundingBox()) {
// list.add(new ObjectBoundingBox(meta.getLowerBoundingBox().getX() +roiarray[0].intValue(),
// meta.getLowerBoundingBox().getY() +roiarray[1].intValue(),
// meta.getLowerBoundingBox().getW(),
// meta.getLowerBoundingBox().getH()
// ));
// }
//
// } else if (null != metadata && "2".equals(metadata.get("Type"))) {
// //车辆
// Traffic meta = JSON.toJavaObject(metadata, Traffic.class);
// meta.setId(traffpictureParam.getId());
// //新增到车辆详情表
// trafficService.insertTraffic(meta);
// if(null!=meta.getObjectBoundingBox()){
//
// list.add(new ObjectBoundingBox(meta.getObjectBoundingBox().getX() + roiarray[0].intValue(),
// meta.getObjectBoundingBox().getY() + roiarray[1].intValue(),
// meta.getObjectBoundingBox().getW(),
// meta.getObjectBoundingBox().getH()
// ));
// }
//
// } else if (null != metadata && "3".equals(metadata.get("Type"))) {
// Face meta = JSON.toJavaObject(metadata, Face.class);
// meta.setId(traffpictureParam.getId());
// faceService.insertFace(meta);
// if (null != meta.getFaceBoundingBox()) {
// traffpictureParam.setObjx(meta.getFaceBoundingBox().getX()+roiarray[0].intValue());
// traffpictureParam.setObjy(meta.getFaceBoundingBox().getY()+roiarray[1].intValue());
// traffpictureParam.setObjw(meta.getFaceBoundingBox().getW());
// traffpictureParam.setObjh(meta.getFaceBoundingBox().getH());
// }
// list.add(new ObjectBoundingBox(meta.getHeadBoundingBox().getX() + roiarray[0].intValue(),
// meta.getHeadBoundingBox().getY() + roiarray[1].intValue(),
// meta.getHeadBoundingBox().getW(),
// meta.getHeadBoundingBox().getH()
// ));
// }
//
// if(null!=meta.getFaceBoundingBox()) {
// list.add(new ObjectBoundingBox(meta.getFaceBoundingBox().getX() + roiarray[0].intValue(),
// meta.getFaceBoundingBox().getY() + roiarray[1].intValue(),
// meta.getFaceBoundingBox().getW(),
// meta.getFaceBoundingBox().getH()
// ));
// }
// if(null!=meta.getHeadBoundingBox()){
// if (null != meta.getUpperBoundingBox()) {
// list.add(new ObjectBoundingBox(meta.getUpperBoundingBox().getX() + roiarray[0].intValue(),
// meta.getUpperBoundingBox().getY() + roiarray[1].intValue(),
// meta.getUpperBoundingBox().getW(),
// meta.getUpperBoundingBox().getH()
// ));
// }
// if (null != meta.getLowerBoundingBox()) {
// list.add(new ObjectBoundingBox(meta.getLowerBoundingBox().getX() + roiarray[0].intValue(),
// meta.getLowerBoundingBox().getY() + roiarray[1].intValue(),
// meta.getLowerBoundingBox().getW(),
// meta.getLowerBoundingBox().getH()
// ));
// }
//
// list.add(new ObjectBoundingBox(meta.getHeadBoundingBox().getX() + roiarray[0].intValue(),
// meta.getHeadBoundingBox().getY() + roiarray[1].intValue(),
// meta.getHeadBoundingBox().getW(),
// meta.getHeadBoundingBox().getH()
// ));
// }
// //人骑车
// } else if (null != metadata && "4".equals(metadata.get("Type"))) {
// PeopleRideBicyc meta = JSON.toJavaObject(metadata, PeopleRideBicyc.class);
// meta.setId(traffpictureParam.getId());
// peopleridebicycService.insertPeopleRideBicyc(meta);
// if(null!=meta.getFaceBoundingBox()) {
// list.add(new ObjectBoundingBox(meta.getFaceBoundingBox().getX() + roiarray[0].intValue(),
// meta.getFaceBoundingBox().getY() + roiarray[1].intValue(),
// meta.getFaceBoundingBox().getW(),
// meta.getFaceBoundingBox().getH()
// ));
// }
// if(null!=meta.getObjectBoundingBox()){
// } else if (null != metadata && "2".equals(metadata.get("Type"))) {
// //车辆
// Traffic meta = new ObjectMapper().convertValue(metadata, Traffic.class);
// meta.setId(traffpictureParamresult.getId());
// //新增到车辆详情表
// trafficService.insertTraffic(meta);
// if (null != meta.getObjectBoundingBox()) {
//
// list.add(new ObjectBoundingBox(meta.getObjectBoundingBox().getX() + roiarray[0].intValue(),
// meta.getObjectBoundingBox().getY() + roiarray[1].intValue(),
// meta.getObjectBoundingBox().getW(),
// meta.getObjectBoundingBox().getH()
// ));
// }
// }
// //更新 traffpicture特征值
// try {
// ByteArrayInputStream bais = new ByteArrayInputStream(base64Decoder.decodeBuffer(traffpictureParam.getImagedata()));
// BufferedImage image = ImageIO.read(bais);
// Graphics g = image.getGraphics();
// g.setColor(Color.RED);
// for(ObjectBoundingBox box :list) {
// //if (null != box.getX() && null != traffpictureParam.getObjy() && null != traffpictureParam.getObjw() && null != traffpictureParam.getObjh())
// if(null!=box)
// g.drawRect(box.getX(),
// box.getY(),
// box.getW(),
// box.getH());
// }
// list.add(new ObjectBoundingBox(meta.getObjectBoundingBox().getX() + roiarray[0].intValue(),
// meta.getObjectBoundingBox().getY() + roiarray[1].intValue(),
// meta.getObjectBoundingBox().getW(),
// meta.getObjectBoundingBox().getH()
// ));
// }
// } else if (null != metadata && "3".equals(metadata.get("Type"))) {
// Face meta = new ObjectMapper().convertValue(metadata, Face.class);
// meta.setId(traffpictureParamresult.getId());
// faceService.insertFace(meta);
// if (null != meta.getFaceBoundingBox()) {
// traffpictureParam.setObjx(meta.getFaceBoundingBox().getX() + roiarray[0].intValue());
// traffpictureParam.setObjy(meta.getFaceBoundingBox().getY() + roiarray[1].intValue());
// traffpictureParam.setObjw(meta.getFaceBoundingBox().getW());
// traffpictureParam.setObjh(meta.getFaceBoundingBox().getH());
// }
//
// ByteArrayOutputStream stream = new ByteArrayOutputStream();
// ImageIO.write(image, "png", stream);
// //上传ftp
// Ftp ftp = ftpService.reloadFtp();
// String ftputl = FTPUtil.getFtpUrl(ftp) + basepath + "/" + traffpictureParam.getId() + "/imgdata.png";
// traffpictureParam.setImagedata(ftputl);
// FTPUtil.uploadFile(ftp, basepath + "/" + traffpictureParam.getId(), "imgdata.png", base64Encoder.encode(stream.toByteArray()));
// if (null != meta.getFaceBoundingBox()) {
// list.add(new ObjectBoundingBox(meta.getFaceBoundingBox().getX() + roiarray[0].intValue(),
// meta.getFaceBoundingBox().getY() + roiarray[1].intValue(),
// meta.getFaceBoundingBox().getW(),
// meta.getFaceBoundingBox().getH()
// ));
// }
// if (null != meta.getHeadBoundingBox()) {
//
// } catch (Exception ex) {
// logger.info("base64画框异常:" + ex.toString());
// }
// traffPictureService.updateTraffpicture(traffpictureParam);
// }
// list.add(new ObjectBoundingBox(meta.getHeadBoundingBox().getX() + roiarray[0].intValue(),
// meta.getHeadBoundingBox().getY() + roiarray[1].intValue(),
// meta.getHeadBoundingBox().getW(),
// meta.getHeadBoundingBox().getH()
// ));
// }
// //人骑车
// } else if (null != metadata && "4".equals(metadata.get("Type"))) {
// PeopleRideBicyc meta = new ObjectMapper().convertValue(metadata, PeopleRideBicyc.class);
// meta.setId(traffpictureParamresult.getId());
// peopleridebicycService.insertPeopleRideBicyc(meta);
// if (null != meta.getFaceBoundingBox()) {
// list.add(new ObjectBoundingBox(meta.getFaceBoundingBox().getX() + roiarray[0].intValue(),
// meta.getFaceBoundingBox().getY() + roiarray[1].intValue(),
// meta.getFaceBoundingBox().getW(),
// meta.getFaceBoundingBox().getH()
// ));
// }
// if (null != meta.getObjectBoundingBox()) {
//
// //推送告警
// WebSocket.GroupSending(JSONObject.toJSONString(traffpictureParam));
// }
// }
// } catch (Exception ex) {
// //推送失败
// transferRecord.setProcessstatus("-3");
// traffAlarmRecordService.updateTraffAlarmRecordProcess(transferRecord);
// list.add(new ObjectBoundingBox(meta.getObjectBoundingBox().getX() + roiarray[0].intValue(),
// meta.getObjectBoundingBox().getY() + roiarray[1].intValue(),
// meta.getObjectBoundingBox().getW(),
// meta.getObjectBoundingBox().getH()
// ));
// }
// }
// return ResultUtil.success();
// } else {
// logger.info("监控不属于该范围");
//
// }
// //更新record 表Progress 字段,0为 未检测,-2 为检测失败,将检测
// //结果进行额外封装入表
// logger.error("rtsp 不存在-->");
// return ResultUtil.fail();
// }
private void setTraffpictureParam(String recordtype, TraffAlarmRecord transferRecord, TraffpictureParam traffpictureParam) {
traffpictureParam.setAreaid(transferRecord.getAreaid());
traffpictureParam.setFdid(transferRecord.getFdid());
traffpictureParam.setRecordid(transferRecord.getRecordid());
traffpictureParam.setChannelid(transferRecord.getChannelid());
traffpictureParam.setCreatetime(transferRecord.getCreatetime());
//获得imgid 对应的 base64
// String imgftpurl = traffPictureService.queryimgpath(traffpictureParam);
// Ftp ftp = ftpService.reloadFtp();
// if (null != imgftpurl && !"".equals(imgftpurl)) {
// byte[] Img = FTPUtil.getFtpPicBytes(imgftpurl);
// if (null != Img) {
// traffpictureParam.setImagedata(base64Encoder.encode(Img));
// }
// }
traffpictureParam.setRecordtype(recordtype);
//新增到picture
int id = traffPictureService.inserTraffpicture(traffpictureParam);
}
}
......@@ -5,6 +5,8 @@ import com.cx.cn.cxquartz.service.quartz.QuartzService;
import com.cx.cn.cxquartz.service.quartz.TraffPictureService;
import com.cx.cn.cxquartz.util.Page;
import com.cx.cn.cxquartz.vo.GoalStructureParam;
import com.cx.cn.cxquartz.vo.JobParam;
import com.cx.cn.cxquartz.vo.TaskResultObj;
import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.slf4j.Logger;
......@@ -23,6 +25,7 @@ import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;
@Controller
public class IndexController {
......@@ -81,6 +84,15 @@ public class IndexController {
public String images(@RequestBody GoalStructureParam param) {
return "{\"ret\":\"200\",\"error_msg\":\"OK\",\"ObjectList\":[{\"ImageID\":\"1\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"Angle\":\"128\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"UpperBoundingBox\":{\"x\":34,\"y\":123,\"w\":232,\"h\":263},\"LowerBoundingBox\":{\"x\":74,\"y\":309,\"w\":176,\"h\":408},\"CoatLength\":\"2\",\"CoatTexture\":\"1\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"TrousersLength\":\"1\",\"TrousersTexture\":\"1\",\"TrousersColor\":[\"5\"],\"TrousersColorNums\":\"1\",\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasGlasses\":\"0\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"0\",\"HasUmbrella\":\"0\",\"HasTrolley\":\"-1\",\"HasLuggage\":\"-1\",\"LuggageColor\":[],\"LuggageColorNums\":\"0\",\"HasKnife\":\"-1\",\"ObjectBoundingBox\":{\"x\":26,\"y\":13,\"w\":256,\"h\":708},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"3\",\"ObjectID\":1,\"Metadata\":{\"Angle\":\"128\",\"VehicleClass\":\"1\",\"VehicleColor\":[\"9\"],\"VehicleColorNums\":\"1\",\"VehicleBrand\":\"\\u96ea\\u4f5b\\u5170-\\u79d1\\u9c81\\u5179-2009_2013\",\"VehicleMainBrandName\":\"\\u96ea\\u4f5b\\u5170\",\"VehicleSubBrandName\":\"\\u79d1\\u9c81\\u5179\",\"VehicleYearName\":\"2009_2013\",\"HasPlate\":\"1\",\"PlateClass\":\"1\",\"PlateColor\":\"2\",\"PlateNo\":\"\\u6d59AJ079B\",\"PlateNeatness\":\"2\",\"Sunvisor\":\"0\",\"Paper\":\"0\",\"Decoration\":\"0\",\"Drop\":\"1\",\"Tag\":\"1\",\"SafetyBelt\":{\"MainDriver\":\"-1\",\"CoDriver\":\"-1\"},\"HasCall\":\"-1\",\"HasSkylight\":\"0\",\"HasBaggage\":\"0\",\"HasAerial\":\"0\",\"HasCrash\":\"-1\",\"HasDanger\":\"0\",\"HighwayTollVehicles\":\"1\",\"ObjectBoundingBox\":{\"x\":41,\"y\":40,\"w\":894,\"h\":717},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"AAAAAAAAAAAAAAAPAAAAAAAKABQAAAAAAAAAAAAAAAAhAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAAAAAAEwELAAAAAAAAAAAAAAAAAAAAAAAFCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAABIAAAAAABMAAAEAAAAAAAAAAAAAAAAAABAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAHgAAAAAAAAAAAAAAAgAAAAAHAAATAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAcAAAAAB8AAAAAAAAAAAAAAAAAAAAAABoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAMDgAAAAAAAB0AAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAA=\",\"BucketID\":76,\"BucketIDList\":[76,91,82,57,36,51,75,55,71,43,84,63,8,98,83,65,90,60,35,3,37,39,74,2,12,9,1,20,79,32,95,49,33,58,42,66,38,69,45,56,59,0,87,19,41,34,21,14,13,6,4,26,68,96,72,7,85,29,48,40,88,99,23,46,27,18,77,78,11,97,17,50,15,61,16,31,80,44,52,25,10,86,92,5,54,53,73,89,94,93,70,62,30,47,64,22,28,67,81,24],\"FaceFeature\":\"\",\"FaceBucketID\":-1,\"FaceBucketIDList\":[],\"FaceQuality\":\"0.000000\",\"FaceYaw\":\"0.000000\",\"FacePitch\":\"0.000000\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.000000\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"4\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"16\",\"Angle\":\"128\",\"BikeClass\":\"1\",\"SocialAttribute\":\"1\",\"Enterprise\":\"-1\",\"FaceBoundingBox\":{\"x\":145,\"y\":65,\"w\":54,\"h\":66},\"CoatLength\":\"2\",\"CoatTexture\":\"5\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"HelmetColor\":\"-1\",\"HasHelmet\":\"0\",\"HasGlasses\":\"1\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"-1\",\"HasUmbrella\":\"0\",\"HasPlate\":\"-1\",\"PlateNo\":\"-1\",\"HasPassenger\":\"1\",\"ObjectBoundingBox\":{\"x\":54,\"y\":16,\"w\":276,\"h\":635},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA/wACAf/3AfwEA/kC/AMAAwAEAQACAPv+AAAB/wMHAgEA/wAGAAj/+AD7APwCAwkD9wsAAP4CBvn7/wz5A/wBBP8D/QICCAUCBv/7AgABAv7+AAH9AAUC/AX/AvsC/P4CAv39BAMA/gAAAAIA/wT6/v77A/YEAPoB//sG//7+/wD+/QAA/AMAAAQCAvz8/P3/AAH9+gX8/wD8/fr7AQAD//oA+AECAAAFAAH+/QH7/gIHAgYA/vz+AwADAgQCAgAL+wD9BgMGBv8E+/oF/P4H/wMD/gQC/wQH/v/4Agn9BQAC/wAE/P37BP/7AgIA/gj8APv7CAL9/vkABgL7/fz9/AD1BwD7AwAAAwH7AAb7+v4AAwX6/PsDBwMA/wH9AQD8AQP8APz7/vb8APoDAAT8AP0FAwYG/P39/P4B/vkA/f8AAgQBB/0D+wAFBwX4Aff+Bvz2/wEEBAIABQQD/wABAAMA//0AAP/+/wAC9/4AAfz+AAEF/f/6CAD9Bfn/APn9CwP3BAABBAAIAfr8/wP/CQn9BgL+Bf38A/z89gf6AAf9//wABAP9AgT19/4DAQMCAQQDAAABBf76+gEC/Pv9//4E//76AAAACQAA//kE//sDCfsGA/z7AAD7BAMAAAIAAgMA/P0D/wIE/v36//wAAgX8/voCAAT8BAkCAgEBAfwG+gEA/vr++AYAAQL7AAcAAP8BAAH9Af8A+QD+Agj7+wID/AAB+QcD//4ACQMEAvv+AvwBB/r7/gL/+AL7A/78+/4AAP39/QEFAwEA/QECCfz6AfwE/QMAAwD/Av4HAPz/AP4F/ggD+gMH+/UH+wID/wQGBPr2BP8KBAP/+/7//AP2/QT6//4CBAAFBgAFBf4E//v9BgADAAH9/gb4BAQHAAEA/QIB/vsE+/8GAPb7Av79AAD4AP4B+wf+/P4ABf79/wD/+QQA+fkB/voAA/oDAQUDAP79BAkGAAn/AQMB//76APz8BQD9AgEB/Pf6/wcAAwcHAgEA/QH/AP/6A/75BP8E/QD+AgT+AwEF+PkC//37/f79/gAAAQUA+AEEAAX9/wL8AgAFAwAA+v8G+wQA/QEF/wD+BAAGAwABAf0JAgMD+wUGAf39APoA/gQHAAID/AAF//8GA//8/QUC/gEC/vwGAv0BAAD9/ggCAAYBAwL/AQD9/fYD/wIE/f/4BP4AAAD8+wH5Bwb7AAQF+v/0//j9+/v/AP4CAgAA/v4AAP7+Bfv/CwECAQD7CgH5AQEAAQQAAP76APkABQIBBv0JAwABBwD++wD+//35+QPy/v0FAAYC+QD9Avr5CgQIA/35/AADAQH6+AEIAwEEAAMA/AMD+wADAAP///kFBAEBAA==\",\"BucketID\":5,\"BucketIDList\":[5,3,83,30,43,82,55,80,46,51,61,79,97,67,21,91,88,90,99,12,23,0,1,36,47,54,37,27,14,50,16,8,53,25,52,29,18,60,38,98,62,4,15,2,20,22,17,96,65,44,75,59,93,66,31,10,45,48,13,7,57,76,72,77,56,94,81,87,95,6,92,69,74,39,35,26,34,71,41,85,64,49,24,42,73,78,58,63,89,11,86,68,32,28,19,9,40,33,70,84],\"FaceFeature\":\"BQD5+Af/BP4I/AD7AP/9AAcC/QT6/P4HAfr9B/sIBf8O/AD8BwYKCA0AAv77/gAE+gAL/wMA/QD9AAAG/vv8AAP7BvwBAAn4AAf/AQAOAP8A7wIBAv8EAwAFAf/5CPoABQEDBwEFBQb5/fb+AO4G+AAB/wML9PsAA/oHBwYF/Pz7/gUK9QUABgEE+wH8AgL6+gb3AwEAAxL7CwD/DPcFAf30AAPz/QAE/QAABvn9AwD2/wQCAwACAQAKBAUD/v0A/voE//0B+Ab//vkC+vj/AAH7+AL7A/sDAPj7Bvn+/QoGAwEA/v//AP4D+wQDAf8K/QP2BgD5/QD//gEKA/v+BwAAAf3xAf/+/gT9AwP8DADzBw4AAvn//wAE+QH5AQv3C+38/Pf9/QII8gID9wMFCggFAv/9AvsEBvkACP8G9/z9AP/7/fwE+v39DPgAAAAB/fr5A/n8/wIDAAQK/wH+AwAAAvwADQoKAgAFAfsF+vsE//35C/3zCAD9BPsB/wMGB/n5/Pv0+Pb+BPn5/wMKAQAB8fT9Awf++/YAAAICAwUG+wD0+fkBB/0AAAQIBfgEBPkG/wcJAgD7CAv1Avf9AQYAAAEDAPYC+foJ+/78APwD8f4A/gUBB/7///oLAwD/AAUD+/39+PsH+QIF9gMEA/oGAQsMBQkHA/wB+PwCAgA=\",\"FaceBucketID\":82,\"FaceBucketIDList\":[82,45,63,31,16,1,7,98,40,24,65,19,62,48,94,72,92,17,91,52,77,76,85,87,81,21,93,64,37,42,30,78,25,61,9,12,22,2,13,34,4,15,46,3,14,99,90,28,66,29,75,68,80,59,60,88,69,83,36,55,11,44,96,89,10,26,49,50,73,6,53,20,47,86,58,84,27,8,70,43,57,71,97,79,0,67,54,33,23,95,56,5,41,38,51,32,74,39,35,18],\"FaceQuality\":\"0.365118\",\"FaceYaw\":\"0.257412\",\"FacePitch\":\"0.390233\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.475882\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"2\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasMask\":\"1\",\"HasGlasses\":\"0\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1}]}";}
@GetMapping("/images1/recog")
@ResponseBody
//http://zlsh.ncpoi.cc:7080/getDeviceSnapshotAndRecognize?deviceCode=33050300001327599605&model=7&roi=[10,10,10,10]
public String getimages(@RequestParam("deviceCode") String deviceCode,
@RequestParam("model") String model,
@RequestParam("roi") Long[] roi) {
return "{\"ret\":\"200\",\"error_msg\":\"OK\",\"ObjectList\":[{\"ImageID\":\"1\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"Angle\":\"128\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"UpperBoundingBox\":{\"x\":34,\"y\":123,\"w\":232,\"h\":263},\"LowerBoundingBox\":{\"x\":74,\"y\":309,\"w\":176,\"h\":408},\"CoatLength\":\"2\",\"CoatTexture\":\"1\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"TrousersLength\":\"1\",\"TrousersTexture\":\"1\",\"TrousersColor\":[\"5\"],\"TrousersColorNums\":\"1\",\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasGlasses\":\"0\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"0\",\"HasUmbrella\":\"0\",\"HasTrolley\":\"-1\",\"HasLuggage\":\"-1\",\"LuggageColor\":[],\"LuggageColorNums\":\"0\",\"HasKnife\":\"-1\",\"ObjectBoundingBox\":{\"x\":26,\"y\":13,\"w\":256,\"h\":708},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"3\",\"ObjectID\":1,\"Metadata\":{\"Angle\":\"128\",\"VehicleClass\":\"1\",\"VehicleColor\":[\"9\"],\"VehicleColorNums\":\"1\",\"VehicleBrand\":\"\\u96ea\\u4f5b\\u5170-\\u79d1\\u9c81\\u5179-2009_2013\",\"VehicleMainBrandName\":\"\\u96ea\\u4f5b\\u5170\",\"VehicleSubBrandName\":\"\\u79d1\\u9c81\\u5179\",\"VehicleYearName\":\"2009_2013\",\"HasPlate\":\"1\",\"PlateClass\":\"1\",\"PlateColor\":\"2\",\"PlateNo\":\"\\u6d59AJ079B\",\"PlateNeatness\":\"2\",\"Sunvisor\":\"0\",\"Paper\":\"0\",\"Decoration\":\"0\",\"Drop\":\"1\",\"Tag\":\"1\",\"SafetyBelt\":{\"MainDriver\":\"-1\",\"CoDriver\":\"-1\"},\"HasCall\":\"-1\",\"HasSkylight\":\"0\",\"HasBaggage\":\"0\",\"HasAerial\":\"0\",\"HasCrash\":\"-1\",\"HasDanger\":\"0\",\"HighwayTollVehicles\":\"1\",\"ObjectBoundingBox\":{\"x\":41,\"y\":40,\"w\":894,\"h\":717},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"AAAAAAAAAAAAAAAPAAAAAAAKABQAAAAAAAAAAAAAAAAhAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAAAAAAEwELAAAAAAAAAAAAAAAAAAAAAAAFCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAABIAAAAAABMAAAEAAAAAAAAAAAAAAAAAABAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAHgAAAAAAAAAAAAAAAgAAAAAHAAATAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAcAAAAAB8AAAAAAAAAAAAAAAAAAAAAABoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAMDgAAAAAAAB0AAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAA=\",\"BucketID\":76,\"BucketIDList\":[76,91,82,57,36,51,75,55,71,43,84,63,8,98,83,65,90,60,35,3,37,39,74,2,12,9,1,20,79,32,95,49,33,58,42,66,38,69,45,56,59,0,87,19,41,34,21,14,13,6,4,26,68,96,72,7,85,29,48,40,88,99,23,46,27,18,77,78,11,97,17,50,15,61,16,31,80,44,52,25,10,86,92,5,54,53,73,89,94,93,70,62,30,47,64,22,28,67,81,24],\"FaceFeature\":\"\",\"FaceBucketID\":-1,\"FaceBucketIDList\":[],\"FaceQuality\":\"0.000000\",\"FaceYaw\":\"0.000000\",\"FacePitch\":\"0.000000\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.000000\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"4\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"16\",\"Angle\":\"128\",\"BikeClass\":\"1\",\"SocialAttribute\":\"1\",\"Enterprise\":\"-1\",\"FaceBoundingBox\":{\"x\":145,\"y\":65,\"w\":54,\"h\":66},\"CoatLength\":\"2\",\"CoatTexture\":\"5\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"HelmetColor\":\"-1\",\"HasHelmet\":\"0\",\"HasGlasses\":\"1\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"-1\",\"HasUmbrella\":\"0\",\"HasPlate\":\"-1\",\"PlateNo\":\"-1\",\"HasPassenger\":\"1\",\"ObjectBoundingBox\":{\"x\":54,\"y\":16,\"w\":276,\"h\":635},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA/wACAf/3AfwEA/kC/AMAAwAEAQACAPv+AAAB/wMHAgEA/wAGAAj/+AD7APwCAwkD9wsAAP4CBvn7/wz5A/wBBP8D/QICCAUCBv/7AgABAv7+AAH9AAUC/AX/AvsC/P4CAv39BAMA/gAAAAIA/wT6/v77A/YEAPoB//sG//7+/wD+/QAA/AMAAAQCAvz8/P3/AAH9+gX8/wD8/fr7AQAD//oA+AECAAAFAAH+/QH7/gIHAgYA/vz+AwADAgQCAgAL+wD9BgMGBv8E+/oF/P4H/wMD/gQC/wQH/v/4Agn9BQAC/wAE/P37BP/7AgIA/gj8APv7CAL9/vkABgL7/fz9/AD1BwD7AwAAAwH7AAb7+v4AAwX6/PsDBwMA/wH9AQD8AQP8APz7/vb8APoDAAT8AP0FAwYG/P39/P4B/vkA/f8AAgQBB/0D+wAFBwX4Aff+Bvz2/wEEBAIABQQD/wABAAMA//0AAP/+/wAC9/4AAfz+AAEF/f/6CAD9Bfn/APn9CwP3BAABBAAIAfr8/wP/CQn9BgL+Bf38A/z89gf6AAf9//wABAP9AgT19/4DAQMCAQQDAAABBf76+gEC/Pv9//4E//76AAAACQAA//kE//sDCfsGA/z7AAD7BAMAAAIAAgMA/P0D/wIE/v36//wAAgX8/voCAAT8BAkCAgEBAfwG+gEA/vr++AYAAQL7AAcAAP8BAAH9Af8A+QD+Agj7+wID/AAB+QcD//4ACQMEAvv+AvwBB/r7/gL/+AL7A/78+/4AAP39/QEFAwEA/QECCfz6AfwE/QMAAwD/Av4HAPz/AP4F/ggD+gMH+/UH+wID/wQGBPr2BP8KBAP/+/7//AP2/QT6//4CBAAFBgAFBf4E//v9BgADAAH9/gb4BAQHAAEA/QIB/vsE+/8GAPb7Av79AAD4AP4B+wf+/P4ABf79/wD/+QQA+fkB/voAA/oDAQUDAP79BAkGAAn/AQMB//76APz8BQD9AgEB/Pf6/wcAAwcHAgEA/QH/AP/6A/75BP8E/QD+AgT+AwEF+PkC//37/f79/gAAAQUA+AEEAAX9/wL8AgAFAwAA+v8G+wQA/QEF/wD+BAAGAwABAf0JAgMD+wUGAf39APoA/gQHAAID/AAF//8GA//8/QUC/gEC/vwGAv0BAAD9/ggCAAYBAwL/AQD9/fYD/wIE/f/4BP4AAAD8+wH5Bwb7AAQF+v/0//j9+/v/AP4CAgAA/v4AAP7+Bfv/CwECAQD7CgH5AQEAAQQAAP76APkABQIBBv0JAwABBwD++wD+//35+QPy/v0FAAYC+QD9Avr5CgQIA/35/AADAQH6+AEIAwEEAAMA/AMD+wADAAP///kFBAEBAA==\",\"BucketID\":5,\"BucketIDList\":[5,3,83,30,43,82,55,80,46,51,61,79,97,67,21,91,88,90,99,12,23,0,1,36,47,54,37,27,14,50,16,8,53,25,52,29,18,60,38,98,62,4,15,2,20,22,17,96,65,44,75,59,93,66,31,10,45,48,13,7,57,76,72,77,56,94,81,87,95,6,92,69,74,39,35,26,34,71,41,85,64,49,24,42,73,78,58,63,89,11,86,68,32,28,19,9,40,33,70,84],\"FaceFeature\":\"BQD5+Af/BP4I/AD7AP/9AAcC/QT6/P4HAfr9B/sIBf8O/AD8BwYKCA0AAv77/gAE+gAL/wMA/QD9AAAG/vv8AAP7BvwBAAn4AAf/AQAOAP8A7wIBAv8EAwAFAf/5CPoABQEDBwEFBQb5/fb+AO4G+AAB/wML9PsAA/oHBwYF/Pz7/gUK9QUABgEE+wH8AgL6+gb3AwEAAxL7CwD/DPcFAf30AAPz/QAE/QAABvn9AwD2/wQCAwACAQAKBAUD/v0A/voE//0B+Ab//vkC+vj/AAH7+AL7A/sDAPj7Bvn+/QoGAwEA/v//AP4D+wQDAf8K/QP2BgD5/QD//gEKA/v+BwAAAf3xAf/+/gT9AwP8DADzBw4AAvn//wAE+QH5AQv3C+38/Pf9/QII8gID9wMFCggFAv/9AvsEBvkACP8G9/z9AP/7/fwE+v39DPgAAAAB/fr5A/n8/wIDAAQK/wH+AwAAAvwADQoKAgAFAfsF+vsE//35C/3zCAD9BPsB/wMGB/n5/Pv0+Pb+BPn5/wMKAQAB8fT9Awf++/YAAAICAwUG+wD0+fkBB/0AAAQIBfgEBPkG/wcJAgD7CAv1Avf9AQYAAAEDAPYC+foJ+/78APwD8f4A/gUBB/7///oLAwD/AAUD+/39+PsH+QIF9gMEA/oGAQsMBQkHA/wB+PwCAgA=\",\"FaceBucketID\":82,\"FaceBucketIDList\":[82,45,63,31,16,1,7,98,40,24,65,19,62,48,94,72,92,17,91,52,77,76,85,87,81,21,93,64,37,42,30,78,25,61,9,12,22,2,13,34,4,15,46,3,14,99,90,28,66,29,75,68,80,59,60,88,69,83,36,55,11,44,96,89,10,26,49,50,73,6,53,20,47,86,58,84,27,8,70,43,57,71,97,79,0,67,54,33,23,95,56,5,41,38,51,32,74,39,35,18],\"FaceQuality\":\"0.365118\",\"FaceYaw\":\"0.257412\",\"FacePitch\":\"0.390233\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.475882\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"2\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasMask\":\"1\",\"HasGlasses\":\"0\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1}]}";}
/***
* 旧版本透露账号密码舍弃掉
* @param ftpPath
......
......@@ -7,12 +7,8 @@ import com.cx.cn.cxquartz.bean.QuartzTaskInformations;
import com.cx.cn.cxquartz.service.quartz.FtpService;
import com.cx.cn.cxquartz.service.quartz.QuartzService;
import com.cx.cn.cxquartz.service.quartz.SbtdspsrService;
import com.cx.cn.cxquartz.util.FTPUtil;
import com.cx.cn.cxquartz.util.FileTransferManager;
import com.cx.cn.cxquartz.util.ResultEnum;
import com.cx.cn.cxquartz.util.ResultUtil;
import com.cx.cn.cxquartz.vo.Ftp;
import com.cx.cn.cxquartz.vo.QuartzTaskRecordsVo;
import com.cx.cn.cxquartz.util.*;
import com.cx.cn.cxquartz.vo.*;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -30,7 +26,7 @@ import java.util.List;
import java.util.Map;
@Controller
@RequestMapping("/quartz")
@RequestMapping("/ai")
public class QuartzController {
private static final Logger logger = LoggerFactory.getLogger(QuartzController.class);
......@@ -76,6 +72,91 @@ public class QuartzController {
}
}
@PostMapping("/task")
@ResponseBody
public TaskResultObj scheduleJob(@RequestBody JobParam jobParam) {
String taskno="fx_" + jobParam.getDeviceId() + "_" + jobParam.getDetectType();
QuartzTaskInformations taskInformations = new QuartzTaskInformations();
taskInformations.setExecuteparamter(jobParam.getDeviceId());
taskInformations.setMetatype(jobParam.getDetectType());
//查询是否有抽帧服务
// List<QuartzTaskInformations> tasks = quartzService.getTaskSByDeviceCode(jobParam.getDeviceId());
// Map<String, Integer> map = getTaskCzAndFxNumer(tasks);
//Integer cznum = map.get("cznum");
//Integer fxnum = map.get("fxnum");
Long[] roiarray=new Long[4];
if ("0".equals(jobParam.getType())) {//0新增 1开启 2停止 3删除
//判断是否存在抽帧任务,存在则直接新增分析任务,不存在则新增
taskInformations.setFrozenstatus("UNFROZEN");
taskInformations.setSchedulerrule("*/" + jobParam.getParams().get("schedulerRule").toString() + " * * * * ?");
List<Point> listpoint=jobParam.getArea();
PointUtil.getXYWH(listpoint,roiarray);
taskInformations.setObjectx(roiarray[0]);
taskInformations.setObjecty(roiarray[1]);
taskInformations.setObjectw(roiarray[2]);
taskInformations.setObjecth(roiarray[3]);
taskInformations.setMetatype( jobParam.getParams().get("thresholdValue").toString());
taskInformations.setUrl(jobParam.getCallBackUrl());
taskInformations.setExecutorno(taskno);
taskInformations.setTaskno(taskInformations.getExecutorno());
taskInformations.setTaskname(jobParam.getName());
taskInformations.setVideoid(jobParam.getDeviceId() );
taskInformations.setRecordtype(jobParam.getDetectType());
String result = quartzService.addTask(taskInformations);
//查询是否有抽帧服务
//if (cznum == 0) {
// taskInformations.setExecutorno("cz_" + jobParam.getDeviceId() + "_" + jobParam.getDetectType());
// taskInformations.setTaskno(taskInformations.getExecutorno());
// quartzService.addTask(taskInformations);
// }
} else if ("1".equals(jobParam.getType()))//开启
{
try {
quartzService.startOrStopJob(taskno,"UNFROZEN");
} catch (Exception ex) {
}
} else if ("2".equals(jobParam.getType()) ) {//停止
//一抽帧多分析,停止不停抽帧服务
try {
quartzService.startOrStopJob(taskno, "FROZEN");
} catch (Exception ex) {
}
} else if ("3".equals(jobParam.getType())) {//删除
//一抽帧多分析,停止不停抽帧服务
try {
quartzService.startOrStopJob(taskno, "FROZEN");
quartzService.deletetask(taskno);
} catch (Exception ex) {
}
//quartzService.("fx_" + jobParam.getDeviceId() + "_" + jobParam.getDetectType(), fxnum);
}
return TaskResultObj.ok();
}
public Map getTaskCzAndFxNumer(List<QuartzTaskInformations> tasks) {
Map<String, Integer> map = new HashMap();
int cznum = 0, fxnum = 0;
if (tasks.size() > 0) {
//一抽多分析
for (QuartzTaskInformations item : tasks) {
if (item.getTaskno().contains("cz")) {
cznum++;
} else if (item.getTaskno().contains("fx")) {
fxnum++;
}
}
}
map.put("cznum", cznum);
map.put("fxnum", fxnum);
return map;
}
@RequestMapping(value = "/edit/taskpage", method = RequestMethod.GET)
public String editTaskpage(Model model, String id) {
QuartzTaskInformations taskInformation = quartzService.getTaskById(id);
......@@ -90,12 +171,12 @@ public class QuartzController {
try {
taskInformations.setSchedulerrule("*/" + taskInformations.getSchedulerrule() + " * * * * ?");
String result = quartzService.updateTask(taskInformations);
if(null!=taskInformations.getExecuteparamter() && !taskInformations.getExecuteparamter().contains("rtsp:")) {
if (null != taskInformations.getExecuteparamter() && !taskInformations.getExecuteparamter().contains("rtsp:")) {
int upresult = sbtdspsrService.updateRecogByRtsp(taskInformations.getRtsp(), taskInformations.getVideoid());
if (upresult > 0) {
logger.info("更新sbtddspsr squrllj 的值为:" + taskInformations.getExecuteparamter());
}
if (upresult > 0) {
logger.info("更新sbtddspsr squrllj 的值为:" + taskInformations.getExecuteparamter());
}
}
return result;
} catch (Exception e) {
......@@ -219,17 +300,17 @@ public class QuartzController {
ResponseEntity<String> result = restTemplate.exchange(rtspurl + "?url={rtspvalue}&refresh={refresh}",
HttpMethod.GET, null, String.class, maps);
JSONObject jsonresult = JSONObject.parseObject(result.getBody());
logger.info("getRtsp:{}",jsonresult);
logger.info("getRtsp:{}", jsonresult);
if (null != jsonresult.getString("ret") && jsonresult.getString("ret").equals("0") && !"".equals(jsonresult.getString("url"))) {
//获得图片地址,存放到ftp上面
//将图片存储到ftp 上去,jsonresult.getString("url")
Ftp ftp = ftpService.reloadFtp();
String ftpfilepath=FileTransferManager.urlTransToFtp(jsonresult.getString("url"),ftp,"gstraff/picturedemo/");
logger.info("ftppath"+ftpfilepath);
ftpfilepath=ftpfilepath.replace("ftp://"+ftppath+"/","");
String ftpfilepath = FileTransferManager.urlTransToFtp(jsonresult.getString("url"), ftp, "gstraff/picturedemo/");
logger.info("ftppath" + ftpfilepath);
ftpfilepath = ftpfilepath.replace("ftp://" + ftppath + "/", "");
// return ResultUtil.success(ResultEnum.SUCCESS.getCode(), jsonresult.getString("url")+ "," + rtspValue);
return ResultUtil.success(ResultEnum.SUCCESS.getCode(), ftpfilepath+ "," + rtspValue);
return ResultUtil.success(ResultEnum.SUCCESS.getCode(), ftpfilepath + "," + rtspValue);
}
return ResultUtil.fail();
} catch (Exception ex) {
......
......@@ -43,4 +43,7 @@ public interface QuartzTaskInformationsMapper {
List<Sbtdspsr> selectByRtsp(String rtsp);
Integer UpdateExecuteParam(Map map);
List<QuartzTaskInformations> getTaskSByDeviceCode(String devicecode);
Integer deletetask(String tasKno);
}
package com.cx.cn.cxquartz.dao;
import com.cx.cn.cxquartz.bean.QuartzTaskInformations;
import com.cx.cn.cxquartz.vo.Sbtdspsr;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -12,6 +13,6 @@ import java.util.Map;
public interface SbtdspsrMapper {
List<Sbtdspsr> selectByRtsp( String rtsp);
List<Sbtdspsr> list( );
List<Map> selectRecogByRtsp(String rtsp);
List<QuartzTaskInformations> selectRecogByRtsp(String rtsp);
int updateRecogByRtsp(Map map);
}
......@@ -12,6 +12,7 @@ import org.apache.commons.lang.StringUtils;
import org.quartz.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import java.util.concurrent.atomic.AtomicInteger;
......@@ -22,6 +23,11 @@ public class QuartzMainJobFactory implements Job {
private AtomicInteger atomicInteger;
@Value("${local.czurl}")
private String czurl;
@Value("${local.fxurl}")
private String fxurl;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
atomicInteger = new AtomicInteger(0);
......@@ -43,9 +49,9 @@ public class QuartzMainJobFactory implements Job {
return;
}
if (ResultEnum.HTTP.getMessage().equals(sendType)) {
//if (ResultEnum.HTTP.getMessage().equals(sendType)) {
try {
String result = HttpClientUtil.doPost(url, "text/json", executeParameter);
String result = HttpClientUtil.doPost(taskNo.contains("cz_") ? czurl : fxurl, "text/json", executeParameter);
logger.info("taskNo={},sendtype={}执行结果result{}", taskNo, sendType, result);
if (StringUtils.isEmpty(result)) {
throw new RuntimeException("taskNo=" + taskNo + "http方式返回null");
......@@ -54,16 +60,16 @@ public class QuartzMainJobFactory implements Job {
logger.error("");
throw ex;
}
} else if (ResultEnum.KAFKA.getMessage().equals(sendType)) {
try {
String message = new StringBuffer(taskNo).append(":").append(id).append(":").append(executeParameter).toString();
quartzService.sendMessage(message);
logger.info("taskNo={},sendtype={}推送至kafka成功", taskNo, sendType);
} catch (Exception ex) {
logger.error("");
throw ex;
}
}
// } else if (ResultEnum.KAFKA.getMessage().equals(sendType)) {
// try {
// String message = new StringBuffer(taskNo).append(":").append(id).append(":").append(executeParameter).toString();
// quartzService.sendMessage(message);
// logger.info("taskNo={},sendtype={}推送至kafka成功", taskNo, sendType);
// } catch (Exception ex) {
// logger.error("");
// throw ex;
// }
// }
} catch (Exception ex) {
logger.error("");
atomicInteger.incrementAndGet();
......
......@@ -21,6 +21,7 @@ public interface QuartzService {
String startJob(String taskNo) throws SchedulerException;
String startOrStopJob(String taskNo,String status) throws SchedulerException;
void initLoadOnlineTasks();
......@@ -48,4 +49,7 @@ public interface QuartzService {
List< PatrolCtrlRecord> queryCameraCode(List<String> ids);
List<QuartzTaskInformations> getTaskSByDeviceCode(String devicecode);
Integer deletetask(String taskno);
}
......@@ -35,4 +35,9 @@ public interface QuartzTaskInformationsService {
List<PictureTime> findLastPicTime();
List< PatrolCtrlRecord> queryCameraCode(List<String> ids);
List<QuartzTaskInformations> getTaskSByDeviceCode(String devicecode);
Integer deletetask(String taskno);
}
package com.cx.cn.cxquartz.service.quartz;
import com.cx.cn.cxquartz.bean.QuartzTaskInformations;
import com.cx.cn.cxquartz.vo.Sbtdspsr;
import java.util.List;
......@@ -7,7 +8,7 @@ import java.util.Map;
public interface SbtdspsrService {
List<Sbtdspsr> selectByRtsp(String videoid);
List<Map> selectRecogByRtsp(String rtsp);
List<QuartzTaskInformations> selectRecogByRtsp(String rtsp);
int updateRecogByRtsp(String rtsp,String devicecode);
List<Sbtdspsr> list();
}
package com.cx.cn.cxquartz.service.quartz.impl;
import com.cx.cn.cxquartz.dao.TraffPictureMapper;
import com.cx.cn.cxquartz.util.DateUtils;
import com.cx.cn.cxquartz.util.ThreadPoolUtil;
import com.cx.cn.cxquartz.vo.ResponseEnum;
import com.cx.cn.cxquartz.vo.ResultObj;
import com.cx.cn.cxquartz.vo.TraffpictureParam;
import com.cx.cn.cxquartz.vo.TraffrecordData;
import com.cx.cn.cxquartz.service.quartz.FtpService;
import com.cx.cn.cxquartz.service.quartz.TraffPictureService;
import com.cx.cn.cxquartz.util.*;
import com.cx.cn.cxquartz.vo.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.quartz.JobKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.FileSystemResource;
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.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import sun.misc.BASE64Encoder;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
/**
......@@ -36,44 +45,65 @@ public class EventWriteService {
@Autowired
private RestTemplate restTemplate;
@Autowired
private TraffPictureMapper traffPictureMapper;
private TraffPictureMapper traffPictureMapper;
@Value("${eventwrite.url}")
@Value("${countryside.eventwrite.url}")
private String url;
@Value("${eventwrite.timeout}")
@Value("${voice.url}")
private String voiceurl;
@Value("${countryside.eventwrite.timeout}")
private Integer timeout;
@Value("${eventwrite.token}")
@Value("${countryside.eventwrite.token}")
private String qztoken;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
TraffPictureService traffPictureService;
@Autowired
TokenCacheService tokensertvice;
@Autowired
FtpService ftpService;
@Value("${local.czurl}")
private String czurl;
@Value("${local.fxurl}")
private String fxurl;
@Value("${file.rootpath}")
private String filerootpath;
@Value("${file.outpath}")
private String outpath;
private static CompletionService<ResultObj> completionService = new ExecutorCompletionService<ResultObj>(ThreadPoolUtil.getPool());
@Value("${file.uploadurl}")
private String uploadurl;
public void sendEvent(TraffpictureParam traffpictureParamresult,TraffrecordData sendtozhiui) {
private static CompletionService<Boolean> completionService = new ExecutorCompletionService<Boolean>(ThreadPoolUtil.getPool());
public void sendEvent(TraffpictureParam traffpictureParamresult, TraffrecordData sendtozhiui) {
sendtozhiui.setAlarmnum(traffpictureParamresult.getTargetnum());
sendtozhiui.setFdid(traffpictureParamresult.getFdid());
sendtozhiui.setRecordtype(traffpictureParamresult.getRecordtype());
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sendtozhiui.setRecordtime( traffpictureParamresult.getCreatetime()==null?"": format.format(traffpictureParamresult.getCreatetime()));
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sendtozhiui.setRecordtime(traffpictureParamresult.getCreatetime() == null ? "" : format.format(traffpictureParamresult.getCreatetime()));
ResultObj resultObj;
try {
resultObj = sendMessage(sendtozhiui);
// boolean successFlag = resultObj.getCode() == ResponseEnum.SUCCESS.getCode();
traffpictureParamresult.setPushdesc(resultObj.getMsg());
/* 成功 */
if ("0".equals(resultObj.getCode())) {
traffpictureParamresult.setPushstatus(0);
traffpictureParamresult.setPushdesc("推送成功");
traffPictureMapper.updateTraffpicturePushStatus(traffpictureParamresult);
return ;
return;
}
/* 其他失败 */
......@@ -90,18 +120,345 @@ public class EventWriteService {
traffPictureMapper.updateTraffpicturePushStatus(traffpictureParamresult);
}
public void sendVoice(VoiceData voice) {
VoiceResultObj result;
try {
result = sendVoioceMessage(voice);
/* 成功 */
if (result.getCode() == 1) {
log.info(" push to voice success");
} else {
log.info(" push to voice result", new ObjectMapper().writeValueAsString(result));
}
} catch (TimeoutException e) {
log.error("push to voice 请求超时:" + e.toString());
} catch (Exception e) {
log.error("push to voice 异常:" + e.toString());
}
}
private ResultObj sendMessage(TraffrecordData traffalarmrecord) throws InterruptedException, ExecutionException, TimeoutException {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
String token = stringRedisTemplate.opsForValue().get(qztoken);
if(null==token ){
token=tokensertvice.keepAlive();
if (null == token) {
token = tokensertvice.keepAlive();
}
headers.add("accessToken", token);
HttpEntity<TraffrecordData> requestEntity = new HttpEntity<>(traffalarmrecord, headers);
return CompletableFuture.supplyAsync(() -> restTemplate.postForObject(url, requestEntity, ResultObj.class)).get(timeout, TimeUnit.SECONDS);
}
private ResultObj sendToCalluri(JobTjParam jobTjParam,String callbackurl) throws InterruptedException, ExecutionException, TimeoutException {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
HttpEntity<JobTjParam> requestEntity = new HttpEntity<>(jobTjParam, headers);
return CompletableFuture.supplyAsync(() -> restTemplate.postForObject(callbackurl, requestEntity, ResultObj.class)).get(timeout, TimeUnit.SECONDS);
}
public void sendEventByCallUrl(TraffpictureParam traffpictureParamresult, JobTjParam jobTjParam, String callbackurl) {
ResultObj resultObj;
try {
resultObj= sendToCalluri(jobTjParam,callbackurl);
// boolean successFlag = resultObj.getCode() == ResponseEnum.SUCCESS.getCode();
traffpictureParamresult.setPushdesc(resultObj.getMsg());
/* 成功 */
if ("0".equals(resultObj.getCode())) {
traffpictureParamresult.setPushstatus(0);
traffpictureParamresult.setPushdesc("推送第三方成功");
traffPictureMapper.updateTraffpicturePushStatus(traffpictureParamresult);
return;
}
/* 其他失败 */
} catch (Exception e) {
traffpictureParamresult.setPushdesc("推送第三方成功失败");
log.error("eventwrite - sendEventByCallUrl 异常:" + e.toString());
//return ResultObj.error(ResponseEnum.E_9999.getCode(), e.toString());
}
traffpictureParamresult.setPushstatus(-1);
traffPictureMapper.updateTraffpicturePushStatus(traffpictureParamresult);
}
private VoiceResultObj sendVoioceMessage(VoiceData voiceData) throws InterruptedException, ExecutionException, TimeoutException {
HttpHeaders headers = new HttpHeaders();
HttpEntity<VoiceData> requestEntity = new HttpEntity<>(voiceData, headers);
return CompletableFuture.supplyAsync(() -> restTemplate.postForObject(voiceurl, requestEntity, VoiceResultObj.class)).get(timeout, TimeUnit.SECONDS);
}
public String sendToService(JobKey jobKey, String jsondata) {
try {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
HttpEntity<String> requestEntity = new HttpEntity<>(jsondata, headers);
return CompletableFuture.supplyAsync(() -> restTemplate.postForObject(jobKey.getName().contains("cz_") ? czurl : fxurl, requestEntity, String.class)).get(timeout, TimeUnit.SECONDS);
} catch (Exception ex) {
log.info("getRtspJob->executeInternal error:{}", ex.toString());
return null;
}
}
public TraffpictureParam getResult(int tarnum, Long[] roiarray, String imgurl,
List<Map> objectList,
JobTjParam jobTjParam, List<Map> detectObjects) {
Map obj = new HashMap();
String recordtype = jobTjParam.getDetectType();
//判断是否统计结构化数据
TraffpictureParam traffpictureParamresult = new TraffpictureParam();
traffpictureParamresult.setImagedata(imgurl);
//人群统计
if ("10".equals(recordtype)) {
int larmnum = getManNumber(objectList);
//获得所有对象的坐标
if (tarnum < larmnum) {
traffpictureParamresult.setTargetnum(larmnum);
obj.put("objectCount", larmnum);
} else {
return null;
}
}
//获得所有对象的坐标
for (Map traffpictureParam : objectList) {
//根据imageid 获得 base64图片
Map metadata = (Map) traffpictureParam.get("Metadata");
String metatype = String.valueOf(metadata.get("Type"));
//获得点位坐标
Map objlocation = new HashMap();
getObjectPoint(objlocation, metadata, roiarray,traffpictureParamresult);
//获得特征属性
getDetectInfo(recordtype, metadata, objlocation);
//根据对应的解析结果获得相应的数据,存放到对应的表中
List<Location> list = new ArrayList<>();
//getMetaData( roiarray, traffpictureParamresult,list,traffpictureParam,metadata);
detectObjects.add(objlocation);
}
//获得其他告警事件的返回结果
//超过则预警
obj.put("detectObjects", detectObjects);
jobTjParam.setDetectInfo(obj);
jobTjParam.setTimestamp(new Date().getTime());
return traffpictureParamresult;
}
public void setTraffpictureParam(String recordtype, String sbbh, String createtime,
TraffpictureParam traffpictureParam) {
traffpictureParam.setAreaid(Long.parseLong("-1"));
traffpictureParam.setFdid(sbbh);
//traffpictureParam.setRecordid(transferRecord.getRecordid());
traffpictureParam.setChannelid(0);
if (createtime.contains(".")) {
traffpictureParam.setCreatetime(createtime.split("\\.")[0]);
} else {
traffpictureParam.setCreatetime(createtime);
}
traffpictureParam.setRecordtype(recordtype);
//新增到picture
traffPictureService.inserTraffpicture(traffpictureParam);
}
public List<Map> getLocation(List<Map> objectList, String recordtype, Long[] roiarray) {
for (Map traffpictureParam : objectList) {
//根据imageid 获得 base64图片
Map metadata = (Map) traffpictureParam.get("Metadata");
Map objectBoundingBox = (Map) metadata.get("ObjectBoundingBox");
String metatype = String.valueOf(metadata.get("Type"));
Map objlocation = new HashMap();
//获得物体特征值,只能有一个框框
}
return null;
}
public int getManNumber(List<Map> objectList) {
int objsize = 0;
for (Map traffpictureParam : objectList) {
//根据imageid 获得 base64图片
Map metadata = (Map) traffpictureParam.get("Metadata");
String metadatatyp = metadata.get("Type").toString();
if ("1".equals(metadatatyp) || "4".equals(metadatatyp)
|| "3".equals(metadatatyp)) {
//返回结果是人相关的
objsize++;
}
}
return objsize;
}
public void getObjectPoint(Map objlocation, Map metadata, Long[] roiarray,TraffpictureParam traff) {
Map objectBoundingBox = (Map) metadata.get("ObjectBoundingBox");
Location lo=new Location();
if (null != metadata.get("LeftTopX") &&
!"".equals(metadata.get("LeftTopX").toString())
&& null != metadata.get("LeftTopY")
&& !"".equals(metadata.get("LeftTopY").toString())
&& null != metadata.get("RightBtmX")
&& !"".equals(metadata.get("RightBtmX").toString())
&& null != metadata.get("RightBtmY")
&& !"".equals(metadata.get("RightBtmY").toString())
) {
try {
lo = new Location(Integer.parseInt(metadata.get("LeftTopX").toString()) + roiarray[0].intValue(), Integer.parseInt(metadata.get("LeftTopY").toString()) + roiarray[1].intValue(),
Integer.parseInt(metadata.get("RightBtmX").toString()), Integer.parseInt(metadata.get("RightBtmY").toString()) + roiarray[1].intValue()
);
} catch (Exception ex) {
}
} else if (null != objectBoundingBox) {
try {
lo=new Location(Integer.parseInt(objectBoundingBox.get("x").toString()) + roiarray[0].intValue(),
Integer.parseInt(objectBoundingBox.get("y").toString()) + roiarray[1].intValue(),
Integer.parseInt(objectBoundingBox.get("x").toString()) + Integer.parseInt(objectBoundingBox.get("w").toString()) + roiarray[0].intValue(),
Integer.parseInt(objectBoundingBox.get("y").toString()) + Integer.parseInt(objectBoundingBox.get("h").toString()) + roiarray[1].intValue()
);
} catch (Exception ex) {
}
} else {
if (null != metadata.get("FaceBoundingBox")) {
try {
Map faceBoundingBox = (Map) metadata.get("FaceBoundingBox");
lo=new Location(
Integer.parseInt(faceBoundingBox.get("x").toString()) + roiarray[0].intValue(),
Integer.parseInt(faceBoundingBox.get("y").toString()) + roiarray[1].intValue(),
Integer.parseInt(faceBoundingBox.get("x").toString()) +
Integer.parseInt(faceBoundingBox.get("w").toString()) + roiarray[0].intValue(),
Integer.parseInt(faceBoundingBox.get("y").toString()) +
Integer.parseInt(faceBoundingBox.get("h").toString()) + roiarray[1].intValue()
);
} catch (Exception ex) {
}
} else {
if (null != metadata.get("HeadBoundingBox")) {
try {
Map headBoundingBox = (Map) metadata.get("HeadBoundingBox");
lo=new Location(
Integer.parseInt(headBoundingBox.get("x").toString()) + roiarray[0].intValue(),
Integer.parseInt(headBoundingBox.get("y").toString()) + roiarray[1].intValue(),
Integer.parseInt(headBoundingBox.get("x").toString()) + Integer.parseInt(headBoundingBox.get("w").toString()) + roiarray[0].intValue(),
Integer.parseInt(headBoundingBox.get("y").toString()) + Integer.parseInt(headBoundingBox.get("h").toString()) + roiarray[1].intValue()
);
} catch (Exception ex) {
}
}
}
}
}
objlocation.put("location",lo);
if(null!=lo) {
traff.setObjx(lo.getX1());
traff.setObjy(lo.getY1());
traff.setObjw(lo.getX2() - lo.getX1());
traff.setObjh(lo.getY2() - lo.getY1());
}
}
public void getDetectInfo(String recordtype, Map metadata, Map objlocation) {
String metatype = metadata.get("Type").toString();
if ("20".equals(recordtype)) {//周界入侵,展示objectType
objlocation.put("objectType", metadata.get("Type").toString());
} else if ("41".equals(recordtype)) {
//汽车
if ("2".equals(metatype)) {
objlocation.put("carNo", String.valueOf(metadata.get("PlateNo")));
objlocation.put("carBrand", String.valueOf(metadata.get("carBrand")));
}
} else if ("42".equals(recordtype)) {
//非机动车
if ("4".equals(metatype)) {
objlocation.put("bikeClassType", String.valueOf(metadata.get("BikeClass")));
}
} else if ("43".equals(recordtype)) {
if ("4".equals(metatype)) {
int helmet = Integer.parseInt(metadata.get("Helmet").toString());
//非机动车未戴头盔
if (helmet == 0) {
objlocation.put("helmet", helmet);
}
}
}
}
public void uploadPicture(TraffpictureParam traffpictureParam,String url, List<Map> points, String basepath, String filename) {
try {
completionService.submit(() -> {
InputStream streanm = RestUtil.ReadFromURL(url);
ByteArrayOutputStream bos = PointUtil.drawByPoints(streanm, points);
if (null == bos) {
log.error("picture is null");
return false;
}
File file= FileUtil.uploadToLocal(filerootpath+File.separator+
outpath+File.separator+
basepath,bos,filename);
// HttpHeaders headers = new HttpHeaders();
// headers.add("Accept", MediaType.ALL_VALUE);
// // headers.setContentType(MediaType.parseMediaType("multipart/form-data"));
// MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>();
//
// org.springframework.core.io.Resource resource = new ByteArrayResource(bos.toByteArray()){
// @Override
// public String getFilename () {
// return filename;
// }
// } ;
//
// ByteArrayResource arrayResource = new ByteArrayResource(bos.toByteArray()) {
// @Override
// public String getFilename() throws IllegalStateException {
// return filename;
// }
// @Override
// public long contentLength() {
// int estimate = bos.size();
// return estimate == 0 ? 1 : estimate;
// }
//
// };
// parts.add(basepath+File.separator+filename, resource);
// parts.add("name", basepath);
// parts.add("filename", filename);
// parts.add("folder", "1");
// headers.setContentType(MediaType.MULTIPART_FORM_DATA);
// HttpEntity<MultiValueMap<String, Object>> files = new HttpEntity<>(parts, headers);
// if(null!=file){
// parts.add("file", new FileSystemResource(file));
// }
//traffpictureParam.setImagedata(basepath+File.separator+filename);
// traffPictureService.updateTraffpicture(traffpictureParam);
// FileUploadResultVo resultVo=new FileUploadResultVo();
//resultVo = restTemplate.postForObject(uploadurl, files, FileUploadResultVo.class);
//restTemplate.put(uploadurl, files);
//删除
// if (file.delete()) {
// log.info("delete file success");
// }
// if(resultVo.getCode()==200){
// //更新地址
// if(resultVo.getData().size()>0) {
// traffpictureParam.setImagedata(resultVo.getData().get(0).getLocaluri());
// traffPictureService.updateTraffpicture(traffpictureParam);
// }
// return true;
// }
return true;
}).get(timeout, TimeUnit.SECONDS);
} catch (Exception ex) {
log.error(" uplaod file:{}", ex.toString());
}
}
}
\ No newline at end of file
......@@ -19,6 +19,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.stereotype.Service;
......@@ -52,6 +53,10 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
@Autowired
private SchedulerFactoryBean schedulerBean;
@Value("${local.czurl}")
private String czurl;
@Value("${local.fxurl}")
private String fxurl;
/**
* 列表查询所有定时任务
*
......@@ -128,6 +133,32 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
return ResultUtil.success(ResultEnum.SUCCESS.getCode(), ResultEnum.SUCCESS.getMessage());
}
public String startOrStopJob(String taskNo,String status) throws SchedulerException {
QuartzTaskInformations quartzTaskInformation = quartzTaskInformationsService.getTaskByTaskNo(taskNo);
if (quartzTaskInformation == null) {
return ResultUtil.success(ResultEnum.NO_DATA.getCode(), ResultEnum.NO_DATA.getMessage());
}
Scheduler scheduler = schedulerBean.getScheduler();
long currentTimeMillis = System.currentTimeMillis();
QuartzTaskInformations task = new QuartzTaskInformations();
task.setId(quartzTaskInformation.getId());
task.setVersion(quartzTaskInformation.getVersion());
//说明要暂停
scheduler.deleteJob(new JobKey(taskNo));
if (ResultEnum.UNFROZEN.name().equals(status)) {
task.setFrozentime(currentTimeMillis);
task.setFrozenstatus(ResultEnum.UNFROZEN.name());
//说明要启动
} else if (ResultEnum.FROZEN.name().equals(status)) {
this.schedule(quartzTaskInformation, scheduler);
task.setUnfrozentime(currentTimeMillis);
task.setFrozenstatus(ResultEnum.FROZEN.name());
}
task.setLastmodifytime(currentTimeMillis);
quartzTaskInformationsService.updateStatusById(task);
logger.info("taskNo={},taskName={},scheduleRule={},任务{}成功", quartzTaskInformation.getTaskno(), quartzTaskInformation.getTaskname(), quartzTaskInformation.getSchedulerrule(), ResultEnum.FROZEN.name().equals(status) ? "启动" : "暂停");
return ResultUtil.success(ResultEnum.SUCCESS.getCode(), ResultEnum.SUCCESS.getMessage());
}
/**
* 初始化加载定时任务
*
......@@ -293,28 +324,28 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
return ResultUtil.success(ResultEnum.RUN_NOW_FAIL.getCode(), ResultEnum.RUN_NOW_FAIL.getMessage());
}
if (ResultEnum.HTTP.getMessage().equals(sendType)) {
// if (ResultEnum.HTTP.getMessage().equals(sendType)) {
try {
//将抽取的时间段获得,如果是没有规则,全抽所有。、
//如果是当天上午八点,就抽当天8点之前喝前一天的3点之后0 30 8 ? * *
HttpClientUtil.doPost(url, "text/json", executeParameter);
HttpClientUtil.doPost(taskNo.contains("cz_") ? czurl : fxurl, "text/json", executeParameter);
logger.info("");
} catch (Exception ex) {
logger.error("");
atomicInteger.incrementAndGet();
throw ex;
}
} else if (ResultEnum.KAFKA.getMessage().equals(sendType)) {
try {
String message = new StringBuffer(taskNo).append(":").append(executeParameter).toString();
this.sendMessage(message);
} catch (Exception ex) {
logger.error("");
atomicInteger.incrementAndGet();
throw ex;
}
}
// } else if (ResultEnum.KAFKA.getMessage().equals(sendType)) {
// try {
// String message = new StringBuffer(taskNo).append(":").append(executeParameter).toString();
// this.sendMessage(message);
// } catch (Exception ex) {
// logger.error("");
// atomicInteger.incrementAndGet();
// throw ex;
// }
// }
} catch (Exception ex) {
logger.error("");
atomicInteger.incrementAndGet();
......@@ -355,5 +386,15 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
public List< PatrolCtrlRecord> queryCameraCode(List<String> ids){
return quartzTaskInformationsService.queryCameraCode(ids);
}
@Override
public List<QuartzTaskInformations> getTaskSByDeviceCode(String devicecode) {
return quartzTaskInformationsService.getTaskSByDeviceCode(devicecode);
}
@Override
public Integer deletetask(String taskno) {
return quartzTaskInformationsService.deletetask(taskno);
}
}
......@@ -121,4 +121,14 @@ public class QuartzTaskInformationsServiceImpl implements QuartzTaskInformations
public List<PatrolCtrlRecord> queryCameraCode(List<String> ids){
return quartzTaskInformationsMapper.queryCameraCode(ids);
}
@Override
public List<QuartzTaskInformations> getTaskSByDeviceCode(String devicecode) {
return quartzTaskInformationsMapper.getTaskSByDeviceCode(devicecode);
}
@Override
public Integer deletetask(String taskno) {
return quartzTaskInformationsMapper.deletetask(taskno);
}
}
......@@ -2,6 +2,7 @@ package com.cx.cn.cxquartz.service.quartz.impl;
import com.alibaba.fastjson.JSONObject;
import com.cx.cn.cxquartz.bean.QuartzTaskInformations;
import com.cx.cn.cxquartz.dao.SbtdspsrMapper;
import com.cx.cn.cxquartz.service.quartz.SbtdspsrService;
import com.cx.cn.cxquartz.vo.Sbtdspsr;
......@@ -26,7 +27,7 @@ public class SbtdspsrImpl implements SbtdspsrService {
}
@Override
public List<Map> selectRecogByRtsp(String rtsp) {
public List<QuartzTaskInformations> selectRecogByRtsp(String rtsp) {
return sbtdspsrMapper.selectRecogByRtsp(rtsp);
}
......
......@@ -26,10 +26,10 @@ public class TokenCacheService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Value("${eventwrite.token}")
@Value("${countryside.eventwrite.token}")
private String qztoken;
@Value("${eventwrite.expiretoken}")
@Value("${countryside.eventwrite.expiretoken}")
private String expiretoken;
@Value("${countryside.appid}")
......
......@@ -13,6 +13,8 @@ public class DateUtils {
private static final DateTimeFormatter YMDHMS = DateTimeFormat.forPattern("yyyyMMddHHmmss");
private static final DateTimeFormatter YMD = DateTimeFormat.forPattern("yyyyMMdd");
private static final DateTimeFormatter Y_M_D = DateTimeFormat.forPattern("yyyy-MM-dd");
private static final DateTimeFormatter YM= DateTimeFormat.forPattern("yyyyMM");
private static final DateTimeFormatter DD= DateTimeFormat.forPattern("dd");
public static String formatCurrDate(){
return formatCurrDateByType(YMD_HMS);
}
......@@ -29,6 +31,12 @@ public class DateUtils {
return formatCurrDateByType(YMD);
}
public static String formatCurrDayYM(){
return formatCurrDateByType(YM);
}
public static String formatCurrDayDD(){
return formatCurrDateByType(DD);
}
public static Date parseDate(String date){
return DateTime.parse(date,YMD_HMS).toDate();
}
......
......@@ -19,67 +19,47 @@ import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.TimeUnit;
public class FileTransferManager {
private static CompletionService<TransferResult> completionService = new ExecutorCompletionService<TransferResult>(ThreadPoolUtil.getPool());
private static CompletionService<String> completionService = new ExecutorCompletionService<String>(ThreadPoolUtil.getPool());
private static CompletionService<String> threadService = new ExecutorCompletionService<String>(ThreadPoolUtil.getPool());
private static final Logger log = LoggerFactory.getLogger(ExtController.class);
/**
* @param transferRecord
* @param ftp
* @param basePath
* @return
* @throws Exception
*/
public static List<TransferResult> transferFile(final Map<String, Object> transferRecord, final Ftp ftp, final String basePath) throws Exception {
Integer ret = 0;
final Long recordid = Long.parseLong(transferRecord.get("recordid").toString());
int count = 0;
for (String key : transferRecord.keySet()) {
if (key.equals("img1path") || key.equals("img2path")
|| key.equals("img3path") || key.equals("img4path")
|| key.equals("img5path")) {
final String url = transferRecord.get(key).toString();
count++;
completionService.submit(() -> {
TransferResult result = new TransferResult(recordid, key, url, "", false);
public static void transferFile(final TraffAlarmRecord traffAlarmRecord, final Ftp ftp, final String basePath) throws Exception {
final Long recordid = traffAlarmRecord.getRecordid();
String fileName = DateUtils.formatCurrDayNoSign() + "_" + recordid + "_img1.jpg";
String ftputl = FTPUtil.getFtpUrl(ftp) + basePath + "/" + fileName;
traffAlarmRecord.setImg1path(ftputl);
completionService.submit(() -> {
try {
String filesuff = "videopath".equals(key) ? ".mp4" : ".jpg";
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
HttpURLConnection connection = (HttpURLConnection) new URL(traffAlarmRecord.getImg1urlfrom()).openConnection();
connection.setReadTimeout(2000); //延迟连接
connection.setConnectTimeout(3000);
connection.setRequestMethod("GET");
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK || connection.getResponseCode()==HttpURLConnection.HTTP_NOT_MODIFIED) {
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK || connection.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) {
InputStream inputStream = connection.getInputStream();
String pname = DateUtils.formatCurrDayNoSign() + "_" + recordid + "_0000_" + key.replace("path", "");
String fileName = pname + filesuff;
String ftputl = FTPUtil.getFtpUrl(ftp) + basePath + "/" + fileName;
boolean r = FTPUtil.uploadFile(ftp, basePath, fileName, inputStream);
result.setResult(r);
if (r) {
result.setImgpath(ftputl);
log.info(" ftpupload success:{}", ftputl);
}
// log.info("callable thread:" +result.toString());
} else {
log.error("connection code: " + connection.getResponseCode() + " ," + result.toString());
log.error("connection code: " + connection.getResponseCode());
}
} catch (IOException e) {
System.out.println(e.toString());
log.error(e.toString());
log.error("ftputl connection error:{}", e.toString());
return "0";
}
return result;
});
}
}
List<TransferResult> listret = new ArrayList<>();
for (int i = 0; i < count; i++) {
listret.add(completionService.poll(10, TimeUnit.SECONDS).get());
}
return listret;
return "1";
}
);
}
public static void fetchUrlsFromRecord(TraffAlarmRecord record, Map<String, Object> transferRecord) {
if (record == null || record.getRecordid() == null) {
if (record == null || record.getRecordid() == null) {
return;
}
transferRecord.put("recordid", record.getRecordid());
......@@ -87,26 +67,6 @@ public class FileTransferManager {
if (record.getImg1path() == null && record.getImg1urlfrom() != null) {
transferRecord.put("img1path", record.getImg1urlfrom());
}
if (record.getImg2path() == null && record.getImg2urlfrom() != null) {
transferRecord.put("img2path", record.getImg2urlfrom());
}
if (record.getImg3path() == null && record.getImg3urlfrom() != null) {
transferRecord.put("img3path", record.getImg3urlfrom());
}
if (record.getImg4path() == null && record.getImg4urlfrom() != null) {
transferRecord.put("img4path", record.getImg4urlfrom());
}
if (record.getImg5path() == null && record.getImg5urlfrom() != null) {
transferRecord.put("img5path", record.getImg5urlfrom());
}
if (record.getVideopath() == null && record.getVideourlfrom() != null) {
transferRecord.put("videopath", record.getVideourlfrom());
}
}
public static TraffAlarmRecord traffAlarmRecordUrlUpdate(List<TransferResult> results) throws Exception {
......@@ -118,18 +78,6 @@ public class FileTransferManager {
case "img1path":
record.setImg1path(result.getImgpath());
break;
case "img2path":
record.setImg2path(result.getImgpath());
break;
case "img3path":
record.setImg3path(result.getImgpath());
break;
case "img4path":
record.setImg4path(result.getImgpath());
break;
case "img5path":
record.setImg5path(result.getImgpath());
break;
case "videopath":
record.setVideopath(result.getImgpath());
break;
......@@ -148,56 +96,56 @@ public class FileTransferManager {
param.setModel(model);
param.setApiout("1");////打开1400标准输出,默认可以不填
List<ImageList> list = new ArrayList<>();
getImageList("1",roiarray, base64Encoder, list, transferRecord.getImg1path());
getImageList("2", roiarray,base64Encoder, list, transferRecord.getImg2path());
getImageList("3", roiarray,base64Encoder, list, transferRecord.getImg3path());
getImageList("4",roiarray, base64Encoder, list, transferRecord.getImg4path());
getImageList("5", roiarray,base64Encoder, list, transferRecord.getImg5path());
getImageList("1", roiarray, base64Encoder, list, transferRecord.getImg1path());
param.setImageList(list);
return param;
return param;
}
private static void getImageList(String id,Long[] roiarray, BASE64Encoder base64Encoder, List<ImageList> list, String img1path) {
private static void getImageList(String id, Long[] roiarray, BASE64Encoder base64Encoder, List<ImageList> list, String img1path) {
if (null != img1path && !"".equals(img1path)) {
byte[] Img = FTPUtil.getFtpPicBytes(img1path);
if (Img != null) {
list.add(new ImageList(id,roiarray,20,1,20,100,base64Encoder.encode(Img).replaceAll("\r|\n", "")));
list.add(new ImageList(id, roiarray, 10, 1, 20, 100, base64Encoder.encode(Img).replaceAll("\r|\n", "")));
}
}
}
public static String urlTransToFtp(String url, final Ftp ftp, final String basePath){
public static String urlTransToFtp(String url, final Ftp ftp, final String basePath) {
threadService.submit(() -> {
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.setReadTimeout(2000); //延迟连接
connection.setConnectTimeout(3000);
connection.setRequestMethod("GET");
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK || connection.getResponseCode()==HttpURLConnection.HTTP_NOT_MODIFIED) {
InputStream inputStream = connection.getInputStream();
String pname = DateUtils.formatCurrDayNoSign() + ".jpg";
String ftputl = FTPUtil.getFtpUrl(ftp) + basePath+pname;
boolean r = FTPUtil.uploadFile(ftp, basePath, pname,inputStream);
if (r) {
return ftputl;
}
} else {
log.error("connection code: " + connection.getResponseCode());
}
} catch (IOException e) {
System.out.println(e.toString());
log.error(e.toString());
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.setReadTimeout(2000); //延迟连接
connection.setConnectTimeout(3000);
connection.setRequestMethod("GET");
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK || connection.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) {
InputStream inputStream = connection.getInputStream();
String pname = DateUtils.formatCurrDayNoSign() + ".jpg";
String ftputl = FTPUtil.getFtpUrl(ftp) + basePath + pname;
boolean r = FTPUtil.uploadFile(ftp, basePath, pname, inputStream);
if (r) {
return ftputl;
}
return url;
});
} else {
log.error("connection code: " + connection.getResponseCode());
}
} catch (IOException e) {
System.out.println(e.toString());
log.error(e.toString());
}
return url;
});
try {
return threadService.poll(10, TimeUnit.SECONDS).get();
}catch (Exception ex){
return threadService.poll(10, TimeUnit.SECONDS).get();
} catch (Exception ex) {
return url;
}
}
}
package com.cx.cn.cxquartz.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
public class FileUtil {
private static final Logger logger = LoggerFactory.getLogger(FileUtil.class);
public static File uploadToLocal(String path,ByteArrayOutputStream bout, String fileName) {
logger.info("file upload :{}",path+fileName);
DataOutputStream to=null;
try {
File tempFile = new File(path);
if (!tempFile.exists()) {
tempFile.mkdirs();
}
File file= new File(tempFile.getPath() + File.separator + fileName);
if (!file.exists()) {
file.createNewFile();
}
to=new DataOutputStream(new FileOutputStream(file));
bout.writeTo(to);
return file;
} catch (IOException e) {
logger.error(e.toString());
e.printStackTrace();
return null;
} catch (Exception e) {
logger.error(e.toString());
e.printStackTrace();
return null;
} finally {
try {
if(null!=bout)
bout.close();
if(null!=to){
to.close();
}
} catch (IOException e) {
logger.error(e.toString());
e.printStackTrace();
}
}
}
}
package com.cx.cn.cxquartz.util;
import com.cx.cn.cxquartz.controller.IndexController;
import com.cx.cn.cxquartz.vo.Location;
import com.cx.cn.cxquartz.vo.Point;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.*;
import java.util.List;
public class PointUtil {
private static final Logger logger = LoggerFactory.getLogger(IndexController.class);
public static void getXYWH(List<Point> points, Long[] roiarray){
Map<Integer, Integer> map=new HashMap();
Map<Integer, Integer> mapy=new HashMap();
for(Point point :points){
map.put(point.getX(),point.getX());
mapy.put(point.getY(),point.getY());
}
//map有两个,mapy有两个值
List<Integer> numx = new ArrayList<Integer>();
for (Map.Entry<Integer, Integer> mx:map.entrySet()) {
numx.add(mx.getValue());
}
List<Integer> numy = new ArrayList<Integer>();
for (Map.Entry<Integer, Integer> my:mapy.entrySet()) {
numy.add(my.getValue());
}
Collections.sort(numx);
Collections.sort(numy);
if(numx.size()==2 && numy.size()==2) {
roiarray[0]=Long.parseLong(String.valueOf(numx.get(0)));
roiarray[1]=Long.parseLong(String.valueOf(numy.get(0)));
roiarray[2]=Long.parseLong(String.valueOf(numx.get(1) - numx.get(0)));
roiarray[3]=Long.parseLong(String.valueOf(numy.get(1) - numy.get(0)));
}}
public static ByteArrayOutputStream drawByPoints(InputStream bais,List<Map> detectObjects) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
try {
BufferedImage image = ImageIO.read(bais);
Graphics g = image.getGraphics();
g.setColor(Color.RED);
//遍历所有特征值,画到图片上
for (Map box : detectObjects) {
if (null != box) {
try {
if (null != box.get("location")) {
try {
Location lo =(Location) box.get("location");
logger.info("detectObjects x1,x2,y1,y2==="+lo.toString());
g.drawRect(lo.getX1(), lo.getY1(),
lo.getX2() - lo.getX1(),
lo.getY2() - lo.getY1());
}catch (Exception ex){
logger.error("Location Map error:{}", ex.toString());
}
}
} catch (Exception ex) {
logger.error("Location readValue error:{}", ex.toString());
}
}
}
ImageIO.write(image, "JPEG", stream);
return stream;
}catch (Exception ex){
logger.error("Location readValue error:{}", ex.toString());
}
return stream;
}
}
......@@ -3,14 +3,17 @@ package com.cx.cn.cxquartz.util;
import com.alibaba.fastjson.JSONObject;
import com.cx.cn.cxquartz.controller.ExtController;
import com.cx.cn.cxquartz.service.quartz.SbtdspsrService;
import com.cx.cn.cxquartz.vo.TraffAlarmRecord;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -19,10 +22,10 @@ public class RestUtil {
private static final Logger logger = LoggerFactory.getLogger(RestUtil.class);
@Autowired
private RestTemplate restTemplate;
public RestTemplate restTemplate;
@Autowired
SbtdspsrService sbtdspsrService;
public SbtdspsrService sbtdspsrService;
public String getnewRtspVlue(String devicecode,String getrtspbyurl ){
String rtspnewvalue="";
......@@ -79,15 +82,71 @@ public class RestUtil {
}
}
public void getPicture(List<String> imgUrls, Map<String, Object> maps, HttpEntity<String> formEntity,String rtspurl) {
ResponseEntity<String> exchange = restTemplate.exchange(rtspurl + "?url={rtspvalue}&refresh={refresh}",
public String getPicture(List<String> imgUrls, String deviceCode, String rtspurl, TraffAlarmRecord record ) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
Map<String, Object> maps = new HashMap<>();
maps.put("deviceCode", deviceCode);
logger.info("rtspurl:{}",rtspurl);
HttpEntity<String> formEntity = new HttpEntity<>(null, headers);
ResponseEntity<String> exchange = restTemplate.exchange(rtspurl + "?deviceCode={deviceCode}",
HttpMethod.GET, formEntity, String.class, maps);
if(null!=exchange.getBody()) {
JSONObject json = JSONObject.parseObject(exchange.getBody());
if (null != json.getString("ret") && json.getString("ret").equals("0")) {
//获得图片地址
imgUrls.add(json.getString("url"));
record.setImg1urlfrom(json.getString("url"));
record.setImg1path(json.getString("localuri"));
}
return json.getString("timestamp");
}
return null;
}
public String getSnapshot(List<String> imgUrls, String deviceCode, String rtspurl, TraffAlarmRecord record ) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
Map<String, Object> maps = new HashMap<>();
maps.put("deviceCode", deviceCode);
logger.info("rtspurl:{}",rtspurl);
HttpEntity<String> formEntity = new HttpEntity<>(null, headers);
ResponseEntity<String> exchange = restTemplate.exchange(rtspurl + "?deviceCode={deviceCode}",
HttpMethod.GET, formEntity, String.class, maps);
if(null!=exchange.getBody()) {
JSONObject json = JSONObject.parseObject(exchange.getBody());
if (null != json.getString("ret") && json.getString("ret").equals("0")) {
//获得图片地址
imgUrls.add(json.getString("url"));
record.setImg1path(json.getString("url"));
}
return json.getString("timestamp");
}
return null;
}
/// <summary>
/// 读取远程文件的内容
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static InputStream ReadFromURL(String serverFilePath)
{
try {
HttpURLConnection connection = (HttpURLConnection) new URL(serverFilePath).openConnection();
connection.setReadTimeout(2000); //延迟连接
connection.setConnectTimeout(8000);
connection.setRequestMethod("GET");
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK || connection.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) {
InputStream inputStream = connection.getInputStream();
return inputStream;
}
} catch (IOException e) {
}
return null;
}
}
......@@ -15,29 +15,5 @@ public enum TraffAlarmRecordFromImgEnum implements TraffAlarmRecordImg {
public void setImg(TraffAlarmRecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg1urlfrom(img);
}
},
IMG1 {
@Override
public void setImg(TraffAlarmRecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg2urlfrom(img);
}
},
IMG2 {
@Override
public void setImg(TraffAlarmRecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg3urlfrom(img);
}
},
IMG3 {
@Override
public void setImg(TraffAlarmRecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg4urlfrom(img);
}
},
IMG4 {
@Override
public void setImg(TraffAlarmRecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg5urlfrom(img);
}
}
}
package com.cx.cn.cxquartz.vo;
import java.util.Date;
public class FileUploadResult {
private String filename;
private String url;
private String localuri;
private long length;
private Date timestamp;
public void setFilename(String filename) {
this.filename = filename;
}
public String getFilename() {
return filename;
}
public void setUrl(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
public void setLocaluri(String localuri) {
this.localuri = localuri;
}
public String getLocaluri() {
return localuri;
}
public void setLength(long length) {
this.length = length;
}
public long getLength() {
return length;
}
public void setTimestamp(Date timestamp) {
this.timestamp = timestamp;
}
public Date getTimestamp() {
return timestamp;
}
}
package com.cx.cn.cxquartz.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Date;
import java.util.List;
public class FileUploadResultVo {
@JsonProperty("Url")
private String Url;
@JsonProperty("Error")
private String Error;
@JsonProperty("Code")
private int Code;
@JsonProperty("StackTrace")
private String StackTrace;
@JsonProperty("Data")
private List<FileUploadResult> Data;
@JsonProperty("ID")
private String ID;
public void setUrl(String Url) {
this.Url = Url;
}
public String getUrl() {
return Url;
}
public void setError(String Error) {
this.Error = Error;
}
public String getError() {
return Error;
}
public void setCode(int Code) {
this.Code = Code;
}
public int getCode() {
return Code;
}
public void setStackTrace(String StackTrace) {
this.StackTrace = StackTrace;
}
public String getStackTrace() {
return StackTrace;
}
public List<FileUploadResult> getData() {
return Data;
}
public void setData(List<FileUploadResult> data) {
Data = data;
}
public void setID(String ID) {
this.ID = ID;
}
public String getID() {
return ID;
}
}
......@@ -10,10 +10,10 @@ public class ImageList {
private Long[] Roi;
// private Integer RoiPadding;
private Integer RoiPadding;
private Integer CropObjectImage;
private Integer CropObjectImagePadding;
private Integer CropObjectImageQuality;
private Integer CropImageQuality;
@JSONField(name = "Roi")
public Long[] getRoi() {
......@@ -24,13 +24,13 @@ public class ImageList {
Roi = roi;
}
// public Integer getRoiPadding() {
// return RoiPadding;
// }
//
// public void setRoiPadding(Integer roiPadding) {
// RoiPadding = roiPadding;
// }
public Integer getRoiPadding() {
return RoiPadding;
}
public void setRoiPadding(Integer roiPadding) {
RoiPadding = roiPadding;
}
public Integer getCropObjectImage() {
return CropObjectImage;
......@@ -48,12 +48,12 @@ public class ImageList {
CropObjectImagePadding = cropObjectImagePadding;
}
public Integer getCropObjectImageQuality() {
return CropObjectImageQuality;
public Integer getCropImageQuality() {
return CropImageQuality;
}
public void setCropObjectImageQuality(Integer cropObjectImageQuality) {
CropObjectImageQuality = cropObjectImageQuality;
public void setCropImageQuality(Integer cropImageQuality) {
CropImageQuality = cropImageQuality;
}
@JsonIgnore
......@@ -66,13 +66,24 @@ public class ImageList {
Data = data;
}
public ImageList(String imageID, Long[] roi, Integer roiPadding, Integer cropObjectImage, Integer cropObjectImagePadding, Integer cropObjectImageQuality, String data) {
public ImageList(String imageID, Long[] roi, Integer roiPadding, Integer cropObjectImage, Integer cropObjectImagePadding, Integer cropImageQuality, String data) {
ImageID = imageID;
Roi = roi;
// RoiPadding = roiPadding;
RoiPadding = roiPadding;
CropObjectImage = cropObjectImage;
CropObjectImagePadding = cropObjectImagePadding;
CropObjectImageQuality = cropObjectImageQuality;
CropImageQuality = cropImageQuality;
Data = data;
}
public ImageList(String imageID, Long[] roi, Integer roiPadding, Integer cropObjectImage, Integer cropObjectImagePadding, Integer cropImageQuality, int format, String data) {
ImageID = imageID;
Roi = roi;
RoiPadding = roiPadding;
CropObjectImage = cropObjectImage;
CropObjectImagePadding = cropObjectImagePadding;
CropImageQuality = cropImageQuality;
Format = format;
Data = data;
}
......@@ -86,8 +97,7 @@ public class ImageList {
public void setFormat(int Format){
this.Format = Format;
}
@JSONField(name = "Format")
@JSONField(name = "Format",serialize = false)
public int getFormat(){
return this.Format;
}
......
package com.cx.cn.cxquartz.vo;
import java.util.List;
import java.util.Map;
public class JobParam {
private String detectType;
private String deviceId;
private String type;
private String name;
private Map params;
private String callBackUrl;
private List<Point> area;
public String getDetectType() {
return detectType;
}
public void setDetectType(String detectType) {
this.detectType = detectType;
}
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Map getParams() {
return params;
}
public void setParams(Map params) {
this.params = params;
}
public String getCallBackUrl() {
return callBackUrl;
}
public void setCallBackUrl(String callBackUrl) {
this.callBackUrl = callBackUrl;
}
public List<Point> getArea() {
return area;
}
public void setArea(List<Point> area) {
this.area = area;
}
}
package com.cx.cn.cxquartz.vo;
public class JobTjParam {
private String detectType;
private String deviceId;
private String imageUrl;
private Object detectInfo;
private Long timestamp;
public String getDetectType() {
return detectType;
}
public void setDetectType(String detectType) {
this.detectType = detectType;
}
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public Object getDetectInfo() {
return detectInfo;
}
public void setDetectInfo(Object detectInfo) {
this.detectInfo = detectInfo;
}
public Long getTimestamp() {
return timestamp;
}
public void setTimestamp(Long timestamp) {
this.timestamp = timestamp;
}
@Override
public String toString() {
return "JobTjParam{" +
"detectType='" + detectType + '\'' +
", deviceId='" + deviceId + '\'' +
", imageUrl='" + imageUrl + '\'' +
", detectInfo=" + detectInfo +
", timestamp=" + timestamp +
'}';
}
}
/**
* Copyright 2021 json.cn
*/
package com.cx.cn.cxquartz.vo;
public class Location {
private int x1;
private int y1;
private int x2;
private int y2;
public int getX1() {
return x1;
}
public void setX1(int x1) {
this.x1 = x1;
}
public int getY1() {
return y1;
}
public void setY1(int y1) {
this.y1 = y1;
}
public int getX2() {
return x2;
}
public void setX2(int x2) {
this.x2 = x2;
}
public int getY2() {
return y2;
}
public void setY2(int y2) {
this.y2 = y2;
}
public Location(int x1, int y1, int x2, int y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
public Location() {
}
@Override
public String toString() {
return "Location{" +
"x1=" + x1 +
", y1=" + y1 +
", x2=" + x2 +
", y2=" + y2 +
'}';
}
}
\ No newline at end of file
......@@ -142,4 +142,27 @@ public class ObjectList {
return Index;
}
}
\ No newline at end of file
public ObjectList() {
}
public ObjectList(String imageID, int objectID, com.cx.cn.cxquartz.vo.Metadata metadata, String feature, int bucketID, List<Integer> bucketIDList, String faceFeature, int faceBucketID, List<Integer> faceBucketIDList, String faceQuality, String faceYaw, String facePitch, String faceRoll, String faceBlurry, String objectImageData, String faceImageData, int index) {
ImageID = imageID;
ObjectID = objectID;
Metadata = metadata;
Feature = feature;
BucketID = bucketID;
BucketIDList = bucketIDList;
FaceFeature = faceFeature;
FaceBucketID = faceBucketID;
FaceBucketIDList = faceBucketIDList;
FaceQuality = faceQuality;
FaceYaw = faceYaw;
FacePitch = facePitch;
FaceRoll = faceRoll;
FaceBlurry = faceBlurry;
ObjectImageData = objectImageData;
FaceImageData = faceImageData;
Index = index;
}
}
/**
* Copyright 2021 json.cn
*/
package com.cx.cn.cxquartz.vo;
public class ObjectListResult {
private ObjectResult recogdata;
private int ret;
private String desc;
private String url;
private String localuri;
private String timestamp;
public int getRet() {
return ret;
}
public void setRet(int ret) {
this.ret = ret;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getLocaluri() {
return localuri;
}
public void setLocaluri(String localuri) {
this.localuri = localuri;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
public ObjectResult getRecogdata() {
return recogdata;
}
public void setRecogdata(ObjectResult recogdata) {
this.recogdata = recogdata;
}
}
\ No newline at end of file
/**
* Copyright 2021 json.cn
*/
package com.cx.cn.cxquartz.vo;
import java.util.List;
public class ObjectResult {
private List<ObjectList> ObjectList;
private String ret;
private String error_msg;
public ObjectResult() {
}
public ObjectResult(List<com.cx.cn.cxquartz.vo.ObjectList> objectList, String ret, String error_msg) {
ObjectList = objectList;
this.ret = ret;
this.error_msg = error_msg;
}
public List<com.cx.cn.cxquartz.vo.ObjectList> getObjectList() {
return ObjectList;
}
public void setObjectList(List<com.cx.cn.cxquartz.vo.ObjectList> objectList) {
ObjectList = objectList;
}
public String getRet() {
return ret;
}
public void setRet(String ret) {
this.ret = ret;
}
public String getError_msg() {
return error_msg;
}
public void setError_msg(String error_msg) {
this.error_msg = error_msg;
}
}
\ No newline at end of file
package com.cx.cn.cxquartz.vo;
public class Point {
int x;
int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
......@@ -6,7 +6,7 @@ public class Sbtdspsr {
private String sbbh;
private Long tdbh;
private Integer tdbh;
private Long tdlx;
......@@ -162,11 +162,11 @@ public class Sbtdspsr {
this.sbbh = sbbh;
}
public Long getTdbh() {
public Integer getTdbh() {
return tdbh;
}
public void setTdbh(Long tdbh) {
public void setTdbh(Integer tdbh) {
this.tdbh = tdbh;
}
......
package com.cx.cn.cxquartz.vo;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public class TaskResultObj {
private static final ObjectMapper MAPPER = new ObjectMapper();
/**
* 响应业务状态
* 200 成功
* 201 错误
* 400 参数错误
*/
private String errorCode;
/**
* 响应消息
*/
private String errorMsg;
/**
* 响应中的数据
*/
private Object data;
public static TaskResultObj error(String status, String msg, Object data) {
return new TaskResultObj(status, msg, data);
}
public static TaskResultObj ok(Object data) {
return new TaskResultObj(data);
}
public static TaskResultObj ok() {
return ok(null);
}
private TaskResultObj() {
}
public static TaskResultObj error(String status, String msg) {
return new TaskResultObj(status, msg, null);
}
private TaskResultObj(String status, String msg, Object data) {
this.errorCode = status;
this.errorMsg = msg;
this.data = data;
}
private TaskResultObj(Object data) {
this.errorCode = "0";
this.errorMsg = "success";
this.data = data;
}
/**
* 将json结果集转化为SysResult对象
*
* @param jsonData json数据
* @param clazz SysResult中的object类型
* @return SysResult对象
*/
public static TaskResultObj formatToPojo(String jsonData, Class<?> clazz) {
try {
if (clazz == null) {
return MAPPER.readValue(jsonData, TaskResultObj.class);
}
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (data.isObject()) {
obj = MAPPER.readValue(data.traverse(), clazz);
} else if (data.isTextual()) {
obj = MAPPER.readValue(data.asText(), clazz);
}
return error(jsonNode.get("errorCode").toString(), jsonNode.get("errorMsg").asText(), obj);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 没有object对象的转化
*
* @param json 字符串
* @return SysResult对象
*/
public static TaskResultObj format(String json) {
try {
return MAPPER.readValue(json, TaskResultObj.class);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* Object是集合转化
*
* @param jsonData json数据
* @param clazz 集合中的类型
* @return SysResult对象
*/
public static TaskResultObj formatToList(String jsonData, Class<?> clazz) {
try {
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (data.isArray() && data.size() > 0) {
obj = MAPPER.readValue(data.traverse(),
MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
}
return error(jsonNode.get("errorCode").toString(), jsonNode.get("errorMsg").asText(), obj);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public String getErrorCode() {
return errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
\ No newline at end of file
......@@ -32,7 +32,7 @@ public class TraffAlarmRecord {
private Integer recordlevel;//�¼����� --Ĭ��Ϊ0 ����������ʱδ֪
private Integer checkstatus ;//0:����� 1:���ͨ�� 2:��˲�ͨ�� 9:����
private String creator;//������
private Date createtime ;//����ʱ��
private String createtime ;//����ʱ��
private String updator ;//������
private Date updatetime ;//����ʱ��
private String remark ;
......@@ -140,71 +140,6 @@ public class TraffAlarmRecord {
public void setImg1path(String img1path) {
this.img1path = img1path;
}
public String getImg2urlfrom() {
return img2urlfrom;
}
public void setImg2urlfrom(String img2urlfrom) {
this.img2urlfrom = img2urlfrom;
}
public String getImg2path() {
return img2path;
}
public void setImg2path(String img2path) {
this.img2path = img2path;
}
public String getImg3urlfrom() {
return img3urlfrom;
}
public void setImg3urlfrom(String img3urlfrom) {
this.img3urlfrom = img3urlfrom;
}
public String getImg3path() {
return img3path;
}
public void setImg3path(String img3path) {
this.img3path = img3path;
}
public String getImg4urlfrom() {
return img4urlfrom;
}
public void setImg4urlfrom(String img4urlfrom) {
this.img4urlfrom = img4urlfrom;
}
public String getImg4path() {
return img4path;
}
public void setImg4path(String img4path) {
this.img4path = img4path;
}
public String getImg5urlfrom() {
return img5urlfrom;
}
public void setImg5urlfrom(String img5urlfrom) {
this.img5urlfrom = img5urlfrom;
}
public String getImg5path() {
return img5path;
}
public void setImg5path(String img5path) {
this.img5path = img5path;
}
public String getVideourlfrom() {
return videourlfrom;
}
......@@ -261,11 +196,11 @@ public class TraffAlarmRecord {
this.creator = creator;
}
public Date getCreatetime() {
public String getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
public void setCreatetime(String createtime) {
this.createtime = createtime;
}
......@@ -357,6 +292,70 @@ public class TraffAlarmRecord {
this.manualstatus = manualstatus;
}
public String getImg2urlfrom() {
return img2urlfrom;
}
public void setImg2urlfrom(String img2urlfrom) {
this.img2urlfrom = img2urlfrom;
}
public String getImg2path() {
return img2path;
}
public void setImg2path(String img2path) {
this.img2path = img2path;
}
public String getImg3urlfrom() {
return img3urlfrom;
}
public void setImg3urlfrom(String img3urlfrom) {
this.img3urlfrom = img3urlfrom;
}
public String getImg3path() {
return img3path;
}
public void setImg3path(String img3path) {
this.img3path = img3path;
}
public String getImg4urlfrom() {
return img4urlfrom;
}
public void setImg4urlfrom(String img4urlfrom) {
this.img4urlfrom = img4urlfrom;
}
public String getImg4path() {
return img4path;
}
public void setImg4path(String img4path) {
this.img4path = img4path;
}
public String getImg5urlfrom() {
return img5urlfrom;
}
public void setImg5urlfrom(String img5urlfrom) {
this.img5urlfrom = img5urlfrom;
}
public String getImg5path() {
return img5path;
}
public void setImg5path(String img5path) {
this.img5path = img5path;
}
@Override
public String toString() {
return "Traffalarmrecord{" +
......@@ -372,14 +371,6 @@ public class TraffAlarmRecord {
", location='" + location + '\'' +
", img1urlfrom='" + img1urlfrom + '\'' +
", img1path='" + img1path + '\'' +
", img2urlfrom='" + img2urlfrom + '\'' +
", img2path='" + img2path + '\'' +
", img3urlfrom='" + img3urlfrom + '\'' +
", img3path='" + img3path + '\'' +
", img4urlfrom='" + img4urlfrom + '\'' +
", img4path='" + img4path + '\'' +
", img5urlfrom='" + img5urlfrom + '\'' +
", img5path='" + img5path + '\'' +
", videourlfrom='" + videourlfrom + '\'' +
", videopath='" + videopath + '\'' +
", retrytime=" + retrytime +
......
......@@ -35,6 +35,15 @@ public class Traffic {
private String HasSkylight;
private String HasBaggage;
private String HasAerial;
private String creattime;
public String getCreattime() {
return creattime;
}
public void setCreattime(String creattime) {
this.creattime = creattime;
}
public void setType(String Type) {
this.Type = Type;
......
......@@ -59,6 +59,16 @@ public class Traffpicture{
private Integer targetnum;
private String creattime;
public String getCreattime() {
return creattime;
}
public void setCreattime(String creattime) {
this.creattime = creattime;
}
public Integer getTargetnum() {
return targetnum;
}
......
......@@ -37,7 +37,7 @@ public class TraffpictureParam extends Traffpicture {
@JsonIgnore
private String creator;
@JsonIgnore
private Date createtime;
private String createtime;
@JsonIgnore
private String updator;
@JsonIgnore
......@@ -166,11 +166,11 @@ public class TraffpictureParam extends Traffpicture {
this.creator = creator;
}
public Date getCreatetime() {
public String getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
public void setCreatetime(String createtime) {
this.createtime = createtime;
}
......
package com.cx.cn.cxquartz.vo;
/**
* <p>
*
* </p>
*
* @author wjj
* @since 2021-04-29
*/
public class Voice {
private Integer eventId;
private String unionId;
public Integer getEventId() {
return eventId;
}
public void setEventId(Integer eventId) {
this.eventId = eventId;
}
public String getUnionId() {
return unionId;
}
public void setUnionId(String unionId) {
this.unionId = unionId;
}
}
package com.cx.cn.cxquartz.vo;
/**
* <p>
*
* </p>
*
* @author wjj
* @since 2021-04-29
*/
public class VoiceData {
private String corpId;
private String appKey;
private Voice requestData;
public String getCorpId() {
return corpId;
}
public void setCorpId(String corpId) {
this.corpId = corpId;
}
public String getAppKey() {
return appKey;
}
public void setAppKey(String appKey) {
this.appKey = appKey;
}
public Voice getRequestData() {
return requestData;
}
public void setRequestData(Voice requestData) {
this.requestData = requestData;
}
}
/**
* Copyright 2021 json.cn
*/
package com.cx.cn.cxquartz.vo;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public class VoiceResultObj {
private static final ObjectMapper MAPPER = new ObjectMapper();
/**
* 响应业务状态
* 200 成功
* 201 错误
* 400 参数错误
*/
private Integer Code;
/**
* 响应消息
*/
private String msg;
/**
* 响应中的数据
*/
private Object data;
private String page;
public static VoiceResultObj error(Integer status, String msg, Object data) {
return new VoiceResultObj(status, msg, data);
}
public static VoiceResultObj ok(Object data) {
return new VoiceResultObj(data);
}
public static VoiceResultObj ok() {
return ok(null);
}
private VoiceResultObj() {
}
public static VoiceResultObj error(Integer status, String msg) {
return new VoiceResultObj(status, msg, null);
}
private VoiceResultObj(Integer code, String msg, Object data) {
this.Code = code;
this.msg = msg;
this.data = data;
}
private VoiceResultObj(Object data) {
this.Code =1;
this.msg = "success";
this.data = data;
}
public Integer getCode() {
return Code;
}
public void setCode(Integer code) {
this.Code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
/**
* 将json结果集转化为SysResult对象
*
* @param jsonData json数据
* @param clazz SysResult中的object类型
* @return SysResult对象
*/
public static VoiceResultObj formatToPojo(String jsonData, Class<?> clazz) {
try {
if (clazz == null) {
return MAPPER.readValue(jsonData, VoiceResultObj.class);
}
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (data.isObject()) {
obj = MAPPER.readValue(data.traverse(), clazz);
} else if (data.isTextual()) {
obj = MAPPER.readValue(data.asText(), clazz);
}
return error( Integer.parseInt(jsonNode.get("code").toString()), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 没有object对象的转化
*
* @param json 字符串
* @return SysResult对象
*/
public static VoiceResultObj format(String json) {
try {
return MAPPER.readValue(json, VoiceResultObj.class);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* Object是集合转化
*
* @param jsonData json数据
* @param clazz 集合中的类型
* @return SysResult对象
*/
public static VoiceResultObj formatToList(String jsonData, Class<?> clazz) {
try {
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (data.isArray() && data.size() > 0) {
obj = MAPPER.readValue(data.traverse(),
MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
}
return error(Integer.parseInt(jsonNode.get("code").toString()), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
public String toString() {
return "ResultObj{" +
"code=" + Code +
", msg='" + msg + '\'' +
", obj=" + data +
'}';
}
}
\ No newline at end of file
......@@ -11,10 +11,10 @@ mybatis:
spring:
datasource:
url: jdbc:mysql://192.168.168.110:3306/imagepro?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
url: jdbc:mysql://172.16.24.29:3306/imagepro?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
username: root
password: 123456
# url: jdbc:mysql://172.16.24.29:3306/imagepro?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true
# url: jdbc:mysql://192.168.168.110:3306/imagepro?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true
# username: root
# password: 123456
driver-class-name: com.mysql.jdbc.Driver
......@@ -41,14 +41,18 @@ spring:
redis:
database: 0
host: 172.16.24.29
# host: 127.0.0.1
port: 6379
#logging:
# level:
# root:
# info
local:
czurl: http://localhost:8089/ext/getRTSP/1
fxurl: http://localhost:8089/ext/getDeviceSnapshotAndRecognize
logging:
level:
com.cx.cn.cxquartz.dao:
debug
\ No newline at end of file
#logging:
# level:
# com.cx.cn.cxquartz.dao:
# debug
\ No newline at end of file
file.uploadpath=D:\\imp\\VideoPic
file.alarmpath=D:\\imp\\VideoPic
file.recordurl=http://www.zjwwzf.cn/xzzfSpv/ext/patrolCtrlRecord
file.alarmurl=http://www.zjwwzf.cn/xzzfSpv/ext/alarm/camera
#file.rtspurl=http://172.16.24.153:8081/getrealcamerasnapshot.php
#file.recogurl=http://172.16.24.153:9098/images/recog
#file.rtspurl=http://172.16.24.29:7080/getrealcamerasnapshot.php
#file.recogurl=http://172.16.24.29:9098/images/recog
#file.rtspurl=http://localhost:8089/getrealcamerasnapshot
#file.recogurl=http://localhost:8089/images/recog
file.rtspurl=http://172.16.24.29:8081/getrealcamerasnapshot.php
file.recogurl=http://172.16.24.29:9098/images/recog
#
#file.rtspurl=http://zjh189.ncpoi.cc:7080/getDeviceSnapshot
#file.recogurl=http://zjh189.ncpoi.cc:7080/getDeviceSnapshotAndRecognize
#file.uploadurl=http://home2.ncpoi.cc:7080/uploadResultFile
#
file.rtspurl=http://172.16.24.29:7080/getDeviceSnapshot
file.recogurl=http://172.16.24.29:7080/getDeviceSnapshotAndRecognize
file.uploadurl=http://172.16.24.29:7080/uploadResultFile
redis.cachekey.ftplist=gs:traff:global:cache:ftplist
file.getrtspbyurl=http://212.129.142.17:8888/heschome_api/api/hesc/open/getRtsp
countryside.url=http://countryside.51iwifi.com/gw/hesc-mq/hesc/mq/receive/cameraalarm
eventwrite.timeout=5000
eventwrite.token=countrysidetoken
eventwrite.expiretoken=countrysideexpiretime
eventwrite.url=http://countryside.51iwifi.com/gw/hesc-mq/hesc/mq/receive/cameraalarm
countryside.eventwrite.timeout=5
countryside.eventwrite.token=countrysidetoken
countryside.eventwrite.expiretoken=countrysideexpiretime
countryside.eventwrite.url=http://countryside.51iwifi.com/gw/hesc-mq/hesc/mq/receive/cameraalarm
countryside.appid=05744e80b2c211ebe32a8e271066b19e
countryside.appsecret=a55a8870b2e911ebe32a8e271066b19e
countryside.tokenurl=http://countryside.51iwifi.com/gw/getAccessToken
file.publicpictureurl=http://zjh189.ncpoi.cc:10001/api/alg/files
file.ftppath=jiuling:9ling.cn@172.16.24.29:21
voice.url=http://106.13.41.128:9102/giant-sound/api/voice/1.0/play
voice.appKey=9555a51a08a2e1b1c9f02a5b3e9bea11
voice.corpId=587c9d56ee324c0186a86aea85fc7691
voice.eventId=5
voice.unionId=3YSCA450426N3XP
file.rootpath=/home/ubuntu/pictures
file.outpath=result
file.webrl=http://zjh189.ncpoi.cc:7080
......@@ -400,4 +400,16 @@
<update id="UpdateExecuteParam" parameterType="java.util.HashMap">
update quartz_task_informations set executeParamter=#{nrtsp} where executeParamter=#{ortsp}
</update>
<select id="getTaskSByDeviceCode" resultMap="BaseResultMap" parameterType="java.lang.String">
select * from quartz_task_informations where
taskno like concat(concat('%',#{devicecode}),'%')
and frozenStatus='UNFROZEN'
</select>
<delete id="deletetask">
delete from quartz_task_informations
where taskno = #{taskno,jdbcType=BIGINT}
</delete>
</mapper>
......@@ -12,26 +12,16 @@
<select id="selectByRtsp" parameterType="java.lang.String" resultType="com.cx.cn.cxquartz.vo.Sbtdspsr">
select distinct a.* from sbtdspsr a,
quartz_task_informations b
WHERE (a.sbbh=b.videoid or a.squrllj=b.videoid) and
(a.sbbh=#{rtsp} or a.squrllj=#{rtsp})
select * from sbtdspsr where
(sbbh=#{rtsp} or squrllj=#{rtsp})
</select>
<select id="selectRecogByRtsp" parameterType="java.lang.String" resultType="java.util.HashMap">
SELECT DISTINCT
(select sbbh from sbtdspsr where sbbh=b.videoid or squrllj=b.videoid limit 1) videoid,
(select tdmc from sbtdspsr where sbbh=b.videoid or squrllj=b.videoid limit 1) tdmc,
metatype,
recordtype,
objectx,
objecty,
objectw,
objecth
FROM
<select id="selectRecogByRtsp" parameterType="java.lang.String" resultType="com.cx.cn.cxquartz.bean.QuartzTaskInformations">
select * from
quartz_task_informations b
WHERE
(videoid=#{rtsp} or executeparamter=#{rtsp})and recordtype is not null
(taskNo like concat(concat('%fx_',#{rtsp}),'%'))
and frozenstatus='UNFROZEN'
</select>
<update id="updateRecogByRtsp" parameterType="java.util.HashMap" >
......
......@@ -51,14 +51,8 @@
<if test="objlable != null">objlable,</if>
<if test="rectificationtype != null">rectificationtype ,</if>
<if test="manualstatus != null">manualstatus ,</if>
<if test="img1path!=null">img1path,</if>
<if test="img2path!=null">img2path,</if>
<if test="img3path!=null">img3path</if>
<if test="img4path!=null">img4path,</if>
<if test="img5path!=null">img5path,</if>
<if test="videopath!=null">videopath,</if>
</trim>
<trim prefix="select" suffix="from dual" suffixOverrides=",">
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="algotype != null">#{algotype},</if>
<if test="areaid != null">#{areaid},</if>
<if test="fdid != null">#{fdid},</if>
......@@ -85,7 +79,7 @@
<if test="recordlevel != null">#{recordlevel,jdbcType=INTEGER},</if>
<if test="checkstatus != null">#{checkstatus,jdbcType=INTEGER},</if>
<if test="creator != null">#{creator},</if>
<if test="createtime != null">#{createtime},</if>
<if test="createtime != null">str_to_date(#{createtime},'%Y-%m-%d %H:%i:%s'),</if>
<if test="updator != null">#{updator},</if>
<if test="updatetime != null">#{updatetime},</if>
<if test="remark != null">#{remark},</if>
......@@ -95,12 +89,6 @@
<if test="objlable != null">#{objlable},</if>
<if test="rectificationtype != null">#{rectificationtype},</if>
<if test="manualstatus != null">#{manualstatus,jdbcType=INTEGER},</if>
<if test="img1path!=null">#{img1path},</if>
<if test="img2path!=null">#{img2path},</if>
<if test="img3path!=null">#{img3path},</if>
<if test="img4path!=null">#{img4path},</if>
<if test="img5path!=null">#{img5path},</if>
<if test="videopath!=null">#{videopath},</if>
</trim>
......
......@@ -3,45 +3,45 @@
<mapper namespace="com.cx.cn.cxquartz.dao.TraffPictureMapper">
<resultMap id="BaseResultMap" type="com.cx.cn.cxquartz.vo.TraffpictureParam">
<id column="recordid" property="recordid" />
<result column="imageid" property="imageid" />
<result column="areaid" property="areaid" />
<result column="fdid" property="fdid" />
<result column="channelid" property="channelid" />
<result column="objectid" property="objectid" />
<result column="recordtype" property="recordtype" />
<result column="Feature" property="Feature" />
<result column="bucketidlist" property="bucketidlist" />
<result column="facefeature" property="facefeature" />
<result column="facebucketid" property="facebucketid" />
<result column="facebucketidlist" property="facebucketidlist" />
<result column="facequality" property="facequality" />
<result column="faceyaw" property="faceyaw" />
<result column="facepitch" property="facepitch" />
<result column="faceroll" property="faceroll" />
<result column="faceblurry" property="faceblurry" />
<result column="objectimagedata" property="objectimagedata" />
<result column="faceimagedata" property="faceimagedata" />
<result column="pindex" property="index" />
<result column="metadataid" property="metadataid" />
<result column="retrycount" property="retrycount" />
<result column="recordlevel" property="recordlevel" />
<result column="checkstatus" property="checkstatus" />
<result column="creator" property="creator" />
<result column="createtime" property="createtime" />
<result column="updator" property="updator" />
<result column="updatetime" property="updatetime" />
<result column="remark" property="remark" />
<result column="pushstatus" property="pushstatus" />
<result column="pushdesc" property="pushdesc" />
<result column="pushcount" property="pushcount" />
<result column="pushdate" property="pushdate" />
<result column="processstatus" property="processstatus" />
<result column="manualstatus" property="manualstatus" />
<id column="recordid" property="recordid"/>
<result column="imageid" property="imageid"/>
<result column="areaid" property="areaid"/>
<result column="fdid" property="fdid"/>
<result column="channelid" property="channelid"/>
<result column="objectid" property="objectid"/>
<result column="recordtype" property="recordtype"/>
<result column="Feature" property="Feature"/>
<result column="bucketidlist" property="bucketidlist"/>
<result column="facefeature" property="facefeature"/>
<result column="facebucketid" property="facebucketid"/>
<result column="facebucketidlist" property="facebucketidlist"/>
<result column="facequality" property="facequality"/>
<result column="faceyaw" property="faceyaw"/>
<result column="facepitch" property="facepitch"/>
<result column="faceroll" property="faceroll"/>
<result column="faceblurry" property="faceblurry"/>
<result column="objectimagedata" property="objectimagedata"/>
<result column="faceimagedata" property="faceimagedata"/>
<result column="pindex" property="index"/>
<result column="metadataid" property="metadataid"/>
<result column="retrycount" property="retrycount"/>
<result column="recordlevel" property="recordlevel"/>
<result column="checkstatus" property="checkstatus"/>
<result column="creator" property="creator"/>
<result column="createtime" property="createtime"/>
<result column="updator" property="updator"/>
<result column="updatetime" property="updatetime"/>
<result column="remark" property="remark"/>
<result column="pushstatus" property="pushstatus"/>
<result column="pushdesc" property="pushdesc"/>
<result column="pushcount" property="pushcount"/>
<result column="pushdate" property="pushdate"/>
<result column="processstatus" property="processstatus"/>
<result column="manualstatus" property="manualstatus"/>
</resultMap>
<insert id="inserTraffpicture" useGeneratedKeys="true" keyProperty="id">
<insert id="inserTraffpicture" useGeneratedKeys="true" keyProperty="id">
insert into traffpicture
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="recordid != null">recordid,</if>
......@@ -66,8 +66,9 @@
<if test="index != null">pindex,</if>
<if test="imagedata != null">imagedata,</if>
<if test="processstatus != null">processstatus,</if>
<if test="createtime !=null">createtime ,</if>
</trim>
<trim prefix="select" suffix="from dual" suffixOverrides=",">
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="recordid != null">#{recordid},</if>
<if test="fdid != null">#{fdid},</if>
<if test="channelid != null">#{channelid},</if>
......@@ -90,6 +91,7 @@
<if test="index != null">#{index},</if>
<if test="imagedata != null">#{imagedata},</if>
<if test="processstatus != null">#{processstatus},</if>
<if test="createtime !=null">str_to_date(#{createtime},'%Y-%m-%d %H:%i:%s') ,</if>
</trim>
</insert>
......@@ -110,14 +112,36 @@
</select>
<update id="updateTraffpicture">
update traffpicture set objx=#{objx},objy=#{objy},objw=#{objw},objh=#{objh},imagedata=#{imagedata},metatype=#{metatype},targetnum=#{targetnum} where id=#{id}
update traffpicture
<trim prefix="set" suffixOverrides=",">
<if test="imagedata != null and imagedata !=''">
imagedata =#{imagedata},
</if>
<if test="targetnum != null and targetnum !=''">
targetnum =#{targetnum},
</if>
<if test="objx != null and objx !=''">
objx =#{objx},
</if>
<if test="objy != null and objy !=''">
objy =#{objy},
</if>
<if test="objw != null and objw !=''">
objw =#{objw},
</if>
<if test="objh != null and objh !=''">
objh =#{objh},
</if>
</trim>
where id=#{id}
</update>
<update id="updateTraffpicturePushStatus">
update traffpicture set pushdesc=#{pushdesc} , pushstatus=#{pushstatus} where id=#{id}
</update>
<select id="queryimgdataByid" parameterType="java.lang.String" resultType="java.lang.String">
<select id="queryimgdataByid" parameterType="java.lang.String" resultType="java.lang.String">
select imagedata from traffpicture where id=#{id}
</select>
......
......@@ -72,6 +72,7 @@
<if test="HasSkylight !=null"> hasskylight ,</if>
<if test="HasBaggage !=null"> hasbaggage ,</if>
<if test="HasAerial !=null"> hasaerial ,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id !=null">#{id} ,</if>
......
......@@ -131,24 +131,23 @@
class="col-sm-2 control-label text-right">告警类型:</label>
<div class="col-sm-10">
<select class="form-control" id="recordtype">
<option th:value="1">
<option th:value="20">
周界入侵
</option>
<option th:value="2">
<option th:value="10">
人群密度
</option>
<option th:value="3">
周界越线
</option>
<option th:value="4">
非机动车未戴头盔
<option th:value="41">
结构化统计机动车
</option>
<option th:value="5">
非机动车载人
<option th:value="42">
结构化统计非机动车
</option>
<option th:value="6">
结构化统计
<option th:value="50">
未佩戴口罩
</option>
</select>
</div>
</div>
......@@ -573,7 +572,7 @@
$(function () {
$("#getrtsp").on('click', function (e) {
$.ajax({
url: "/quartz/getRtsp",
url: "/ai/getRtsp",
dataType: "json",
type: "post",
contentType: 'application/json',
......@@ -648,7 +647,7 @@
return;
}
$.ajax({
url: "/quartz/add/task",
url: "/ai/add/task",
dataType: "json",
type: "POST",
data: {
......
......@@ -99,7 +99,7 @@
var executeparamter = $("#executeparamter").val();
var timekey = $("#timekey").val();
$.ajax({
url: "/quartz/add/task",
url: "/ai/add/task",
dataType: "json",
type: "POST",
data: {
......
......@@ -126,17 +126,17 @@
<script type="text/javascript" th:inline="javascript">
function editpage(id) {
window.open( "/quartz/edit/taskpage?id=" + id);
window.open( "/ai/edit/taskpage?id=" + id);
}
function addNewTask() {
window.open( "/quartz/add/taskpage/");
window.open( "/ai/add/taskpage/");
}
function startOrStop(taskNo) {
$.ajax({
url: "/quartz/list/optionjob?taskNo=" + taskNo,
url: "/ai/list/optionjob?taskNo=" + taskNo,
type: "GET",
dataType: "json",
success: function (result) {
......@@ -156,7 +156,7 @@
function runRightNow(taskNo) {
$.ajax({
url: "/quartz/runtask/rightnow?taskno=" + taskNo,
url: "/ai/runtask/rightnow?taskno=" + taskNo,
type: "GET",
dataType: "json",
success: function (result) {
......@@ -175,7 +175,7 @@
function dosearch(){
$.ajax({
url: "/quartz/list/optionjob?taskNo=" + taskNo,
url: "/ai/list/optionjob?taskNo=" + taskNo,
type: "GET",
dataType: "json",
success: function (result) {
......
......@@ -41,16 +41,16 @@
<script type="text/javascript" th:inline="javascript">
function editpage(id) {
location.href = "/quartz/edit/taskpage?id=" + id;
location.href = "/ai/edit/taskpage?id=" + id;
}
function addNewTask() {
location.href = "/quartz/add/taskpage/";
location.href = "/ai/add/taskpage/";
}
function startOrStop(taskNo) {
$.ajax({
url: "/quartz/list/optionjob?taskNo=" + taskNo,
url: "/ai/list/optionjob?taskNo=" + taskNo,
type: "GET",
dataType: "json",
success: function (result) {
......@@ -70,7 +70,7 @@
function runRightNow(taskNo) {
$.ajax({
url: "/quartz/runtask/rightnow?taskno=" + taskNo,
url: "/ai/runtask/rightnow?taskno=" + taskNo,
type: "GET",
dataType: "json",
success: function (result) {
......
......@@ -65,7 +65,7 @@
<script type="text/javascript" th:inline="javascript">
function detailTaskErrors(recordId) {
location.href="/quartz/task/errors?recordid="+recordId;
location.href="/ai/task/errors?recordid="+recordId;
}
</script>
......
......@@ -27,7 +27,7 @@
<h4>修改定时任务项</h4>
</div>
<div class="col-md-6" style="padding-left:10px;">
<form action="/quartz/edit/task" method="post">
<form action="/ai/edit/task" method="post">
<input type="hidden" th:value="${taskInformation.id}" name="id" id="id"/>
<input type="hidden" th:value="${taskInformation.version}" name="version" id="version"/>
<input type="hidden" th:value="${taskInformation.createtime}" name="createtime"
......@@ -657,7 +657,7 @@
$("#getrtsp").on('click', function (e) {
$.ajax({
url: "/quartz/getRtsp",
url: "/ai/getRtsp",
dataType: "json",
type: "post",
contentType: 'application/json',
......@@ -702,7 +702,7 @@
var unfrozentime = $("#unfrozentime").val();
object = draw.layers[1];
$.ajax({
url: "/quartz/edit/task",
url: "/ai/edit/task",
dataType: "json",
type: "POST",
data: {
......
......@@ -21,7 +21,7 @@
<h4>修改定时任务项</h4>
</div>
<div class="col-md-6" style="padding-left:10px;">
<form action="/quartz/edit/task" method="post">
<form action="/ai/edit/task" method="post">
<input type="hidden" th:value="${taskInformation.id}" name="id" id="id"/>
<input type="hidden" th:value="${taskInformation.version}" name="version" id="version"/>
<input type="hidden" th:value="${taskInformation.createtime}" name="createtime"
......@@ -422,7 +422,7 @@ function initCanvas(imgData) {
$("#getrtsp").on('click', function (e) {
$.ajax({ url: "/quartz/getRtsp/"+ $("#videoid").val(),
$.ajax({ url: "/ai/getRtsp/"+ $("#videoid").val(),
dataType: "json",
type: "get",
success: function (result) {
......@@ -471,7 +471,7 @@ function initCanvas(imgData) {
var unfrozentime = $("#unfrozentime").val();
object=draw.layers[0];
$.ajax({
url: "/quartz/edit/task",
url: "/ai/edit/task",
dataType: "json",
type: "POST",
data: {
......
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