添加功能
This commit is contained in:
@@ -23,6 +23,7 @@ class SoongWorkflowLog(models.Model):
|
||||
node_btn_id = fields.Many2one(comodel_name="soong.workflow.node.button", string="动作名称")
|
||||
node_btn_name = fields.Selection([('0', ' '), ('1', '退回'), ('2', '加签'), ('3', '串'), ('4', '并'), ('5', '董事长'), ('6', '承办')], store=True, string='节点功能', default='0')
|
||||
done_by = fields.Many2one(comodel_name="res.users", string="审批人")
|
||||
add_sign_by = fields.Many2one(comodel_name="res.users", string="加签发起人")
|
||||
lase_click_date = fields.Datetime(string="操作时间")
|
||||
approval_state = fields.Selection([('0', '待办'), ('1', '办理中'), ('2', '已办结'), ('3', '结束')], string='状态', default='0')
|
||||
comment = fields.Text(string="意见")
|
||||
|
||||
@@ -557,7 +557,8 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
])
|
||||
workflow_record_id.is_log2 = True
|
||||
description = "标题: {}\n".format(record_id.name) + self.env.user.name + ' ' + str(fields.Datetime.now() + timedelta(hours=8))
|
||||
workflow_record_id.employee2_ids = [(6, 0, self.circulated_employee_ids.ids)]
|
||||
workflow_record_id.employee2_ids = [(6, 0, self.circulated_employee_ids.ids)]
|
||||
|
||||
title = record_id._description
|
||||
if 'Room Booking' == title:
|
||||
title = '会议通知'
|
||||
@@ -658,6 +659,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
"node_id": self.node_btn_id.node_id.id,
|
||||
"workflow_id": self.node_btn_id.workflow_id.id,
|
||||
"done_by": employee_id.user_id.id,
|
||||
"add_sign_by": self.env.user.id,
|
||||
"node_btn_id": self.node_btn_id.id,
|
||||
"approval_state": "0",
|
||||
})
|
||||
@@ -709,52 +711,59 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
})
|
||||
log_obj = self.sudo().env["soong.workflow.log"]
|
||||
node_id = self.node_btn_id.node_id.id
|
||||
last_sign_log = log_obj.search([
|
||||
("model", "=", self.res_model),
|
||||
("res_id", "=", self.res_id),
|
||||
("name", "=", "归档"),
|
||||
], order="create_date DESC", limit=1)
|
||||
|
||||
# 没找到归档,再取原来的最后一条(非加签)
|
||||
if not last_sign_log:
|
||||
# 从当前加签 log 上读取加签发起人
|
||||
add_sign_user = current_node_log.add_sign_by
|
||||
if not add_sign_user:
|
||||
# 兼容旧数据:没有 add_sign_by 的,走原来的排序逻辑
|
||||
last_sign_log = log_obj.search([
|
||||
("model", "=", self.res_model),
|
||||
("res_id", "=", self.res_id),
|
||||
('approval_state', "=", '2'),
|
||||
("name", "!=", "加签"),
|
||||
], order="lase_click_date DESC")[0]
|
||||
("name", "=", "归档"),
|
||||
], order="create_date DESC", limit=1)
|
||||
if not last_sign_log:
|
||||
last_sign_log = log_obj.search([
|
||||
("model", "=", self.res_model),
|
||||
("res_id", "=", self.res_id),
|
||||
('approval_state', "=", '2'),
|
||||
("name", "!=", "加签"),
|
||||
], order="lase_click_date DESC")[0]
|
||||
if not last_sign_log:
|
||||
return
|
||||
add_sign_user = last_sign_log.done_by
|
||||
|
||||
# 如果没有加签日志,直接跳过
|
||||
if not last_sign_log:
|
||||
return
|
||||
# 查找发起人在该节点上的原始 log(非加签),确定返回的 name(如"归档")
|
||||
origin_log = log_obj.search([
|
||||
("model", "=", self.res_model),
|
||||
("res_id", "=", self.res_id),
|
||||
("node_id", "=", node_id),
|
||||
("done_by", "=", add_sign_user.id),
|
||||
("name", "!=", "加签"),
|
||||
("approval_state", "=", "2"),
|
||||
], order="create_date DESC", limit=1)
|
||||
log_name = origin_log.name if origin_log and origin_log.name == '归档' else False
|
||||
|
||||
# 最新加签的经办人
|
||||
last_sign_user = last_sign_log.done_by
|
||||
|
||||
# 2. 找到当前节点所有日志(排除最新加签那条)
|
||||
all_logs = log_obj.search([
|
||||
# 查找同一批次的加签 log(同一个发起人、同一个节点)
|
||||
batch_logs = log_obj.search([
|
||||
("model", "=", self.res_model),
|
||||
("res_id", "=", self.res_id),
|
||||
("node_id", "=", node_id),
|
||||
("name", "=", "加签"),
|
||||
("id", "!=", user_log.id),
|
||||
("add_sign_by", "=", add_sign_user.id),
|
||||
])
|
||||
# 其他人是否都完成了
|
||||
all_other_done = all(log.approval_state == "2" for log in all_logs)
|
||||
# 4. 如果满足 → 创建一条新日志给【最新加签的经办人】
|
||||
if all_other_done:
|
||||
# 判断是否需要设置为归档
|
||||
log_name = last_sign_log.name if last_sign_log.name == '归档' else False
|
||||
# 是否都完成了
|
||||
all_done = all(log.approval_state == "2" for log in batch_logs)
|
||||
# 如果都完成 → 创建一条新日志给加签发起人
|
||||
if all_done:
|
||||
log_vals = {
|
||||
"model": self.res_model,
|
||||
"res_id": self.res_id,
|
||||
"workflow_id": self.node_btn_id.workflow_id.id,
|
||||
"node_id": last_sign_log.node_id.id,
|
||||
"done_by": last_sign_user.id,
|
||||
"node_id": node_id,
|
||||
"done_by": add_sign_user.id,
|
||||
"approval_state": "0",
|
||||
"create_date": fields.Datetime.now(),
|
||||
}
|
||||
# 如果是归档,自动写入 name = 归档
|
||||
if log_name:
|
||||
log_vals["name"] = log_name
|
||||
log_obj.create(log_vals)
|
||||
@@ -764,7 +773,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
])
|
||||
url = f'https://oa.thtzjt.com/web#id={record_id.id}&cids=2&menu_id={record_id.id}&action={action_id.id}&model={self.res_model}&view_type=form'
|
||||
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
|
||||
user_id=last_sign_user.employee_ids.wecom_userid,
|
||||
user_id=add_sign_user.employee_ids.wecom_userid,
|
||||
title=record_id._description + '加签返回',
|
||||
description=description, url=url,
|
||||
btntxt="查看详情")
|
||||
|
||||
Reference in New Issue
Block a user