/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

  1. <?php
  2. include_once('./_common.php');
  3. $rtn_data = array();
  4. $drvseq = $_GET['mb_seq'];
  5. $year_month = $p_month;
  6. $tmp = explode('-', $year_month);
  7. $year = $tmp[0];
  8. $month = $tmp[1];
  9. $max_day = date('t', mktime(0, 0, 0, $month, 1, $year)); // 해당월의 마지막 날짜
  10. for($i=1; $i <= $max_day; $i++){//for 1
  11. $set_arr = [];
  12. $tmp_i = sprintf('%02d',$i);
  13. //근무표 출퇴근 구하기
  14. $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
  15. left join time_group_info b ON a.time_group = b.time_group ";
  16. $result = sql_fetch($sql);
  17. $work_start_time = "";//근무표 근무시작 시간
  18. $work_end_time = "";//근무표 근무종료 시간
  19. $night_shift_standard_6="";// 6시 야간 근무 기준
  20. $night_shift_standard_22="";// 22시 야간 근무 기준
  21. $work_timegroup = "";//근무표 Time Group
  22. if(is_array($result)){
  23. $work_start_time_tmp = $result["start_time"];
  24. $work_end_time_tmp = $result["end_time"];
  25. $work_type = $result["work_type"];
  26. $work_timegroup = $result["time_group"];//근무표 Time Group
  27. $work_start_time = "{$p_month}-{$tmp_i} {$work_start_time_tmp}";
  28. $work_end_time = "{$p_month}-{$tmp_i} {$work_end_time_tmp}";
  29. $night_shift_standard_6="{$p_month}-{$tmp_i}"." 06:00:00";
  30. $night_shift_standard_22="{$p_month}-{$tmp_i}"." 22:00:00";
  31. }
  32. //운전자이벤트 실제 출퇴근 구하기
  33. $sql2 = "select a.*, b.* from (
  34. 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
  35. left join (
  36. select drvseq AS drvseq_, MAX(logtime) as end_time from drivers_onoff where drvseq = '{$drvseq}' and logtime >= '{$p_month}-{$tmp_i}'
  37. 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_";
  38. $result2 = sql_fetch($sql2);
  39. //echo $sql2."<br/>";
  40. $real_work_start_time = "";//실제 근무시작 시간
  41. $real_work_end_time = "";//실제 근무종료 시간
  42. if(is_array($result2)){
  43. $real_work_start_time = $result2["start_time"];
  44. $real_work_end_time = $result2["end_time"];
  45. }
  46. //마지막 하차시간, 마지막 운행거리, 마지막 목적지
  47. $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
  48. left join alloc_vehicles b ON a.allocid = b.allocid";
  49. // echo $sql3."<br/>";
  50. $result3 = sql_fetch($sql3);
  51. $day_last_work_time = ""; //당일 마지막 운행데이터 (하차시간)
  52. $day_last_work_drv_distance = ""; //당일 마지막 운행데이터 (운행거리)
  53. $day_last_work_drv_call_address3 = ""; //당일 마지막 목적지
  54. if(is_array($result3)){
  55. $day_last_work_time = $result3["recv_time"];
  56. $day_last_work_drv_distance = $result3["drv_distance"];
  57. $day_last_work_drv_call_address3 = $result3["call_address3"];
  58. }
  59. //당일 운송인원
  60. $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}%'";
  61. // echo $sql3."<br/>";
  62. $result4 = sql_fetch($sql4);
  63. $day_sum_people_count = ""; //당일 운송인원 합계
  64. $day_sum_drv_distance = ""; //당일 운송거리
  65. if(is_array($result4)){
  66. $day_sum_people_count = $result4["cnt"];
  67. $day_sum_drv_distance = $result4["drv_distance_cnt"];
  68. }
  69. //연장근무근무 구하기
  70. $day_overtime = "";
  71. $tmp1 = strtotime($work_end_time);
  72. $tmp2 = strtotime($real_work_end_time);
  73. if($tmp1 < $tmp2){//실제 퇴근시간이 근무표 퇴근시간보다 크다면 연장시간을 구한다.
  74. $tmpDate = new DateTime($work_end_time);
  75. $tmpDate2 = new DateTime($real_work_end_time);
  76. $diffTemp = date_diff($tmpDate, $tmpDate2);
  77. $diff_minute = $diffTemp->i;
  78. $day_overtime = $diff_minute;
  79. }
  80. // 2022-04-29 jintae 추가
  81. // 야간근무계산1-근무표로 구하기
  82. $day_nightshift = ""; // 야간근무 sum
  83. $day_nightshift_6 = ""; // 6시 이전 야간근무
  84. $day_nightshift_22 = ""; // 22시 이후 야간근무
  85. // 06 시 이전
  86. $tmp1 = strtotime($work_start_time); // 근무표 근무 시작시간 ex)5:30
  87. $tmp2 = strtotime($night_shift_standard_6); // 야간 근무 기준 6:00
  88. if($tmp1 < $tmp2){
  89. $tmpDate = new DateTime($work_start_time);
  90. $tmpDate2 = new DateTime($night_shift_standard_6);
  91. $diffTemp = date_diff($tmpDate, $tmpDate2);
  92. $diff_minute = $diffTemp->i;
  93. $day_nightshift_6 = $diff_minute;
  94. }
  95. // 22 시 이후
  96. $tmp1 = strtotime($work_end_time); // 근무표 근무 종료시간
  97. $tmp2 = strtotime($night_shift_standard_22);
  98. if($tmp1 > $tmp2){
  99. $tmpDate = new DateTime($work_end_time);
  100. $tmpDate2 = new DateTime($night_shift_standard_22);
  101. $diffTemp = date_diff($tmpDate, $tmpDate2);
  102. $diff_minute = $diffTemp->i;
  103. $day_nightshift_22 = $diff_minute;
  104. }
  105. $day_nightshift = (int)$day_nightshift_6 + (int)$day_nightshift_22;
  106. //저장되어 있는 값이 있는지 확인한다.
  107. $sql5 = "select * from e_salary_work_status where drvseq = '{$drvseq}' and work_date = '{$p_month}-{$tmp_i}'; ";
  108. // echo $sql3."<br/>";
  109. $result5 = sql_fetch($sql5);
  110. $admission_work_start_time = ""; //관리자 승인 출근시간
  111. $admission_work_end_time = ""; //관리자 승인 퇴근시간
  112. $admission_day_sum_distance = ""; //관리자 승인 당일 총 운행거리
  113. $admission_work_over_time = ""; //관리자 승인 연장근무
  114. $admission_work_night_shift = ""; //관리자 승인 야간근무
  115. $admission_day_sum_people_count = ""; //관리자 승인 운송인원
  116. $admission_work_division = ""; //관리자 승인 구분
  117. $set_arr["admission_data_exist"] = "N"; //관리자 입력데이터 존재유무
  118. if(is_array($result5)){
  119. $admission_work_start_time = $result5["confirm_work_start_time"];
  120. $admission_work_end_time = $result5["confirm_work_end_time"];
  121. $admission_day_sum_distance = $result5["day_sum_distance"];
  122. $admission_work_over_time = $result5["confirm_work_over_time"];
  123. $admission_work_night_shift = $result5["confirm_work_night_shift"];
  124. $admission_day_sum_people_count = $result5["day_sum_people_count"];
  125. $admission_work_division = $result5["work_division"];
  126. // 야간근무계산2 - 관리자인정값으로구하기 2022-04-29 jintae 추가
  127. $day_nightshift = ""; // 야간근무 sum
  128. $day_nightshift_6 = ""; // 6시 이전 야간근무
  129. $day_nightshift_22 = ""; // 22시 이후 야간근무
  130. // 06 시 이전
  131. $tmp1 = strtotime($admission_work_start_time); // 관리자 확인 근무 시작시간 ex)5:30
  132. $tmp2 = strtotime($night_shift_standard_6); // 야간 근무 기준 6:00
  133. if($tmp1 < $tmp2){
  134. $tmpDate = new DateTime($admission_work_start_time);
  135. $tmpDate2 = new DateTime($night_shift_standard_6);
  136. $diffTemp = date_diff($tmpDate, $tmpDate2);
  137. $diff_minute = $diffTemp->i;
  138. $day_nightshift_6 = $diff_minute;
  139. }
  140. // 22 시 이후
  141. $tmp1 = strtotime($admission_work_end_time); // 근무표 근무 종료시간
  142. $tmp2 = strtotime($night_shift_standard_22);
  143. if($tmp1 > $tmp2){
  144. $tmpDate = new DateTime($admission_work_end_time);
  145. $tmpDate2 = new DateTime($night_shift_standard_22);
  146. $diffTemp = date_diff($tmpDate, $tmpDate2);
  147. $diff_minute = $diffTemp->i;
  148. $day_nightshift_22 = $diff_minute;
  149. }
  150. $day_nightshift = (int)$day_nightshift_6 + (int)$day_nightshift_22;
  151. $set_arr["admission_data_exist"] = "Y";
  152. }
  153. $set_arr["admission_work_start_time"] = $admission_work_start_time;
  154. $set_arr["admission_work_end_time"] = $admission_work_end_time;
  155. $set_arr["admission_day_sum_distance"] = $admission_day_sum_distance;
  156. $set_arr["admission_work_over_time"] = $admission_work_over_time;
  157. $set_arr["admission_work_night_shift"] = $admission_work_night_shift;
  158. $set_arr["admission_day_sum_people_count"] = $admission_day_sum_people_count;
  159. $set_arr["admission_work_division"] = $admission_work_division;
  160. //저장되어 있는 값이 있는지 확인한다. 끝
  161. //리턴값으로 넘기기 위해 배열에 담는다.
  162. $set_arr["work_date"] = "{$p_month}-{$tmp_i}";//근무일자
  163. $set_arr["work_start_time"] = $work_start_time;//근무표 근무시작 시간
  164. $set_arr["work_end_time"] = $work_end_time;//근무표 근무종료 시간
  165. $set_arr["real_work_start_time"] = $real_work_start_time;//실제 근무시작 시간
  166. $set_arr["real_work_end_time"] = $real_work_end_time;//실제 근무종료 시간
  167. $set_arr["day_last_work_time"] = $day_last_work_time; //당일 마지막 운행데이터 (하차시간)
  168. $set_arr["day_last_work_drv_distance"] = $day_last_work_drv_distance;//당일 마지막 운행데이터 (운행거리)
  169. $set_arr["day_sum_people_count"] = $day_sum_people_count;//당일 운송인원 합계
  170. $set_arr["day_overtime"] = $day_overtime;//연장근무 (분으로 구한다.)
  171. $set_arr["day_nightshift"] = $day_nightshift;//야간근무 (분으로 구한다.)
  172. $set_arr["work_type"] = $work_type;//근무유형
  173. $set_arr["time_group"] = $work_timegroup;//타임그룹
  174. $set_arr["day_sum_drv_distance"] = $day_sum_drv_distance;//당일 운송 총 거리
  175. $set_arr["day_last_work_drv_call_address3"] = $day_last_work_drv_call_address3;
  176. $rtn_data[] = $set_arr;
  177. //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/>";
  178. }//end for 1
  179. echo json_encode($rtn_data);