Cizz22 3 months ago
parent 7a9d5aacab
commit fd97475ca5

@ -155,51 +155,45 @@ ORDER BY avg_cost DESC;
async def get_oh_cost_summary(collector_db: CollectorDbSession, last_oh_date:datetime, upcoming_oh_date:datetime): async def get_oh_cost_summary(collector_db: CollectorDbSession, last_oh_date:datetime, upcoming_oh_date:datetime):
query = text(""" query = text("""
part_costs AS ( WITH part_costs AS (
SELECT SELECT
wm.wonum, wm.wonum,
SUM(wm.itemqty * COALESCE(wm.inv_avgcost, po.unit_cost, 0)) AS parts_total_cost SUM(wm.itemqty * COALESCE(wm.inv_avgcost, po.unit_cost, 0)) AS parts_total_cost
FROM public.wo_maxim_material wm FROM public.wo_maxim_material wm
LEFT JOIN ( LEFT JOIN (
SELECT item_num, AVG(unit_cost) AS unit_cost SELECT item_num, AVG(unit_cost) AS unit_cost
FROM public.maximo_sparepart_pr_po_line FROM public.maximo_sparepart_pr_po_line
GROUP BY item_num GROUP BY item_num
) po ON wm.itemnum = po.item_num ) po ON wm.itemnum = po.item_num
WHERE wm.itemnum IS NOT NULL WHERE wm.itemnum IS NOT NULL
GROUP BY wm.wonum GROUP BY wm.wonum
), ),
wo_costs AS ( wo_costs AS (
SELECT SELECT
w.wonum, w.wonum,
w.asset_location, w.asset_location,
(COALESCE(pc.parts_total_cost, 0)) AS total_wo_cost -- Use mat_cost_max if parts_total_cost = 0
FROM wo_staging_maximo_2 w CASE
LEFT JOIN part_costs pc WHEN COALESCE(pc.parts_total_cost, 0) = 0 THEN COALESCE(w.mat_cost_max , 0)
ON w.wonum = pc.wonum ELSE COALESCE(pc.parts_total_cost, 0)
WHERE END AS total_wo_cost
w.worktype = 'OH' FROM wo_staging_maximo_2 w
AND w.asset_system IN ( LEFT JOIN part_costs pc
'HPB', 'AH', 'APC', 'SCR', 'CL', 'DM', 'CRH', 'ASH', 'BAD', 'DS', 'WTP', ON w.wonum = pc.wonum
'MT', 'SUP', 'DCS', 'FF', 'EG', 'AI', 'SPS', 'EVM', 'SCW', 'KLH', 'CH', WHERE
'TUR', 'LOT', 'HRH', 'ESP', 'CAE', 'GMC', 'BFT', 'LSH', 'CHB', 'BSS', w.worktype = 'OH'
'LOS', 'LPB', 'SAC', 'CP', 'EHS', 'RO', 'GG', 'MS', 'CW', 'SO', 'ATT', AND w.reportdate IS NOT NULL
'AFG', 'EHB', 'RP', 'FO', 'PC', 'APE', 'AF', 'DMW', 'BRS', 'GEN', 'ABS', AND w.actstart IS NOT NULL
'CHA', 'TR', 'H2', 'BDW', 'LOM', 'ACR', 'AL', 'FW', 'COND', 'CCCW', 'IA', AND w.actfinish IS NOT NULL
'GSS', 'BOL', 'SSB', 'CO', 'OA', 'CTH-UPD', 'AS', 'DP' AND w.asset_unit IN ('3', '00')
) AND w.wonum NOT LIKE 'T%'
AND w.reportdate IS NOT NULL )
AND w.actstart IS NOT NULL SELECT
AND w.actfinish IS NOT NULL asset_location,
AND w.asset_unit IN ('3', '00') AVG(total_wo_cost) AS avg_cost
AND w.reportdate >= '2019-01-01' FROM wo_costs
AND w.wonum NOT LIKE 'T%' GROUP BY asset_location
) ORDER BY COUNT(wonum) DESC;
SELECT
asset_location,
AVG(total_wo_cost) as avg_cost
FROM wo_costs
GROUP BY asset_location
ORDER BY COUNT(wonum) DESC;
""") """)
result = await collector_db.execute(query) result = await collector_db.execute(query)

Loading…
Cancel
Save