From d44243c28bfc8d03d1005139d12a3cfe2c823cbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 26 Aug 2024 17:25:48 +0800 Subject: [PATCH] pengyuthon --- room/models/room_booking.py | 19 ++++++++++++ room/views/room_booking_views.xml | 5 +++- soong_workflow/models/soong_workflow_mixin.py | 8 ++--- yuthon_notice/models/yuthon_notice.py | 29 +++++++++++++++++-- 4 files changed, 53 insertions(+), 8 deletions(-) diff --git a/room/models/room_booking.py b/room/models/room_booking.py index 196a17788..96c493b34 100644 --- a/room/models/room_booking.py +++ b/room/models/room_booking.py @@ -29,6 +29,9 @@ class RoomBooking(models.Model): is_notice = fields.Boolean(string="是否发布通知", default=True) meeting_type = fields.Selection([('up', '线上'), ('down', '线下')], default='down', string="会议类型", required=True) + department_ids = fields.Many2many('hr.department', string='部门范围') + employee_ids = fields.Many2many('hr.employee', string='人员范围') + users_role_ids = fields.Many2many('soong.user.role', string='角色范围') room_users_ids = fields.Many2many('res.users', string="会议参加人员") meeting_party_note = fields.Text(string="党之委会议纪要") meeting_party_document_ids = fields.One2many('party.document', 'room_booking_id', string="党之委会议文档") @@ -40,6 +43,22 @@ class RoomBooking(models.Model): meeting_data = fields.Html(string="会议说明") wechat_meetingid = fields.Char("企业微信会议室ID") + @api.onchange('department_ids', 'employee_ids', 'users_role_ids') + def onchange_room_users_ids(self): + users_role_list = department_users_list = [] + # 部门人员 + for depart in self.department_ids: + department_users_data = self.env['hr.employee'].search([('department_id', '=', depart.id)]) + department_users_list = [de.user_id.id for de in department_users_data] + # 人员 + employee_users_list = self.employee_ids.user_id.ids + # 角色人员 + for user_id in self.users_role_ids: + department_users_data = self.env['hr.employee'].search([('user_role_id', '=', user_id.id)]) + users_role_list = [ro.user_id.id for ro in department_users_data] + publish_user_list = department_users_list + employee_users_list + users_role_list + self.room_users_ids = [(6, 0, publish_user_list)] + def meet_notice(self): if self.is_notice: for user in self.room_users_ids: diff --git a/room/views/room_booking_views.xml b/room/views/room_booking_views.xml index ba8864845..e6c65de68 100644 --- a/room/views/room_booking_views.xml +++ b/room/views/room_booking_views.xml @@ -145,7 +145,10 @@ - + + + + diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 727629ccd..e1ca84f6b 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -20,7 +20,7 @@ class SoongWorkflowMixin(models.AbstractModel): wkf_obj = self.env["soong.workflow"] rec_model = self._name # Get Flow Start - wkf_recs = wkf_obj.search([("model_id", "=", rec_model)]) + wkf_recs = wkf_obj.search([("model_id", "=", rec_model), ('is_enable', '=', 'yes')]) for wkf_rec in wkf_recs: for node in wkf_rec.node_ids: if node.flow_start: @@ -34,7 +34,7 @@ class SoongWorkflowMixin(models.AbstractModel): rec_model = self._name ret = [] # Get Status - wkf_recs = wkf_obj.search([("model_id", "=", rec_model)]) + wkf_recs = wkf_obj.search([("model_id", "=", rec_model), ('is_enable', '=', 'yes')]) for rec in wkf_recs: for node in rec.node_ids: ret.append((node.node_name, node.name)) @@ -62,7 +62,7 @@ class SoongWorkflowMixin(models.AbstractModel): # Variables rec_model = rec._name # Get Workflow - rec.workflow_id = wkf_obj.search([("model_id", "=", rec_model)]) + rec.workflow_id = wkf_obj.search([("model_id", "=", rec_model), ('is_enable', '=', 'yes')]) node_id = fields.Many2one( comodel_name="soong.workflow.node", @@ -79,7 +79,7 @@ class SoongWorkflowMixin(models.AbstractModel): rec_model = rec._name # Get Workflow Node rec.node_id = wkf_obj.search( - [("model_id", "=", rec_model)] + [("model_id", "=", rec_model), ('is_enable', '=', 'yes')] ).node_ids.filtered(lambda n: n.node_name == rec.state) def btn_exec_action(self): diff --git a/yuthon_notice/models/yuthon_notice.py b/yuthon_notice/models/yuthon_notice.py index 9fa5c8c1b..b26136c3b 100644 --- a/yuthon_notice/models/yuthon_notice.py +++ b/yuthon_notice/models/yuthon_notice.py @@ -17,7 +17,7 @@ class YuthonNotice(models.Model): department_ids = fields.Many2many('hr.department', string='部门范围') employee_ids = fields.Many2many('hr.employee', string='人员范围') users_role_ids = fields.Many2many('soong.user.role', string='角色范围') - company_page = fields.Selection([('tz', '天河投资'), ('wg', '天河物管'), ('lc', '粮储')], string="公司", store=True) + company_page = fields.Selection([('tz', '天河投资'), ('wg', '天河物管'), ('lc', '天河粮储')], string="公司", compute="_compute_company", store=True) notice_type_id = fields.Many2one('yuthon.notice.type', string="公告类型") create_date = fields.Date(string="发布日期") start_date = fields.Date(string="生效日期") @@ -29,10 +29,33 @@ class YuthonNotice(models.Model): is_notice_roger = fields.Selection([('yes', '已读'), ('no', '未读')], default='no', string="确认状态") is_change_notice = fields.Boolean(string="是否发送通知", default=True) notice_text = fields.Html(string="正文") - read_number = fields.Integer(string='阅读量') + read_number = fields.Integer(string='阅读量', compute="_compute_read_number", store=True) approval_user_id = fields.Many2one('res.users', string="审核人") approval_date = fields.Datetime(string="审核日期") + @api.depends('user_id') + def _compute_company(self): + for rec in self: + company = rec.department_id.display_name.split('/')[0][0:4] + rec.company_page = '' + if company == '天河投资': + rec.company_page = 'tz' + if company == '天河物管': + rec.company_page = 'wg' + if company == '天河粮储': + rec.company_page = 'lc' + + + @api.depends('read_number') + def _compute_read_number(self): + notice_confirm_ids = self.env['yuthon.confirm.users'].search([('notice_id.id', '=', self.id), ('state', '=', 'yes')]) + for read in self: + if notice_confirm_ids: + read.read_number = len(notice_confirm_ids) + else: + read.read_number = 0 + + @api.onchange('is_notice_roger') def onchange_is_notice_roger(self): roger_id = self.env['yuthon.confirm.users'].search([('notice_id', '=', self.id), ('employee_id', '=', self.env.user.employee_id.id)]) @@ -53,7 +76,7 @@ class YuthonNotice(models.Model): department_users_data = self.env['hr.employee'].search([('department_id', '=', depart.id)]) department_users_list = [de.id for de in department_users_data] # 人员 - employee_users_list = [em.id for em in self.employee_ids] + employee_users_list = self.employee_ids.ids # 角色人员 for user_id in self.users_role_ids: department_users_data = self.env['hr.employee'].search([('user_role_id', '=', user_id.id)])