Jelajahi Sumber

解决货主同步问题

haozi 5 tahun lalu
induk
melakukan
40f7417e43

+ 2 - 3
app/Http/Controllers/OwnerController.php

@@ -164,9 +164,8 @@ class OwnerController extends Controller
             return ['success' => 'false', 'fail_info' => "没有权限"];
         }
         $id = $request->input('id');
-        $owner = Owner::query()->whereNotNull('deleted_at')->where('id', $id)->update([
-            "deleted_at" => null,
-        ]);
+        $owner = Owner::query()->whereNotNull('deleted_at')->where('id', $id)->first();
+        $owner->update(["deleted_at" => null]);
         app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
         return ['success' => 'true', 'owner' => $owner];
     }

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

@@ -25,6 +25,7 @@ use App\Log;
 use App\Logistic;
 use App\Menu;
 use App\OracleActAllocationDetails;
+use App\OracleBasCustomer;
 use App\OracleBasSKU;
 use App\OracleDOCASNHeader;
 use App\OracleDOCOrderHeader;

+ 8 - 0
app/Observers/OwnerObserver.php

@@ -17,4 +17,12 @@ class OwnerObserver
         if(env('APP_ENV')=='production')
             app("OwnerService")->syncPush($owner);
     }
+
+    public function updated(Owner $owner)
+    {
+        if(env('APP_ENV')=='production'){
+            app("OwnerService")->syncUpdate($owner);
+        }
+    }
+
 }

+ 6 - 6
app/Services/CommodityService.php

@@ -401,7 +401,7 @@ Class CommodityService
         $create_key = config('sync.commodity_sync.cache_prefix.create');
         /** @var OracleBasSkuService $oracleBasSkuService */
         $oracleBasSkuService = app(OracleBasSkuService::class);
-        $last_time = $this->getAsnLastSyncAt($created_at, 'create');
+        $last_time = $this->getCommodityLastSyncAt($created_at, 'create');
         $basSkus = $oracleBasSkuService->getWmsCreatedCommodities($last_time);
         $last_time = $basSkus->first()['addtime'];
         $last_records = $basSkus->where('addtime', $last_time);
@@ -409,7 +409,7 @@ Class CommodityService
         $this->syncCreateCommodity($basSkus);
         $this->deleteCacheKey($create_set, $create_keys);
         $this->setLastRecordsByRedis($create_key, $create_set, $create_keys, $last_records);
-        $this->setAsnLastSyncAt($created_at, $last_time);
+        $this->setCommodityLastSyncAt($created_at, $last_time);
     }
 
     public function syncCommodityUpdated()
@@ -420,7 +420,7 @@ Class CommodityService
         $update_key = config('sync.commodity_sync.cache_prefix.update');
         /** @var OracleBasSkuService $oracleBasSkuService */
         $oracleBasSkuService = app(OracleBasSkuService::class);
-        $last_time = $this->getAsnLastSyncAt($updated_at, 'update');
+        $last_time = $this->getCommodityLastSyncAt($updated_at, 'update');
         $basSkus = $oracleBasSkuService->getWmsUpdatedCommodities($last_time);
         $last_time = $basSkus->first()['edittime'];
         $last_records = $basSkus->where('edittime', $last_time);
@@ -428,7 +428,7 @@ Class CommodityService
         $this->syncUpdateCommodity($basSkus);
         $this->deleteCacheKey($update_set, $update_keys);
         $this->setLastRecordsByRedis($update_key, $update_set, $update_keys, $last_records);
-        $this->setAsnLastSyncAt($updated_at, $last_time);
+        $this->setCommodityLastSyncAt($updated_at, $last_time);
     }
 
     public function syncCreateCommodity($addBasSkus)
@@ -658,7 +658,7 @@ Class CommodityService
         }
     }
 
-    public function getAsnLastSyncAt($key, $type)
+    public function getCommodityLastSyncAt($key, $type)
     {
         $last_time = ValueStore::query()->where('name', $key)->value('value');
         if ($last_time) return $last_time;
@@ -672,7 +672,7 @@ Class CommodityService
         return Carbon::now()->subSeconds(65);
     }
 
-    public function setAsnLastSyncAt($key, $last_time)
+    public function setCommodityLastSyncAt($key, $last_time)
     {
         $asnLastSyncAt = ValueStore::query()->updateOrCreate([
             'name' => $key,

+ 32 - 1
app/Services/OwnerService.php

@@ -235,7 +235,11 @@ Class OwnerService
             if($owner) return $owner;
              $basCustomer = app('OracleBasCustomerService')->first(['Customer_Type'=>'OW','CustomerID'=>$code]);
             if(!$basCustomer)return null;
-            return Owner::query()->create(['name'=>$basCustomer['descr_c'],'code'=>$basCustomer['customerid']]);
+            if($basCustomer && $basCustomer['active_flag']=='Y') return Owner::query()
+                ->create(['name'=>$basCustomer['descr_c'],'code'=>$basCustomer['customerid']]);
+            $deleted_at=Carbon::now()->toDateTimeString();
+            if($basCustomer && $basCustomer['active_flag']=='N') return Owner::query()
+                ->create(['name'=>$basCustomer['descr_c'],'code'=>$basCustomer['customerid'],'deleted_at'=>$deleted_at]);
         });
     }
     public function codeGetOwner($code)
@@ -275,4 +279,31 @@ sql
         }
         return true;
     }
+
+
+    public function syncUpdate($owner)
+    {
+        if (is_array($owner)){
+            $owner = new Owner();
+            foreach ($owner as $column=>$value){
+                $owner[$column] = $value;
+            }
+        }
+        if (is_numeric($owner)){
+            $owner = Owner::query()->find($owner);
+            if (!$owner)return false;
+        }
+        $sql = DB::raw(<<<sql
+    update BAS_CUSTOMER set ACTIVE_FLAG = ?,EDITTIME = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),EDITWHO = ? where CUSTOMERID = ? and CUSTOMER_TYPE = ? 
+sql
+        );
+        $date = date('Y-m-d H:i:s');
+        if ($owner && $owner->deleted_at){
+            DB::connection("oracle")->update($sql,['N',$date,'WAS-'.(Auth::user() ? Auth::user()['name'] : 'SYSTEM'),$owner->code,'OW']);
+        }
+       if ($owner && $owner->deleted_at==null) {
+            DB::connection("oracle")->update($sql,['Y',$date,'WAS-'.(Auth::user() ? Auth::user()['name'] : 'SYSTEM'),$owner->code,'OW']);
+        }
+        return true;
+    }
 }

+ 1 - 1
resources/views/maintenance/owner/recycle.blade.php

@@ -52,7 +52,7 @@
                 restoreSelected:function(owner){
                     let _this=this;
                     confirm('确定要恢复停用货主“' + owner.name + '”吗?');
-                    let ajaxUrl='{{url("apiLocal/owner/restoreSelected")}}';
+                    let ajaxUrl='{{url("maintenance/owners/restoreSelected")}}';
                     axios.post(ajaxUrl,{id:owner.id}).then(function(response){
                         if(response.data.success){
                             tempTip.setDuration(1000);

+ 0 - 1
routes/apiLocal.php

@@ -7,7 +7,6 @@ use Illuminate\Support\Facades\Route;
 地址前缀:/apiLocal/
 */
 Route::post('rejected/recoverSelected', 'RejectedController@apiRecoverSelected');
-Route::post('owner/restoreSelected', 'OwnerController@restoreSelected');
 Route::post('rejectedBillItem/store', 'RejectedBillItemController@apiStore');
 Route::post('rejectedBillItem/update', 'RejectedBillItemController@apiUpdate');
 Route::post('rejectedBillItem/apiGet', 'RejectedBillItemController@apiGet');

+ 1 - 0
routes/web.php

@@ -47,6 +47,7 @@ Route::group(['prefix'=>'maintenance'],function(){
     /** 货主 */
     Route::group(['prefix'=>'owners'],function(){
         Route::get('recycle','OwnerController@recycle');
+        Route::post('restoreSelected', 'OwnerController@restoreSelected');
     });
     Route::group(['prefix'=>'owner'],function (){
         Route::post("get","OwnerController@get");