From 6404daeeeb25ce72c24844c9502ae74ee4eb0e3d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?=
<9664676+pengyuthon@user.noreply.gitee.com>
Date: Thu, 12 Feb 2026 17:54:50 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../models/soong_workflow_record.py | 103 ++++++++----------
.../views/soong_workflow_record.xml | 4 +-
2 files changed, 48 insertions(+), 59 deletions(-)
diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py
index aca9f56da..d8097a349 100644
--- a/soong_workflow/models/soong_workflow_record.py
+++ b/soong_workflow/models/soong_workflow_record.py
@@ -87,7 +87,9 @@ class SoongWorkflowRecord(models.Model):
store=False
)
- is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company',search='_search_part_of_company')
+ is_done = fields.Boolean(string="已办", default=True, compute='_compute_is_done',search='_search_is_done')
+ is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company',
+ search='_search_part_of_company')
# 办结时间(上一节点的结束时间)
node_update_time = fields.Datetime(string="办结时间")
@@ -128,61 +130,6 @@ class SoongWorkflowRecord(models.Model):
_logger.warning(f"Failed to get urgency_level from {record.res_model}: {e}")
record.urgency_level = 'normal'
- @api.depends_context('uid', 'company')
- @api.depends('company_id', 'workflow_id', 'users_ids') # 新增依赖字段
- def _compute_is_company(self):
- current_user = self.env.user
- is_system_admin = current_user.has_group('base.group_system') or current_user.has_group('base.group_admin')
- active_company_ids = self.env.companies
- special_workflow_names = ['文件处理', '文件处理(子企业)']
- for record in self:
- if record.workflow_id and record.workflow_id.name in special_workflow_names:
- if is_system_admin:
- record.is_company = True
- else:
- record.is_company = current_user in record.users_ids
- else:
- # 走原有的company_id逻辑
- record.is_company = record.company_id in active_company_ids
-
- def _search_part_of_company(self, operator, value):
- special_workflow_names = ['文件处理', '文件处理(子企业)']
- special_records = self.search([('workflow_id.name', 'in', special_workflow_names)]).ids
- normal_records = self.search([('workflow_id.name', 'not in', special_workflow_names)]).ids
-
- current_user = self.env.user
- is_system_admin = current_user.has_group('base.group_system') or current_user.has_group('base.group_admin')
- current_user_id = current_user.id
-
- domain = []
- if special_records:
- if is_system_admin:
- special_domain = [('id', 'in', special_records)]
- else:
- if value:
- if operator == "=":
- special_domain = [('id', 'in', special_records), ("users_ids", "in", [current_user_id])]
- else:
- special_domain = [('id', 'in', special_records), ("users_ids", "not in", [current_user_id])]
- else:
- if operator == "=":
- special_domain = [('id', 'in', special_records), ("users_ids", "not in", [current_user_id])]
- else:
- special_domain = [('id', 'in', special_records), ("users_ids", "in", [current_user_id])]
- domain.append(special_domain)
-
- if normal_records:
- company_ids = self.env.companies.ids
- if not value:
- operator = '!=' if operator == '=' else '='
- if operator == '=':
- normal_domain = [('id', 'in', normal_records), ('company_id', 'in', company_ids)]
- else:
- normal_domain = [('id', 'in', normal_records), ('company_id', 'not in', company_ids)]
- domain.append(normal_domain)
-
- return ['|'] + domain if domain else []
-
@api.depends('employee_ids', 'soong_state', 'reclaim_state')
def _compute_is_to_do(self):
current_uid = self.env.user.id
@@ -214,6 +161,50 @@ class SoongWorkflowRecord(models.Model):
domain = []
return domain
+ @api.depends('employee_ids', 'soong_state', 'reclaim_state')
+ def _compute_is_done(self):
+ current_uid = self.env.user.id
+ for record in self:
+ record.is_done = False
+ condition1 = record.soong_state = 'done'
+ condition2 = not record.reclaim_state
+ condition3 = False
+ if record.users_ids:
+ condition3 = current_uid in record.users_ids.ids
+ if condition1 and condition2 and condition3:
+ record.is_done = True
+
+ def _search_is_done(self, operator, value):
+ current_uid = self.env.user.id
+ base_domain = [
+ ('soong_state', '=', 'done'),
+ ('reclaim_state', '=', False),
+ ('users_ids', 'in', current_uid)
+ ]
+ if (operator == '=' and value) or (operator == '!=' and not value):
+ domain = base_domain
+ elif (operator == '=' and not value) or (operator == '!=' and value):
+ domain = ['!'] + base_domain
+ else:
+ domain = []
+ return domain
+
+ @api.depends_context('uid', 'company')
+ @api.depends('company_id')
+ def _compute_is_company(self):
+ active_company_ids = self.env.companies
+ for employee in self:
+ employee.is_company = employee.company_id in active_company_ids
+
+ def _search_part_of_company(self, operator, value):
+ company_ids = self.env.companies.ids
+ if not value:
+ operator = '!=' if operator == '=' else '='
+ if operator == '=':
+ return [('company_id', 'in', company_ids)]
+ else:
+ return [('company_id', 'not in', company_ids)]
+
@api.depends_context('uid', 'company')
@api.depends('department_id', 'employee_ids')
def _compute_part_of_department(self):
diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml
index b689689eb..55d699de8 100644
--- a/soong_workflow/views/soong_workflow_record.xml
+++ b/soong_workflow/views/soong_workflow_record.xml
@@ -449,9 +449,7 @@
{'header_search_default_approve_state': 1, 'header_search_default_to_do':1,
'check_employee': 1}
- [('users_ids', 'in', uid), ('reclaim_state', '=', False), ('soong_state', 'in',
- ['done', 'active']), ('is_company', '=', True)]
-
+ [('is_done', '=', True)]