报警统计相关接口
parent
2e8c7daea6
commit
af9ab0aa0d
124
REGION-API.md
124
REGION-API.md
|
|
@ -1,124 +0,0 @@
|
|||
# 区域管理接口(REGION-01~05)
|
||||
|
||||
## 公共约定
|
||||
|
||||
- 内部接口前缀:`/edgeguard/regions`
|
||||
- 企业来自公共服务,`edgeguard_region` 只保存真实区域及 `corp_id`。
|
||||
- 所有接口先按公共企业服务返回的当前调用人可访问企业校验数据范围。
|
||||
- `nodeType=CORP` 表示企业虚拟根;`nodeType=REGION` 表示本地真实区域。
|
||||
- 菜单权限编码尚未分配,因此 Controller 暂不填写 `@PreAuthorize`;菜单资源确定后必须补齐。
|
||||
|
||||
## REGION-01 区域树
|
||||
|
||||
```http
|
||||
GET /edgeguard/regions/tree?corpId=1001
|
||||
```
|
||||
|
||||
`corpId` 可省略。返回企业虚拟根,即使企业尚无区域也返回空 `children`。
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": [{
|
||||
"nodeId": "C-1001",
|
||||
"nodeType": "CORP",
|
||||
"id": 1001,
|
||||
"corpId": 1001,
|
||||
"nodeName": "示例企业",
|
||||
"treeLevel": 0,
|
||||
"children": [{
|
||||
"nodeId": "R-10",
|
||||
"nodeType": "REGION",
|
||||
"id": 10,
|
||||
"corpId": 1001,
|
||||
"parentId": 0,
|
||||
"nodeName": "一号厂区",
|
||||
"regionCode": "8f06f25cd7f84a1682ed86cdfa3da417",
|
||||
"treeLevel": 1,
|
||||
"sortNo": 0,
|
||||
"regionStatus": "ENABLED",
|
||||
"children": []
|
||||
}]
|
||||
}]
|
||||
}
|
||||
```
|
||||
|
||||
## REGION-02 区域详情
|
||||
|
||||
```http
|
||||
GET /edgeguard/regions/10
|
||||
```
|
||||
|
||||
详情返回企业名称、负责人名称、有序围栏点和用于修改的 `version`。
|
||||
|
||||
## REGION-03 新增区域
|
||||
|
||||
```http
|
||||
POST /edgeguard/regions
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"corpId": 1001,
|
||||
"parentId": 0,
|
||||
"regionName": "一号厂区",
|
||||
"leaderUserId": 2001,
|
||||
"coordinateSystem": "GCJ02",
|
||||
"fencePoints": [
|
||||
{"seq": 1, "longitude": 113.1, "latitude": 23.1},
|
||||
{"seq": 2, "longitude": 113.2, "latitude": 23.1},
|
||||
{"seq": 3, "longitude": 113.2, "latitude": 23.2},
|
||||
{"seq": 4, "longitude": 113.1, "latitude": 23.2}
|
||||
],
|
||||
"sortNo": 0,
|
||||
"remarks": "示例"
|
||||
}
|
||||
```
|
||||
|
||||
服务端生成 `regionCode`、`treePath`、`treeLevel`,初始状态为 `ENABLED`。
|
||||
|
||||
## REGION-04 修改区域
|
||||
|
||||
```http
|
||||
PUT /edgeguard/regions/10
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"regionName": "一号厂区东区",
|
||||
"leaderUserId": 2001,
|
||||
"coordinateSystem": "GCJ02",
|
||||
"fencePoints": [
|
||||
{"seq": 1, "longitude": 113.1, "latitude": 23.1},
|
||||
{"seq": 2, "longitude": 113.2, "latitude": 23.1},
|
||||
{"seq": 3, "longitude": 113.2, "latitude": 23.2},
|
||||
{"seq": 4, "longitude": 113.1, "latitude": 23.2}
|
||||
],
|
||||
"sortNo": 10,
|
||||
"regionStatus": "ENABLED",
|
||||
"version": 1,
|
||||
"remarks": "修改示例"
|
||||
}
|
||||
```
|
||||
|
||||
一期不接受 `parentId`、`corpId`、`regionCode`、`treePath` 或 `treeLevel` 修改。
|
||||
|
||||
## REGION-05 删除区域
|
||||
|
||||
```http
|
||||
DELETE /edgeguard/regions/10
|
||||
```
|
||||
|
||||
仅执行逻辑删除。存在子区域或 `BOUND` 摄像头绑定时拒绝删除。
|
||||
|
||||
## 当前业务异常
|
||||
|
||||
| 场景 | 信息 |
|
||||
| --- | --- |
|
||||
| 企业越权 | 无权访问该企业数据 |
|
||||
| 区域不存在 | 区域不存在 / 父区域不存在 |
|
||||
| 同级重名 | 同级区域名称已存在 |
|
||||
| 负责人无效 | 区域负责人不存在或已停用 |
|
||||
| 负责人跨企业 | 区域负责人不属于当前企业 |
|
||||
| 围栏无效 | 点数、序号、范围、重复点、自相交或零面积对应提示 |
|
||||
| 并发修改 | 区域已被其他用户修改,请刷新后重试 |
|
||||
| 删除受限 | 区域存在下级区域,不能删除 / 区域仍绑定有效摄像头,不能删除 |
|
||||
|
||||
|
|
@ -4,7 +4,6 @@ import com.alibaba.cola.exception.BizException;
|
|||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||
import com.zcloud.gbs.edgeguard.domain.gateway.AlarmDisposalGateway;
|
||||
import com.zcloud.gbs.edgeguard.domain.gateway.AlarmGateway;
|
||||
import com.zcloud.gbs.edgeguard.domain.gateway.HiddenGateway;
|
||||
import com.zcloud.gbs.edgeguard.domain.model.AlarmDisposalE;
|
||||
import com.zcloud.gbs.edgeguard.domain.model.AlarmE;
|
||||
import com.zcloud.gbs.edgeguard.dto.AlarmDisposeCmd;
|
||||
|
|
@ -19,7 +18,6 @@ import java.util.Date;
|
|||
public class AlarmDisposeExe {
|
||||
private final AlarmGateway alarmGateway;
|
||||
private final AlarmDisposalGateway disposalGateway;
|
||||
private final HiddenGateway hiddenGateway;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void execute(Long alarmId, AlarmDisposeCmd cmd) {
|
||||
|
|
@ -33,15 +31,7 @@ public class AlarmDisposeExe {
|
|||
validate(cmd);
|
||||
|
||||
Long handlerUserId = AuthContext.getUserId();
|
||||
String handlerName = AuthContext.getCurrentUser().getName();
|
||||
String hiddenId = null;
|
||||
if (Integer.valueOf(1).equals(cmd.getIsHiddenHazard())) {
|
||||
try {
|
||||
hiddenId = hiddenGateway.createFromAlarm(alarm, handlerUserId, handlerName);
|
||||
} catch (Exception exception) {
|
||||
throw new BizException("创建隐患失败: " + exception.getMessage());
|
||||
}
|
||||
}
|
||||
String hiddenId = Integer.valueOf(1).equals(cmd.getIsHiddenHazard()) ? cmd.getHiddenId().trim() : null;
|
||||
|
||||
AlarmDisposalE disposal = new AlarmDisposalE();
|
||||
disposal.setAlarmId(alarmId);
|
||||
|
|
@ -73,6 +63,10 @@ public class AlarmDisposeExe {
|
|||
if (falseAlarm == 0 && cmd.getIsHiddenHazard() == null) {
|
||||
throw new BizException("非误报时必须选择是否隐患");
|
||||
}
|
||||
if (Integer.valueOf(1).equals(cmd.getIsHiddenHazard())
|
||||
&& (cmd.getHiddenId() == null || cmd.getHiddenId().trim().isEmpty())) {
|
||||
throw new BizException("判定为隐患时隐患ID不能为空");
|
||||
}
|
||||
if (falseAlarm == 0 && Integer.valueOf(0).equals(cmd.getIsHiddenHazard())
|
||||
&& (cmd.getDisposalResultCode() == null || cmd.getDisposalResultCode().trim().isEmpty())) {
|
||||
throw new BizException("非隐患必须填写处置结果");
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import java.util.Set;
|
|||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class RegionCameraBindExe {
|
||||
private static final String CAMERA_SOURCE = "VIDEOPATROL";
|
||||
private static final String CAMERA_SOURCE = "HIKVISION";
|
||||
private final RegionAccessService accessService;
|
||||
private final RegionCameraBindTransaction transaction;
|
||||
|
||||
|
|
@ -27,10 +27,7 @@ public class RegionCameraBindExe {
|
|||
List<RegionCameraE> snapshots = new ArrayList<>();
|
||||
Set<String> identities = new HashSet<>();
|
||||
for (CameraSelectionCmd camera : cmd.getCameras()) {
|
||||
if (!region.getCorpId().equals(camera.getCorpinfoId())) {
|
||||
throw new BizException("摄像头所属单位与区域所属企业不一致:" + camera.getVideoName());
|
||||
}
|
||||
String cameraId = camera.getFixedCameraId().trim();
|
||||
String cameraId = camera.getIndexCode().trim();
|
||||
CameraKeyE key = new CameraKeyE(CAMERA_SOURCE, cameraId);
|
||||
if (!identities.add(key.identity())) {
|
||||
throw new BizException("摄像头选择结果存在重复项");
|
||||
|
|
@ -44,22 +41,9 @@ public class RegionCameraBindExe {
|
|||
private RegionCameraE toSnapshot(CameraSelectionCmd camera) {
|
||||
RegionCameraE snapshot = new RegionCameraE();
|
||||
snapshot.setCameraSource(CAMERA_SOURCE);
|
||||
snapshot.setCameraId(camera.getFixedCameraId().trim());
|
||||
snapshot.setCameraName(camera.getVideoName().trim());
|
||||
snapshot.setVideoType(camera.getVideoType());
|
||||
snapshot.setCameraUnitId(camera.getCorpinfoId());
|
||||
snapshot.setCameraUnitName(camera.getCorpinfoName());
|
||||
snapshot.setCameraDeptId(camera.getDepartmentId());
|
||||
snapshot.setCameraDeptName(camera.getDepartmentName());
|
||||
snapshot.setVideoLevel(camera.getVideoLevel());
|
||||
snapshot.setVideoAddress(camera.getVideoAddress());
|
||||
snapshot.setIsOnline(camera.getIsOnline());
|
||||
snapshot.setDeviceModel(camera.getDeviceModel());
|
||||
snapshot.setDeviceGbNumber(camera.getDeviceGbNumber());
|
||||
snapshot.setCameraNumber(camera.getCameraNumber());
|
||||
snapshot.setLongitude(camera.getLongitude());
|
||||
snapshot.setLatitude(camera.getLatitude());
|
||||
snapshot.setRemarks(camera.getRemarks());
|
||||
snapshot.setCameraId(camera.getIndexCode().trim());
|
||||
snapshot.setCameraName(camera.getName().trim());
|
||||
snapshot.setCameraRegionName(camera.getRegionName());
|
||||
return snapshot;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,9 +32,9 @@ public class RegionCameraQueryExe {
|
|||
int pageIndex = safePageIndex(qry.getPageIndex());
|
||||
int pageSize = safePageSize(qry.getPageSize());
|
||||
List<RegionCameraE> rows = cameraGateway.pageBound(
|
||||
region.getId(), qry.getName(), qry.getVideoLevel(), qry.getIsOnline(), pageIndex, pageSize);
|
||||
region.getId(), qry.getName(), pageIndex, pageSize);
|
||||
long total = cameraGateway.countBound(
|
||||
region.getId(), qry.getName(), qry.getVideoLevel(), qry.getIsOnline());
|
||||
region.getId(), qry.getName());
|
||||
|
||||
Set<Long> leaderIds = new HashSet<>();
|
||||
for (RegionCameraE row : rows) {
|
||||
|
|
@ -48,12 +48,6 @@ public class RegionCameraQueryExe {
|
|||
for (RegionCameraE row : rows) {
|
||||
RegionCameraCo co = new RegionCameraCo();
|
||||
BeanUtils.copyProperties(row, co);
|
||||
co.setFixedCameraId(row.getCameraId());
|
||||
co.setVideoName(row.getCameraName());
|
||||
co.setCorpinfoId(row.getCameraUnitId());
|
||||
co.setCorpinfoName(row.getCameraUnitName());
|
||||
co.setDepartmentId(row.getCameraDeptId());
|
||||
co.setDepartmentName(row.getCameraDeptName());
|
||||
co.setRegionName(region.getRegionName());
|
||||
co.setLeaderUserName(leaderNames.get(row.getLeaderUserId()));
|
||||
result.add(co);
|
||||
|
|
|
|||
|
|
@ -72,8 +72,8 @@ public class RegionCameraBindTransactionTest {
|
|||
@Override public Boolean deleteById(Long id) { return false; }
|
||||
@Override public RegionCameraE getById(Long id) { return null; }
|
||||
@Override public boolean existsBoundByRegionId(Long regionId) { return false; }
|
||||
@Override public List<RegionCameraE> pageBound(Long regionId, String name, String level, Integer online, int index, int size) { return Collections.emptyList(); }
|
||||
@Override public long countBound(Long regionId, String name, String level, Integer online) { return 0; }
|
||||
@Override public List<RegionCameraE> pageBound(Long regionId, String name, int index, int size) { return Collections.emptyList(); }
|
||||
@Override public long countBound(Long regionId, String name) { return 0; }
|
||||
@Override public List<RegionCameraE> listBoundByRegionId(Long regionId) {
|
||||
List<RegionCameraE> result = new ArrayList<>();
|
||||
for (RegionCameraE row : rows) if (regionId.equals(row.getRegionId()) && "BOUND".equals(row.getBindStatus())) result.add(row);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ public class AlarmDisposeCmd extends Command {
|
|||
@NotNull(message = "是否误报不能为空")
|
||||
private Integer isFalseAlarm;
|
||||
private Integer isHiddenHazard;
|
||||
/** 前端创建隐患成功后返回的隐患ID。 */
|
||||
private String hiddenId;
|
||||
private String disposalResultCode;
|
||||
private String disposalResultName;
|
||||
private String disposalDescription;
|
||||
|
|
|
|||
|
|
@ -3,28 +3,14 @@ package com.zcloud.gbs.edgeguard.dto;
|
|||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class CameraSelectionCmd implements Serializable {
|
||||
@NotBlank(message = "固定摄像头业务ID不能为空")
|
||||
private String fixedCameraId;
|
||||
@NotBlank(message = "视频名称不能为空")
|
||||
private String videoName;
|
||||
private String videoType;
|
||||
@NotNull(message = "所属单位ID不能为空")
|
||||
private Long corpinfoId;
|
||||
private String corpinfoName;
|
||||
private Long departmentId;
|
||||
private String departmentName;
|
||||
private String videoLevel;
|
||||
private String videoAddress;
|
||||
private Integer isOnline;
|
||||
private String deviceModel;
|
||||
private String deviceGbNumber;
|
||||
private String cameraNumber;
|
||||
private String longitude;
|
||||
private String latitude;
|
||||
private String remarks;
|
||||
@NotBlank(message = "摄像头编码不能为空")
|
||||
private String indexCode;
|
||||
@NotBlank(message = "摄像头名称不能为空")
|
||||
private String name;
|
||||
/** 海康平台中的所属区域名称,仅作为摄像头快照。 */
|
||||
private String regionName;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,4 @@ public class RegionCameraPageQry extends PageQuery {
|
|||
@ApiModelProperty(value = "区域ID", required = true)
|
||||
private Long regionId;
|
||||
private String name;
|
||||
private String videoLevel;
|
||||
private Integer isOnline;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,21 +10,11 @@ public class RegionCameraCo extends ClientObject {
|
|||
private Long id;
|
||||
private Long regionId;
|
||||
private String regionName;
|
||||
private String fixedCameraId;
|
||||
private String videoName;
|
||||
private String videoType;
|
||||
private Long corpinfoId;
|
||||
private String corpinfoName;
|
||||
private Long departmentId;
|
||||
private String departmentName;
|
||||
private String videoLevel;
|
||||
private String videoAddress;
|
||||
private Integer isOnline;
|
||||
private String deviceModel;
|
||||
private String deviceGbNumber;
|
||||
private String cameraNumber;
|
||||
private String longitude;
|
||||
private String latitude;
|
||||
private Long corpId;
|
||||
private String cameraSource;
|
||||
private String cameraId;
|
||||
private String cameraName;
|
||||
private String cameraRegionName;
|
||||
private Long leaderUserId;
|
||||
private String leaderUserName;
|
||||
private String bindStatus;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,5 @@
|
|||
package com.zcloud.gbs.edgeguard.domain.gateway;
|
||||
|
||||
import com.zcloud.gbs.edgeguard.domain.model.AlarmE;
|
||||
|
||||
public interface HiddenGateway {
|
||||
String createFromAlarm(AlarmE alarm, Long handlerUserId, String handlerName);
|
||||
|
||||
Integer queryStatus(String hiddenId, String alarmNo);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,9 +12,8 @@ public interface RegionCameraGateway {
|
|||
Boolean deleteById(Long id);
|
||||
RegionCameraE getById(Long id);
|
||||
boolean existsBoundByRegionId(Long regionId);
|
||||
List<RegionCameraE> pageBound(Long regionId, String cameraName, String videoLevel,
|
||||
Integer isOnline, int pageIndex, int pageSize);
|
||||
long countBound(Long regionId, String cameraName, String videoLevel, Integer isOnline);
|
||||
List<RegionCameraE> pageBound(Long regionId, String cameraName, int pageIndex, int pageSize);
|
||||
long countBound(Long regionId, String cameraName);
|
||||
List<RegionCameraE> listBoundByRegionId(Long regionId);
|
||||
List<RegionCameraE> listByKeys(Long corpId, Collection<CameraKeyE> cameraKeys);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,19 +18,7 @@ public class RegionCameraE extends BaseE {
|
|||
private String cameraSource;
|
||||
private String cameraId;
|
||||
private String cameraName;
|
||||
private String videoType;
|
||||
private Long cameraUnitId;
|
||||
private String cameraUnitName;
|
||||
private Long cameraDeptId;
|
||||
private String cameraDeptName;
|
||||
private String videoLevel;
|
||||
private String videoAddress;
|
||||
private Integer isOnline;
|
||||
private String deviceModel;
|
||||
private String deviceGbNumber;
|
||||
private String cameraNumber;
|
||||
private String longitude;
|
||||
private String latitude;
|
||||
private String cameraRegionName;
|
||||
private Long leaderUserId;
|
||||
private String bindStatus;
|
||||
private Date boundTime;
|
||||
|
|
|
|||
|
|
@ -1,64 +1,18 @@
|
|||
package com.zcloud.gbs.edgeguard.gatewayimpl;
|
||||
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.gbscommon.zcloudhidden.face.ZcloudHiddenFacade;
|
||||
import com.zcloud.gbscommon.zcloudhidden.request.HiddenAddCmd;
|
||||
import com.zcloud.gbscommon.zcloudhidden.request.HiddenImgAddCmd;
|
||||
import com.zcloud.gbscommon.zcloudhidden.request.HiddenStatisticsListQry;
|
||||
import com.zcloud.gbscommon.zcloudhidden.response.HiddenListCO;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.zcloud.gbs.edgeguard.domain.gateway.HiddenGateway;
|
||||
import com.zcloud.gbs.edgeguard.domain.model.AlarmE;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
import java.util.Collections;
|
||||
|
||||
@Component
|
||||
public class HiddenGatewayImpl implements HiddenGateway {
|
||||
@DubboReference(check = false)
|
||||
private ZcloudHiddenFacade hiddenFacade;
|
||||
|
||||
@Override
|
||||
public String createFromAlarm(AlarmE alarm, Long handlerUserId, String handlerName) {
|
||||
HiddenAddCmd cmd = new HiddenAddCmd();
|
||||
cmd.setHiddenId(UUID.randomUUID().toString());
|
||||
cmd.setSource(1);
|
||||
cmd.setForeignKey(alarm.getAlarmNo());
|
||||
cmd.setHiddenDesc("边缘人脸识别区域报警");
|
||||
cmd.setHiddenPart(alarm.getAlarmAddress());
|
||||
cmd.setHiddenLevel("hiddenLevel1004");
|
||||
cmd.setHiddenLevelName("一般隐患");
|
||||
cmd.setHiddenType("alarm");
|
||||
cmd.setHiddenTypeName("报警隐患");
|
||||
cmd.setPositionDesc(alarm.getRegionPathSnapshot());
|
||||
cmd.setHiddenFindWay("1");
|
||||
cmd.setIsAi(0);
|
||||
cmd.setCorpId(alarm.getCorpId());
|
||||
cmd.setCorpName(alarm.getCorpNameSnapshot());
|
||||
cmd.setCreatorId(handlerUserId);
|
||||
cmd.setCreatorName(handlerName);
|
||||
cmd.setConfirmUserId(handlerUserId);
|
||||
cmd.setConfirmUserName(handlerName);
|
||||
cmd.setHiddenFindTime(new Date());
|
||||
cmd.setRectificationType(2);
|
||||
cmd.setHiddenJson("{\"confirm\":\"1\",\"rectificationType\":2}");
|
||||
if (alarm.getAlarmImageUrl() != null && !alarm.getAlarmImageUrl().trim().isEmpty()) {
|
||||
HiddenImgAddCmd image = new HiddenImgAddCmd();
|
||||
image.setCorpId(alarm.getCorpId());
|
||||
image.setHiddenId(cmd.getHiddenId());
|
||||
image.setUrl(alarm.getAlarmImageUrl());
|
||||
cmd.setHiddenImgAddCmds(Collections.singletonList(image));
|
||||
}
|
||||
SingleResponse<?> response = hiddenFacade.addHidden(cmd);
|
||||
if (response == null || !response.isSuccess()) {
|
||||
throw new IllegalStateException(response == null ? "创建隐患失败" : response.getErrMessage());
|
||||
}
|
||||
return cmd.getHiddenId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer queryStatus(String hiddenId, String alarmNo) {
|
||||
HiddenStatisticsListQry qry = new HiddenStatisticsListQry();
|
||||
|
|
|
|||
|
|
@ -50,17 +50,16 @@ public class RegionCameraGatewayImpl implements RegionCameraGateway {
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<RegionCameraE> pageBound(Long regionId, String cameraName, String videoLevel,
|
||||
Integer isOnline, int pageIndex, int pageSize) {
|
||||
LambdaQueryWrapper<RegionCameraDO> wrapper = boundWrapper(regionId, cameraName, videoLevel, isOnline)
|
||||
public List<RegionCameraE> pageBound(Long regionId, String cameraName, int pageIndex, int pageSize) {
|
||||
LambdaQueryWrapper<RegionCameraDO> wrapper = boundWrapper(regionId, cameraName)
|
||||
.orderByDesc(RegionCameraDO::getBoundTime).orderByDesc(RegionCameraDO::getId);
|
||||
Page<RegionCameraDO> page = repository.page(new Page<>(pageIndex, pageSize), wrapper);
|
||||
return toEntities(page.getRecords());
|
||||
}
|
||||
|
||||
@Override
|
||||
public long countBound(Long regionId, String cameraName, String videoLevel, Integer isOnline) {
|
||||
return repository.count(boundWrapper(regionId, cameraName, videoLevel, isOnline));
|
||||
public long countBound(Long regionId, String cameraName) {
|
||||
return repository.count(boundWrapper(regionId, cameraName));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -94,14 +93,11 @@ public class RegionCameraGatewayImpl implements RegionCameraGateway {
|
|||
return toEntities(repository.list(wrapper));
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<RegionCameraDO> boundWrapper(Long regionId, String cameraName,
|
||||
String videoLevel, Integer isOnline) {
|
||||
private LambdaQueryWrapper<RegionCameraDO> boundWrapper(Long regionId, String cameraName) {
|
||||
return new LambdaQueryWrapper<RegionCameraDO>()
|
||||
.eq(RegionCameraDO::getRegionId, regionId)
|
||||
.eq(RegionCameraDO::getBindStatus, "BOUND")
|
||||
.like(cameraName != null && !cameraName.trim().isEmpty(), RegionCameraDO::getCameraName, cameraName)
|
||||
.eq(videoLevel != null && !videoLevel.trim().isEmpty(), RegionCameraDO::getVideoLevel, videoLevel)
|
||||
.eq(isOnline != null, RegionCameraDO::getIsOnline, isOnline);
|
||||
.like(cameraName != null && !cameraName.trim().isEmpty(), RegionCameraDO::getCameraName, cameraName);
|
||||
}
|
||||
|
||||
private List<RegionCameraE> toEntities(List<RegionCameraDO> rows) {
|
||||
|
|
|
|||
|
|
@ -16,19 +16,7 @@ public class RegionCameraDO extends BaseDO {
|
|||
private String cameraSource;
|
||||
private String cameraId;
|
||||
private String cameraName;
|
||||
private String videoType;
|
||||
private Long cameraUnitId;
|
||||
private String cameraUnitName;
|
||||
private Long cameraDeptId;
|
||||
private String cameraDeptName;
|
||||
private String videoLevel;
|
||||
private String videoAddress;
|
||||
private Integer isOnline;
|
||||
private String deviceModel;
|
||||
private String deviceGbNumber;
|
||||
private String cameraNumber;
|
||||
private String longitude;
|
||||
private String latitude;
|
||||
private String cameraRegionName;
|
||||
private Long leaderUserId;
|
||||
private String bindStatus;
|
||||
private Date boundTime;
|
||||
|
|
|
|||
|
|
@ -42,19 +42,7 @@ CREATE TABLE `edgeguard_region_camera` (
|
|||
`camera_source` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '摄像头来源系统编码',
|
||||
`camera_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '第三方摄像头唯一标识',
|
||||
`camera_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '摄像头名称缓存,第三方为权威数据源',
|
||||
`video_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '视频类型快照',
|
||||
`camera_unit_id` bigint DEFAULT NULL COMMENT '所属单位ID快照',
|
||||
`camera_unit_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '所属单位名称快照',
|
||||
`camera_dept_id` bigint DEFAULT NULL COMMENT '主管部门ID快照',
|
||||
`camera_dept_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '主管部门名称快照',
|
||||
`video_level` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '视频等级快照',
|
||||
`video_address` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '视频地址快照',
|
||||
`is_online` int DEFAULT NULL COMMENT '在线状态:0离线,1在线',
|
||||
`device_model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '规格型号快照',
|
||||
`device_gb_number` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '设备国标编号快照',
|
||||
`camera_number` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '摄像头编号快照',
|
||||
`longitude` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '经度快照',
|
||||
`latitude` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '纬度快照',
|
||||
`camera_region_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '海康平台所属区域名称快照',
|
||||
`leader_user_id` bigint DEFAULT NULL COMMENT '摄像头负责人用户id',
|
||||
`bind_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'BOUND' COMMENT '绑定状态BOUND/UNBOUND',
|
||||
`bound_time` datetime NOT NULL COMMENT '最近绑定时间',
|
||||
|
|
@ -75,7 +63,7 @@ CREATE TABLE `edgeguard_region_camera` (
|
|||
UNIQUE KEY `uk_camera_source_id` (`tenant_id`, `camera_source`, `camera_id`),
|
||||
KEY `idx_region_camera` (`tenant_id`, `region_id`, `bind_status`, `delete_enum`),
|
||||
KEY `idx_camera_corp` (`tenant_id`, `corp_id`, `delete_enum`),
|
||||
KEY `idx_camera_filter` (`tenant_id`, `region_id`, `bind_status`, `video_level`, `is_online`, `delete_enum`),
|
||||
KEY `idx_camera_filter` (`tenant_id`, `region_id`, `bind_status`, `delete_enum`),
|
||||
KEY `idx_camera_name` (`camera_name`),
|
||||
KEY `idx_camera_leader` (`leader_user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='区域与第三方摄像头绑定表';
|
||||
|
|
|
|||
Loading…
Reference in New Issue