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

View File

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

View File

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

View File

@ -141,12 +141,43 @@ public class TwoPersonUtil {
System.out.println("\n===== 测试3: getUserListByUserCard =====");
System.out.println(HKDeviceUtil.getUserListByUserCard(testIdCard));
System.out.println("\n===== 测试4: authPersonArea (需替换personId和门禁点indexCode) =====");
// 先从测试2/3获取personId再取消下面的注释并填入真实值
// JSONObject ri = new JSONObject(); ri.set("resourceIndexCode", "替换"); ri.set("resourceType", "door");
// System.out.println(HKDeviceUtil.authPersonArea(Collections.singletonList("personId"),
// 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("\n===== 测试4: authPersonArea 授权门禁 =====");
// personId 从测试2/3的返回结果 data.list[0].personId 获取(本次查询为 828cf4dc7ff745ac803c702efdf5524c
String testPersonId = "828cf4dc7ff745ac803c702efdf5524c";
// 门禁点 indexCode 从 getSubResources() 返回的 data.list[0].indexCode 获取
JSONObject subResources = HKDeviceUtil.getSubResources();
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.dockOneLevelPerson("130324199407282111");
@ -178,7 +209,6 @@ public class TwoPersonUtil {
// System.err.println("saveUser 调用失败:" + e.getMessage());
// throw new RuntimeException(e);
// }
}
public void dockOneLevelPerson(String userCard, String userFaceImages, String userUid, String userName) throws Exception {
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_name` varchar(255) 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_path_name` varchar(512) DEFAULT NULL COMMENT '海康组织路径名称',
`door_index_code` varchar(128) DEFAULT NULL COMMENT '门禁点编码indexCode',
`door_name` varchar(255) DEFAULT NULL COMMENT '门禁点名称',
`door_region_index_code` varchar(128) DEFAULT NULL COMMENT '门禁点所属区域编码',
`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 '卡号',
`event_time` datetime DEFAULT NULL COMMENT '事件发生时间(通行时间)',
`hk_create_time` datetime DEFAULT NULL COMMENT '记录在海康平台的入库时间',