|
|
|
|
@ -41,3 +41,39 @@ async def get_cm_cost_summary(collector_db: CollectorDbSession, last_oh_date:dat
|
|
|
|
|
return {
|
|
|
|
|
data.location: data.avg_cost for data in data
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def get_oh_cost_summary(collector_db: CollectorDbSession, last_oh_date:datetime, upcoming_oh_date:datetime):
|
|
|
|
|
query = select(
|
|
|
|
|
WorkOrderData.location,
|
|
|
|
|
(func.sum(WorkOrderData.total_cost_max).cast(Numeric) / func.count(WorkOrderData.wonum)).label('avg_cost')
|
|
|
|
|
).where(
|
|
|
|
|
and_(
|
|
|
|
|
# WorkOrderData.wo_start >= last_oh_date,
|
|
|
|
|
# WorkOrderData.wo_start <= upcoming_oh_date,
|
|
|
|
|
WorkOrderData.worktype.in_(['OH']),
|
|
|
|
|
WorkOrderData.system_tag.in_(['HPB', 'AH', 'APC', 'SCR', 'CL', 'DM', 'CRH', 'ASH', 'BAD', 'DS', 'WTP',
|
|
|
|
|
'MT', 'SUP', 'DCS', 'FF', 'EG', 'AI', 'SPS', 'EVM', 'SCW', 'KLH', 'CH',
|
|
|
|
|
'TUR', 'LOT', 'HRH', 'ESP', 'CAE', 'GMC', 'BFT', 'LSH', 'CHB', 'BSS',
|
|
|
|
|
'LOS', 'LPB', 'SAC', 'CP', 'EHS', 'RO', 'GG', 'MS', 'CW', 'SO', 'ATT',
|
|
|
|
|
'AFG', 'EHB', 'RP', 'FO', 'PC', 'APE', 'AF', 'DMW', 'BRS', 'GEN', 'ABS',
|
|
|
|
|
'CHA', 'TR', 'H2', 'BDW', 'LOM', 'ACR', 'AL', 'FW', 'COND', 'CCCW', 'IA',
|
|
|
|
|
'GSS', 'BOL', 'SSB', 'CO', 'OA', 'CTH-UPD', 'AS', 'DP']),
|
|
|
|
|
WorkOrderData.reportdate.is_not(None),
|
|
|
|
|
WorkOrderData.actstart.is_not(None),
|
|
|
|
|
WorkOrderData.actfinish.is_not(None),
|
|
|
|
|
WorkOrderData.unit.in_([3, 0]),
|
|
|
|
|
WorkOrderData.reportdate >= datetime.strptime('2015-01-01', '%Y-%m-%d'),
|
|
|
|
|
not_(WorkOrderData.wonum.like('T%'))
|
|
|
|
|
)
|
|
|
|
|
).group_by(
|
|
|
|
|
WorkOrderData.location
|
|
|
|
|
).order_by(
|
|
|
|
|
func.count(WorkOrderData.wonum).desc()
|
|
|
|
|
)
|
|
|
|
|
result = await collector_db.execute(query)
|
|
|
|
|
data = result.all()
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
data.location: data.avg_cost for data in data
|
|
|
|
|
}
|
|
|
|
|
|