public function import(){ if($this->request->isPost()){ $apply_file = $this->request->post('apply_file_url'); //$orgcode = $this->request->post('orgcode'); if (!$apply_file) { $this->error('请上传数据文件'); } $filePath = ROOT_PATH . DS . 'public' . DS . $apply_file; if (!is_file($filePath)) { $this->error('找不到数据文件,请重新上传'); } $PHPReader = new \PHPExcel_Reader_Excel2007(); if (!$PHPReader->canRead($filePath)) { $PHPReader = new \PHPExcel_Reader_Excel5(); if (!$PHPReader->canRead($filePath)) { $PHPReader = new \PHPExcel_Reader_CSV(); if (!$PHPReader->canRead($filePath)) { $this->error('文件类型不合法'); } } } $PHPExcel = $PHPReader->load($filePath); //加载文件 $currentSheet = $PHPExcel->getSheet(0); //读取文件中的第一个工作表 $allColumn = $currentSheet->getHighestDataColumn(); //取得最大的列号 $allRow = $currentSheet->getHighestRow(); //取得一共有多少行 $errorMsg = []; $successMsg = []; $count=0; for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) { //遍历行 //学员信息 $user_data = []; //手机号和邮箱和线下成绩不能同时为空 $card = trim($currentSheet->getCellByColumnAndRow(0, $currentRow)->getValue()); $certname = trim($currentSheet->getCellByColumnAndRow(1, $currentRow)->getValue()); $score = trim($currentSheet->getCellByColumnAndRow(2, $currentRow)->getValue()); $orgname = trim($currentSheet->getCellByColumnAndRow(3, $currentRow)->getValue()); //身份证和证书都不能为空 if (empty($card) || empty($certname) || empty($score) || empty($orgname)) { $errorMsg[] = '第'.$currentRow.'行未导入,身份证和证书和线下成绩,机构都不能为空!'; continue; } //查询机构code //如果有2个机构则不导入当前数据 $orgList = $this->SysOrganizationModel->where(array('name'=>$orgname,'status'=>1))->select(); if(count($orgList) > 1){ $errorMsg[] = '第'.$currentRow.'行未导入,机构有多个,请禁用掉不需要的机构!'; continue; } $orgcode = $this->SysOrganizationModel->where(array('name'=>$orgname,'status'=>1))->value('code'); if(empty($orgcode)){ $errorMsg[] = '第'.$currentRow.'行未导入,机构不存在!'; continue; } //认证信息是否存在 $authResult = $this->ucAuthModel->where('card',$card)->find(); if(empty($authResult)){ $errorMsg[] = '第'.$currentRow.'行未导入,认证信息不存在!'; continue; } //证书信息是否存在 $certResult = $this->baseCertificateModel->where(array('name'=>$certname))->find(); if(empty($certResult)){ $errorMsg[] = '第'.$currentRow.'行未导入,证书不存在!'; continue; } //查询user_cert表,一个人只能报考一次同一个证书,UNIQUE KEY `certId_2` (`certId`,`studentId`), $exist = $this->ucStudentCertModel->where(array('studentId'=>$authResult['userId'],'certId'=>$certResult['id']))->find(); if(!empty($exist)){ $errorMsg[] = '第'.$currentRow.'行未导入,该用户已存在该证书关系!'; continue; }else{ $userResult = $this->userModel->where('id',$authResult['userId'])->find(); //写入cert表数据 $ucdata = array( "certId" => $certResult['id'], ... ... ); $result =$this->ucStudentCertModel->insert($ucdata); if(empty($result)){ $errorMsg[] = '第'.$currentRow.'行未导入,请检查数据后重新导入!'; continue; }else{ //写入线下成绩 $addData = array( 'userId' =>$authResult['userId'], 'certId'=>$certResult['id'], 'score'=>$score, 'addUser'=>$_SESSION['think']['admin']['id'], 'addTime'=>time() ); $scoreResult = $this->baseCertificateNeedModel->insert($addData); if ($scoreResult){ $count++; } if(empty($scoreResult)){ $errorMsg[] = '第'.$currentRow.'行未导入,请检查数据后重新导入!'; continue; } } } } $successMsg[]=' 成功导入'.$count.'条'; $this->success('', null, ['errorMsg'=>$errorMsg,'successMsg'=>$successMsg]); }else{ //查询所有的机构 $orgList = $this->SysOrganizationModel->where(array('status'=>1))->select(); $this->view->assign('orgList',$orgList); return $this->view->fetch(); } }
fastadmin导入excel文件
最新推荐文章于 2024-06-03 11:17:17 发布