Crazy 7 months ago
parent
commit
0c07e22fb4
12 changed files with 80 additions and 102 deletions
  1. 56 5
      yudao-module-md/yudao-module-md-biz/src/main/java/Acs/EventSearch.java
  2. 3 19
      yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/controller/admin/AcsController.java
  3. 0 29
      yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/controller/admin/vo/UserPhotosVO.java
  4. 1 1
      yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/service/AcsService.java
  5. 0 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/StudentAttendanceController.java
  6. 6 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/vo/StudentAttendanceSaveReqVO.java
  7. 1 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java
  8. 11 10
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/studentAttendance/StudentAttendanceDO.java
  9. 0 26
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentAttendance/StudentAttendanceMapper.java
  10. 2 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java
  11. 0 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentAttendance/StudentAttendanceService.java
  12. 0 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentAttendance/StudentAttendanceServiceImpl.java

+ 56 - 5
yudao-module-md/yudao-module-md-biz/src/main/java/Acs/EventSearch.java

@@ -1,6 +1,13 @@
 package Acs;
 
 import NetSDKDemo.HCNetSDK;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.system.controller.admin.studentAttendance.vo.StudentAttendanceSaveReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.studentAttendance.StudentAttendanceDO;
+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.sun.jna.Pointer;
 
 import java.io.FileNotFoundException;
@@ -8,12 +15,21 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.nio.ByteBuffer;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+
 import cn.iocoder.yudao.module.md.service.*;
+
 /**
  * 事件查询模块
  */
 public final class EventSearch {
 
+    private static StudentAttendanceService studentAttendanceService;
+    private static List<Object> studentAttendance =new ArrayList<>();
+    private static AdminUserService adminUserService;
     /**
      * 门禁事件查询,基于起止时间,事件类型进行查询
      *
@@ -22,7 +38,7 @@ public final class EventSearch {
      * @throws UnsupportedEncodingException
      * @throws InterruptedException
      */
-    public static String searchAllEvent(int lUserID) throws UnsupportedEncodingException, InterruptedException {
+    public static List<Object> searchAllEvent(int lUserID) throws UnsupportedEncodingException, InterruptedException {
         int i = 0; //事件条数
         HCNetSDK.NET_DVR_ACS_EVENT_COND struAcsEventCond = new HCNetSDK.NET_DVR_ACS_EVENT_COND();
         struAcsEventCond.read();
@@ -32,20 +48,20 @@ public final class EventSearch {
         struAcsEventCond.dwMinor = 0; //
         //开始时间
         struAcsEventCond.struStartTime.dwYear = 2024;
-        struAcsEventCond.struStartTime.dwMonth = 8;
-        struAcsEventCond.struStartTime.dwDay = 01;
+        struAcsEventCond.struStartTime.dwMonth = 10;
+        struAcsEventCond.struStartTime.dwDay = 21;
         struAcsEventCond.struStartTime.dwHour = 0;
         struAcsEventCond.struStartTime.dwMinute = 0;
         struAcsEventCond.struStartTime.dwSecond = 0;
         //结束时间
         struAcsEventCond.struEndTime.dwYear = 2024;
         struAcsEventCond.struEndTime.dwMonth = 10;
-        struAcsEventCond.struEndTime.dwDay = 9;
+        struAcsEventCond.struEndTime.dwDay = 21;
         struAcsEventCond.struEndTime.dwHour = 23;
         struAcsEventCond.struEndTime.dwMinute = 59;
         struAcsEventCond.struEndTime.dwSecond = 59;
         struAcsEventCond.wInductiveEventType = 1;
-        struAcsEventCond.byPicEnable = 1; //是否带图片,0-不带图片,1-带图片
+        struAcsEventCond.byPicEnable = 0; //是否带图片,0-不带图片,1-带图片
         struAcsEventCond.write();
         Pointer ptrStruEventCond = struAcsEventCond.getPointer();
         int m_lSearchEventHandle = AcsService.hCNetSDK.NET_DVR_StartRemoteConfig(lUserID, HCNetSDK.NET_DVR_GET_ACS_EVENT, ptrStruEventCond, struAcsEventCond.size(), null, null);
@@ -91,6 +107,40 @@ public final class EventSearch {
                         " 时:"+struAcsEventCfg.struTime.dwHour+" 分:"+struAcsEventCfg.struTime.dwMinute+" 秒:"+struAcsEventCfg.struTime.dwSecond);
                 System.out.println("刷卡信息:"+new String(struAcsEventCfg.struAcsEventInfo.byCardNo));
 
+                String clockInTime = (struAcsEventCfg.struTime.dwYear + "-" +
+                        String.format("%02d", struAcsEventCfg.struTime.dwMonth) + "-" +
+                        String.format("%02d", struAcsEventCfg.struTime.dwDay) + " " +
+                        String.format("%02d", struAcsEventCfg.struTime.dwHour) + ":" +
+                        String.format("%02d", struAcsEventCfg.struTime.dwMinute) + ":" +
+                        String.format("%02d", struAcsEventCfg.struTime.dwSecond));
+
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                LocalDateTime parsedTime =null;
+                String employeeNo =null;
+                if ( clockInTime!=null){
+                     parsedTime = LocalDateTime.parse(clockInTime, formatter);
+                }
+                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);
+//                    if (user != null) {
+//                        attendance.setStudentName(user.getNickname());
+//                        attendance.setStudentId(user.getId());
+//                    }else {
+//                        System.out.println("没有找到该用户"+employeeNo);
+//                    }
+//                }
+                //插入
+                attendance.setClockInTime(parsedTime);//打卡时间
+                attendance.setUserNumber(employeeNo);//学号
+
+                //插入考勤表
+//                studentAttendanceService.createStudentAttendance(BeanUtils.toBean(attendance, StudentAttendanceSaveReqVO.class));
+                studentAttendance.add(attendance);
+
                 //人脸图片保存
                 if (struAcsEventCfg.dwPicDataLen>0 || struAcsEventCfg.pPicData != null )
                 {
@@ -126,6 +176,7 @@ public final class EventSearch {
             System.out.println("NET_DVR_StopRemoteConfig接口调用失败,错误码:" + AcsService.hCNetSDK.NET_DVR_GetLastError());
         } else {
             System.out.println("NET_DVR_StopRemoteConfig接口成功");
+            return studentAttendance;
         }
         return null;
     }

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

@@ -200,9 +200,9 @@ public class AcsController {
      * 查询历史事件
      */
     @GetMapping("/searchEvents")
-    public CommonResult<String> searchEvents() throws UnsupportedEncodingException, InterruptedException {
+    public CommonResult<List<Object>> searchEvents() throws UnsupportedEncodingException, InterruptedException {
 
-        String result = acsService.searchEvents();
+        List<Object> result = acsService.searchEvents();
         return success(result);
 
     }
@@ -261,23 +261,7 @@ public class AcsController {
     }
 
 
-    //获取考勤用户导入模板
-    @GetMapping("/get-import-attendanceTemplate")
-    @Operation(summary = "获得考勤用户模板")
-    public void importStudentTemplate(HttpServletResponse response) throws IOException {
-        // 手动创建导出 demo
-        List<attendanceImportExcelVO> list = Arrays.asList(
-                attendanceImportExcelVO.builder().name("张三").employeeNo("3232080808238").build(),
-
-                attendanceImportExcelVO.builder().name("李四").employeeNo("3232080808234").build()
-        );
-        // 输出
-        ExcelUtils.write(response, "用户导入模板.xls", "用户列表", attendanceImportExcelVO.class, list);
-    }
-
-
-
-
+    //通过user表里对应人员插入再添加给考勤
     @PostMapping("/test")
     @Operation(summary = "lsq")
     @Parameters({

+ 0 - 29
yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/controller/admin/vo/UserPhotosVO.java

@@ -1,29 +0,0 @@
-package cn.iocoder.yudao.module.md.controller.admin.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.experimental.Accessors;
-
-import java.io.File;
-
-/**
- * 用户 Excel 导入 VO
- */
-@Data
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@Accessors(chain = false) //
-public class UserPhotosVO {
-
-    @Schema(description = "用户名称")
-    private String name;
-    @Schema(description = "照片组名称")
-    private String groupName; // 照片组的名称
-    @Schema(description = "压缩包文件")
-    private File File; // 压缩包文件
-
-}

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

@@ -259,7 +259,7 @@ public class AcsService {
      *
      * @return
      */
-    public String searchEvents() throws UnsupportedEncodingException, InterruptedException {
+    public  List<Object> searchEvents() throws UnsupportedEncodingException, InterruptedException {
 
         return  EventSearch.searchAllEvent(lUserID);
     }

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

@@ -101,9 +101,5 @@ public class StudentAttendanceController {
                         BeanUtils.toBean(list, StudentAttendanceRespVO.class));
     }
 
-//    @GetMapping("/test")
-//    public CommonResult<PageResult<StudentAttendanceRespVO>> test(@Valid StudentAttendancePageReqVO pageReqVO) {
-//
-//    }
 
 }

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

@@ -41,4 +41,10 @@ public class StudentAttendanceSaveReqVO {
     @Schema(description = "备注原因", example = "你猜")
     private String remark;
 
+    @Schema(description = "学生学号", example = "3232")
+    private String userNumber;
+
+    @Schema(description = "导师id", example = "142")
+    private Long supervisorId;
+
 }

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

@@ -379,6 +379,7 @@ public class UserController {
         ExcelUtils.write(response, "用户导入模板.xls", "用户列表", attendanceImportExcelVO.class, list);
     }
 
+
     //毕业生
     @GetMapping("/get-import-GraduateStudentTemplate")
     @Operation(summary = "获得毕业生模板")

+ 11 - 10
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/studentAttendance/StudentAttendanceDO.java

@@ -34,7 +34,7 @@ public class StudentAttendanceDO extends BaseDO {
     /**
      * 学生id
      */
-    private Integer studentId;
+    private Long studentId;
 
     /**
      * 学生名称
@@ -61,16 +61,17 @@ public class StudentAttendanceDO extends BaseDO {
      */
     private String remark;
 
-//    邮箱测试
-//    @TableField(exist = false)
-//    private String email;
+    /**
+     * 学生学号
+     */
+    private String userNumber;
+
+    /**
+     * 导师id
+     */
+    private Long supervisorId;
+
 
-    // 手机号测试
-    @TableField(exist = false)
-    private String phone;
 
-    //测试字段内嵌,即这个用户的信息都在里面
-    @TableField(exist = false)
-    private AdminUserDO user;
 
 }

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

@@ -60,30 +60,4 @@ public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO
 
     }
 
-    // 测试关联查询,映射到对应实体类字段
-    default PageResult<StudentAttendanceDO> test(StudentAttendancePageReqVO reqVO) {
-        Long deptId = SecurityFrameworkUtils.getLoginUserDeptId();
-        // 创建 MPJLambdaWrapper 用于联合查询
-        MPJLambdaWrapper<StudentAttendanceDO> wrapper = new MPJLambdaWrapper<>();
-
-        // 添加查询条件到 wrapper
-        wrapper.selectAll(StudentAttendanceDO.class)
-                //.select(AdminUserDO::getEmail)// 选择 email 的所有字段自动注入到email里面
-
-                //.selectAs(AdminUserDO::getEmail,StudentAttendanceDO::getPhone) // 选择 AdminUserDO 中的邮箱字段注入到phone里面
-
-                //内嵌email字段,
-                .selectAssociation(AdminUserDO.class,StudentAttendanceDO::getUser)
-
-                .leftJoin(AdminUserDO.class, AdminUserDO::getId, StudentAttendanceDO::getStudentId) // 左连接
-                .likeIfExists(StudentAttendanceDO::getStudentName, reqVO.getStudentName())
-                .eqIfExists(StudentAttendanceDO::getClockInStatus, reqVO.getClockInStatus())
-                // 只出现在老师工作间下面的学生考勤情况
-                .inSql(StudentAttendanceDO::getDeptId, String.valueOf(deptId))
-                // 考勤状态大于等于1
-                .ge(StudentAttendanceDO::getClockInStatus, 1)
-                .orderByDesc(StudentAttendanceDO::getId);
-        // 使用 selectPage 方法返回分页结果
-        return selectJoinPage( reqVO,StudentAttendanceDO.class,wrapper);
-    }
 }

+ 2 - 2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java

@@ -65,9 +65,9 @@ public class DeptServiceImpl implements DeptService {
         // 校验自己存在
         validateDeptExists(updateReqVO.getId());
         // 校验父部门的有效性
-        validateParentDept(updateReqVO.getId(), updateReqVO.getParentId());
+//        validateParentDept(updateReqVO.getId(), updateReqVO.getParentId());
         // 校验部门名的唯一性
-        validateDeptNameUnique(updateReqVO.getId(), updateReqVO.getParentId(), updateReqVO.getName());
+//        validateDeptNameUnique(updateReqVO.getId(), updateReqVO.getParentId(), updateReqVO.getName());
 
         // 更新部门
         DeptDO updateObj = BeanUtils.toBean(updateReqVO, DeptDO.class);

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

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

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

@@ -76,9 +76,4 @@ public class StudentAttendanceServiceImpl implements StudentAttendanceService {
         return studentAttendanceMapper.selectErrorPage(pageReqVO);
     }
 
-    @Override
-    public PageResult<StudentAttendanceDO> test(StudentAttendancePageReqVO pageReqVO) {
-        return studentAttendanceMapper.test(pageReqVO);
-    }
-
 }