querySealDrugReport($startTime, $endTime, $page, $pageSize, $isSeal); $total_num = $data['total_num']; $data = $data['data']; if (empty($data)) { break; } var_dump($isSeal,$total_num,$startTime, $endTime, $page); // 处理并保存数据 $saveCount = $this->saveDrugReport($data, $isSeal); Log::info('increment_drug_report','成功增量:'.$saveCount); $total += $saveCount; // 检查是否还有更多数据 if (count($data) <> $pageSize) { break; } $page++; } catch (\Exception $e) { Log::info('increment_drug_report','增量同步错误', ['error'=>$e->getMessage()]); break; } } while (true); return ['total'=>$total,'total_num'=>$total_num]; } /** * 处理并保存批次数据 * @return int */ protected function saveDrugReport(array $data, $isSeal=1): int { try { $SyncDrugReportService = new SyncDrugReportService(); $data = $SyncDrugReportService->correctSealDrugReport($data,$isSeal); return DrugReportInfo::bulkUpsert($data); } catch (\Throwable $e) { var_dump($e->getMessage()); Log::info('increment_drug_report', '处理数据异常', ['data'=>$data, 'err'=>$e->getMessage()]); return 0; } } /** * 处理【上游出库单】医药报告批次数据 排除已存在的数据 * @param array $data */ protected function exclude(array $data) { foreach ($data as $key=>$item){ $map = [ 'batch_no' => $item['produce_batch_no'], 'drug_id' => $item['drug_id'], 'bill_id' => $item['bill_id'], 'bill_detail_id' => $item['bill_detail_id'], ]; $res = DrugReportAss::query()->where($map)->first(); if ($res) { unset($data[$key]); } } return (new SyncDrugReportService())->correctDrugReportAss($data); } }