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/impl/PersonalAttendanceRecordsServiceImpl.java |   33 +++++++++++++++++++++++++++++++++
 1 files changed, 33 insertions(+), 0 deletions(-)

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, "鑰冨嫟璁板綍瀵煎嚭");
+    }
 }

--
Gitblit v1.9.3