优化接口,使其易于取值
This commit is contained in:
@@ -376,7 +376,7 @@ class Sf_Dashboard_Connect(http.Controller):
|
||||
:param kw:
|
||||
:return:
|
||||
"""
|
||||
res = {'status': 1, 'message': '成功', 'data': []}
|
||||
res = {'status': 1, 'message': '成功', 'data': {}}
|
||||
plan_obj = request.env['sf.production.plan'].sudo()
|
||||
line_list = ast.literal_eval(kw['line_list'])
|
||||
begin_time_str = kw['begin_time'].strip('"')
|
||||
@@ -409,24 +409,73 @@ class Sf_Dashboard_Connect(http.Controller):
|
||||
'date': date.strftime('%Y-%m-%d'),
|
||||
'order_count': len(orders)
|
||||
})
|
||||
# 外面包一层,没什么是包一层不能解决的,包一层就能区分了,类似于包一层div
|
||||
# 外面包一层的好处是,可以把多个数据结构打包在一起,方便前端处理
|
||||
|
||||
res['data'] = order_counts
|
||||
# date_list_dict = {line: order_counts}
|
||||
|
||||
res['data'][line] = order_counts
|
||||
return json.dumps(res)
|
||||
|
||||
# # 实时产量
|
||||
# @http.route('/api/RealTimeProduct', type='http', auth='public', methods=['GET', 'POST'], csrf=False, cors="*")
|
||||
# def RealTimeProduct(self, **kw):
|
||||
# """
|
||||
# 获取实时产量
|
||||
# :param kw:
|
||||
# :return:
|
||||
# """
|
||||
#
|
||||
# def get_real_time_product(line_list):
|
||||
# res = {'status': 1, 'message': '成功', 'data': []}
|
||||
# plan_obj = request.env['sf.production.plan'].sudo()
|
||||
# for line in line_list:
|
||||
# plan_data = plan_obj.search([('production_line_id.name', '=', line)])
|
||||
# 实时产量
|
||||
@http.route('/api/RealTimeProduct', type='http', auth='public', methods=['GET', 'POST'], csrf=False, cors="*")
|
||||
def RealTimeProduct(self, **kw):
|
||||
"""
|
||||
获取实时产量
|
||||
:param kw:
|
||||
:return:
|
||||
"""
|
||||
res = {'status': 1, 'message': '成功', 'data': {}}
|
||||
plan_obj = request.env['sf.production.plan'].sudo()
|
||||
line_list = ast.literal_eval(kw['line_list'])
|
||||
begin_time_str = kw['begin_time'].strip('"')
|
||||
end_time_str = kw['end_time'].strip('"')
|
||||
begin_time = datetime.strptime(begin_time_str, '%Y-%m-%d %H:%M:%S')
|
||||
end_time = datetime.strptime(end_time_str, '%Y-%m-%d %H:%M:%S')
|
||||
|
||||
def get_hourly_intervals(start_time, end_time):
|
||||
intervals = []
|
||||
current_time = start_time
|
||||
while current_time < end_time:
|
||||
next_hour = current_time + timedelta(hours=1)
|
||||
intervals.append((current_time, min(next_hour, end_time)))
|
||||
current_time = next_hour
|
||||
return intervals
|
||||
|
||||
# 当班计划量
|
||||
for line in line_list:
|
||||
plan_order_nums = plan_obj.search_count(
|
||||
[('production_line_id.name', '=', line), ('state', 'not in', ['draft']),
|
||||
('date_planned_start', '>=', begin_time),
|
||||
('date_planned_start', '<', end_time)
|
||||
])
|
||||
finish_order_nums = plan_obj.search_count(
|
||||
[('production_line_id.name', '=', line), ('state', 'in', ['finished']),
|
||||
('date_planned_start', '>=', begin_time),
|
||||
('date_planned_start', '<', end_time)
|
||||
])
|
||||
hourly_intervals = get_hourly_intervals(begin_time, end_time)
|
||||
production_counts = []
|
||||
|
||||
for start, end in hourly_intervals:
|
||||
orders = plan_obj.search([
|
||||
('actual_end_time', '>=', start.strftime('%Y-%m-%d %H:%M:%S')),
|
||||
('actual_end_time', '<', end.strftime('%Y-%m-%d %H:%M:%S')),
|
||||
('production_line_id.name', '=', line)
|
||||
])
|
||||
production_counts.append({
|
||||
'start_time': start.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'end_time': end.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'production_count': len(orders)
|
||||
})
|
||||
production_counts_dict = {'production_counts': production_counts,
|
||||
'plan_order_nums': plan_order_nums,
|
||||
'finish_order_nums': finish_order_nums,
|
||||
}
|
||||
|
||||
res['data'][line] = production_counts_dict
|
||||
# res['data'].append({line: production_counts})
|
||||
return json.dumps(res)
|
||||
|
||||
# 工单明细
|
||||
@http.route('/api/OrderDetail', type='http', auth='public', methods=['GET', 'POST'], csrf=False, cors="*")
|
||||
@@ -437,7 +486,8 @@ class Sf_Dashboard_Connect(http.Controller):
|
||||
:return:
|
||||
"""
|
||||
|
||||
res = {'status': 1, 'message': '成功', 'not_done_data': [], 'done_data': []}
|
||||
# res = {'status': 1, 'message': '成功', 'not_done_data': [], 'done_data': []}
|
||||
res = {'status': 1, 'message': '成功', 'data': {}}
|
||||
plan_obj = request.env['sf.production.plan'].sudo()
|
||||
line_list = ast.literal_eval(kw['line_list'])
|
||||
begin_time_str = kw['begin_time'].strip('"')
|
||||
@@ -445,6 +495,9 @@ class Sf_Dashboard_Connect(http.Controller):
|
||||
begin_time = datetime.strptime(begin_time_str, '%Y-%m-%d %H:%M:%S')
|
||||
end_time = datetime.strptime(end_time_str, '%Y-%m-%d %H:%M:%S')
|
||||
print('line_list: %s' % line_list)
|
||||
not_done_data = []
|
||||
done_data = []
|
||||
final_data = {}
|
||||
|
||||
for line in line_list:
|
||||
# 未完成订单
|
||||
@@ -506,7 +559,7 @@ class Sf_Dashboard_Connect(http.Controller):
|
||||
'state': state_dict[order.state],
|
||||
|
||||
}
|
||||
res['not_done_data'].append(line_dict)
|
||||
not_done_data.append(line_dict)
|
||||
|
||||
for finish_order in finish_orders:
|
||||
blank_name = ''
|
||||
@@ -532,6 +585,8 @@ class Sf_Dashboard_Connect(http.Controller):
|
||||
'finish_time': finish_order.actual_end_time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
|
||||
}
|
||||
res['done_data'].append(line_dict)
|
||||
done_data.append(line_dict)
|
||||
|
||||
# 开始包一层
|
||||
res['data'][line] = {'not_done_data': not_done_data, 'done_data': done_data}
|
||||
return json.dumps(res)
|
||||
|
||||
Reference in New Issue
Block a user