src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java
@@ -3,12 +3,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.staff.dto.PersonalAttendanceRecordsDto; import com.ruoyi.staff.pojo.HolidayApplication; import com.ruoyi.staff.pojo.PersonalAttendanceRecords; import com.ruoyi.staff.service.HolidayApplicationService; import com.ruoyi.staff.service.PersonalAttendanceRecordsService; import org.springframework.beans.factory.annotation.Autowired; import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; /** * <p> @@ -20,8 +21,9 @@ */ @RestController @RequestMapping("/personalAttendanceRecords") @Api(tags = "打卡签到") public class PersonalAttendanceRecordsController { @Autowired @Resource private PersonalAttendanceRecordsService personalAttendanceRecordsService; // 新增 @@ -36,8 +38,16 @@ return AjaxResult.success(personalAttendanceRecordsService.listPage(page, personalAttendanceRecordsDto)); } // 今日考勤数据 @GetMapping("/today") public AjaxResult todayInfo(PersonalAttendanceRecordsDto personalAttendanceRecordsDto){ return AjaxResult.success(personalAttendanceRecordsService.todayInfo(personalAttendanceRecordsDto)); } // 导出 @PostMapping("/export") public void export(HttpServletResponse response, PersonalAttendanceRecordsDto personalAttendanceRecordsDto) { personalAttendanceRecordsService.export(response, personalAttendanceRecordsDto); } } src/main/java/com/ruoyi/staff/dto/PersonalAttendanceRecordsDto.java
@@ -6,8 +6,14 @@ @Data public class PersonalAttendanceRecordsDto extends PersonalAttendanceRecords { @Excel(name = "姓名", sort = 3) private String staffName; @Excel(name = "工号", sort = 4) private String staffNo; @Excel(name = "部门", sort = 2) private String deptName; private Long deptId; } src/main/java/com/ruoyi/staff/pojo/PersonalAttendanceRecords.java
@@ -11,6 +11,7 @@ import java.time.LocalDateTime; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -41,25 +42,32 @@ @ApiModelProperty("日期") @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @Excel(name = "日期", sort = 1, dateFormat = "yyyy-MM-dd") private LocalDate date; @ApiModelProperty("工作开始时间") @JsonFormat(pattern = "HH:mm") @DateTimeFormat(pattern = "HH:mm") @Excel(name = "上班时间", sort = 5, dateFormat = "HH:mm") private LocalDateTime workStartAt; @ApiModelProperty("工作结束时间") @JsonFormat(pattern = "HH:mm") @DateTimeFormat(pattern = "HH:mm") @Excel(name = "下班时间", sort = 6, dateFormat = "HH:mm") private LocalDateTime workEndAt; @ApiModelProperty("工作时长") @Excel(name = "工时(小时)", sort = 7) private BigDecimal workHours; @ApiModelProperty("状态 0正常 1迟到 2早退") @Excel(name = "状态", sort = 8,readConverterExp = "0=正常,1=迟到,2=早退") private Byte status; @ApiModelProperty("备注") @Excel(name = "备注", sort = 9) private String remark; @ApiModelProperty("租户id") src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java
@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.staff.pojo.StaffOnJob; import javax.servlet.http.HttpServletResponse; /** * <p> * 服务类 @@ -22,4 +24,6 @@ int add(PersonalAttendanceRecords personalAttendanceRecords); PersonalAttendanceRecordsDto todayInfo(PersonalAttendanceRecordsDto personalAttendanceRecordsDto); void export(HttpServletResponse response, PersonalAttendanceRecordsDto personalAttendanceRecordsDto); } src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
@@ -3,12 +3,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.mapper.SysDeptMapper; import com.ruoyi.project.system.service.ISysDictDataService; import com.ruoyi.staff.dto.PersonalAttendanceRecordsDto; import com.ruoyi.staff.dto.StaffOnJobDto; import com.ruoyi.staff.mapper.StaffOnJobMapper; import com.ruoyi.staff.pojo.PersonalAttendanceRecords; import com.ruoyi.staff.mapper.PersonalAttendanceRecordsMapper; @@ -20,11 +23,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; /** * <p> @@ -154,6 +159,17 @@ @Override public IPage<PersonalAttendanceRecordsDto> listPage(Page page, PersonalAttendanceRecordsDto personalAttendanceRecordsDto) { boolean admin = SecurityUtils.isAdmin(SecurityUtils.getUserId()); if (!admin) { QueryWrapper<StaffOnJob> staffQueryWrapper = new QueryWrapper<>(); staffQueryWrapper.eq("staff_no", SecurityUtils.getUsername()); StaffOnJob staffOnJob = staffOnJobMapper.selectOne(staffQueryWrapper); if (staffOnJob == null) { return new Page<>(page.getCurrent(), page.getSize(), 0); } personalAttendanceRecordsDto.setStaffOnJobId(staffOnJob.getId()); } return personalAttendanceRecordsMapper.listPage(page,personalAttendanceRecordsDto); } @@ -194,4 +210,21 @@ return resultDto; } @Override public void export(HttpServletResponse response, PersonalAttendanceRecordsDto personalAttendanceRecordsDto) { boolean admin = SecurityUtils.isAdmin(SecurityUtils.getUserId()); if (!admin) { QueryWrapper<StaffOnJob> staffQueryWrapper = new QueryWrapper<>(); staffQueryWrapper.eq("staff_no", SecurityUtils.getUsername()); StaffOnJob staffOnJob = staffOnJobMapper.selectOne(staffQueryWrapper); if (staffOnJob == null) { throw new ServiceException("没有员工信息,无法导出考勤记录"); } personalAttendanceRecordsDto.setStaffOnJobId(staffOnJob.getId()); } List<PersonalAttendanceRecordsDto> personalAttendanceRecords = personalAttendanceRecordsMapper.listPage(new Page<>(1, Integer.MAX_VALUE), personalAttendanceRecordsDto).getRecords(); ExcelUtil<PersonalAttendanceRecordsDto> util = new ExcelUtil<PersonalAttendanceRecordsDto>(PersonalAttendanceRecordsDto.class); util.exportExcel(response, personalAttendanceRecords, "考勤记录导出"); } } src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -180,7 +180,7 @@ public void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob) { List<StaffOnJobDto> staffOnJobs = staffOnJobMapper.staffOnJobList(staffOnJob); ExcelUtil<StaffOnJobDto> util = new ExcelUtil<StaffOnJobDto>(StaffOnJobDto.class); util.exportExcel(response, staffOnJobs, "在职员工台账导出"); util.exportExcel(response, staffOnJobs, "员工台账导出"); } @Override src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml
@@ -30,10 +30,11 @@ sys_dept sd ON sd.dept_id = soj.sys_dept_id where 1=1 <if test="params.deptId != null and params.deptId > 0"> AND sys_dept.dept_id = #{params.deptId} AND sd.dept_id = #{params.deptId} </if> <if test="params.date != null"> AND personal_attendance_records.date = DATE_FORMAT(#{params.date},'%Y-%m-%d') and personal_attendance_records.date >= #{params.date} and personal_attendance_records.date < DATE_ADD(DATE(#{params.date}), INTERVAL 1 DAY) </if> </select> </mapper>