haozi 5 tahun lalu
induk
melakukan
0c19b17d5f

+ 1 - 1
app/Console/Commands/WasSyncWmsAsnInformation.php

@@ -63,6 +63,6 @@ class WasSyncWmsAsnInformation extends Command
                 $startDate = $syncStartDate;
             }
         }
-        $storeService->syncWmsAsnData($startDate);
+        //$storeService->syncWmsAsnData($startDate);
     }
 }

+ 4 - 0
app/Services/OracleDocAsnHerderService.php

@@ -8,20 +8,24 @@ Class OracleDocAsnHerderService
 {
     public function getWmsAsnOnStartDateCreate($startDate)
     {
+        if (!$startDate) return null;
         return OracleDOCASNHeader::query()
             ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
                 $query->with(['lineStatus', 'qualityStatus','basSku']);
             }])
+            ->select('asnno','asnstatus','asntype','addtime','edittime','customerid','notes','warehouseid','asnreference3')
             ->where('addTime', '>=', $startDate)
             ->get();
     }
 
     public function getWmsAsnOnStartDateEdit($startDate)
     {
+        if (!$startDate) return null;
         return OracleDOCASNHeader::query()
             ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
                 $query->with(['lineStatus', 'qualityStatus','basSku']);
             }])
+            ->select('asnno','asnstatus','asntype','addtime','edittime','customerid','notes','warehouseid','asnreference3')
             ->where('EditTime', '>=', $startDate)
             ->whereColumn('EditTime', '<>', 'addTime')
             ->get();

+ 3 - 0
app/Services/RejectedBillService.php

@@ -57,4 +57,7 @@ Class RejectedBillService
             app('LogService')->log(__METHOD__,__FUNCTION__,'退回单同步问题件'.json_encode($rejectedBill).json_encode($orderIssue));
         }
     }
+    public function syncLoadedStatusByAsnHerder($asnHerders){
+
+    }
 }

+ 6 - 5
app/Services/StoreItemService.php

@@ -55,14 +55,15 @@ Class StoreItemService
     }
     public function getParamsByAsnDetails($asnDetails,$store_asn_code_map)
     {
+        /** @var DataHandlerService $dataHandlerService */
+        $dataHandlerService =  app(DataHandlerService::class);
         $storeItems=$this->getByWms($asnDetails);
-        $storeItem_map=[];
-        foreach ($storeItems as $storeItem) {
-            $storeItem_map[$storeItem->asn_line_code]= $storeItem;
-        }
+        $storeItem_map =  $dataHandlerService->dataHeader(['store_asn_code','asn_line_code','sku'],$storeItems);
         $params = [];
         foreach ($asnDetails as $asnDetail) {
-            if($storeItem_map[$asnDetail->asnlineno] ?? false)continue;
+            $storeItem =$dataHandlerService
+                ->getKeyValue(['store_asn_code'=>$asnDetail->asnno,'asn_line_code'=>$asnDetail->asnlineno,'sku'=>$asnDetail->sku],$storeItem_map);
+            if($storeItem ?? false)continue;
             $params[] = [
                 'store_id'=>$store_asn_code_map[$asnDetail->asnno]['id'],
                 'asn_line_code' => $asnDetail->asnlineno,

+ 1 - 2
app/Services/StoreService.php

@@ -17,7 +17,7 @@ Class StoreService
     public function syncWmsAsnData($startDate)
     {
         $this->storeCreateByWms($startDate);
-        $this->storeUpdateByWms($startDate);
+        //$this->storeUpdateByWms($startDate);
     }
 
     public function storeCreateByWms($startDate)
@@ -49,7 +49,6 @@ Class StoreService
         $warehouses=$wareHouseService->getByWms($asnHerders);
         foreach ($owners as $owner) {
             $owners_code_map[$owner->code] = $owner;
-            $owners_id_map[$owner->id] = $owner;
         }
         foreach ($warehouses as $warehouse) {
             $warehouses_code_map[$warehouse->code] = $warehouse;

+ 3 - 0
phpunit.xml

@@ -21,6 +21,9 @@
         <testsuite name="Services">
             <directory suffix="Test.php">./tests/Services</directory>
         </testsuite>
+        <testsuite name="StoreService">
+            <directory suffix="Test.php">./tests/Services/StoreService</directory>
+        </testsuite>
     </testsuites>
     <filter>
         <whitelist processUncoveredFilesFromWhitelist="true">

+ 4 - 8
public/t.php

@@ -1,11 +1,7 @@
 <?php
 
 
-class Ab{
-    static function f(){
-        echo 'f()';
-    }
-}
-
-(new Ab())->f();
-
+$str = '货号:yw2020110877入正品仓';
+$result=[];
+preg_match("/([a-zA-Z]{0,5}\d{6,20})/", $str, $result);
+var_dump($result);

+ 37 - 0
tests/Services/OracleDocAsnHeaderService/getWmsAsnOnStartDateCreateOrEditTest.php

@@ -0,0 +1,37 @@
+<?php
+
+
+namespace Tests\Services\OracleDocAsnHeaderService;
+
+
+use App\Services\OracleDocAsnHerderService;
+use Carbon\Carbon;
+use Tests\TestCase;
+
+class getWmsAsnOnStartDateCreateOrEditTest extends TestCase
+{
+    /** @var OracleDocAsnHerderService $service */
+    public $service;
+    public $startDate;
+    public  function setUp(): void
+    {
+        $this->service  = app(OracleDocAsnHerderService::class);
+        $this->startDate=Carbon::parse('2020-10-22 00:00:00')->subDays(1)->format('Y-m-d H:i:s');
+        parent::setUp(); // TODO: Change the autogenerated stub
+    }
+
+    public function testGetWmsAsnOnStartDateCreate(){
+        $asnHerders=$this->service->getWmsAsnOnStartDateCreate($this->startDate);
+        $this->assertNotEmpty($asnHerders);
+        $this->startDate=null;
+        $asnHerders=$this->service->getWmsAsnOnStartDateCreate($this->startDate);
+        $this->assertNull($asnHerders);
+    }
+    public function testGetWmsAsnOnStartDateEdit(){
+        $asnHerders=$this->service->getWmsAsnOnStartDateEdit($this->startDate);
+        $this->assertNotEmpty($asnHerders);
+        $this->startDate=null;
+        $asnHerders=$this->service->getWmsAsnOnStartDateEdit($this->startDate);
+        $this->assertNull($asnHerders);
+    }
+}

+ 4 - 2
tests/AsnSync/Services/AsnSyncTest.php → tests/Services/StoreService/AsnSyncTest.php

@@ -5,6 +5,7 @@ namespace Tests\AsnSync\Services;
 
 
 use App\Services\OracleDocAsnDetailService;
+use App\Services\OracleDocAsnHerderService;
 use App\Services\StoreService;
 use Carbon\Carbon;
 use Tests\TestCase;
@@ -22,8 +23,9 @@ class AsnSyncTest extends TestCase
 
     public function testAsnSync(){
         $startDate=Carbon::parse('2020-10-22 00:00:00')->subDays(1)->format('Y-m-d H:i:s');
-        app(StoreService::class)->syncWmsAsnData($startDate);
-
+        //app(StoreService::class)->syncWmsAsnData($startDate);
+        //$asnHeaders=app(OracleDocAsnHerderService::class)->getWmsAsnOnStartDateCreate($startDate);
+        //dd($asnHeaders);
 
     }
 }

+ 45 - 0
tests/Services/StoreService/CreateStoreTest.php

@@ -0,0 +1,45 @@
+<?php
+
+
+namespace Tests\Services\StoreService;
+
+
+use App\OracleDOCASNHeader;
+use App\Services\StoreService;
+use Carbon\Carbon;
+use Illuminate\Support\Facades\DB;
+use Tests\TestCase;
+
+class CreateStoreTest extends TestCase
+{
+    /** @var StoreService $service */
+    public $service;
+    public $asnHeaders;
+    public $stores;
+    public function setUp(): void
+    {
+        parent::setUp(); // TODO: Change the autogenerated stub
+        $this->service=app(StoreService::class);
+        $this->asnHeaders=OracleDOCASNHeader::query()
+            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
+                $query->with(['lineStatus', 'qualityStatus','basSku']);
+            }])
+            ->where('addTime', '>=', Carbon::parse('2020-10-21 00:00:00')->format('Y-m-d H:i:s'))
+            ->get();
+    }
+    public function testCreateStore(){
+        if (!$this->asnHeaders) return null;
+        $this->stores=$this->service->createStore($this->asnHeaders);
+        $this->assertNotEmpty($this->stores);
+    }
+    public function tearDown(): void
+    {
+        $storeIds=[];
+        foreach ($this->stores as $store){
+            array_push($storeIds,$store->id);
+        }
+        DB::table('stores')->whereIn('asn_code',data_get($this->asnHeaders,'*.asnno'))->delete();
+        DB::table('store_items')->whereIn('store_id',$storeIds)->delete();
+        parent::tearDown(); // TODO: Change the autogenerated stub
+    }
+}

+ 59 - 0
tests/Services/StoreService/GetParamsByAsnHeaderTest.php

@@ -0,0 +1,59 @@
+<?php
+
+
+namespace Tests\Services\StoreService;
+
+
+use App\OracleDOCASNHeader;
+use App\Services\OwnerService;
+use App\Services\StoreService;
+use App\Services\WarehouseService;
+use App\Store;
+use Carbon\Carbon;
+use Tests\TestCase;
+
+class GetParamsByAsnHeaderTest extends TestCase
+{
+    /**
+     * @var StoreService $service
+     * @var OwnerService $ownerService
+     * @var WarehouseService $warehouseService
+     *
+     */
+    public $service;
+    public $asnHeaders;
+    public $ownerService;
+    public $warehouseService;
+    public function setUp(): void
+    {
+        parent::setUp(); // TODO: Change the autogenerated stub
+        $this->service=app(StoreService::class);
+        $this->ownerService=app(OwnerService::class);
+        $this->warehouseService=app(WarehouseService::class);
+        $this->asnHeaders=OracleDOCASNHeader::query()
+            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
+                $query->with(['lineStatus', 'qualityStatus','basSku']);
+            }])
+            ->where('addTime', '>=', Carbon::parse('2020-10-21 00:00:00')->format('Y-m-d H:i:s'))
+            ->get();
+    }
+    public function testGetParamsByAsnHeader(){
+        if (empty($this->asnHeaders))return null;
+        $stores = Store::query()->whereIn('asn_code',data_get($this->asnHeaders,'*.asnno'))->get();
+        $owners=$this->ownerService->getByWmsOrders($this->asnHeaders);
+        $warehouses=$this->warehouseService->getByWms($this->asnHeaders);
+        $this->assertNotEmpty($this->asnHeaders);
+        $this->assertNotEmpty($owners);
+        $this->assertNotEmpty($warehouses);
+        foreach ($owners as $owner) {
+            $owners_code_map[$owner->code] = $owner;
+        }
+        foreach ($warehouses as $warehouse) {
+            $warehouses_code_map[$warehouse->code] = $warehouse;
+        }
+        if (count($this->asnHeaders)>count($stores)){
+            $params=$this->service->getParamsByAsnHeader($this->asnHeaders,$owners_code_map,$warehouses_code_map);
+            $this->assertNotEmpty($params);
+        }
+    }
+}

+ 53 - 0
tests/Services/StoreService/InsertStoreTest.php

@@ -0,0 +1,53 @@
+<?php
+
+
+namespace Tests\Services\StoreService;
+
+
+use App\Services\StoreService;
+use Illuminate\Support\Facades\DB;
+use Tests\TestCase;
+
+class InsertStoreTest extends TestCase
+{
+    /** @var StoreService $service */
+    public $service;
+    public $params=[];
+    public function setUp(): void
+    {
+        parent::setUp(); // TODO: Change the autogenerated stub
+        $this->service=app(StoreService::class);
+        $data1=[
+            'asn_code' => 'ASN2010210111',
+            'warehouse_id' =>2,
+            'owner_id' => 2,
+            'stored_method' =>'退货入库',
+            'status' =>'完全收货',
+            'remark' => 'test',
+            'created_at'=>'2020-11-06 14:32:00',
+            'updated_at'=>'2020-11-06 14:32:00',
+        ];
+        array_push($this->params,$data1);
+        $data2=[
+            'asn_code' => 'ASN2010210222',
+            'warehouse_id' =>2,
+            'owner_id' => 2,
+            'stored_method' =>'退货入库',
+            'status' =>'完全收货',
+            'remark' => 'test',
+            'created_at'=>'2020-11-06 14:32:00',
+            'updated_at'=>'2020-11-06 14:32:00',
+        ];
+        array_push($this->params,$data2);
+    }
+    public  function testInsertStore(){
+        $stores=$this->service->insertStore($this->params);
+        $this->assertNotEmpty($stores);
+        $this->assertDatabaseHas('stores',$this->params[0]);
+    }
+     public function tearDown(): void
+     {
+         DB::table('stores')->whereIn('asn_code',data_get($this->params,'*.asn_code'))->delete();
+         parent::tearDown(); // TODO: Change the autogenerated stub
+     }
+}

+ 42 - 0
tests/Services/StoreService/UpdateStoreTest.php

@@ -0,0 +1,42 @@
+<?php
+
+
+namespace Tests\Services\StoreService;
+
+
+use App\OracleDOCASNHeader;
+use App\Services\StoreService;
+use Carbon\Carbon;
+use Illuminate\Support\Facades\DB;
+use Tests\TestCase;
+
+class UpdateStoreTest extends TestCase
+{
+    /** @var StoreService $service */
+    public $service;
+    public $asnHeaders;
+    public $stores;
+    public function setUp(): void
+    {
+        parent::setUp(); // TODO: Change the autogenerated stub
+        $startDate=Carbon::parse('2020-10-21 00:00:00')->format('Y-m-d H:i:s');
+        $this->service=app(StoreService::class);
+        $this->asnHeaders=OracleDOCASNHeader::query()
+            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
+                $query->with(['lineStatus', 'qualityStatus','basSku']);
+            }])
+            ->where('EditTime', '>=', $startDate)
+            ->whereColumn('EditTime', '<>', 'addTime')
+            ->get();
+    }
+    public function testUpdateStore(){
+        if (!$this->asnHeaders) return null;
+        $this->assertTrue($this->service->updateStore($this->asnHeaders));
+
+
+    }
+    public function tearDown(): void
+    {
+        parent::tearDown(); // TODO: Change the autogenerated stub
+    }
+}