mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 02:55:04 +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