GetParamsByAsnHeaderTest.php 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace Tests\Services\StoreService;
  3. use App\OracleBasCode;
  4. use App\OracleDOCASNHeader;
  5. use App\Owner;
  6. use App\Services\OwnerService;
  7. use App\Services\StoreService;
  8. use App\Services\WarehouseService;
  9. use App\Store;
  10. use App\Warehouse;
  11. use Carbon\Carbon;
  12. use Illuminate\Support\Facades\DB;
  13. use Tests\TestCase;
  14. class GetParamsByAsnHeaderTest extends TestCase
  15. {
  16. /**
  17. * @var StoreService $service
  18. * @var OwnerService $ownerService
  19. * @var WarehouseService $warehouseService
  20. *
  21. */
  22. public $service;
  23. public $asnHeaders;
  24. public $ownerService;
  25. public $warehouseService;
  26. private $data=[];
  27. public function setUp(): void
  28. {
  29. parent::setUp(); // TODO: Change the autogenerated stub
  30. $this->service=app(StoreService::class);
  31. $this->ownerService=app(OwnerService::class);
  32. $this->warehouseService=app(WarehouseService::class);
  33. // $this->data['warehouse'] = factory(Warehouse::class)->create(['code'=>'test_wh']);
  34. DB::insert('insert ignore into warehouses (code) values(?)',['test_wh']);
  35. $this->data['warehouse'] = Warehouse::query()->where('code','test_wh')->first();
  36. // $this->data['owner'] = factory(Owner::class)->create(['code'=>'test_owner','name'=>'测试货主']);
  37. DB::insert('insert ignore into owners (code,name) values(?,?)',['test_owner','测试货主']);
  38. $this->data['owner'] = Owner::query()->where('code','test_owner')->where('name','测试货主')->first();
  39. $wmsAsnHeader = factory(OracleDOCASNHeader::class)->make([
  40. 'customerid'=>'test_owner','warehouseid'=>'test_wh','asntype'=>'CSRK','asnstatus'=>'11',
  41. ]);
  42. $asnType = factory(OracleBasCode::class)->make(['codeid'=>'ASN_TYP','code'=>'CSRK','descr_c'=>'测试入库']);
  43. $asnStatus = factory(OracleBasCode::class)->make(['code'=>'11', 'codeid'=>'ASN_STS', 'codename_c'=>'测试状态']);
  44. $wmsAsnHeader->setRelation('asnType',$asnType);
  45. $wmsAsnHeader->setRelation('asnStatus',$asnStatus);
  46. $this->asnHeaders=collect();
  47. $this->asnHeaders->add($wmsAsnHeader);
  48. }
  49. public function testGetParamsByAsnHeader(){
  50. if (empty($this->asnHeaders))return null;
  51. $stores = Store::query()->whereIn('asn_code',data_get($this->asnHeaders,'*.asnno'))->get();
  52. $owner_codes = [];
  53. $warehouse_codes = [];
  54. foreach ($this->asnHeaders as $asnHerder) {
  55. if (!empty($asnHerder['customerid']))
  56. $owner_codes[$asnHerder['customerid']] = $asnHerder['customerid'];
  57. if (!empty($asnHerder['warehouseid']))
  58. $warehouse_codes[$asnHerder['warehouseid']] = $asnHerder['warehouseid'];
  59. }
  60. $owners = $this->ownerService->getOwnerByCodes($owner_codes);
  61. $warehouses = $this->warehouseService->getWareHouseByCodes($warehouse_codes);
  62. $this->assertNotEmpty($this->asnHeaders);
  63. $owners_code_map=[];
  64. foreach ($owners as $owner) {
  65. $owners_code_map[$owner->code] = $owner;
  66. }
  67. $warehouses_code_map=[];
  68. foreach ($warehouses as $warehouse) {
  69. $warehouses_code_map[$warehouse->code] = $warehouse;
  70. }
  71. if (count($this->asnHeaders)>count($stores)){
  72. $params=$this->service->getParamsByAsnHeader($this->asnHeaders,$owners_code_map,$warehouses_code_map);
  73. $this->assertNotEmpty($params);
  74. }
  75. }
  76. public function tearDown(): void
  77. {
  78. $this->data['warehouse']->delete();
  79. $this->data['owner']->delete();
  80. parent::tearDown(); // TODO: Change the autogenerated stub
  81. }
  82. }