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; }
/** * 编辑假期库 */ 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; }