refactor(): 更新海康设备数据同步字段映射

dev_km_logs
lishiwei 2026-08-17 16:58:04 +08:00
parent 845c425262
commit 7e693dc8c3
5 changed files with 66 additions and 45 deletions

View File

@ -117,22 +117,18 @@ public class HkAccessRecordSyncXxlJob implements Job {
private HkAccessRecordDO mapToRecord(JSONObject item) { private HkAccessRecordDO mapToRecord(JSONObject item) {
HkAccessRecordDO record = new HkAccessRecordDO(); HkAccessRecordDO record = new HkAccessRecordDO();
record.setHkEventId(item.getStr("eventId", item.getStr("id"))); record.setHkEventId(item.getStr("eventId"));
record.setPersonId(item.getStr("personId")); record.setPersonId(item.getStr("personId"));
record.setPersonName(item.getStr("personName")); record.setPersonName(item.getStr("personName"));
record.setCertificateNo(item.getStr("certificateNo")); record.setCertificateNo(item.getStr("certNo"));
record.setPhoneNo(item.getStr("phoneNo"));
record.setOrgIndexCode(item.getStr("orgIndexCode")); record.setOrgIndexCode(item.getStr("orgIndexCode"));
record.setOrgPathName(item.getStr("orgPathName")); record.setOrgPathName(item.getStr("orgName"));
record.setDoorIndexCode(item.getStr("doorIndexCode", item.getStr("resourceIndexCode"))); record.setDoorIndexCode(item.getStr("doorIndexCode"));
record.setDoorName(item.getStr("doorName", item.getStr("resourceName"))); record.setDoorName(item.getStr("doorName"));
record.setDoorRegionIndexCode(item.getStr("regionIndexCode")); record.setDoorRegionIndexCode(item.getStr("doorRegionIndexCode"));
record.setEnterOrExit(item.getInt("enterOrExit", item.getInt("inOutType"))); record.setEnterOrExit(item.getInt("inAndOutType"));
record.setOpenResult(item.getInt("openResult"));
record.setOpenType(item.getInt("openType"));
record.setCardNo(item.getStr("cardNo")); record.setCardNo(item.getStr("cardNo"));
// 解析事件时间 String eventTimeStr = item.getStr("eventTime");
String eventTimeStr = item.getStr("eventTime", item.getStr("swingTime"));
if (eventTimeStr != null && !eventTimeStr.isEmpty()) { if (eventTimeStr != null && !eventTimeStr.isEmpty()) {
try { try {
record.setEventTime(parseDateTime(eventTimeStr)); record.setEventTime(parseDateTime(eventTimeStr));
@ -140,15 +136,15 @@ public class HkAccessRecordSyncXxlJob implements Job {
log.warn("解析eventTime失败: {}", eventTimeStr); log.warn("解析eventTime失败: {}", eventTimeStr);
} }
} }
String createTimeStr = item.getStr("createTime", item.getStr("hkCreateTime")); String createTimeStr = item.getStr("receiveTime");
if (createTimeStr != null && !createTimeStr.isEmpty()) { if (createTimeStr != null && !createTimeStr.isEmpty()) {
try { try {
record.setHkCreateTime(parseDateTime(createTimeStr)); record.setHkCreateTime(parseDateTime(createTimeStr));
} catch (Exception e) { } catch (Exception e) {
log.warn("解析createTime失败: {}", createTimeStr); log.warn("解析receiveTime失败: {}", createTimeStr);
} }
} }
record.setRecordImageUrl(item.getStr("recordImageUrl", item.getStr("picUri"))); record.setRecordImageUrl(item.getStr("picUri"));
record.setSourceType("PULL"); record.setSourceType("PULL");
record.setRawData(item.toString()); record.setRawData(item.toString());
record.setLastSyncTime(LocalDateTime.now()); record.setLastSyncTime(LocalDateTime.now());

View File

@ -113,28 +113,27 @@ public class HkVehicleAccessRecordSyncXxlJob implements Job {
private HkVehicleAccessRecordDO mapToRecord(JSONObject item) { private HkVehicleAccessRecordDO mapToRecord(JSONObject item) {
HkVehicleAccessRecordDO record = new HkVehicleAccessRecordDO(); HkVehicleAccessRecordDO record = new HkVehicleAccessRecordDO();
record.setHkEventId(item.getStr("eventId", item.getStr("id"))); record.setHkEventId(item.getStr("crossRecordSyscode"));
record.setPlateNo(item.getStr("plateNo", item.getStr("carNum"))); record.setPlateNo(item.getStr("plateNo"));
record.setPlateColor(item.getInt("plateColor")); record.setPlateColor(item.getInt("plateColor"));
record.setCarType(item.getInt("carType")); record.setCarType(item.getInt("vehicleType"));
record.setCarTypeName(item.getStr("carTypeName")); record.setCarTypeName(item.getStr("carCategoryName"));
record.setParkSyscode(item.getStr("parkSyscode", item.getStr("parkIndexCode"))); record.setParkSyscode(item.getStr("parkSyscode"));
record.setParkName(item.getStr("parkName")); record.setParkName(item.getStr("parkName"));
record.setLaneIndexCode(item.getStr("laneIndexCode", item.getStr("roadwayIndexCode"))); record.setLaneIndexCode(item.getStr("roadwaySyscode"));
record.setLaneName(item.getStr("laneName", item.getStr("roadwayName"))); record.setLaneName(item.getStr("roadwayName"));
record.setEntranceIndexCode(item.getStr("entranceIndexCode")); record.setEntranceIndexCode(item.getStr("entranceSyscode"));
record.setEntranceName(item.getStr("entranceName")); record.setEntranceName(item.getStr("entranceName"));
record.setEnterOrExit(item.getInt("enterOrExit", item.getInt("inOutType"))); record.setEnterOrExit(item.getInt("vehicleOut"));
// 解析事件时间 String eventTimeStr = item.getStr("crossTime");
String eventTimeStr = item.getStr("eventTime", item.getStr("crossTime"));
if (eventTimeStr != null && !eventTimeStr.isEmpty()) { if (eventTimeStr != null && !eventTimeStr.isEmpty()) {
try { try {
record.setEventTime(parseDateTime(eventTimeStr)); record.setEventTime(parseDateTime(eventTimeStr));
} catch (Exception e) { } catch (Exception e) {
log.warn("解析eventTime失败: {}", eventTimeStr); log.warn("解析crossTime失败: {}", eventTimeStr);
} }
} }
String createTimeStr = item.getStr("createTime", item.getStr("hkCreateTime")); String createTimeStr = item.getStr("createTime");
if (createTimeStr != null && !createTimeStr.isEmpty()) { if (createTimeStr != null && !createTimeStr.isEmpty()) {
try { try {
record.setHkCreateTime(parseDateTime(createTimeStr)); record.setHkCreateTime(parseDateTime(createTimeStr));
@ -142,7 +141,7 @@ public class HkVehicleAccessRecordSyncXxlJob implements Job {
log.warn("解析createTime失败: {}", createTimeStr); log.warn("解析createTime失败: {}", createTimeStr);
} }
} }
record.setRecordImageUrl(item.getStr("recordImageUrl", item.getStr("picUri"))); record.setRecordImageUrl(item.getStr("vehiclePicUri"));
record.setSourceType("PULL"); record.setSourceType("PULL");
record.setRawData(item.toString()); record.setRawData(item.toString());
record.setLastSyncTime(LocalDateTime.now()); record.setLastSyncTime(LocalDateTime.now());

View File

@ -101,13 +101,12 @@ public class TwoCarUtil {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
String testPlateNo = "冀B12345"; String testPlateNo = "冀B12345";
String testParkSyscode = ""; String testParkSyscode = "";
String testLaneIndexCode = "";
// ====== 测试1: 获取停车场列表 ====== // ====== 测试1: 获取停车场列表 ======
System.out.println("===== 测试1: getParkingListInformationList 停车场列表 ====="); System.out.println("===== 测试1: getParkingListInformationList 停车场列表 =====");
JSONObject parkResult = HKDeviceUtil.getParkingListInformationList(); JSONObject parkResult = HKDeviceUtil.getParkingListInformationList();
System.out.println(parkResult); System.out.println(parkResult);
// 从返回结果中获取 parkSyscode,填入 testParkSyscode // 从返回结果中获取 parkSyscodeparkIndexCode 停车场唯一标识),填入 testParkSyscode
// ====== 测试2: 保存/更新车辆 ====== // ====== 测试2: 保存/更新车辆 ======
// System.out.println("\n===== 测试2: saveOrUpdCar 保存/更新车辆 ====="); // System.out.println("\n===== 测试2: saveOrUpdCar 保存/更新车辆 =====");
@ -115,14 +114,14 @@ public class TwoCarUtil {
// System.out.println(carResult); // System.out.println(carResult);
// ====== 测试3: 车辆充值授权 ====== // ====== 测试3: 车辆充值授权 ======
// System.out.println("\n===== 测试3: vehicleTopUp 车辆充值 (需填入parkSyscode和laneIndexCode) ====="); // System.out.println("\n===== 测试3: vehicleTopUp 车辆充值 (需填入parkSyscode) =====");
// if (!testParkSyscode.isEmpty() && !testLaneIndexCode.isEmpty()) { // if (!testParkSyscode.isEmpty()) {
// String today = DateUtil.date2Str(new Date(), "yyyy-MM-dd"); // String today = DateUtil.date2Str(new Date(), "yyyy-MM-dd");
// JSONObject topUpResult = HKDeviceUtil.vehicleTopUp( // JSONObject topUpResult = HKDeviceUtil.vehicleTopUp(
// testPlateNo, 0, testLaneIndexCode, testParkSyscode, today, today); // testPlateNo, 0, null, testParkSyscode, today, today);
// System.out.println(topUpResult); // System.out.println(topUpResult);
// } else { // } else {
// System.out.println("请先从测试1获取 parkSyscode,并填入正确的 laneIndexCode门禁点indexCode"); // System.out.println("请先从测试1获取 parkSyscode");
// } // }
// ====== 测试4: 按车牌查询车辆 ====== // ====== 测试4: 按车牌查询车辆 ======

View File

@ -141,12 +141,43 @@ public class TwoPersonUtil {
System.out.println("\n===== 测试3: getUserListByUserCard ====="); System.out.println("\n===== 测试3: getUserListByUserCard =====");
System.out.println(HKDeviceUtil.getUserListByUserCard(testIdCard)); System.out.println(HKDeviceUtil.getUserListByUserCard(testIdCard));
System.out.println("\n===== 测试4: authPersonArea (需替换personId和门禁点indexCode) ====="); System.out.println("\n===== 测试4: authPersonArea 授权门禁 =====");
// 先从测试2/3获取personId再取消下面的注释并填入真实值 // personId 从测试2/3的返回结果 data.list[0].personId 获取(本次查询为 828cf4dc7ff745ac803c702efdf5524c
// JSONObject ri = new JSONObject(); ri.set("resourceIndexCode", "替换"); ri.set("resourceType", "door"); String testPersonId = "828cf4dc7ff745ac803c702efdf5524c";
// System.out.println(HKDeviceUtil.authPersonArea(Collections.singletonList("personId"), // 门禁点 indexCode 从 getSubResources() 返回的 data.list[0].indexCode 获取
// Collections.singletonList(ri), DateUtil.date2Str(new Date(),"yyyy-MM-dd")+"T00:00:00+08:00", JSONObject subResources = HKDeviceUtil.getSubResources();
// DateUtil.date2Str(new Date(),"yyyy-MM-dd")+"T23:59:59+08:00")); JSONArray doorList = subResources.getJSONObject("data").getJSONArray("list");
System.out.println("查询到门禁点数量: " + doorList.size());
String testDoorIndexCode = null;
String testDoorName = null;
if (!doorList.isEmpty()) {
JSONObject door = doorList.getJSONObject(0);
if ("door".equals(door.getStr("resourceType"))) {
testDoorIndexCode = door.getStr("indexCode");
testDoorName = door.getStr("name");
}
}
System.out.println("使用门禁点: " + testDoorName + " (indexCode=" + testDoorIndexCode + ")");
// for (int i = 0; i < doorList.size(); i++) {
// JSONObject door = doorList.getJSONObject(i);
// if ("door".equals(door.getStr("resourceType"))) {
// testDoorIndexCode = door.getStr("indexCode");
// testDoorName = door.getStr("name");
// break;
// }
// }
// System.out.println("使用门禁点: " + testDoorName + " (indexCode=" + testDoorIndexCode + ")");
JSONObject ri = new JSONObject();
ri.set("resourceIndexCode", testDoorIndexCode);
ri.set("resourceType", "door");
JSONObject authResult = HKDeviceUtil.authPersonArea(
Collections.singletonList(testPersonId),
Collections.singletonList(ri),
DateUtil.date2Str(new Date(), "yyyy-MM-dd") + "T00:00:00+08:00",
DateUtil.date2Str(new Date(), "yyyy-MM-dd") + "T23:59:59+08:00");
System.out.println(authResult);
}
// ========== 以下为原有注释测试代码(保留备用) ========== // ========== 以下为原有注释测试代码(保留备用) ==========
// TwoPersonUtil twoPersonUtil = new TwoPersonUtil(); // TwoPersonUtil twoPersonUtil = new TwoPersonUtil();
// twoPersonUtil.dockOneLevelPerson("130324199407282111"); // twoPersonUtil.dockOneLevelPerson("130324199407282111");
@ -178,7 +209,6 @@ public class TwoPersonUtil {
// System.err.println("saveUser 调用失败:" + e.getMessage()); // System.err.println("saveUser 调用失败:" + e.getMessage());
// throw new RuntimeException(e); // throw new RuntimeException(e);
// } // }
}
public void dockOneLevelPerson(String userCard, String userFaceImages, String userUid, String userName) throws Exception { public void dockOneLevelPerson(String userCard, String userFaceImages, String userUid, String userName) throws Exception {
DaHuaDeviceCommon daHuaDeviceCommon = getDaHuaDeviceCommon(); DaHuaDeviceCommon daHuaDeviceCommon = getDaHuaDeviceCommon();

View File

@ -8,15 +8,12 @@ CREATE TABLE IF NOT EXISTS `hk_access_record` (
`person_id` varchar(128) DEFAULT NULL COMMENT '海康人员IDpersonId', `person_id` varchar(128) DEFAULT NULL COMMENT '海康人员IDpersonId',
`person_name` varchar(255) DEFAULT NULL COMMENT '人员姓名快照', `person_name` varchar(255) DEFAULT NULL COMMENT '人员姓名快照',
`certificate_no` varchar(128) DEFAULT NULL COMMENT '证件号码(身份证)', `certificate_no` varchar(128) DEFAULT NULL COMMENT '证件号码(身份证)',
`phone_no` varchar(64) DEFAULT NULL COMMENT '手机号',
`org_index_code` varchar(128) DEFAULT NULL COMMENT '海康组织编码', `org_index_code` varchar(128) DEFAULT NULL COMMENT '海康组织编码',
`org_path_name` varchar(512) DEFAULT NULL COMMENT '海康组织路径名称', `org_path_name` varchar(512) DEFAULT NULL COMMENT '海康组织路径名称',
`door_index_code` varchar(128) DEFAULT NULL COMMENT '门禁点编码indexCode', `door_index_code` varchar(128) DEFAULT NULL COMMENT '门禁点编码indexCode',
`door_name` varchar(255) DEFAULT NULL COMMENT '门禁点名称', `door_name` varchar(255) DEFAULT NULL COMMENT '门禁点名称',
`door_region_index_code` varchar(128) DEFAULT NULL COMMENT '门禁点所属区域编码', `door_region_index_code` varchar(128) DEFAULT NULL COMMENT '门禁点所属区域编码',
`enter_or_exit` int DEFAULT NULL COMMENT '进出方向1-进2-出', `enter_or_exit` int DEFAULT NULL COMMENT '进出方向1-进2-出',
`open_result` int DEFAULT NULL COMMENT '开门结果1-成功0-失败',
`open_type` int DEFAULT NULL COMMENT '开门方式',
`card_no` varchar(128) DEFAULT NULL COMMENT '卡号', `card_no` varchar(128) DEFAULT NULL COMMENT '卡号',
`event_time` datetime DEFAULT NULL COMMENT '事件发生时间(通行时间)', `event_time` datetime DEFAULT NULL COMMENT '事件发生时间(通行时间)',
`hk_create_time` datetime DEFAULT NULL COMMENT '记录在海康平台的入库时间', `hk_create_time` datetime DEFAULT NULL COMMENT '记录在海康平台的入库时间',