/admin/erp_salary_mng_get_data.php
https://gitlab.com/dev.essetel/sjnuri · PHP · 269 lines · 159 code · 90 blank · 20 comment · 11 complexity · 36d0b98a9ad14fcf935a2cf8c6d23dc4 MD5 · raw file
- <?php
- include_once('./_common.php');
- $rtn_data = array();
- $drvseq = $_GET['mb_seq'];
- $year_month = $p_month;
- $tmp = explode('-', $year_month);
- $year = $tmp[0];
- $month = $tmp[1];
- $max_day = date('t', mktime(0, 0, 0, $month, 1, $year)); // 해당월의 마지막 날짜
- for($i=1; $i <= $max_day; $i++){//for 1
- $set_arr = [];
- $tmp_i = sprintf('%02d',$i);
-
- //근무표 출퇴근 구하기
- $sql = "select a.*, b.start_time, b.end_time from (select * from `schedule_renewal` where drvseq = '{$drvseq}' and work_date = '{$p_month}-{$tmp_i}')a
- left join time_group_info b ON a.time_group = b.time_group ";
- $result = sql_fetch($sql);
- $work_start_time = "";//근무표 근무시작 시간
- $work_end_time = "";//근무표 근무종료 시간
- $night_shift_standard_6="";// 6시 야간 근무 기준
- $night_shift_standard_22="";// 22시 야간 근무 기준
- $work_timegroup = "";//근무표 Time Group
-
- if(is_array($result)){
- $work_start_time_tmp = $result["start_time"];
- $work_end_time_tmp = $result["end_time"];
- $work_type = $result["work_type"];
- $work_timegroup = $result["time_group"];//근무표 Time Group
- $work_start_time = "{$p_month}-{$tmp_i} {$work_start_time_tmp}";
- $work_end_time = "{$p_month}-{$tmp_i} {$work_end_time_tmp}";
- $night_shift_standard_6="{$p_month}-{$tmp_i}"." 06:00:00";
- $night_shift_standard_22="{$p_month}-{$tmp_i}"." 22:00:00";
- }
-
- //운전자이벤트 실제 출퇴근 구하기
- $sql2 = "select a.*, b.* from (
- select drvseq, MIN(logtime) as start_time from drivers_onoff where drvseq = '{$drvseq}' and DATE(logtime) like '{$p_month}-{$tmp_i}%' and status = 0 group by drvseq)a
- left join (
- select drvseq AS drvseq_, MAX(logtime) as end_time from drivers_onoff where drvseq = '{$drvseq}' and logtime >= '{$p_month}-{$tmp_i}'
- and logtime <= DATE_ADD('{$p_month}-{$tmp_i} 23:59:59', INTERVAL 5 HOUR) and status = 1 group by drvseq)b ON a.drvseq = b.drvseq_";
- $result2 = sql_fetch($sql2);
-
- //echo $sql2."<br/>";
- $real_work_start_time = "";//실제 근무시작 시간
- $real_work_end_time = "";//실제 근무종료 시간
-
- if(is_array($result2)){
- $real_work_start_time = $result2["start_time"];
- $real_work_end_time = $result2["end_time"];
- }
- //마지막 하차시간, 마지막 운행거리, 마지막 목적지
- $sql3 = "select a.*, b.call_address3 from (select * from drivers_working_info where drvseq = '{$drvseq}' and call_date like '{$p_month}-{$tmp_i}%' order by call_date desc limit 1)a
- left join alloc_vehicles b ON a.allocid = b.allocid";
- // echo $sql3."<br/>";
- $result3 = sql_fetch($sql3);
-
- $day_last_work_time = ""; //당일 마지막 운행데이터 (하차시간)
- $day_last_work_drv_distance = ""; //당일 마지막 운행데이터 (운행거리)
- $day_last_work_drv_call_address3 = ""; //당일 마지막 목적지
- if(is_array($result3)){
- $day_last_work_time = $result3["recv_time"];
- $day_last_work_drv_distance = $result3["drv_distance"];
- $day_last_work_drv_call_address3 = $result3["call_address3"];
- }
- //당일 운송인원
-
- $sql4 = "select sum(people_count) as cnt, sum(drv_distance) as drv_distance_cnt from drivers_working_info where drvseq = '{$drvseq}' and call_date like '{$p_month}-{$tmp_i}%'";
- // echo $sql3."<br/>";
- $result4 = sql_fetch($sql4);
-
- $day_sum_people_count = ""; //당일 운송인원 합계
- $day_sum_drv_distance = ""; //당일 운송거리
- if(is_array($result4)){
- $day_sum_people_count = $result4["cnt"];
- $day_sum_drv_distance = $result4["drv_distance_cnt"];
- }
- //연장근무근무 구하기
- $day_overtime = "";
-
- $tmp1 = strtotime($work_end_time);
- $tmp2 = strtotime($real_work_end_time);
- if($tmp1 < $tmp2){//실제 퇴근시간이 근무표 퇴근시간보다 크다면 연장시간을 구한다.
- $tmpDate = new DateTime($work_end_time);
- $tmpDate2 = new DateTime($real_work_end_time);
- $diffTemp = date_diff($tmpDate, $tmpDate2);
- $diff_minute = $diffTemp->i;
- $day_overtime = $diff_minute;
- }
- // 2022-04-29 jintae 추가
- // 야간근무계산1-근무표로 구하기
- $day_nightshift = ""; // 야간근무 sum
- $day_nightshift_6 = ""; // 6시 이전 야간근무
- $day_nightshift_22 = ""; // 22시 이후 야간근무
-
- // 06 시 이전
- $tmp1 = strtotime($work_start_time); // 근무표 근무 시작시간 ex)5:30
- $tmp2 = strtotime($night_shift_standard_6); // 야간 근무 기준 6:00
-
- if($tmp1 < $tmp2){
- $tmpDate = new DateTime($work_start_time);
- $tmpDate2 = new DateTime($night_shift_standard_6);
- $diffTemp = date_diff($tmpDate, $tmpDate2);
- $diff_minute = $diffTemp->i;
- $day_nightshift_6 = $diff_minute;
- }
- // 22 시 이후
- $tmp1 = strtotime($work_end_time); // 근무표 근무 종료시간
- $tmp2 = strtotime($night_shift_standard_22);
-
- if($tmp1 > $tmp2){
- $tmpDate = new DateTime($work_end_time);
- $tmpDate2 = new DateTime($night_shift_standard_22);
- $diffTemp = date_diff($tmpDate, $tmpDate2);
- $diff_minute = $diffTemp->i;
- $day_nightshift_22 = $diff_minute;
- }
- $day_nightshift = (int)$day_nightshift_6 + (int)$day_nightshift_22;
- //저장되어 있는 값이 있는지 확인한다.
- $sql5 = "select * from e_salary_work_status where drvseq = '{$drvseq}' and work_date = '{$p_month}-{$tmp_i}'; ";
- // echo $sql3."<br/>";
- $result5 = sql_fetch($sql5);
-
- $admission_work_start_time = ""; //관리자 승인 출근시간
- $admission_work_end_time = ""; //관리자 승인 퇴근시간
- $admission_day_sum_distance = ""; //관리자 승인 당일 총 운행거리
- $admission_work_over_time = ""; //관리자 승인 연장근무
- $admission_work_night_shift = ""; //관리자 승인 야간근무
- $admission_day_sum_people_count = ""; //관리자 승인 운송인원
- $admission_work_division = ""; //관리자 승인 구분
- $set_arr["admission_data_exist"] = "N"; //관리자 입력데이터 존재유무
- if(is_array($result5)){
- $admission_work_start_time = $result5["confirm_work_start_time"];
- $admission_work_end_time = $result5["confirm_work_end_time"];
- $admission_day_sum_distance = $result5["day_sum_distance"];
- $admission_work_over_time = $result5["confirm_work_over_time"];
- $admission_work_night_shift = $result5["confirm_work_night_shift"];
- $admission_day_sum_people_count = $result5["day_sum_people_count"];
- $admission_work_division = $result5["work_division"];
- // 야간근무계산2 - 관리자인정값으로구하기 2022-04-29 jintae 추가
- $day_nightshift = ""; // 야간근무 sum
- $day_nightshift_6 = ""; // 6시 이전 야간근무
- $day_nightshift_22 = ""; // 22시 이후 야간근무
-
- // 06 시 이전
- $tmp1 = strtotime($admission_work_start_time); // 관리자 확인 근무 시작시간 ex)5:30
- $tmp2 = strtotime($night_shift_standard_6); // 야간 근무 기준 6:00
-
- if($tmp1 < $tmp2){
- $tmpDate = new DateTime($admission_work_start_time);
- $tmpDate2 = new DateTime($night_shift_standard_6);
- $diffTemp = date_diff($tmpDate, $tmpDate2);
- $diff_minute = $diffTemp->i;
- $day_nightshift_6 = $diff_minute;
- }
- // 22 시 이후
- $tmp1 = strtotime($admission_work_end_time); // 근무표 근무 종료시간
- $tmp2 = strtotime($night_shift_standard_22);
-
- if($tmp1 > $tmp2){
- $tmpDate = new DateTime($admission_work_end_time);
- $tmpDate2 = new DateTime($night_shift_standard_22);
- $diffTemp = date_diff($tmpDate, $tmpDate2);
- $diff_minute = $diffTemp->i;
- $day_nightshift_22 = $diff_minute;
- }
- $day_nightshift = (int)$day_nightshift_6 + (int)$day_nightshift_22;
- $set_arr["admission_data_exist"] = "Y";
- }
-
- $set_arr["admission_work_start_time"] = $admission_work_start_time;
- $set_arr["admission_work_end_time"] = $admission_work_end_time;
- $set_arr["admission_day_sum_distance"] = $admission_day_sum_distance;
- $set_arr["admission_work_over_time"] = $admission_work_over_time;
- $set_arr["admission_work_night_shift"] = $admission_work_night_shift;
- $set_arr["admission_day_sum_people_count"] = $admission_day_sum_people_count;
- $set_arr["admission_work_division"] = $admission_work_division;
- //저장되어 있는 값이 있는지 확인한다. 끝
- //리턴값으로 넘기기 위해 배열에 담는다.
- $set_arr["work_date"] = "{$p_month}-{$tmp_i}";//근무일자
- $set_arr["work_start_time"] = $work_start_time;//근무표 근무시작 시간
- $set_arr["work_end_time"] = $work_end_time;//근무표 근무종료 시간
- $set_arr["real_work_start_time"] = $real_work_start_time;//실제 근무시작 시간
- $set_arr["real_work_end_time"] = $real_work_end_time;//실제 근무종료 시간
- $set_arr["day_last_work_time"] = $day_last_work_time; //당일 마지막 운행데이터 (하차시간)
- $set_arr["day_last_work_drv_distance"] = $day_last_work_drv_distance;//당일 마지막 운행데이터 (운행거리)
- $set_arr["day_sum_people_count"] = $day_sum_people_count;//당일 운송인원 합계
- $set_arr["day_overtime"] = $day_overtime;//연장근무 (분으로 구한다.)
- $set_arr["day_nightshift"] = $day_nightshift;//야간근무 (분으로 구한다.)
- $set_arr["work_type"] = $work_type;//근무유형
- $set_arr["time_group"] = $work_timegroup;//타임그룹
- $set_arr["day_sum_drv_distance"] = $day_sum_drv_distance;//당일 운송 총 거리
- $set_arr["day_last_work_drv_call_address3"] = $day_last_work_drv_call_address3;
- $rtn_data[] = $set_arr;
- //echo "근시{$work_start_time} | 근끝{$work_end_time} | 실시{$real_work_start_time} | 실끝{$real_work_end_time} | 마지막하차시간{$day_last_work_time} | 마지막운행거리{$day_last_work_drv_distance} | 당일운송인원{$day_sum_people_count} | 연장{$day_overtime} <br/><br/>";
- }//end for 1
- echo json_encode($rtn_data);