1.同步大华平台设备 组织架构信息

koumen
shenzhidan 2026-08-01 11:20:27 +08:00
parent 00de04fd98
commit 81740090b4
5 changed files with 112 additions and 6 deletions

View File

@ -8,6 +8,8 @@ import com.zcloud.primeport.domain.model.DaHuaCarPageCmd;
import com.zcloud.primeport.domain.model.DaHuaPersonSyncCmd;
import com.zcloud.primeport.dto.DaHuaCarDeleteCmd;
import com.zcloud.primeport.dto.DaHuaPersonDeleteCmd;
import com.zcloud.primeport.dto.DaHuaResourceSyncCmd;
import com.zcloud.primeport.dto.clientobject.DaHuaResourceSyncResultCO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@ -15,6 +17,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
import javax.validation.Valid;
@Api(tags = "大华平台对接")
@RequestMapping("/${application.gateway}/dahua")
@ -105,4 +108,14 @@ public class DaHuaController {
}
return daHuaService.deletePerson(cmd);
}
}
@ApiOperation("同步大华部门、企业映射和门口设备")
@PostMapping("/resource/sync")
public SingleResponse<DaHuaResourceSyncResultCO> syncResources(
@Valid @RequestBody(required = false) DaHuaResourceSyncCmd cmd) {
if (daHuaService == null) {
throw new RuntimeException("大华服务未配置");
}
return daHuaService.syncResources(cmd);
}
}

View File

@ -7,9 +7,13 @@ import com.zcloud.primeport.domain.model.DaHuaAccessRecordCmd;
import com.zcloud.primeport.domain.model.DaHuaCarAddCmd;
import com.zcloud.primeport.domain.model.DaHuaCarPageCmd;
import com.zcloud.primeport.domain.model.DaHuaPersonSyncCmd;
import com.zcloud.primeport.domain.model.DaHuaResourceSyncResultE;
import com.zcloud.primeport.dto.DaHuaCarDeleteCmd;
import com.zcloud.primeport.dto.DaHuaPersonDeleteCmd;
import com.zcloud.primeport.dto.DaHuaResourceSyncCmd;
import com.zcloud.primeport.dto.clientobject.DaHuaResourceSyncResultCO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Map;
@ -20,6 +24,9 @@ public class DaHuaServiceImpl implements DaHuaServiceI {
@Autowired
private DaHuaGateway daHuaGateway;
@Autowired
private DaHuaResourceSyncApplicationService daHuaResourceSyncApplicationService;
@Override
public SingleResponse<Long> generatePersonId() {
Long id = daHuaGateway.generatePersonId();
@ -196,4 +203,16 @@ public class DaHuaServiceImpl implements DaHuaServiceI {
System.out.println("大华门禁事件查询最终返回 - success:" + resp.isSuccess() + ", errCode:" + resp.getErrCode() + ", errMessage:" + resp.getErrMessage() + ", data:" + (dhData != null ? "已返回数据" : "null"));
return resp;
}
}
@Override
public SingleResponse<DaHuaResourceSyncResultCO> syncResources(DaHuaResourceSyncCmd cmd) {
DaHuaResourceSyncCmd actualCmd = cmd == null ? new DaHuaResourceSyncCmd() : cmd;
int pageSize = actualCmd.getPageSize() == null ? 200 : actualCmd.getPageSize();
boolean autoMatchByName = actualCmd.getAutoMatchByName() == null || actualCmd.getAutoMatchByName();
DaHuaResourceSyncResultE result = daHuaResourceSyncApplicationService.sync(
pageSize, actualCmd.getSubsystem(), autoMatchByName);
DaHuaResourceSyncResultCO data = new DaHuaResourceSyncResultCO();
BeanUtils.copyProperties(result, data);
return SingleResponse.of(data);
}
}

View File

@ -8,6 +8,8 @@ import com.zcloud.primeport.domain.model.DaHuaCarPageCmd;
import com.zcloud.primeport.domain.model.DaHuaPersonSyncCmd;
import com.zcloud.primeport.dto.DaHuaCarDeleteCmd;
import com.zcloud.primeport.dto.DaHuaPersonDeleteCmd;
import com.zcloud.primeport.dto.DaHuaResourceSyncCmd;
import com.zcloud.primeport.dto.clientobject.DaHuaResourceSyncResultCO;
import java.util.Map;
@ -30,4 +32,6 @@ public interface DaHuaServiceI {
SingleResponse<Boolean> deleteCar(DaHuaCarDeleteCmd cmd);
SingleResponse<Map<String, Object>> queryAccessRecord(DaHuaAccessRecordCmd cmd);
}
SingleResponse<DaHuaResourceSyncResultCO> syncResources(DaHuaResourceSyncCmd cmd);
}

View File

@ -8,7 +8,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableConfigurationProperties(DaHuaProperties.class)
@EnableConfigurationProperties({DaHuaProperties.class, DaHuaResourceProperties.class})
public class DaHuaAutoConfig {
@Bean("dahuaApiOauthConfig")
@ -41,4 +41,4 @@ public class DaHuaAutoConfig {
}
return new DaHuaApiClient(oauthConfig);
}
}
}

View File

@ -327,4 +327,74 @@ CREATE TABLE `video` (
`update_id` bigint DEFAULT NULL COMMENT '修改人id',
`env` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='摄像头表';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='摄像头表';
CREATE TABLE `dahua_department_corp_mapping` (
`id` bigint NOT NULL COMMENT '主键ID',
`dahua_department_id` bigint NOT NULL COMMENT '大华部门ID',
`dahua_org_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '大华组织编码',
`dahua_department_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '大华部门名称快照',
`corp_id` bigint NOT NULL COMMENT '本平台企业ID对应corp_info.id',
`corp_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '本平台企业名称快照',
`match_type` smallint NOT NULL DEFAULT '1' COMMENT '匹配方式1-名称匹配2-人工绑定',
`bind_status` smallint NOT NULL DEFAULT '1' COMMENT '绑定状态1-有效0-停用',
`last_sync_time` datetime DEFAULT NULL COMMENT '最近同步时间',
`delete_enum` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'FALSE' COMMENT '删除标识',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`create_id` bigint DEFAULT NULL COMMENT '创建人ID',
`update_id` bigint DEFAULT NULL COMMENT '更新人ID',
`env` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PROD' COMMENT '环境标识',
`create_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人姓名',
`update_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人姓名',
`tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
`org_id` bigint DEFAULT NULL COMMENT '组织ID',
`version` int NOT NULL DEFAULT '0' COMMENT '版本号',
`remarks` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_dahua_department_corp_mapping_department` (`dahua_department_id`),
UNIQUE KEY `uk_dahua_department_corp_mapping_org_code` (`dahua_org_code`),
UNIQUE KEY `uk_dahua_department_corp_mapping_corp` (`corp_id`),
KEY `idx_dahua_department_corp_mapping_status` (`bind_status`, `delete_enum`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='大华部门与本平台企业映射表';
CREATE TABLE `dahua_device` (
`id` bigint NOT NULL COMMENT '主键ID',
`device_code` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '大华设备编码',
`device_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '大华设备名称',
`device_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '设备类型',
`device_category` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '设备类别',
`device_manufacturer` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '设备厂商',
`device_model` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '设备型号',
`is_online` smallint DEFAULT NULL COMMENT '在线状态1-在线0-离线',
`offline_reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '离线原因',
`sub_system` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '所属大华子系统',
`device_ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '设备IP',
`device_port` int DEFAULT NULL COMMENT '设备端口',
`dahua_department_id` bigint DEFAULT NULL COMMENT '大华所属部门ID',
`dahua_org_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '大华所属组织编码',
`dahua_org_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '大华所属组织名称',
`corp_id` bigint DEFAULT NULL COMMENT '本平台企业ID对应corp_info.id',
`corp_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '本平台企业名称快照',
`match_status` smallint NOT NULL DEFAULT '0' COMMENT '企业匹配状态1-已匹配0-未匹配',
`raw_data` json DEFAULT NULL COMMENT '大华原始设备数据',
`last_sync_time` datetime DEFAULT NULL COMMENT '最近同步时间',
`delete_enum` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'FALSE' COMMENT '删除标识',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`create_id` bigint DEFAULT NULL COMMENT '创建人ID',
`update_id` bigint DEFAULT NULL COMMENT '更新人ID',
`env` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'PROD' COMMENT '环境标识',
`create_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人姓名',
`update_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人姓名',
`tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
`org_id` bigint DEFAULT NULL COMMENT '组织ID',
`version` int NOT NULL DEFAULT '0' COMMENT '版本号',
`remarks` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_dahua_device_code` (`device_code`),
KEY `idx_dahua_device_department` (`dahua_department_id`),
KEY `idx_dahua_device_org_code` (`dahua_org_code`),
KEY `idx_dahua_device_corp` (`corp_id`),
KEY `idx_dahua_device_match_status` (`match_status`, `delete_enum`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='大华门口设备同步表';