|
|
@@ -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."”入库"];
|
|
|
}
|
|
|
|