From fc61c0a691600205ef6e7d7b1182afa825b1d550 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期一, 26 十月 2026 14:24:10 +0800
Subject: [PATCH] feat(hrm): 新增我的考勤状态接口

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceRecordServiceImpl.java |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceRecordServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceRecordServiceImpl.java
index 60ba60d..1c84a33 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceRecordServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceRecordServiceImpl.java
@@ -2,6 +2,7 @@
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmAttendanceMyStatusRespVO;
 import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmAttendanceRecordPageReqVO;
 import cn.iocoder.yudao.module.hrm.dal.dataobject.attendance.HrmAttendanceRecordDO;
 import cn.iocoder.yudao.module.hrm.dal.dataobject.attendance.HrmAttendanceRuleDO;
@@ -258,6 +259,52 @@
     }
 
     @Override
+    public HrmAttendanceMyStatusRespVO getMyStatus(Long userId) {
+        // 1. 鍛樺伐涓嶅瓨鍦ㄦ椂杩斿洖 null锛岀敱鍓嶇鎻愮ず鏈叧鑱斿憳宸ワ紝閬垮厤鎵撳崱椤靛姞杞界洿鎺ユ姤閿�
+        HrmEmployeeDO employee = employeeService.getEmployee(userId);
+        if (employee == null) {
+            return null;
+        }
+        LocalDate today = LocalDate.now();
+        // 2. 鏌ヨ浠婃棩鑰冨嫟璁板綍涓庤�冨嫟瑙勫垯
+        HrmAttendanceRecordDO record = attendanceRecordMapper.selectByUserIdAndDate(userId, today);
+        HrmAttendanceRuleDO rule = attendanceRuleService.getAttendanceRuleByDeptId(employee.getDeptId());
+        boolean workDay = attendanceHolidayService.isWorkDay(today);
+        boolean clockInDone = record != null && record.getClockInTime() != null;
+        boolean clockOutDone = record != null && record.getClockOutTime() != null;
+
+        // 3. 缁勮浠婃棩鎵撳崱鐘舵��
+        HrmAttendanceMyStatusRespVO respVO = new HrmAttendanceMyStatusRespVO();
+        respVO.setDate(today);
+        respVO.setWorkDay(workDay);
+        respVO.setEmployeeId(employee.getId());
+        respVO.setUserName(employee.getName());
+        respVO.setDeptId(employee.getDeptId());
+        if (rule != null) {
+            respVO.setRuleName(rule.getName());
+            respVO.setWorkStartTime(rule.getWorkStartTime());
+            respVO.setWorkEndTime(rule.getWorkEndTime());
+        }
+        if (record != null) {
+            respVO.setRecordId(record.getId());
+            respVO.setClockInTime(record.getClockInTime());
+            respVO.setClockOutTime(record.getClockOutTime());
+            respVO.setClockInType(record.getClockInType());
+            respVO.setClockOutType(record.getClockOutType());
+            respVO.setWorkHours(record.getWorkHours());
+            respVO.setOvertimeHours(record.getOvertimeHours());
+            respVO.setLocation(record.getLocation());
+            respVO.setDataSource(record.getDataSource());
+        }
+        respVO.setClockInDone(clockInDone);
+        respVO.setClockOutDone(clockOutDone);
+        // 闈炲伐浣滄棩涓嶅彲鎵撳崱锛屼笌鎵撳崱鎺ュ彛鐨勬牎楠屼繚鎸佷竴鑷�
+        respVO.setCanClockIn(workDay && !clockInDone);
+        respVO.setCanClockOut(workDay && !clockOutDone);
+        return respVO;
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public void supplementClockIn(HrmAttendanceExceptionDO exception) {
         // 浠呭鐞嗚ˉ鍗$被鍨�

--
Gitblit v1.9.3