Index.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. namespace app\controller;
  3. use app\BaseController;
  4. use app\common\array2xml;
  5. use think\facade\Config;
  6. use think\facade\Db;
  7. use think\facade\Cache;
  8. class Index extends BaseController
  9. {
  10. public function index()
  11. {
  12. phpinfo();
  13. }
  14. public function hello($name = 'ThinkPHP6')
  15. {
  16. return 'hello,' . $name;
  17. }
  18. public function getReport()
  19. {
  20. $code = $_REQUEST['code'];
  21. $type = $_REQUEST['type'];
  22. libxml_disable_entity_loader(false);
  23. // $client = new \SoapClient("http://report.dalabs.cn/RasClientDetail.asmx?wsdl");
  24. $client = new \SoapClient("http://115.238.253.166/RasClientDetail.asmx?wsdl");
  25. $data = [
  26. 'ClientID'=>Config::get('app')['dian']['ClientID'],
  27. 'ClientGUID'=>Config::get('app')['dian']['ClientGUID'],
  28. 'hospBarcode'=>$code,
  29. 'SelectType'=>$type
  30. ]; //请求参数
  31. Db::table('api_log')->insert(['type'=>1,'barcode'=>$code]);
  32. try{
  33. $result = $client->GetDetailDataByHospBarcode3($data); //请求获取接口
  34. Db::table('api_log')->insert(['type'=>2,'barcode'=>$code]);
  35. $data = ((array)$result)['GetDetailDataByHospBarcode3Result'];
  36. $obj = simplexml_load_string("<data>".$data."</data>","SimpleXMLElement", LIBXML_NOCDATA);
  37. if($obj)
  38. {
  39. $info = json_decode(json_encode($obj),true);
  40. $returnCode = $info['Error']['Code'];
  41. if($returnCode !== '0')
  42. {
  43. return '报告获取失败!迪安回传信息:'.$info['Error']['Descript'];
  44. }
  45. }
  46. $report = json_encode($obj);
  47. DB::table('dianapiinfo')->where('Barcode',$code)->update(['result_xml'=>$report]);
  48. $this->getPdf($code);
  49. return 'success';
  50. }catch(\SoapFault $e){
  51. return $e->getMessage();
  52. }
  53. }
  54. public function getPdf($code)
  55. {
  56. $type = 1;
  57. libxml_disable_entity_loader(false);
  58. $client = new \SoapClient("https://r.dalabs.cn/ReportService.asmx?wsdl");
  59. $data = [
  60. 'ClientID'=>Config::get('app')['dian']['ClientID'],
  61. 'ClientGUID'=>Config::get('app')['dian']['ClientGUID'],
  62. 'BarCode'=>$code,
  63. 'model'=>$type
  64. ]; //请求参数
  65. try{
  66. $result = $client->GetReportInfo($data); //请求获取接口
  67. Db::table('dianapiinfo')->where('Barcode',$code)->update(['pdf_xml'=>$result]);
  68. $data = ((array)$result)['GetReportInfoResult'];
  69. $obj = simplexml_load_string("<data>".$data."</data>","SimpleXMLElement", LIBXML_NOCDATA);
  70. Db::table('api_log')->insert(['type'=>4,'barcode'=>$code]);
  71. if($obj)
  72. {
  73. $info = json_decode(json_encode($obj),true);
  74. $returnCode = $info['Msg']['Code'];
  75. if($returnCode !== '1')
  76. {
  77. return '报告PDF获取失败!迪安回传信息:'.$info['Msg']['Descript'];
  78. }
  79. if(isset($info['NewDataSet']['Table1']['BARCODE']))
  80. {
  81. $pdf = $info['NewDataSet']['Table1']['PDFREPORTURL'];
  82. $name = $info['NewDataSet']['Table1']['BARCODE'];
  83. $this->downImgRar($pdf,$name,'pdf',$info['NewDataSet']['Table1']['BARCODE']);
  84. }else{
  85. foreach ($info['NewDataSet']['Table1'] as $k=>$v)
  86. {
  87. $pdf = $v['PDFREPORTURL'];
  88. $name = $v['BARCODE'].'_'.($k+1);
  89. $this->downImgRar($pdf,$name,'pdf',$v['BARCODE']);
  90. }
  91. }
  92. }
  93. return 'success';
  94. }catch(\SoapFault $e){
  95. return $e->getMessage();
  96. }
  97. }
  98. function downImgRar($url,$rename,$ext,$barCode){
  99. switch ($ext) {
  100. case 'png':
  101. case 'jpg': //下载图片
  102. $file_path = '/images/';
  103. break;
  104. case 'pdf': //下载PDF
  105. $file_path = '/pdf/';
  106. break;
  107. case 'zip':
  108. case 'rar': //下载压缩包
  109. $file_path = '/rar/';
  110. break;
  111. default:
  112. $file_path = '/files/';
  113. break;
  114. }
  115. $ch = curl_init($url);
  116. curl_setopt($ch, CURLOPT_HEADER, 0);
  117. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  118. curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
  119. $rawdata=curl_exec ($ch);
  120. curl_close ($ch);
  121. // 使用中文文件名需要转码
  122. file_put_contents($_SERVER['DOCUMENT_ROOT'].$file_path.$rename.'.'.$ext,$rawdata);
  123. // 返回路径
  124. $path = $_SERVER['DOCUMENT_ROOT'].$file_path.$rename.".".$ext;
  125. $ins = ['type'=>$ext,'url'=>$path,'barcode'=>$barCode];
  126. Db::table('annex')->insert($ins);
  127. $patientId = Db::table('dianapiinfo')->where('Barcode',$barCode)->value('patientId');
  128. Db::table('phy_lis_reports')->where('patientId',$patientId)->update(['is_report_url'=>1]);
  129. return 'success';
  130. }
  131. }