| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <?php
- namespace App\Services;
- use App\Models\DrugReportInfo;
- use Illuminate\Support\Arr;
- use Illuminate\Support\Facades\DB;
- class DrugReportInfoService
- {
- /*public function bulkUpsert(array $data, array $uniqueKeys = ['key1', 'key2'])
- {
- return DB::transaction(function () use ($data, $uniqueKeys) {
- foreach (array_chunk($data, 100) as $chunk) {
- DrugReportInfo::upsert(
- $chunk,
- $uniqueKeys, // 组合唯一键
- array_keys($data[0]) // 要更新的字段
- );
- }
- return true;
- });
- }*/
- public function bulkInsert(array $data): bool
- {
- $data = self::correct($data);
- return DrugReportInfo::insert($data);
- }
- public static function correct(array $data): array
- {
- return array_map(function ($item) {
- return [
- 'drug_report_v2_id' => $item['drug_report_v2_id'] ?? '',
- 'drug_report_name' => $item['drug_report_name'] ?? '',
- 'report_id' => $item['report_id'] ?? '',
- 'report_no' => $item['report_no'] ?? '',
- 'report_date' => $item['report_date'] ?? '',
- 'batch_no' => $item['batch_no'] ?? '',
- 'drug_id' => $item['drug_ent_base_info_id'] ?? '',
- 'drug_name' => $item['drug_name'] ?? '',
- 'prod_code' => $item['prod_code'] ?? '',
- 'pkg_spec' => $item['pkg_spec'] ?? '',
- 'prepn_spec' => $item['prepn_spec'] ?? '',
- 'pkg_ratio_list' => json_encode($item['pkg_ratio_list'] ?? [], JSON_UNESCAPED_UNICODE),
- 'sealed_report_url' => $item['sealed_report_url'] ?? '',
- 'seal_raw_data' => json_encode($data ?? [], JSON_UNESCAPED_UNICODE),
- ];
- }, $data);
- }
- public function getList(array $filters, string $search, array $sort, int $perPage) {
- $options = array_merge([
- 'search' => $search,
- 'searchable' => DrugReportInfo::$searchable,
- ], $sort);
- $query = DrugReportInfo::query()
- ->applyFilters(
- $filters,
- $options,
- );
- return $query->paginate($perPage);
- }
- }
|