From 196ff11a9b7e514dabea8757de00259d9b7fea4d Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期日, 18 十月 2026 08:42:59 +0800
Subject: [PATCH] feat(hrm): 同步考勤打卡能力到新高电力
---
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceRuleServiceImpl.java | 25 ++++++++++++++++++-------
1 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceRuleServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceRuleServiceImpl.java
index 9ca16f8..c5c2bab 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceRuleServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceRuleServiceImpl.java
@@ -20,9 +20,11 @@
import java.math.BigDecimal;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -136,17 +138,26 @@
@Override
public HrmAttendanceRuleDO getAttendanceRuleByDeptId(Long deptId) {
- // 1. 鍏堟煡鎵鹃儴闂ㄤ笓灞炶鍒�
- List<HrmAttendanceRuleDO> deptRules = attendanceRuleMapper.selectList(new cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX<HrmAttendanceRuleDO>()
- .eq(HrmAttendanceRuleDO::getDeptId, deptId)
- .eq(HrmAttendanceRuleDO::getStatus, 0));
- if (!deptRules.isEmpty()) {
- return deptRules.get(0);
+ // 1. 浠庡憳宸ユ墍鍦ㄩ儴闂ㄥ紑濮嬮�愮骇鍚戜笂鏌ユ壘锛氶厤缃湪涓婄骇閮ㄩ棬鐨勮鍒欏鍏跺瓙閮ㄩ棬鐢熸晥
+ Set<Long> visitedDeptIds = new HashSet<>();
+ Long currentDeptId = deptId;
+ while (currentDeptId != null && currentDeptId != 0 && visitedDeptIds.add(currentDeptId)) {
+ List<HrmAttendanceRuleDO> deptRules = attendanceRuleMapper.selectEnabledListByDeptId(currentDeptId);
+ if (!deptRules.isEmpty()) {
+ // 鍚屼竴閮ㄩ棬锛堝銆屾�诲叕鍙搞�嶏級鍙兘閰嶇疆浜嗗鏉″惎鐢ㄨ鍒欙紝浠ユ渶鏂板垱寤虹殑涓哄綋鍓嶇敓鏁堣鍒�
+ return deptRules.get(0);
+ }
+ DeptRespDTO dept = deptApi.getDept(currentDeptId);
+ if (dept == null) {
+ break;
+ }
+ currentDeptId = dept.getParentId();
}
// 2. 鏌ユ壘鍏ㄥ眬瑙勫垯锛坉eptId 涓� null锛�
List<HrmAttendanceRuleDO> globalRules = attendanceRuleMapper.selectList(new cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX<HrmAttendanceRuleDO>()
.isNull(HrmAttendanceRuleDO::getDeptId)
- .eq(HrmAttendanceRuleDO::getStatus, 0));
+ .eq(HrmAttendanceRuleDO::getStatus, 0)
+ .orderByDesc(HrmAttendanceRuleDO::getId));
if (!globalRules.isEmpty()) {
return globalRules.get(0);
}
--
Gitblit v1.9.3