From 5e81ce7f9e2c0105bf1b0c837f9a83a14abb78fd 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: Tue, 17 Mar 2026 17:39:44 +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
---
yuthon_issue/models/inherit_room_booking.py | 55 +++++++++++++++++++--
yuthon_issue/models/issue_library.py | 20 ++++++++
yuthon_issue/views/issue_library_views.xml | 14 +++---
3 files changed, 78 insertions(+), 11 deletions(-)
diff --git a/yuthon_issue/models/inherit_room_booking.py b/yuthon_issue/models/inherit_room_booking.py
index b50ac52be..4ae47459e 100644
--- a/yuthon_issue/models/inherit_room_booking.py
+++ b/yuthon_issue/models/inherit_room_booking.py
@@ -20,16 +20,32 @@ class RoomBooking(models.Model):
if record.issue_meeting_line_ids:
for meet in record.issue_meeting_line_ids:
if meet.issue_library_id:
- meeting_type_name = str(self.meeting_type_id.name).strip()
+ meeting_type_name = str(record.meeting_type_id.name).strip()
if '党' in meeting_type_name:
- meet.issue_library_id.party_char = str(self.start_datetime.date()) + self.meeting_type_id.name
+ meet.issue_library_id.party_char = str(
+ record.start_datetime.date()) + record.meeting_type_id.name
meet.issue_library_id.issue_state_party = 'meeting'
+
if '班子' in meeting_type_name:
- meet.issue_library_id.class_char = str(self.start_datetime.date()) + f'第{self.number_of_meetings}' + self.meeting_type_id.name
+ meet.issue_library_id.class_char = str(
+ record.start_datetime.date()) + f'第{record.number_of_meetings}' + record.meeting_type_id.name
meet.issue_library_id.issue_state_class = 'meeting'
+
if '董事' in meeting_type_name:
- meet.issue_library_id.boss_char = str(self.start_datetime.date()) + self.meeting_type_id.name
+ meet.issue_library_id.boss_char = str(
+ record.start_datetime.date()) + record.meeting_type_id.name
meet.issue_library_id.issue_state_boss = 'meeting'
+
+ elif '套' in meeting_type_name:
+ if meet.issue_library_id.is_party and (meet.issue_library_id.is_party_passed == 'reject' or not meet.issue_library_id.is_party_passed):
+ meet.issue_library_id.party_char = str(
+ record.start_datetime.date()) + record.meeting_type_id.name
+ meet.issue_library_id.issue_state_party = 'meeting'
+ elif meet.issue_library_id.is_class and (meet.issue_library_id.is_class_passed == 'reject' or not meet.issue_library_id.is_class_passed):
+ meet.issue_library_id.class_char = str(
+ record.start_datetime.date()) + f'第{record.number_of_meetings}' + record.meeting_type_id.name
+ meet.issue_library_id.issue_state_class = 'meeting'
+
if self.code:
self.env['issue.library.approval.line'].create({
'issue_library_id': meet.issue_library_id.id,
@@ -300,3 +316,34 @@ class IssueMeetingLine(models.Model):
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 ""
+ 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'
+
+ 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 ""
+ 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'
diff --git a/yuthon_issue/models/issue_library.py b/yuthon_issue/models/issue_library.py
index c6411b11d..fad7fc1e0 100644
--- a/yuthon_issue/models/issue_library.py
+++ b/yuthon_issue/models/issue_library.py
@@ -591,6 +591,26 @@ class IssueLibrary(models.Model):
break
elif passed_result == 'pass':
continue
+
+ if len(issue_active_ids) == 2 and all(ras.company_id.name == "天河粮储" for ras in issue_active_ids):
+ record_a, record_b = issue_active_ids
+ # 定义核心判断条件:
+ # 场景1:A党勾 + B党未勾且班子勾 OR 场景2:B党勾 + A党未勾且班子勾
+ condition = ((getattr(record_a, 'is_party', False) and not getattr(record_b, 'is_party', False) and getattr(record_b, 'is_class', False))
+ or
+ (getattr(record_b, 'is_party', False) and not getattr(record_a, 'is_party',False) and getattr(record_a,'is_class', False)))
+ all_char_empty = (
+ not getattr(record_a, 'party_char', '') and not getattr(record_a, 'class_char', '')
+ and
+ not getattr(record_b, 'party_char', '') and not getattr(record_b, 'class_char', '')
+ )
+ if condition and all_char_empty:
+ meeting_type_with_tao = self.env['room.meeting.type'].search([
+ ('name', 'ilike', '套')# 模糊匹配含「套」的会议类型
+ ], limit=1)
+ if meeting_type_with_tao:
+ target_meeting_type_id = meeting_type_with_tao.id
+
form_id = self.env.ref("room.room_booking_view_form", raise_if_not_found=False)
return {
"type": "ir.actions.act_window",
diff --git a/yuthon_issue/views/issue_library_views.xml b/yuthon_issue/views/issue_library_views.xml
index 3022566ba..dc26cea12 100644
--- a/yuthon_issue/views/issue_library_views.xml
+++ b/yuthon_issue/views/issue_library_views.xml
@@ -53,9 +53,9 @@
decoration-info="issue_state == 'will'"
decoration-success="issue_state == 'done'"
decoration-muted="issue_state == 'cancel'">
-
-
-
+
@@ -358,7 +358,7 @@
decoration-success="issue_state_party == 'done'"
decoration-muted="issue_state_party == 'cancel'">
@@ -396,7 +396,7 @@
decoration-success="issue_state_party == 'done'"
decoration-muted="issue_state_party == 'cancel'">
@@ -574,7 +574,7 @@
decoration-success="issue_state == 'done'"
decoration-muted="issue_state == 'cancel'">
@@ -735,7 +735,7 @@
decoration-success="issue_state_boss == 'done'"
decoration-muted="issue_state_boss == 'cancel'">