/** * grid用 */ public function getlistAction() { // 请求参数 $request = $this->getRequest()->getParams(); $limit = $request['limit']; $start = $request['start']; $where = "1=1"; foreach ($request as $k => $v) { if ($v != '') { $col = str_replace('search_', '', $k); if ($col != $k) { // 查询条件 $where .= " and " . $col . " like '%" . $v . "%'"; } } } $flow = new Admin_Model_Flow(); $step = new Admin_Model_Step(); $employee = new Hra_Model_Employee(); $data = $flow->getList($where, $start, $limit); for ($i = 0; $i < count($data); $i++) { if ($data[$i]['step_ids']) { $stepData = $step->getListByFlow($data[$i]['step_ids']); $tips = "<table class='eoa_table'><tr><th width='80'>阶段</th><th>人员</th><th>角色</th></tr>"; $step_name = ""; for ($k = 0; $k < count($stepData); $k++) { if ($step_name) { $step_name .= "->"; } $step_name .= $stepData[$k]['step_name']; $tips .= "<tr><td>" . $stepData[$k]['step_name'] . "</td><td>"; $users = $stepData[$k]['user']; $roles = $stepData[$k]['dept']; if ($users) { $userData = $employee->getAdapter()->query("select group_concat(cname) as names from oa_employee where id in ( " . $users . ")")->fetchObject(); $user_name = $userData->names; $tips .= $user_name; } $tips .= "</td><td>"; if ($roles) { $deptData = $employee->getAdapter()->query("select group_concat(name) as names from oa_user_role where id in ( " . $roles . ")")->fetchObject(); $role_name = $deptData->names; $tips .= $role_name; } $tips .= "</td></tr>"; } $data[$i]['tips'] = $tips; $data[$i]['step_names'] = $step_name; } } $resutl = array("totalCount" => count($flow->getList($where, null, null)), "topics" => $data); echo Zend_Json::encode($resutl); exit; }
/** * @abstract 保存 * @return null */ public function saveAction() { // 返回值数组 $result = array('success' => true, 'result' => true, 'info' => '保存成功'); $request = $this->getRequest()->getParams(); $now = date('Y-m-d H:i:s'); $user_session = new Zend_Session_Namespace('user'); $user = $user_session->user_info['employee_id']; $val = (object) $request; $materiel = new Product_Model_Materiel(); $record = new Dcc_Model_Record(); $review = new Dcc_Model_Review(); $employee = new Hra_Model_Employee(); $mail = new Application_Model_Log_Mail(); $member = new Admin_Model_Member(); $desc = new Product_Model_Desc(); if (isset($val->mid) && $val->mid) { $mid = $val->mid; $md = $materiel->fetchRow("id = {$mid}"); } else { $result['result'] = false; $result['info'] = "数据加载失败"; echo Zend_Json::encode($result); exit; } // 根据物料类别获取审批流 $typeId = $md->type; $stepRows = array(); if ($typeId) { $type = new Product_Model_Type(); // 获取当前物料类别对应的流程ID 如果找不到,继续往上搜索 $flow_id = $type->getFlowId($typeId, 'upd'); if ($flow_id) { // 根据流程ID获取阶段 $flow = new Admin_Model_Flow(); $step = new Admin_Model_Step(); $flowRow = $flow->getRow($flow_id); $step_ids = $flowRow['step_ids']; if ($step_ids) { $stepRows = $step->getListByFlow($step_ids); $state = "Reviewing"; } } } // 新增还是编辑 if (isset($val->id) && $val->id) { $result['info'] = '修改成功'; $data = array('mid' => $mid, 'code' => $md->code, 'state' => 'Reviewing', 'type_before' => $md->type, 'type_after' => $md->type, 'desc_before' => $md->description, 'desc_after' => $val->desc_after, 'supply1_before' => $md->supply1, 'supply1_after' => $val->supply1_after, 'supply2_before' => $md->supply2, 'supply2_after' => $val->supply2_after, 'manufacturers_before' => $md->manufacturers, 'manufacturers_after' => $val->manufacturers_after, 'data_file_id_before' => $md->data_file_id, 'data_file_id_after' => $val->data_file_id_after, 'tsr_id_before' => $md->tsr_id, 'tsr_id_after' => $val->tsr_id_after, 'first_report_id_before' => $md->first_report_id, 'first_report_id_after' => $val->first_report_id_after, 'name_before' => $md->name, 'name_after' => $val->name_after, 'remark' => $val->remark, 'create_user' => $user, 'create_time' => $now); $id = $val->id; $where = "id = " . $id; try { if ($id) { $desc->update($data, $where); // 操作记录 $data = array('type' => "materiel_desc", 'table_name' => "oa_product_materiel_desc", 'table_id' => $id, 'handle_user' => $user, 'handle_time' => $now, 'action' => "编辑", 'ip' => $_SERVER['REMOTE_ADDR']); $record->insert($data); // 审核流程 // 删除已存在的审核记录 $review->delete("type = 'materiel_desc' and file_id = " . $id); // 把阶段信息插入review记录 $first = true; foreach ($stepRows as $s) { $plan_user = $s['user']; if ($s['dept']) { $tmpUser = array(); $plan_dept = $s['dept']; foreach (explode(',', $plan_dept) as $role) { $tmpRole = $member->getMemberWithNoManager($role); foreach ($tmpRole as $m) { $tmpUser[] = $m['user_id']; } } if (count($tmpUser) == 0 && !$plan_user) { $tmpUser = $member->getUserids("系统管理员"); } if (count($tmpUser) > 0) { $tmpUser = $employee->getAdapter()->query("select group_concat(employee_id) as users from oa_user where active = 1 and id in ( " . implode(',', $tmpUser) . ")")->fetchObject(); $users = $tmpUser->users; } if ($users) { if ($plan_user) { $plan_user .= ","; } $plan_user .= $users; } } $repeatUser = explode(',', $plan_user); $repeatUser = array_unique($repeatUser); $plan_user = implode(',', $repeatUser); $reviewData = array('type' => "materiel_desc", 'file_id' => $id, 'plan_user' => $plan_user, 'method' => $s['method'], 'return' => $s['return'], 'step_name' => $s['step_name'], 'step_ename' => $s['step_ename']); $review->insert($reviewData); } } } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } echo Zend_Json::encode($result); exit; } else { $data = array('mid' => $mid, 'code' => $md->code, 'state' => 'Reviewing', 'ver_before' => $md->ver, 'ver_after' => $md->ver + 0.1, 'type_before' => $md->type, 'type_after' => $md->type, 'desc_before' => $md->description, 'desc_after' => $val->desc_after, 'supply1_before' => $md->supply1, 'supply1_after' => $val->supply1_after, 'supply2_before' => $md->supply2, 'supply2_after' => $val->supply2_after, 'manufacturers_before' => $md->manufacturers, 'manufacturers_after' => $val->manufacturers_after, 'data_file_id_before' => $md->data_file_id, 'data_file_id_after' => $val->data_file_id_after, 'tsr_id_before' => $md->tsr_id, 'tsr_id_after' => $val->tsr_id_after, 'first_report_id_before' => $md->first_report_id, 'first_report_id_after' => $val->first_report_id_after, 'name_before' => $md->name, 'name_after' => $val->name_after, 'remark' => $val->remark, 'create_user' => $user, 'create_time' => $now); try { $id = $desc->insert($data); if ($id) { // 操作记录 $data = array('type' => "materiel_desc", 'table_name' => "oa_product_materiel_desc", 'table_id' => $id, 'handle_user' => $user, 'handle_time' => $now, 'action' => "申请", 'ip' => $_SERVER['REMOTE_ADDR']); $record->insert($data); // 审核流程 // 把阶段信息插入review记录 $first = true; foreach ($stepRows as $s) { $plan_user = $s['user']; if ($s['dept']) { $tmpUser = array(); $plan_dept = $s['dept']; foreach (explode(',', $plan_dept) as $role) { $tmpRole = $member->getMemberWithNoManager($role); foreach ($tmpRole as $m) { $tmpUser[] = $m['user_id']; } } if (count($tmpUser) == 0 && !$plan_user) { $tmpUser = $member->getUserids("系统管理员"); } if (count($tmpUser) > 0) { $tmpUser = $employee->getAdapter()->query("select group_concat(employee_id) as users from oa_user where active = 1 and id in ( " . implode(',', $tmpUser) . ")")->fetchObject(); $users = $tmpUser->users; } if ($users) { if ($plan_user) { $plan_user .= ","; } $plan_user .= $users; } } $repeatUser = explode(',', $plan_user); $repeatUser = array_unique($repeatUser); $plan_user = implode(',', $repeatUser); $reviewData = array('type' => "materiel_desc", 'file_id' => $id, 'plan_user' => $plan_user, 'method' => $s['method'], 'return' => $s['return'], 'step_name' => $s['step_name'], 'step_ename' => $s['step_ename']); $review->insert($reviewData); // 邮件任务 if ($first) { $to = $employee->getAdapter()->query("select group_concat(email) as mail_to from oa_employee where id in ( " . $plan_user . ")")->fetchObject(); $mailData = array('type' => '物料号变更审批', 'subject' => '物料号变更审批', 'to' => $to->mail_to, 'cc' => '', 'content' => '你有新物料号变更申请(物料代码:' . $md["code"] . ')需要审核,请登录系统查看详情', 'send_time' => $now, 'add_date' => $now); $mailId = $mail->insert($mailData); if ($mailId) { $mail->send($mailId); } } $first = false; } } } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } echo Zend_Json::encode($result); exit; } }
/** * 文件发送 */ public function sendAction() { // 返回值数组 $result = array('success' => true, 'result' => true, 'info' => '发送成功'); $request = $this->getRequest()->getParams(); $now = date('Y-m-d H:i:s'); $user_session = new Zend_Session_Namespace('user'); $user = $user_session->user_info['employee_id']; $val = (object) $request; $upload = new Dcc_Model_Upload(); $doc_ids = ""; $doc_names = ""; if ($val->exfile_ids) { // 根据文件id获取归档文件id $tmp = $upload->getAdapter()->query("select group_concat(id) as doc_ids, group_concat(code) as doc_names from oa_doc_files where (state = 'Active') and name != '' and file_ids in ( " . $val->exfile_ids . ")")->fetchObject(); $doc_ids = $tmp->doc_ids; $doc_names = $tmp->doc_names; $row = $upload->getFileByIds($val->exfile_ids); $names = $row['name']; $paths = $row['path']; } if ($paths) { foreach (explode(',', $paths) as $path) { if (!is_file($path)) { $result['result'] = false; $result['info'] = "文件不存在"; echo Zend_Json::encode($result); exit; } } $employee = new Hra_Model_Employee(); $to = array(); if ($val->to_id) { $toUser = str_replace('E', '', $val->to_id); $to = $employee->getInfosByOneLine($toUser); $to = explode(',', $to['email']); } if (isset($val->custom_linkman) && $val->custom_linkman) { $to[] = $val->custom_linkman; } if (isset($val->supply_linkman) && $val->supply_linkman) { $to[] = $val->supply_linkman; } $dept = ''; if (isset($val->innerdept_id) && $val->innerdept_id) { $dept = str_replace('D', '', $val->innerdept_id); $sql = "select group_concat(email) as email from oa_employee where dept_id in ({$dept})"; $data = $employee->getAdapter()->query($sql)->fetchObject(); if ($data && $data->email) { $toemail = $data->email; foreach (explode(',', $toemail) as $t) { $to[] = $t; } } } $cc = array(); if ($val->cc_id) { $ccUser = str_replace('E', '', $val->cc_id); $cc = $employee->getInfosByOneLine($ccUser); $cc = explode(',', $cc['email']); } $u = $employee->getInfosByOneLine($user); $cc[] = $u->email; if (isset($val->personal_linkman) && $val->personal_linkman) { foreach (explode(',', $val->personal_linkman) as $m) { if (strpos($m, '@') != false) { $to[] = $m; } } } $mailData = array('type' => $val->sendtype == '外发' ? "文件外发" : "文件发放", 'subject' => $val->subject, 'to' => implode(',', $to), 'cc' => implode(',', $cc), 'content' => $val->content, 'attachment_name' => $names, 'attachment_path' => $paths, 'send_time' => $now, 'add_date' => $now); $mail = new Application_Model_Log_Mail(); try { $mailId = $mail->insert($mailData); if ($mailId) { $sendResult = $mail->send($mailId, 0, $val->to_name, $val->footer, true); } $error_info = ""; $success = false; if ($sendResult) { ${$error_info} = $sendResult['info']; $success = $sendResult['success']; } $result['result'] = $success; $result['info'] = ${$error_info}; if (isset($val->out_sendtype)) { $outsend = $val->out_sendtype; } else { $outsend = ""; } if (isset($val->out_custom)) { $partner = $val->out_custom; } else { if (isset($val->out_supply)) { $partner = $val->out_supply; } else { $partner = ''; } } if (isset($val->custom_linkman)) { $linkman = $val->custom_linkman; } else { if (isset($val->supply_linkman)) { $linkman = $val->supply_linkman; } else { $linkman = ''; } } // 获取发放编号 $code = $this->getSendCode(); // 记录 $to = $val->to; if (isset($val->personal_linkman) && $val->personal_linkman) { $to .= $val->personal_linkman; } $data = array('code' => $code, 'dept' => $dept, 'partner' => $partner, 'linkman' => $linkman, 'sendtype' => $val->sendtype, 'to_name' => $val->to_name, 'footer' => $val->footer, 'remark' => $val->remark, 'outsendtype' => $outsend, 'to' => $to, 'cc' => $val->cc, 'subject' => $val->subject, 'content' => $val->content, 'doc_ids' => $doc_ids, 'doc_names' => $doc_names, 'file_ids' => $val->exfile_ids, 'file_names' => $names, 'error_info' => $error_info, 'result' => $success, 'handle_time' => $now, 'handle_user' => $user); $send = new Dcc_Model_Send(); $send->insert($data); } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } if (!$result['info']) { $result['info'] = "发送成功"; } echo Zend_Json::encode($result); exit; } else { $result['result'] = false; $result['info'] = "文件不存在"; echo Zend_Json::encode($result); exit; } }
private function send($id, $updFlg) { $user_session = new Zend_Session_Namespace('user'); $user = $user_session->user_info['employee_id']; $user_name = $user_session->user_info['user_name']; $now = date('Y-m-d H:i:s'); $employee = new Hra_Model_Employee(); $mail = new Application_Model_Log_Mail(); $task = new User_Model_Task(); $process = new User_Model_Process(); $record = $task->getJoinList("id=" . $id); if (!$record) { return; } $record = $record[0]; if ($record['type'] == '独立') { $where = " task_id = {$id} and employee_id = {$user}"; } else { $where = " task_id = {$id}"; } $join = array('type' => INNERJOIN, 'table' => $employee, 'condition' => $employee->getName() . '.id = ' . $process->getName() . '.employee_id', 'cols' => array('cname')); $pro = $process->getJoinList($where, $join); $to_id = $record['responsible_id']; $cc_id = $record['follow_id']; // 上级 if ($to_id == $user) { $up = $employee->getAdapter()->query("select manager_id from oa_employee where id = {$user}")->fetchObject(); if ($up && $up->manager_id && $up->manager_id != $user) { if ($cc_id) { $cc_id .= ',' . $up->manager_id; } else { $cc_id = $up->manager_id; } } } $to = $employee->getAdapter()->query("select group_concat(email) as mail_to from oa_employee where id in ( " . $to_id . ")")->fetchObject(); $ccmail = null; if ($cc_id) { $cc = $employee->getAdapter()->query("select group_concat(email) as mail_to from oa_employee where id in ( " . $cc_id . ")")->fetchObject(); $ccmail = $cc->mail_to; } if ($updFlg == 'add') { $title = "新任务提示"; $content = $user_name . "创建了新任务 " . $record['title']; } else { if ($updFlg == 'update') { $title = "任务更新提示"; $content = $user_name . "更新了任务 " . $record['title']; } else { $title = "任务删除提示"; $content = $user_name . "删除了任务 " . $record['title']; } } $content .= "<p><b>任务名称:</b>" . $record['title'] . "</p>"; $content .= "<p><b>当前状态:</b>" . $record['state'] . "</p>"; $content .= "<p><b>任务时间:</b>" . $record['start'] . "到" . $record['end'] . "</p>"; $content .= "<p><b>任务描述:</b>" . $record['notes'] . "</p>"; $content .= "<p><b>重要程度:</b>" . $record['important'] . "</p>"; $content .= "<p><b>优先级:</b>" . $record['priority'] . "</p>"; $content .= "<p><b>协作模式:</b>" . $record['type'] . "</p>"; $creater = $employee->getById($record['create_user']); $content .= "<p><b>创建人:</b>" . $creater['cname'] . "</p>"; $content .= "<p><b>创建时间:</b>" . $record['create_time'] . "</p>"; $content .= "<p><b>进度</b></p>"; foreach ($pro as $p) { $content .= "<p> "; if ($record['type'] == '协作') { $content .= $p['cname'] . " "; } $content .= $p['update_time'] . " " . $p['status'] . " " . $p['rate'] . "% " . $p['remark'] . "</p>"; } $mailData = array('type' => '任务', 'subject' => $title, 'to' => $to->mail_to, 'cc' => $ccmail, 'content' => $content, 'send_time' => $now, 'add_date' => $now); $mailId = $mail->insert($mailData); if ($mailId) { $mail->send($mailId); } }
/** * @abstract 保存 * @return null */ public function editAction() { // 返回值数组 $result = array('success' => true, 'result' => true, 'info' => '保存成功'); $request = $this->getRequest()->getParams(); $now = date('Y-m-d H:i:s'); $user_session = new Zend_Session_Namespace('user'); $user = $user_session->user_info['employee_id']; $val = (object) $request; $materiel = new Product_Model_Materiel(); $record = new Dcc_Model_Record(); $review = new Dcc_Model_Review(); $employee = new Hra_Model_Employee(); $mail = new Application_Model_Log_Mail(); $member = new Admin_Model_Member(); // 根据物料类别获取审批流 $typeId = $val->type_id; $stepRows = array(); if ($typeId) { $type = new Product_Model_Type(); // 获取当前物料类别对应的流程ID 如果找不到,继续往上搜索 $flow_id = $type->getFlowId($typeId, 'new'); if ($flow_id) { // 根据流程ID获取阶段 $flow = new Admin_Model_Flow(); $step = new Admin_Model_Step(); $flowRow = $flow->getRow($flow_id); $step_ids = $flowRow['step_ids']; if ($step_ids) { $stepRows = $step->getListByFlow($step_ids); $state = "Reviewing"; } } } // 新增还是编辑 if (isset($val->id) && $val->id) { $result['info'] = '修改成功'; $data = array('type' => $val->type_id, 'description' => $val->description, 'remark' => $val->remark, 'ver' => $val->ver, 'unit' => $val->unit, 'state' => isset($state) ? 'Reviewing' : 'Active', 'manufacturers' => $val->manufacturers, 'supply1' => $val->supply1, 'supply2' => $val->supply2, 'mpq' => $val->mpq, 'moq' => $val->moq, 'tod' => $val->tod, 'data_file_id' => $val->data_file_id, 'first_report_id' => $val->first_report_id); $id = $val->id; $where = "id = " . $id; try { if ($id) { $materiel->update($data, $where); /* $attrval = new Admin_Model_Formval(); // 自定义字段 foreach($request as $field => $value) { if(stripos($field, "intelligenceField") !== false) { $attrId = str_replace("intelligenceField", "", $field); $menu = 'oa_doc_files_'.$id; $formval = array( 'attrid' => $attrId, 'value' => $value, 'menu' => $menu ); $where = "attrid = ".$attrId." and menu = '".$menu."'"; if($attrval->fetchAll($where)->count() > 0) { // 更新 $attrval->update($formval, $where); } else { $attrval->insert($formval); } } } */ // 操作记录 $data = array('type' => "materiel", 'table_name' => "oa_product_materiel", 'table_id' => $id, 'handle_user' => $user, 'handle_time' => $now, 'action' => "编辑", 'ip' => $_SERVER['REMOTE_ADDR']); $record->insert($data); // 审核流程 // 删除已存在的审核记录 $review->delete("type = 'materiel' and file_id = " . $id); // 把阶段信息插入review记录 $first = true; foreach ($stepRows as $s) { $plan_user = $s['user']; if ($s['dept']) { $tmpUser = array(); $plan_dept = $s['dept']; foreach (explode(',', $plan_dept) as $role) { $tmpRole = $member->getMemberWithNoManager($role); foreach ($tmpRole as $m) { $tmpUser[] = $m['user_id']; } } if (count($tmpUser) == 0 && !$plan_user) { $tmpUser = $member->getUserids("系统管理员"); } if (count($tmpUser) > 0) { $tmpUser = $employee->getAdapter()->query("select group_concat(employee_id) as users from oa_user where active = 1 and id in ( " . implode(',', $tmpUser) . ")")->fetchObject(); $users = $tmpUser->users; } if ($users) { if ($plan_user) { $plan_user .= ","; } $plan_user .= $users; } } $repeatUser = explode(',', $plan_user); $repeatUser = array_unique($repeatUser); $plan_user = implode(',', $repeatUser); $reviewData = array('type' => "materiel", 'file_id' => $id, 'plan_user' => $plan_user, 'method' => $s['method'], 'return' => $s['return'], 'step_name' => $s['step_name'], 'step_ename' => $s['step_ename']); $review->insert($reviewData); } } } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } echo Zend_Json::encode($result); exit; } else { $data = array('type' => $val->type_id, 'description' => $val->description, 'remark' => $val->remark, 'ver' => $val->ver, 'unit' => $val->unit, 'state' => isset($state) ? 'Reviewing' : 'Active', 'manufacturers' => $val->manufacturers, 'supply1' => $val->supply1, 'supply2' => $val->supply2, 'mpq' => $val->mpq, 'moq' => $val->moq, 'tod' => $val->tod, 'data_file_id' => $val->data_file_id, 'first_report_id' => $val->first_report_id, 'create_user' => $user, 'create_time' => $now); try { $id = $materiel->insert($data); if ($id) { /* // 自定义字段 $attrval = new Admin_Model_Formval(); foreach($request as $field => $value) { if(stripos($field, "intelligenceField") !== false && $value) { $attrId = str_replace("intelligenceField", "", $field); $menu = 'oa_doc_files_'.$id; $formval = array( 'attrid' => $attrId, 'value' => $value, 'menu' => $menu ); $attrval->insert($formval); } } */ // 操作记录 $data = array('type' => "materiel", 'table_name' => "oa_product_materiel", 'table_id' => $id, 'handle_user' => $user, 'handle_time' => $now, 'action' => "申请", 'ip' => $_SERVER['REMOTE_ADDR']); $record->insert($data); // 审核流程 // 把阶段信息插入review记录 $first = true; foreach ($stepRows as $s) { $plan_user = $s['user']; if ($s['dept']) { $tmpUser = array(); $plan_dept = $s['dept']; foreach (explode(',', $plan_dept) as $role) { $tmpRole = $member->getMemberWithNoManager($role); foreach ($tmpRole as $m) { $tmpUser[] = $m['user_id']; } } if (count($tmpUser) == 0 && !$plan_user) { $tmpUser = $member->getUserids("系统管理员"); } if (count($tmpUser) > 0) { $tmpUser = $employee->getAdapter()->query("select group_concat(employee_id) as users from oa_user where active = 1 and id in ( " . implode(',', $tmpUser) . ")")->fetchObject(); $users = $tmpUser->users; } if ($users) { if ($plan_user) { $plan_user .= ","; } $plan_user .= $users; } } $repeatUser = explode(',', $plan_user); $repeatUser = array_unique($repeatUser); $plan_user = implode(',', $repeatUser); $reviewData = array('type' => "materiel", 'file_id' => $id, 'plan_user' => $plan_user, 'method' => $s['method'], 'return' => $s['return'], 'step_name' => $s['step_name'], 'step_ename' => $s['step_ename']); $review->insert($reviewData); // 邮件任务 if ($first) { $to = $employee->getAdapter()->query("select group_concat(email) as mail_to from oa_employee where id in ( " . $plan_user . ")")->fetchObject(); $mailData = array('type' => '物料号归档审批', 'subject' => '物料号归档审批', 'to' => $to->mail_to, 'cc' => '', 'content' => '你有新物料号归档申请需要审核,请登录系统查看详情', 'send_time' => $now, 'add_date' => $now); $mailId = $mail->insert($mailData); if ($mailId) { $mail->send($mailId); } } $first = false; } } } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } echo Zend_Json::encode($result); exit; } }
/** * @abstract 文件升版 * @return null */ public function upgradeAction() { // 返回值数组 $result = array('success' => true, 'result' => true, 'info' => '保存成功'); $request = $this->getRequest()->getParams(); $now = date('Y-m-d H:i:s'); $user_session = new Zend_Session_Namespace('user'); $user = $user_session->user_info['employee_id']; $user_name = $user_session->user_info['user_name']; $val = (object) $request; $json = json_decode($request['json']); $code_file_code_id = $json->code_id; $code_file_code = $json->code; $code_file_file_id = $json->file_id; $code_file_file = $json->file; $code_file_desc = isset($json->code_file_desc) ? $json->code_file_desc : ''; $code_file_project_no = isset($json->code_file_project_no) ? $json->code_file_project_no : ''; $files = new Dcc_Model_Files(); $upload = new Dcc_Model_Upload(); $record = new Dcc_Model_Record(); $review = new Dcc_Model_Review(); $upgrade = new Dcc_Model_Upgrade(); $employee = new Hra_Model_Employee(); $mail = new Application_Model_Log_Mail(); $member = new Admin_Model_Member(); $code = $code_file_code[0]; $stepRows = array(); if (count($code) > 0 && $code) { $codeModel = new Dcc_Model_Code(); // 获取当前文件类别对应的流程ID $row = $codeModel->getTypeInfo("t1.code = '{$code}'"); $flow_id = $row['dev_flow_id']; if ($flow_id) { // 根据流程ID获取阶段 $flow = new Admin_Model_Flow(); $step = new Admin_Model_Step(); $flowRow = $flow->getRow($flow_id); $step_ids = $flowRow['step_ids']; if ($step_ids) { $stepRows = $step->getListByFlow($step_ids); $state = $stepRows[0]['step_name']; } } } // 获取所有文件的版本号 $vers = array(); foreach ($code_file_code as $c) { $d = $files->getAdapter()->query("select max(ver)+0.1 as ver from oa_doc_files where code = :code and state = 'Active' and del_flg = 0", array('code' => $c))->fetch(); $v = round($d['ver'], 1); if (strcmp($v, (int) $v) === 0) { $v .= ".0"; } $vers[] = $v; } // 新增还是编辑 if ($val->id) { $result['info'] = '修改成功'; $data = array('state' => isset($state) ? 'Reviewing' : 'Active', 'code' => implode(',', $code_file_code), 'name' => implode(',', $code_file_file), 'file_ids' => implode(',', $code_file_file_id), 'ver' => implode(',', $vers), 'description' => $code_file_desc, 'project_info' => implode(',', $code_file_project_no), 'remark' => $val->remark, 'tag' => $val->tag, 'update_time' => $now, 'update_user' => $user); $id = $val->id; $where = "id = " . $id; // 修改升版记录 $upgradeData = array('reason' => $val->reason, 'reason_type' => $val->reason_type, 'update_time' => $now, 'update_user' => $user); $upgradeWhere = "file_id = {$id}"; try { if ($id) { $upgrade->update($upgradeData, $upgradeWhere); $files->update($data, $where); $attrval = new Admin_Model_Formval(); // 自定义字段 foreach ($request as $field => $value) { if (stripos($field, "intelligenceField") !== false) { $attrId = str_replace("intelligenceField", "", $field); $menu = 'oa_doc_files_' . $id; $formval = array('attrid' => $attrId, 'value' => $value, 'menu' => $menu); $where = "attrid = " . $attrId . " and menu = '" . $menu . "'"; if ($attrval->fetchAll($where)->count() > 0) { // 更新 $attrval->update($formval, $where); } else { $attrval->insert($formval); } } } // 操作记录 $data = array('type' => "files", 'table_name' => "oa_doc_files", 'table_id' => $id, 'handle_user' => $user, 'handle_time' => $now, 'action' => "编辑", 'ip' => $_SERVER['REMOTE_ADDR']); $record->insert($data); // 审核流程 // 删除已存在的审核记录 $review->delete("type='files' and file_id = " . $id); // 把阶段信息插入review记录 $first = true; foreach ($stepRows as $s) { $plan_user = $s['user']; if ($s['dept']) { $plan_dept = $s['dept']; // 根据角色id和项目号获取用户成员列表 $roleid = $s['dept']; $codeTmp = $employee->getAdapter()->query("select project_no from oa_doc_code where code = '{$code}'")->fetchObject(); $projectno = $codeTmp->project_no; // 如果不存在项目号,则直接取角色中的用户 否则根据角色id和项目号获取roleset id $tmpUser = array(); $tmpBool = true; if ($projectno) { // 根据角色id和项目号获取roleset id $rolesetTmp = $employee->getAdapter()->query("select group_concat(id) as id from oa_product_catalog_roleset where active=1 and catalog_id='{$projectno}' and role_id in ( " . $roleid . ")")->fetchObject(); $rolesetid = $rolesetTmp->id; if ($rolesetid) { $tmpBool = false; $userTmp = $employee->getAdapter()->query("select group_concat(user_id) as ids from oa_product_catalog_roleset_member where roleset_id in ( " . $rolesetid . ")")->fetchObject(); $tmpUser = explode(',', $userTmp->ids); // 如果没有取到用户,还是使用默认用户 if (count($tmpUser) == 0) { $tmpBool = true; } } } if ($tmpBool) { foreach (explode(',', $plan_dept) as $role) { $tmpRole = $member->getMemberWithNoManager($role); foreach ($tmpRole as $m) { $tmpUser[] = $m['user_id']; } } } if (count($tmpUser) == 0 && !$plan_user) { $tmpUser = $member->getUserids("系统管理员"); } // user id 转换成employee id if (count($tmpUser) > 0) { $tmpUser = $employee->getAdapter()->query("select group_concat(employee_id) as users from oa_user where active = 1 and id in ( " . implode(',', $tmpUser) . ")")->fetchObject(); $users = $tmpUser->users; } // 获取角色所有人员 // $tmpUser = $employee->getAdapter()->query("select group_concat(id) as ids from oa_employee where dept_id in ( " . $plan_dept . ")")->fetchObject(); if ($users) { if ($plan_user) { $plan_user .= ","; } $plan_user .= $users; } $repeatUser = explode(',', $plan_user); $repeatUser = array_unique($repeatUser); $plan_user = implode(',', $repeatUser); } $reviewData = array('type' => "files", 'file_id' => $id, 'plan_dept' => $s['dept'], 'plan_user' => $plan_user, 'method' => $s['method'], 'return' => $s['return'], 'step_name' => $s['step_name'], 'step_ename' => $s['step_ename']); $review->insert($reviewData); // 邮件任务 if ($first) { $to = $employee->getAdapter()->query("select group_concat(email) as mail_to from oa_employee where id in ( " . $plan_user . ")")->fetchObject(); $content = "你有文件升版需要审核,<p><b>文件号:</b>" . implode(',', $code_file_code) . "</p><p><b>版本:</b>" . implode(',', $vers) . "</p><p><b>升版原因:</b>" . $val->reason . "</p><p><b>备注:</b>" . $val->remark . "</p><p><b>申请人:</b>" . $user_name . "</p><p><b>申请时间:</b>" . $now . "</p><p>请登录系统查看详情!</p>"; $mailData = array('type' => '升版文件', 'subject' => '升版文件评审', 'to' => $to->mail_to, 'cc' => '', 'content' => $content, 'send_time' => $now, 'add_date' => $now); $mailId = $mail->insert($mailData); if ($mailId) { $mail->send($mailId); } } $first = false; } // 没有审批流程,旧版文件自动作废 if (!isset($state)) { $sids = array($id); if (isset($sids) && count($sids) > 0) { if (count($code_file_code) > 0) { $codes = array(); foreach ($code_file_code as $c) { $codes[] = $c; } } if (isset($codes) && count($codes) > 0) { for ($i = 0; $i < count($codes); $i++) { $codes[$i] = "'" . $codes[$i] . "'"; } } $obsoluteWhere = " id not in (" . implode(',', $sids) . ") and code in (" . implode(',', $codes) . ")"; } $obsoluteData = array("state" => "Obsolete"); if (isset($obsoluteWhere)) { $files->update($obsoluteData, $obsoluteWhere); } // 更改文件状态为归档 $uploadData = array("archive" => 1, "archive_time" => $now); $uploadWhere = "id in (" . implode(',', $code_file_file_id) . ")"; // 更新文件 $upload->update($uploadData, $uploadWhere); } } } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } echo Zend_Json::encode($result); exit; } else { $data = array('state' => isset($state) ? 'Reviewing' : 'Active', 'code' => implode(',', $code_file_code), 'name' => implode(',', $code_file_file), 'file_ids' => implode(',', $code_file_file_id), 'ver' => implode(',', $vers), 'description' => $code_file_desc, 'project_info' => implode(',', $code_file_project_no), 'remark' => $val->remark, 'tag' => $val->tag, 'create_time' => $now, 'create_user' => $user, 'update_time' => $now, 'update_user' => $user); try { $id = $files->insert($data); if ($id) { // 升版记录 $upgradeData = array('file_id' => $id, 'reason' => $val->reason, 'reason_type' => $val->reason_type, 'create_time' => $now, 'create_user' => $user, 'update_time' => $now, 'update_user' => $user); $upgrade->insert($upgradeData); // 自定义字段 $attrval = new Admin_Model_Formval(); foreach ($request as $field => $value) { if (stripos($field, "intelligenceField") !== false && $value) { $attrId = str_replace("intelligenceField", "", $field); $menu = 'oa_doc_files_' . $id; $formval = array('attrid' => $attrId, 'value' => $value, 'menu' => $menu); $attrval->insert($formval); } } // 操作记录 $data = array('type' => "files", 'table_name' => "oa_doc_files", 'table_id' => $id, 'handle_user' => $user, 'handle_time' => $now, 'action' => "申请", 'ip' => $_SERVER['REMOTE_ADDR']); $record->insert($data); // 审核流程 // 把阶段信息插入review记录 $first = true; foreach ($stepRows as $s) { $plan_user = $s['user']; if ($s['dept']) { $plan_dept = $s['dept']; // 根据角色id和项目号获取用户成员列表 $roleid = $s['dept']; $codeTmp = $employee->getAdapter()->query("select project_no from oa_doc_code where code = '{$code}'")->fetchObject(); $projectno = $codeTmp->project_no; // 如果不存在项目号,则直接取角色中的用户 否则根据角色id和项目号获取roleset id $tmpUser = array(); $tmpBool = true; if ($projectno) { // 根据角色id和项目号获取roleset id $rolesetTmp = $employee->getAdapter()->query("select group_concat(id) as id from oa_product_catalog_roleset where active=1 and catalog_id='{$projectno}' and role_id in ( " . $roleid . ")")->fetchObject(); $rolesetid = $rolesetTmp->id; if ($rolesetid) { $tmpBool = false; $userTmp = $employee->getAdapter()->query("select group_concat(user_id) as ids from oa_product_catalog_roleset_member where roleset_id in ( " . $rolesetid . ")")->fetchObject(); $tmpUser = explode(',', $userTmp->ids); // 如果没有取到用户,还是使用默认用户 if (count($tmpUser) == 0) { $tmpBool = true; } } } if ($tmpBool) { foreach (explode(',', $plan_dept) as $role) { $tmpRole = $member->getMemberWithNoManager($role); foreach ($tmpRole as $m) { $tmpUser[] = $m['user_id']; } } } if (count($tmpUser) == 0 && !$plan_user) { $tmpUser = $member->getUserids("系统管理员"); } // user id 转换成employee id if (count($tmpUser) > 0) { $tmpUser = $employee->getAdapter()->query("select group_concat(employee_id) as users from oa_user where active = 1 and id in ( " . implode(',', $tmpUser) . ")")->fetchObject(); $users = $tmpUser->users; } // 获取角色所有人员 // $tmpUser = $employee->getAdapter()->query("select group_concat(id) as ids from oa_employee where dept_id in ( " . $plan_dept . ")")->fetchObject(); if ($users) { if ($plan_user) { $plan_user .= ","; } $plan_user .= $users; } $repeatUser = explode(',', $plan_user); $repeatUser = array_unique($repeatUser); $plan_user = implode(',', $repeatUser); } $reviewData = array('type' => "files", 'file_id' => $id, 'plan_dept' => $s['dept'], 'plan_user' => $plan_user, 'method' => $s['method'], 'return' => $s['return'], 'step_name' => $s['step_name'], 'step_ename' => $s['step_ename']); $review->insert($reviewData); // 邮件任务 if ($first) { $to = $employee->getAdapter()->query("select group_concat(email) as mail_to from oa_employee where id in ( " . $plan_user . ")")->fetchObject(); $content = "你有文件升版需要审核,<p><b>文件号:</b>" . implode(',', $code_file_code) . "</p><p><b>版本:</b>" . implode(',', $vers) . "</p><p><b>升版原因:</b>" . $val->reason . "</p><p><b>备注:</b>" . $val->remark . "</p><p><b>申请人:</b>" . $user_name . "</p><p><b>申请时间:</b>" . $now . "</p><p>请登录系统查看详情!</p>"; $mailData = array('type' => '升版文件', 'subject' => '升版文件评审', 'to' => $to->mail_to, 'cc' => '', 'content' => $content, 'send_time' => $now, 'add_date' => $now); $mailId = $mail->insert($mailData); if ($mailId) { $mail->send($mailId); } } $first = false; } // 没有审批流程,旧版文件自动作废 if (!isset($state)) { $sids = array($id); if (isset($sids) && count($sids) > 0) { if (count($code_file_code) > 0) { $codes = array(); foreach ($code_file_code as $c) { $codes[] = $c; } } if (isset($codes) && count($codes) > 0) { for ($i = 0; $i < count($codes); $i++) { $codes[$i] = "'" . $codes[$i] . "'"; } } $obsoluteWhere = " id not in (" . implode(',', $sids) . ") and code in (" . implode(',', $codes) . ")"; } $obsoluteData = array("state" => "Obsolete"); if (isset($obsoluteWhere)) { $files->update($obsoluteData, $obsoluteWhere); } // 更改文件状态为归档 $uploadData = array("archive" => 1, "archive_time" => $now); $uploadWhere = "id in (" . implode(',', $code_file_file_id) . ")"; // 更新文件 $upload->update($uploadData, $uploadWhere); } } } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } echo Zend_Json::encode($result); exit; } }
/** * @abstract 添加文件编码 * @return null */ public function saveAction() { // 返回值数组 $result = array('success' => true, 'result' => true, 'info' => '申请成功'); $request = $this->getRequest()->getParams(); $now = date('Y-m-d H:i:s'); $user_session = new Zend_Session_Namespace('user'); $user = $user_session->user_info['employee_id']; $val = (object) $request; $code = new Dcc_Model_Code(); $type = new Dcc_Model_Type(); $db = $code->getAdapter(); if ($val->id) { // 编辑 if (isset($val->code) && $val->code) { $auto_code = $val->code; // 检查是否文件号已经存在 if ($code->fetchAll("id != " . $val->id . " and code = '" . $auto_code . "'")->count() > 0) { $result['result'] = false; $result['info'] = "文件编码“" . $val->code . "”已经存在"; echo Zend_Json::encode($result); exit; } } else { $auto_code = ""; } $data = array('code' => $auto_code, 'active' => isset($val->active) ? 1 : 0, 'project_no' => $val->project_no, 'project_standard_no' => isset($val->project_standard_no) ? $val->project_standard_no : "", 'description' => $val->description, 'remark' => $val->remark, 'update_time' => $now, 'update_user' => $user); try { $code->update($data, "id = " . $val->id); $result['info'] = "修改成功"; } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } else { // 检查是自动生成编码还是手动 $typedata = $db->query("select t2.automethod from oa_doc_type t1 inner join oa_doc_auto t2 on t1.autotype=t2.id where t1.state = 1 and t1.id = " . $val->prefix)->fetchObject(); if ($typedata && $typedata->automethod != 'H' && $typedata->automethod != 'A' && $typedata->automethod != 'F') { $auto_code = $this->getCode($val->prefix, $val->project_no); if (!$auto_code) { $result['result'] = false; $result['info'] = "文件编码获取失败"; echo Zend_Json::encode($result); exit; } } else { if ($typedata && $typedata->automethod == 'A' && (!isset($val->code) || !$val->code)) { $auto_code = ""; // 需发邮件 $mailId = ''; $type = "文件编码申请"; $subject = "文件号分配"; // $to = 文件管理员 $employee = new Hra_Model_Employee(); $member = new Admin_Model_Member(); $role = new Admin_Model_Role(); $toArr = array(); $roleArr = $role->getRoleIdByName('文件管理员'); $roleData = array(); if ($roleArr['role_id']) { $roleData = $member->getMember($roleArr['role_id']); } foreach ($roleData as $r) { if ($r['user_id'] == 1) { continue; } $toArr[] = $r['email']; } $to = implode(',', $toArr); if ($to) { $emp = $employee->getInfoById($user); $userName = ''; if (count($emp) > 0) { $userName = $emp[0]['cname']; } $user_name = $user_session->user_info['user_name']; $content = "<p>你有一个文件编码申请需要分配文件号</p>"; $content .= "<p><b>文件描述:</b>" . $val->description . "</p><p><b>备注:</b>" . $val->remark . "</p><p><b>申请人:</b>" . $user_name . "</p><p><b>申请时间:</b>" . $now . "</p><p>请登录系统查看详情!</p>"; $mailData = array('type' => $type, 'subject' => $subject, 'to' => $to, 'content' => $content, 'send_time' => $now, 'add_date' => $now); $mail = new Application_Model_Log_Mail(); try { $mailId = $mail->insert($mailData); } catch (Exception $e) { } if ($mailId) { $mail->send($mailId); } } } else { if ($typedata && $typedata->automethod == 'F' && (!isset($val->code) || !$val->code)) { // 流程 // 获取当前文件类别对应的流程ID $row = $type->getList("id='{$val->prefix}'"); $flow_id = ''; if ($row && count($row) > 0) { $flow_id = $row[0]['apply_flow_id']; } else { $result['info'] = "文件类型未设置审核流程"; echo Zend_Json::encode($result); exit; } // 根据流程ID获取阶段 $flow = new Admin_Model_Flow(); $step = new Admin_Model_Step(); $member = new Admin_Model_Member(); $employee = new Hra_Model_Employee(); $mail = new Application_Model_Log_Mail(); $record = new Dcc_Model_Record(); $review = new Dcc_Model_Review(); $flowRow = $flow->getRow($flow_id); $step_ids = $flowRow['step_ids']; if ($step_ids) { $data = array('prefix' => $val->prefix, 'code' => '', 'state' => 'Reviewing', 'active' => isset($val->active) ? 1 : 0, 'project_no' => $val->project_no, 'project_standard_no' => isset($val->project_standard_no) ? $val->project_standard_no : "", 'description' => $val->description, 'remark' => $val->remark, 'create_time' => $now, 'create_user' => $user, 'update_time' => $now, 'update_user' => $user); try { $id = $code->insert($data); $inserted = true; // 操作记录 $data = array('type' => "code_apply", 'table_name' => "oa_doc_code", 'table_id' => $id, 'handle_user' => $user, 'handle_time' => $now, 'action' => "申请", 'ip' => $_SERVER['REMOTE_ADDR']); $record->insert($data); } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } $stepRows = $step->getListByFlow($step_ids); $state = "Reviewing"; // 把阶段信息插入review记录 $first = true; foreach ($stepRows as $s) { $plan_user = $s['user']; if ($s['dept']) { $tmpUser = array(); $plan_dept = $s['dept']; foreach (explode(',', $plan_dept) as $role) { $tmpRole = $member->getMemberWithNoManager($role); foreach ($tmpRole as $m) { $tmpUser[] = $m['user_id']; } } if (count($tmpUser) == 0 && !$plan_user) { $tmpUser = $member->getUserids("系统管理员"); } if (count($tmpUser) > 0) { $tmpUser = $employee->getAdapter()->query("select group_concat(employee_id) as users from oa_user where active = 1 and id in ( " . implode(',', $tmpUser) . ")")->fetchObject(); $users = $tmpUser->users; } if ($users) { if ($plan_user) { $plan_user .= ","; } $plan_user .= $users; } } $repeatUser = explode(',', $plan_user); $repeatUser = array_unique($repeatUser); $plan_user = implode(',', $repeatUser); $reviewData = array('type' => "code_apply", 'file_id' => $id, 'plan_user' => $plan_user, 'method' => $s['method'], 'return' => $s['return'], 'step_name' => $s['step_name'], 'step_ename' => $s['step_ename']); $review->insert($reviewData); // 邮件任务 if ($first) { // 需发邮件 $mailId = ''; $type = "文件编码申请"; $subject = "文件编码申请审核"; $user_name = $user_session->user_info['user_name']; $to = $employee->getAdapter()->query("select group_concat(email) as mail_to from oa_employee where id in ( " . $plan_user . ")")->fetchObject(); $content = "<p>你有一个文件编码申请需要审核</p>"; $content .= "<p><b>文件描述:</b>" . $val->description . "</p><p><b>备注:</b>" . $val->remark . "</p><p><b>申请人:</b>" . $user_name . "</p><p><b>申请时间:</b>" . $now . "</p><p>请登录系统查看详情!</p>"; $mailData = array('type' => $type, 'subject' => $subject, 'to' => $to->mail_to, 'content' => $content, 'send_time' => $now, 'add_date' => $now); $mailId = $mail->insert($mailData); if ($mailId) { $mail->send($mailId); } } $first = false; } $result['info'] = "申请成功,已通知相关人员审核"; echo Zend_Json::encode($result); exit; } } else { $auto_code = $val->code; // 检查是否文件号已经存在 if ($auto_code && $code->fetchAll("code = '" . $auto_code . "'")->count() > 0) { $result['result'] = false; $result['info'] = "文件编码“" . $val->code . "”已经存在"; echo Zend_Json::encode($result); exit; } } } } $auto_code = strtoupper($auto_code); $data = array('prefix' => $val->prefix, 'code' => $auto_code, 'state' => isset($state) ? 'Reviewing' : 'Active', 'active' => isset($val->active) ? 1 : 0, 'project_no' => $val->project_no, 'project_standard_no' => isset($val->project_standard_no) ? $val->project_standard_no : "", 'description' => $val->description, 'remark' => $val->remark, 'create_time' => $now, 'create_user' => $user, 'update_time' => $now, 'update_user' => $user); try { $code->insert($data); if ($auto_code) { $result['info'] = "申请成功,文件编码:{$auto_code}"; } else { $result['info'] = "申请成功,请通知管理员分配文件编码"; } } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } echo Zend_Json::encode($result); exit; }
/** * @abstract 审核 * @return null */ public function reviewAction() { // 返回值数组 $result = array('success' => true, 'result' => true, 'info' => '审批成功'); $request = $this->getRequest()->getParams(); $now = date('Y-m-d H:i:s'); $user_session = new Zend_Session_Namespace('user'); $user = $user_session->user_info['employee_id']; $val = (object) $request; $record = new Dcc_Model_Record(); $review = new Dcc_Model_Review(); $employee = new Hra_Model_Employee(); $db = $employee->getAdapter(); $fadev = new Product_Model_Fadev(); $fa = new Product_Model_Fa(); $sondev = new Product_Model_Sondev(); $id = $val->id; $remark = $val->remark; $pass = $val->review_result; $type = $val->type; $publish = false; if ($type == 'new') { $table = "oa_product_bom_new"; $recordType = "bom"; $bomModel = new Product_Model_Newbom(); } else { if ($type == 'ECO') { $table = "oa_product_bom_eco"; $recordType = "ecobom"; $bomModel = new Product_Model_Updbom(); } else { if ($type == 'DEV') { $table = "oa_product_bom_dev"; $recordType = "devbom"; $bomModel = new Product_Model_Updbom(); } } } // 获取物料信息 $bomData = $bomModel->getOne($id); if (!$bomData) { $result['result'] = false; $result['info'] = "数据状态已改变"; echo Zend_Json::encode($result); exit; } $review_id = $bomData->review_id; // 获取当前审核情况 // 如果record记录被删除或状态已改变,报错 $reviewWhere = "id = {$review_id}"; $reviewRows = $review->getList($reviewWhere, $recordType); if (count($reviewRows) == 0 || !$type) { $result['result'] = false; $result['info'] = "非法数据"; echo Zend_Json::encode($result); exit; } $reviewRow = $reviewRows[0]; if ($reviewRow['finish_flg'] != 0) { $result['result'] = false; $result['info'] = "数据状态已改变"; echo Zend_Json::encode($result); exit; } $bomfaData = $fadev->fetchAll("type = '{$type}' and nid=" . $id)->toArray(); // 处理记录 $recordData = array("type" => $recordType, "table_name" => $table, "table_id" => $id, "handle_user" => $user, "handle_time" => $now, "action" => "审批", "result" => $pass == 1 ? "批准" : ($pass == 2 ? "拒绝" : "转审"), "ip" => $_SERVER['REMOTE_ADDR'], "remark" => $remark); // 增加记录 $record->insert($recordData); // 通过方式 $method = $reviewRow['method']; if ($pass == 1) { if ($method == 2) { // 任何一人处理即通过 $finish_flg = 1; $actual_user = $user; $finish_time = $now; } else { // 所有人都需要审核,检查是否所有人都已经审核 $plan_user = $reviewRow['plan_user']; $actual_user = $reviewRow['actual_user']; $actual_user = !$actual_user ? $user : $actual_user . "," . $user; // 检查计划审核人和实际审核人是否一致 if (strlen($plan_user) == strlen($actual_user)) { $finish_flg = 1; $finish_time = $now; } else { $finish_flg = 0; $finish_time = null; } } // 审核情况 $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg); } else { if ($pass == 3) { // 转审 $finish_flg = 0; if ($method == 2) { // 处理方式为任意时,一个人转审之后其他人员也删除 $plan_user = str_replace('E', '', $val->transfer_id); } else { // 更改审核情况中的审核人 $plan_users = explode(',', $reviewRow['plan_user']); for ($i = 0; $i < count($plan_users); $i++) { if ($plan_users[$i] == $user) { $plan_users[$i] = str_replace('E', '', $val->transfer_id); break; } } $plan_user = implode(',', $plan_users); } // 审核情况 $reviewData = array("plan_user" => $plan_user); } else { // 退回 $actual_user = null; $finish_time = null; $finish_flg = 0; // 退回选项 $return = $reviewRow['return']; if ($return == 2) { // 退到初始状态 // 需更新的审核记录: 所有 $reviewWhere = "type = '{$recordType}' and file_id = {$id}"; // 审核情况更新数据 $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg); // 文件状态不更新 } else { if ($return == 4) { // 退到本阶段开始 // 需更新的审核记录 $reviewWhere = "type = '{$recordType}' and finish_flg = 0 and file_id = {$id}"; // 审核情况更新数据 $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg); // 文件状态不更新 } else { if ($return == 3) { // 退到上一阶段 // 需更新的审核记录:最后一个finish_flg为1的数据和第一个finish_flg为0的数据 $last_1 = $first_0 = 0; foreach ($reviewRows as $r) { if ($r['finish_flg'] == 1) { $last_1 = $r['id']; } if ($r['finish_flg'] == 0 && $first_0 == null) { $first_0 = $r['id']; } } $reviewWhere = "id = {$last_1} or id = {$first_0}"; // 审核情况更新数据 $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg); // 文件状态不更新 } else { $fileWhere = "id = {$id}"; // 更新文件状态为退回 $mData = array("state" => "Return"); // 退到初始状态 // 更新所有record的finish_flg为0 $reviewWhere = "type = '{$recordType}' and file_id = {$id}"; // 审核情况 $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg); } } } } } // 如果所有record的记录的finish_flg 都为1,则发布 if ($finish_flg == 1 && $review->fetchAll("type = '{$recordType}' and finish_flg = 0 and file_id = {$id}")->count() == 1) { $publish = true; $mData = array("state" => "Active", "archive_time" => $now); $fileWhere = "id = {$id}"; $creater = $bomData['create_user']; // 如果是多个BOM,需要拆分 foreach ($bomfaData as $bomfa) { // 升版的情况,旧版作废 $facode = $bomfa['code']; if ($type != 'new') { $obsoleteData = array("state" => "Obsolete"); $obsoleteWhere = "code = '{$facode}' and recordkey != '" . $bomfa['recordkey'] . "'"; $fa->update($obsoleteData, $obsoleteWhere); } $recordkey = $bomfa['recordkey']; $sql = "insert into oa_product_bom_fa (nid, recordkey, id, code, project_no, bom_file, qty, state, ver, type, remark, create_user) select nid, recordkey, id, code, project_no, bom_file, qty, state, ver, type, remark, '{$creater}' from oa_product_bom_fa_dev where recordkey = {$recordkey}"; $db->query($sql); $sql = "insert into oa_product_bom_son (nid, recordkey, pid, id, code, qty, partposition, `replace`, remark) select nid, recordkey, pid, id, code, qty, partposition, `replace`, remark from oa_product_bom_son_dev where recordkey = {$recordkey}"; $db->query($sql); } } try { // 更新审核情况 $review->update($reviewData, $reviewWhere); // 更新BOM if (isset($fileWhere)) { $bomModel->update($mData, $fileWhere); } $this->operate("BOM审批"); } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } // 邮件任务 // 文件提交者或更新人 $owner = $bomData['create_user']; $dev = false; $boms = array(); foreach ($bomfaData as $fa) { if ($type == 'new') { $boms[] = $fa['code']; } else { $boms[] = $fa['code'] . " V" . $fa['ver']; } } $bomflg = "devbom"; if ($type == 'ECO') { $bomflg = "ecobom"; } if ($type == 'new') { $subject_type = "新BOM申请"; $content = "<b>BOM号:</b>" . implode(',', $boms) . "</p>" . "<p><b>描述:</b>" . $bomData['description'] . "</p>" . "<p><b>备注:</b>" . $bomData['remark'] . "</p>" . "<p><b>申请人:</b>" . $bomData['creater'] . "</p>" . "<p><b>申请时间:</b>" . $bomData['create_time'] . "</p>" . "<p>请登录系统查看详情!</p>"; } else { $subject_type = "BOM升版"; $reson_type = ""; if ($bomData['reason_type']) { $codemaster = new Admin_Model_Codemaster(); $mstData = $codemaster->getList("type=6 and code='" . $bomData['reason_type'] . "'"); if ($mstData && count($mstData) > 0) { $reson_type = $mstData[0]['text']; } } $content = "<b>BOM号:</b>" . implode(',', $boms) . "</p>" . "<p><b>升版类型:</b>" . $bomData['upd_type'] . "</p>" . "<p><b>升版原因分类:</b>" . $reson_type . "</p>" . "<p><b>升版原因:</b>" . $bomData['upd_reason'] . "</p>" . "<p><b>升版描述:</b>" . $bomData['description'] . "</p>" . "<p><b>备注:</b>" . $bomData['remark'] . "</p>" . "<p><b>申请人:</b>" . $bomData['creater'] . "</p>" . "<p><b>申请时间:</b>" . $bomData['create_time'] . "</p>" . "<p>请登录系统查看详情!</p>"; } $content = "<p><b>BOM号:</b>" . implode(',', $boms) . "</p><p><b>版本:</b>1.0</p><p><b>描述:</b>" . $bomData['description'] . "</p><p><b>备注:</b>" . $bomData['remark'] . "</p><p><b>申请人:</b>" . $bomData['creater'] . "</p><p><b>申请时间:</b>" . $bomData['create_time'] . "</p><p>请登录系统查看详情!</p>"; // 发邮件的情况: // 1、单站审核结束 $finish_flg = 1 && $publish = false if ($finish_flg == 1 && !$publish) { $subject = $subject_type . "审批"; // $to = 下一站审核人 $current = $review->getCurrent($bomflg, $id); $to = $employee->getInfosByOneLine($current['plan_user']); // $cc = $employee->getInfosByOneLine($owner); $cc = $cc['email']; $content = "你有一个" . $subject_type . "需要审批,{$content}"; } // 2、所有审核结束 $publish = true if ($publish) { $subject = $subject_type . "发布"; $to = $employee->getInfosByOneLine($owner); $cc = $employee->getInfosByOneLine($record->getEmployeeIds($bomData['id'], 'bom')); $cc = $cc['email']; $content .= "<hr><p><b>审核记录:</b><br>" . str_replace(',', '<br>', $record->getHis($bomData['id'], $bomflg)) . "</p>"; $content = "你申请的" . $subject_type . "已通过审批,{$content}"; } // 3、退回 isset($return) if (isset($return)) { $subject = $subject_type . "退回"; $to = $employee->getInfosByOneLine($owner); $cc = ""; // 原审核人 if ($reviewRow['plan_user']) { $orgUser = $reviewRow['plan_user']; $cc = $employee->getInfosByOneLine($orgUser); $cc = $cc['email']; } $content = "你申请的" . $subject_type . "已被退回,<p><b>退回原因:</b>" . $remark . "</p>,{$content}"; } // 4、转审 $pass == 3 if ($pass == 3) { $subject = $subject_type . "转审"; $toUser = str_replace('E', '', $val->transfer_id); $to = $employee->getInfosByOneLine($toUser); // 原审核人 if ($reviewRow['plan_user']) { $orgUser = $reviewRow['plan_user']; $owner .= "," . $orgUser; } $cc = $employee->getInfosByOneLine($owner); $cc = $cc['email']; $content = "有新的" . $subject_type . "被转移到你处审批,{$content}"; } if (isset($subject)) { $mailData = array('type' => $subject_type, 'subject' => $subject, 'to' => $to['email'], 'cc' => $cc, 'content' => $content, 'send_time' => $now, 'add_date' => $now); $mail = new Application_Model_Log_Mail(); try { $mailId = $mail->insert($mailData); } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } if ($mailId) { $mail->send($mailId); } } echo Zend_Json::encode($result); exit; }