Condensed Consolidated Statements of Income (Unaudited) - USD ($)
shares in Thousands, $ in Thousands
3 Months Ended 9 Months Ended
Sep. 27, 2019
Sep. 28, 2018
Sep. 27, 2019
Sep. 28, 2018
Income Statement [Abstract]        
Revenue $ 359,854 $ 308,095 $ 1,017,371 $ 949,744
Cost of revenue 325,537 278,964 921,685 865,078
Selling, general and administrative expenses 19,934 15,125 59,697 48,990
Operating income 14,383 14,006 35,989 35,676
Interest expense, net (1,907) (1,314) (4,811) (3,619)
Income from operations before income taxes 12,476 12,692 31,178 32,057
Income tax expense 3,094 2,826 7,088 6,884
Net income $ 9,382 $ 9,866 $ 24,090 $ 25,173
Earnings per share        
Basic (in dollars per share) $ 0.82 $ 0.88 $ 2.11 $ 2.25
Diluted (in dollars per share) $ 0.80 $ 0.86 $ 2.08 $ 2.21
Weighted average common shares outstanding - basic (in shares) 11,506 11,248 11,420 11,210
Weighted average common shares outstanding - diluted (in shares) 11,678 11,406 11,566 11,380