This commit is contained in:
李鹏宇
2026-09-07 15:16:30 +08:00
parent ba78bb040b
commit 10cbbc8c4a
+2 -54
View File
@@ -106,7 +106,7 @@ class RestaurantController(Controller):
def get_catering(self, **kwargs):
user_id = int(kwargs.get('user_id'))
menu_date = kwargs.get('menu_date', date.today())
menu_id = kwargs.get('menu_id')
menu_id = int(kwargs.get('menu_id'))
if not user_id or not menu_date or not menu_id:
return json.dumps({'data': '', 'code': 500, 'message': '请求失败'})
@@ -124,63 +124,11 @@ class RestaurantController(Controller):
'menu_id': catering.menu_day_id.id,
'breakfast': catering.breakfast,
'lunch': catering.lunch,
'state': catering.state,
'is_expatriate': False,
'state': catering.state
}
return json.dumps({'data': catering_data, 'code': 200, 'message': ''})
# 没有用餐记录时,判断当前员工是否处于外派期间;
# 若处于外派期间,默认早餐和午餐均为不就餐(False)。
is_expatriate = self._check_expatriation(employee, menu_date)
if is_expatriate:
catering_data = {
'id': 0,
'user_id': employee.user_id.id,
'menu_id': int(menu_id),
'breakfast': False,
'lunch': False,
'state': 'unconfirmed',
'is_expatriate': True,
}
return json.dumps({'data': catering_data, 'code': 200, 'message': ''})
return json.dumps({'data': '', 'code': 200, 'message': '没有查询到数据'})
def _check_expatriation(self, employee, menu_date):
"""判断员工在指定日期是否处于外派期间。
规则:
1. 存在审批结束且未作废、未失效、未结束的外派审批记录,员工在 expatriates_ids 中;
2. 外派开始日期 <= 当前日期;
3. 已填写返回日期时,当前日期 <= 返回日期;
4. 未填写返回日期时,从外派开始日期起即视为外派中。
"""
if not employee:
return False
WorkflowRecord = request.env['soong.workflow.record'].sudo()
# 先找出审批结束且未作废的外派审批单 ID
workflow_records = WorkflowRecord.search([
('res_model', '=', 'expatriation.approval'),
('approve_state', '=', 'end'),
('reclaim_state', '=', False),
])
expatriation_ids = workflow_records.mapped('res_id')
if not expatriation_ids:
return False
Expatriation = request.env['expatriation.approval'].sudo()
domain = [
('id', 'in', expatriation_ids),
('expatriates_ids', 'in', [employee.id]),
('start_date', '!=', False),
('start_date', '<=', menu_date),
('is_effect', '=', False),
('work_end', '=', False),
'|',
('return_date', '=', False),
('return_date', '>=', menu_date),
]
return bool(Expatriation.search(domain, limit=1))
@route('/phone/restaurant/get_catering_statistics', methods=['POST'], type='http', auth="none", csrf=False, cors='*')
@exception_handle
def get_catering_statistics(self, **kwargs):