This commit is contained in:
李鹏宇
2025-01-10 14:43:29 +08:00
parent 0d436f6aca
commit 2e99ee8de0
5 changed files with 58 additions and 39 deletions
+2 -2
View File
@@ -31,9 +31,9 @@ class SoongWorkflowLog(models.Model):
done_by = fields.Many2one(comodel_name="res.users", string="审批人")
lase_click_date = fields.Datetime(string="操作时间")
approval_state = fields.Selection([
('0', '未审批'),
('0', '待审批'),
('1', '审批中'),
('2', '审批通过'),
('2', '已审批'),
], string='审批状态', default='0')
comment = fields.Char(string="意见")
+51 -34
View File
@@ -295,8 +295,7 @@ class SoongWorkflowMixin(models.AbstractModel):
"default_is_automatic": next_state.is_automatic,
"default_employee_ids": employee_ids,
"default_node_btn_id": btn_rec.id,
"default_node_link_len": '转交2' if len(
btn_rec.node_id.out_link_ids) > 1 and btn_rec.name == '转交' else '',
"default_node_link_len": '转交2' if len(btn_rec.node_id.out_link_ids) > 1 and btn_rec.name == '转交' else '',
},
}
@@ -306,38 +305,56 @@ class SoongWorkflowMixin(models.AbstractModel):
record_obj = self.env["soong.workflow.record"].search([("res_model", "=", rec._name), ("res_id", "=", rec.id)])
current_user_id = self.env.user.id
button_ids = self.workflow_id.node_ids.search([('node_name', '=', self.state), ('workflow_id', '=', self.workflow_id.id)]).button_ids
user_ids_list = []
if self.state != 'end':
if button_ids:
self_state = button_ids[0]
else:
raise UserError('请配置节点按钮')
employee_user_role_ids = self.env['hr.employee'].search(
['|', ('user_role_id', '=', self_state.users_role_id.id),
('user_role_ids', 'in', self_state.users_role_id.id)])
employee_user_role_id = self.env['hr.employee'].search(
['|', ('user_role_id', '=', self_state.users_role_id.id),
('user_role_ids', 'in', self_state.users_role_id.id), '|',
('department_id', '=', self.department_id.id),
('department_ids', 'in', self.department_id.id)])
employee_ids = employee_user_role_ids if not self_state.is_automatic else employee_user_role_id
for employee in employee_ids:
if employee.user_id:
user_ids_list.append((4, employee.user_id.id))
if not record_obj:
record_obj = self.env["soong.workflow.record"].create({
"res_model": rec._name,
"res_id": rec.id,
"workflow_id": rec.workflow_id.id,
"node_id": rec.node_id.id,
"done_by": self.env.uid,
"users_ids": [(4, current_user_id)],
})
record_obj.update({"workflow_id": rec.workflow_id.id,
"node_id": rec.node_id.id,
"done_by": self.env.uid,
"users_ids": user_ids_list,
})
# state_list = [i.node_name for i in self.workflow_id.node_ids]
# self_state = state_list.index(self.state)
# next_state = self.workflow_id.node_ids[self_state + 1].button_ids[0]
if self.state in ['申请人', 'start', '拟办']:
if not record_obj:
self.env["soong.workflow.record"].create({
"res_model": rec._name,
"res_id": rec.id,
"workflow_id": rec.workflow_id.id,
"node_id": rec.node_id.id,
"done_by": self.env.uid,
"users_ids": [(4, current_user_id)],
"self_users": self.env.user.name,
})
else:
if self.state not in ['end']:
if button_ids:
self_state = button_ids[0]
else:
raise UserError('请配置节点按钮')
employee_user_role_ids = self.env['hr.employee'].search(
['|', ('user_role_id', '=', self_state.users_role_id.id),
('user_role_ids', 'in', self_state.users_role_id.id)])
employee_user_role_id = self.env['hr.employee'].search(
['|', ('user_role_id', '=', self_state.users_role_id.id),
('user_role_ids', 'in', self_state.users_role_id.id), '|',
('department_id', '=', self.department_id.id),
('department_ids', 'in', self.department_id.id)])
employee_ids = employee_user_role_ids if not self_state.is_automatic else employee_user_role_id
user_ids_list = []
for employee in employee_ids:
if employee.user_id:
user_ids_list.append((4, employee.user_id.id))
if not record_obj:
record_obj = self.env["soong.workflow.record"].create({
"res_model": rec._name,
"res_id": rec.id,
"workflow_id": rec.workflow_id.id,
"node_id": rec.node_id.id,
"done_by": self.env.uid,
"users_ids": [(4, current_user_id)],
"self_users": self.env.user.name,
})
record_obj.update({"workflow_id": rec.workflow_id.id,
"node_id": rec.node_id.id,
"done_by": self.env.uid,
"users_ids": user_ids_list,
"self_users": ','.join([employee.name for employee in employee_ids]),
})
def unlink(self):
self.mapped("log_ids").unlink()
@@ -13,7 +13,7 @@ class SoongWorkflowRecord(models.Model):
_order = 'write_date'
def get_no_read_count(self):
return self.search_count([('approve_state', '=', 'pending'), ('reclaim_state', '=', False), ('users_ids', 'in', [self.env.user_id])])
return self.search_count([('approve_state', '=', 'pending'), ('self_users', '=', self.env.user.name)])
@api.depends("res_model", "res_id")
def compute_name(self):
@@ -27,6 +27,7 @@ class SoongWorkflowRecord(models.Model):
res_model = fields.Char(string="Res Model", required=True)
res_id = fields.Integer(string="Res ID", required=True)
users_ids = fields.Many2many('res.users', string="用户")
self_users = fields.Char(string="当前经办人")
workflow_id = fields.Many2one(comodel_name="soong.workflow", string="审批类型", ondelete="restrict")
node_id = fields.Many2one(comodel_name="soong.workflow.node", string="当前节点")
approve_state = fields.Selection([("start", "开始"), ("pending", "审批中"), ("end", "结束")], default="start", string="审批状态", compute="_compute_node_id")
@@ -24,7 +24,8 @@
<field name="workflow_id" string="审批类型"/>
<field name="node_id" string="当前节点"/>
<field name="approve_state" string="审批状态"/>
<field name="users_ids" string="当前经办人" widget="many2many_tags"/>
<field name="users_ids" string="用户" widget="many2many_tags" optional="hide"/>
<field name="self_users" string="当前经办人"/>
<field name="done_by" />
<field name="write_date"/>
<field name="reclaim_state" column_invisible="1"/>
@@ -169,7 +169,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
# "lase_click_date": fields.Datetime.now(),
}
)
record_obj.update({"approval_state": "1"})
record_obj.update({"approval_state": "0"})
# partner_ids = self.employee_ids.user_id.partner_id.ids
# self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids, 'soong_workflow.message_soong_workflow_distribute')
return self.node_btn_id.with_context(cx).run()