コード例 #1
0
 public function reviewAction()
 {
     // 返回值数组
     $result = array('success' => true, 'info' => '审核成功');
     $request = $this->getRequest()->getParams();
     $review_type = isset($request['review_type']) ? $request['review_type'] : null;
     $review_step = isset($request['review_step']) ? $request['review_step'] : null;
     $review_id = isset($request['review_id']) ? $request['review_id'] : null;
     $review_operate = isset($request['review_operate']) ? $request['review_operate'] : null;
     $review_remark = isset($request['review_remark']) ? $request['review_remark'] : null;
     if ($review_id && $review_type) {
         $now = date('Y-m-d H:i:s');
         $user_session = new Zend_Session_Namespace('user');
         $user_id = $user_session->user_info['user_id'];
         // 评审意见
         $review_info = '意见: ' . $review_remark;
         $user = new Application_Model_User();
         $review = new Dcc_Model_Review();
         $employee = new Hra_Model_Employee();
         if ($review_type == 'vacation') {
             $vacation = new Hra_Model_Attendance_Vacation();
             $vacationData = $vacation->getData(null, $review_id);
             if ($review_operate == 'no') {
                 // 拒绝
                 $review_info = $now . ': ' . $user_session->user_info['user_name'] . ' [审核-拒绝] [' . $review_info . ']';
                 $timeType = 'review_time_1';
                 if ($vacationData['review_time_1']) {
                     $timeType = 'review_time_2';
                 }
                 $data = array('state' => 1, $timeType => date('Y-m-d H:i:s'), 'review_info' => $vacationData['review_info'] . '<br>' . $review_info);
                 $vacation->update($data, "id = " . $review_id);
                 // 删除当前申请的审核配置
                 $review->delete("type = 'attendance_vacation' and file_id = " . $review_id);
                 // 调休假申请被拒绝后:还原对调加班时间的调休状态
                 if ($vacationData['type'] == 8) {
                     $overtimeIdArr = explode(',', $vacationData['exchange_overtime_ids']);
                     $overtime = new Hra_Model_Attendance_Overtime();
                     foreach ($overtimeIdArr as $overtimeId) {
                         $overtime->update(array('exchange' => 0), "id = " . $overtimeId);
                     }
                 }
                 // 发送邮件通知申请人
                 $reviewResult = '<font style="color: #FF0000"><b>拒绝</b></font>';
                 $mail = new Application_Model_Log_Mail();
                 $applyEmployeeData = $user->fetchRow("id = " . $vacationData['create_user'])->toArray();
                 $applyEmployee = $employee->fetchRow("id = " . $applyEmployeeData['employee_id'])->toArray();
                 $to = $applyEmployee['email'];
                 $mailContent = '<div>请假申请审核:</div>
                                 <div>
                                 <p><b>审核人:</b>' . $user_session->user_info['user_name'] . '</p>
                                 <p><b>审核结果:</b>' . $reviewResult . '</p>
                                 <p><b>审核意见:</b>' . $review_remark . '</p>
                                 <p><b>申请人:</b><a style="color:#008B00;font-weight: bold;">' . $vacationData['apply_user_name'] . '</a></p>
                                 <p><b>请假类别:</b>' . $vacationData['type_name'] . '</p>
                                 <p><b>请假时间:</b><a style="color:#008B00;font-weight: bold;">' . $vacationData['time_from'] . '</a> 至 <a style="color:#008B00;font-weight: bold;">' . $vacationData['time_to'] . '</a></p>
                                 <p><b>代理人:</b>' . $vacationData['agent_name'] . '</p>
                                 <p><b>事由:</b>' . $vacationData['reason'] . '</p>
                                 <p><b>工作交接:</b>' . $vacationData['work'] . '</p>
                                 <p><b>备注:</b>' . $vacationData['remark'] . '</p>
                                 <p><b>创建人:</b>' . $vacationData['creater'] . '</p>
                                 <p><b>申请时间:</b>' . $vacationData['create_time'] . '</p>
                                 <hr>
                                 <p><b>审核日志:</b></p><p>' . $data['review_info'] . '</p>
                                 </div>';
                 $mailData = array('type' => '消息', 'subject' => '请假申请-审核', 'to' => $to, 'user_id' => $vacationData['create_user'], 'content' => $mailContent, 'add_date' => $now);
                 try {
                     // 记录邮件日志并发送邮件
                     $mail->send($mail->insert($mailData));
                 } catch (Exception $e) {
                     $result['success'] = false;
                     $result['info'] = $e->getMessage();
                 }
             } else {
                 // 批准
                 $review_info = $now . ': ' . $user_session->user_info['user_name'] . ' [审核-批准] [' . $review_info . ']';
                 $reviewResult = '<font style="color: #006400"><b>批准</b></font>';
                 $updateData = array();
                 $toArr = array();
                 $subject = '审核';
                 $mailCc = null;
                 if ($review_step == 'review_1') {
                     $step_name = '审核人1';
                     if ($vacationData['review_user_2'] > 0 && $vacationData['review_time_1'] == '') {
                         // 二级审核,当前申请批准后进入第二级审核
                         array_push($toArr, $vacationData['review_employee_2_id']);
                         $updateData = array('review_time_1' => $now, 'review_info' => $vacationData['review_info'] . '<br>' . $review_info);
                     } else {
                         // 一级审核,当前申请批准后进入HRA审核
                         $member = new Admin_Model_Member();
                         $hraAdminUserArr = $member->getMemberWithNoManagerByName('人事主管');
                         $hraEmployeeIdArr = array();
                         foreach ($hraAdminUserArr as $hra) {
                             $hra_info = $user->getEmployeeInfoById($hra['user_id']);
                             array_push($toArr, $hra_info['id']);
                         }
                         if (isset($vacationData['manager_id']) && $vacationData['manager_id'] != '') {
                             array_push($toArr, $vacationData['manager_id']);
                         }
                         $updateData = array('state' => 2, 'review_time_1' => $now, 'review_info' => $vacationData['review_info'] . '<br>' . $review_info);
                     }
                 } else {
                     if ($review_step == 'review_2') {
                         // 二级审核,当前申请批准后进入HRA审核
                         $step_name = '审核人2';
                         $member = new Admin_Model_Member();
                         $hraAdminUserArr = $member->getMemberWithNoManagerByName('人事主管');
                         $hraEmployeeIdArr = array();
                         foreach ($hraAdminUserArr as $hra) {
                             $hra_info = $user->getEmployeeInfoById($hra['user_id']);
                             array_push($toArr, $hra_info['id']);
                         }
                         if (isset($vacationData['manager_id']) && $vacationData['manager_id'] != '') {
                             array_push($toArr, $vacationData['manager_id']);
                         }
                         $updateData = array('state' => 2, 'review_time_2' => $now, 'review_info' => $vacationData['review_info'] . '<br>' . $review_info);
                     } else {
                         if ($review_step == 'review_hra') {
                             // HRA审核,当前申请批准后发布
                             $step_name = '人事审核';
                             $reviewResult = '<font style="color: #006400"><b>发布</b></font>';
                             $subject = '发布';
                             array_push($toArr, $vacationData['apply_employee_id']);
                             $updateData = array('state' => 3, 'release_time' => $now, 'release_user' => $user_id, 'review_info' => $vacationData['review_info'] . '<br>' . $review_info);
                             $mailCc = $vacationData['agent_email'];
                             if ($mailCc != '') {
                                 if ($vacationData['manager_email'] != '') {
                                     $mailCc .= ',' . $vacationData['manager_email'];
                                 }
                             } else {
                                 $mailCc = $vacationData['manager_email'];
                             }
                             if ($vacationData['type'] == 2) {
                                 // 当年假申请批准后,更新年假库的已用时间:根据员工工号以及入司年数
                                 $vacationStorage = new Hra_Model_Vacationstorage();
                                 $vacationStorage->update(array('qty_used' => new Zend_Db_Expr("qty_used + " . $vacationData['qty'])), "number = '" . $vacationData['number'] . "' and in_year_qty = " . $vacationData['in_year_qty']);
                             }
                             // 请假申请发布后,在打卡记录中按请假时间加入打卡时间,且备注请假类别
                             /* $attendance = new Hra_Model_Attendance();
                                $attendance->setClock($vacationData['number'], $vacationData['employment_type'], $vacationData['time_from'], $vacationData['time_to'], $vacationData['type_name']); */
                         }
                     }
                 }
                 // 更新Review表
                 $reviewData = array('actual_user' => $user_session->user_info['employee_id'], 'finish_time' => $now, 'finish_flg' => 1);
                 $review->update($reviewData, "type = 'attendance_vacation' and file_id = " . $review_id . " and step_name = '" . $step_name . "'");
                 // 更新请假申请
                 $vacation->update($updateData, "id = " . $review_id);
                 // 发送邮件
                 if (count($toArr)) {
                     $mailContent = '<div>请假申请审核:</div>
                                     <div>
                                     <p><b>审核人:</b>' . $user_session->user_info['user_name'] . '</p>
                                     <p><b>审核结果:</b>' . $reviewResult . '</p>
                                     <p><b>审核意见:</b>' . $review_remark . '</p>
                                     <p><b>申请人:</b><a style="color:#008B00;font-weight: bold;">' . $vacationData['apply_user_name'] . '</a></p>
                                     <p><b>请假类别:</b><a style="color:#008B00;font-weight: bold;">' . $vacationData['type_name'] . '</a></p>
                                     <p><b>请假时间:</b><a style="color:#008B00;font-weight: bold;">' . $vacationData['time_from'] . '</a> 至 <a style="color:#008B00;font-weight: bold;">' . $vacationData['time_to'] . '</a></p>
                                     <p><b>代理人:</b>' . $vacationData['agent_name'] . '</p>
                                     <p><b>事由:</b>' . $vacationData['reason'] . '</p>
                                     <p><b>工作交接:</b>' . $vacationData['work'] . '</p>
                                     <p><b>备注:</b>' . $vacationData['remark'] . '</p>
                                     <p><b>创建人:</b>' . $vacationData['creater'] . '</p>
                                     <p><b>申请时间:</b>' . $vacationData['create_time'] . '</p>
                                     <hr>
                                     <p><b>审核日志:</b></p><p>' . $updateData['review_info'] . '</p>
                                     </div>';
                     $mailData = array('type' => '消息', 'subject' => '请假申请-' . $subject, 'user_id' => $vacationData['create_user'], 'content' => $mailContent, 'add_date' => $now);
                     if ($mailCc) {
                         $mailData['cc'] = $mailCc;
                     }
                     $help = new Application_Model_Helpers();
                     $resultMail = $help->sendMailToStep($toArr, $mailData);
                     if (!$result['success']) {
                         $result = $resultMail;
                     }
                 }
             }
         } else {
             if ($review_type == 'overtime') {
                 $overtime = new Hra_Model_Attendance_Overtime();
                 $overtimeData = $overtime->getData(null, $review_id);
                 if ($review_operate == 'no') {
                     // 拒绝
                     $review_info = $now . ': ' . $user_session->user_info['user_name'] . ' [审核-拒绝] [' . $review_info . ']';
                     $timeType = 'review_time_1';
                     if ($overtimeData['review_time_1']) {
                         $timeType = 'review_time_2';
                     }
                     $data = array('state' => 1, $timeType => date('Y-m-d H:i:s'), 'review_info' => $overtimeData['review_info'] . '<br>' . $review_info);
                     $overtime->update($data, "id = " . $review_id);
                     // 删除当前申请的审核配置
                     $review->delete("type = 'attendance_overtime' and file_id = " . $review_id);
                     // 发送邮件通知申请人
                     $reviewResult = '<font style="color: #FF0000"><b>拒绝</b></font>';
                     $mail = new Application_Model_Log_Mail();
                     $applyEmployeeData = $user->fetchRow("id = " . $overtimeData['create_user'])->toArray();
                     $applyEmployee = $employee->fetchRow("id = " . $applyEmployeeData['employee_id'])->toArray();
                     $to = $applyEmployee['email'];
                     $mailContent = '<div>加班申请审核:</div>
                                 <div>
                                 <p><b>审核人:</b>' . $user_session->user_info['user_name'] . '</p>
                                 <p><b>审核结果:</b>' . $reviewResult . '</p>
                                 <p><b>审核意见:</b>' . $review_remark . '</p>
                                 <p><b>申请人:</b><a style="color:#008B00;font-weight: bold;">' . $overtimeData['apply_user_name'] . '</a></p>
                                 <p><b>加班时间:</b><a style="color:#008B00;font-weight: bold;">' . $overtimeData['time_from'] . '</a> 至 <a style="color:#008B00;font-weight: bold;">' . $overtimeData['time_to'] . '</a></p>
                                 <p><b>事由:</b>' . $overtimeData['reason'] . '</p>
                                 <p><b>备注:</b>' . $overtimeData['remark'] . '</p>
                                 <p><b>创建人:</b>' . $overtimeData['creater'] . '</p>
                                 <p><b>申请时间:</b>' . $overtimeData['create_time'] . '</p>
                                 <hr>
                                 <p><b>审核日志:</b></p><p>' . $data['review_info'] . '</p>
                                 </div>';
                     $mailData = array('type' => '消息', 'subject' => '加班申请-审核', 'to' => $to, 'user_id' => $overtimeData['create_user'], 'content' => $mailContent, 'add_date' => $now);
                     try {
                         // 记录邮件日志并发送邮件
                         $mail->send($mail->insert($mailData));
                     } catch (Exception $e) {
                         $result['success'] = false;
                         $result['info'] = $e->getMessage();
                     }
                 } else {
                     // 批准
                     $review_info = $now . ': ' . $user_session->user_info['user_name'] . ' [审核-批准] [' . $review_info . ']';
                     $reviewResult = '<font style="color: #006400"><b>批准</b></font>';
                     $updateData = array();
                     $toArr = array();
                     $subject = '审核';
                     if ($review_step == 'review_1') {
                         $step_name = '审核人1';
                         if ($overtimeData['review_user_2'] > 0 && $overtimeData['review_time_1'] == '') {
                             // 二级审核,当前申请批准后进入第二级审核
                             array_push($toArr, $overtimeData['review_employee_2_id']);
                             $updateData = array('review_time_1' => $now, 'review_info' => $overtimeData['review_info'] . '<br>' . $review_info);
                         } else {
                             // 一级审核,当前申请批准后进入HRA审核
                             $member = new Admin_Model_Member();
                             $hraAdminUserArr = $member->getMemberWithNoManagerByName('人事主管');
                             $hraEmployeeIdArr = array();
                             foreach ($hraAdminUserArr as $hra) {
                                 $hra_info = $user->getEmployeeInfoById($hra['user_id']);
                                 array_push($toArr, $hra_info['id']);
                             }
                             if (isset($overtimeData['manager_id']) && $overtimeData['manager_id'] != '') {
                                 array_push($toArr, $overtimeData['manager_id']);
                             }
                             $updateData = array('state' => 2, 'review_time_1' => $now, 'review_info' => $overtimeData['review_info'] . '<br>' . $review_info);
                         }
                     } else {
                         if ($review_step == 'review_2') {
                             // 二级审核,当前申请批准后进入HRA审核
                             $step_name = '审核人2';
                             $member = new Admin_Model_Member();
                             $hraAdminUserArr = $member->getMemberWithNoManagerByName('人事主管');
                             $hraEmployeeIdArr = array();
                             foreach ($hraAdminUserArr as $hra) {
                                 $hra_info = $user->getEmployeeInfoById($hra['user_id']);
                                 array_push($toArr, $hra_info['id']);
                             }
                             if (isset($overtimeData['manager_id']) && $overtimeData['manager_id'] != '') {
                                 array_push($toArr, $overtimeData['manager_id']);
                             }
                             $updateData = array('state' => 2, 'review_time_2' => $now, 'review_info' => $overtimeData['review_info'] . '<br>' . $review_info);
                         } else {
                             if ($review_step == 'review_hra') {
                                 // HRA审核,当前申请批准后发布
                                 $step_name = '人事审核';
                                 $reviewResult = '<font style="color: #006400"><b>发布</b></font>';
                                 $subject = '发布';
                                 array_push($toArr, $overtimeData['apply_employee_id']);
                                 $updateData = array('state' => 3, 'release_time' => $now, 'release_user' => $user_id, 'review_info' => $overtimeData['review_info'] . '<br>' . $review_info);
                             }
                         }
                     }
                     // 更新Review表
                     $reviewData = array('actual_user' => $user_session->user_info['employee_id'], 'finish_time' => $now, 'finish_flg' => 1);
                     $review->update($reviewData, "type = 'attendance_overtime' and file_id = " . $review_id . " and step_name = '" . $step_name . "'");
                     // 更新加班申请
                     $overtime->update($updateData, "id = " . $review_id);
                     // 发送邮件
                     if (count($toArr)) {
                         $mailContent = '<div>加班申请审核:</div>
                                     <div>
                                     <p><b>审核人:</b>' . $user_session->user_info['user_name'] . '</p>
                                     <p><b>审核结果:</b>' . $reviewResult . '</p>
                                     <p><b>审核意见:</b>' . $review_remark . '</p>
                                     <p><b>申请人:</b><a style="color:#008B00;font-weight: bold;">' . $overtimeData['apply_user_name'] . '</a></p>
                                     <p><b>请假时间:</b><a style="color:#008B00;font-weight: bold;">' . $overtimeData['time_from'] . '</a> 至 <a style="color:#008B00;font-weight: bold;">' . $overtimeData['time_to'] . '</a></p>
                                     <p><b>事由:</b>' . $overtimeData['reason'] . '</p>
                                     <p><b>备注:</b>' . $overtimeData['remark'] . '</p>
                                     <p><b>创建人:</b>' . $overtimeData['creater'] . '</p>
                                     <p><b>申请时间:</b>' . $overtimeData['create_time'] . '</p>
                                     <hr>
                                     <p><b>审核日志:</b></p><p>' . $updateData['review_info'] . '</p>
                                     </div>';
                         $mailData = array('type' => '消息', 'subject' => '加班申请-' . $subject, 'user_id' => $overtimeData['create_user'], 'content' => $mailContent, 'add_date' => $now);
                         $help = new Application_Model_Helpers();
                         $resultMail = $help->sendMailToStep($toArr, $mailData);
                         if (!$result['success']) {
                             $result = $resultMail;
                         }
                     }
                 }
             }
         }
     } else {
         $result['success'] = false;
         $result['info'] = "审核失败,审核对象和操作类别不能为空!";
     }
     echo Zend_Json::encode($result);
     exit;
 }
コード例 #2
0
 /**
  * 编辑假期库
  */
 public function editvacationstorageAction()
 {
     // 返回值数组
     $result = array('success' => true, 'info' => '编辑成功');
     $request = $this->getRequest()->getParams();
     $now = date('Y-m-d H:i:s');
     $user_session = new Zend_Session_Namespace('user');
     $user_id = $user_session->user_info['user_id'];
     $json = json_decode($request['json']);
     $updated = $json->updated;
     $storage = new Hra_Model_Vacationstorage();
     if (count($updated) > 0) {
         foreach ($updated as $val) {
             $data = array('qty' => $val->qty, 'qty_used' => $val->qty_used, 'remark' => $val->remark, 'update_time' => $now, 'update_user' => $user_id);
             $where = "id = " . $val->id;
             try {
                 $storage->update($data, $where);
             } catch (Exception $e) {
                 $result['success'] = false;
                 $result['info'] = $e->getMessage();
                 echo Zend_Json::encode($result);
                 exit;
             }
         }
     }
     echo Zend_Json::encode($result);
     exit;
 }