Exemple #1
0
 public function setClock($number, $employment_type, $from, $to, $remark)
 {
     $from_date = date('Y-m-d', strtotime($from));
     $to_date = date('Y-m-d', strtotime($to));
     $now = date('Y-m-d H:i:s');
     $user_session = new Zend_Session_Namespace('user');
     $user_id = $user_session->user_info['user_id'];
     $workday = new Hra_Model_Workday();
     $worktime = new Hra_Model_Worktime();
     $attendance = new Hra_Model_Attendance();
     $vacationWorkDayInfo = $workday->getWorkdayQtyByTimeRange($employment_type, $from, $to);
     $vacationWorkDayArr = $vacationWorkDayInfo['work_day'];
     // 根据时间范围覆盖的工作日范围记录对应工号员工的打卡时间
     for ($i = 0; $i < count($vacationWorkDayArr); $i++) {
         $d = $vacationWorkDayArr[$i];
         $worktimeRange = $worktime->getWroktimeRange($employment_type, $d);
         // 打卡时间
         $time_on = $d . ' ' . $worktimeRange['from'];
         $time_off = $d . ' ' . $worktimeRange['to'];
         if ($i == 0 && $d == $from_date) {
             // 当起始日期和覆盖的工作日范围第一天一致时,判断起始时间是否 > 当天设定的上班打卡时间,是的话记录上班打卡时间为起始时间,否则记录上班打卡时间为系统设定时间
             if (strtotime($from > strtotime($d . ' ' . $worktimeRange['from']))) {
                 $time_on = $from;
             }
         } else {
             if ($i == count($vacationWorkDayArr) - 1 && $d == $to_date) {
                 // 当截止日期和覆盖的工作日范围最后一天一致时,判断截止时间是否 < 当天设定的下班打卡时间,是的话记录下班打卡时间为截止时间,否则记录上班打卡时间为系统设定时间
                 if (strtotime($to < strtotime($d . ' ' . $worktimeRange['to']))) {
                     $time_off = $to;
                 }
             }
         }
         // 记录上班时间
         $data = array('number' => $number, 'time' => $time_on, 'type' => 1, 'remark' => $remark, 'create_user' => $user_id, 'create_time' => $now, 'update_user' => $user_id, 'update_time' => $now);
         $attendance->insert($data);
         // 记录下班时间
         $data = array('number' => $number, 'time' => $time_off, 'type' => 2, 'remark' => $remark, 'create_user' => $user_id, 'create_time' => $now, 'update_user' => $user_id, 'update_time' => $now);
         $attendance->insert($data);
     }
 }
 /**
  * 获取考勤统计信息
  */
 public function getstatisticsAction()
 {
     $request = $this->getRequest()->getParams();
     $option = isset($request['option']) ? $request['option'] : 'list';
     $condition = array('key' => isset($request['key']) ? $request['key'] : null, 'employment_type' => isset($request['employment_type']) ? $request['employment_type'] : 1, 'date_from' => isset($request['date_from']) ? $request['date_from'] : date('Y-m-01'), 'date_to' => isset($request['date_to']) ? $request['date_to'] : date('Y-m-t'), 'page' => isset($request['page']) ? $request['page'] : 1, 'limit' => isset($request['limit']) ? $request['limit'] : 0, 'type' => $option);
     $attendance = new Hra_Model_Attendance();
     $data = $attendance->getStatisticsList($condition);
     if ($option == 'csv') {
         $this->view->layout()->disableLayout();
         $this->_helper->viewRenderer->setNoRender(true);
         $h = new Application_Model_Helpers();
         $h->exportCsv($data, '考勤统计');
     } else {
         echo Zend_Json::encode($data);
     }
     exit;
 }