|
|
@@ -249,12 +249,22 @@ public class HikiotTool {
|
|
|
if(parts.length == 2 && parts[0].contains(":")) {
|
|
|
// 格式1: 场地预约type=0的当日时间段 "HH:mm:ss-HH:mm:ss"
|
|
|
// 示例: "18:00:00-22:00:00" 表示当天18:00到22:00
|
|
|
+ // 修复:当存在多个订单时,需要考虑endDate参数来扩展权限时间范围
|
|
|
try {
|
|
|
LocalTime customStartTime = LocalTime.parse(parts[0]);
|
|
|
LocalTime customEndTime = LocalTime.parse(parts[1]);
|
|
|
- // 开始时间和结束时间都应用到同一天(inputDate)
|
|
|
- startOfDay = now.with(customStartTime); // 2025-11-05T18:00:00
|
|
|
- endOfDay = now.with(customEndTime); // 2025-11-05T22:00:00
|
|
|
+ // 开始时间应用到inputDate(最早日期)
|
|
|
+ startOfDay = now.with(customStartTime);
|
|
|
+
|
|
|
+ // 结束时间应用到endDate(最晚日期,如果提供了的话)
|
|
|
+ if(null != endDate){
|
|
|
+ LocalDateTime endDateTime = endDate.toInstant()
|
|
|
+ .atZone(ZoneId.systemDefault())
|
|
|
+ .toLocalDateTime();
|
|
|
+ endOfDay = endDateTime.with(customEndTime);
|
|
|
+ } else {
|
|
|
+ endOfDay = now.with(customEndTime);
|
|
|
+ }
|
|
|
|
|
|
System.out.println("[HikiotTool.addUser] 格式1-应用时间段后 startOfDay: " + startOfDay);
|
|
|
System.out.println("[HikiotTool.addUser] 格式1-应用时间段后 endOfDay: " + endOfDay);
|
|
|
@@ -645,58 +655,68 @@ public class HikiotTool {
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args) throws IOException, InterruptedException {
|
|
|
- System.out.println("========== 场地订单门禁权限测试 ==========");
|
|
|
+ System.out.println("========== 手动添加用户到海康门禁系统 ==========");
|
|
|
+
|
|
|
+ // 订单信息
|
|
|
+ String useDateStr = "2025-12-16";
|
|
|
+ String name = "李帅";
|
|
|
+ String employeeNo = "1998889706633400321";
|
|
|
+ String frameTimeStr = "18:00:00-22:00:00";
|
|
|
+ String faceUrl = "https://national-motion.oss-cn-beijing.aliyuncs.com/opt/upFiles/tmp_ce50fb4c32b66f855f4899a6e24bd21fd57f42955aaa3295_1765631550971.jpg";
|
|
|
+
|
|
|
+ // 两个设备序列号
|
|
|
+ String[] deviceSerials = {"FZ0080597", "FZ0080608"};
|
|
|
+
|
|
|
System.out.println("订单信息:");
|
|
|
- System.out.println(" 订单ID: 1998692909877137409");
|
|
|
- System.out.println(" 用户名: 黎建均");
|
|
|
- System.out.println(" 使用日期: 2025-12-10");
|
|
|
- System.out.println(" 时间段: 17:00:00-18:00:00");
|
|
|
- System.out.println(" 过期时间: 2025-12-10 18:00:00");
|
|
|
- System.out.println(" 设备序列号: EZAHSYEHGM05477");
|
|
|
- System.out.println(" 员工编号: 1997909843353112577");
|
|
|
+ System.out.println(" 用户名: " + name);
|
|
|
+ System.out.println(" 员工编号: " + employeeNo);
|
|
|
+ System.out.println(" 使用日期: " + useDateStr);
|
|
|
+ System.out.println(" 时间段: " + frameTimeStr);
|
|
|
+ System.out.println(" 人脸照片: " + faceUrl);
|
|
|
System.out.println();
|
|
|
|
|
|
- // 模拟从 useDateStr 解析日期
|
|
|
- String useDateStr = "2025-12-10";
|
|
|
+ // 解析日期
|
|
|
LocalDate useDate = LocalDate.parse(useDateStr);
|
|
|
- System.out.println("1. 解析useDateStr: " + useDateStr + " -> " + useDate);
|
|
|
-
|
|
|
- // 将LocalDate转换为Date,使用正午12:00避免时区问题
|
|
|
Date inputDate = Date.from(useDate.atTime(12, 0).atZone(ZoneId.systemDefault()).toInstant());
|
|
|
- System.out.println("2. 转换为Date(使用12:00): " + inputDate);
|
|
|
- System.out.println(" 时区: " + ZoneId.systemDefault());
|
|
|
- System.out.println();
|
|
|
-
|
|
|
- // 调用addUser方法
|
|
|
- String deviceSerial = "FY2389310";
|
|
|
- String name = "黎建均";
|
|
|
- String employeeNo = "1997909843353112577";
|
|
|
- String frameTimeStr = "18:00:00-22:00:00";
|
|
|
-
|
|
|
- System.out.println("3. 调用addUser方法");
|
|
|
- System.out.println(" inputDate: " + inputDate);
|
|
|
- System.out.println(" endDate: " + inputDate + " (同一天)");
|
|
|
- System.out.println(" frameTimeStr: " + frameTimeStr);
|
|
|
+ System.out.println("解析日期: " + useDateStr + " -> " + inputDate);
|
|
|
System.out.println();
|
|
|
|
|
|
- try {
|
|
|
- String result = addUser(inputDate, deviceSerial, name, employeeNo, inputDate, frameTimeStr);
|
|
|
- System.out.println("4. addUser返回结果:");
|
|
|
- System.out.println(result);
|
|
|
- System.out.println();
|
|
|
+ // 遍历所有设备
|
|
|
+ for (String deviceSerial : deviceSerials) {
|
|
|
+ System.out.println("---------- 处理设备: " + deviceSerial + " ----------");
|
|
|
|
|
|
- // 解析返回结果
|
|
|
- JsonObject resultJson = JsonParser.parseString(result).getAsJsonObject();
|
|
|
- if (resultJson.get("code").getAsInt() == 0) {
|
|
|
- System.out.println("✅ 测试成功!门禁权限设置成功");
|
|
|
- } else {
|
|
|
- System.out.println("❌ 测试失败: " + resultJson.get("msg").getAsString());
|
|
|
+ try {
|
|
|
+ // 1. 添加用户
|
|
|
+ System.out.println("1. 调用addUser...");
|
|
|
+ String addUserResult = addUser(inputDate, deviceSerial, name, employeeNo, inputDate, frameTimeStr);
|
|
|
+ System.out.println(" addUser返回: " + addUserResult);
|
|
|
+
|
|
|
+ JsonObject addUserJson = JsonParser.parseString(addUserResult).getAsJsonObject();
|
|
|
+ if (addUserJson.get("code").getAsInt() == 0) {
|
|
|
+ System.out.println(" ✅ 用户添加成功");
|
|
|
+ } else {
|
|
|
+ System.out.println(" ❌ 用户添加失败: " + addUserJson.get("msg").getAsString());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. 添加人脸
|
|
|
+ System.out.println("2. 调用addFace...");
|
|
|
+ String addFaceResult = addFace(deviceSerial, employeeNo, faceUrl);
|
|
|
+ System.out.println(" addFace返回: " + addFaceResult);
|
|
|
+
|
|
|
+ JsonObject addFaceJson = JsonParser.parseString(addFaceResult).getAsJsonObject();
|
|
|
+ if (addFaceJson.get("code").getAsInt() == 0) {
|
|
|
+ System.out.println(" ✅ 人脸添加成功");
|
|
|
+ } else {
|
|
|
+ System.out.println(" ❌ 人脸添加失败: " + addFaceJson.get("msg").getAsString());
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ System.err.println(" ❌ 处理异常: " + e.getMessage());
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
- System.err.println("❌ 测试异常: " + e.getMessage());
|
|
|
- e.printStackTrace();
|
|
|
+ System.out.println();
|
|
|
}
|
|
|
|
|
|
- System.out.println("\n========== 测试结束 ==========");
|
|
|
+ System.out.println("========== 处理完成 ==========");
|
|
|
}
|
|
|
}
|