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; }