!10314 添加功能

Merge pull request !10314 from 李鹏宇/dev_zhou
This commit is contained in:
李鹏宇
2026-03-27 07:11:23 +00:00
committed by Gitee
6 changed files with 40 additions and 33 deletions
-25
View File
@@ -90,31 +90,6 @@ class RoomBooking(models.Model):
employee_list = [rec.name for rec in i.room_users_ids]
i.room_users_names = ','.join(employee_list)
@api.onchange('meeting_type_id')
def _onchange_meeting_type_id(self):
if self.meeting_type_id:
host_role_id = self.meeting_type_id.host_id.id
host_employee = self.env['hr.employee'].search([
'|',
('user_role_ids', 'in', host_role_id),
('user_role_id', '=', host_role_id),
('company_id', '=', self.meeting_type_id.company_id.id)
], limit=1)
room_user_role_ids = self.meeting_type_id.room_users_ids.ids
room_employees = self.env['hr.employee'].search([
'|',
('user_role_ids', 'in', room_user_role_ids),
('user_role_id', 'in', room_user_role_ids),
('id', '!=', host_employee.id),
('company_id', '=', self.meeting_type_id.company_id.id)
])
room_user_ids = room_employees.mapped('user_id.id')
self.host = host_employee.id
self.room_users_ids = [(6, 0, room_user_ids)]
else:
self.room_users_ids = [(5, 0, 0)]
self.host = False
# @api.model_create_multi
# def create(self, vals_list):
# bookings = super(RoomBooking, self).create(vals_list)
+1
View File
@@ -13,6 +13,7 @@ class RoomMeetingType(models.Model):
room_users_ids = fields.Many2many('soong.user.role', string="出席人员", store=True)
host_user_id = fields.Many2one('res.users', string="主持人")
users_ids = fields.Many2many('res.users', string="出席人员")
attendees_ids = fields.Many2many('hr.employee', string="列席人员")
company_id = fields.Many2one('res.company', string="公司", index=True, default=lambda self: self.env.company)
@api.depends('host_id', 'room_users_ids')
+1
View File
@@ -9,6 +9,7 @@
<field name="name" class="list_room_width2"/>
<field name="host_id" class="list_room_width2"/>
<field name="room_users_ids" widget="many2many_tags"/>
<field name="attendees_ids" widget="many2many_tags"/>
<field name="host_user_id" column_invisible="1"/>
<field name="users_ids" widget="many2many_tags" column_invisible="1"/>
<field name="company_id"/>
@@ -501,13 +501,10 @@ class SoongWorkflowCommentWizard(models.TransientModel):
# 检查是否为并审模式
if self.approval_concatenation == 'bing': # 并审模式考勤异常
# 获取当前节点应该审批的所有员工
expected_employees = self.employee_ids
# 就只是一个验证,应该让他不创建就好了,不用提示跳过就行
# if record_id.log_ids2:
# log_employee_id = record_id.log_ids2.mapped('done_by').employee_id.id
# if log_employee_id in expected_employees.ids:
# raise UserError('该员工已传阅,请勿重复转交')
if record_id.log_ids2:
log_employee_ids = record_id.log_ids2.mapped('done_by.employee_id.id')
self.employee_ids = expected_employees.filtered(lambda emp: emp.id not in log_employee_ids)
# 查找下一个节点
next_node_id = record_id.workflow_id.node_ids.search([
@@ -525,7 +522,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
all_completed = len(completed_logs) == 0
next_node_log_records = self.env["soong.workflow.log"]
if all_completed:
for employee in expected_employees:
for employee in self.employee_ids:
# 检查该员工在下一节点是否已有记录
next_node_employee_log = self.sudo().env["soong.workflow.log"].search([
("model", "=", self.res_model),
@@ -14,6 +14,39 @@ class RoomBooking(models.Model):
is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company',
search='_search_part_of_company')
@api.onchange('meeting_type_id')
def _onchange_meeting_type_id(self):
# 原有逻辑:设置主持人、会议室人员
if self.meeting_type_id:
host_role_id = self.meeting_type_id.host_id.id
host_employee = self.env['hr.employee'].search([
'|',
('user_role_ids', 'in', host_role_id),
('user_role_id', '=', host_role_id),
('company_id', '=', self.meeting_type_id.company_id.id)
], limit=1)
room_user_role_ids = self.meeting_type_id.room_users_ids.ids
room_employees = self.env['hr.employee'].search([
'|',
('user_role_ids', 'in', room_user_role_ids),
('user_role_id', 'in', room_user_role_ids),
('id', '!=', host_employee.id if host_employee else False),
('company_id', '=', self.meeting_type_id.company_id.id)
])
room_user_ids = room_employees.mapped('user_id.id')
self.host = host_employee.id
self.room_users_ids = [(6, 0, room_user_ids)]
template_attendee_ids = self.meeting_type_id.attendees_ids.ids
if self.issue_meeting_line_ids and template_attendee_ids:
for line in self.issue_meeting_line_ids:
line.attendees_ids = [(6, 0, template_attendee_ids)]
else:
self.room_users_ids = [(5, 0, 0)]
self.host = False
if self.issue_meeting_line_ids:
for line in self.issue_meeting_line_ids:
line.attendees_ids = [(5, 0, 0)]
@api.constrains('name', 'issue_meeting_line_ids')
def _check_name(self):
for record in self:
+1 -1
View File
@@ -27,7 +27,7 @@
<field name="meeting_booking_id" column_invisible="1"/>
<field name="issue_library_id"/>
<field name="employee_id" options="{'no_create': True}" domain="[('id', 'in', designated_person_ids)]"/>
<field name="attendees_ids" widget="many2many_tags" domain="[('id', 'in', designated_person_ids)]"/>
<field name="attendees_ids" widget="many2many_tags"/>
<field name="users_role_group_ids" widget="many2many_tags" />
<field name="designated_person_ids" widget="many2many_tags" column_invisible="1"/>
<field name="is_sanda"/>