diff --git a/app/src/main/resources/data.sql b/app/src/main/resources/data.sql index 75405e0a..c450f6ee 100644 --- a/app/src/main/resources/data.sql +++ b/app/src/main/resources/data.sql @@ -18,9 +18,6 @@ VALUES (1, 'test1@ajou.ac.kr', '망고보스', null, '010-1234-5678', '11111111' (6, 'test6@ajou.ac.kr', '정알바', null, '010-7712-2367', '66666666', '1997-09-01', 'http://k.kakaocdn.net/dn/bD4Rih/btsNXAxY4w1/XuxLt8jAsnIA5ZaHVjkE0k/img_110x110.jpg', 'STAFF', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - (999, 'test999@ajou.ac.kr', '이관수', null, '010-1231-2231', '999', '1990-06-09', - 'http://k.kakaocdn.net/dn/bD4Rih/btsNXAxY4w1/XuxLt8jAsnIA5ZaHVjkE0k/img_110x110.jpg', - 'ADMIN', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); INSERT INTO store (store_id, boss_id, name, address, business_number, store_type, invite_code, attendance_method, gps_range_meters, gps_latitude, gps_longitude, qr_code, overtime_limit, @@ -29,17 +26,15 @@ VALUES (1, 1, '망고쥬스', '경기도 수원시 영통구 월드컵로 206', '123456ABCDEF', 30, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), (2, 1, '망고코코넛', '경기 수원시 팔달구 아주로 37', '1248210324', 'CAFE', '3A4C78', 'QR', 15, 37.2822024, 127.0463244, 'JUADEFSE2392', 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - (3, 1, '스몰하노이', '경기도 고양시 일산서구 성저로 92', '1953100092', 'RESTAURANT', 'BJJ38L', 'QR', 15, 37.685024, 126.757285, - 'KOP22WT78JUC', 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); + INSERT INTO transfer_account (transfer_id, bank_code, account_number, account_holder, fin_account, created_at, modified_at) VALUES (1, 'NH', '3020000012816', '망고보스', '00820100029430000000000027417', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); INSERT INTO payroll_setting (payroll_setting_id, auto_transfer_enabled, deduction_unit, commuting_allowance, transfer_date, transfer_account_id, store_id) -VALUES (1, true, 10, 3000, 20, 1, 1), +VALUES (1, false, 10, 3000, 20, 1, 1), (2, false, 10, 0, null, null, 2), - (3, false, 10, 0, null, null, 3); INSERT INTO required_document (store_id, document_type, is_required, created_at, modified_at) VALUES (1, 'RESIDENT_REGISTRATION', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), @@ -50,10 +45,6 @@ VALUES (1, 'RESIDENT_REGISTRATION', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) (2, 'BANK_ACCOUNT', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), (2, 'ID_CARD', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), (2, 'HEALTH_CERTIFICATE', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - (3, 'RESIDENT_REGISTRATION', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - (3, 'BANK_ACCOUNT', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - (3, 'ID_CARD', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - (3, 'HEALTH_CERTIFICATE', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); INSERT INTO staff (staff_id, user_id, store_id, name, profile_image_url, withholding_type, hourly_wage, bank_code, account_number, @@ -67,80 +58,85 @@ VALUES (1, 2, 1, '망알바', (3, 4, 1, '보알바', 'https://mblogthumb-phinf.pstatic.net/MjAyMDAyMTBfODAg/MDAxNTgxMzA0MTE3ODMy.ACRLtB9v5NH-I2qjWrwiXLb7TeUiG442cJmcdzVum7cg.eTLpNg_n0rAS5sWOsofRrvBy0qZk_QcWSfUiIagTfd8g.JPEG.lattepain/1581304118739.jpg?type=w800', 'NONE', 10030, 'NH', '3020000013132', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - (4, 5, 1, '스알바', + (4, 5, 2, '스알바', 'https://mblogthumb-phinf.pstatic.net/MjAyMDAyMTBfODAg/MDAxNTgxMzA0MTE3ODMy.ACRLtB9v5NH-I2qjWrwiXLb7TeUiG442cJmcdzVum7cg.eTLpNg_n0rAS5sWOsofRrvBy0qZk_QcWSfUiIagTfd8g.JPEG.lattepain/1581304118739.jpg?type=w800', 'SOCIAL_INSURANCE', 10030, 'NH', '3020000013095', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - (5, 6, 1, '정알바', + (5, 6, 2, '정알바', 'http://k.kakaocdn.net/dn/bD4Rih/btsNXAxY4w1/XuxLt8jAsnIA5ZaHVjkE0k/img_110x110.jpg', 'INCOME_TAX', 10030, 'NH', '3020000013094', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); -INSERT INTO schedule (schedule_id, staff_id, regular_group_id, work_date, start_time, end_time, store_id, - substitution_state, - created_at, modified_at) -VALUES (1, 1, null, '2025-04-01', '2025-04-01 09:00:00', '2025-04-01 15:30:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (2, 2, null, '2025-05-01', '2025-05-01 13:00:00', '2025-05-01 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (3, 1, null, '2025-05-03', '2025-05-03 10:00:00', '2025-05-03 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (4, 2, null, '2025-05-03', '2025-05-03 10:00:00', '2025-05-03 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (5, 1, null, '2025-05-05', '2025-05-05 09:00:00', '2025-05-05 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (6, 3, null, '2025-05-07', '2025-05-07 10:00:00', '2025-05-07 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (7, 1, null, '2025-05-08', '2025-05-08 09:00:00', '2025-05-08 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (8, 4, null, '2025-05-10', '2025-05-10 10:00:00', '2025-05-10 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (9, 1, null, '2025-05-10', '2025-05-10 10:00:00', '2025-05-10 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (10, 1, null, '2025-04-01', '2025-04-01 09:00:00', '2025-04-01 15:00:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (11, 2, null, '2025-04-02', '2025-04-02 10:00:00', '2025-04-02 16:00:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (12, 3, null, '2025-04-03', '2025-04-03 13:00:00', '2025-04-03 17:00:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (13, 4, null, '2025-04-04', '2025-04-04 14:00:00', '2025-04-04 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (14, 5, null, '2025-04-05', '2025-04-05 09:00:00', '2025-04-05 13:00:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (15, 1, null, '2025-04-06', '2025-04-06 11:00:00', '2025-04-06 17:00:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (16, 2, null, '2025-04-07', '2025-04-07 08:30:00', '2025-04-07 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (17, 1, null, '2025-06-20', '2025-06-20 11:00:00', '2025-06-20 13:30:00', 1, 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP); +INSERT INTO schedule (schedule_id, staff_id, regular_group_id, work_date, start_time, end_time, store_id, substitution_state, created_at, modified_at) +VALUES + (1, 1, null, '2025-04-01', '2025-04-01 09:00:00', '2025-04-01 15:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (2, 2, null, '2025-04-01', '2025-04-01 09:00:00', '2025-04-01 15:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (3, 2, null, '2025-04-02', '2025-04-02 10:00:00', '2025-04-02 16:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (4, 3, null, '2025-04-03', '2025-04-03 13:00:00', '2025-04-03 17:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (5, 1, null, '2025-04-06', '2025-04-06 11:00:00', '2025-04-06 17:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (6, 2, null, '2025-04-07', '2025-04-07 08:30:00', '2025-04-07 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (7, 2, null, '2025-05-01', '2025-05-01 13:00:00', '2025-05-01 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (8, 1, null, '2025-05-03', '2025-05-03 10:00:00', '2025-05-03 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (10, 1, null, '2025-05-05', '2025-05-05 09:00:00', '2025-05-05 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (11, 3, null, '2025-05-06', '2025-05-06 09:00:00', '2025-05-06 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (12, 2, null, '2025-05-07', '2025-05-07 10:30:00', '2025-05-07 15:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (13, 3, null, '2025-05-07', '2025-05-07 10:00:00', '2025-05-07 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (14, 1, null, '2025-05-08', '2025-05-08 09:00:00', '2025-05-08 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (15, 3, null, '2025-05-08', '2025-05-08 13:00:00', '2025-05-08 19:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (16, 1, null, '2025-05-09', '2025-05-09 12:00:00', '2025-05-09 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (17, 2, null, '2025-05-10', '2025-05-10 08:00:00', '2025-05-10 13:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (18, 1, null, '2025-05-10', '2025-05-10 10:00:00', '2025-05-10 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (19, 3, null, '2025-05-11', '2025-05-11 09:30:00', '2025-05-11 15:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (20, 1, null, '2025-05-12', '2025-05-12 08:30:00', '2025-05-12 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (21, 2, null, '2025-05-13', '2025-05-13 11:30:00', '2025-05-13 19:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (22, 2, null, '2025-05-14', '2025-05-14 09:30:00', '2025-05-14 17:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (23, 2, null, '2025-05-15', '2025-05-15 08:00:00', '2025-05-15 16:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (24, 2, null, '2025-05-16', '2025-05-16 10:00:00', '2025-05-16 15:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (25, 3, null, '2025-05-17', '2025-05-17 08:30:00', '2025-05-17 15:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (28, 3, null, '2025-05-20', '2025-05-20 08:30:00', '2025-05-20 15:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (29, 3, null, '2025-05-21', '2025-05-21 08:30:00', '2025-05-21 16:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (30, 1, null, '2025-05-22', '2025-05-22 09:30:00', '2025-05-22 17:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (31, 1, null, '2025-05-23', '2025-05-23 08:00:00', '2025-05-23 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (32, 3, null, '2025-05-24', '2025-05-24 08:00:00', '2025-05-24 15:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (33, 2, null, '2025-05-25', '2025-05-25 09:30:00', '2025-05-25 16:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (34, 1, null, '2025-05-26', '2025-05-26 08:00:00', '2025-05-26 15:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (35, 2, null, '2025-05-27', '2025-05-27 10:00:00', '2025-05-27 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (37, 2, null, '2025-05-29', '2025-05-29 10:00:00', '2025-05-29 15:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (38, 2, null, '2025-05-30', '2025-05-30 08:00:00', '2025-05-30 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (39, 3, null, '2025-05-31', '2025-05-31 09:00:00', '2025-05-31 17:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); -INSERT INTO attendance(attendance_id, schedule_id, clock_in_time, clock_out_time, clock_in_status, clock_out_status, - attendance_state, - created_at, modified_at) -VALUES (1, 1, '2025-04-01 09:00:00', '2025-04-01 15:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (2, 2, '2025-05-01 13:00:00', '2025-05-01 18:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (3, 3, '2025-05-03 10:05:00', '2025-05-03 18:00:00', 'LATE', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (4, 4, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - (5, 5, '2025-05-05 09:00:00', '2025-05-05 14:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (6, 6, '2025-05-07 10:00:00', '2025-05-07 13:00:00', 'NORMAL', 'EARLY_LEAVE', 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (7, 7, '2025-05-08 09:00:00', '2025-05-08 14:20:00', 'NORMAL', 'OVERTIME', 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (8, 8, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - (9, 9, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), - (10, 10, '2025-04-01 09:00:00', '2025-04-01 15:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (11, 11, '2025-04-02 10:00:00', '2025-04-02 16:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (12, 12, '2025-04-03 13:00:00', '2025-04-03 17:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (13, 13, '2025-04-04 14:00:00', '2025-04-04 18:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (14, 14, '2025-04-05 09:00:00', '2025-04-05 13:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (15, 15, '2025-04-06 11:00:00', '2025-04-06 17:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP), - (16, 16, '2025-04-07 08:30:00', '2025-04-07 14:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP); \ No newline at end of file +INSERT INTO attendance (attendance_id, schedule_id, clock_in_time, clock_out_time, clock_in_status, clock_out_status, attendance_state, created_at, modified_at) +VALUES + (1, 1, '2025-04-01 09:00:00', '2025-04-01 15:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (2, 2, '2025-04-01 09:00:00', '2025-04-01 15:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (3, 3, '2025-04-02 10:00:00', '2025-04-02 16:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (4, 4, '2025-04-03 13:05:00', '2025-04-03 16:30:00', 'LATE', 'EARLY_LEAVE', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (5, 5, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (6, 6, '2025-04-07 08:30:00', '2025-04-07 14:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (7, 7, '2025-05-01 13:00:00', '2025-05-01 18:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (8, 8, '2025-05-03 10:05:00', '2025-05-03 18:00:00', 'LATE', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (9, 10, '2025-05-05 09:00:00', '2025-05-05 14:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (10, 11, '2025-05-06 09:05:00', '2025-05-06 14:25:00', 'LATE', 'EARLY_LEAVE', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (11, 12, '2025-05-07 10:30:00', '2025-05-07 15:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (12, 13, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (13, 14, '2025-05-08 09:00:00', '2025-05-08 14:10:00', 'NORMAL', 'OVERTIME', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (14, 15, '2025-05-08 13:00:00', '2025-05-08 19:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (15, 16, '2025-05-09 12:05:00', '2025-05-09 18:00:00', 'LATE', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (16, 17, '2025-05-10 08:00:00', '2025-05-10 13:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (17, 18, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (18, 19, '2025-05-11 09:30:00', '2025-05-11 15:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (19, 20, '2025-05-12 08:40:00', '2025-05-12 14:20:00', 'LATE', 'EARLY_LEAVE', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (20, 21, '2025-05-13 11:30:00', '2025-05-13 19:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (21, 22, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (22, 23, '2025-05-15 08:00:00', '2025-05-15 16:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (23, 24, '2025-05-16 10:00:00', '2025-05-16 15:20:00', 'NORMAL', 'EARLY_LEAVE', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (24, 25, '2025-05-17 08:35:00', '2025-05-17 15:00:00', 'LATE', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (25, 28, '2025-05-20 08:30:00', '2025-05-20 15:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (26, 29, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (27, 30, '2025-05-22 09:30:00', '2025-05-22 17:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (28, 31, '2025-05-23 08:10:00', '2025-05-23 14:30:00', 'LATE', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (29, 32, '2025-05-24 08:00:00', '2025-05-24 15:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (30, 33, '2025-05-25 09:35:00', '2025-05-25 16:00:00', 'LATE', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (31, 34, '2025-05-26 08:00:00', '2025-05-26 15:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (32, 35, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (33, 37, '2025-05-29 10:05:00', '2025-05-29 15:10:00', 'LATE', 'OVERTIME', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (34, 38, '2025-05-30 08:00:00', '2025-05-30 14:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), + (35, 39, '2025-05-31 09:00:00', '2025-05-31 17:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); diff --git a/batch/src/main/java/com/mangoboss/batch/auto_clock_out/domain/service/AutoClockOutService.java b/batch/src/main/java/com/mangoboss/batch/auto_clock_out/domain/service/AutoClockOutService.java index 28db989f..1ffd72d4 100644 --- a/batch/src/main/java/com/mangoboss/batch/auto_clock_out/domain/service/AutoClockOutService.java +++ b/batch/src/main/java/com/mangoboss/batch/auto_clock_out/domain/service/AutoClockOutService.java @@ -24,8 +24,8 @@ public class AutoClockOutService { @Transactional public void autoClockOut() { - List schedules = scheduleRepository.findAllSchedulesWithoutClockOut(); - List attendances = schedules.stream().map(projection -> { + List projections = scheduleRepository.findAllSchedulesWithoutClockOut(); + List attendances = projections.stream().map(projection -> { ScheduleEntity schedule = projection.getSchedule(); if (schedule.getAttendance() == null) { return recordAbsentAttendance(schedule); @@ -33,6 +33,7 @@ public void autoClockOut() { return recordNormalClockOutAttendance(schedule.getAttendance(), schedule.getEndTime()); }).toList(); attendanceRepository.saveAll(attendances); + notifyAbsentClockOut(projections); } private AttendanceEntity recordAbsentAttendance(final ScheduleEntity schedule) {