nurseSheet.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Imports\Order;
  3. use App\Models\Order;
  4. use App\Models\Organization;
  5. use App\Models\Vaccine;
  6. use App\User;
  7. use Illuminate\Support\Collection;
  8. use Maatwebsite\Excel\Concerns\ToCollection;
  9. class nurseSheet implements ToCollection
  10. {
  11. /**
  12. * @param Collection $collection
  13. */
  14. public function collection(Collection $collection)
  15. {
  16. // todo 缺少患者信息导致患者信息无法确定,支付方式,无订单编号,无法去重,没机构,没用户如何处理
  17. $i = 1;
  18. $order_info = [];
  19. foreach ($collection as $row) {
  20. if($row[0] == '就诊人姓名') continue;
  21. $user_id = $this->getValue(new User(),['phone'=>$row[1]],'id');
  22. $vaccine_id = $this->getValue(new Vaccine(),['name'=>$row[3]],'id');
  23. if(empty($user_id)){
  24. Log::info('订单没有用户信息: '.$row[0].' 电话:'.$row[1].' 时间:'.$row[4].PHP_EOL);
  25. continue;
  26. }
  27. $i ++ ;
  28. $status = Order::getStatus();
  29. //订单状态
  30. $order_status = array_search($row[5],$status);
  31. $org_id = $this->getValue(new Organization(),['name'=>$row[6]],'id');
  32. if(empty($org_id)) $org_id = 0;
  33. $order_sn = build_sn($i);
  34. //todo 写入计免订单表,订单患者表
  35. $order_info[] = [
  36. 'order_sn'=>$order_sn,
  37. 'user_id'=>$user_id,
  38. 'docter_id'=>0,
  39. 'order_status'=>$order_status,
  40. 'organization_id'=>$org_id,
  41. 'product_type'=>4,
  42. ];
  43. }
  44. Order::insert($order_info);
  45. }
  46. public function getValue($model,$where,$field)
  47. {
  48. return $model->where($where)->value($field);
  49. }
  50. }