Пример #1
0
 /**
  * 获取文件编码及文件信息
  */
 public function getfilesbyidAction()
 {
     // 获取参数
     $request = $this->getRequest()->getParams();
     $id = $request['id'];
     $user_session = new Zend_Session_Namespace('user');
     $user = $user_session->user_info['employee_id'];
     $myDept = $user_session->user_info['dept_id'];
     $nowDate = date('Y-m-d');
     $files = new Dcc_Model_Files();
     $record = new Dcc_Model_Record();
     $upload = new Dcc_Model_Upload();
     $codeModel = new Dcc_Model_Code();
     $share = new Dcc_Model_Share();
     $review = new Dcc_Model_Review();
     $modelUser = new Application_Model_User();
     $data = $files->getDataById($id);
     // [id, code, ver, file_id, file_name, file_path, file_view_path]
     $result = array();
     $row0 = $data[0];
     $names = explode(',', $row0['name']);
     $codes = explode(',', $row0['code']);
     $vers = explode(',', $row0['ver']);
     $description = explode('|', $row0['description']);
     $project_info = explode(',', $row0['project_info']);
     $final_codes = array();
     $final_vers = array();
     $final_names = array();
     $final_descs = array();
     $final_projs = array();
     $k = 0;
     for ($i = 0; $i < count($names); $i++) {
         $sub_names = explode('|', $names[$i]);
         $final_codes[$k] = $codes[$i];
         $final_vers[$k] = $vers[$i];
         if (isset($description[$i]) && $description[$i]) {
             $final_descs[$k] = $description[$i];
         } else {
             $final_descs[$k] = "";
         }
         if (isset($project_info[$i]) && $project_info[$i]) {
             $final_projs[$k] = $project_info[$i];
         } else {
             $final_projs[$k] = "";
         }
         $final_names[$k] = $sub_names[0];
         $k++;
         for ($j = 1; $j < count($sub_names); $j++) {
             $final_codes[$k] = $codes[$i];
             $final_vers[$k] = $vers[$i];
             $final_names[$k] = $sub_names[$j];
             if (isset($description[$i]) && $description[$i]) {
                 $final_descs[$k] = $description[$i];
             } else {
                 $final_descs[$k] = "";
             }
             if (isset($project_info[$i]) && $project_info[$i]) {
                 $final_projs[$k] = $project_info[$i];
             } else {
                 $final_projs[$k] = "";
             }
             $k++;
         }
     }
     $catalog = new Product_Model_Catalog();
     for ($i = 0; $i < count($data); $i++) {
         $paths = $this->getPathByName($data, trim($final_names[$i]));
         $row = $data[$i];
         $result[$i]['id'] = $row['id'];
         $result[$i]['state'] = $row['state'];
         if ($final_descs[$i]) {
             $result[$i]['description'] = $final_descs[$i];
         } else {
             // 获取描述
             $descData = $codeModel->getJoinList("code = '{$final_codes[$i]}'", array(), array('description', 'project_no'));
             if (count($descData) > 0) {
                 $result[$i]['description'] = $descData[0]['description'];
                 if (!$final_projs[$i]) {
                     $final_projs[$i] = $descData[0]['project_no'];
                 }
             }
         }
         $result[$i]['project_no'] = $final_projs[$i];
         if ($final_projs[$i]) {
             $projData = $catalog->getById($final_projs[$i]);
             if ($projData && $projData['model_internal']) {
                 $result[$i]['project_name'] = $projData['model_internal'];
             }
         }
         $result[$i]['code'] = $final_codes[$i];
         $result[$i]['ver'] = $final_vers[$i];
         $result[$i]['file_id'] = $paths[0];
         $result[$i]['file_name'] = $final_names[$i];
         $result[$i]['file_path'] = $paths[1];
         $result[$i]['file_view_path'] = $paths[2];
         // 权限检查
         // 有权限的情况:1、本人上传的文件 2、本人提交的文件评审 3、本人参与审核的文件评审 4、共享给我的 5、将要审核的审核人 6、文件管理员、BOM管理员、物料管理员
         // 首先检查文件是否存在
         $result[$i]['exists'] = true;
         if (!file_exists($paths[1])) {
             $result[$i]['exists'] = false;
         }
         $role = false;
         if ($modelUser->checkPermissionByRoleName('物料管理员') || $modelUser->checkPermissionByRoleName('文件管理员') || $modelUser->checkPermissionByRoleName('系统管理员') || $modelUser->checkPermissionByRoleName('BOM管理员')) {
             $role = true;
         } else {
             if ($row0['create_user'] == $user || $row0['update_user'] == $user) {
                 $role = true;
             } else {
                 if ($record->fetchAll("table_id = {$id} and handle_user = {$user} and table_name = 'oa_doc_files' and action = '审批'")->count() > 0) {
                     $role = true;
                 } else {
                     if ($upload->fetchAll("id = " . $row['id'] . " and (create_user = {$user} or update_user = {$user})")->count() > 0) {
                         $role = true;
                     } else {
                         if ($share->fetchAll("shared_id = " . $row['id'] . " and type = 'upload' and share_time_begin <= '{$nowDate}' and share_time_end >= '{$nowDate}'  and (FIND_IN_SET({$user}, share_user) or FIND_IN_SET({$myDept}, share_dept))")->count() > 0) {
                             $role = true;
                         } else {
                             if ($review->fetchAll("file_id = {$id} and FIND_IN_SET({$user}, plan_user) and type = 'files'")->count() > 0) {
                                 $role = true;
                             }
                         }
                     }
                 }
             }
         }
         $result[$i]['role'] = $role;
     }
     echo Zend_Json::encode($result);
     exit;
 }
Пример #2
0
 /**
  * @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;
     $files = new Dcc_Model_Files();
     $review = new Dcc_Model_Review();
     $code = new Dcc_Model_Code();
     $upgrade = new Dcc_Model_Upgrade();
     // 新增还是编辑
     if ($val->id) {
         // 判断此次版本是否已存在
         if ($files->fetchAll("id != {$val->id} and ver = '" . $val->ver . "' and code = '" . $val->code . "'")->count() > 0) {
             $result['result'] = false;
             $result['info'] = "文件“" . $val->code . "”的" . $val->ver . "版本已经存在";
             echo Zend_Json::encode($result);
             exit;
         }
         $result['info'] = '修改成功';
         $data = array('state' => $val->state, 'code' => $val->code, 'ver' => $val->ver, 'name' => $val->name, 'file_ids' => $val->file_ids, 'description' => $val->description, 'project_info' => $val->project_info, 'send_require' => isset($val->send_require) ? 1 : 0, 'remark' => $val->remark, 'tag' => $val->tag, 'archive_time' => $val->archive_time, 'update_time' => $now, 'update_user' => $user);
         $id = $val->id;
         $where = "id = " . $id;
         $up = false;
         if ($val->ver && $val->ver > 1.0) {
             $up = true;
             // 修改升版记录
             $upgradeData = array('reason' => $val->reason, 'reason_type' => $val->reason_type, 'update_time' => $now, 'update_user' => $user);
             $upgradeWhere = "file_id = {$id}";
         }
         // 更新旧版文件的状态为已作废
         if ($val->ver != '1.0' && $val->state == 'Active') {
             $obsoluteWhere = "ver < '" . $val->ver . "' and code = '" . $val->code . "'";
             $obsoluteData = array("state" => "Obsolete");
         }
         $projectData = array("project_no" => $val->project_no);
         $projectWhere = "code= '" . $val->code . "'";
         try {
             if (isset($obsoluteData) && isset($obsoluteWhere)) {
                 $files->update($obsoluteData, $obsoluteWhere);
             }
             if ($up) {
                 $upgrade->update($upgradeData, $upgradeWhere);
             }
             $files->update($data, $where);
             $code->update($projectData, $projectWhere);
             if ($val->state == 'Active' && isset($val->file_ids) && $val->file_ids != "") {
                 // 更新文件状态为已归档
                 $uploadData = array("archive" => 1, "archive_time" => $now);
                 $upload = new Dcc_Model_Upload();
                 // 获取上传文件id
                 $ids = $val->file_ids;
                 $uploadWhere = "id in ({$ids})";
                 $upload->update($uploadData, $uploadWhere);
             }
             if ($val->state == 'Return') {
                 // 更改review状态
                 // 需更新的审核记录: 所有
                 $reviewWhere = "type = 'files' and file_id = {$id}";
                 // 审核情况更新数据
                 $reviewData = array("actual_user" => "", "finish_time" => null, "finish_flg" => 0);
                 $review->update($reviewData, $reviewWhere);
             }
             if ($id) {
                 $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);
                         }
                     }
                 }
                 $record = new Dcc_Model_Record();
                 // 操作记录
                 $data = array('type' => "files", 'table_name' => "oa_doc_files", 'table_id' => $id, 'handle_user' => $user, 'handle_time' => $now, 'action' => "编辑", 'ip' => $_SERVER['REMOTE_ADDR'], 'remark' => isset($request['edit_info']) ? $request['edit_info'] : '');
                 $record->insert($data);
             }
         } catch (Exception $e) {
             $result['result'] = false;
             $result['info'] = $e->getMessage();
             echo Zend_Json::encode($result);
             exit;
         }
         echo Zend_Json::encode($result);
         exit;
     } else {
         // 判断此次版本是否已存在
         if ($files->fetchAll("ver = " . $val->ver . " and code = '" . $val->code . "'")->count() > 0) {
             $result['result'] = false;
             $result['info'] = "文件“" . $val->code . "”的" . $val->ver . "版本已经存在";
             echo Zend_Json::encode($result);
             exit;
         }
         $data = array('state' => $val->state, 'code' => $val->code, 'ver' => $val->ver, 'name' => $val->name, 'file_ids' => $val->file_ids, 'description' => $val->description, 'project_info' => $val->project_info, 'send_require' => isset($val->send_require) ? 1 : 0, 'remark' => $val->remark, 'tag' => $val->tag, 'archive_time' => $val->archive_time, 'create_time' => $now, 'create_user' => $user, 'update_time' => $now, 'update_user' => $user);
         // 更新旧版文件的状态为已作废
         if ($val->ver != '1.0' && $val->state == 'Active') {
             $obsoluteWhere = "ver < '" . $val->ver . "' and code = '" . $val->code . "'";
             $obsoluteData = array("state" => "Obsolete");
         }
         try {
             $id = $files->insert($data);
             if ($id && $val->ver && $val->ver > 1.0) {
                 // 升版记录
                 $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);
             }
             if (isset($obsoluteData) && isset($obsoluteWhere)) {
                 $files->update($obsoluteData, $obsoluteWhere);
             }
             if (isset($val->file_ids) && $val->file_ids != "") {
                 // 更新文件状态为已归档
                 $uploadData = array("archive" => 1);
                 $upload = new Dcc_Model_Upload();
                 // 获取上传文件id
                 $ids = $val->file_ids;
                 $uploadWhere = "id in ({$ids})";
                 $upload->update($uploadData, $uploadWhere);
             }
             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);
                     }
                 }
                 $record = new Dcc_Model_Record();
                 // 操作记录
                 $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);
             }
         } catch (Exception $e) {
             $result['result'] = false;
             $result['info'] = $e->getMessage();
             echo Zend_Json::encode($result);
             exit;
         }
         echo Zend_Json::encode($result);
         exit;
     }
 }
Пример #3
0
 /**
  * 保存文件编码
  */
 public function savecodeAction()
 {
     $request = $this->getRequest();
     $id = $request->getParam('id');
     $code = $request->getParam('code');
     if ($id && $code) {
         $code = strtoupper($code);
         // 检查文件编码是否已经存在
         $codeModel = new Dcc_Model_Code();
         $data = $codeModel->fetchAll("code = '{$code}'")->toArray();
         if ($data && count($data) > 0) {
             $result['success'] = false;
             $result['info'] = "文件编码已存在!";
             echo Zend_Json::encode($result);
             exit;
         }
         $now = date('Y-m-d H:i:s');
         $user_session = new Zend_Session_Namespace('user');
         $user = $user_session->user_info['employee_id'];
         $data = array('code' => $code, 'state' => 'Active', 'update_user' => $user, 'update_time' => $now);
         $where = "id = " . $id;
         $codeData = $codeModel->getById($id);
         try {
             $codeModel->update($data, $where);
             $record = new Dcc_Model_Record();
             $review = new Dcc_Model_Review();
             // 处理记录
             $recordData = array("type" => "code_apply", "table_name" => "oa_doc_code", "table_id" => $id, "handle_user" => $user, "handle_time" => $now, "action" => "审批", "result" => '批准', "ip" => $_SERVER['REMOTE_ADDR']);
             // 增加记录
             $record->insert($recordData);
             // 审核情况
             $reviewData = array("actual_user" => $user, "finish_time" => $now, "finish_flg" => 1);
             $review->update($reviewData, "type='code_apply' and file_id = " . $id);
             // 发邮件
             $type = "文件编码申请";
             $subject = "文件编码申请审核";
             $user_name = $user_session->user_info['user_name'];
             $to = $codeModel->getAdapter()->query("select group_concat(email) as mail_to from oa_employee where id =(select create_user from oa_doc_code where id = {$id})")->fetchObject();
             $content = "<p>你有一个文件编码申请已分配,文件号:{$code}</p>";
             $content .= "<p><b>文件描述:</b>" . $codeData['description'] . "</p><p><b>备注:</b>" . $codeData['remark'] . "</p><p><b>申请时间:</b>" . $codeData['create_time'] . "</p><p>请登录系统查看详情!</p>";
             $mailData = array('type' => $type, 'subject' => $subject, 'to' => $to->mail_to, 'content' => $content, 'send_time' => $now, 'add_date' => $now);
             $mail = new Application_Model_Log_Mail();
             $mailId = $mail->insert($mailData);
             if ($mailId) {
                 $mail->send($mailId);
             }
             $result['success'] = true;
             $result['info'] = '分配成功';
             echo Zend_Json::encode($result);
             exit;
         } catch (Exception $e) {
             $result['success'] = false;
             $result['info'] = $e->getMessage();
             echo Zend_Json::encode($result);
             exit;
         }
     }
 }
Пример #4
0
 /**
  * @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;
     }
 }
Пример #5
0
 public function getfilecodeAction()
 {
     $request = $this->getRequest()->getParams();
     $whereSearch = "1=1";
     foreach ($request as $k => $v) {
         if ($v) {
             if ($k == "search_state") {
                 continue;
             }
             $col = str_replace('search_', '', $k);
             if ($col != $k) {
                 // 查询条件
                 $whereSearch .= " and ifnull(t1." . $col . ",'') like '%" . $v . "%'";
             }
         }
     }
     $filecode = new Dcc_Model_Code();
     $data = $filecode->getArchivedCode($whereSearch);
     for ($i = 0; $i < count($data); $i++) {
         $data[$i]['create_time'] = strtotime($data[$i]['create_time']);
         $data[$i]['update_time'] = strtotime($data[$i]['update_time']);
         $data[$i]['active'] = $data[$i]['active'] == 1 ? true : false;
     }
     // 转为json格式并输出
     echo Zend_Json::encode($data);
     exit;
 }