From a12abb1d2d96ad93e4db9305966163841c542172 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期二, 10 二月 2026 11:20:34 +0800
Subject: [PATCH] 导出考勤记录
---
src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java | 4 ++
src/main/java/com/ruoyi/staff/pojo/PersonalAttendanceRecords.java | 8 ++++
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java | 2
src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java | 33 ++++++++++++++++
src/main/java/com/ruoyi/staff/dto/PersonalAttendanceRecordsDto.java | 6 +++
src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java | 18 +++++++--
src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml | 5 +-
7 files changed, 69 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java b/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java
index 1bf6b06..67a0c12 100644
--- a/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java
+++ b/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);
+ }
+
}
diff --git a/src/main/java/com/ruoyi/staff/dto/PersonalAttendanceRecordsDto.java b/src/main/java/com/ruoyi/staff/dto/PersonalAttendanceRecordsDto.java
index 47f81e1..4232ad5 100644
--- a/src/main/java/com/ruoyi/staff/dto/PersonalAttendanceRecordsDto.java
+++ b/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;
}
diff --git a/src/main/java/com/ruoyi/staff/pojo/PersonalAttendanceRecords.java b/src/main/java/com/ruoyi/staff/pojo/PersonalAttendanceRecords.java
index 7026364..b0dfb5b 100644
--- a/src/main/java/com/ruoyi/staff/pojo/PersonalAttendanceRecords.java
+++ b/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姝e父 1杩熷埌 2鏃╅��")
+ @Excel(name = "鐘舵��", sort = 8,readConverterExp = "0=姝e父,1=杩熷埌,2=鏃╅��")
private Byte status;
@ApiModelProperty("澶囨敞")
+ @Excel(name = "澶囨敞", sort = 9)
private String remark;
@ApiModelProperty("绉熸埛id")
diff --git a/src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java b/src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java
index 4260e9e..3a68b6e 100644
--- a/src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java
+++ b/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);
}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
index 241c202..5e0b5df 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
+++ b/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, "鑰冨嫟璁板綍瀵煎嚭");
+ }
}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
index d7abe9b..d421345 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/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
diff --git a/src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml b/src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml
index 146830b..355841f 100644
--- a/src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml
+++ b/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>
--
Gitblit v1.9.3