XML 55 R44.htm IDEA: XBRL DOCUMENT v3.24.2.u1
Revenue - Disaggregation of revenue by customer type and contract type (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2024
Jun. 30, 2023
Jun. 30, 2024
Jun. 30, 2023
Disaggregation of Revenue        
Revenue $ 1,563,715 $ 1,413,377 $ 2,976,422 $ 2,670,273
Fixed price        
Disaggregation of Revenue        
Revenue 602,441 583,424 1,271,792 1,196,186
Unit price        
Disaggregation of Revenue        
Revenue 552,568 554,478 991,029 1,003,318
Cost reimbursable        
Disaggregation of Revenue        
Revenue 408,706 275,475 713,601 470,769
MSA        
Disaggregation of Revenue        
Revenue 574,366 544,387 1,048,436 993,506
Non-MSA        
Disaggregation of Revenue        
Revenue 989,349 868,990 1,927,986 1,676,767
Intersegment Eliminations        
Disaggregation of Revenue        
Revenue (30,575) (14,576) (53,370) (19,099)
Intersegment Eliminations | Fixed price        
Disaggregation of Revenue        
Revenue (30,536) (3,310) (51,485) (6,059)
Intersegment Eliminations | Unit price        
Disaggregation of Revenue        
Revenue (12) (11,008) (1,765) (11,866)
Intersegment Eliminations | Cost reimbursable        
Disaggregation of Revenue        
Revenue (27) (258) (120) (1,174)
Intersegment Eliminations | MSA        
Disaggregation of Revenue        
Revenue (44) (2,950) (238) (4,617)
Intersegment Eliminations | Non-MSA        
Disaggregation of Revenue        
Revenue (30,531) (11,626) (53,132) (14,482)
Utilities | Operating Segment        
Disaggregation of Revenue        
Revenue 620,798 649,238 1,108,722 1,183,001
Utilities | Operating Segment | Fixed price        
Disaggregation of Revenue        
Revenue 93,571 101,738 180,571 187,685
Utilities | Operating Segment | Unit price        
Disaggregation of Revenue        
Revenue 387,980 411,594 685,405 734,965
Utilities | Operating Segment | Cost reimbursable        
Disaggregation of Revenue        
Revenue 139,247 135,906 242,746 260,351
Utilities | Operating Segment | MSA        
Disaggregation of Revenue        
Revenue 496,458 480,131 877,956 853,767
Utilities | Operating Segment | Non-MSA        
Disaggregation of Revenue        
Revenue 124,340 169,107 230,766 329,234
Energy | Operating Segment        
Disaggregation of Revenue        
Revenue 973,492 778,715 1,921,070 1,506,371
Energy | Operating Segment | Fixed price        
Disaggregation of Revenue        
Revenue 539,406 484,996 1,142,706 1,014,560
Energy | Operating Segment | Unit price        
Disaggregation of Revenue        
Revenue 164,600 153,892 307,389 280,219
Energy | Operating Segment | Cost reimbursable        
Disaggregation of Revenue        
Revenue 269,486 139,827 470,975 211,592
Energy | Operating Segment | MSA        
Disaggregation of Revenue        
Revenue 77,952 67,206 170,718 144,356
Energy | Operating Segment | Non-MSA        
Disaggregation of Revenue        
Revenue $ 895,540 $ 711,509 $ 1,750,352 $ 1,362,015