Crazy пре 8 месеци
родитељ
комит
a0f306dbbe

+ 12 - 21
yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/controller/admin/AcsController.java

@@ -46,6 +46,7 @@ import javax.validation.Valid;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Type;
+import java.time.LocalDateTime;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -290,7 +291,7 @@ public class AcsController {
 
     //删除人脸信息(包括user里面的photo)
     @DeleteMapping("/deleteStudentFace")
-    @Operation(summary = "删除人脸")
+    @Operation(summary = "删除学生人脸")
     public CommonResult<String> deleteStudentFace(@RequestParam String userNumber) throws JSONException {
         AdminUserDO user = adminUserService.findUserByUserNumber(userNumber);
         String result = acsService.getUser(userNumber);
@@ -299,36 +300,26 @@ public class AcsController {
         JsonArray userInfoArray = jsonObject
                 .getAsJsonObject("UserInfoSearch")
                 .getAsJsonArray("UserInfo");
-        if (userInfoArray!=null){
+        if (userInfoArray!=null&&user.getPhotoUrl()!=null){
             acsService.deleteFace(userNumber);
-            user.setPhotoUrl(null);//同步更新user表里的
+            user.setPhotoUpdateTime(LocalDateTime.now());
+            user.setPhotoUrl("");//同步更新user表里的
             adminUserService.updateUser(BeanUtils.toBean(user, UserSaveReqVO.class));
+            return success("删除照片成功");
         }
-        return success("删除照片成功");
+       return error(1,"删除照片失败");
     }
 
-
-    //TODO删除毕业生人脸信息
-    @DeleteMapping("/deleteGraduateStudentFace")
-    @Operation(summary = "删除毕业生人脸信息")
+    @DeleteMapping("/deleteGraduateStudentInfo")
+    @Operation(summary = "删除毕业生考勤信息")
     public CommonResult<String> deleteGraduateStudentFace() throws JSONException {
         UserPageReqVO reqVO =new UserPageReqVO();
         List<AdminUserDO> studentList = adminUserService.selectGraduateStudentList(reqVO);
         for (AdminUserDO student :studentList){
-            String result = acsService.getUser(student.getUserNumber());
-            Gson gson = new Gson();
-            JsonObject jsonObject = gson.fromJson(result, JsonObject.class);
-            JsonArray userInfoArray = jsonObject
-                    .getAsJsonObject("UserInfoSearch")
-                    .getAsJsonArray("UserInfo");
-            if (userInfoArray!=null){
-                acsService.deleteFace(student.getUserNumber());
-                student.setPhotoUrl(null);//同步更新user表里的
-                adminUserService.updateUser(BeanUtils.toBean(student, UserSaveReqVO.class));
-            }
-            return success("删除照片成功");
+            deleteUser(student.getUserNumber());
+          return success("清除毕业生考勤信息成功");
         }
-       return null;
+        return error(1,"清除毕业生信息失败");
     }
 
 }

+ 56 - 42
yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/service/AcsService.java

@@ -33,6 +33,7 @@ import javax.annotation.PreDestroy;
 import javax.annotation.Resource;
 import java.io.*;
 import java.nio.file.Files;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.zip.ZipEntry;
@@ -288,47 +289,56 @@ public class AcsService {
              JsonArray userInfoArray = jsonObject
                      .getAsJsonObject("UserInfoSearch")
                      .getAsJsonArray("UserInfo");
-
-             if (userInfoArray != null) {//考勤机里有用户
-                 String msg =  addFaceByUrl(userNumber,photoUrl);
-                 if (msg.contains("下发人脸成功") && msg.contains("但是有异常情况")) {
-                     return "更新人脸失败";
-                 } else {
-                     if (user!=null) {
-                         user.setPhotoUrl(photoUrl);
-                         userService.updateUser((BeanUtils.toBean(user, UserSaveReqVO.class)));
-                     }
-                     return "更新人脸成功";
-                 }
-             } else {//考勤及里面没用户
-                 //确保在执行完增加用户后执行增加人脸
-                 CompletableFuture<Void> userFuture = CompletableFuture.runAsync(() -> {
-                     try {
-                         addUser(userNumber, user.getNickname());
-                     } catch (JSONException e) {
-                         throw new RuntimeException(e);
-                     } catch (UnsupportedEncodingException e) {
-                         throw new RuntimeException(e);
-                     } catch (InterruptedException e) {
-                         throw new RuntimeException(e);
-                     }
-                 });
-                 userFuture.thenRun(() -> {
-                     try {
-                      String msg = addFaceByUrl(userNumber, photoUrl);
-                         if (msg.contains("下发人脸成功") && msg.contains("但是有异常情况")) {
-                         } else {
-                             if (user!=null) {
-                                 user.setPhotoUrl(photoUrl);
-                                 userService.updateUser((BeanUtils.toBean(user, UserSaveReqVO.class)));
-                             }
-                         }
-                     } catch (JSONException e) {
-                         throw new RuntimeException(e);
-                     }
-                 });
-                 return "添加考勤用户并且增加照片成功";
-             }
+            if (photoUrl.trim().isEmpty()&&user.getPhotoUrl()!=null){//去除空格后为空,删除人脸
+                deleteFace(userNumber);//考勤机里的
+                user.setPhotoUrl(photoUrl.trim());//同步更新user表里的
+                user.setPhotoUpdateTime(LocalDateTime.now());
+                userService.updateUser(BeanUtils.toBean(user, UserSaveReqVO.class));
+                return "删除照片成功";
+            }else {
+                if (userInfoArray != null) {//考勤机里有用户
+                    String msg = addFaceByUrl(userNumber, photoUrl);
+                    if (msg.contains("下发人脸成功") && msg.contains("但是有异常情况")) {
+                        return "更新人脸失败";
+                    } else {
+                        if (user != null) {
+                            user.setPhotoUpdateTime(LocalDateTime.now());
+                            user.setPhotoUrl(photoUrl);
+                            userService.updateUser((BeanUtils.toBean(user, UserSaveReqVO.class)));
+                        }
+                        return "更新人脸成功";
+                    }
+                } else {//考勤及里面没用户
+                    //确保在执行完增加用户后执行增加人脸
+                    CompletableFuture<Void> userFuture = CompletableFuture.runAsync(() -> {
+                        try {
+                            addUser(userNumber, user.getNickname());
+                        } catch (JSONException e) {
+                            throw new RuntimeException(e);
+                        } catch (UnsupportedEncodingException e) {
+                            throw new RuntimeException(e);
+                        } catch (InterruptedException e) {
+                            throw new RuntimeException(e);
+                        }
+                    });
+                    userFuture.thenRun(() -> {
+                        try {
+                            String msg = addFaceByUrl(userNumber, photoUrl);
+                            if (msg.contains("下发人脸成功") && msg.contains("但是有异常情况")) {
+                            } else {
+                                if (user != null) {
+                                    user.setPhotoUpdateTime(LocalDateTime.now());
+                                    user.setPhotoUrl(photoUrl);
+                                    userService.updateUser((BeanUtils.toBean(user, UserSaveReqVO.class)));
+                                }
+                            }
+                        } catch (JSONException e) {
+                            throw new RuntimeException(e);
+                        }
+                    });
+                    return "添加考勤用户并且增加照片成功";
+                }
+            }
     }
 
 
@@ -343,9 +353,10 @@ public class AcsService {
                     .getAsJsonObject("UserInfoSearch")
                     .getAsJsonArray("UserInfo");
 
-            if (photoUrl.trim().isEmpty()){//去除空格后为空,删除人脸
+            if (photoUrl.trim().isEmpty()&&user.getPhotoUrl()!=null){//去除空格后为空,删除人脸
                 deleteFace(employeeNo);//考勤机里的
                 user.setPhotoUrl(photoUrl.trim());//同步更新user表里的
+                user.setPhotoUpdateTime(LocalDateTime.now());
                 userService.updateUser(BeanUtils.toBean(user, UserSaveReqVO.class));
                 return "删除照片成功";
             }else {
@@ -356,6 +367,7 @@ public class AcsService {
                     } else {
                         if (user != null) {
                             user.setPhotoUrl(photoUrl);
+                            user.setPhotoUpdateTime(LocalDateTime.now());
                             userService.updateUser((BeanUtils.toBean(user, UserSaveReqVO.class)));
                         }
                         return "更新照片成功";
@@ -379,6 +391,7 @@ public class AcsService {
                             if (msg.contains("下发人脸成功") && msg.contains("但是有异常情况")) {
                             } else {
                                 if (user!=null) {
+                                    user.setPhotoUpdateTime(LocalDateTime.now());
                                     user.setPhotoUrl(photoUrl);
                                     userService.updateUser((BeanUtils.toBean(user, UserSaveReqVO.class)));
                                 }
@@ -473,6 +486,7 @@ public class AcsService {
                                 } else {
                                     respVO.getCreateImages().add(studentName);//添加成功
                                     if (user!=null) {
+                                        user.setPhotoUpdateTime(LocalDateTime.now());
                                         user.setPhotoUrl(photoUrl);
                                         userService.updateUser((BeanUtils.toBean(user, UserSaveReqVO.class)));
                                     }

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/vo/StudentAttendanceRespVO.java

@@ -65,4 +65,7 @@ public class StudentAttendanceRespVO {
     @ExcelIgnore
     private String photo;
 
+    @Schema(description = "导师名称", example = "123")
+    private String supervisor;
+
 }

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserRespVO.java

@@ -106,6 +106,9 @@ public class UserRespVO{
     @Schema(description ="家长手机号码")
     private String parentMobile;
 
+    @Schema(description = "照片更新时间")
+    private LocalDateTime photoUpdateTime;
+
     //
 
     @Schema(description = "用户照片是否存在")

+ 4 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSaveReqVO.java

@@ -12,6 +12,7 @@ import lombok.Data;
 import org.hibernate.validator.constraints.Length;
 
 import javax.validation.constraints.*;
+import java.time.LocalDateTime;
 import java.util.Set;
 
 @Schema(description = "管理后台 - 用户创建/修改 Request VO")
@@ -106,4 +107,7 @@ public class UserSaveReqVO {
     @Schema(description = "学号/工号")
     private String userNumber;
 
+    @Schema(description = "照片更新时间")
+    private LocalDateTime photoUpdateTime;
+
 }

+ 5 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java

@@ -130,6 +130,11 @@ public class AdminUserDO extends TenantBaseDO {
      */
     private String parentMobile;
 
+    /**
+     * 照片更新时间
+     */
+    private LocalDateTime photoUpdateTime;
+
     /**
      * 导师名称
      */