Merge pull request !9471 from 李鹏宇/dev_wang
This commit is contained in:
李鹏宇
2026-03-09 11:30:56 +00:00
committed by Gitee
+46 -50
View File
@@ -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