diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/HkAccessRecordSyncXxlJob.java b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/HkAccessRecordSyncXxlJob.java index a12314a..99b1a4e 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/HkAccessRecordSyncXxlJob.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/HkAccessRecordSyncXxlJob.java @@ -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()); diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/HkVehicleAccessRecordSyncXxlJob.java b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/HkVehicleAccessRecordSyncXxlJob.java index b22fee6..db4da62 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/HkVehicleAccessRecordSyncXxlJob.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/HkVehicleAccessRecordSyncXxlJob.java @@ -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()); diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/TwoCarUtil.java b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/TwoCarUtil.java index 15193b5..8a194ca 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/TwoCarUtil.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/TwoCarUtil.java @@ -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 + // 从返回结果中获取 parkSyscode(parkIndexCode 停车场唯一标识),填入 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: 按车牌查询车辆 ====== diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/TwoPersonUtil.java b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/TwoPersonUtil.java index cea4f45..3b97a46 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/TwoPersonUtil.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/TwoPersonUtil.java @@ -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(); diff --git a/web-infrastructure/src/main/resources/db/migration/V20260812_01__create_hk_access_record.sql b/web-infrastructure/src/main/resources/db/migration/V20260812_01__create_hk_access_record.sql index 3aba5ee..93457ec 100644 --- a/web-infrastructure/src/main/resources/db/migration/V20260812_01__create_hk_access_record.sql +++ b/web-infrastructure/src/main/resources/db/migration/V20260812_01__create_hk_access_record.sql @@ -8,15 +8,12 @@ CREATE TABLE IF NOT EXISTS `hk_access_record` ( `person_id` varchar(128) DEFAULT NULL COMMENT '海康人员ID(personId)', `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 '记录在海康平台的入库时间',