DrugReportInfoService.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace App\Services;
  3. use App\Models\DrugReportInfo;
  4. use Illuminate\Support\Arr;
  5. use Illuminate\Support\Facades\DB;
  6. class DrugReportInfoService
  7. {
  8. /*public function bulkUpsert(array $data, array $uniqueKeys = ['key1', 'key2'])
  9. {
  10. return DB::transaction(function () use ($data, $uniqueKeys) {
  11. foreach (array_chunk($data, 100) as $chunk) {
  12. DrugReportInfo::upsert(
  13. $chunk,
  14. $uniqueKeys, // 组合唯一键
  15. array_keys($data[0]) // 要更新的字段
  16. );
  17. }
  18. return true;
  19. });
  20. }*/
  21. public function bulkInsert(array $data): bool
  22. {
  23. $data = self::correct($data);
  24. return DrugReportInfo::insert($data);
  25. }
  26. public static function correct(array $data): array
  27. {
  28. return array_map(function ($item) {
  29. return [
  30. 'drug_report_v2_id' => $item['drug_report_v2_id'] ?? '',
  31. 'drug_report_name' => $item['drug_report_name'] ?? '',
  32. 'drug_id' => $item['drug_ent_base_info_id'] ?? '',
  33. 'drug_name' => $item['drug_name'] ?? '',
  34. 'prod_code' => $item['prod_code'] ?? '',
  35. 'pkg_spec' => $item['pkg_spec'] ?? '',
  36. 'prepn_spec' => $item['prepn_spec'] ?? '',
  37. 'pkg_ratio_list' => json_encode($item['pkg_ratio_list'] ?? [], JSON_UNESCAPED_UNICODE),
  38. 'batch_no' => $item['batch_no'] ?? '',
  39. 'report_id' => $item['report_id'] ?? '',
  40. 'report_no' => $item['report_no'] ?? '',
  41. 'report_date' => $item['report_date'] ?? '',
  42. 'sealed_report_url' => $item['sealed_report_url'] ?? '',
  43. ];
  44. }, $data);
  45. }
  46. }