PrintPartService.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace App\Services;
  3. use App\Batch;
  4. use App\Order;
  5. use App\OrderPackage;
  6. use App\Traits\ModelSearchWay;
  7. use App\Traits\ServiceAppAop;
  8. use App\PrintPart;
  9. use Illuminate\Support\Carbon;
  10. class PrintPartService
  11. {
  12. use ModelSearchWay;
  13. use ServiceAppAop;
  14. protected $modelClass = PrintPart::class;
  15. public function getPrintLogisticNumbers($orderNos = null, $logistic_numbers = null, $batch_code = null)
  16. {
  17. $query = OrderPackage::query()->with(['commodities.commodity','order' => function($build) {
  18. $build->with(['shop', 'logistic', 'warehouse', 'warehouse']);
  19. }]);
  20. if ($orderNos) {
  21. $order_query = Order::query()->selectRaw('id');
  22. $this->searchWay($order_query,$orderNos,'orders.code');
  23. }
  24. if ($logistic_numbers) {
  25. $this->searchWay($query,$logistic_numbers,'logistic_number');
  26. }
  27. if($batch_code) {
  28. $batch_query = Batch::query()->selectRaw('id');
  29. if(!isset($order_query)) $order_query = Order::query()->selectRaw('id');
  30. $order_query->where('batch_id',$batch_query);
  31. }
  32. if (isset($order_query)) $query->where('order_id',$order_query);
  33. return $query->get();
  34. }
  35. public function getPrintData($orderNos = null, $logistic_numbers = null, $batch_code = null): array
  36. {
  37. $order_packages= $this->getPrintLogisticNumbers($orderNos,$logistic_numbers,$batch_code);
  38. $print_data = array();
  39. $order_packages->each(function($order_package) use (&$print_data){
  40. $order_commodity_info = array();
  41. $order_package->commodities->each(function($order_commodity) use (&$order_commodity_info){
  42. $order_commodity_info[] = $order_commodity->commodity->name . '('.$order_commodity->amount.')';
  43. });
  44. $print_data[] = [
  45. 'logistic_number' => $order_package->logistic_number, // 快递单号
  46. 'order_number' => $order_package->order->code ?? '', // 订单号
  47. 'logistic_name' => $order_package->order->logistic->name ?? '', // 承运商
  48. 'shop_name' => $order_package->order->shop->name ?? '', // 商铺
  49. 'from_adder' => $order_package->order->add ?? '', // 发货地址
  50. 'form_contact_person' => $order_package->order->add ?? '', // 发货人
  51. 'form_contact_number' => $order_package->order->add ?? '', // 发货人联系号码
  52. 'to_adder' => $order_package->order->addr ?? '', // 收货地址
  53. 'to_contact_person' => $order_package->order->user_name ?? '', // 收货人
  54. 'to_contact_number' => $order_package->order->user_name ?? '', // 收货人联系号码
  55. 'date' => Carbon::now()->format(Carbon::DEFAULT_TO_STRING_FORMAT), // 寄件时间
  56. 'remake' => $order_package->order->reamke ?? '', // 备注
  57. 'commodity_info' => implode(',',$order_commodity_info), // 订单详情
  58. 'face_sheet_type' => '', // 面单类型
  59. ];
  60. });
  61. return $print_data;
  62. }
  63. }