Merge branch 'dev' of https://gitee.com/jinan-pengyusen-data/gzth into dev_wang
This commit is contained in:
@@ -173,17 +173,9 @@ class SoongWorkflowRecord(models.Model):
|
||||
'employee2_ids')
|
||||
def _compute_is_to_do(self):
|
||||
current_uid = self.env.user.id
|
||||
# 关键修改:不再查users_ids,改为查当前用户对应的hr.employee记录
|
||||
current_employee = self.env['hr.employee'].search([('user_id', '=', current_uid)], limit=1)
|
||||
if not current_employee:
|
||||
# 若当前用户无对应员工记录,所有记录均为非待办
|
||||
for rec in self:
|
||||
rec.is_to_do = False
|
||||
return
|
||||
# 初始化所有记录为非待办(上下文流畅,保留原有初始化逻辑)
|
||||
self.is_to_do = False
|
||||
valid_records = self.filtered(
|
||||
lambda r: (current_employee.id in r.employee_ids.ids or current_employee.id in r.employee2_ids.ids)
|
||||
lambda r: (current_uid in r.users_ids.ids)
|
||||
and not r.reclaim_state
|
||||
)
|
||||
if not valid_records:
|
||||
@@ -228,13 +220,8 @@ class SoongWorkflowRecord(models.Model):
|
||||
|
||||
def _search_is_to_do(self, operator, value):
|
||||
current_uid = self.env.user.id
|
||||
current_employee = self.env['hr.employee'].search([('user_id', '=', current_uid)], limit=1)
|
||||
if not current_employee:
|
||||
return [('id', '=', False)]
|
||||
base_domain = [
|
||||
'|',
|
||||
('employee_ids', 'in', [current_employee.id]),
|
||||
('employee2_ids', 'in', [current_employee.id]),
|
||||
('users_ids', 'in', current_uid),
|
||||
('reclaim_state', '=', False)
|
||||
]
|
||||
candidate_records = self.search(base_domain)
|
||||
|
||||
@@ -46,7 +46,6 @@ class ResGroups(models.Model):
|
||||
if not department:
|
||||
return valid_user_ids
|
||||
|
||||
# 安全获取部门ID(自动兼容 int / record)
|
||||
dept_id = department.id if isinstance(department, models.Model) else int(department)
|
||||
|
||||
# 当前部门员工
|
||||
@@ -63,9 +62,7 @@ class ResGroups(models.Model):
|
||||
for department in self.department_ids:
|
||||
all_user_ids.update(get_department_employees(department))
|
||||
|
||||
# 3. 添加选中角色对应的用户(已修复 origin)
|
||||
for user_role in self.user_role_ids:
|
||||
# 安全获取ID:有 origin 取 origin,没有就取 id
|
||||
role_id = user_role.id.origin if hasattr(user_role.id, 'origin') else user_role.id
|
||||
user_employees = self.env['hr.employee'].search([
|
||||
'|',
|
||||
@@ -74,7 +71,6 @@ class ResGroups(models.Model):
|
||||
])
|
||||
all_user_ids.update([emp.user_id.id for emp in user_employees if emp.user_id])
|
||||
|
||||
# 4. 添加角色组对应的用户(已修复 origin)
|
||||
group_role_ids = self.users_role_group_ids.user_role_ids
|
||||
for user_role in group_role_ids:
|
||||
role_id = user_role.id.origin if hasattr(user_role.id, 'origin') else user_role.id
|
||||
|
||||
@@ -679,16 +679,16 @@ class YuthonHrEmployee(models.Model):
|
||||
pass
|
||||
return recs
|
||||
|
||||
def write(self, values):
|
||||
for record in self:
|
||||
try:
|
||||
if "department_id" in values:
|
||||
record.do_group_department_id(values.get("department_id"))
|
||||
if "user_role_id" in values:
|
||||
record.do_group_user_role_id(values.get("user_role_id"))
|
||||
except Exception as e:
|
||||
pass
|
||||
return super().write(values)
|
||||
# def write(self, values):
|
||||
# for record in self:
|
||||
# try:
|
||||
# if "department_id" in values:
|
||||
# record.do_group_department_id(values.get("department_id"))
|
||||
# if "user_role_id" in values:
|
||||
# record.do_group_user_role_id(values.get("user_role_id"))
|
||||
# except Exception as e:
|
||||
# pass
|
||||
# return super().write(values)
|
||||
|
||||
def do_group_department_id(self, department_id):
|
||||
user_ids = self.user_id.ids
|
||||
@@ -708,21 +708,21 @@ class YuthonHrEmployee(models.Model):
|
||||
"users": [(4, id) for id in user_ids]
|
||||
})
|
||||
|
||||
def do_group_user_role_id(self, user_role_id):
|
||||
# 移除原来的数据
|
||||
user_ids = self.user_id.ids
|
||||
old_res_groups_objs = self.sudo().env["res.groups"].search([("user_role_ids", "in", self.user_role_id.ids)])
|
||||
if old_res_groups_objs:
|
||||
for res_groups_obj in old_res_groups_objs:
|
||||
res_groups_obj.sudo().write({"users": [(3, id) for id in user_ids]})
|
||||
# 增加新的元素
|
||||
role_obj = self.sudo().env["soong.user.role"].search([("id", "=", user_role_id)], limit=1)
|
||||
res_groups_objs = self.sudo().env["res.groups"].search([("user_role_ids", "in", role_obj.ids)])
|
||||
if res_groups_objs:
|
||||
for res_groups_obj in res_groups_objs:
|
||||
res_groups_obj.sudo().write({
|
||||
"users": [(4, id) for id in user_ids]
|
||||
})
|
||||
# def do_group_user_role_id(self, user_role_id):
|
||||
# # 移除原来的数据
|
||||
# user_ids = self.user_id.ids
|
||||
# old_res_groups_objs = self.sudo().env["res.groups"].search([("user_role_ids", "in", self.user_role_id.ids)])
|
||||
# if old_res_groups_objs:
|
||||
# for res_groups_obj in old_res_groups_objs:
|
||||
# res_groups_obj.sudo().write({"users": [(3, id) for id in user_ids]})
|
||||
# # 增加新的元素
|
||||
# role_obj = self.sudo().env["soong.user.role"].search([("id", "=", user_role_id)], limit=1)
|
||||
# res_groups_objs = self.sudo().env["res.groups"].search([("user_role_ids", "in", role_obj.ids)])
|
||||
# if res_groups_objs:
|
||||
# for res_groups_obj in res_groups_objs:
|
||||
# res_groups_obj.sudo().write({
|
||||
# "users": [(4, id) for id in user_ids]
|
||||
# })
|
||||
|
||||
@api.onchange('number')
|
||||
def onchange_number(self):
|
||||
|
||||
@@ -273,103 +273,89 @@ class IssueMeetingLine(models.Model):
|
||||
|
||||
@api.constrains('decision_results', 'meeting_booking_id', 'issue_library_id')
|
||||
def _check_decision_results(self):
|
||||
if not self.meeting_booking_id.meeting_type_id:
|
||||
return
|
||||
for record in self:
|
||||
if not record.meeting_booking_id.meeting_type_id:
|
||||
continue
|
||||
|
||||
meeting_type_name = str(self.meeting_booking_id.meeting_type_id.name).strip()
|
||||
suffix_list = ['(通过)', '(未通过)']
|
||||
self.meeting_booking_id._check_name()
|
||||
if self.decision_results == 'agree':
|
||||
is_agree = 'pass'
|
||||
agree_name = '(通过)'
|
||||
is_push = True
|
||||
else:
|
||||
is_agree = 'reject'
|
||||
agree_name = '(未通过)'
|
||||
is_push = False
|
||||
meeting_type_name = str(record.meeting_booking_id.meeting_type_id.name).strip()
|
||||
suffix_list = ['(通过)', '(未通过)']
|
||||
record.meeting_booking_id._check_name()
|
||||
|
||||
# 2. 党委会相关:先清理旧后缀,再拼接新后缀
|
||||
if '党' in meeting_type_name:
|
||||
if self.issue_library_id.is_class:
|
||||
self.issue_library_id.is_push_class = is_push
|
||||
elif self.issue_library_id.is_boss:
|
||||
self.issue_library_id.is_push_boss = is_push
|
||||
|
||||
self.issue_library_id.is_party_passed = is_agree
|
||||
original_party_char = self.issue_library_id.party_char or ""
|
||||
# 清理原有后缀(避免重复拼接)
|
||||
clean_party_char = original_party_char
|
||||
for suffix in suffix_list:
|
||||
clean_party_char = clean_party_char.removesuffix(suffix)
|
||||
self.issue_library_id.party_char = clean_party_char + agree_name
|
||||
if is_push:
|
||||
self.issue_library_id.issue_state_party = 'on_meet'
|
||||
# 统一处理通过/不通过标识
|
||||
if record.decision_results == 'agree':
|
||||
is_agree = 'pass'
|
||||
agree_name = '(通过)'
|
||||
is_push = True
|
||||
else:
|
||||
self.issue_library_id.issue_state_party = 'will'
|
||||
is_agree = 'reject'
|
||||
agree_name = '(未通过)'
|
||||
is_push = False
|
||||
|
||||
# 3. 班子会相关:先清理旧后缀,再拼接新后缀
|
||||
if '班子' in meeting_type_name:
|
||||
if self.issue_library_id.is_boss:
|
||||
self.issue_library_id.is_push_boss = is_push
|
||||
self.issue_library_id.is_class_passed = is_agree
|
||||
original_class_char = self.issue_library_id.class_char or ""
|
||||
# 清理原有后缀
|
||||
clean_class_char = original_class_char
|
||||
for suffix in suffix_list:
|
||||
clean_class_char = clean_class_char.removesuffix(suffix)
|
||||
# 拼接新后缀
|
||||
self.issue_library_id.class_char = clean_class_char + agree_name
|
||||
if is_push:
|
||||
self.issue_library_id.issue_state_class = 'on_meet'
|
||||
else:
|
||||
self.issue_library_id.issue_state_class = 'will'
|
||||
# 2. 党委会相关
|
||||
if '党' in meeting_type_name:
|
||||
if record.issue_library_id.is_class:
|
||||
record.issue_library_id.is_push_class = is_push
|
||||
elif record.issue_library_id.is_boss:
|
||||
record.issue_library_id.is_push_boss = is_push
|
||||
|
||||
# 4. 董事会相关:先清理旧后缀,再拼接新后缀
|
||||
if '董事' in meeting_type_name:
|
||||
self.issue_library_id.is_push_boss = is_push
|
||||
self.issue_library_id.is_boss_passed = is_agree
|
||||
original_boss_char = self.issue_library_id.boss_char or ""
|
||||
# 清理原有后缀
|
||||
clean_boss_char = original_boss_char
|
||||
for suffix in suffix_list:
|
||||
clean_boss_char = clean_boss_char.removesuffix(suffix)
|
||||
# 拼接新后缀
|
||||
self.issue_library_id.boss_char = clean_boss_char + agree_name
|
||||
if is_push:
|
||||
self.issue_library_id.issue_state_boss = 'on_meet'
|
||||
else:
|
||||
self.issue_library_id.issue_state_boss = 'will'
|
||||
|
||||
if '套' in meeting_type_name:
|
||||
if (self.issue_library_id.is_party and
|
||||
(self.issue_library_id.is_party_passed == 'reject' or not self.issue_library_id.is_party_passed)):
|
||||
if self.issue_library_id.is_class:
|
||||
self.issue_library_id.is_push_class = is_push
|
||||
|
||||
self.issue_library_id.is_party_passed = is_agree
|
||||
original_party_char = self.issue_library_id.party_char or ""
|
||||
record.issue_library_id.is_party_passed = is_agree
|
||||
original_party_char = record.issue_library_id.party_char or ""
|
||||
clean_party_char = original_party_char
|
||||
for suffix in suffix_list:
|
||||
clean_party_char = clean_party_char.removesuffix(suffix)
|
||||
self.issue_library_id.party_char = clean_party_char + agree_name
|
||||
if is_push:
|
||||
self.issue_library_id.issue_state_party = 'on_meet'
|
||||
else:
|
||||
self.issue_library_id.issue_state_party = 'will'
|
||||
record.issue_library_id.party_char = clean_party_char + agree_name
|
||||
record.issue_library_id.issue_state_party = 'on_meet' if is_push else 'will'
|
||||
|
||||
elif (self.issue_library_id.is_class and
|
||||
(self.issue_library_id.is_class_passed == 'reject' or not self.issue_library_id.is_class_passed)):
|
||||
# 复用班子会的修改逻辑
|
||||
self.issue_library_id.is_class_passed = is_agree
|
||||
original_class_char = self.issue_library_id.class_char or ""
|
||||
# 3. 班子会相关
|
||||
if '班子' in meeting_type_name:
|
||||
if record.issue_library_id.is_boss:
|
||||
record.issue_library_id.is_push_boss = is_push
|
||||
record.issue_library_id.is_class_passed = is_agree
|
||||
original_class_char = record.issue_library_id.class_char or ""
|
||||
clean_class_char = original_class_char
|
||||
for suffix in suffix_list:
|
||||
clean_class_char = clean_class_char.removesuffix(suffix)
|
||||
self.issue_library_id.class_char = clean_class_char + agree_name
|
||||
if is_push:
|
||||
self.issue_library_id.issue_state_class = 'on_meet'
|
||||
else:
|
||||
self.issue_library_id.issue_state_class = 'will'
|
||||
record.issue_library_id.class_char = clean_class_char + agree_name
|
||||
record.issue_library_id.issue_state_class = 'on_meet' if is_push else 'will'
|
||||
|
||||
# 4. 董事会相关
|
||||
if '董事' in meeting_type_name:
|
||||
record.issue_library_id.is_push_boss = is_push
|
||||
record.issue_library_id.is_boss_passed = is_agree
|
||||
original_boss_char = record.issue_library_id.boss_char or ""
|
||||
clean_boss_char = original_boss_char
|
||||
for suffix in suffix_list:
|
||||
clean_boss_char = clean_boss_char.removesuffix(suffix)
|
||||
record.issue_library_id.boss_char = clean_boss_char + agree_name
|
||||
record.issue_library_id.issue_state_boss = 'on_meet' if is_push else 'will'
|
||||
|
||||
# 套开相关
|
||||
if '套' in meeting_type_name:
|
||||
if (record.issue_library_id.is_party and
|
||||
(
|
||||
record.issue_library_id.is_party_passed == 'reject' or not record.issue_library_id.is_party_passed)):
|
||||
if record.issue_library_id.is_class:
|
||||
record.issue_library_id.is_push_class = is_push
|
||||
|
||||
record.issue_library_id.is_party_passed = is_agree
|
||||
original_party_char = record.issue_library_id.party_char or ""
|
||||
clean_party_char = original_party_char
|
||||
for suffix in suffix_list:
|
||||
clean_party_char = clean_party_char.removesuffix(suffix)
|
||||
record.issue_library_id.party_char = clean_party_char + agree_name
|
||||
record.issue_library_id.issue_state_party = 'on_meet' if is_push else 'will'
|
||||
|
||||
elif (record.issue_library_id.is_class and
|
||||
(
|
||||
record.issue_library_id.is_class_passed == 'reject' or not record.issue_library_id.is_class_passed)):
|
||||
# 班子会逻辑
|
||||
record.issue_library_id.is_class_passed = is_agree
|
||||
original_class_char = record.issue_library_id.class_char or ""
|
||||
clean_class_char = original_class_char
|
||||
for suffix in suffix_list:
|
||||
clean_class_char = clean_class_char.removesuffix(suffix)
|
||||
record.issue_library_id.class_char = clean_class_char + agree_name
|
||||
record.issue_library_id.issue_state_class = 'on_meet' if is_push else 'will'
|
||||
|
||||
def unlink(self):
|
||||
delete_lines = self.filtered(lambda l: l.issue_library_id and l.meeting_booking_id)
|
||||
|
||||
Reference in New Issue
Block a user