getPdf('12206060840002'); // phpinfo(); } public function hello($name = 'ThinkPHP6') { return 'hello,' . $name; } public function getReport() { $code = $_REQUEST['code']; $type = $_REQUEST['type']; libxml_disable_entity_loader(false); // $client = new \SoapClient("http://report.dalabs.cn/RasClientDetail.asmx?wsdl"); $client = new \SoapClient("http://115.238.253.166/RasClientDetail.asmx?wsdl"); $data = [ 'ClientID'=>Config::get('app')['dian']['ClientID'], 'ClientGUID'=>Config::get('app')['dian']['ClientGUID'], 'hospBarcode'=>$code, 'SelectType'=>$type ]; //请求参数 Db::table('api_log')->insert(['type'=>1,'barcode'=>$code]); try{ $result = $client->GetDetailDataByHospBarcode3($data); //请求获取接口 Db::table('api_log')->insert(['type'=>2,'barcode'=>$code]); $data = ((array)$result)['GetDetailDataByHospBarcode3Result']; $obj = simplexml_load_string("".$data."","SimpleXMLElement", LIBXML_NOCDATA); if($obj) { $info = json_decode(json_encode($obj),true); $returnCode = $info['Error']['Code']; if($returnCode !== '0') { return '报告获取失败!迪安回传信息:'.$info['Error']['Descript']; } } $report = json_encode($obj); DB::table('dianapiinfo')->where('Barcode',$code)->update(['result_xml'=>$report]); $this->getPdf($code); return 'success'; }catch(\SoapFault $e){ return $e->getMessage(); } } public function getPdf($code) { $type = 1; libxml_disable_entity_loader(false); $client = new \SoapClient("https://r.dalabs.cn/ReportService.asmx?wsdl"); $data = [ 'ClientID'=>Config::get('app')['dian']['ClientID'], 'Key'=>Config::get('app')['dian']['ClientGUID'], 'PageNO'=>1, 'condition'=>[ 'ClinicID'=>$code, 'StartDate'=>'', 'EndDate'=>'' ], 'Model'=>1 ]; //请求参数 // try{ $a2x = new array2xml(); $data = $a2x->toXml($data); // var_dump(htmlspecialchars($data)); // var_dump($data); $result = $client->QueryReports2(array('ReqInfo'=>$data)); //请求获取接口 var_dump($result);die; Db::table('dianapiinfo')->where('Barcode',$code)->update(['pdf_xml'=>$result]); $data = ((array)$result)['GetReportInfoResult']; $obj = simplexml_load_string("".$data."","SimpleXMLElement", LIBXML_NOCDATA); Db::table('api_log')->insert(['type'=>4,'barcode'=>$code]); if($obj) { $info = json_decode(json_encode($obj),true); $returnCode = $info['Msg']['Code']; if($returnCode !== '1') { return '报告PDF获取失败!迪安回传信息:'.$info['Msg']['Descript']; } if(isset($info['NewDataSet']['Table1']['BARCODE'])) { $pdf = $info['NewDataSet']['Table1']['PDFREPORTURL']; $name = $info['NewDataSet']['Table1']['BARCODE']; $this->downImgRar($pdf,$name,'pdf',$info['NewDataSet']['Table1']['BARCODE']); }else{ foreach ($info['NewDataSet']['Table1'] as $k=>$v) { $pdf = $v['PDFREPORTURL']; $name = $v['BARCODE'].'_'.($k+1); $this->downImgRar($pdf,$name,'pdf',$v['BARCODE']); } } } return 'success'; // }catch(\SoapFault $e){ // return $e->getMessage(); // } } function downImgRar($url,$rename,$ext,$barCode){ switch ($ext) { case 'png': case 'jpg': //下载图片 $file_path = '/images/'; break; case 'pdf': //下载PDF $file_path = '/pdf/'; break; case 'zip': case 'rar': //下载压缩包 $file_path = '/rar/'; break; default: $file_path = '/files/'; break; } $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); $rawdata=curl_exec ($ch); curl_close ($ch); // 使用中文文件名需要转码 file_put_contents($_SERVER['DOCUMENT_ROOT'].$file_path.$rename.'.'.$ext,$rawdata); // 返回路径 $path = $_SERVER['DOCUMENT_ROOT'].$file_path.$rename.".".$ext; $ins = ['type'=>$ext,'url'=>$path,'barcode'=>$barCode]; Db::table('annex')->insert($ins); $patientId = Db::table('dianapiinfo')->where('Barcode',$barCode)->value('patientId'); Db::table('phy_lis_reports')->where('patientId',$patientId)->update(['is_report_url'=>1]); return 'success'; } }