From 384b0ff3d45941a066b6c1aef09472da042b27e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 9 Mar 2026 19:30:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=9A=E8=AE=AE=E5=90=8C=E6=AD=A5=E6=97=A5?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- room/models/room_booking.py | 96 ++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 50 deletions(-) diff --git a/room/models/room_booking.py b/room/models/room_booking.py index 912ef15fe..c09dc2bc6 100644 --- a/room/models/room_booking.py +++ b/room/models/room_booking.py @@ -303,56 +303,52 @@ class RoomBooking(models.Model): room_name=booking.room_id.name )) - @api.model - def create(self, vals): - """创建会议后同步生成日程""" - import logging - _logger = logging.getLogger(__name__) - - booking = super(RoomBooking, self).create(vals) - # 同步生成yuthon.will.task记录 - if booking: - try: - # 处理所有可能为空的字段 - if not booking.start_datetime: - _logger.error('会议开始时间为空,无法创建日程') - return booking - - # 提取参会人员(从room_users_ids转换为hr.employee) - employee_records = self.env['hr.employee'].search([('user_id', 'in', booking.room_users_ids.ids)]) if booking.room_users_ids else self.env['hr.employee'] - - # 确保name字段有值 - task_name = booking.name or f'会议_{booking.start_datetime.date()}' - - # 确保room_id有值 - address = booking.room_id.name if booking.room_id else '' - - # 确保meeting_data有值 - remarks = booking.meeting_data or '' - - # 确保room_users_ids有值 - room_users_ids = booking.room_users_ids.ids if booking.room_users_ids else [] - - # 确保self_users_ids有值 - self_users_ids = booking.self_users_ids.ids if booking.self_users_ids else [] - - # 创建日程记录 - task = self.env['yuthon.will.task'].create({ - 'name': task_name, - 'start_date': booking.start_datetime.date(), - 'task_type': 'meet', - 'room_booking_id': booking.id, - 'employee_ids': [(6, 0, employee_records.ids)] if employee_records else [(5, 0, 0)], - 'task_state': 'will', - 'address': address, - 'remarks': remarks, - 'users_ids': [(6, 0, room_users_ids)] if room_users_ids else [(5, 0, 0)], - 'self_users_ids': [(6, 0, self_users_ids)] if self_users_ids else [(5, 0, 0)], - }) - _logger.info('日程创建成功,ID: %s, 会议ID: %s', task.id, booking.id) - except Exception as e: - _logger.error('创建日程失败: %s', str(e)) - return booking + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + self.env['yuthon.will.task'].create({ + 'name': vals['name'], + 'start_date': vals['start_datetime'].date(), + 'task_type': 'meet', + 'priority': 'important', + 'employee_ids': [(6, 0, self.env['hr.employee'].search([('user_id', 'in', vals['room_users_ids'])]).ids)], + 'task_state': 'will', + 'address': self.env['room.room'].browse(vals['room_id']).name, + 'remarks': vals.get('meeting_data', ''), + 'users_ids': [(6, 0, vals['room_users_ids'])], + 'self_users_ids': [(6, 0, vals['self_users_ids'])], + }) + return super().create(vals_list) + + # @api.model + # def create(self, vals): + # + # booking = + # employee_records = self.env['hr.employee'].search([('user_id', 'in', booking.room_users_ids.ids)]) if booking.room_users_ids else self.env['hr.employee'] + # + # task_name = booking.name or f'会议_{booking.start_datetime.date()}' + # + # address = booking.room_id.name if booking.room_id else '' + # + # remarks = booking.meeting_data or '' + # # 确保room_users_ids有值 + # room_users_ids = booking.room_users_ids.ids if booking.room_users_ids else [] + # + # self_users_ids = booking.self_users_ids.ids if booking.self_users_ids else [] + # # 创建日程记录 + # task = self.env['yuthon.will.task'].create({ + # 'name': task_name, + # 'start_date': booking.start_datetime.date(), + # 'task_type': 'meet', + # 'room_booking_id': booking.id, + # 'employee_ids': [(6, 0, employee_records.ids)] if employee_records else [(5, 0, 0)], + # 'task_state': 'will', + # 'address': address, + # 'remarks': remarks, + # 'users_ids': [(6, 0, room_users_ids)] if room_users_ids else [(5, 0, 0)], + # 'self_users_ids': [(6, 0, self_users_ids)] if self_users_ids else [(5, 0, 0)], + # }) + # return super(RoomBooking, self).create(vals) # ------------------------------------------------------ # CRUD / ORM