调整数据获取逻辑

This commit is contained in:
胡尧
2025-06-16 17:33:55 +08:00
parent 10e995ec7f
commit 61034c3424

View File

@@ -438,20 +438,24 @@ class Sf_Dashboard_Connect(http.Controller):
# ('active', '=', True)]) # ('active', '=', True)])
# 工单计划量切换为CNC工单 # 工单计划量切换为CNC工单
plan_data_total_counts = work_order_obj.search_count(work_order_domain + [ plan_data_total = work_order_obj.search(work_order_domain + [
('id', '!=', 8061), ('id', '!=', 8061),
('state', 'in', ['ready', 'progress', 'done']) ('state', 'in', ['ready', 'progress', 'done'])
]) ])
plan_data_total_counts = sum(plan_data_total.mapped('qty_produced'))
# # 工单完成量 # # 工单完成量
# plan_data_finish_counts = plan_obj.search_count( # plan_data_finish_counts = plan_obj.search_count(
# [('production_line_id.name', '=', line), ('state', 'in', ['finished'])]) # [('production_line_id.name', '=', line), ('state', 'in', ['finished'])])
# 工单完成量切换为CNC工单 # 工单完成量切换为CNC工单
plan_data_finish_counts = work_order_obj.search_count(work_order_domain + [ plan_data_finish = work_order_obj.search(work_order_domain + [
('state', 'in', ['done']) ('state', 'in', ['done'])
]) ])
plan_data_finish_counts = sum(plan_data_finish.mapped('qty_produced'))
# 超期完成量 # 超期完成量
# 搜索所有已经完成的工单 # 搜索所有已经完成的工单
plan_data_overtime = work_order_obj.search(work_order_domain + [ plan_data_overtime = work_order_obj.search(work_order_domain + [
@@ -464,7 +468,8 @@ class Sf_Dashboard_Connect(http.Controller):
) )
# 获取数量 # 获取数量
plan_data_overtime_counts = len(plan_data_overtime_counts) # plan_data_overtime_counts = len(plan_data_overtime_counts)
plan_data_overtime_counts = sum(plan_data_overtime_counts.mapped('qty_produced'))
# 查找符合条件的生产计划记录 # 查找符合条件的生产计划记录
plan_data = plan_obj.search(plan_domain) plan_data = plan_obj.search(plan_domain)
@@ -485,7 +490,8 @@ class Sf_Dashboard_Connect(http.Controller):
# 计算符合条件的记录数量 # 计算符合条件的记录数量
# plan_data_fault_counts = len(faulty_plans) + cancel_order_count # plan_data_fault_counts = len(faulty_plans) + cancel_order_count
plan_data_fault_counts = len(faulty_plans) # plan_data_fault_counts = len(faulty_plans)
plan_data_fault_counts = sum(faulty_plans.workorder_id.mapped('qty_produced'))
# 工单返工数量 # 工单返工数量
@@ -632,10 +638,21 @@ class Sf_Dashboard_Connect(http.Controller):
current_date += timedelta(days=1) current_date += timedelta(days=1)
return date_list return date_list
for line in line_list: for line in line_list:
date_field_name = 'date_finished' # 替换为你模型中的实际字段名 date_field_name = 'date_finished' # 替换为你模型中的实际字段名
order_counts = [] order_counts = []
if line == '业绩总览':
work_order_domain = [('routing_type', 'in', ['人工线下加工', 'CNC加工'])]
elif line == '人工线下加工中心':
work_order_domain = [('routing_type', '=', '人工线下加工')]
else:
work_order_domain = [
('production_line_id.name', '=', line),
('routing_type', '=', 'CNC加工')
]
if time_unit == 'hour': if time_unit == 'hour':
time_intervals = get_time_intervals(begin_time, end_time, time_unit) time_intervals = get_time_intervals(begin_time, end_time, time_unit)
print('============================= %s' % time_intervals) print('============================= %s' % time_intervals)
@@ -652,9 +669,7 @@ class Sf_Dashboard_Connect(http.Controller):
# (date_field_name, '<=', end_time.strftime('%Y-%m-%d %H:%M:%S')) # 包括结束时间 # (date_field_name, '<=', end_time.strftime('%Y-%m-%d %H:%M:%S')) # 包括结束时间
# ]) # ])
orders = request.env['mrp.workorder'].sudo().search([ orders = request.env['mrp.workorder'].sudo().search(work_order_domain + [
('routing_type', '=', 'CNC加工'), # 将第一个条件合并进来
('production_line_id.name', '=', line),
('state', 'in', ['done']), ('state', 'in', ['done']),
(date_field_name, '>=', start_time.strftime('%Y-%m-%d %H:%M:%S')), (date_field_name, '>=', start_time.strftime('%Y-%m-%d %H:%M:%S')),
(date_field_name, '<=', end_time.strftime('%Y-%m-%d %H:%M:%S')) (date_field_name, '<=', end_time.strftime('%Y-%m-%d %H:%M:%S'))
@@ -674,25 +689,22 @@ class Sf_Dashboard_Connect(http.Controller):
for date in date_list: for date in date_list:
next_day = date + timedelta(days=1) next_day = date + timedelta(days=1)
orders = request.env['mrp.workorder'].sudo().search( orders = request.env['mrp.workorder'].sudo().search(work_order_domain + [
[('production_id.production_line_id.name', '=', line), ('state', 'in', ['done']), ('state', 'in', ['done']),
('routing_type', '=', 'CNC加工'), (date_field_name, '>=', date.strftime('%Y-%m-%d 00:00:00')),
(date_field_name, '>=', date.strftime('%Y-%m-%d 00:00:00')), (date_field_name, '<', next_day.strftime('%Y-%m-%d 00:00:00'))
(date_field_name, '<', next_day.strftime('%Y-%m-%d 00:00:00')) ])
])
rework_orders = request.env['mrp.workorder'].sudo().search( rework_orders = request.env['mrp.workorder'].sudo().search(work_order_domain + [
[('production_id.production_line_id.name', '=', line), ('state', 'in', ['rework']), ('state', 'in', ['rework']),
('routing_type', '=', 'CNC加工'), (date_field_name, '>=', date.strftime('%Y-%m-%d 00:00:00')),
(date_field_name, '>=', date.strftime('%Y-%m-%d 00:00:00')), (date_field_name, '<', next_day.strftime('%Y-%m-%d 00:00:00'))
(date_field_name, '<', next_day.strftime('%Y-%m-%d 00:00:00')) ])
]) not_passed_orders = request.env['mrp.workorder'].sudo().search(work_order_domain + [
not_passed_orders = request.env['mrp.workorder'].sudo().search( ('state', 'in', ['scrap', 'cancel']),
[('production_id.production_line_id.name', '=', line), ('state', 'in', ['scrap', 'cancel']), (date_field_name, '>=', date.strftime('%Y-%m-%d 00:00:00')),
('routing_type', '=', 'CNC加工'), (date_field_name, '<', next_day.strftime('%Y-%m-%d 00:00:00'))
(date_field_name, '>=', date.strftime('%Y-%m-%d 00:00:00')), ])
(date_field_name, '<', next_day.strftime('%Y-%m-%d 00:00:00'))
])
order_counts.append({ order_counts.append({
'date': date.strftime('%Y-%m-%d'), 'date': date.strftime('%Y-%m-%d'),
'order_count': len(orders), 'order_count': len(orders),