瀏覽代碼

添加教师考勤记录

DESKTOP-USV654P\pc 1 年之前
父節點
當前提交
dd12de07ae
共有 23 個文件被更改,包括 1204 次插入14 次删除
  1. 102 0
      src/main/java/com/xjrsoft/module/attendance/controller/StudentAttendanceRecordController.java
  2. 125 0
      src/main/java/com/xjrsoft/module/attendance/controller/TeacherAttendanceRecordController.java
  3. 58 0
      src/main/java/com/xjrsoft/module/attendance/dto/AddStudentAttendanceRecordDto.java
  4. 48 0
      src/main/java/com/xjrsoft/module/attendance/dto/AddTeacherAttendanceRecordDto.java
  5. 26 0
      src/main/java/com/xjrsoft/module/attendance/dto/StudentAttendanceRecordPageDto.java
  6. 69 0
      src/main/java/com/xjrsoft/module/attendance/dto/TeacherAttendanceRecordPageDto.java
  7. 32 0
      src/main/java/com/xjrsoft/module/attendance/dto/UpdateStudentAttendanceRecordDto.java
  8. 32 0
      src/main/java/com/xjrsoft/module/attendance/dto/UpdateTeacherAttendanceRecordDto.java
  9. 108 0
      src/main/java/com/xjrsoft/module/attendance/entity/StudentAttendanceRecord.java
  10. 102 0
      src/main/java/com/xjrsoft/module/attendance/entity/TeacherAttendanceRecord.java
  11. 17 0
      src/main/java/com/xjrsoft/module/attendance/mapper/StudentAttendanceRecordMapper.java
  12. 17 0
      src/main/java/com/xjrsoft/module/attendance/mapper/TeacherAttendanceRecordMapper.java
  13. 17 0
      src/main/java/com/xjrsoft/module/attendance/service/IStudentAttendanceRecordService.java
  14. 17 0
      src/main/java/com/xjrsoft/module/attendance/service/ITeacherAttendanceRecordService.java
  15. 25 0
      src/main/java/com/xjrsoft/module/attendance/service/impl/StudentAttendanceRecordServiceImpl.java
  16. 25 0
      src/main/java/com/xjrsoft/module/attendance/service/impl/TeacherAttendanceRecordServiceImpl.java
  17. 89 0
      src/main/java/com/xjrsoft/module/attendance/vo/StudentAttendanceRecordPageVo.java
  18. 59 0
      src/main/java/com/xjrsoft/module/attendance/vo/StudentAttendanceRecordVo.java
  19. 108 0
      src/main/java/com/xjrsoft/module/attendance/vo/TeacherAttendanceRecordPageVo.java
  20. 49 0
      src/main/java/com/xjrsoft/module/attendance/vo/TeacherAttendanceRecordVo.java
  21. 23 14
      src/main/java/com/xjrsoft/module/outint/controller/TeacherOutInRecordController.java
  22. 5 0
      src/main/java/com/xjrsoft/module/outint/dto/TeacherOutInRecordPageDto.java
  23. 51 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 102 - 0
src/main/java/com/xjrsoft/module/attendance/controller/StudentAttendanceRecordController.java

@@ -0,0 +1,102 @@
+package com.xjrsoft.module.attendance.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.attendance.dto.AddStudentAttendanceRecordDto;
+import com.xjrsoft.module.attendance.dto.UpdateStudentAttendanceRecordDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.attendance.dto.StudentAttendanceRecordPageDto;
+import com.xjrsoft.module.attendance.entity.StudentAttendanceRecord;
+import com.xjrsoft.module.attendance.service.IStudentAttendanceRecordService;
+import com.xjrsoft.module.attendance.vo.StudentAttendanceRecordPageVo;
+
+import com.xjrsoft.module.attendance.vo.StudentAttendanceRecordVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+* @title: 学生考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/attendance" + "/studentAttendanceRecord")
+@Api(value = "/attendance"  + "/studentAttendanceRecord",tags = "学生考勤记录代码")
+@AllArgsConstructor
+public class StudentAttendanceRecordController {
+
+
+    private final IStudentAttendanceRecordService studentAttendanceRecordService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="学生考勤记录列表(分页)")
+    @SaCheckPermission("studentattendancerecord:detail")
+    public RT<PageOutput<StudentAttendanceRecordPageVo>> page(@Valid StudentAttendanceRecordPageDto dto){
+
+        LambdaQueryWrapper<StudentAttendanceRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(StudentAttendanceRecord::getId)
+                .select(StudentAttendanceRecord.class,x -> VoToColumnUtil.fieldsToColumns(StudentAttendanceRecordPageVo.class).contains(x.getProperty()));
+        IPage<StudentAttendanceRecord> page = studentAttendanceRecordService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<StudentAttendanceRecordPageVo> pageOutput = ConventPage.getPageOutput(page, StudentAttendanceRecordPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询学生考勤记录信息")
+    @SaCheckPermission("studentattendancerecord:detail")
+    public RT<StudentAttendanceRecordVo> info(@RequestParam Long id){
+        StudentAttendanceRecord studentAttendanceRecord = studentAttendanceRecordService.getById(id);
+        if (studentAttendanceRecord == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(studentAttendanceRecord, StudentAttendanceRecordVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增学生考勤记录")
+    @SaCheckPermission("studentattendancerecord:add")
+    public RT<Boolean> add(@Valid @RequestBody AddStudentAttendanceRecordDto dto){
+        StudentAttendanceRecord studentAttendanceRecord = BeanUtil.toBean(dto, StudentAttendanceRecord.class);
+        boolean isSuccess = studentAttendanceRecordService.save(studentAttendanceRecord);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改学生考勤记录")
+    @SaCheckPermission("studentattendancerecord:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateStudentAttendanceRecordDto dto){
+
+        StudentAttendanceRecord studentAttendanceRecord = BeanUtil.toBean(dto, StudentAttendanceRecord.class);
+        return RT.ok(studentAttendanceRecordService.updateById(studentAttendanceRecord));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除学生考勤记录")
+    @SaCheckPermission("studentattendancerecord:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(studentAttendanceRecordService.removeBatchByIds(ids));
+
+    }
+
+}

+ 125 - 0
src/main/java/com/xjrsoft/module/attendance/controller/TeacherAttendanceRecordController.java

@@ -0,0 +1,125 @@
+package com.xjrsoft.module.attendance.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.yulichang.toolkit.MPJWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.attendance.dto.AddTeacherAttendanceRecordDto;
+import com.xjrsoft.module.attendance.dto.UpdateTeacherAttendanceRecordDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.attendance.dto.TeacherAttendanceRecordPageDto;
+import com.xjrsoft.module.attendance.entity.TeacherAttendanceRecord;
+import com.xjrsoft.module.attendance.service.ITeacherAttendanceRecordService;
+import com.xjrsoft.module.attendance.vo.TeacherAttendanceRecordPageVo;
+
+import com.xjrsoft.module.attendance.vo.TeacherAttendanceRecordVo;
+import com.xjrsoft.module.organization.entity.UserDeptRelation;
+import com.xjrsoft.module.outint.entity.TeacherOutInRecord;
+import com.xjrsoft.module.outint.vo.TeacherOutInRecordPageVo;
+import com.xjrsoft.module.system.entity.DictionaryDetail;
+import com.xjrsoft.module.teacher.entity.XjrUser;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+* @title: 教师考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/attendance" + "/teacherAttendanceRecord")
+@Api(value = "/attendance"  + "/teacherAttendanceRecord",tags = "教师考勤记录代码")
+@AllArgsConstructor
+public class TeacherAttendanceRecordController {
+
+
+    private final ITeacherAttendanceRecordService teacherAttendanceRecordService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="教师考勤记录列表(分页)")
+    @SaCheckPermission("teacherattendancerecord:detail")
+    public RT<PageOutput<TeacherAttendanceRecordPageVo>> page(@Valid TeacherAttendanceRecordPageDto dto){
+
+        MPJLambdaWrapper<TeacherAttendanceRecord> queryWrapper =  MPJWrappers.<TeacherAttendanceRecord>lambdaJoin()
+                .orderByDesc(TeacherAttendanceRecord::getId)
+                .like(StrUtil.isNotBlank(dto.getName()), XjrUser::getName,dto.getName())
+                .ge(ObjectUtil.isNotNull(dto.getStartTime()), TeacherAttendanceRecord::getCreateDate,dto.getStartTime()+" 00:00:00")
+                .le(ObjectUtil.isNotNull(dto.getStartTime()),TeacherAttendanceRecord::getCreateDate,dto.getStartTime()+" 23:59:59")
+                .eq(ObjectUtil.isNotNull(dto.getTimeInterval())&&dto.getTimeInterval()!=0, TeacherAttendanceRecord::getTimeInterval, dto.getTimeInterval())
+                .eq(StrUtil.isNotBlank(dto.getAttendanceStatus()), TeacherAttendanceRecord::getAttendanceStatus,dto.getAttendanceStatus())
+                .eq(ObjectUtil.isNotNull(dto.getAttendanceMode())&&dto.getAttendanceMode()!=0, TeacherAttendanceRecord::getAttendanceMode, dto.getAttendanceMode())
+                .like(StrUtil.isNotBlank(dto.getCarNumber()), TeacherAttendanceRecord::getCarNumber,dto.getCarNumber())
+                .select(TeacherAttendanceRecord.class,x -> VoToColumnUtil.fieldsToColumns(TeacherAttendanceRecordPageVo.class).contains(x.getProperty()))
+                .select(XjrUser::getName,XjrUser::getMobile,XjrUser::getCredentialNumber)
+                .leftJoin(XjrUser.class,XjrUser::getId,TeacherOutInRecord::getUserId)
+                .leftJoin(DictionaryDetail.class,DictionaryDetail::getCode, TeacherAttendanceRecord::getAttendanceStatus, ext->ext.selectAs(DictionaryDetail::getName, TeacherAttendanceRecordPageVo::getAttendanceStatusCn))
+                .leftJoin(DictionaryDetail.class,DictionaryDetail::getCode, XjrUser::getGender, ext->ext.selectAs(DictionaryDetail::getName, TeacherAttendanceRecordPageVo::getGender))
+                ;
+
+        if(ObjectUtil.isNotNull(dto.getDeptId())&&dto.getDeptId()!=0){
+            queryWrapper.leftJoin(UserDeptRelation.class,UserDeptRelation::getUserId,XjrUser::getId)
+                    .eq(UserDeptRelation::getDeptId,dto.getDeptId());
+        }
+        IPage<TeacherAttendanceRecordPageVo> page = teacherAttendanceRecordService.selectJoinListPage(ConventPage.getPage(dto), TeacherAttendanceRecordPageVo.class,queryWrapper);
+        PageOutput<TeacherAttendanceRecordPageVo> pageOutput = ConventPage.getPageOutput(page, TeacherAttendanceRecordPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询教师考勤记录信息")
+    @SaCheckPermission("teacherattendancerecord:detail")
+    public RT<TeacherAttendanceRecordVo> info(@RequestParam Long id){
+        TeacherAttendanceRecord teacherAttendanceRecord = teacherAttendanceRecordService.getById(id);
+        if (teacherAttendanceRecord == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(teacherAttendanceRecord, TeacherAttendanceRecordVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增教师考勤记录")
+    @SaCheckPermission("teacherattendancerecord:add")
+    public RT<Boolean> add(@Valid @RequestBody AddTeacherAttendanceRecordDto dto){
+        TeacherAttendanceRecord teacherAttendanceRecord = BeanUtil.toBean(dto, TeacherAttendanceRecord.class);
+        boolean isSuccess = teacherAttendanceRecordService.save(teacherAttendanceRecord);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改教师考勤记录")
+    @SaCheckPermission("teacherattendancerecord:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateTeacherAttendanceRecordDto dto){
+
+        TeacherAttendanceRecord teacherAttendanceRecord = BeanUtil.toBean(dto, TeacherAttendanceRecord.class);
+        return RT.ok(teacherAttendanceRecordService.updateById(teacherAttendanceRecord));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除教师考勤记录")
+    @SaCheckPermission("teacherattendancerecord:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(teacherAttendanceRecordService.removeBatchByIds(ids));
+
+    }
+
+}

+ 58 - 0
src/main/java/com/xjrsoft/module/attendance/dto/AddStudentAttendanceRecordDto.java

@@ -0,0 +1,58 @@
+package com.xjrsoft.module.attendance.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 学生考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Data
+public class AddStudentAttendanceRecordDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 学生userId(xjr_user)
+    */
+    @ApiModelProperty("学生userId(xjr_user)")
+    private Long userId;
+    /**
+    * 班主人id(xjr_user)
+    */
+    @ApiModelProperty("班主人id(xjr_user)")
+    private Long teacherId;
+    /**
+    * 班级id(class)
+    */
+    @ApiModelProperty("班级id(class)")
+    private Long classId;
+    /**
+    * 就读方式(xjr_dictionary_item[stduy_status])
+    */
+    @ApiModelProperty("就读方式(xjr_dictionary_item[stduy_status])")
+    private String stduyStatus;
+    /**
+    * 考勤状态(xjr_dictionary_detail[attendance_status])
+    */
+    @ApiModelProperty("考勤状态(xjr_dictionary_detail[attendance_status])")
+    private String attendanceStatus;
+    /**
+    * 时段(1:上午,2:下午,3:晚上)
+    */
+    @ApiModelProperty("时段(1:上午,2:下午,3:晚上)")
+    private Integer timeInterval;
+
+}

+ 48 - 0
src/main/java/com/xjrsoft/module/attendance/dto/AddTeacherAttendanceRecordDto.java

@@ -0,0 +1,48 @@
+package com.xjrsoft.module.attendance.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 教师考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Data
+public class AddTeacherAttendanceRecordDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 教师userId(xjr_user)
+    */
+    @ApiModelProperty("教师userId(xjr_user)")
+    private Long userId;
+    /**
+    * 考勤方式(1:人脸,2:车辆)
+    */
+    @ApiModelProperty("考勤方式(1:人脸,2:车辆)")
+    private Integer attendanceMode;
+    /**
+    * 考勤状态(xjr_dictionary_detail[attendance_status])
+    */
+    @ApiModelProperty("考勤状态(xjr_dictionary_detail[attendance_status])")
+    private String attendanceStatus;
+    /**
+    * 时段(1:上午,2:下午,3:晚上)
+    */
+    @ApiModelProperty("时段(1:上午,2:下午,3:晚上)")
+    private Integer timeInterval;
+
+}

+ 26 - 0
src/main/java/com/xjrsoft/module/attendance/dto/StudentAttendanceRecordPageDto.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.attendance.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 学生考勤记录分页查询入参
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class StudentAttendanceRecordPageDto extends PageInput {
+
+
+}

+ 69 - 0
src/main/java/com/xjrsoft/module/attendance/dto/TeacherAttendanceRecordPageDto.java

@@ -0,0 +1,69 @@
+package com.xjrsoft.module.attendance.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 教师考勤记录分页查询入参
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TeacherAttendanceRecordPageDto extends PageInput {
+
+    /**
+     * 记录开始时间
+     */
+    @ApiModelProperty("记录开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDateTime startTime;
+    /**
+     * 记录开始时间
+     */
+    @ApiModelProperty("记录结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDateTime endTime;
+    /**
+     * 考勤方式(1:人脸,2:车辆)
+     */
+    @ApiModelProperty("考勤方式(1:人脸,2:车辆)")
+    private Integer attendanceMode;
+    /**
+     * 考勤状态(xjr_dictionary_detail[attendance_status])
+     */
+    @ApiModelProperty("考勤状态(xjr_dictionary_detail[attendance_status])")
+    private String attendanceStatus;
+    /**
+     * 时段(1:上午,2:下午,3:晚上)
+     */
+    @ApiModelProperty("时段(1:上午,2:下午,3:晚上)")
+    private Integer timeInterval;
+    /**
+     * 车牌号
+     */
+    @ApiModelProperty("车牌号")
+    private String carNumber;
+    /**
+     * 教师姓名
+     */
+    @ApiModelProperty("教师姓名")
+    private String name;
+
+    /**
+     * 部门ID
+     */
+    @ApiModelProperty("部门ID")
+    private Long deptId;
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/attendance/dto/UpdateStudentAttendanceRecordDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.attendance.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 学生考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Data
+public class UpdateStudentAttendanceRecordDto extends AddStudentAttendanceRecordDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private Long id;
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/attendance/dto/UpdateTeacherAttendanceRecordDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.attendance.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 教师考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Data
+public class UpdateTeacherAttendanceRecordDto extends AddTeacherAttendanceRecordDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private Long id;
+}

+ 108 - 0
src/main/java/com/xjrsoft/module/attendance/entity/StudentAttendanceRecord.java

@@ -0,0 +1,108 @@
+package com.xjrsoft.module.attendance.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 学生考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Data
+@TableName("student_attendance_record")
+@ApiModel(value = "student_attendance_record", description = "学生考勤记录")
+public class StudentAttendanceRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人id
+    */
+    @ApiModelProperty("修改人id")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 学生userId(xjr_user)
+    */
+    @ApiModelProperty("学生userId(xjr_user)")
+    private Long userId;
+    /**
+    * 班主人id(xjr_user)
+    */
+    @ApiModelProperty("班主人id(xjr_user)")
+    private Long teacherId;
+    /**
+    * 班级id(class)
+    */
+    @ApiModelProperty("班级id(class)")
+    private Long classId;
+    /**
+    * 就读方式(xjr_dictionary_item[stduy_status])
+    */
+    @ApiModelProperty("就读方式(xjr_dictionary_item[stduy_status])")
+    private String stduyStatus;
+    /**
+    * 考勤状态(xjr_dictionary_detail[attendance_status])
+    */
+    @ApiModelProperty("考勤状态(xjr_dictionary_detail[attendance_status])")
+    private String attendanceStatus;
+    /**
+    * 时段(1:上午,2:下午,3:晚上)
+    */
+    @ApiModelProperty("时段(1:上午,2:下午,3:晚上)")
+    private Integer timeInterval;
+
+
+}

+ 102 - 0
src/main/java/com/xjrsoft/module/attendance/entity/TeacherAttendanceRecord.java

@@ -0,0 +1,102 @@
+package com.xjrsoft.module.attendance.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 教师考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Data
+@TableName("teacher_attendance_record")
+@ApiModel(value = "teacher_attendance_record", description = "教师考勤记录")
+public class TeacherAttendanceRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人id
+    */
+    @ApiModelProperty("修改人id")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 教师userId(xjr_user)
+    */
+    @ApiModelProperty("教师userId(xjr_user)")
+    private Long userId;
+    /**
+    * 考勤方式(1:人脸,2:车辆)
+    */
+    @ApiModelProperty("考勤方式(1:人脸,2:车辆)")
+    private Integer attendanceMode;
+    /**
+    * 考勤状态(xjr_dictionary_detail[attendance_status])
+    */
+    @ApiModelProperty("考勤状态(xjr_dictionary_detail[attendance_status])")
+    private String attendanceStatus;
+    /**
+    * 时段(1:上午,2:下午,3:晚上)
+    */
+    @ApiModelProperty("时段(1:上午,2:下午,3:晚上)")
+    private Integer timeInterval;
+    /**
+     * 车牌号
+     */
+    @ApiModelProperty("车牌号")
+    private String carNumber;
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/attendance/mapper/StudentAttendanceRecordMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.attendance.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.attendance.entity.StudentAttendanceRecord;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 学生考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Mapper
+public interface StudentAttendanceRecordMapper extends MPJBaseMapper<StudentAttendanceRecord> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/attendance/mapper/TeacherAttendanceRecordMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.attendance.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.attendance.entity.TeacherAttendanceRecord;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 教师考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Mapper
+public interface TeacherAttendanceRecordMapper extends MPJBaseMapper<TeacherAttendanceRecord> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/attendance/service/IStudentAttendanceRecordService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.attendance.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.attendance.entity.StudentAttendanceRecord;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 学生考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+
+public interface IStudentAttendanceRecordService extends MPJBaseService<StudentAttendanceRecord> {
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/attendance/service/ITeacherAttendanceRecordService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.attendance.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.attendance.entity.TeacherAttendanceRecord;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 教师考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+
+public interface ITeacherAttendanceRecordService extends MPJBaseService<TeacherAttendanceRecord> {
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/attendance/service/impl/StudentAttendanceRecordServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.attendance.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.attendance.entity.StudentAttendanceRecord;
+import com.xjrsoft.module.attendance.mapper.StudentAttendanceRecordMapper;
+import com.xjrsoft.module.attendance.service.IStudentAttendanceRecordService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 学生考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class StudentAttendanceRecordServiceImpl extends MPJBaseServiceImpl<StudentAttendanceRecordMapper, StudentAttendanceRecord> implements IStudentAttendanceRecordService {
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/attendance/service/impl/TeacherAttendanceRecordServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.attendance.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.attendance.entity.TeacherAttendanceRecord;
+import com.xjrsoft.module.attendance.mapper.TeacherAttendanceRecordMapper;
+import com.xjrsoft.module.attendance.service.ITeacherAttendanceRecordService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 教师考勤记录
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class TeacherAttendanceRecordServiceImpl extends MPJBaseServiceImpl<TeacherAttendanceRecordMapper, TeacherAttendanceRecord> implements ITeacherAttendanceRecordService {
+}

+ 89 - 0
src/main/java/com/xjrsoft/module/attendance/vo/StudentAttendanceRecordPageVo.java

@@ -0,0 +1,89 @@
+package com.xjrsoft.module.attendance.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 学生考勤记录分页列表出参
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Data
+public class StudentAttendanceRecordPageVo {
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 修改人id
+    */
+    @ApiModelProperty("修改人id")
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    private Integer enabledMark;
+    /**
+    * 学生userId(xjr_user)
+    */
+    @ApiModelProperty("学生userId(xjr_user)")
+    private Long userId;
+    /**
+    * 班主人id(xjr_user)
+    */
+    @ApiModelProperty("班主人id(xjr_user)")
+    private Long teacherId;
+    /**
+    * 班级id(class)
+    */
+    @ApiModelProperty("班级id(class)")
+    private Long classId;
+    /**
+    * 就读方式(xjr_dictionary_item[stduy_status])
+    */
+    @ApiModelProperty("就读方式(xjr_dictionary_item[stduy_status])")
+    private String stduyStatus;
+    /**
+    * 考勤状态(xjr_dictionary_detail[attendance_status])
+    */
+    @ApiModelProperty("考勤状态(xjr_dictionary_detail[attendance_status])")
+    private String attendanceStatus;
+    /**
+    * 时段(1:上午,2:下午,3:晚上)
+    */
+    @ApiModelProperty("时段(1:上午,2:下午,3:晚上)")
+    private Integer timeInterval;
+
+}

+ 59 - 0
src/main/java/com/xjrsoft/module/attendance/vo/StudentAttendanceRecordVo.java

@@ -0,0 +1,59 @@
+package com.xjrsoft.module.attendance.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 学生考勤记录表单出参
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Data
+public class StudentAttendanceRecordVo {
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private Long id;
+    /**
+    * 学生userId(xjr_user)
+    */
+    @ApiModelProperty("学生userId(xjr_user)")
+    private Long userId;
+    /**
+    * 班主人id(xjr_user)
+    */
+    @ApiModelProperty("班主人id(xjr_user)")
+    private Long teacherId;
+    /**
+    * 班级id(class)
+    */
+    @ApiModelProperty("班级id(class)")
+    private Long classId;
+    /**
+    * 就读方式(xjr_dictionary_item[stduy_status])
+    */
+    @ApiModelProperty("就读方式(xjr_dictionary_item[stduy_status])")
+    private String stduyStatus;
+    /**
+    * 考勤状态(xjr_dictionary_detail[attendance_status])
+    */
+    @ApiModelProperty("考勤状态(xjr_dictionary_detail[attendance_status])")
+    private String attendanceStatus;
+    /**
+    * 时段(1:上午,2:下午,3:晚上)
+    */
+    @ApiModelProperty("时段(1:上午,2:下午,3:晚上)")
+    private Integer timeInterval;
+
+
+
+}

+ 108 - 0
src/main/java/com/xjrsoft/module/attendance/vo/TeacherAttendanceRecordPageVo.java

@@ -0,0 +1,108 @@
+package com.xjrsoft.module.attendance.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 教师考勤记录分页列表出参
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Data
+public class TeacherAttendanceRecordPageVo {
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 修改人id
+    */
+    @ApiModelProperty("修改人id")
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    private Integer enabledMark;
+    /**
+    * 教师userId(xjr_user)
+    */
+    @ApiModelProperty("教师userId(xjr_user)")
+    private Long userId;
+    /**
+    * 考勤方式(1:人脸,2:车辆)
+    */
+    @ApiModelProperty("考勤方式(1:人脸,2:车辆)")
+    private Integer attendanceMode;
+    /**
+    * 考勤状态(xjr_dictionary_detail[attendance_status])
+    */
+    @ApiModelProperty("考勤状态(xjr_dictionary_detail[attendance_status])")
+    private String attendanceStatus;
+    /**
+    * 时段(1:上午,2:下午,3:晚上)
+    */
+    @ApiModelProperty("时段(1:上午,2:下午,3:晚上)")
+    private Integer timeInterval;
+    /**
+     * 车牌号
+     */
+    @ApiModelProperty("车牌号")
+    private String carNumber;
+    /**
+     * 姓名
+     */
+    @ApiModelProperty("姓名")
+    private String name;
+    /**
+     * 身份证号
+     */
+    @ApiModelProperty("身份证号")
+    private String identityCard;
+    /**
+     * 手机号码
+     */
+    @ApiModelProperty("手机号码")
+    private Long phone;
+    /**
+     * 性别
+     */
+    @ApiModelProperty("性别")
+    private String gender;
+    /**
+     * 考勤状态(xjr_dictionary_detail[attendance_status])
+     */
+    @ApiModelProperty("考勤状态(xjr_dictionary_detail[attendance_status])")
+    private String attendanceStatusCn;
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/attendance/vo/TeacherAttendanceRecordVo.java

@@ -0,0 +1,49 @@
+package com.xjrsoft.module.attendance.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 教师考勤记录表单出参
+* @Author dzx
+* @Date: 2024-05-15
+* @Version 1.0
+*/
+@Data
+public class TeacherAttendanceRecordVo {
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private Long id;
+    /**
+    * 教师userId(xjr_user)
+    */
+    @ApiModelProperty("教师userId(xjr_user)")
+    private Long userId;
+    /**
+    * 考勤方式(1:人脸,2:车辆)
+    */
+    @ApiModelProperty("考勤方式(1:人脸,2:车辆)")
+    private Integer attendanceMode;
+    /**
+    * 考勤状态(xjr_dictionary_detail[attendance_status])
+    */
+    @ApiModelProperty("考勤状态(xjr_dictionary_detail[attendance_status])")
+    private String attendanceStatus;
+    /**
+    * 时段(1:上午,2:下午,3:晚上)
+    */
+    @ApiModelProperty("时段(1:上午,2:下午,3:晚上)")
+    private Integer timeInterval;
+
+
+
+}

+ 23 - 14
src/main/java/com/xjrsoft/module/outint/controller/TeacherOutInRecordController.java

@@ -6,11 +6,14 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.yulichang.interfaces.MPJBaseJoin;
 import com.github.yulichang.toolkit.MPJWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.organization.entity.UserDeptRelation;
 import com.xjrsoft.module.outint.dto.AddTeacherOutInRecordDto;
 import com.xjrsoft.module.outint.dto.TeacherOutInRecordPageDto;
 import com.xjrsoft.module.outint.dto.UpdateTeacherOutInRecordDto;
@@ -22,6 +25,7 @@ import com.xjrsoft.module.outint.vo.TeacherOutInRecordVo;
 import com.xjrsoft.module.outint.vo.VisitorOutInRecordPageVo;
 import com.xjrsoft.module.personnel.entity.ReservationSchool;
 import com.xjrsoft.module.personnel.entity.ReservationSchoolPeople;
+import com.xjrsoft.module.student.entity.BaseStudentAssessmentProject;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
 import com.xjrsoft.module.system.entity.File;
 import com.xjrsoft.module.teacher.entity.XjrUser;
@@ -59,20 +63,25 @@ public class TeacherOutInRecordController {
     @ApiOperation(value="教师出入记录列表(分页)")
     @SaCheckPermission("teacheroutinrecord:detail")
     public RT<PageOutput<TeacherOutInRecordPageVo>> page(@Valid TeacherOutInRecordPageDto dto){
-        IPage<TeacherOutInRecordPageVo> page = teacherOutInRecordService.selectJoinListPage(ConventPage.getPage(dto),TeacherOutInRecordPageVo.class,
-                MPJWrappers.<TeacherOutInRecord>lambdaJoin()
-                        .orderByDesc(TeacherOutInRecord::getId)
-                        .like(StrUtil.isNotBlank(dto.getName()), XjrUser::getName,dto.getName())
-                        .ge(ObjectUtil.isNotNull(dto.getStartTime()),TeacherOutInRecord::getRecordTime,dto.getStartTime()+" 00:00:00")
-                        .le(ObjectUtil.isNotNull(dto.getStartTime()),TeacherOutInRecord::getRecordTime,dto.getStartTime()+" 23:59:59")
-                        .eq(ObjectUtil.isNotNull(dto.getStatus()), TeacherOutInRecord::getStatus, dto.getStatus())
-                        .select(TeacherOutInRecord::getId)
-                        .select(TeacherOutInRecord.class,x -> VoToColumnUtil.fieldsToColumns(TeacherOutInRecordPageVo.class).contains(x.getProperty()))
-                        .select(XjrUser::getName,XjrUser::getMobile,XjrUser::getCredentialNumber)
-                        .leftJoin(XjrUser.class,XjrUser::getId,TeacherOutInRecord::getUserId)
-                        .leftJoin(File.class,File::getFolderId, TeacherOutInRecord::getFacePhoto, ext->ext.selectAs(File::getFileUrl, TeacherOutInRecordPageVo::getFacePhotoUrl))
-                        .leftJoin(DictionaryDetail.class,DictionaryDetail::getCode, XjrUser::getGender, ext->ext.selectAs(DictionaryDetail::getName, TeacherOutInRecordPageVo::getGender))
-        );
+
+        MPJLambdaWrapper<TeacherOutInRecord> queryWrapper= MPJWrappers.<TeacherOutInRecord>lambdaJoin()
+                .orderByDesc(TeacherOutInRecord::getId)
+                .like(StrUtil.isNotBlank(dto.getName()), XjrUser::getName,dto.getName())
+                .ge(ObjectUtil.isNotNull(dto.getStartTime()),TeacherOutInRecord::getRecordTime,dto.getStartTime()+" 00:00:00")
+                .le(ObjectUtil.isNotNull(dto.getStartTime()),TeacherOutInRecord::getRecordTime,dto.getStartTime()+" 23:59:59")
+                .eq(ObjectUtil.isNotNull(dto.getStatus()), TeacherOutInRecord::getStatus, dto.getStatus())
+                .select(TeacherOutInRecord::getId)
+                .select(TeacherOutInRecord.class,x -> VoToColumnUtil.fieldsToColumns(TeacherOutInRecordPageVo.class).contains(x.getProperty()))
+                .select(XjrUser::getName,XjrUser::getMobile,XjrUser::getCredentialNumber)
+                .leftJoin(XjrUser.class,XjrUser::getId,TeacherOutInRecord::getUserId)
+                .leftJoin(File.class,File::getFolderId, TeacherOutInRecord::getFacePhoto, ext->ext.selectAs(File::getFileUrl, TeacherOutInRecordPageVo::getFacePhotoUrl))
+                .leftJoin(DictionaryDetail.class,DictionaryDetail::getCode, XjrUser::getGender, ext->ext.selectAs(DictionaryDetail::getName, TeacherOutInRecordPageVo::getGender));
+
+        if(ObjectUtil.isNotNull(dto.getDeptId())&&dto.getDeptId()!=0){
+            queryWrapper.leftJoin(UserDeptRelation.class,UserDeptRelation::getUserId,XjrUser::getId)
+                    .eq(UserDeptRelation::getDeptId,dto.getDeptId());
+        }
+        IPage<TeacherOutInRecordPageVo> page = teacherOutInRecordService.selectJoinListPage(ConventPage.getPage(dto),TeacherOutInRecordPageVo.class, queryWrapper);
         PageOutput<TeacherOutInRecordPageVo> pageOutput = ConventPage.getPageOutput(page, TeacherOutInRecordPageVo.class);
         return RT.ok(pageOutput);
     }

+ 5 - 0
src/main/java/com/xjrsoft/module/outint/dto/TeacherOutInRecordPageDto.java

@@ -42,5 +42,10 @@ public class TeacherOutInRecordPageDto extends PageInput {
      */
     @ApiModelProperty("过车方向")
     private  String status;
+    /**
+     * 部门ID
+     */
+    @ApiModelProperty("部门ID")
+    private Long deptId;
 
 }

+ 51 - 0
src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

@@ -3078,4 +3078,55 @@ public class FreeMarkerGeneratorTest {
 
         apiGeneratorService.generateCodes(params);
     }
+
+    @Test
+    public void gcTeacherAttendanceRecord() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("teacher_attendance_record");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("dzx");//作者名称
+        params.setPackageName("attendance");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+
+    @Test
+    public void gcStudentAttendanceRecord() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("student_attendance_record");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("dzx");//作者名称
+        params.setPackageName("attendance");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
 }