添加功能

This commit is contained in:
李鹏宇
2026-04-15 19:06:29 +08:00
parent f6d0fad492
commit 59cab4dac2
2 changed files with 20 additions and 6 deletions
@@ -97,12 +97,23 @@ class HrAttendanceDetail(models.Model):
@api.model
def create(self, vals):
record = super(HrAttendanceDetail, self).create(vals)
if record.employee_id.name not in ['龙春球', 'Administrator']:
if record.employee_id.name not in ['Administrator']:
resource_user_ids = record.employee_id.resource_calendar_id.resource_user_ids.ids
is_resource_user = True if record.employee_id.id in resource_user_ids else False
if record.employee_id and record.checkin_time and record.source == 'iot' and not is_resource_user:
employee_id = record.employee_id
checkin_datetime = record.checkin_time
employee_id = record.employee_id
checkin_datetime = record.checkin_time
last_record = self.search([
('employee_id', '=', employee_id.id),
('source', '=', 'iot'),
('checkin_time', '<', checkin_datetime)
], order='checkin_time desc', limit=1)
# 如果上一条记录存在,并且时间差 < 60秒 → 不发提醒
skip_notify = False
if last_record:
time_diff = checkin_datetime - last_record.checkin_time
if time_diff.total_seconds() < 60:
skip_notify = True # 小于1分钟,跳过提醒
if record.employee_id and record.checkin_time and record.source == 'iot' and not is_resource_user and not skip_notify:
current_data = record.checkin_time.date() + timedelta(hours=8)
day_start = checkin_datetime.replace(hour=0, minute=0, second=0, microsecond=0)
day_end = checkin_datetime.replace(hour=23, minute=59, second=59, microsecond=99)
@@ -121,13 +132,16 @@ class HrAttendanceDetail(models.Model):
resource_user_ids = employee_id.resource_calendar_id.resource_user_ids.ids
is_resource_user = True if employee_id.id in resource_user_ids else False
# 哺乳人员
suckling_employees = employee_id.resource_calendar_id.breastfeeding_holiday_ids.mapped('employee_id')
suckling_employees = employee_id.resource_calendar_id.breastfeeding_holiday_ids.mapped(
'employee_id')
def get_all_upper_depts(dept):
"""递归获取部门及其所有上级部门的ID列表"""
dept_ids = [dept.id]
if dept.parent_id:
dept_ids.extend(get_all_upper_depts(dept.parent_id))
return dept_ids
all_dept_ids = get_all_upper_depts(employee_id.department_id)
if not is_resource_user: