优化当班计划量,完成量数据
This commit is contained in:
@@ -447,6 +447,27 @@ class Sf_Dashboard_Connect(http.Controller):
|
|||||||
begin_time = datetime.strptime(begin_time_str, '%Y-%m-%d %H:%M:%S')
|
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')
|
end_time = datetime.strptime(end_time_str, '%Y-%m-%d %H:%M:%S')
|
||||||
# print('line_list: %s' % line_list)
|
# print('line_list: %s' % line_list)
|
||||||
|
print('kw', kw)
|
||||||
|
time_unit = kw.get('time_unit', 'day').strip('"') # 默认单位为天
|
||||||
|
print('time_unit: %s' % time_unit)
|
||||||
|
|
||||||
|
# 日期或小时循环生成器,根据time_unit决定是按天还是按小时
|
||||||
|
def get_time_intervals(start_time, end_time, time_unit):
|
||||||
|
intervals = []
|
||||||
|
current_time = start_time
|
||||||
|
if time_unit == 'hour':
|
||||||
|
delta = timedelta(hours=1)
|
||||||
|
else:
|
||||||
|
delta = timedelta(days=1)
|
||||||
|
|
||||||
|
while current_time < end_time:
|
||||||
|
next_time = current_time + delta
|
||||||
|
# 确保最后一个时间段不会超出end_time
|
||||||
|
if next_time > end_time:
|
||||||
|
next_time = end_time
|
||||||
|
intervals.append((current_time, next_time))
|
||||||
|
current_time = next_time
|
||||||
|
return intervals
|
||||||
|
|
||||||
def get_date_list(start_date, end_date):
|
def get_date_list(start_date, end_date):
|
||||||
date_list = []
|
date_list = []
|
||||||
@@ -457,10 +478,33 @@ class Sf_Dashboard_Connect(http.Controller):
|
|||||||
return date_list
|
return date_list
|
||||||
|
|
||||||
for line in line_list:
|
for line in line_list:
|
||||||
date_list = get_date_list(begin_time, end_time)
|
date_field_name = 'actual_end_time' # 替换为你模型中的实际字段名
|
||||||
order_counts = []
|
order_counts = []
|
||||||
|
|
||||||
date_field_name = 'actual_end_time' # 替换为你模型中的实际字段名
|
if time_unit == 'hour':
|
||||||
|
time_intervals = get_time_intervals(begin_time, end_time, time_unit)
|
||||||
|
print('============================= %s' % time_intervals)
|
||||||
|
|
||||||
|
time_count_dict = {}
|
||||||
|
|
||||||
|
for time_interval in time_intervals:
|
||||||
|
start_time, end_time = time_interval
|
||||||
|
# print(start_time, end_time)
|
||||||
|
orders = plan_obj.search([('production_line_id.name', '=', line), ('state', 'in', ['finished']),
|
||||||
|
(date_field_name, '>=', start_time.strftime('%Y-%m-%d 00:00:00')),
|
||||||
|
(date_field_name, '<', end_time.strftime('%Y-%m-%d 00:00:00'))
|
||||||
|
])
|
||||||
|
# 使用小时和分钟作为键,确保每个小时的数据有独立的键
|
||||||
|
key = start_time.strftime('%H:%M:%S') # 只取小时:分钟:秒作为键
|
||||||
|
time_count_dict[key] = len(orders)
|
||||||
|
order_counts.append({
|
||||||
|
'finish_order_nums': time_count_dict,
|
||||||
|
'plan_order_nums': 28
|
||||||
|
})
|
||||||
|
res['data'][line] = order_counts
|
||||||
|
return json.dumps(res)
|
||||||
|
|
||||||
|
date_list = get_date_list(begin_time, end_time)
|
||||||
|
|
||||||
for date in date_list:
|
for date in date_list:
|
||||||
next_day = date + timedelta(days=1)
|
next_day = date + timedelta(days=1)
|
||||||
@@ -483,9 +527,7 @@ class Sf_Dashboard_Connect(http.Controller):
|
|||||||
'date': date.strftime('%Y-%m-%d'),
|
'date': date.strftime('%Y-%m-%d'),
|
||||||
'order_count': len(orders),
|
'order_count': len(orders),
|
||||||
'rework_orders': len(rework_orders),
|
'rework_orders': len(rework_orders),
|
||||||
'not_passed_orders': len(not_passed_orders),
|
'not_passed_orders': len(not_passed_orders)
|
||||||
'finish_order_nums': len(orders),
|
|
||||||
'plan_order_nums': 20,
|
|
||||||
})
|
})
|
||||||
# 外面包一层,没什么是包一层不能解决的,包一层就能区分了,类似于包一层div
|
# 外面包一层,没什么是包一层不能解决的,包一层就能区分了,类似于包一层div
|
||||||
# 外面包一层的好处是,可以把多个数据结构打包在一起,方便前端处理
|
# 外面包一层的好处是,可以把多个数据结构打包在一起,方便前端处理
|
||||||
|
|||||||
Reference in New Issue
Block a user