!3854 添加功能

Merge pull request !3854 from 李鹏宇/dev_zhou
This commit is contained in:
李鹏宇
2025-07-15 03:11:21 +00:00
committed by Gitee
4 changed files with 61 additions and 53 deletions
+50 -49
View File
@@ -49,56 +49,57 @@ class SoongWorkflowEntrust(models.Model):
# 如果是全部流程
if self.is_enable:
all_work_list = []
if self.env['ir.model'].search([('id', '=', self.model_id.id)]).name == '全部流程':
all_work_ids = self.env['soong.workflow'].search([('is_enable', '=', True)])
else:
all_work_ids = self.env['soong.workflow'].search([('is_enable', '=', True), ('model_id', '=', self.model_id.id)])
# 便利出所有的记录集,查出与本人相关的
for work_id in all_work_ids:
state_dict = {}
for state in work_id.node_ids:
node_data_list = []
for node in state.button_ids:
if node.name == '转交':
if node.btn_hide:
if node.review_type == 'user_role':
node_data = {'users_role_id': node.users_role_id.id}
elif node.review_type == 'individual':
node_data = {'reviewer_id': node.reviewer_id.id, }
for model_id in self.model_ids:
if self.env['ir.model'].search([('id', '=', model_id.id)]).name == '全部流程':
all_work_ids = self.env['soong.workflow'].search([('is_enable', '=', True)])
else:
all_work_ids = self.env['soong.workflow'].search([('is_enable', '=', True), ('model_id', '=', model_id.id)])
# 便利出所有的记录集,查出与本人相关的
for work_id in all_work_ids:
state_dict = {}
for state in work_id.node_ids:
node_data_list = []
for node in state.button_ids:
if node.name == '转交':
if node.btn_hide:
if node.review_type == 'user_role':
node_data = {'users_role_id': node.users_role_id.id}
elif node.review_type == 'individual':
node_data = {'reviewer_id': node.reviewer_id.id, }
else:
node_data = []
node_data_list.append(node_data)
state_dict[state.name + '-' + str(work_id.id)] = node_data_list
all_work_list.append(state_dict)
# 查找委托人当前关联的流程
reviewer_id = self.env['res.users'].search([('id', '=', self.entrust_user_id.id)])
users_role_id = reviewer_id.employee_id.user_role_id.id
for work in all_work_list:
# 判断角色是否在里面
users_role = [key for key, items in work.items() if
any(item.get('users_role_id') == users_role_id for item in items)]
for role in users_role:
workflow = int(role.split('-')[-1])
work_code = role.split('-')[0]
workflow_id = self.env['soong.workflow'].search([('id', '=', workflow)])
for flow in workflow_id.node_ids:
if flow.name == work_code and flow.button_ids[-1].name != '转交':
flow.write({
'button_ids': [(0, 0, {
"name": _("转交"),
"workflow_id": workflow_id.id,
"sequence": 999,
"review_type": "individual",
"btn_hide": True,
"action_type": 'code',
"reviewer_id": self.entrust_user_id2.id,
"has_comment": True,
})]
})
if self.workflow_data:
self.workflow_data = self.workflow_data + work_code + '-' + str(workflow_id.id) + ','
else:
node_data = []
node_data_list.append(node_data)
state_dict[state.name + '-' + str(work_id.id)] = node_data_list
all_work_list.append(state_dict)
# 查找委托人当前关联的流程
reviewer_id = self.env['res.users'].search([('id', '=', self.entrust_user_id.id)])
users_role_id = reviewer_id.employee_id.user_role_id.id
for work in all_work_list:
# 判断角色是否在里面
users_role = [key for key, items in work.items() if
any(item.get('users_role_id') == users_role_id for item in items)]
for role in users_role:
workflow = int(role.split('-')[-1])
work_code = role.split('-')[0]
workflow_id = self.env['soong.workflow'].search([('id', '=', workflow)])
for flow in workflow_id.node_ids:
if flow.name == work_code and flow.button_ids[-1].name != '转交':
flow.write({
'button_ids': [(0, 0, {
"name": _("转交"),
"workflow_id": workflow_id.id,
"sequence": 999,
"review_type": "individual",
"btn_hide": True,
"action_type": 'code',
"reviewer_id": self.entrust_user_id2.id,
"has_comment": True,
})]
})
if self.workflow_data:
self.workflow_data = self.workflow_data + work_code + '-' + str(workflow_id.id) + ','
else:
self.workflow_data = work_code + '-' + str(workflow_id.id) + ','
self.workflow_data = work_code + '-' + str(workflow_id.id) + ','
else:
for de in self:
work_ids_list = de.workflow_data.split(',')[0:-1]
@@ -38,6 +38,7 @@ class ResGroups(models.Model):
for employee in self.employee_ids:
if employee.user_id:
all_user_ids.add(employee.user_id.id)
# 2. 添加选中部门及其子部门的所有员工对应的用户
def get_department_employees(department_id, is_initial_call=False):
"""
@@ -54,7 +55,7 @@ class ResGroups(models.Model):
else:
dept_id = department_id.id
else:
return valid_user_ids # 无效输入,返回空集
return valid_user_ids
# 查询当前部门的员工
employee_ids = self.env['hr.employee'].search([('department_id', '=', dept_id)])
valid_user_ids.update([user.user_id.id for user in employee_ids if user.user_id])
@@ -63,7 +64,7 @@ class ResGroups(models.Model):
for child in child_ids:
valid_user_ids.update(get_department_employees(child, is_initial_call=False))
return valid_user_ids
all_user_ids = set()
for department_id in self.department_ids:
all_user_ids.update(get_department_employees(department_id, is_initial_call=True))
@@ -14,7 +14,13 @@
<field name="padding">3</field>
<field name="company_id" eval="False"/>
</record>
<record id="contract_review_approval_code" model="ir.sequence">
<field name="name">合同审查表-编号</field>
<field name="code">contract_review_approval_code</field>
<field name="prefix">CH%(y)s%(month)s%(day)s</field>
<field name="padding">3</field>
<field name="company_id" eval="False"/>
</record>
<record id="yuthon_enrollment_approval_code" model="ir.sequence">
<field name="name">参保方案申请表-编号</field>
<field name="code">yuthon_enrollment_approval_code</field>
@@ -7,7 +7,7 @@ class ContractReviewApproval(models.Model):
_inherit = ['soong.workflow.mixin', 'mail.thread.main.attachment', 'mail.activity.mixin']
code = fields.Char(string="编号",
default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_appointment_approval_code'))
default=lambda self: self.env['ir.sequence'].next_by_code('contract_review_approval_code'))
name = fields.Char(string='合同名称')
user_id = fields.Many2one('res.users', string='合同经办人')
is_issues = fields.Boolean(string='是否上会')