QueryDrugReportService.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. <?php
  2. namespace App\Servers;
  3. use AlibabaAlihealthSynergyYzwDrugreportOptHistoryAllRequest;
  4. use AlibabaAlihealthSynergyYzwQuerydrugreportRequest;
  5. use AlibabaAlihealthSynergyYzwQuerysealdrugreportRequest;
  6. use AlibabaAlihealthSynergyYzwQuerydrugreportassRequest;
  7. use AlibabaAlihealthSynergyYzwBillSignedQueryRequest;
  8. use AlibabaAlihealthSynergyYzwDrugreportGetRequest;
  9. use AlibabaAlihealthSynergyYzwSignednotstampedbillQueryRequest;
  10. use Page;
  11. use TopClient;
  12. use App\Facades\Servers\Logs\Log;
  13. class QueryDrugReportService
  14. {
  15. private $client;
  16. private $config;
  17. public function __construct()
  18. {
  19. $this->config = config('taobao');
  20. $this->client = new TopClient;
  21. $this->client->appkey = $this->config['app_key'];
  22. $this->client->secretKey = $this->config['secret_key'];
  23. $this->client->format = "json";
  24. }
  25. /**
  26. * 查询上游企业的待签收药检报告信息
  27. * @link https://open.taobao.com/api.htm?docId=70169&docType=2&scopeId=30361
  28. * @param string $beginTime
  29. * @param string $endTime
  30. * @param int $page
  31. * @param int $pageSize
  32. * @return array
  33. * @throws \Exception
  34. */
  35. public function queryDrugReport(string $beginTime, string $endTime, int $page = 1, int $pageSize = 20): array
  36. {
  37. $req = new AlibabaAlihealthSynergyYzwQuerydrugreportRequest;
  38. $req->setRefEntId($this->config['enterprise_id']);
  39. // $req->setFromRefEntId(""); // 发货企业(可选)
  40. // $req->setBillCode(""); // 单据编号(可选)
  41. $req->setBeginTime($beginTime);
  42. $req->setEndTime($endTime);
  43. // $req->setDrugId(""); // 药品ID(可选)
  44. // $req->setBatchNo(""); // 批号(可选)
  45. $pageObj = new Page;
  46. $pageObj->page = $page;
  47. $pageObj->page_size = $pageSize;
  48. $req->setPage(json_encode($pageObj));
  49. $resp = $this->client->execute($req);
  50. if ('SUCCESS' <> $resp->res_result->msg_code) {
  51. throw new \Exception($resp->res_result->msg_info);
  52. }
  53. if (!isset($resp->res_result->model->result->onenet_drug_report_top_d_t_o)) {
  54. return [];
  55. }
  56. return json_decode(json_encode(
  57. $resp->res_result->model->result->onenet_drug_report_top_d_t_o
  58. ), true);
  59. }
  60. /**
  61. * 查询上传报告信息接口
  62. * @link https://open.taobao.com/api.htm?docId=70145&docType=2&scopeId=30361
  63. * @param string $beginTime
  64. * @param string $endTime
  65. * @param int $page
  66. * @param int $pageSize
  67. * @param int $isSeal
  68. * @return array
  69. * @throws \Exception
  70. */
  71. public function querySealDrugReport(string $beginTime, string $endTime, int $page = 1, int $pageSize = 20, int $isSeal = 0): array
  72. {
  73. $req = new AlibabaAlihealthSynergyYzwQuerysealdrugreportRequest;
  74. $req->setRefEntId($this->config['enterprise_id']);
  75. $req->setBeginTime($beginTime);
  76. $req->setEndTime($endTime);
  77. $req->setPage($page);
  78. $req->setPageSize($pageSize);
  79. if ($isSeal) {
  80. $req->setStatus($isSeal);
  81. }
  82. $resp = $this->client->execute($req);
  83. if ('SUCCESS' <> $resp->result->msg_code) {
  84. throw new \Exception($resp->result->msg_info);
  85. }
  86. if (!isset($resp->result->model->result_list->ocr_seal_drug_report_d_t_o)) {
  87. return [
  88. 'data' => [],
  89. 'total_num' => 0
  90. ];
  91. }
  92. $data = json_decode(json_encode(
  93. $resp->result->model->result_list->ocr_seal_drug_report_d_t_o
  94. ), true);
  95. $total_num = $resp->result->model->total_num;
  96. return [
  97. 'data' => $data,
  98. 'total_num' => $total_num
  99. ];
  100. }
  101. /**
  102. * 药检报告操作日志
  103. * @link https://open.taobao.com/api.htm?docId=71189&docType=2&scopeId=30361
  104. * @param string $beginDate
  105. * @param string $endDate
  106. * @param int $page
  107. * @param int $pageSize
  108. * @return array
  109. * @throws \Exception
  110. */
  111. public function drugReportOptHistory(string $beginDate, string $endDate, int $page = 1, int $pageSize = 20): array
  112. {
  113. $req = new AlibabaAlihealthSynergyYzwDrugreportOptHistoryAllRequest;
  114. $req->setRefEntId($this->config['enterprise_id']);
  115. $req->setBeginTime($beginDate);
  116. $req->setEndTime($endDate);
  117. // $req->setBatchNo(""); // 批次号(可选)
  118. // $req->setDrugId(""); // 药品ID(可选)
  119. $req->setPage($page);
  120. $req->setPageSize($pageSize);
  121. $resp = $this->client->execute($req);
  122. if ('SUCCESS' <> $resp->result->msg_code) {
  123. throw new \Exception($resp->result->msg_info);
  124. }
  125. if (!isset($resp->result->model->result_list->top_drug_report_opt_log)) {
  126. return [
  127. 'data' => [],
  128. 'total_num' => 0
  129. ];
  130. }
  131. $data = json_decode(json_encode(
  132. $resp->result->model->result_list->top_drug_report_opt_log
  133. ), true);
  134. $total_num = $resp->result->model->total_num;
  135. return [
  136. 'data' => $data,
  137. 'total_num' => $total_num
  138. ];
  139. }
  140. /**
  141. * 查询上游出库单,支持以自己身份查询或者货主身份查询
  142. * @link https://open.taobao.com/api.htm?docId=71591&docType=2&scopeId=30361
  143. * @param string $beginTime
  144. * @param string $endTime
  145. * @param string $pageValue
  146. * @param int $pageSize
  147. * @param int $isSeal
  148. * @return array
  149. * @throws \Exception
  150. */
  151. public function querydrugreportass(string $beginTime, string $endTime, string $pageValue = '1', int $pageSize = 20, int $isSeal = 0,$setTimeType="0",$billCode='',$batchNo = '',$drugId = ''): array
  152. {
  153. $req = new AlibabaAlihealthSynergyYzwQuerydrugreportassRequest;
  154. $req->setRefEntId($this->config['enterprise_id']);
  155. //$req->setFromRefEntId('320000000000015243');
  156. $req->setBeginTime($beginTime);
  157. $req->setEndTime($endTime);
  158. $page = new Page;
  159. $page->page=$pageValue;
  160. $page->page_size="20";
  161. $req->setPage(json_encode($page));
  162. if ($setTimeType){
  163. $req->setTimeType($setTimeType);
  164. }else{
  165. $req->setTimeType("0");
  166. }
  167. if ($isSeal) {
  168. $req->setSealStatus($isSeal);
  169. }
  170. if ($billCode) $req->setBillCode($billCode);
  171. if ($batchNo) $req->setBatchNo($batchNo);
  172. if ($drugId) $req->setDrugId($drugId);
  173. //$req->setSealStatus("0");
  174. //$req->setStatusType("3");
  175. $resp = $this->client->execute($req);
  176. if ('SUCCESS' <> $resp->res_result->msg_code) {
  177. log::info('querydrugreportass', '请求异常', ['err'=>$resp->res_result->msg_info]);
  178. }
  179. if (!isset($resp->res_result->model->result->onenet_drug_report_top_d_t_o)) {
  180. return [
  181. 'data' => [],
  182. 'total_num' => 0
  183. ];
  184. }
  185. $data = json_decode(json_encode(
  186. $resp->res_result->model->result->onenet_drug_report_top_d_t_o
  187. ), true);
  188. $total_num = $resp->res_result->model->total_num;
  189. return [
  190. 'data' => $data,
  191. 'total_num' => $total_num
  192. ];
  193. }
  194. /**
  195. * 查询一段时间内已经签收的单据
  196. * @link https://open.taobao.com/api.htm?docId=71591&docType=2&scopeId=30361
  197. */
  198. public function queryDrugReportSignedAss(string $beginTime, string $endTime, string $pageValue = '1', int $pageSize = 20)
  199. {
  200. $req = new AlibabaAlihealthSynergyYzwBillSignedQueryRequest;
  201. $req->setRefEntId($this->config['enterprise_id']);
  202. $req->setBeginTime($beginTime);
  203. $req->setEndTime($endTime);
  204. $page = new Page;
  205. $page->page=$pageValue;
  206. $page->page_size="20";
  207. $req->setPage(json_encode($page));
  208. $resp = $this->client->execute($req);
  209. if ('SUCCESS' <> $resp->res_result->msg_code) {
  210. log::info('querydrugreportass', '请求异常', ['err'=>$resp->res_result->msg_info]);
  211. }
  212. if (!isset($resp->res_result->model->result->onenet_drug_report_top_d_t_o)) {
  213. return [
  214. 'data' => [],
  215. ];
  216. }
  217. $data = json_decode(json_encode(
  218. $resp->res_result->model->result->onenet_drug_report_top_d_t_o
  219. ), true);
  220. return [
  221. 'data' => $data,
  222. ];
  223. }
  224. /**
  225. * 查询一段时间内已经签收的单据
  226. * @link https://open.taobao.com/api.htm?docId=71591&docType=2&scopeId=30361
  227. */
  228. public function synergyDrugReport(string $reportId)
  229. {
  230. $req = new AlibabaAlihealthSynergyYzwDrugreportGetRequest;
  231. $req->setRefEntId($this->config['enterprise_id']);
  232. $req->setReportId($reportId);
  233. $resp = $this->client->execute($req);
  234. if ('SUCCESS' <> $resp->res_result->msg_code) {
  235. log::info('querydrugreportass', '请求异常', ['err'=>$resp->res_result->msg_info]);
  236. }
  237. if (!isset($resp->res_result->model->result->onenet_drug_report_top_d_t_o)) {
  238. return [
  239. 'data' => [],
  240. ];
  241. }
  242. $data = json_decode(json_encode(
  243. $resp->res_result->model->result->onenet_drug_report_top_d_t_o
  244. ), true);
  245. return [
  246. 'data' => $data,
  247. ];
  248. }
  249. /**
  250. * 查询已经签收但是还未盖章的单据
  251. * @link https://open.taobao.com/api.htm?docId=71591&docType=2&scopeId=30361
  252. */
  253. public function signednotstampedbill(string $beginTime, string $endTime, string $pageValue = '1', int $pageSize = 20)
  254. {
  255. $req = new AlibabaAlihealthSynergyYzwSignednotstampedbillQueryRequest;
  256. $req->setRefEntId($this->config['enterprise_id']);
  257. $req->setBeginTime($beginTime);
  258. $req->setEndTime($endTime);
  259. $page = new Page;
  260. $page->page=$pageValue;
  261. $page->page_size="20";
  262. $req->setPage(json_encode($page));
  263. $resp = $this->client->execute($req);
  264. if ('SUCCESS' <> $resp->res_result->msg_code) {
  265. log::info('querydrugreportass', '请求异常', ['err'=>$resp->res_result->msg_info]);
  266. }
  267. if (!isset($resp->res_result->model->result->holo_bill_search_common_show_d_t_o)) {
  268. return [
  269. 'data' => [],
  270. ];
  271. }
  272. $data = json_decode(json_encode(
  273. $resp->res_result->model->result->holo_bill_search_common_show_d_t_o
  274. ), true);
  275. $total_num = $resp->res_result->model->total_num;
  276. return [
  277. 'data' => $data,
  278. 'total_num' => $total_num
  279. ];
  280. }
  281. }