RegroupOrderCommoditiesTest.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. namespace Tests\Services\OrderPackageCommoditiesService\RegroupOrderCommoditiesTest;
  3. use App\Order;
  4. use App\OrderPackage;
  5. use App\OrderPackageCommodities;
  6. use App\Services\OracleDOCOrderHeaderService;
  7. use App\Services\OrderPackageCommoditiesService;
  8. use Carbon\Carbon;
  9. use Illuminate\Foundation\Testing\RefreshDatabase;
  10. use Illuminate\Foundation\Testing\WithFaker;
  11. use Tests\TestCase;
  12. class RegroupOrderCommoditiesTest extends TestCase
  13. {
  14. /**
  15. * @var OrderPackageCommoditiesService $service
  16. * @var OracleDOCOrderHeaderService $orderHeaderService
  17. */
  18. public $service;
  19. public $orderHeaderService;
  20. public function setUp(): void
  21. {
  22. parent::setUp();
  23. $this->service = app('OrderPackageCommoditiesService');
  24. $this->orderHeaderService = app('OracleDocOrderHeaderService');
  25. }
  26. public function testRegroupOrderCommodities()
  27. {
  28. /*
  29. * createOrderPackage($orderHeaders,$orders,$packages)
  30. * */
  31. $carbon =Carbon::now()->subHours(10);
  32. $date = '2020-09-18 18:13:50';
  33. $orderHeaders = $this->orderHeaderService->getWMSOrderOnStartDate($carbon);
  34. if($orderHeaders->count()==0){
  35. var_dump('查询数据为空');
  36. return;
  37. }
  38. $order_nos = data_get($orderHeaders,'*.orderno');
  39. $order_commodities = OrderPackageCommodities::query()->with(['commodity','package.order'])->whereHas('package',function($query)use($order_nos){
  40. $query->whereHas('order',function ($query)use($order_nos){
  41. $query->whereIn('code',$order_nos);
  42. });
  43. })->sql();
  44. $order_commodities = OrderPackageCommodities::query()->with(['commodity','package.order'])->whereHas('package.order',function($query)use($order_nos){
  45. $query->whereIn('code',$order_nos);
  46. })->get();
  47. $package = OrderPackage::query()->with('order')->where('order',function($query)use($order_nos){
  48. $query->whereIn('code',$order_nos);
  49. })->sql();
  50. $order = Order::query()->whereIn('code',$order_nos)->sql();
  51. $params = $this->service->regroupOrderCommodities($order_commodities);
  52. $_params = [];
  53. $orderHeaders->each(function($order_header)use(&$_params){
  54. $order_header->actAllocationDetails->each(function($detail)use(&$_params){
  55. $order_no = $detail->orderno;
  56. $logistic_number = $detail->picktotraceid;
  57. $sku = $detail->sku;
  58. $key = ' orderno='.$order_no.' logsitic_number='.$logistic_number.' sku='.$sku.' ';
  59. if(isset($_params[$key])){
  60. $_params[$key]['amount'] += $detail->qty_each;
  61. }else{
  62. $_params[$key] = [
  63. 'orderno'=>$order_no,
  64. 'logistic_number'=>$logistic_number,
  65. 'sku' => $sku,
  66. 'amount' => $sku,
  67. 'owner_code' => $detail->customerid
  68. ];
  69. }
  70. });
  71. });
  72. foreach ($_params as $key=>$param) {
  73. $this->assertNotEmpty($params[$key]);
  74. }
  75. }
  76. }