From 1fb4735cf75f6b98b8d81611a95ccea395cba323 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期一, 20 四月 2026 16:35:04 +0800
Subject: [PATCH] 绩效模块调整

---
 performance-server/src/main/java/com/ruoyi/performance/service/impl/StaffAttendanceTrackingRecordServiceImpl.java |   51 ++++++++++++++++++++++++++++++++-------------------
 1 files changed, 32 insertions(+), 19 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/StaffAttendanceTrackingRecordServiceImpl.java b/performance-server/src/main/java/com/ruoyi/performance/service/impl/StaffAttendanceTrackingRecordServiceImpl.java
similarity index 95%
rename from inspect-server/src/main/java/com/ruoyi/inspect/service/impl/StaffAttendanceTrackingRecordServiceImpl.java
rename to performance-server/src/main/java/com/ruoyi/performance/service/impl/StaffAttendanceTrackingRecordServiceImpl.java
index 6dbf68b..d848646 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/StaffAttendanceTrackingRecordServiceImpl.java
+++ b/performance-server/src/main/java/com/ruoyi/performance/service/impl/StaffAttendanceTrackingRecordServiceImpl.java
@@ -1,4 +1,4 @@
-package com.ruoyi.inspect.service.impl;
+package com.ruoyi.performance.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -12,27 +12,30 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.util.concurrent.AtomicDouble;
+import com.ruoyi.common.core.domain.entity.User;
 import com.ruoyi.common.enums.ClockInState;
 import com.ruoyi.common.enums.EnterOrExitType;
-import com.ruoyi.common.enums.StaffAttendanceReportType;
+import com.ruoyi.common.enums.CalendarType;
 import com.ruoyi.common.enums.SyncStatus;
 import com.ruoyi.common.utils.api.icc.IccApiUtil;
 import com.ruoyi.common.utils.api.icc.model.GetResultPageRequest;
 import com.ruoyi.common.utils.api.icc.model.GetResultPageResponse;
-import com.ruoyi.inspect.dto.StaffAttendanceDTO;
-import com.ruoyi.inspect.excel.StaffAttendanceAnnotationTextExcelData;
-import com.ruoyi.inspect.excel.StaffAttendanceExcelData;
-import com.ruoyi.inspect.excel.handler.CommentWriteHandler;
-import com.ruoyi.inspect.mapper.StaffAttendanceTrackingRecordMapper;
-import com.ruoyi.inspect.pojo.StaffAttendanceTrackingRecord;
-import com.ruoyi.inspect.service.StaffAttendanceTrackingRecordService;
-import com.ruoyi.inspect.util.HourDiffCalculator;
-import com.ruoyi.inspect.util.TimeDiffCalculator;
-import com.ruoyi.inspect.vo.StaffAttendanceVO;
+
+import com.ruoyi.performance.dto.StaffAttendanceDTO;
+import com.ruoyi.performance.excel.StaffAttendanceAnnotationTextExcelData;
+import com.ruoyi.performance.excel.StaffAttendanceExcelData;
+import com.ruoyi.performance.excel.handler.attendance.CommentWriteHandler;
+import com.ruoyi.performance.mapper.StaffAttendanceTrackingRecordMapper;
+import com.ruoyi.performance.pojo.StaffAttendanceTrackingRecord;
+import com.ruoyi.performance.service.StaffAttendanceTrackingRecordService;
 import com.ruoyi.performance.dto.PerformanceShiftMapDto;
 import com.ruoyi.performance.mapper.PerformanceShiftMapper;
 import com.ruoyi.performance.mapper.ShiftTimeMapper;
 import com.ruoyi.performance.pojo.ShiftTime;
+import com.ruoyi.performance.utils.HourDiffCalculator;
+import com.ruoyi.performance.utils.TimeDiffCalculator;
+import com.ruoyi.performance.vo.StaffAttendanceVO;
+import com.ruoyi.system.mapper.UserMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -77,6 +80,9 @@
     private PerformanceShiftMapper performanceShiftMapper;
 
     @Autowired
+    private UserMapper userMapper;
+
+    @Autowired
     private ShiftTimeMapper shiftTimeMapper;
 
     private DateTimeFormatter yyyMMdd = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@@ -102,6 +108,7 @@
     private static final String marriageLeaveKeyword = "濠�";//濠氬亣鐝鍏抽敭瀛�
     private static final String bereavementLeaveKeyword = "涓�";//涓у亣鐝鍏抽敭瀛�
     private static final String sickLeaveKeyword = "鐥�";//鐥呭亣鐝鍏抽敭瀛�
+    private static final String maternityLeaveKeyword = "浜�";//浜у亣鐝鍏抽敭瀛�
 
     /**
      * 鍚屾鐨勯棬绂佽澶囧垪琛�
@@ -175,7 +182,8 @@
      * @param staffAttendanceDTO 鑰冨嫟鏌ヨ鏉′欢
      * @return
      */
-    public List<StaffAttendanceVO> getAttendanceRecord(List<PerformanceShiftMapDto> performanceShifts,StaffAttendanceDTO staffAttendanceDTO) {
+    @Override
+    public List<StaffAttendanceVO> getAttendanceRecord(List<PerformanceShiftMapDto> performanceShifts, StaffAttendanceDTO staffAttendanceDTO) {
         // 鏌ヨ鎵撳崱璁板綍
         Wrapper<StaffAttendanceTrackingRecord> queryWrapper = Wrappers.<StaffAttendanceTrackingRecord>lambdaQuery()
                 .eq(StaffAttendanceTrackingRecord::getEnableReport, Boolean.TRUE)
@@ -283,6 +291,7 @@
                 vo.setShiftId(p.getShift());
                 vo.setPersonCode(p.getPersonCode());
                 vo.setPersonName(p.getUserName());
+                vo.setUserId(p.getUserId());
                 //搴斿嫟鏃堕暱
                 double plannedWorkHours = Math.abs(hourDiff);
                 vo.setDiffHour(hourDiff);
@@ -435,6 +444,7 @@
                 AtomicInteger marriageLeaveCount = new AtomicInteger(0);//濠氬亣澶╂暟
                 AtomicInteger bereavementLeaveCount = new AtomicInteger(0);//涓у亣澶╂暟
                 AtomicInteger sickLeaveCount = new AtomicInteger(0);//鐥呭亣澶╂暟
+                AtomicInteger maternityLeaveCount = new AtomicInteger(0);//浜у亣澶╂暟
                 AtomicInteger attendanceDayCount = new AtomicInteger(0);//鍑哄嫟澶╂暟
                 AtomicDouble attendanceWorkHourCount = new AtomicDouble(0D);//鍑哄嫟鎬绘椂闂�
                 for (int j = 0; j < shiftMapDtos.size(); j++) {
@@ -454,6 +464,8 @@
                         bereavementLeaveCount.getAndIncrement();
                     }else if(StringUtils.contains(shiftMapDto.getShiftName(),sickLeaveKeyword)){
                         sickLeaveCount.getAndIncrement();
+                    }else if(StringUtils.contains(shiftMapDto.getShiftName(),maternityLeaveKeyword)){
+                        maternityLeaveCount.getAndIncrement();
                     }
                     if(StringUtils.isAllBlank(shiftMapDto.getStartTime(),shiftMapDto.getEndTime())){
                         shiftList.add(shiftMapDto.getShiftName());
@@ -475,13 +487,13 @@
                         }
                     }
                     //鏈堝害缁熻鎵嶆彃鍏ユ壒娉ㄦ暟鎹�
-                    if(StringUtils.isNoneBlank(staffAttendanceDTO.getAttendanceReportType()) && StringUtils.equals(staffAttendanceDTO.getAttendanceReportType(), StaffAttendanceReportType.MONTH.name())){
+                    if(StringUtils.isNoneBlank(staffAttendanceDTO.getAttendanceReportType()) && StringUtils.equals(staffAttendanceDTO.getAttendanceReportType(), CalendarType.MONTH.name())){
                         if(StringUtils.isNotBlank(shiftMapDto.getAnnotationText())){
                             annotationTextList.add(new StaffAttendanceAnnotationTextExcelData(i,j,shiftMapDto.getAnnotationText()));
                         }
                     }
                 }
-                if(StringUtils.isNoneBlank(staffAttendanceDTO.getAttendanceReportType()) && StringUtils.equals(staffAttendanceDTO.getAttendanceReportType(), StaffAttendanceReportType.MONTH.name())){
+                if(StringUtils.isNoneBlank(staffAttendanceDTO.getAttendanceReportType()) && StringUtils.equals(staffAttendanceDTO.getAttendanceReportType(), CalendarType.MONTH.name())){
                     attendanceExcelData.setShiftList(shiftList);
                 }
                 attendanceExcelData.setAttendanceDayCount(attendanceDayCount.get());
@@ -494,6 +506,7 @@
                 attendanceExcelData.setMarriageLeaveCount(marriageLeaveCount.get());
                 attendanceExcelData.setBereavementLeaveCount(bereavementLeaveCount.get());
                 attendanceExcelData.setSickLeaveCount(sickLeaveCount.get());
+                attendanceExcelData.setMaternityLeaveCount(maternityLeaveCount.get());
                 excelData.add(attendanceExcelData);
             }
             //瀵煎嚭
@@ -507,7 +520,7 @@
             try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(resourceAsStream).registerWriteHandler(new CommentWriteHandler(excelData, annotationTextList)).relativeHeadRowIndex(4).build()) {
                 WriteSheet writeSheet = EasyExcel.writerSheet().build();
                 excelWriter.fill(excelData, writeSheet);
-                if(StringUtils.equals(staffAttendanceDTO.getAttendanceReportType(),StaffAttendanceReportType.YEAR.name())){
+                if(StringUtils.equals(staffAttendanceDTO.getAttendanceReportType(), CalendarType.YEAR.name())){
                     String startDate = staffAttendanceDTO.getStartDate().format(yyyMMStr);
                     String endDate = staffAttendanceDTO.getEndDate().format(yyyMMStr);
                     Map<String, String> dateMap = new HashMap<>();
@@ -534,7 +547,7 @@
         for (LocalDate currentDate = startDate; !currentDate.isAfter(endDate); currentDate = currentDate.plusDays(1)) {
             attendanceDateList.add(currentDate);
         }
-        if (attendanceDateList.size() > 31 && StringUtils.equals(staffAttendanceDTO.getAttendanceReportType(),StaffAttendanceReportType.MONTH.name())) {
+        if (attendanceDateList.size() > 31 && StringUtils.equals(staffAttendanceDTO.getAttendanceReportType(), CalendarType.MONTH.name())) {
             throw new IllegalArgumentException("瀵煎嚭鏃堕棿鑼冨洿涓嶈兘瓒呰繃31澶�");
         }
         return attendanceDateList;
@@ -542,7 +555,7 @@
 
     private InputStream buildAttendanceTemplate(List<LocalDate> attendanceDateList,String attendanceReportType) throws IOException {
         String templateName = "/static/staff_attendance_month_template.xlsx";
-        if(StringUtils.equals(attendanceReportType,StaffAttendanceReportType.YEAR.name())){
+        if(StringUtils.equals(attendanceReportType, CalendarType.YEAR.name())){
             templateName = "/static/staff_attendance_year_template.xlsx";
         }
         try (InputStream templateStream = this.getClass().getResourceAsStream(templateName)) {
@@ -550,7 +563,7 @@
             try (Workbook workbook = WorkbookFactory.create(templateStream);
                  ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
                 Sheet sheet = workbook.getSheetAt(0);
-                if(StringUtils.equals(attendanceReportType,StaffAttendanceReportType.MONTH.name())){
+                if(StringUtils.equals(attendanceReportType, CalendarType.MONTH.name())){
                     fillAttendanceHeader(sheet, attendanceDateList);
                 }
                 workbook.write(outputStream);

--
Gitblit v1.9.3