Kaynağa Gözat

临时修改(asn tongbu)

haozi 5 yıl önce
ebeveyn
işleme
1baf6a7624

+ 2 - 2
app/Http/Controllers/PriceModelController.php

@@ -269,8 +269,8 @@ class PriceModelController extends Controller
             $service->insertRule($insert);
         }
         //录入中间表
-        /** @var OwnerPriceOperation $model */
-        if ($request->input("owner_id"))$model->ownerPriceOperationOwners()->sync($request->input("owner_id"));
+        /** @var OwnerPriceOperation $ownerPriceOperation */
+        if ($request->input("owner_id"))$ownerPriceOperation->ownerPriceOperationOwners()->sync($request->input("owner_id"));
         LogService::log(__METHOD__,"计费模型-录入作业计费",json_encode($request->input(),JSON_UNESCAPED_UNICODE));
         return response()->redirectTo("maintenance/priceModel/operation")->with("successTip","创建“".$request->input("name")."”成功");
     }

+ 1 - 6
app/Http/Controllers/StoreController.php

@@ -4,9 +4,6 @@ namespace App\Http\Controllers;
 
 use App\Depository;
 use App\Owner;
-use App\Services\LogService;
-use App\Services\OracleDocAsnDetailService;
-use App\Services\OracleDocAsnHerderService;
 use App\Services\StoreService;
 use App\Store;
 use App\StoreItems;
@@ -22,10 +19,8 @@ use Illuminate\Routing\Redirector;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Validator;
-use Illuminate\Support\Str;
 use Illuminate\View\View;
 use App\Http\Controllers\Api\thirdPart\flux\StoreController as FStoreController;
-use Ramsey\Uuid\Uuid;
 
 class StoreController extends Controller
 {
@@ -36,7 +31,7 @@ class StoreController extends Controller
         $storeService=app(StoreService::class);
         $stores=$storeService->paginate($request->input());
         $warehouses=Warehouse::query()->get();
-        $owners=Owner::query()->select('id','name')->get();
+        $owners=app("OwnerService")->getIntersectPermitting();
         return view('store.inStorage.index',compact('stores','warehouses','owners'));
     }
     /**

+ 4 - 1
app/Http/Controllers/TestController.php

@@ -57,6 +57,7 @@ use App\Store;
 use App\StoreCheckingReceiveItem;
 use App\StoreItems;
 use App\User;
+use App\ValueStore;
 use App\Warehouse;
 use App\Waybill;
 use App\WaybillPriceModel;
@@ -1071,7 +1072,9 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
     public function testSyncAsn()
     {
         dump('start'.(string)Carbon::now());
-        app(StoreService::class)->storeCreateByWms();
+app(StoreService::class)->storeCreateByWms();
+//       $start=ValueStore::query()->where('name','asn_last_created_sync_at')->value('value');
+//       app(OracleDocAsnHerderService::class)->getWmsAsnOnStartDateCreate($start);
         app(StoreService::class)->storeUpdateByWms();
         dump('end'.(string)Carbon::now());
     }

+ 3 - 4
app/OracleDOCASNDetail.php

@@ -11,9 +11,7 @@ class OracleDOCASNDetail extends Model
     protected $connection="oracle";
     protected $table="Doc_ASN_Details";
 
-    public function sku(){
-        return OracleBasSKU::query()->where(['sku'=>$this->sku,'customerId'=>$this->customerId])->get();
-    }
+
     public function oracleDocAsnHeader(){
         return $this->belongsTo('App\OracleDOCASNHeader','asnno','asnno');
     }
@@ -29,6 +27,7 @@ class OracleDOCASNDetail extends Model
     }
     public function basSku()
     {
-        return $this->hasOne(OracleBasSKU::class,'sku','sku');
+        return $this->hasOne(OracleBasSKU::class,'sku','sku')
+            ->select('customerid','sku','alternate_sku1');
     }
 }

+ 2 - 2
app/Services/CommodityBarcodeService.php

@@ -128,8 +128,8 @@ Class CommodityBarcodeService
                 try {
                     $bool = $this->insert($item);
                     if ($bool) {
-                        app('LogService')->log(__METHOD__, __FUNCTION__, "批量添加 CommodityBarcode Success " . count($insert_params) . ' || ' . json_encode($insert_params));
-                    } else app('LogService')->log(__METHOD__, __FUNCTION__, "批量添加 CommodityBarcode FAILED " . ' || ' . json_encode($insert_params));
+                        app('LogService')->log(__METHOD__, __FUNCTION__, "批量添加 CommodityBarcode Success " . count($item) . ' || ' . json_encode($item));
+                    } else app('LogService')->log(__METHOD__, __FUNCTION__, "批量添加 CommodityBarcode FAILED " . ' || ' . json_encode($item));
                 } catch (\Exception $e) {
                     app('LogService')->log(__METHOD__, __FUNCTION__, "批量添加 CommodityBarcode ERROR " . ' || ' . json_encode($insert_params) . ' || ' . json_encode($e->getMessage()) . ' || ' . json_encode($e->getTraceAsString()));
                 }

+ 10 - 5
app/Services/OracleDocAsnHerderService.php

@@ -9,23 +9,28 @@ Class OracleDocAsnHerderService
     public function getWmsAsnOnStartDateCreate($startDate)
     {
         if (!$startDate) return null;
-        return OracleDOCASNHeader::query()
-            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
+        $oracleDocAsnHerder= 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)
             ->orderByDesc('addtime')
             ->get();
+        return $oracleDocAsnHerder;
     }
 
     public function getWmsAsnOnStartDateEdit($startDate)
     {
         if (!$startDate) return null;
         $oracleDocAsnHerder= OracleDOCASNHeader::query()
-            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($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')

+ 40 - 14
app/Services/StoreItemService.php

@@ -2,6 +2,7 @@
 
 namespace App\Services;
 
+use App\OracleDOCASNDetail;
 use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
 use App\Store;
@@ -26,15 +27,28 @@ Class StoreItemService
     public function storeItemUpdateByWms($asnHerders)
     {
         if (!$asnHerders) return null;
-//        if (count($KSRK)>0) $asnHerders=$asnHerders->filter(function ($asnHerder)use($KSRK){
-//            return !in_array($asnHerder->asnno,$KSRK);
-//        });
         $asnDetails = $this->getAsnDetailsByAsnHerder($asnHerders);
         $this->updateStoreItem($asnDetails);
     }
 
     public function getAsnDetailsByAsnHerder($asnHerders)
     {
+//        $customerids=collect();
+//        $asnnos=collect();
+//        foreach ($asnHerders as $asnHerder){
+//            $customerids->add($asnHerder->customerid);
+//            $asnnos->add($asnHerder->asnno);
+//        }
+//        $customerids=$customerids->unique();
+//        $asnnos=$asnnos->unique();
+//        $asnDetails=OracleDOCASNDetail::query()
+//            ->with(['lineStatus', 'qualityStatus','basSku'=>function($query)use($customerids){
+//                $query->whereIn('customerid',$customerids);
+//            }])
+//            ->whereIn('asnno',$asnnos)
+//            ->select('asnno','asnlineno','customerid','sku','skudescrc','linestatus','lotatt08','lotatt05','receivedqty','expectedqty','addtime','edittime')
+//            ->get();
+
         $asnDetails = collect();
         $asnHerders->each(function ($asnHeader) use ($asnDetails) {
             $asnHeader->asnDetails->each(function ($asnDetail) use ($asnDetails) {
@@ -56,9 +70,8 @@ Class StoreItemService
             $store_asn_code_map[$store->asn_code] = $store;
         }
         $params = $this->getParamsByAsnDetails($asnDetails, $store_asn_code_map);
-        if (count($params) > 0) {
-            $this->insertStoreItem($params);
-        }
+        if (count($params) > 0) $this->insertStoreItem($params);
+
     }
 
     public function getParamsByAsnDetails($asnDetails, $store_asn_code_map)
@@ -94,12 +107,16 @@ Class StoreItemService
 
     public function insertStoreItem(array $params)
     {
-        if (count($params) === 0) return [];
-        try {
-            $this->insert($params);
-            LogService::log(__METHOD__, __FUNCTION__, '批量创建 store_item success' . count($params) . json_encode($params));
-        } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '批量创建 store_item error' . json_encode($params) . '||' . $e->getMessage() . '||' . $e->getTraceAsString());
+        if (count($params) === 0) return;
+        foreach (array_chunk($params, 1000) as $item) {
+            try {
+                $bool = $this->insert($item);
+                if ($bool) {
+                    app('LogService')->log(__METHOD__, __FUNCTION__, "批量创建 store_item success " . count($item) . ' || ' . json_encode($item));
+                } else app('LogService')->log(__METHOD__, __FUNCTION__, "批量添加 store_item FAILED " . ' || ' . json_encode($item));
+            } catch (\Exception $e) {
+                app('LogService')->log(__METHOD__, __FUNCTION__, "批量添加 store_item ERROR " . ' || ' . json_encode($params) . ' || ' . json_encode($e->getMessage()) . ' || ' . json_encode($e->getTraceAsString()));
+            }
         }
     }
 
@@ -150,8 +167,17 @@ Class StoreItemService
                 ];
             }
         }
-        if (count($updateParams) > 1) {
-            $this->batchUpdate($updateParams);
+        if (count($updateParams) > 0) {
+            foreach (array_chunk($updateParams, 1000) as $item) {
+                try {
+                    $bool=$this->batchUpdate($item);
+                    if ($bool) {
+                        app('LogService')->log(__METHOD__, __FUNCTION__, "批量修改 store_item success " . count($item) . ' || ' . json_encode($item));
+                    } else app('LogService')->log(__METHOD__, __FUNCTION__, "批量修改 store_item FAILED " . ' || ' . json_encode($item));
+                } catch (\Exception $e) {
+                    app('LogService')->log(__METHOD__, __FUNCTION__, "批量修改 store_item ERROR " . ' || ' . json_encode($updateParams) . ' || ' . json_encode($e->getMessage()) . ' || ' . json_encode($e->getTraceAsString()));
+                }
+            }
         }
         if (count($delete_storeItems) > 0) $this->deleteStoreItem($delete_storeItems);
         unset($updateParams, $asnDetails, $delete_storeItems);

+ 34 - 17
app/Services/StoreService.php

@@ -15,7 +15,7 @@ Class StoreService
 {
     private function conditionQuery(array $params)
     {
-        $stores = Store::query()->with(['storeItems.store', 'warehouse', 'owner'])->whereNotIn('stored_method', ['快速入库', '正常'])->orderBy('id', 'DESC');
+        $stores = Store::query()->with(['storeItems.store', 'warehouse', 'owner'])->where('is_fast_stored', '无')->orderBy('id', 'DESC');
         $columnQueryRules = [
             'asn_code' => ['like' => ''],
             'created_at_start' => ['alias' => 'created_at', 'startDate' => ' 00:00:00'],
@@ -50,11 +50,15 @@ Class StoreService
         /** @var OracleDocAsnHerderService $oracleDocAsnHerderService */
         $oracleDocAsnHerderService = app(OracleDocAsnHerderService::class);
         $last_time = $this->getAsnLastSyncAt($created_at, 'create');
+        //dump('getWmsAsnOnStartDateCreate'.'start'.(string)Carbon::now());
         $asnHerders = $oracleDocAsnHerderService->getWmsAsnOnStartDateCreate($last_time);
+        //dump('getWmsAsnOnStartDateCreate'.'end'.(string)Carbon::now());
         $last_time = $asnHerders->first()['addtime'];
         $last_records = $asnHerders->where('addtime', $last_time);
         if (!$asnHerders) return;
+        //dump('createStore'.'start'.(string)Carbon::now());
         $this->createStore($asnHerders);
+        //dump('createStore'.'end'.(string)Carbon::now());
         $this->deleteCacheKey($create_set, $create_keys);
         $this->setLastRecordsByRedis($create_key, $create_set, $create_keys, $last_records);
         $this->setAsnLastSyncAt($created_at, $last_time);
@@ -70,12 +74,16 @@ Class StoreService
         /** @var OracleDocAsnHerderService $oracleDocAsnHerderService */
         $oracleDocAsnHerderService = app(OracleDocAsnHerderService::class);
         $last_time = $this->getAsnLastSyncAt($updated_at, 'update');
+        //dump('getWmsAsnOnStartDateEdit'.'start'.(string)Carbon::now());
         $asnHerders = $oracleDocAsnHerderService->getWmsAsnOnStartDateEdit($last_time);
+        //dump('getWmsAsnOnStartDateEdit'.'end'.(string)Carbon::now());
         $last_time = $asnHerders->first()['edittime'];
         $last_records = $asnHerders->where('edittime', $last_time);
         if (!$asnHerders) return;
-        $this->createStore($asnHerders);
+        //dump('updateStore'.'start'.(string)Carbon::now());
+        //$this->createStore($asnHerders);
         $this->updateStore($asnHerders);
+        //dump('updateStore'.'end'.(string)Carbon::now());
         $this->deleteCacheKey($update_set, $update_keys);
         $this->setLastRecordsByRedis($update_key, $update_set, $update_keys, $last_records);
         $this->setAsnLastSyncAt($updated_at, $last_time);
@@ -107,9 +115,7 @@ Class StoreService
             $warehouses_code_map[$warehouse->code] = $warehouse;
         }
         $params = $this->getParamsByAsnHeader($asnHerders, $owners_code_map, $warehouses_code_map);
-        if (count($params) > 0) {
-            $this->insertStore($params);
-        }
+        if (count($params) > 0) $this->insertStore($params);
         /** @var StoreItemService $storeItemService */
         $storeItemService = app(StoreItemService::class);
         $storeItemService->storeItemCreateByWms($asnHerders);
@@ -150,12 +156,16 @@ Class StoreService
 
     public function insertStore(array $params)
     {
-        if (count($params) === 0) return [];
-        try {
-            $this->insert($params);
-            LogService::log(__METHOD__, __FUNCTION__, '批量创建 store success' . count($params) . json_encode($params));
-        } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '批量创建 store error' . json_encode($params) . '||' . json_encode($e->getMessage()) . '||' . $e->getTraceAsString());
+        if (count($params) === 0) return;
+        foreach (array_chunk($params, 1000) as $item) {
+            try {
+                $bool = $this->insert($item);
+                if ($bool) {
+                    app('LogService')->log(__METHOD__, __FUNCTION__, "批量创建 store success " . count($item) . ' || ' . json_encode($item));
+                } else app('LogService')->log(__METHOD__, __FUNCTION__, "批量添加 store FAILED " . ' || ' . json_encode($item));
+            } catch (\Exception $e) {
+                app('LogService')->log(__METHOD__, __FUNCTION__, "批量添加 store ERROR " . ' || ' . json_encode($params) . ' || ' . json_encode($e->getMessage()) . ' || ' . json_encode($e->getTraceAsString()));
+            }
         }
     }
 
@@ -187,14 +197,9 @@ Class StoreService
         $updateParams = [[
             'id', 'asn_code', 'warehouse_id', 'owner_id', 'stored_method', 'status', 'remark', 'updated_at'
         ]];
-//        $KSRK = [];
         foreach ($asnHerders as $asnHerder) {
             $store = $dataHandlerService->getKeyValue(['asn_code' => $asnHerder->asnno], $store_asn_code_map);
             if (!$store) continue;
-//            if ($store && $store->stored_method == '快速入库') {
-//                array_push($KSRK, $store['asn_code']);
-//                continue;
-//            }
             $owner = $dataHandlerService->getKeyValue(['code' => $asnHerder->customerid], $owner_code_map);
             $warehouse = $dataHandlerService->getKeyValue(['code' => $asnHerder->warehouseid], $warehouses_map);
             $owner_id = $owner->id ?? null;
@@ -220,7 +225,19 @@ Class StoreService
                 ];
             }
         }
-        if (count($updateParams) > 1) $this->batchUpdate($updateParams);
+        if (count($updateParams) > 1) {
+            //$this->batchUpdate($updateParams);
+            foreach (array_chunk($updateParams, 1000) as $item) {
+                try {
+                    $bool=$this->batchUpdate($item);
+                    if ($bool) {
+                        app('LogService')->log(__METHOD__, __FUNCTION__, "批量修改 store success " . count($item) . ' || ' . json_encode($item));
+                    } else app('LogService')->log(__METHOD__, __FUNCTION__, "批量修改 store FAILED " . ' || ' . json_encode($item));
+                } catch (\Exception $e) {
+                    app('LogService')->log(__METHOD__, __FUNCTION__, "批量修改 store ERROR " . ' || ' . json_encode($updateParams) . ' || ' . json_encode($e->getMessage()) . ' || ' . json_encode($e->getTraceAsString()));
+                }
+            }
+        }
         /** @var StoreItemService $storeItemService */
         $storeItemService = app(StoreItemService::class);
         $storeItemService->storeItemUpdateByWms($asnHerders);