Prechádzať zdrojové kódy

AttendanceRecord 对象添加打卡距离(distance)字段
/teacher/attendancePersonnel/selectPersonPage 考勤-选人人员列表(分页)

phoenix 2 rokov pred
rodič
commit
1e919c91e7
22 zmenil súbory, kde vykonal 909 pridanie a 20 odobranie
  1. 16 10
      src/main/java/com/xjrsoft/module/teacher/controller/AttendancePersonnelController.java
  2. 116 0
      src/main/java/com/xjrsoft/module/teacher/controller/WfHeadTeacherLeaveController.java
  3. 73 0
      src/main/java/com/xjrsoft/module/teacher/dto/AddWfHeadTeacherLeaveDto.java
  4. 27 0
      src/main/java/com/xjrsoft/module/teacher/dto/SelectPersonPageDto.java
  5. 32 0
      src/main/java/com/xjrsoft/module/teacher/dto/UpdateWfHeadTeacherLeaveDto.java
  6. 26 0
      src/main/java/com/xjrsoft/module/teacher/dto/WfHeadTeacherLeavePageDto.java
  7. 5 0
      src/main/java/com/xjrsoft/module/teacher/entity/AttendanceRecord.java
  8. 123 0
      src/main/java/com/xjrsoft/module/teacher/entity/WfHeadTeacherLeave.java
  9. 6 0
      src/main/java/com/xjrsoft/module/teacher/mapper/AttendancePersonnelMapper.java
  10. 17 0
      src/main/java/com/xjrsoft/module/teacher/mapper/WfHeadTeacherLeaveMapper.java
  11. 12 0
      src/main/java/com/xjrsoft/module/teacher/service/IAttendancePersonnelService.java
  12. 17 0
      src/main/java/com/xjrsoft/module/teacher/service/IWfHeadTeacherLeaveService.java
  13. 20 0
      src/main/java/com/xjrsoft/module/teacher/service/impl/AttendancePersonnelServiceImpl.java
  14. 6 2
      src/main/java/com/xjrsoft/module/teacher/service/impl/AttendanceRecordServiceImpl.java
  15. 25 0
      src/main/java/com/xjrsoft/module/teacher/service/impl/WfHeadTeacherLeaveServiceImpl.java
  16. 39 0
      src/main/java/com/xjrsoft/module/teacher/vo/AttendancePersonnelPageVo.java
  17. 0 8
      src/main/java/com/xjrsoft/module/teacher/vo/AttendanceRecordPageVo.java
  18. 72 0
      src/main/java/com/xjrsoft/module/teacher/vo/SelectPersonPageVo.java
  19. 139 0
      src/main/java/com/xjrsoft/module/teacher/vo/WfHeadTeacherLeavePageVo.java
  20. 74 0
      src/main/java/com/xjrsoft/module/teacher/vo/WfHeadTeacherLeaveVo.java
  21. 34 0
      src/main/resources/mapper/teacher/AttendancePersonnelMapper.xml
  22. 30 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 16 - 10
src/main/java/com/xjrsoft/module/teacher/controller/AttendancePersonnelController.java

@@ -1,26 +1,25 @@
 package com.xjrsoft.module.teacher.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.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.organization.entity.Department;
+import com.xjrsoft.module.organization.entity.Post;
+import com.xjrsoft.module.organization.entity.UserDeptRelation;
+import com.xjrsoft.module.organization.entity.UserPostRelation;
+import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.teacher.dto.AddAttendancePersonnelDto;
 import com.xjrsoft.module.teacher.dto.UpdateAttendancePersonnelDto;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.support.ExcelTypeEnum;
-import com.xjrsoft.module.teacher.entity.AttendanceRecord;
+import com.xjrsoft.module.teacher.dto.SelectPersonPageDto;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.teacher.vo.AttendanceRecordPageVo;
+import com.xjrsoft.module.teacher.vo.SelectPersonPageVo;
 import org.springframework.http.ResponseEntity;
 import java.io.ByteArrayOutputStream;
 import java.util.ArrayList;
@@ -37,7 +36,6 @@ import lombok.AllArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
 import java.util.List;
 
 /**
@@ -70,6 +68,15 @@ public class AttendancePersonnelController {
         return RT.ok(pageOutput);
     }
 
+    @GetMapping(value = "/selectPersonPage")
+    @ApiOperation(value="考勤-选人人员列表(分页)")
+    @SaCheckPermission("attendancepersonnel:detail")
+    public RT<PageOutput<SelectPersonPageVo>> selectPersonPage(@Valid SelectPersonPageDto dto){
+        IPage<SelectPersonPageVo> page = attendancePersonnelService.selectPersonPage(dto);
+        PageOutput<SelectPersonPageVo> pageOutput = ConventPage.getPageOutput(page, SelectPersonPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
     @GetMapping(value = "/info")
     @ApiOperation(value="根据id查询考勤-人员信息")
     @SaCheckPermission("attendancepersonnel:detail")
@@ -81,7 +88,6 @@ public class AttendancePersonnelController {
         return RT.ok(BeanUtil.toBean(attendancePersonnel, AttendancePersonnelVo.class));
     }
 
-
     @PostMapping
     @ApiOperation(value = "新增考勤-人员")
     @SaCheckPermission("attendancepersonnel:add")

+ 116 - 0
src/main/java/com/xjrsoft/module/teacher/controller/WfHeadTeacherLeaveController.java

@@ -0,0 +1,116 @@
+package com.xjrsoft.module.teacher.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.teacher.dto.AddWfHeadTeacherLeaveDto;
+import com.xjrsoft.module.teacher.dto.UpdateWfHeadTeacherLeaveDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
+import org.springframework.http.ResponseEntity;
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+
+import com.xjrsoft.module.teacher.dto.WfHeadTeacherLeavePageDto;
+import com.xjrsoft.module.teacher.entity.WfHeadTeacherLeave;
+import com.xjrsoft.module.teacher.service.IWfHeadTeacherLeaveService;
+import com.xjrsoft.module.teacher.vo.WfHeadTeacherLeavePageVo;
+
+import com.xjrsoft.module.teacher.vo.WfHeadTeacherLeaveVo;
+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 szs
+* @Date: 2023-12-19
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/teacher" + "/wfHeadTeacherLeave")
+@Api(value = "/teacher"  + "/wfHeadTeacherLeave",tags = "班主任事项请假代码")
+@AllArgsConstructor
+public class WfHeadTeacherLeaveController {
+
+
+    private final IWfHeadTeacherLeaveService wfHeadTeacherLeaveService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="班主任事项请假列表(分页)")
+    @SaCheckPermission("wfheadteacherleave:detail")
+    public RT<PageOutput<WfHeadTeacherLeavePageVo>> page(@Valid WfHeadTeacherLeavePageDto dto){
+
+        LambdaQueryWrapper<WfHeadTeacherLeave> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(WfHeadTeacherLeave::getId)
+                .select(WfHeadTeacherLeave.class,x -> VoToColumnUtil.fieldsToColumns(WfHeadTeacherLeavePageVo.class).contains(x.getProperty()));
+        IPage<WfHeadTeacherLeave> page = wfHeadTeacherLeaveService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<WfHeadTeacherLeavePageVo> pageOutput = ConventPage.getPageOutput(page, WfHeadTeacherLeavePageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询班主任事项请假信息")
+    @SaCheckPermission("wfheadteacherleave:detail")
+    public RT<WfHeadTeacherLeaveVo> info(@RequestParam Long id){
+        WfHeadTeacherLeave wfHeadTeacherLeave = wfHeadTeacherLeaveService.getById(id);
+        if (wfHeadTeacherLeave == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(wfHeadTeacherLeave, WfHeadTeacherLeaveVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增班主任事项请假")
+    @SaCheckPermission("wfheadteacherleave:add")
+    public RT<Boolean> add(@Valid @RequestBody AddWfHeadTeacherLeaveDto dto){
+        WfHeadTeacherLeave wfHeadTeacherLeave = BeanUtil.toBean(dto, WfHeadTeacherLeave.class);
+        boolean isSuccess = wfHeadTeacherLeaveService.save(wfHeadTeacherLeave);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改班主任事项请假")
+    @SaCheckPermission("wfheadteacherleave:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateWfHeadTeacherLeaveDto dto){
+
+        WfHeadTeacherLeave wfHeadTeacherLeave = BeanUtil.toBean(dto, WfHeadTeacherLeave.class);
+        return RT.ok(wfHeadTeacherLeaveService.updateById(wfHeadTeacherLeave));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除班主任事项请假")
+    @SaCheckPermission("wfheadteacherleave:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(wfHeadTeacherLeaveService.removeBatchByIds(ids));
+
+    }
+
+    @GetMapping("/export")
+    @ApiOperation(value = "导出")
+    public ResponseEntity<byte[]> exportData(@Valid WfHeadTeacherLeavePageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
+        List<WfHeadTeacherLeavePageVo> customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput<WfHeadTeacherLeavePageVo>) page(dto).getData()).getList();
+        ByteArrayOutputStream bot = new ByteArrayOutputStream();
+        EasyExcel.write(bot, WfHeadTeacherLeavePageVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
+
+        return RT.fileStream(bot.toByteArray(), "WfHeadTeacherLeave" + ExcelTypeEnum.XLSX.getValue());
+    }
+}

+ 73 - 0
src/main/java/com/xjrsoft/module/teacher/dto/AddWfHeadTeacherLeaveDto.java

@@ -0,0 +1,73 @@
+package com.xjrsoft.module.teacher.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 szs
+* @Date: 2023-12-19
+* @Version 1.0
+*/
+@Data
+public class AddWfHeadTeacherLeaveDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 申请人
+    */
+    @ApiModelProperty("申请人")
+    private Long applicantUserId;
+    /**
+    * 请假原因(xjr_dictionary_item[leave_reason])
+    */
+    @ApiModelProperty("请假原因(xjr_dictionary_item[leave_reason])")
+    private String leaveReason;
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+    /**
+    * 是否有替班教师(1:是 0:否)
+    */
+    @ApiModelProperty("是否有替班教师(1:是 0:否)")
+    private Integer isSubstitute;
+    /**
+    * 替换教师
+    */
+    @ApiModelProperty("替换教师")
+    private Long substituteUserId;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+    /**
+    * 状态(1:结束 0:未结束)
+    */
+    @ApiModelProperty("状态(1:结束 0:未结束)")
+    private Integer status;
+
+}

+ 27 - 0
src/main/java/com/xjrsoft/module/teacher/dto/SelectPersonPageDto.java

@@ -0,0 +1,27 @@
+package com.xjrsoft.module.teacher.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 考勤-选人人员列表(分页)查询入参
+* @Author szs
+* @Date: 2023-12-18
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SelectPersonPageDto extends PageInput {
+
+    /**
+     * 关键字
+     */
+    @ApiModelProperty("关键字")
+    private String keyword;
+
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/teacher/dto/UpdateWfHeadTeacherLeaveDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.teacher.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 szs
+* @Date: 2023-12-19
+* @Version 1.0
+*/
+@Data
+public class UpdateWfHeadTeacherLeaveDto extends AddWfHeadTeacherLeaveDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 26 - 0
src/main/java/com/xjrsoft/module/teacher/dto/WfHeadTeacherLeavePageDto.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.teacher.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 szs
+* @Date: 2023-12-19
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class WfHeadTeacherLeavePageDto extends PageInput {
+
+
+}

+ 5 - 0
src/main/java/com/xjrsoft/module/teacher/entity/AttendanceRecord.java

@@ -113,6 +113,11 @@ public class AttendanceRecord implements Serializable {
     */
     @ApiModelProperty("纬度")
     private Double latitude;
+    /**
+     * 打卡距离(米)
+     */
+    @ApiModelProperty("打卡距离(米)")
+    private Double distance;
     /**
     * 状态(1:正常 2:迟到)
     */

+ 123 - 0
src/main/java/com/xjrsoft/module/teacher/entity/WfHeadTeacherLeave.java

@@ -0,0 +1,123 @@
+package com.xjrsoft.module.teacher.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 szs
+* @Date: 2023-12-19
+* @Version 1.0
+*/
+@Data
+@TableName("wf_head_teacher_leave")
+@ApiModel(value = "wf_head_teacher_leave", description = "班主任事项请假")
+public class WfHeadTeacherLeave 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;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @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;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 申请人
+    */
+    @ApiModelProperty("申请人")
+    private Long applicantUserId;
+    /**
+    * 请假原因(xjr_dictionary_item[leave_reason])
+    */
+    @ApiModelProperty("请假原因(xjr_dictionary_item[leave_reason])")
+    private String leaveReason;
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+    /**
+    * 是否有替班教师(1:是 0:否)
+    */
+    @ApiModelProperty("是否有替班教师(1:是 0:否)")
+    private Integer isSubstitute;
+    /**
+    * 替换教师
+    */
+    @ApiModelProperty("替换教师")
+    private Long substituteUserId;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+    /**
+    * 状态(1:结束 0:未结束)
+    */
+    @ApiModelProperty("状态(1:结束 0:未结束)")
+    private Integer status;
+
+
+}

+ 6 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/AttendancePersonnelMapper.java

@@ -1,8 +1,12 @@
 package com.xjrsoft.module.teacher.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.student.dto.ClassHonorsPageDto;
+import com.xjrsoft.module.teacher.dto.SelectPersonPageDto;
 import com.xjrsoft.module.teacher.entity.AttendancePersonnel;
+import com.xjrsoft.module.teacher.vo.SelectPersonPageVo;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -14,4 +18,6 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface AttendancePersonnelMapper extends MPJBaseMapper<AttendancePersonnel> {
 
+    IPage<SelectPersonPageVo> selectPersonPage(IPage<SelectPersonPageDto> page, SelectPersonPageDto dto);
+
 }

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/WfHeadTeacherLeaveMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.teacher.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.teacher.entity.WfHeadTeacherLeave;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 班主任事项请假
+* @Author szs
+* @Date: 2023-12-19
+* @Version 1.0
+*/
+@Mapper
+public interface WfHeadTeacherLeaveMapper extends MPJBaseMapper<WfHeadTeacherLeave> {
+
+}

+ 12 - 0
src/main/java/com/xjrsoft/module/teacher/service/IAttendancePersonnelService.java

@@ -1,9 +1,14 @@
 package com.xjrsoft.module.teacher.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.teacher.dto.SelectPersonPageDto;
 import com.xjrsoft.module.teacher.entity.AttendancePersonnel;
+import com.xjrsoft.module.teacher.vo.SelectPersonPageVo;
 import lombok.Data;
+
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -21,4 +26,11 @@ public interface IAttendancePersonnelService extends MPJBaseService<AttendancePe
      * @return
      */
     Boolean addBatch(List<Long> userIds);
+
+    /**
+     *
+     * @param dto
+     * @return
+     */
+    IPage<SelectPersonPageVo>  selectPersonPage(SelectPersonPageDto dto);
 }

+ 17 - 0
src/main/java/com/xjrsoft/module/teacher/service/IWfHeadTeacherLeaveService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.teacher.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.teacher.entity.WfHeadTeacherLeave;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 班主任事项请假
+* @Author szs
+* @Date: 2023-12-19
+* @Version 1.0
+*/
+
+public interface IWfHeadTeacherLeaveService extends MPJBaseService<WfHeadTeacherLeave> {
+}

+ 20 - 0
src/main/java/com/xjrsoft/module/teacher/service/impl/AttendancePersonnelServiceImpl.java

@@ -2,11 +2,22 @@ package com.xjrsoft.module.teacher.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.module.organization.entity.Department;
+import com.xjrsoft.module.organization.entity.Post;
+import com.xjrsoft.module.organization.entity.UserDeptRelation;
+import com.xjrsoft.module.organization.entity.UserPostRelation;
+import com.xjrsoft.module.teacher.dto.SelectPersonPageDto;
 import com.xjrsoft.module.teacher.entity.AttendancePersonnel;
+import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.teacher.mapper.AttendancePersonnelMapper;
+import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
 import com.xjrsoft.module.teacher.service.IAttendancePersonnelService;
+import com.xjrsoft.module.teacher.vo.SelectPersonPageVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -26,6 +37,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 @Service
 @AllArgsConstructor
 public class AttendancePersonnelServiceImpl extends MPJBaseServiceImpl<AttendancePersonnelMapper, AttendancePersonnel> implements IAttendancePersonnelService {
+
+    private final AttendancePersonnelMapper attendancePersonnelMapper;
+
     @Override
     public Boolean addBatch(List<Long> userIds) {
         List<AttendancePersonnel> addList = new ArrayList<>();
@@ -42,4 +56,10 @@ public class AttendancePersonnelServiceImpl extends MPJBaseServiceImpl<Attendanc
         }
         return this.saveBatch(addList);
     }
+
+    @Override
+    public IPage<SelectPersonPageVo> selectPersonPage(SelectPersonPageDto dto) {
+        IPage<SelectPersonPageVo> page = attendancePersonnelMapper.selectPersonPage(ConventPage.getPage(dto),dto);
+        return page;
+    }
 }

+ 6 - 2
src/main/java/com/xjrsoft/module/teacher/service/impl/AttendanceRecordServiceImpl.java

@@ -103,6 +103,7 @@ public class AttendanceRecordServiceImpl extends MPJBaseServiceImpl<AttendanceRe
             if (attendanceConfigList == null || !(attendanceConfigList.size() > 0)) {
                 throw new MyException("打卡配置出现未知错误,请联系管理员!");
             }
+
             AttendanceConfig attendanceConfigCurrent = attendanceConfigList.get(0);
             //为当前记录添加打卡配置的打卡时间
             attendanceRecord.setAttendanceTime(attendanceConfigCurrent.getAttendanceTime());
@@ -113,11 +114,14 @@ public class AttendanceRecordServiceImpl extends MPJBaseServiceImpl<AttendanceRe
 
             if(distance < attendanceConfigCurrent.getAttendanceRange()){//距离小于配置的打卡范围
                 //更改打卡状态
-                //配置的打卡时间解析
+                //打卡配置的每日打卡时间解析
                 LocalDateTime localDateTime = LocalDateTime.of(LocalDate.now(),attendanceConfigCurrent.getAttendanceTime());
                 Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
                 Date attendanceConfigTinme = Date.from(instant);
 
+                //添加打卡距离
+                attendanceRecord.setDistance(distance);
+
                 if(attendanceConfigTinme.compareTo(attendanceRecord.getCheckTime()) == 1){//当为1表示正常打卡
                     attendanceRecord.setStatus(1);
                 }else {
@@ -125,7 +129,7 @@ public class AttendanceRecordServiceImpl extends MPJBaseServiceImpl<AttendanceRe
                 }
                 this.save(attendanceRecord);
             }else{
-                throw new MyException("未在打卡范围内,进入打卡范围!");
+                throw new MyException("未在打卡范围内,进入打卡范围!");
             }
             return true;
         }

+ 25 - 0
src/main/java/com/xjrsoft/module/teacher/service/impl/WfHeadTeacherLeaveServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.teacher.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.teacher.entity.WfHeadTeacherLeave;
+import com.xjrsoft.module.teacher.mapper.WfHeadTeacherLeaveMapper;
+import com.xjrsoft.module.teacher.service.IWfHeadTeacherLeaveService;
+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 szs
+* @Date: 2023-12-19
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class WfHeadTeacherLeaveServiceImpl extends MPJBaseServiceImpl<WfHeadTeacherLeaveMapper, WfHeadTeacherLeave> implements IWfHeadTeacherLeaveService {
+}

+ 39 - 0
src/main/java/com/xjrsoft/module/teacher/vo/AttendancePersonnelPageVo.java

@@ -45,5 +45,44 @@ public class AttendancePersonnelPageVo {
     @ApiModelProperty("用户姓名")
     private String userName;
 
+    /**
+     * 用户工号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("用户工号")
+    @ApiModelProperty("用户工号")
+    private String jobNumber;
+
+    /**
+     * 性别
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("性别")
+    @ApiModelProperty("性别")
+    private String gender;
+
+    /**
+     * 联系电话
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("联系电话")
+    @ApiModelProperty("联系电话")
+    private String mobile;
+
+    /**
+     * 部门
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("部门")
+    @ApiModelProperty("部门")
+    private String deptName;
+
+    /**
+     * 岗位
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("岗位")
+    @ApiModelProperty("岗位")
+    private String postName;
 
 }

+ 0 - 8
src/main/java/com/xjrsoft/module/teacher/vo/AttendanceRecordPageVo.java

@@ -30,13 +30,6 @@ public class AttendanceRecordPageVo {
     @ExcelProperty("主键编号")
     @ApiModelProperty("主键编号")
     private String id;
-    /**
-    * 用户编号
-    */
-    @ContentStyle(dataFormat = 49)
-    @ExcelProperty("用户编号")
-    @ApiModelProperty("用户编号")
-    private Long userId;
     /**
      * 用户名
      */
@@ -58,7 +51,6 @@ public class AttendanceRecordPageVo {
     @ExcelProperty("地点")
     @ApiModelProperty("地点")
     private String address;
-
     /**
     * 状态(1:正常 2:迟到)
     */

+ 72 - 0
src/main/java/com/xjrsoft/module/teacher/vo/SelectPersonPageVo.java

@@ -0,0 +1,72 @@
+package com.xjrsoft.module.teacher.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 考勤-人员分页列表出参
+* @Author szs
+* @Date: 2023-12-18
+* @Version 1.0
+*/
+@Data
+public class SelectPersonPageVo {
+
+    /**
+     * 用户编号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("用户编号")
+    @ApiModelProperty("用户编号")
+    private Long userId;
+    /**
+     * 用户编号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("用户姓名")
+    @ApiModelProperty("用户姓名")
+    private String userName;
+
+    /**
+     * 用户工号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("用户工号")
+    @ApiModelProperty("用户工号")
+    private String jobNumber;
+
+    /**
+     * 性别
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("性别")
+    @ApiModelProperty("性别")
+    private String gender;
+
+    /**
+     * 联系电话
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("联系电话")
+    @ApiModelProperty("联系电话")
+    private String mobile;
+
+    /**
+     * 部门
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("部门")
+    @ApiModelProperty("部门")
+    private String deptName;
+
+    /**
+     * 岗位
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("岗位")
+    @ApiModelProperty("岗位")
+    private String postName;
+
+}

+ 139 - 0
src/main/java/com/xjrsoft/module/teacher/vo/WfHeadTeacherLeavePageVo.java

@@ -0,0 +1,139 @@
+package com.xjrsoft.module.teacher.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+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 szs
+* @Date: 2023-12-19
+* @Version 1.0
+*/
+@Data
+public class WfHeadTeacherLeavePageVo {
+
+    /**
+    * 主键编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("主键编号")
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("创建人")
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("创建时间")
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("修改人")
+    @ApiModelProperty("修改人")
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("修改时间")
+    @ApiModelProperty("修改时间")
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("删除标记")
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("有效标志")
+    @ApiModelProperty("有效标志")
+    private Integer enabledMark;
+    /**
+    * 序号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("序号")
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 申请人
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("申请人")
+    @ApiModelProperty("申请人")
+    private Long applicantUserId;
+    /**
+    * 请假原因(xjr_dictionary_item[leave_reason])
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("请假原因(xjr_dictionary_item[leave_reason])")
+    @ApiModelProperty("请假原因(xjr_dictionary_item[leave_reason])")
+    private String leaveReason;
+    /**
+    * 开始时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("开始时间")
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+    /**
+    * 结束时间
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("结束时间")
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+    /**
+    * 是否有替班教师(1:是 0:否)
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("是否有替班教师(1:是 0:否)")
+    @ApiModelProperty("是否有替班教师(1:是 0:否)")
+    private Integer isSubstitute;
+    /**
+    * 替换教师
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("替换教师")
+    @ApiModelProperty("替换教师")
+    private Long substituteUserId;
+    /**
+    * 备注
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("备注")
+    @ApiModelProperty("备注")
+    private String remark;
+    /**
+    * 状态(1:结束 0:未结束)
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("状态(1:结束 0:未结束)")
+    @ApiModelProperty("状态(1:结束 0:未结束)")
+    private Integer status;
+
+}

+ 74 - 0
src/main/java/com/xjrsoft/module/teacher/vo/WfHeadTeacherLeaveVo.java

@@ -0,0 +1,74 @@
+package com.xjrsoft.module.teacher.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 szs
+* @Date: 2023-12-19
+* @Version 1.0
+*/
+@Data
+public class WfHeadTeacherLeaveVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 申请人
+    */
+    @ApiModelProperty("申请人")
+    private Long applicantUserId;
+    /**
+    * 请假原因(xjr_dictionary_item[leave_reason])
+    */
+    @ApiModelProperty("请假原因(xjr_dictionary_item[leave_reason])")
+    private String leaveReason;
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+    /**
+    * 是否有替班教师(1:是 0:否)
+    */
+    @ApiModelProperty("是否有替班教师(1:是 0:否)")
+    private Integer isSubstitute;
+    /**
+    * 替换教师
+    */
+    @ApiModelProperty("替换教师")
+    private Long substituteUserId;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+    /**
+    * 状态(1:结束 0:未结束)
+    */
+    @ApiModelProperty("状态(1:结束 0:未结束)")
+    private Integer status;
+
+
+
+}

+ 34 - 0
src/main/resources/mapper/teacher/AttendancePersonnelMapper.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.teacher.mapper.AttendancePersonnelMapper">
+    <select id="selectPersonPage" parameterType="com.xjrsoft.module.teacher.dto.SelectPersonPageDto" resultType="com.xjrsoft.module.teacher.vo.SelectPersonPageVo">
+        select
+            t.id as userId,
+            t.name as userName,
+            REPLACE(REPLACE(t.gender,1,'男'),2,'女') AS gender,
+            t.mobile as mobile,
+            t.user_name as jobNumber,
+            t3.name as deptName,
+            t4.name as postName
+        from xjr_user t
+                 left join xjr_user_role_relation t5 on t5.user_id = t.id
+                 left join xjr_user_post_relation t1 on t1.user_id = t.id
+                 left join xjr_user_dept_relation t2 on t2.user_id = t.id
+                 left join xjr_department t3 on t3.id = t2.dept_id
+                 left join xjr_post t4 on t4.id = t1.post_id
+                 left join attendance_personnel t6 on t6.id = t.id
+        where t5.role_id = 2 and t.id not in(select user_id from attendance_personnel) and t.delete_mark = 0 and t.enabled_mark = 1
+        <if test="dto.keyword != null and dto.keyword != ''">
+            and (
+            t.name LIKE CONCAT('%',#{dto.keyword},'%')
+            OR t.gender LIKE CONCAT('%',REPLACE(REPLACE(#{dto.keyword},'男',1),'女',2),'%')
+            OR t.mobile LIKE CONCAT('%',#{dto.keyword},'%')
+            OR t3.name LIKE CONCAT('%',#{dto.keyword},'%')
+            OR t4.name LIKE CONCAT('%',#{dto.keyword},'%')
+            )
+        </if>
+        order by t.id
+    </select>
+</mapper>

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

@@ -1027,6 +1027,36 @@ public class FreeMarkerGeneratorTest {
         tableConfigs.add(mainTable);
 
 
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("szs");//作者名称
+        params.setPackageName("teacher");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(true);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    /**
+     * 班主任事项请假
+     *
+     */
+    @Test
+    public void gcHeadTeacherLeave() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("wf_head_teacher_leave");//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("szs");//作者名称
         params.setPackageName("teacher");//包名