Index.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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. $data = ((array)$result)['GetReportInfoResult'];
  68. $obj = simplexml_load_string("<data>".$data."</data>","SimpleXMLElement", LIBXML_NOCDATA);
  69. if($obj)
  70. {
  71. $info = json_decode(json_encode($obj),true);
  72. $returnCode = $info['Msg']['Code'];
  73. if($returnCode !== '1')
  74. {
  75. return '报告PDF获取失败!迪安回传信息:'.$info['Msg']['Descript'];
  76. }
  77. if(isset($info['NewDataSet']['Table1']['BARCODE']))
  78. {
  79. $pdf = $info['NewDataSet']['Table1']['PDFREPORTURL'];
  80. $name = $info['NewDataSet']['Table1']['BARCODE'];
  81. $this->downImgRar($pdf,$name,'pdf',$info['NewDataSet']['Table1']['BARCODE']);
  82. }else{
  83. foreach ($info['NewDataSet']['Table1'] as $k=>$v)
  84. {
  85. $pdf = $v['PDFREPORTURL'];
  86. $name = $v['BARCODE'].'_'.($k+1);
  87. $this->downImgRar($pdf,$name,'pdf',$v['BARCODE']);
  88. }
  89. }
  90. }
  91. return 'success';
  92. }catch(\SoapFault $e){
  93. return $e->getMessage();
  94. }
  95. }
  96. function downImgRar($url,$rename,$ext,$barCode){
  97. switch ($ext) {
  98. case 'png':
  99. case 'jpg': //下载图片
  100. $file_path = '/images/';
  101. break;
  102. case 'pdf': //下载PDF
  103. $file_path = '/pdf/';
  104. break;
  105. case 'zip':
  106. case 'rar': //下载压缩包
  107. $file_path = '/rar/';
  108. break;
  109. default:
  110. $file_path = '/files/';
  111. break;
  112. }
  113. $ch = curl_init($url);
  114. curl_setopt($ch, CURLOPT_HEADER, 0);
  115. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  116. curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
  117. $rawdata=curl_exec ($ch);
  118. curl_close ($ch);
  119. // 使用中文文件名需要转码
  120. file_put_contents($_SERVER['DOCUMENT_ROOT'].$file_path.$rename.'.'.$ext,$rawdata);
  121. // 返回路径
  122. $path = $_SERVER['DOCUMENT_ROOT'].$file_path.$rename.".".$ext;
  123. $ins = ['type'=>$ext,'url'=>$path,'barcode'=>$barCode];
  124. Db::table('annex')->insert($ins);
  125. return 'success';
  126. }
  127. }