浏览代码

Merge branch 'Haozi' of ssh://was.baoshi56.com:10022/var/git/bswas

 Conflicts:
	app/Console/Kernel.php
	app/Http/Controllers/TestController.php
LD 5 年之前
父节点
当前提交
77353d5035

+ 40 - 2
app/Console/Commands/SyncWmsCommoditiesInformation.php

@@ -4,7 +4,10 @@ namespace App\Console\Commands;
 
 
 use App\Services\CommodityService;
+use App\ValueStore;
 use Illuminate\Console\Command;
+use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\Cache;
 
 class SyncWmsCommoditiesInformation extends Command
 {
@@ -15,6 +18,10 @@ class SyncWmsCommoditiesInformation extends Command
      * @var string
      */
     protected $signature = 'SyncWmsCommoditiesInformation';
+    private $task_start_at;
+    private $task_end_at;
+    private $restart;
+    private $is_enabled;
 
     /**
      * The console command description.
@@ -33,14 +40,45 @@ class SyncWmsCommoditiesInformation extends Command
         parent::__construct();
     }
 
+    public function init()
+    {
+        $this->task_start_at = config('sync.commodity_sync.task_start_at');
+        $this->task_end_at = config('sync.commodity_sync.task_end_at');
+        $this->restart = config('sync.commodity_sync.restart');
+        $this->is_enabled= config('sync.commodity_sync.enabled');
+    }
     /**
      * Execute the console command.
-     *
-     * @return int
      */
     public function handle()
     {
+        $this->init();
+        if($this->is_enabled==false)return;
+        sleep(rand(2,3));
+        $start_time =  Cache::remember($this->task_start_at,null,function (){
+            return ValueStore::query()->firstOrCreate(['name'=>$this->task_start_at])->first()->value;
+        });
+        $end_time =  Cache::remember($this->task_end_at,null,function (){
+            return  ValueStore::query()->firstOrCreate(['name'=>$this->task_end_at])->first()->value;
+        });
+
+        $start = Carbon::now();
+        // 判断上一次任务异常了
+        //1.第一次就异常了
+        if(isset($start_time) && empty($end_time) && $start->diffInMinutes(Carbon::parse($start_time)) < $this->restart)return;
+        //2.中间某次异常了
+        if(isset($start_time) && isset($end_time)
+            && Carbon::parse($end_time)->lt(Carbon::parse($start_time))
+            && $start->diffInMinutes(Carbon::parse($start_time)) < $this->restart)
+            return;
+
+        $start = (string)$start;
+        Cache::put($this->task_start_at,$start);
+        ValueStore::query()->where('name',$this->task_start_at)->update(['value'=>$start]);
         $this->SyncWmsCommoditiesInformation();
+        $end = (string)Carbon::now();
+        Cache::put($this->task_end_at,$end);
+        ValueStore::query()->where('name',$this->task_end_at)->update(['value'=>$end]);
     }
 
     public function SyncWmsCommoditiesInformation(){

+ 41 - 3
app/Console/Commands/WasSyncWmsAsnInformation.php

@@ -4,7 +4,10 @@ namespace App\Console\Commands;
 
 
 use App\Services\StoreService;
+use App\ValueStore;
 use Illuminate\Console\Command;
+use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\Cache;
 
 class WasSyncWmsAsnInformation extends Command
 {
@@ -15,7 +18,10 @@ class WasSyncWmsAsnInformation extends Command
      * @var string
      */
     protected $signature = 'WasSyncWmsAsnInformation';
-
+    private $task_start_at;
+    private $task_end_at;
+    private $restart;
+    private $is_enabled;
     /**
      * The console command description.
      *
@@ -33,14 +39,46 @@ class WasSyncWmsAsnInformation extends Command
         parent::__construct();
     }
 
+    public function init()
+    {
+        $this->task_start_at = config('sync.asn_sync.task_start_at');
+        $this->task_end_at = config('sync.asn_sync.task_end_at');
+        $this->restart = config('sync.asn_sync.restart');
+        $this->is_enabled= config('sync.asn_sync.enabled');
+    }
     /**
      * Execute the console command.
-     *
-     * @return int
+     * @return void
      */
     public function handle()
     {
+        $this->init();
+        if($this->is_enabled==false)return;
+        sleep(rand(2,3));
+        $start_time =  Cache::remember($this->task_start_at,null,function (){
+            return ValueStore::query()->firstOrCreate(['name'=>$this->task_start_at])->first()->value;
+        });
+        $end_time =  Cache::remember($this->task_end_at,null,function (){
+            return  ValueStore::query()->firstOrCreate(['name'=>$this->task_end_at])->first()->value;
+        });
+
+        $start = Carbon::now();
+        // 判断上一次任务异常了
+        //1.第一次就异常了
+        if(isset($start_time) && empty($end_time) && $start->diffInMinutes(Carbon::parse($start_time)) < $this->restart)return;
+        //2.中间某次异常了
+        if(isset($start_time) && isset($end_time)
+            && Carbon::parse($end_time)->lt(Carbon::parse($start_time))
+            && $start->diffInMinutes(Carbon::parse($start_time)) < $this->restart)
+            return;
+
+        $start = (string)$start;
+        Cache::put($this->task_start_at,$start);
+        ValueStore::query()->where('name',$this->task_start_at)->update(['value'=>$start]);
         $this->WasSyncWmsAsn();
+        $end = (string)Carbon::now();
+        Cache::put($this->task_end_at,$end);
+        ValueStore::query()->where('name',$this->task_end_at)->update(['value'=>$end]);
     }
 
     public function WasSyncWmsAsn(){

+ 2 - 0
app/Console/Kernel.php

@@ -9,6 +9,7 @@ use App\Console\Commands\MakeServiceCommand;
 use App\Console\Commands\SyncBatchTask;
 use App\Console\Commands\SyncLogCacheTask;
 use App\Console\Commands\SyncUserVisitMenuLogsCacheTask;
+use App\Console\Commands\SyncWmsCommoditiesInformation;
 use App\Console\Commands\SyncWMSOrderTask;
 use App\Console\Commands\TestTemp;
 use App\Console\Commands\WASSyncWMSOrderInformation;
@@ -34,6 +35,7 @@ class Kernel extends ConsoleKernel
         TestTemp::class,
         SyncBatchTask::class,
         SyncWMSOrderTask::class,
+        SyncWmsCommoditiesInformation::class,
     ];
 
     /**

+ 19 - 10
app/Http/Controllers/TestController.php

@@ -9,6 +9,10 @@ use App\Carrier;
 use App\City;
 use App\Commodity;
 use App\CommodityBarcode;
+use App\Console\Commands\CreateOwnerAreaReport;
+use App\Console\Commands\CreateOwnerBillReport;
+use App\Console\Commands\CreateOwnerReport;
+use App\Console\Commands\SyncWmsCommoditiesInformation;
 use App\Console\Commands\SyncWMSOrderTask;
 use App\Events\CancelOrder;
 use App\Http\Requests\ForeignHaiRobotic_taskUpdateRequest;
@@ -21,9 +25,11 @@ use App\Logistic;
 use App\Menu;
 use App\OracleActAllocationDetails;
 use App\OracleBasSKU;
+use App\OracleDOCASNHeader;
 use App\OracleDOCOrderHeader;
 use App\OracleDocOrderPackingSummary;
 use App\OracleDOCWaveDetails;
+use App\OracleDOCWaveHeader;
 use App\Order;
 use App\OrderBin;
 use App\OrderCommodity;
@@ -1247,8 +1253,6 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
     public function testSyncAsn()
     {
         dump('start' . (string)Carbon::now());
-//       $start=ValueStore::query()->where('name','asn_last_created_sync_at')->value('value');
-//       app(OracleDocAsnHerderService::class)->getWmsAsnOnStartDateCreate($start);
         app(StoreService::class)->storeCreateByWms();
         app(StoreService::class)->storeUpdateByWms();
         dump('end' . (string)Carbon::now());
@@ -1257,19 +1261,13 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
     public function testSyncCommodity()
     {
         dump('start' . (string)Carbon::now());
-        /**@var  CommodityService $commodityService */
-        $commodityService = app(CommodityService::class);
-        $commodityService->syncCommodityCreated();
-        $commodityService->syncCommodityUpdated();
+        $syncCommodityTask=new SyncWmsCommoditiesInformation();
+        $syncCommodityTask->handle();
         dump('end' . (string)Carbon::now());
     }
 
     public function testSyncCommodityByMaps()
     {
-//        $skus = ['5211900982001','5211900982002','5211900982003','5211900982004','5211200641701','5211200641702','5211200641703','5211200641704',
-//            '5211800945001','5211800945002','5211800945003','5211800945004','5215300281002','5215300281003','5215300281004',
-//            '5215300281005','5215300281006','5215300283102','5215300283103',];
-//        $ownerIds=['2'];
         dump('get_start' . (string)Carbon::now());
         $bas_skus = OracleBasSKU::query()->where('addTime', '>=', '2020-12-14 00:00:00')->select('customerid', 'sku')->get();
 
@@ -1384,4 +1382,15 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
             if($bool)app('LogService')->log(__METHOD__, __FUNCTION__, '删除OrderIssue:' . json_encode($orderIssues));
         }
     }
+
+    public function testHz(){
+        dump('start'.Carbon::now()->toDateTimeString());
+        $ownerAreaReportTask=new CreateOwnerAreaReport();
+        $ownerAreaReportTask->handle();
+        $ownerBillReportTask= new CreateOwnerBillReport();
+        $ownerBillReportTask->handle();
+        $ownerReportTask= new CreateOwnerReport();
+        $ownerReportTask->handle();
+        dump('end'.Carbon::now()->toDateTimeString());
+    }
 }

+ 0 - 1
app/Services/CommodityService.php

@@ -11,7 +11,6 @@ use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
 use App\ValueStore;
 use Carbon\Carbon;
-use Doctrine\DBAL\Query\QueryBuilder;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Collection;
 use Illuminate\Support\Facades\Cache;

+ 2 - 1
app/Services/InventoryCompareService.php

@@ -145,7 +145,8 @@ class InventoryCompareService
             'owner_id' => ['multi' => ','],
             'date_start' => ['alias' => 'created_at' , 'startDate' => ' 00:00:00'],
             'date_end' => ['alias' => 'created_at' , 'endDate' => ' 23:59:59'],
-            'mission_code' => ['timeLimit' => 20],
+            'mission_code' => ['timeLimit' => 15],
+            'custom_location' => ['timeLimit' => 15],
             'id' => ['multi' => ','],
         ];
         $inventoryCompares = app(QueryService::class)->query($param,$inventoryCompares,$columnQueryRules,'inventory_compares');

+ 23 - 24
app/Services/StoreItemService.php

@@ -8,9 +8,6 @@ use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
 use App\Store;
 use App\StoreItems;
-use Carbon\Carbon;
-use Doctrine\DBAL\Query\QueryBuilder;
-use Illuminate\Support\Facades\DB;
 
 Class StoreItemService
 {
@@ -69,10 +66,9 @@ Class StoreItemService
 //        });
         return $asnDetails;
     }
-    //TODO
+
     public function createStoreItem($asnDetails)
     {
-
         if ($asnDetails->isEmpty()) return null;
         ini_set('memory_limit', '512M');
         $stores = Store::query()->whereIn('asn_code', array_unique(data_get($asnDetails, '*.asnno')))->get();
@@ -91,10 +87,12 @@ Class StoreItemService
         /**
          * @var DataHandlerService $dataHandlerService
          * @var CommodityService $commodityService
+         * @var OwnerService $ownerService
          */
         $dataHandlerService = app(DataHandlerService::class);
         $commodityService = app(CommodityService::class);
-        $owners = Owner::query()->whereIn('code', array_unique(data_get($asnDetails,'*.customerid')))->get();
+        $ownerService = app(OwnerService::class);
+        $owners = $ownerService->getOwnerByCodes(array_unique(data_get($asnDetails,'*.customerid')));
         $owner_map=[];
         foreach ($owners as $owner){
             $owner_map[$owner->code]=$owner->id;
@@ -129,7 +127,7 @@ Class StoreItemService
                 'name' => $asnDetail->skudescrc,
                 'sku' => $asnDetail->sku,
                 'amount' => $asnDetail->receivedqty ?? 0,
-                'quality' => $asnDetail->qualityStatus ?$asnDetail->qualityStatus->codename_c :' ',
+                'quality' => $asnDetail->qualityStatus ? $asnDetail->qualityStatus->codename_c :'',
                 'status' => $status ? $status : $asnDetail->lineStatus->codename_c,
                 'created_at' => $asnDetail->addtime ?? null,
                 'updated_at' => $asnDetail->edittime ?? null,
@@ -152,19 +150,19 @@ Class StoreItemService
             }
         }
     }
-    //TODO
+
     public function updateStoreItem($asnDetails)
     {
-        if (!$asnDetails || $asnDetails->count() == 0) {
-            return null;
-        }
+        if (!$asnDetails || $asnDetails->count() == 0) return null;
         /**
          * @var DataHandlerService $dataHandlerService
          * @var CommodityService $commodityService
+         * @var OwnerService $ownerService
          */
         $dataHandlerService = app(DataHandlerService::class);
         $commodityService = app(CommodityService::class);
-        $owners = Owner::query()->whereIn('code', array_unique(data_get($asnDetails,'*.customerid')))->get();
+        $ownerService = app(OwnerService::class);
+        $owners = $ownerService->getOwnerByCodes(array_unique(data_get($asnDetails,'*.customerid')));
         $owner_map=[];
         foreach ($owners as $owner){
             $owner_map[$owner->id]=$owner->code;
@@ -186,7 +184,7 @@ Class StoreItemService
         ]];
         $delete_storeItems = [];
         foreach ($storeItems as $storeItem) {
-            $commodity=$dataHandlerService->getKeyValue(['id'=>$storeItem->commodity_id],$commodities_map);if (!$commodity)continue;
+            $commodity= $dataHandlerService->getKeyValue(['id'=>$storeItem->commodity_id],$commodities_map);if (!$commodity) continue;
             $asnDetail = $dataHandlerService
                 ->getKeyValue(['asnno' => $storeItem->store_asn_code, 'asnlineno' => $storeItem->asn_line_code,'customerid'=>$owner_map[$commodity->owner_id],'sku' => $commodity->sku], $asnDetails_map);
             if (!$asnDetail) {
@@ -194,20 +192,21 @@ Class StoreItemService
                 continue;
             }
             $status = null;
-            if ($asnDetail->lineStatus && $asnDetail->lineStatus->codename_c == '完全收货') $status = '已入库';
-            if ($asnDetail->lineStatus && $asnDetail->lineStatus->codename_c == '订单创建') $status = '未入库';
-            if ($storeItem->updated_at != $asnDetail->edittime) {
+            if ($asnDetail['lineStatus'] && $asnDetail['lineStatus']['codename_c'] == '完全收货') $status = '已入库';
+            if ($asnDetail['lineStatus'] && $asnDetail['lineStatus']['codename_c'] == '订单创建') $status = '未入库';
+            if ($storeItem->updated_at != $asnDetail['edittime']) {
                 $updateParams[] = [
                     'id' => $storeItem->id,
                     'store_id' => $storeItem->store->id,
-                    'asn_line_code' => (string)$asnDetail->asnlineno,
-                    'name' => $asnDetail->skudescrc,
-                    'sku' => $asnDetail->sku,
-                    'amount' => $asnDetail->receivedqty ?? 0,
-                    'quality' => $asnDetail->qualityStatus ?$asnDetail->qualityStatus->codename_c :' ',
-                    'status' => $status ? $status : $asnDetail->lineStatus->codename_c,
-                    'created_at' => $asnDetail->addtime ?? null,
-                    'updated_at' => $asnDetail->edittime ?? null,
+                    'asn_line_code' => (string)$asnDetail['asnlineno'],
+                    'name' => $asnDetail['skudescrc'],
+                    'sku' => $asnDetail['sku'],
+                    'barcode' => $asnDetail['basSku'] ? $asnDetail['basSku']['alternate_sku1'] : '',
+                    'amount' => $asnDetail['receivedqty'] ?? 0,
+                    'quality' => $asnDetail['qualityStatus'] ? $asnDetail['qualityStatus']['codename_c'] : '',
+                    'status' => $status ? $status : $asnDetail['lineStatus']['codename_c'],
+                    'created_at' => $asnDetail['addtime'] ?? null,
+                    'updated_at' => $asnDetail['edittime'],
                 ];
             }
         }

+ 4 - 12
app/Services/StoreService.php

@@ -174,16 +174,8 @@ Class StoreService
         $dataHandlerService = app(DataHandlerService::class);
         $stores = $this->getByWms($asnHerders);
         $store_asn_code_map = $dataHandlerService->dataHeader(['asn_code'], $stores);
-        $owner_codes = [];
-        $warehouse_codes = [];
-        foreach ($asnHerders as $asnHerder) {
-            if (!empty($asnHerder['customerid']))
-                $owner_codes[$asnHerder['customerid']] = $asnHerder['customerid'];
-            if (!empty($asnHerder['warehouseid']))
-                $warehouse_codes[$asnHerder['warehouseid']] = $asnHerder['warehouseid'];
-        }
-        $owners = $ownerService->getOwnerByCodes($owner_codes);
-        $warehouses = $wareHouseService->getWareHouseByCodes($warehouse_codes);
+        $owners = $ownerService->getOwnerByCodes(array_unique(data_get($asnHerders,'*.customerid')));
+        $warehouses = $wareHouseService->getWareHouseByCodes(array_unique(data_get($asnHerders,'*.warehouseid')));
         $owner_code_map = $dataHandlerService->dataHeader(['code'], $owners);
         $warehouses_map = $dataHandlerService->dataHeader(['code'], $warehouses);
         $updateParams = [[
@@ -230,8 +222,8 @@ Class StoreService
             }
         }
         /** @var StoreItemService $storeItemService */
-        //$storeItemService = app(StoreItemService::class);
-        //$storeItemService->storeItemUpdateByWms($asnHerders);
+        $storeItemService = app(StoreItemService::class);
+        $storeItemService->storeItemUpdateByWms($asnHerders);
         /** @var RejectedBillService $rejectedBillService */
         $rejectedBillService = app(RejectedBillService::class);
         $rejectedBillService->syncLoadedStatusByAsnHerder($asnHerders);

+ 10 - 4
config/sync.php

@@ -5,8 +5,11 @@ return [
         'start_at'=> '',    // 开始同步WMS的时间  时间格式: yyyy-MM-dd HH:mm:ss 如 2020-09-05 13:15:16
     ],
     'asn_sync' => [
-        'interval' => 1,   // 时间以分为单位
-        'start_at'=> '',    // 开始同步WMS的时间  时间格式: yyyy-MM-dd HH:mm:ss 如 2020-09-05 13:15:16
+        'enabled' => true,
+        'restart' => 10,  //重新启动时间 分钟为单位
+        'task_start_at' => 'last_asn_sync_task_start_at',
+        'task_end_at' => 'last_asn_sync_task_end_at',
+        'task_err_at' => 'last_asn_sync_task_error_at',
         'created_at'=>'asn_last_created_sync_at',
         'updated_at'=>'asn_last_updated_sync_at',
         'cache_prefix'=>[
@@ -19,8 +22,11 @@ return [
         ]
     ],
     'commodity_sync' => [
-        'interval' => 1,   // 时间以分为单位
-        'start_at'=> '',    // 开始同步WMS的时间  时间格式: yyyy-MM-dd HH:mm:ss
+        'enabled' => true,
+        'restart' => 10,  //重新启动时间 分钟为单位
+        'task_start_at' => 'last_commodity_sync_task_start_at',
+        'task_end_at' => 'last_commodity_sync_task_end_at',
+        'task_err_at' => 'last_commodity_sync_task_error_at',
         'created_at'=>'commodity_last_created_sync_at',
         'updated_at'=>'commodity_last_updated_sync_at',
         'cache_prefix'=>[

+ 32 - 0
database/migrations/2020_12_24_142511_add_custom_location_index_to_inventory_compares.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddCustomLocationIndexToInventoryCompares extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('inventory_compares', function (Blueprint $table) {
+            $table->index(['custom_location','created_at'],'inventory_compares_custom_location_and_created_at_index');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('inventory_compares', function (Blueprint $table) {
+            $table->dropIndex('inventory_compares_custom_location_and_created_at_index');
+        });
+    }
+}

+ 2 - 1
resources/views/inventory/statement/inventoryCompare.blade.php

@@ -199,6 +199,7 @@
                     ],
                     [
                         {name:'date_end',type:'dateTime',tip:'选择创建日期的结束时间'},
+                        {name:'custom_location',type:'input',tip:'属性仓:糊模查找需要在左边打上%符号',placeholder: '属性仓'},
                         {name: 'differ', type: 'select', placeholder: '差值', data: this.differ},
                     ],
                 ];
@@ -217,7 +218,7 @@
                     {name: 'commodity_name', value: '商品名称'},
                     {name:'commodity_sku',value: '商品编码'},
                     {name: 'commodity_barcodes', value: '商品条码', neglect: true},
-                    {name: 'amount', value: '属性仓', neglect: true},
+                    {name: 'custom_location', value: '属性仓', neglect: true},
                     {name: 'quality', value: '质量状态', neglect: true},
                     {name: 'amount_in_sys',value: '宝时库存', neglect: true},
                     {name: 'amount_in_compare', value: '参考库存', neglect: true},