Explorar o código

盘收导入报错

Zhouzhendong %!s(int64=5) %!d(string=hai) anos
pai
achega
c5e0803ccd

+ 43 - 0
app/Console/Commands/SyncBatchTask.php

@@ -0,0 +1,43 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Services\DocWaveHeaderService;
+use Illuminate\Console\Command;
+
+class SyncBatchTask extends Command
+{
+    /**
+     * @var string
+     */
+    protected $signature = 'sync:batch';
+
+    /**
+     * @var string
+     */
+    protected $description = 'sync wms batch task';
+
+    /**
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        /** @var DocWaveHeaderService $service */
+        $service = app(DocWaveHeaderService::class);
+        $date = $service->getSyncDate();
+        $flux = $service->get(["edittime"=>$date],["edittime"=>"gtOrEqual"]);
+        if (!$flux)return;
+
+
+    }
+}

+ 6 - 6
app/Http/Controllers/TestController.php

@@ -34,6 +34,7 @@ use App\RejectedBillItem;
 use App\Services\CacheService;
 use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
+use App\Services\DocWaveHeaderService;
 use App\Services\FeatureService;
 use App\Services\InventoryCompareService;
 use App\Services\OracleDocAsnHerderService;
@@ -95,12 +96,11 @@ class TestController extends Controller
         }
     }
     public function test4(){
-        $units = Unit::get();
-        //dd($units);
-        foreach ($units as $index => $unit){
-            if ($index!=1)unset($units[$index]);
-        }
-        dd($units);
+        dd(app(DocWaveHeaderService::class)->getSyncDate());
+    }
+    public function t($a)
+    {
+        return 1258+$a;
     }
 
     public function updateLaborRemark(){

+ 15 - 15
app/Imports/StoreCheckingReceiveImport.php

@@ -5,9 +5,7 @@ namespace App\Imports;
 use App\Http\Controllers\CommodityController;
 use App\Services\CommodityBarcodeService;
 use App\Services\CommodityService;
-use App\Services\LogService;
 use Carbon\Carbon;
-use Illuminate\Support\Arr;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Cache;
 use Maatwebsite\Excel\Concerns\ToCollection;
@@ -186,7 +184,7 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
                 $createCommodities = [];
                 $skus = [];
                 $skuMap = [];
-                $date = Carbon::now();
+                $date = Carbon::now()->toDateTimeString();
                 foreach ($commodities as $arr){
                     foreach ($arr as $index){
                         $item = $items[$index];
@@ -196,7 +194,7 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
                         if (isset($skuMap[$sku])) $skuMap[$sku][] = $index;
                         else {
                             $skuMap[$sku] = [$index];
-                            $skus = $sku;
+                            $skus[] = $sku;
 
                             $commodity = [
                                 "name" => $item["商品名称"],
@@ -219,15 +217,19 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
 
                     //拿到商品ID录入条码
                     $barcodes = [];
-                    $date = Carbon::now();
+                    $date = Carbon::now()->toDateTimeString();
                     $commoditiesTem = $commodityService->get(['owner_id'=>$owner->id, 'sku'=>$skus]);
+                    $exist = [];
                     foreach ($commoditiesTem as $item){
                         foreach ($skuMap[$item->sku] as $index){
-                            $barcodes[] = [
-                                'commodity_id' => $item->id,
-                                'code' => $items[$index]["条码"],
-                                'created_at' => $date,
-                            ];
+                            if (!isset($exist[$item->id."_".$items[$index]["条码"]])){
+                                $barcodes[] = [
+                                    'commodity_id' => $item->id,
+                                    'code' => $items[$index]["条码"],
+                                    'created_at' => $date,
+                                ];
+                                $exist[$item->id."_".$items[$index]["条码"]] = true;
+                            }
                             $items[$index]["commodity_id"] = $item->id;
                             unset($items[$index]["SKU"]);
                             unset($items[$index]["商品名称"]);
@@ -235,13 +237,12 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
                         }
                     }
                     if (count($barcodes) > 0){
-                        $commodityBarcodeService->insert(array_unique($barcodes));
+                        $commodityBarcodeService->insert($barcodes);
                         app('LogService')->log(__METHOD__,"盘收导入录入条码",json_encode($barcodes));
                     }
                 }
             }
         }
-
         if (count($items) < 1){
             Cache::put("storeCheckingReceive",["success"=>false, "errors"=>$errors],86400);
             return false;
@@ -251,13 +252,12 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
             "created_at" => date('Y-m-d H:i:s'),
             'status' => "已导入",
         ]);
-        app('LogService')->log(__METHOD__,"导入盘收任务-录入盘收任务",json_encode($storeCheckingReceive,JSON_UNESCAPED_UNICODE));
-        $storeCheckingReceive->owner_name = $owner_name;
+        $storeCheckingReceive->owner_name = $owner->name;
 
+        app('LogService')->log(__METHOD__,"导入盘收任务-录入盘收任务",json_encode($storeCheckingReceive,JSON_UNESCAPED_UNICODE));
         foreach ($items as &$it){
             $it["store_checking_receive_id"] = $storeCheckingReceive->id;
         }
-
         app('StoreCheckingReceiveItemService')->insert($items);
         app('LogService')->log(__METHOD__,"导入盘收任务-批量录入盘收记录",json_encode($items,JSON_UNESCAPED_UNICODE));
 

+ 39 - 0
app/Services/DocWaveHeaderService.php

@@ -0,0 +1,39 @@
+<?php 
+
+namespace App\Services; 
+
+use App\ValueStore;
+use Carbon\Carbon;
+use Illuminate\Support\Facades\DB;
+use Yajra\Oci8\Query\OracleBuilder;
+
+Class DocWaveHeaderService
+{ 
+
+    public function get(array $params, $rule = [])
+    {
+        /** @var OracleBuilder $query */
+        $query = DB::connection("oracle")->table("doc_wave_header")->orderByDesc("edittime");
+        foreach ($params as $column=>$param){
+            if (isset($rule[$column]))$query = $this->rule($query,$rule[$column],$column,$param);
+            else $query->where($column,$param);
+        }
+        return $query->get();
+    }
+    private function rule(OracleBuilder $query, $rule, $column, $value)
+    {
+        switch ($rule){
+            case "gtOrEqual":
+                $query->where($column,">=",$value);
+                break;
+        }
+        return $query;
+    }
+
+
+    public function getSyncDate()
+    {
+        $valueStore = ValueStore::query()->where("name","wave_last_sync_date")->first();
+        return $valueStore->value ?? Carbon::now()->subSeconds(65)->toDateTimeString();
+    }
+}

+ 28 - 0
database/migrations/2020_11_27_133112_save_value_store_data.php

@@ -0,0 +1,28 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class SaveValueStoreData extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        \App\ValueStore::query()->firstOrCreate(["name"=>"wave_last_sync_date"]);
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        \App\ValueStore::query()->where("name","wave_last_sync_date")->delete();
+    }
+}