SignedDrugReportService.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace App\Servers;
  3. use App\Models\DrugReportAss;
  4. use App\Servers\Aliyun\Oss;
  5. use App\Servers\QueryDrugReportService;
  6. use Carbon\Carbon;
  7. use App\Facades\Servers\Logs\Log;
  8. use GuzzleHttp\Client;
  9. class SignedDrugReportService
  10. {
  11. public function syncDrugReport(string $startTime, string $endTime = '', int $page = 1, int $pageSize = 20): int
  12. {
  13. $total = 0;
  14. $time = time();
  15. $QueryDrugReportService = new QueryDrugReportService();
  16. $DrugReportAss = new DrugReportAss();
  17. do {
  18. try {
  19. // 分批次拉取数据
  20. $data = $QueryDrugReportService->queryDrugReportSignedAss($startTime, $endTime, $page, $pageSize);
  21. $data = $data['data'];
  22. if (empty($data)) {
  23. break;
  24. }
  25. var_dump($startTime, $endTime, $page);
  26. foreach ($data as $item){
  27. $signed_time = strtotime($item['signed_time']);
  28. $res = $DrugReportAss->where([
  29. 'batch_no' => $item['produce_batch_no'],
  30. 'drug_id' => $item['drug_id'],
  31. 'bill_detail_id' => $item['bill_detail_id'],
  32. 'bill_id' => $item['bill_id'],
  33. ])->update(['drug_report_sign_status'=>3,'signed_time'=>$signed_time,'update_time'=>$time]);
  34. }
  35. // 检查是否还有更多数据
  36. if (count($data) <> $pageSize) {
  37. break;
  38. }
  39. $page++;
  40. sleep(1);
  41. } catch (\Exception $e) {
  42. Log::info('drug-report-signed','已经签收同步错误', ['err'=>$e->getMessage()]);
  43. break;
  44. }
  45. } while (true);
  46. return $total;
  47. }
  48. }