Crazy преди 9 месеца
родител
ревизия
bb6e432c90

+ 1 - 0
yudao-module-md/yudao-module-md-biz/src/main/java/Acs/FaceManage.java

@@ -240,6 +240,7 @@ public final class FaceManage {
                 {//返回NET_SDK_CONFIG_STATUS_SUCCESS代表流程走通了,但并不代表下发成功,比如人脸图片不符合设备规范等原因,所以需要解析Json报文
                     if (statusCode != 1){
                         System.out.println("下发人脸成功,但是有异常情况:" + jsonResult.toString());
+                        return ("下发人脸成功,但是有异常情况:" + jsonResult.toString());
                     }
                     else{
                         System.out.println("下发人脸成功,  json retun:" + jsonResult.toString());

+ 5 - 18
yudao-module-md/yudao-module-md-biz/src/main/java/Acs/UserManage.java

@@ -196,26 +196,12 @@ public class UserManage {
     public static String getUserInfo(int lUserID , String employeeNo ) throws JSONException {
         HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024);    //数组
 
-        // 创建一个JSON格式的查询条件
-        String strQueryCondition = String.format("{\"employeeNo\":\"%s\"}", employeeNo);
-
         String strInBuffer = "POST /ISAPI/AccessControl/UserInfo/Search?format=json";
 
-        // 构建完整的请求,包括请求头和请求体
-        StringBuffer strBuffer = new StringBuffer();
-        strBuffer.append(strInBuffer); // 请求行
-        strBuffer.append(" HTTP/1.1\r\n"); // 请求头开始
-        strBuffer.append("Host: 172.16.58.105\r\n"); // 假设的主机头
-        strBuffer.append("Content-Type: application/json\r\n"); // 指定内容类型为JSON
-        strBuffer.append("Content-Length: ").append(strQueryCondition.getBytes().length).append("\r\n\r\n"); // 内容长度和请求头结束
-        strBuffer.append(strQueryCondition); // 请求体
-
-        byte[] strBufferBytes = strBuffer.toString().getBytes(StandardCharsets.UTF_8);
-
-        System.arraycopy( strBufferBytes, 0, ptrByteArray.byValue, 0,  strBuffer.length());//字符串拷贝到数组中
+        System.arraycopy( strInBuffer.getBytes(), 0, ptrByteArray.byValue, 0,  strInBuffer.length());//字符串拷贝到数组中
         ptrByteArray.write();
 
-        int lHandler = AcsService.hCNetSDK.NET_DVR_StartRemoteConfig(lUserID, HCNetSDK.NET_DVR_JSON_CONFIG, ptrByteArray.getPointer(),  strBuffer.length(), null, null);
+        int lHandler = AcsService.hCNetSDK.NET_DVR_StartRemoteConfig(lUserID, HCNetSDK.NET_DVR_JSON_CONFIG, ptrByteArray.getPointer(),  strInBuffer.length(), null, null);
         HCNetSDK.BYTE_ARRAY ptrOutuff;
         if (lHandler < 0) {
             System.out.println("SearchUserInfo NET_DVR_StartRemoteConfig 失败,错误码为" + AcsService.hCNetSDK.NET_DVR_GetLastError());
@@ -224,9 +210,8 @@ public class UserManage {
 
             Map<String, Object> parameter = new HashMap<>();
             parameter.put("searchID", UUID.randomUUID()); // 查询id
-            parameter.put("maxResults",1); // 最大查询数量
+            parameter.put("maxResults",10);
             parameter.put("UserInfo.employeeNo",employeeNo);//查询学号对应的人
-
 //            System.out.println("查询条件"+parameter);
 
             String template = "{\n" +
@@ -240,6 +225,7 @@ public class UserManage {
                     "  }\n" +
                     "}";
 
+
             // 生成请求体
             String requestJson = replace(template, parameter);
             System.out.println("生成的请求体:"+requestJson);
@@ -330,4 +316,5 @@ public class UserManage {
     }
 
 
+
 }

+ 36 - 25
yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/service/AcsService.java

@@ -312,14 +312,14 @@ public class AcsService {
 //            AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername());
 //            if (existUser == null) {
             // 异步添加用户信息
-            AdminUserDO user = userService.findUserByUserNumber(importUser.getEmployeeNo());
+//            AdminUserDO user = userService.findUserByUserNumber(importUser.getEmployeeNo());
 //            CompletableFuture<Void> addUserFuture = CompletableFuture.runAsync(() -> {
                 try {
                     //用户名称与那users表里的相同
-                    if (user.getNickname().equals(importUser.getName())) {
-                        UserManage.addUserInfo(lUserID, user.getUserNumber(), user.getNickname());
+//                    if (user.getNickname().equals(importUser.getName())) {
+                        UserManage.addUserInfo(lUserID, importUser.getEmployeeNo(), importUser.getName());
                         System.out.println("添加用户成功");
-                    }
+//                    }
                 } catch (UnsupportedEncodingException | InterruptedException | JSONException e) {
                     throw new RuntimeException("添加用户信息失败: " + e.getMessage(), e);
                 }
@@ -411,7 +411,7 @@ public class AcsService {
             throw exception(UPLOADED_FOLDER_CANNOT_EMPTY);
         }
         // 创建临时目录存放解压后的文件
-        File tempDir = Files.createTempDirectory("specimen_images").toFile();
+        File tempDir = Files.createTempDirectory("users_images").toFile();
         List<String> successUsers =new LinkedList<>();
         List<String> failUsers =new LinkedList<>();
         try (InputStream inputStream = file.getInputStream();
@@ -420,7 +420,7 @@ public class AcsService {
             while ((entry = zipInputStream.getNextZipEntry()) != null) {
                 if (!entry.isDirectory()) {
                     //看名字
-                    if (isValidImageName(entry.getName())) {
+//                    if (isValidImageName(entry.getName())) {
                         System.out.println(entry.getName());
                         //获取去除后缀名的文件名,需要设置成学号
                         String userNumber = entry.getName().substring(0, entry.getName().lastIndexOf('-'));
@@ -437,19 +437,23 @@ public class AcsService {
                                 bos.write(buffer, 0, len);
                             }
                         }
-                        // 上传文件并获取 URL
-//                        AdminUserDO user = userService.findUserByUserNumber(userNumber);
+
                         String photoUrl = fileApi.createFile(Files.readAllBytes(newFile.toPath()));
-//                        user.setPhotoUrl(photoUrl);
-//                        userService.updateUser((BeanUtils.toBean(user, UserSaveReqVO.class)));
                         //给对应学号的人的照片添加
-                        addFaceByUrl( userNumber, photoUrl);
-                        successUsers.add(studentName);
-                    }else{
-                        String userNumber = entry.getName().substring(0, entry.getName().indexOf('-'));
-                        AdminUserDO user = userService.findUserByUserNumber(userNumber);
-                        failUsers.add(user.getNickname());
-                    }
+                        String msg =addFaceByUrl( userNumber, photoUrl);
+                        //System.out.println("数据"+msg);
+                        if (msg.contains("下发人脸成功")&&msg.contains("但是有异常情况")){
+                            failUsers.add(studentName);
+                        }else{
+                            successUsers.add(studentName);
+                        }
+                        continue;
+//                    }else{
+//                        String userNumber = entry.getName().substring(0, entry.getName().indexOf('-'));
+//                        AdminUserDO user = userService.findUserByUserNumber(userNumber);
+//                        failUsers.add(user.getNickname());
+//                        continue;
+//                    }
                 }
             }
         }
@@ -476,18 +480,25 @@ public class AcsService {
     }
 
 
+    private UserImportRespVO importRespVO;
+    private String imageImportResult;
     @Transactional(rollbackFor = Exception.class) // 事务管理
     public String importData(MultipartFile excelFile, MultipartFile imageFile, boolean updateSupport) throws Exception {
-
         // 1. 导入用户信息
-        List<UserImportExcelVO> list = ExcelUtils.read(excelFile, UserImportExcelVO.class);
-        UserImportRespVO importRespVO = importUserList(list, updateSupport);
-
+        if (excelFile!=null){
+            List<UserImportExcelVO> list = ExcelUtils.read(excelFile, UserImportExcelVO.class);
+            importRespVO = importUserList(list, updateSupport);
+            System.out.println("用户信息导入结果: " + importRespVO);
+        }else {
+            importRespVO=null;
+        }
         // 2. 导入图片
-        String imageImportResult = testImages(imageFile);
-        // 可以根据需要记录导入结果
-        System.out.println("用户信息导入结果: " + importRespVO);
-        System.out.println("图片导入结果: " + imageImportResult);
+        if (imageFile!=null){
+            imageImportResult = testImages(imageFile);
+            System.out.println("图片导入结果: " + imageImportResult);
+        }else {
+            imageImportResult="为传入照片信息";
+        }
 
         return  importRespVO+
                 imageImportResult;