mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-05-13 06:20:07 +08:00
新增 车位相机controller
This commit is contained in:
47
jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/camera/CameraController.java
vendored
Normal file
47
jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/camera/CameraController.java
vendored
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
package com.jsowell.web.controller.thirdparty.camera;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.jsowell.common.annotation.Anonymous;
|
||||||
|
import com.jsowell.common.core.controller.BaseController;
|
||||||
|
import com.jsowell.pile.dto.camera.CameraHeartBeatDTO;
|
||||||
|
import com.jsowell.pile.dto.camera.CameraIdentifyResultsDTO;
|
||||||
|
import com.jsowell.thirdparty.camera.common.CameraCommonResult;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充电相机 controller
|
||||||
|
*
|
||||||
|
* @author Lemon
|
||||||
|
* @Date 2023/12/5 9:06:53
|
||||||
|
*/
|
||||||
|
@Anonymous
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/camera")
|
||||||
|
public class CameraController extends BaseController {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 心跳
|
||||||
|
* @param dto
|
||||||
|
*/
|
||||||
|
@PostMapping("/v1/receiveHeartBeat")
|
||||||
|
public CameraCommonResult receiveHeartBeat(@RequestBody CameraHeartBeatDTO dto) {
|
||||||
|
logger.info("接收相机系统心跳包 params:{}", JSON.toJSONString(dto));
|
||||||
|
CameraCommonResult result = new CameraCommonResult();
|
||||||
|
logger.info("接收相机系统心跳包 result:{}", JSON.toJSONString(result.successResponse()));
|
||||||
|
return result.successResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 识别结果
|
||||||
|
* @param jsonObject
|
||||||
|
*/
|
||||||
|
@PostMapping("/v1/receiveIdentifyResults")
|
||||||
|
public void receiveIdentifyResults(@RequestBody JSONObject jsonObject) {
|
||||||
|
logger.info("相机系统接收识别结果 params:{}", jsonObject);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package com.jsowell.pile.dto.camera;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 相机心跳对象
|
||||||
|
*
|
||||||
|
* @author Lemon
|
||||||
|
* @Date 2023/12/5 10:29:49
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CameraHeartBeatDTO {
|
||||||
|
/**
|
||||||
|
* 设备名称
|
||||||
|
*/
|
||||||
|
@JSONField(name = "dev_name")
|
||||||
|
private String devName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 产品类型
|
||||||
|
*/
|
||||||
|
private String product;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备ip地址
|
||||||
|
* (有线网络地址)
|
||||||
|
*/
|
||||||
|
private String ip;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备序列号
|
||||||
|
*/
|
||||||
|
private String sn;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 回复状态
|
||||||
|
*/
|
||||||
|
private State state;
|
||||||
|
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class State{
|
||||||
|
@JSONField(name = "parking_number")
|
||||||
|
private String[] parkingNumber;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,422 @@
|
|||||||
|
package com.jsowell.pile.dto.camera;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 识别结果推送
|
||||||
|
*
|
||||||
|
* @author Lemon
|
||||||
|
* @Date 2023/12/5 11:08:07
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CameraIdentifyResultsDTO {
|
||||||
|
/**
|
||||||
|
* 识别id
|
||||||
|
*/
|
||||||
|
@JSONField(name = "reco_id")
|
||||||
|
private Integer recoId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结果序列号
|
||||||
|
*/
|
||||||
|
private String serial;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UTC时间
|
||||||
|
*/
|
||||||
|
@JSONField(name = "time_s")
|
||||||
|
private Integer times;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 触发类型
|
||||||
|
*
|
||||||
|
* 5:虚拟线圈触发;
|
||||||
|
* 6:稳定触发;
|
||||||
|
* 7:IO强制触发;
|
||||||
|
* 8:手动触发;
|
||||||
|
* 9:SDK抓拍;
|
||||||
|
* 10:实时结果(车辆实时入场事件)
|
||||||
|
* 12:单帧识别结果;
|
||||||
|
* 13:定时触发;
|
||||||
|
*/
|
||||||
|
@JSONField(name = "trigger_type")
|
||||||
|
private Integer triggerType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 适配通道
|
||||||
|
*/
|
||||||
|
@JSONField(name = "chnlid")
|
||||||
|
private Integer chnlId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备信息对象
|
||||||
|
*/
|
||||||
|
@JSONField(name = "device_info")
|
||||||
|
private DeviceInfo deviceInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报警信息对象
|
||||||
|
*/
|
||||||
|
@JSONField(name = "alarm_info")
|
||||||
|
private AlarmInfo alarmInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 背景图信息对象(数组)
|
||||||
|
*/
|
||||||
|
@JSONField(name = "bg_img")
|
||||||
|
private List<BgImg> bgImgList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 特征图信息对象(数组)
|
||||||
|
*/
|
||||||
|
@JSONField(name = "feture_img")
|
||||||
|
private List<FetureImg> fetureImgList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 路内产品信息
|
||||||
|
*/
|
||||||
|
@JSONField(name = "product_h")
|
||||||
|
private ProductH productH;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车位信息对象
|
||||||
|
*/
|
||||||
|
private Parking parking;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车牌信息对象
|
||||||
|
*/
|
||||||
|
private Plate plate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 识别信息对象
|
||||||
|
*/
|
||||||
|
private Reco reco;
|
||||||
|
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class DeviceInfo{
|
||||||
|
/**
|
||||||
|
* 设备名
|
||||||
|
* UTF8+BASE64编码
|
||||||
|
*/
|
||||||
|
@JSONField(name = "dev_name")
|
||||||
|
private String devName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备ip地址
|
||||||
|
*/
|
||||||
|
private String ip;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备sn编号
|
||||||
|
*/
|
||||||
|
private String sn;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class AlarmInfo{
|
||||||
|
/**
|
||||||
|
* 报警状态
|
||||||
|
*
|
||||||
|
* 0:无报警,默认值(取消报警)
|
||||||
|
* 1:视频遮挡
|
||||||
|
* 3:占用双车位/压线停车
|
||||||
|
* 4:非机动车/摩托车
|
||||||
|
* 5:车头/车尾方向不一致
|
||||||
|
* 7:无牌车
|
||||||
|
* 9:行人滞留(预留)
|
||||||
|
* (10-99:保留)
|
||||||
|
* ==“占用双车位/压线停车”和“车头/车尾方向不一致”,报警属于证据链==
|
||||||
|
*/
|
||||||
|
@JSONField(name = "alarm_status")
|
||||||
|
private Integer alarmStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 白名单/准入车型状态
|
||||||
|
* 1:在白名单/准入车型内,且有效
|
||||||
|
*
|
||||||
|
* 2:不在白名单/准入车型内,或验证未通过
|
||||||
|
* ==启用白名单后,优先判断白名单==
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@JSONField(name = "alarm_whitelist")
|
||||||
|
private Integer alarmWhiteList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class BgImg{
|
||||||
|
/**
|
||||||
|
* 图片数据
|
||||||
|
* base64格式的数据
|
||||||
|
*/
|
||||||
|
private String image;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片原始大小
|
||||||
|
* 字节数
|
||||||
|
*/
|
||||||
|
@JSONField(name = "image_length")
|
||||||
|
private Integer imageLength;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片发送标志
|
||||||
|
*/
|
||||||
|
@JSONField(name = "image_send_flag")
|
||||||
|
private Integer imageSendFlag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片的索引id
|
||||||
|
*/
|
||||||
|
private String key;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片缓存的路径名
|
||||||
|
*/
|
||||||
|
private String path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片分辨率
|
||||||
|
*/
|
||||||
|
private Resolution resolution;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class FetureImg{
|
||||||
|
private Integer type;
|
||||||
|
private String image;
|
||||||
|
|
||||||
|
@JSONField(name = "image_length")
|
||||||
|
private Integer imageLength;
|
||||||
|
|
||||||
|
@JSONField(name = "image_send_flag")
|
||||||
|
private Integer imageSendFlag;
|
||||||
|
private String key;
|
||||||
|
private String path;
|
||||||
|
private Resolution resolution;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class ProductH{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆信息对象
|
||||||
|
*/
|
||||||
|
@JSONField(name = "car_pos")
|
||||||
|
private CarPos carPos;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
private static class CarPos{
|
||||||
|
/**
|
||||||
|
* 位置坐标对象
|
||||||
|
* 按照背景图的分辨率
|
||||||
|
*/
|
||||||
|
private Loc loc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车头车尾信息
|
||||||
|
* 0:无效;
|
||||||
|
* 1:车头;
|
||||||
|
* 2:车尾
|
||||||
|
*/
|
||||||
|
private Integer pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class Parking{
|
||||||
|
private Loc loc;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
private static class Loc{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 坐标点
|
||||||
|
*/
|
||||||
|
@JSONField(name = "point")
|
||||||
|
private List<Point> pointList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 坐标点个数
|
||||||
|
*/
|
||||||
|
@JSONField(name = "point_num")
|
||||||
|
private Integer pointNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标点坐标系尺寸
|
||||||
|
*/
|
||||||
|
@JSONField(name = "reco_zone_size_factor")
|
||||||
|
private RecoZoneSizeFactor recoZoneSizeFactor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车位状态
|
||||||
|
*
|
||||||
|
* 0x01:入场;
|
||||||
|
* 0x02:在场;
|
||||||
|
* 0x04:出场;
|
||||||
|
* 0x08:空场;
|
||||||
|
* 0x10:车位异常(=="跨车位报警"和"视频遮挡"时==);
|
||||||
|
* 0x20:延迟上报出场(预留);
|
||||||
|
* 0x40:合并出入场(预留);
|
||||||
|
* 0x80:预入场(预留);
|
||||||
|
* 0x100:预出场(预留);
|
||||||
|
* 0x200:入场修正(预留)
|
||||||
|
*/
|
||||||
|
@JSONField(name = "parking_state")
|
||||||
|
private Integer parkingState;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车位id
|
||||||
|
*/
|
||||||
|
@JSONField(name = "zone_id")
|
||||||
|
private Integer zoneId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车位名
|
||||||
|
*/
|
||||||
|
@JSONField(name = "zone_name")
|
||||||
|
private String zoneName;
|
||||||
|
|
||||||
|
|
||||||
|
@Data
|
||||||
|
private static class Point{
|
||||||
|
// 点x坐标
|
||||||
|
private Integer x;
|
||||||
|
// 点y坐标
|
||||||
|
private Integer y;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
private static class RecoZoneSizeFactor{
|
||||||
|
/**
|
||||||
|
* 坐标点坐标系尺寸高度
|
||||||
|
*/
|
||||||
|
@JSONField(name = "factor_h")
|
||||||
|
private Integer factorH;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 坐标点坐标系尺寸宽度
|
||||||
|
*/
|
||||||
|
@JSONField(name = "factor_w")
|
||||||
|
private Integer factorW;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class Plate{
|
||||||
|
/**
|
||||||
|
* 车牌颜色
|
||||||
|
*
|
||||||
|
* 0:未知;
|
||||||
|
* 1:蓝色;
|
||||||
|
* 2:黄色;
|
||||||
|
* 3:白色;
|
||||||
|
* 4:黑色;
|
||||||
|
* 5:绿色;
|
||||||
|
*/
|
||||||
|
private Integer color;
|
||||||
|
|
||||||
|
// 车牌置信度
|
||||||
|
private Integer confidence;
|
||||||
|
private Loc loc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车牌
|
||||||
|
* UTF8后再BASE64编码
|
||||||
|
* 如果有车牌:真实车牌号
|
||||||
|
* 如果有车无牌:无牌车
|
||||||
|
* 如果无车无牌:__无__
|
||||||
|
* 非机动车:非机动车
|
||||||
|
*/
|
||||||
|
private String plate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车牌类型
|
||||||
|
*
|
||||||
|
* 0:未知车牌
|
||||||
|
* 1:蓝牌小汽车
|
||||||
|
* 2:黑牌小汽车
|
||||||
|
* 3:单排黄牌
|
||||||
|
* 4:双排黄牌(大车尾牌,农用车)
|
||||||
|
* 5:警车车牌
|
||||||
|
* 6:武警车牌
|
||||||
|
* 7:个性化车牌
|
||||||
|
* 8:单排军车牌
|
||||||
|
* 9:双排军车牌
|
||||||
|
* 10:使馆车牌
|
||||||
|
* 11:香港进出中国大陆车牌
|
||||||
|
* 12:农用车牌
|
||||||
|
* 13:教练车牌
|
||||||
|
* 14:澳门进出中国大陆车牌
|
||||||
|
* 15:双层武警车牌
|
||||||
|
* 16:武警总队车牌
|
||||||
|
* 17:双层武警总队车牌
|
||||||
|
* 18:民航车牌
|
||||||
|
* 19:新能源车牌
|
||||||
|
* 20:新能源车牌大
|
||||||
|
* 21:应急
|
||||||
|
* 22:领馆
|
||||||
|
*/
|
||||||
|
private Integer type;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class Reco{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 识别组id
|
||||||
|
*/
|
||||||
|
@JSONField(name = "group_id")
|
||||||
|
private Integer groupId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 识别标志
|
||||||
|
*/
|
||||||
|
@JSONField(name = "reco_flag")
|
||||||
|
private Integer recoFlag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 识别id
|
||||||
|
*/
|
||||||
|
@JSONField(name = "reco_id")
|
||||||
|
private Integer recoId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 识别时间(字符串格式时间)
|
||||||
|
*/
|
||||||
|
@JSONField(name = "reco_time")
|
||||||
|
private String recoTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Data
|
||||||
|
private static class Resolution{
|
||||||
|
/**
|
||||||
|
* 图片高
|
||||||
|
*/
|
||||||
|
private Integer height;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片宽
|
||||||
|
*/
|
||||||
|
private Integer width;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
private static class Loc{
|
||||||
|
// 下
|
||||||
|
private Integer bottom;
|
||||||
|
// 左
|
||||||
|
private Integer left;
|
||||||
|
// 右
|
||||||
|
private Integer right;
|
||||||
|
// 上
|
||||||
|
private Integer top;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
39
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/camera/common/CameraCommonResult.java
vendored
Normal file
39
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/camera/common/CameraCommonResult.java
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
package com.jsowell.thirdparty.camera.common;
|
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 相机系统通用回复
|
||||||
|
*
|
||||||
|
* @author Lemon
|
||||||
|
* @Date 2023/12/5 11:12:11
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class CameraCommonResult {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 回复状态
|
||||||
|
*/
|
||||||
|
private Integer state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 错误信息
|
||||||
|
*/
|
||||||
|
@JSONField(name = "err_msg")
|
||||||
|
private String errMsg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 无指令成功响应
|
||||||
|
* @param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public CameraCommonResult successResponse() {
|
||||||
|
return new CameraCommonResult(200, "all done");
|
||||||
|
}
|
||||||
|
}
|
||||||
11
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/camera/service/CameraService.java
vendored
Normal file
11
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/camera/service/CameraService.java
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package com.jsowell.thirdparty.camera.service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*
|
||||||
|
* @author Lemon
|
||||||
|
* @Date 2023/12/5 11:11:32
|
||||||
|
*/
|
||||||
|
public class CameraService {
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user