Crazy 7 月之前
父節點
當前提交
8e8fd49c7f

+ 12 - 23
yudao-module-md/yudao-module-md-biz/src/main/java/Acs/EventSearch.java

@@ -21,6 +21,7 @@ import com.sun.jna.Pointer;
 
 import java.io.*;
 import java.nio.ByteBuffer;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
@@ -61,16 +62,16 @@ public final class EventSearch {
         struAcsEventCond.dwMajor = 0; // 主次事件类型设为0,代表查询所有事件
         struAcsEventCond.dwMinor = 0; //
         //开始时间
-        struAcsEventCond.struStartTime.dwYear = 2024;
-        struAcsEventCond.struStartTime.dwMonth = 10;
-        struAcsEventCond.struStartTime.dwDay =22 ;
+        struAcsEventCond.struStartTime.dwYear =  LocalDate.now().getYear();//当前年
+        struAcsEventCond.struStartTime.dwMonth =  LocalDate.now().getMonthValue();//当前月
+        struAcsEventCond.struStartTime.dwDay = LocalDate.now().getDayOfMonth()-1 ;//当前月的日
         struAcsEventCond.struStartTime.dwHour = 0;
         struAcsEventCond.struStartTime.dwMinute = 0;
         struAcsEventCond.struStartTime.dwSecond = 0;
         //结束时间
-        struAcsEventCond.struEndTime.dwYear = 2024;
-        struAcsEventCond.struEndTime.dwMonth = 10;
-        struAcsEventCond.struEndTime.dwDay = 23;
+        struAcsEventCond.struEndTime.dwYear = LocalDate.now().getYear();;
+        struAcsEventCond.struEndTime.dwMonth = LocalDate.now().getMonthValue();
+        struAcsEventCond.struEndTime.dwDay = LocalDate.now().getDayOfMonth();
         struAcsEventCond.struEndTime.dwHour = 23;
         struAcsEventCond.struEndTime.dwMinute = 59;
         struAcsEventCond.struEndTime.dwSecond = 59;
@@ -143,19 +144,9 @@ public final class EventSearch {
                 attendance.setClockInTime(parsedTime);//打卡时间
                 attendance.setUserNumber(employeeNo);//学号
 
-                List<StudentAttendanceDO> ST  = studentAttendanceService.getStudentAttendanceByUserNumber(employeeNo);//获取这个学生的所有考勤记录
+                StudentAttendanceDO ST  = studentAttendanceService.getStudentAttendanceOne(employeeNo,parsedTime);//获取这个学生的所有考勤记录
 
-                boolean exists = false; // 用于标识是否存在打卡记录
-
-                if (ST != null && !ST.isEmpty()) {
-                    for (StudentAttendanceDO attendanceRecord : ST) {
-                        if (attendanceRecord.getClockInTime().equals(parsedTime)) {
-                            exists = true; // 如果存在相同的打卡时间,标记为存在
-                            break; // 找到后直接跳出循环
-                        }
-                    }
-                }
-                if (!exists) { // 如果不存在,则进行打卡记录的创建
+                if (ST==null) { // 如果不存在,则进行打卡记录的创建
                     if (employeeNo != null && !employeeNo.equals("0")) {
                         System.out.println("学号:" + employeeNo);
                         AdminUserDO user = adminUserService.findUserByUserNumber(employeeNo);
@@ -166,10 +157,8 @@ public final class EventSearch {
                             attendance.setDeptId(user.getDeptId()); // 工作间id
                             attendance.setSupervisorId(user.getSupervisorId()); // 导师id
                             attendance.setClockInStatus(transformClockStatus(parsedTime)); // 打卡状态
-                            // attendance.setCreateTime(parsedTime); // 创建时间
-                            // attendance.setDeleted(false);
-                            Integer id = studentAttendanceService.createStudentAttendance(BeanUtils.toBean(attendance, StudentAttendanceSaveReqVO.class));
-                            System.out.println(id);
+                            //插入考勤表
+                            studentAttendanceService.createStudentAttendance(BeanUtils.toBean(attendance, StudentAttendanceSaveReqVO.class));
                         } else {
                             System.out.println("没有找到该用户" + employeeNo);
                         }
@@ -219,7 +208,7 @@ public final class EventSearch {
         return null;
     }
 
-    public static String transformClockStatus(LocalDateTime clockTimm){
+    public static String transformClockStatus(LocalDateTime clockTime){
         return "0";
     }
 

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

@@ -32,6 +32,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
@@ -60,6 +61,14 @@ public class AcsController {
     private AdminUserService adminUserService;
 
 
+    //直接运行
+    @PostConstruct
+    public void init() throws UnsupportedEncodingException, InterruptedException {
+        // 自动运行的方法
+        acsService.searchEvents(adminUserService, studentAttendanceService);
+        // 处理结果,如果需要的话
+    }
+
 /**
      * 添加用户
      */

+ 10 - 2
yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/service/AcsService.java

@@ -346,6 +346,8 @@ public class AcsService {
                 String result = getUser(employeeNo);
                 Gson gson = new Gson();
                 JsonObject jsonObject = gson.fromJson(result, JsonObject.class);
+
+                AdminUserDO user = userService.findUserByUserNumber(employeeNo);
                 JsonArray userInfoArray = jsonObject
                         .getAsJsonObject("UserInfoSearch")
                         .getAsJsonArray("UserInfo");
@@ -354,6 +356,10 @@ public class AcsService {
                     if (msg.contains("下发人脸成功") && msg.contains("但是有异常情况")) {
                          return "更新照片失败,请检查照片大小";
                     } else {
+                        if (user!=null) {
+                            user.setPhotoUrl(photoUrl);
+                            userService.updateUser((BeanUtils.toBean(user, UserSaveReqVO.class)));
+                        }
                         return "更新照片成功";
                     }
                 }
@@ -439,14 +445,16 @@ public class AcsService {
                                 // 上传文件并获取 URL
                                 AdminUserDO user = userService.findUserByUserNumber(userNumber);
                                 String photoUrl = fileApi.createFile(Files.readAllBytes(newFile.toPath()));
-                                userService.updateUser((BeanUtils.toBean(user, UserSaveReqVO.class)));
                                 //给对应学号的人的照片添加
                                 String msg = addFaceByUrl(user.getUserNumber(), photoUrl);
                                 if (msg.contains("下发人脸成功") && msg.contains("但是有异常情况")) {
                                     failUsers.add(studentName);
                                 } else {
                                     successUsers.add(studentName);
-                                    user.setPhotoUrl(photoUrl);
+                                    if (user!=null) {
+                                        user.setPhotoUrl(photoUrl);
+                                        userService.updateUser((BeanUtils.toBean(user, UserSaveReqVO.class)));
+                                    }
                                 }
                             } else {
                                 nullUsers.add(studentName);

+ 5 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentAttendance/StudentAttendanceMapper.java

@@ -11,8 +11,10 @@ import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.ibatis.annotations.Mapper;
 import cn.iocoder.yudao.module.system.controller.admin.studentAttendance.vo.*;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -64,4 +66,7 @@ public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO
     @Select("SELECT * FROM system_student_attendance WHERE user_number = #{userNumber}")
     List<StudentAttendanceDO> getStudentAttendanceByUserNumber(String userNumber);
 
+    @Select("SELECT * FROM system_student_attendance WHERE user_number = #{userNumber} AND clock_in_time = #{clockTime}")
+    StudentAttendanceDO getStudentAttendanceOne(@Param("userNumber") String userNumber,
+                                                @Param("clockTime") LocalDateTime clockTime);
 }

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentAttendance/StudentAttendanceService.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.system.service.studentAttendance;
 
+import java.time.LocalDateTime;
 import java.util.*;
 import javax.validation.*;
 import cn.iocoder.yudao.module.system.controller.admin.studentAttendance.vo.*;
@@ -56,4 +57,6 @@ public interface StudentAttendanceService {
 
     List<StudentAttendanceDO> getStudentAttendanceByUserNumber(String userNumber);
 
+    StudentAttendanceDO getStudentAttendanceOne(String userNumber,LocalDateTime clockTime);
+
 }

+ 5 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentAttendance/StudentAttendanceServiceImpl.java

@@ -5,6 +5,7 @@ import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
 import java.util.*;
 import cn.iocoder.yudao.module.system.controller.admin.studentAttendance.vo.*;
 import cn.iocoder.yudao.module.system.dal.dataobject.studentAttendance.StudentAttendanceDO;
@@ -81,5 +82,9 @@ public class StudentAttendanceServiceImpl implements StudentAttendanceService {
         return studentAttendanceMapper.getStudentAttendanceByUserNumber(userNumber);
     }
 
+   public StudentAttendanceDO getStudentAttendanceOne(String userNumber, LocalDateTime clockTime){
+        return studentAttendanceMapper.getStudentAttendanceOne(userNumber,clockTime);
+    }
+
 
 }