Crazy vor 7 Monaten
Ursprung
Commit
718d28e5f0
12 geänderte Dateien mit 88 neuen und 210 gelöschten Zeilen
  1. 38 204
      yudao-module-md/yudao-module-md-biz/src/main/java/Acs/EventSearch.java
  2. 22 2
      yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/controller/admin/AcsController.java
  3. 3 2
      yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/service/AcsService.java
  4. 1 0
      yudao-module-system/yudao-module-system-biz/pom.xml
  5. 1 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/StudentAttendanceController.java
  6. 1 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/vo/StudentAttendanceSaveReqVO.java
  7. 4 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java
  8. 4 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserRespVO.java
  9. 3 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java
  10. 4 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentAttendance/StudentAttendanceMapper.java
  11. 1 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentAttendance/StudentAttendanceService.java
  12. 6 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentAttendance/StudentAttendanceServiceImpl.java

+ 38 - 204
yudao-module-md/yudao-module-md-biz/src/main/java/Acs/EventSearch.java

@@ -41,189 +41,6 @@ import javax.annotation.Resource;
  */
 public final class EventSearch {
 
-    static AdminUserService adminUserService =new AdminUserService() {
-        @Override
-        public Long createUser(UserSaveReqVO createReqVO) {
-            return 0L;
-        }
-
-        @Override
-        public void updateUser(UserSaveReqVO updateReqVO) {
-
-        }
-
-        @Override
-        public void updateUserLogin(Long id, String loginIp) {
-
-        }
-
-        @Override
-        public void updateUserProfile(Long id, UserProfileUpdateReqVO reqVO) {
-
-        }
-
-        @Override
-        public void updateUserPassword(Long id, UserProfileUpdatePasswordReqVO reqVO) {
-
-        }
-
-        @Override
-        public String updateUserAvatar(Long id, InputStream avatarFile) throws Exception {
-            return "";
-        }
-
-        @Override
-        public void updateUserPassword(Long id, String password) {
-
-        }
-
-        @Override
-        public void updateUserStatus(Long id, Integer status) {
-
-        }
-
-        @Override
-        public void deleteUser(Long id) {
-
-        }
-
-        @Override
-        public AdminUserDO getUserByUsername(String username) {
-            return null;
-        }
-
-        @Override
-        public AdminUserDO getUserByMobile(String mobile) {
-            return null;
-        }
-
-        @Override
-        public PageResult<AdminUserDO> getUserPage(UserPageReqVO reqVO) {
-            return null;
-        }
-
-        @Override
-        public PageResult<AdminUserDO> getUserPage1(UserPageReqVO reqVO) {
-            return null;
-        }
-
-        @Override
-        public PageResult<AdminUserDO> getUserPage0(UserPageReqVO reqVO) {
-            return null;
-        }
-
-        @Override
-        public PageResult<AdminUserDO> getDeptTeacherPage(UserPageReqVO reqVO) {
-            return null;
-        }
-
-        @Override
-        public PageResult<AdminUserDO> getDeptStudentPage(UserPageReqVO reqVO) {
-            return null;
-        }
-
-        @Override
-        public List<AdminUserDO> getDeptUser() {
-            return Collections.emptyList();
-        }
-
-        @Override
-        public PageResult<AdminUserDO> getGraduateStudentPage(UserPageReqVO reqVO) {
-            return null;
-        }
-
-        @Override
-        public PageResult<AdminUserDO> getGraduateStudentTPage(UserPageReqVO reqVO) {
-            return null;
-        }
-
-        @Override
-        public List<AdminUserDO> getSupervisor() {
-            return Collections.emptyList();
-        }
-
-        @Override
-        public AdminUserDO getUser(Long id) {
-            return null;
-        }
-
-        @Override
-        public List<AdminUserDO> getUserListByDeptIds(Collection<Long> deptIds) {
-            return Collections.emptyList();
-        }
-
-        @Override
-        public List<AdminUserDO> getUserListByPostIds(Collection<Long> postIds) {
-            return Collections.emptyList();
-        }
-
-        @Override
-        public List<AdminUserDO> getUserList(Collection<Long> ids) {
-            return Collections.emptyList();
-        }
-
-        @Override
-        public void validateUserList(Collection<Long> ids) {
-
-        }
-
-        @Override
-        public List<AdminUserDO> getUserListByNickname(String nickname) {
-            return Collections.emptyList();
-        }
-
-        @Override
-        public UserImportRespVO importUserList(List<UserImportExcelVO> importUsers, boolean isUpdateSupport) {
-            return null;
-        }
-
-        @Override
-        public List<AdminUserDO> getUserListByStatus(Integer status) {
-            return Collections.emptyList();
-        }
-
-        @Override
-        public boolean isPasswordMatch(String rawPassword, String encodedPassword) {
-            return false;
-        }
-
-        @Override
-        public AdminUserDO findUserByUserNumber(String userNumber) {
-            return null;
-        }
-    };
-
-    static StudentAttendanceService studentAttendanceService = new StudentAttendanceService() {
-        @Override
-        public Integer createStudentAttendance(StudentAttendanceSaveReqVO createReqVO) {
-            return 0;
-        }
-
-        @Override
-        public void updateStudentAttendance(StudentAttendanceSaveReqVO updateReqVO) {
-
-        }
-
-        @Override
-        public void deleteStudentAttendance(Integer id) {
-
-        }
-
-        @Override
-        public StudentAttendanceDO getStudentAttendance(Integer id) {
-            return null;
-        }
-
-        @Override
-        public PageResult<StudentAttendanceDO> getStudentAttendancePage(StudentAttendancePageReqVO pageReqVO) {
-            return null;
-        }
-
-        @Override
-        public PageResult<StudentAttendanceDO> getStudentAttendanceErrorPage(StudentAttendancePageReqVO pageReqVO) {
-            return null;
-        }
-    };
 
     private static List<Object> studentAttendance =new ArrayList<>();
 
@@ -235,7 +52,7 @@ public final class EventSearch {
      * @throws UnsupportedEncodingException
      * @throws InterruptedException
      */
-    public static List<Object> searchAllEvent(int lUserID) throws UnsupportedEncodingException, InterruptedException {
+    public static List<Object> searchAllEvent(int lUserID ,AdminUserService adminUserService,StudentAttendanceService studentAttendanceService) throws UnsupportedEncodingException, InterruptedException {
         int i = 0; //事件条数
         HCNetSDK.NET_DVR_ACS_EVENT_COND struAcsEventCond = new HCNetSDK.NET_DVR_ACS_EVENT_COND();
         struAcsEventCond.read();
@@ -246,14 +63,14 @@ public final class EventSearch {
         //开始时间
         struAcsEventCond.struStartTime.dwYear = 2024;
         struAcsEventCond.struStartTime.dwMonth = 10;
-        struAcsEventCond.struStartTime.dwDay = 21;
+        struAcsEventCond.struStartTime.dwDay =22 ;
         struAcsEventCond.struStartTime.dwHour = 0;
         struAcsEventCond.struStartTime.dwMinute = 0;
         struAcsEventCond.struStartTime.dwSecond = 0;
         //结束时间
         struAcsEventCond.struEndTime.dwYear = 2024;
         struAcsEventCond.struEndTime.dwMonth = 10;
-        struAcsEventCond.struEndTime.dwDay = 21;
+        struAcsEventCond.struEndTime.dwDay = 23;
         struAcsEventCond.struEndTime.dwHour = 23;
         struAcsEventCond.struEndTime.dwMinute = 59;
         struAcsEventCond.struEndTime.dwSecond = 59;
@@ -321,28 +138,45 @@ public final class EventSearch {
                 if (struAcsEventCfg.struAcsEventInfo.dwEmployeeNo!=0){
                     employeeNo = String.valueOf(struAcsEventCfg.struAcsEventInfo.dwEmployeeNo);
                 }
+
                 StudentAttendanceDO attendance =new StudentAttendanceDO();
-                if (employeeNo != null && !employeeNo.equals("0")) {
-                    AdminUserDO user = adminUserService.findUserByUserNumber(employeeNo);
-                    System.out.println("用户"+user);
-                    if (user != null) {
-                        attendance.setStudentName(user.getNickname());//昵称
-                        attendance.setStudentId(user.getId());//学生id
-                        attendance.setDeptId(user.getDeptId());//工作间id
-                        attendance.setSupervisorId(user.getSupervisorId());//导师id
-                        attendance.setClockInStatus(transformClockStatus(parsedTime));//打卡状态
-                    }else {
-                        System.out.println("没有找到该用户"+employeeNo);
-                    }
-                }
-                //插入
                 attendance.setClockInTime(parsedTime);//打卡时间
                 attendance.setUserNumber(employeeNo);//学号
 
-                //插入考勤表
-                //TODO没插入成功
-                Integer id =  studentAttendanceService.createStudentAttendance(BeanUtils.toBean(attendance, StudentAttendanceSaveReqVO.class));
-                System.out.println(id);
+                List<StudentAttendanceDO> ST  = studentAttendanceService.getStudentAttendanceByUserNumber(employeeNo);//获取这个学生的所有考勤记录
+
+                boolean exists = false; // 用于标识是否存在打卡记录
+
+                if (ST != null && !ST.isEmpty()) {
+                    for (StudentAttendanceDO attendanceRecord : ST) {
+                        if (attendanceRecord.getClockInTime().equals(parsedTime)) {
+                            exists = true; // 如果存在相同的打卡时间,标记为存在
+                            break; // 找到后直接跳出循环
+                        }
+                    }
+                }
+                if (!exists) { // 如果不存在,则进行打卡记录的创建
+                    if (employeeNo != null && !employeeNo.equals("0")) {
+                        System.out.println("学号:" + employeeNo);
+                        AdminUserDO user = adminUserService.findUserByUserNumber(employeeNo);
+                        System.out.println("用户" + user);
+                        if (user != null) {
+                            attendance.setStudentName(user.getNickname()); // 昵称
+                            attendance.setStudentId(user.getId()); // 学生id
+                            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);
+                        } else {
+                            System.out.println("没有找到该用户" + employeeNo);
+                        }
+                    }
+                } else {
+                    System.out.println("打卡记录已存在,无法进行重复打卡。");
+                }
                 studentAttendance.add(attendance);
 
                 //人脸图片保存

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

@@ -1,9 +1,16 @@
 package cn.iocoder.yudao.module.md.controller.admin;
 
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.md.controller.admin.vo.attendanceImportExcelVO;
 import cn.iocoder.yudao.module.md.controller.admin.vo.attendanceImportRespVO;
 import cn.iocoder.yudao.module.md.service.AcsService;
 
+import cn.iocoder.yudao.module.system.controller.admin.studentAttendance.vo.StudentAttendancePageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.studentAttendance.vo.StudentAttendanceRespVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.studentAttendance.StudentAttendanceDO;
+import cn.iocoder.yudao.module.system.service.studentAttendance.StudentAttendanceService;
+import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import com.google.common.reflect.TypeToken;
 import com.google.gson.Gson;
 import com.google.gson.JsonArray;
@@ -27,6 +34,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -46,6 +54,10 @@ public class AcsController {
 
     @Resource
     private AcsService acsService;
+    @Resource
+    private StudentAttendanceService studentAttendanceService;
+    @Resource
+    private AdminUserService adminUserService;
 
 
 /**
@@ -203,7 +215,7 @@ public class AcsController {
     @GetMapping("/searchEvents")
     public CommonResult<List<Object>> searchEvents() throws UnsupportedEncodingException, InterruptedException {
 
-        List<Object> result = acsService.searchEvents();
+        List<Object> result = acsService.searchEvents(adminUserService,studentAttendanceService);
         return success(result);
 
     }
@@ -281,7 +293,15 @@ public class AcsController {
         }
     }
 
-    //人脸信息分页管理接口
+    //考勤分页
+    @GetMapping("/page")
+    @Operation(summary = "获得学生考勤记录分页")
+    @PreAuthorize("@ss.hasPermission('system:student-attendance:query')")
+    public CommonResult<PageResult<StudentAttendanceRespVO>> getStudentAttendancePage(@Valid StudentAttendancePageReqVO pageReqVO) {
+        PageResult<StudentAttendanceDO> pageResult = studentAttendanceService.getStudentAttendancePage(pageReqVO);
+        System.out.println(pageResult);
+        return success(BeanUtils.toBean(pageResult, StudentAttendanceRespVO.class));
+    }
 
 }
 

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

@@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.md.controller.admin.vo.attendanceImportRespVO;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
+import cn.iocoder.yudao.module.system.service.studentAttendance.StudentAttendanceService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import com.google.gson.Gson;
 import com.google.gson.JsonArray;
@@ -260,8 +261,8 @@ public class AcsService {
      * @return
      */
 
-    public  List<Object> searchEvents() throws UnsupportedEncodingException, InterruptedException {
-        return  EventSearch.searchAllEvent(lUserID);
+    public  List<Object> searchEvents(AdminUserService adminUserService, StudentAttendanceService studentAttendanceService) throws UnsupportedEncodingException, InterruptedException {
+        return  EventSearch.searchAllEvent(lUserID, adminUserService,studentAttendanceService);
     }
 
 

+ 1 - 0
yudao-module-system/yudao-module-system-biz/pom.xml

@@ -130,6 +130,7 @@
             <version>2.2.0-jdk8-snapshot</version>
             <scope>compile</scope>
         </dependency>
+
     </dependencies>
 
 </project>

+ 1 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/StudentAttendanceController.java

@@ -79,6 +79,7 @@ public class StudentAttendanceController {
         System.out.println(pageResult);
         return success(BeanUtils.toBean(pageResult, StudentAttendanceRespVO.class));
     }
+
     @GetMapping("/errorPage")
     @Operation(summary = "获得学生考勤异常记录分页")
     @PreAuthorize("@ss.hasPermission('system:student-attendance:ErrorQuery')")

+ 1 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/vo/StudentAttendanceSaveReqVO.java

@@ -29,7 +29,7 @@ public class StudentAttendanceSaveReqVO {
     private String deptId;
 
     @Schema(description = "日期", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "日期不能为空")
+//    @NotNull(message = "日期不能为空")
     private LocalDate date;
 
     @Schema(description = "打卡时间")

+ 4 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java

@@ -25,6 +25,7 @@ import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Parameters;
 import io.swagger.v3.oas.annotations.tags.Tag;
+
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -64,6 +65,7 @@ public class UserController {
     @Resource
     private FileService fileService;
 
+
     @Resource
     private FileApi fileApi;
 
@@ -194,9 +196,10 @@ public class UserController {
         if (CollUtil.isEmpty(pageResult.getList())) {
             return success(new PageResult<>(pageResult.getTotal()));
         }
-        // 拼接数据
+        // 拼接部门数据
         Map<Long, DeptDO> deptMap = deptService.getDeptMap(
                 convertList(pageResult.getList(), AdminUserDO::getDeptId));
+
         return success(new PageResult<>(UserConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
                 pageResult.getTotal()));
     }

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

@@ -72,4 +72,8 @@ public class UserRespVO{
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
     private LocalDateTime createTime;
 
+    @Schema(description = "照片", example = "url")
+    private String photoUrl;
+
+
 }

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

@@ -135,5 +135,8 @@ public class AdminUserDO extends TenantBaseDO {
     private String supervisorMobile;
 
     private String photoUrl;
+    
+
+
 
 }

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

@@ -13,6 +13,8 @@ import org.apache.ibatis.annotations.Mapper;
 import cn.iocoder.yudao.module.system.controller.admin.studentAttendance.vo.*;
 import org.apache.ibatis.annotations.Select;
 
+import java.util.List;
+
 /**
  * 学生考勤记录 Mapper
  *
@@ -59,5 +61,7 @@ public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO
                  .orderByDesc(StudentAttendanceDO::getId));
 
     }
+    @Select("SELECT * FROM system_student_attendance WHERE user_number = #{userNumber}")
+    List<StudentAttendanceDO> getStudentAttendanceByUserNumber(String userNumber);
 
 }

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

@@ -54,5 +54,6 @@ public interface StudentAttendanceService {
 
     PageResult<StudentAttendanceDO> getStudentAttendanceErrorPage(StudentAttendancePageReqVO pageReqVO);
 
+    List<StudentAttendanceDO> getStudentAttendanceByUserNumber(String userNumber);
 
 }

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

@@ -76,4 +76,10 @@ public class StudentAttendanceServiceImpl implements StudentAttendanceService {
         return studentAttendanceMapper.selectErrorPage(pageReqVO);
     }
 
+    @Override
+    public List<StudentAttendanceDO> getStudentAttendanceByUserNumber(String userNumber){
+        return studentAttendanceMapper.getStudentAttendanceByUserNumber(userNumber);
+    }
+
+
 }