diff --git a/room/models/room_booking.py b/room/models/room_booking.py index 4701e5d1a..912ef15fe 100644 --- a/room/models/room_booking.py +++ b/room/models/room_booking.py @@ -306,24 +306,52 @@ class RoomBooking(models.Model): @api.model def create(self, vals): """创建会议后同步生成日程""" + import logging + _logger = logging.getLogger(__name__) + booking = super(RoomBooking, self).create(vals) # 同步生成yuthon.will.task记录 if booking: - # 提取参会人员(从room_users_ids转换为hr.employee) - employee_records = self.env['hr.employee'].search([('user_id', 'in', booking.room_users_ids.ids)]) - # 创建日程记录 - self.env['yuthon.will.task'].create({ - 'name': booking.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': booking.room_id.name, - 'remarks': booking.meeting_data or '', - 'users_ids': [(6, 0, booking.room_users_ids.ids)] if booking.room_users_ids else [(5, 0, 0)], - 'self_users_ids': [(6, 0, booking.self_users_ids.ids)] if booking.self_users_ids else [(5, 0, 0)], - }) + 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 # ------------------------------------------------------