Zhouzhendong il y a 5 ans
Parent
commit
17b0aeb0b6

+ 1 - 1
app/CustomerTag.php

@@ -14,6 +14,6 @@ class CustomerTag extends Model
     use ModelTimeFormat;
 
     protected $fillable=[
-        "name","explanation"
+        "name","explanation","count"
     ];
 }

+ 1 - 1
app/Http/Controllers/CustomerBaseController.php

@@ -31,7 +31,7 @@ class CustomerBaseController extends Controller
             $query->with(["status:id,name,created_at","user:id,name"])->orderByDesc('id');
         }]);
         $owners = app("OwnerService")->getIntersectPermitting(['id','name','customer_id']);
-        $tags = CustomerTag::query()->get(["id","name"]);
+        $tags = CustomerTag::query()->orderByDesc('count')->get(["id","name"]);
         return response()->view('customer.customer.index',compact("customers","owners","tags"));
     }
 

+ 50 - 13
app/Http/Controllers/StoreController.php

@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
 
 use App\Depository;
 use App\Owner;
+use App\Services\common\BatchUpdateService;
 use App\Services\StoreService;
 use App\Store;
 use App\StoreItems;
@@ -241,20 +242,56 @@ class StoreController extends Controller
         oci_close($conn);
         $warehouse = app('WarehouseService')->firstOrCreate(["code"=>$asn->warehouseid],["code"=>$asn->warehouseid,"name"=>$asn->warehouseid]);
         $owner = app('OwnerService')->firstOrCreate(['code'=>$asn->customerid],['code'=>$asn->customerid,"name"=>$asn->customerid]);
-        $store = app('StoreService')->create([
-            'asn_code'=>$asnno,
-            'warehouse_id'=>$warehouse->id,
-            'owner_id'=>$owner->id,
-            'stored_method'=>'快速入库',
-            'status'=>'已入库',
-            'remark'=>$asn->notes,
-        ]);
-        app('LogService')->log(__METHOD__,"快速入库",json_encode($store));
-        foreach ($items as &$item){
-            $item["store_id"] = $store->id;
+        $store = Store::query()->with("storeItems")->where("asn_code",$asnno)->first();
+        if (!$store){
+            $store = app('StoreService')->create([
+                'asn_code'=>$asnno,
+                'warehouse_id'=>$warehouse->id,
+                'owner_id'=>$owner->id,
+                'stored_method'=>'快速入库',
+                'status'=>'已入库',
+                'remark'=>$asn->notes,
+            ]);
+            app('LogService')->log(__METHOD__,"快速入库",json_encode($store));
+            foreach ($items as &$item){
+                $item["store_id"] = $store->id;
+            }
+            app('StoreItemService')->insert($items);
+            app('LogService')->log(__METHOD__,"快速录入子项",json_encode($items));
+        }else{
+            $store->update([
+                'asn_code'=>$asnno,
+                'warehouse_id'=>$warehouse->id,
+                'owner_id'=>$owner->id,
+                'stored_method'=>'快速入库',
+                'status'=>'已入库',
+                'remark'=>$asn->notes,
+            ]);
+            $insertItem = [];
+            if ($store->storeItems){
+                $updateItem = [["id","asn_line_code","name","sku","barcode","amount","quality","status"]];
+                $existItem = [];
+                $store->storeItems->each(function ($item)use(&$existItem){
+                    $existItem[$item->asn_line_code] = $item->id;
+                });
+                foreach ($items as $item){
+                    if (isset($existItem[$item['asn_line_code']])){
+                        $item["id"] = $existItem[$item['asn_line_code']];
+                        $updateItem[] = $item;
+                    }else {
+                        $item["store_id"] = $store->id;
+                        $insertItem[] = $item;
+                    }
+                }
+                if (count($updateItem) > 1) app(BatchUpdateService::class)->batchUpdate("store_items",$updateItem);
+            }else{
+                foreach ($items as $item){
+                    $item["store_id"] = $store->id;
+                    $insertItem[] = $item;
+                }
+            }
+            if ($insertItem)app('StoreItemService')->insert($items);
         }
-        app('StoreItemService')->insert($items);
-        app('LogService')->log(__METHOD__,"快速录入子项",json_encode($items));
         return ['success'=>true,"data"=>"已成功将“".$asnno."”入库"];
     }