添加功能

This commit is contained in:
李鹏宇
2026-09-15 18:17:21 +08:00
parent 7c16ee2956
commit 990833e029
3 changed files with 14 additions and 3 deletions
@@ -867,6 +867,13 @@ class SoongWorkflowMixin(models.AbstractModel):
prev_approvers = self._get_approvers_for_link(prev_link, self)
if len(prev_approvers) == 1 and prev_approvers[0] == current_approver:
invalid_links |= prev_link
# 此节点之后的所有相同审批人节点跳过
if node_id.same_user_skip_type == 'after':
for j in range(idx + 1, len(sorted_all_links)):
after_link = sorted_all_links[j]
after_approvers = self._get_approvers_for_link(after_link, self)
if len(after_approvers) == 1 and after_approvers[0] == current_approver:
invalid_links |= after_link
allowed_link_ids = [lid for lid in trans_link_ids if lid not in invalid_links.ids]
default_trans_link_id = allowed_link_ids[0] if allowed_link_ids else trans_link_id
@@ -106,6 +106,7 @@ class SoongWorkflowNode(models.Model):
('none', '不跳过'),
('next', '跳过下一个相同人员节点'),
('prev', '跳过上一个相同人员节点'),
('after', '跳过此节点之后的所有相同人员节点'),
], string='相同人员节点处理', default='none')
is_mandatory_node = fields.Boolean(string="必经节点", default=False)
@@ -1568,8 +1568,8 @@ class YuthonVacationReports(models.Model):
processed_employees = set()
send_count = 0
for report in report_objs:
# 已确认的记录不需要再发
if report.vacation_state == 'confirmed':
# 已发送(pending)/已确认(confirmed)的记录不再重复发送,避免同一人被多个入口反复推送
if report.vacation_state in ('pending', 'confirmed'):
continue
if report.employee_id.id in processed_employees:
# 同员工已发送过通知,多余记录只改状态不重复发
@@ -1647,7 +1647,8 @@ class YuthonVacationReports(models.Model):
month = self.vacation_date.month
data = f"你{year}年{month}月的考勤确认单已经生成,请确认"
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='att_ok', user_id=we_id, title="考勤确认单", description=data, url=url, btntxt="详细信息")
# 记录发送时间,供提醒 cron 的去重闸判断,避免重复推送
self.last_reminder_date = fields.Date.today()
self.write({'vacation_state': 'pending'})
return {
'type': 'ir.actions.client',
@@ -1795,6 +1796,8 @@ class YuthonVacationReports(models.Model):
data = f"你{year}年{month}月的考勤确认单已经生成,请确认"
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='att_ok', user_id=we_id, title="考勤确认单", description=data, url=url, btntxt="详细信息")
send_count += 1
# 记录发送时间,供提醒 cron 去重闸判断,避免重复推送
rec.last_reminder_date = fields.Date.today()
rec.write({'vacation_state': 'pending'})
# 给管理员发统计消息
if send_count > 0: