Explorar el Código

根据货主设置 定时回传订单

haozi hace 4 años
padre
commit
36a340a9f1

+ 45 - 3
app/Console/Commands/AccordingToOwnersManualBack.php

@@ -2,7 +2,12 @@
 
 namespace App\Console\Commands;
 
+use App\OracleDOCOrderHeader;
+use App\Owner;
+use App\ValueStore;
+use Carbon\Carbon;
 use Illuminate\Console\Command;
+use Illuminate\Database\Eloquent\HigherOrderBuilderProxy;
 
 class AccordingToOwnersManualBack extends Command
 {
@@ -32,11 +37,48 @@ class AccordingToOwnersManualBack extends Command
 
     /**
      * Execute the console command.
-     *
-     * @return int
      */
     public function handle()
     {
-        return 0;
+        $ownerCodes=Owner::query()->where('is_manual_back',1)->pluck('code');
+        $last_order_manual_back_at=$this->getOrderManualBackAt();
+        $now=Carbon::now()->toDateTimeString();
+        OracleDOCOrderHeader::query()
+            ->whereIn('sostatus',['40','50','60','61'])
+            ->where('edittime','>=',$last_order_manual_back_at)
+            ->where('edittime','<=',$now)
+            ->whereNotNull('soreference5')
+            ->where('manualflag','N')
+            ->whereIn('customerid',$ownerCodes) //指定货主
+            ->where('releasestatus','!=','H')
+            ->update(['manualflag'=>'Y','edittime'=>$now]);
+        $this->setOrderManualBackAt();
+    }
+
+    /**
+     * @return HigherOrderBuilderProxy|mixed|null
+     * 获取订单上次自动回传时间
+     */
+    private function getOrderManualBackAt()
+    {
+        $val = ValueStore::query()
+            ->select("value")
+            ->where("name", "last_order_manual_back_at")
+            ->lockForUpdate()
+            ->first();
+        if (!$val) $val = ValueStore::query()
+            ->create(["name" => "last_order_manual_back_at",'value'=>Carbon::now()->toDateTimeString()]);
+        return $val->value ?? null;
+    }
+
+    /**
+     * 设置订单上次自动回传时间
+     */
+    private function setOrderManualBackAt()
+    {
+        ValueStore::query()
+            ->select("value")
+            ->where("name", "last_order_manual_back_at")
+            ->update(["value" => Carbon::now()->toDateTimeString()]);
     }
 }

+ 1 - 0
app/Console/Kernel.php

@@ -82,6 +82,7 @@ class  Kernel extends ConsoleKernel
         $schedule->command('createProcurementTotalBill')->monthlyOn(1);
         $schedule->command('orderCountingRecordTask')->dailyAt("1:00");
         //$schedule->command('check:cacheRack')->everyMinute();
+        //$schedule->command('AccordingToOwnersManualBack')->everyThirtyMinutes();
     }
 
     /**

+ 14 - 0
app/Http/Controllers/OwnerController.php

@@ -222,4 +222,18 @@ class OwnerController extends Controller
         if ($request->has("customer_id"))$params["customer_id"] = $request->input("customer_id");
         return ["success"=>true,"data"=>app("OwnerService")->get($params,null,false)];
     }
+
+    /**
+     * @param Request $request
+     * @return array
+     * 设置货主是否自动回传订单
+     */
+    public function changeManualBackType(Request $request): array
+    {
+        if (!Gate::allows('货主-编辑')) return ["success"=>false,"data"=>"无权操作!"];
+        $id=$request->input('id');
+        $is_manual_back=$request->input('isManualBack');
+        $owner=app("OwnerService")->changeManualBackStatus($id,$is_manual_back);
+        return ["success"=>true,"data"=>$owner];
+    }
 }

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

@@ -66,6 +66,7 @@ use Decimal\Decimal;
 use Doctrine\DBAL\Exception;
 use Firebase\JWT\JWT;
 use Illuminate\Database\Eloquent\Collection;
+use Illuminate\Database\Eloquent\HigherOrderBuilderProxy;
 use Illuminate\Foundation\Http\FormRequest;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Cache;
@@ -345,22 +346,4 @@ sql;
             }
         }
     }
-
-    public function testDocOrder()
-    {
-        $now=Carbon::now()->toDateTimeString();
-        $before=Carbon::now()->subMinutes(30)->toDateTimeString();
-//        dd($now,$before);
-        $orders=OracleDOCOrderHeader::query()
-            ->whereIn('sostatus',['40','50','60','61'])
-//            ->where('edittime','>=',$before)
-//            ->where('edittime','<=',$now)
-            ->whereNotNull('soreference5')
-            ->where('manualflag','N')
-            ->whereIn('customerid',['BAOSHI']) //指定货主
-            ->where('releasestatus','!=','H')
-            ->get();
-//            ->update(['manualflag'=>'N','edittime'=>$now]);
-        dd($orders);
-    }
 }

+ 5 - 0
app/Owner.php

@@ -41,6 +41,7 @@ class Owner extends Model
         'model_sequence',       //调箱序列(优先级匹配)
         'is_check_asn',          //是否校验ASN(收货时检查此项)
         'owner_group_id',        // 所属组别
+        'is_manual_back',        // 是否开启货主订单一键回传
     ];
     //relevance说明 0:仓储 1:作业 2:快递 3:物流 4:直发 5:系统 存储示例:["0","1"]存在仓储与作业计费
     protected $casts = [
@@ -55,6 +56,10 @@ class Owner extends Model
         0 => "否",
         1 => "是"
     ];
+    const IS_MANUAL_BACK=[
+        0 => "否",
+        1 => "是"
+    ];
 
     public static function filterAuthorities(){
         $user=Auth::user();

+ 8 - 0
app/Services/OwnerService.php

@@ -526,4 +526,12 @@ sql;
         if ($money===null)return $taxRate->value;
         return $money*($taxRate->value/100);
     }
+
+    public function changeManualBackStatus($id,$isManual)
+    {
+        $owner=Owner::query()->find($id);
+        if ($isManual==0)$owner->update(['is_manual_back'=>1]);
+        else $owner->update(['is_manual_back'=>0]);
+        return $owner;
+    }
 }

+ 7 - 0
bootstrap/cache/packages.php

@@ -1,4 +1,11 @@
 <?php return array (
+  'beyondcode/laravel-dump-server' => 
+  array (
+    'providers' => 
+    array (
+      0 => 'BeyondCode\\DumpServer\\DumpServerServiceProvider',
+    ),
+  ),
   'facade/ignition' => 
   array (
     'providers' => 

+ 38 - 36
bootstrap/cache/services.php

@@ -23,24 +23,25 @@
     19 => 'Illuminate\\Translation\\TranslationServiceProvider',
     20 => 'Illuminate\\Validation\\ValidationServiceProvider',
     21 => 'Illuminate\\View\\ViewServiceProvider',
-    22 => 'Facade\\Ignition\\IgnitionServiceProvider',
-    23 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider',
-    24 => 'Intervention\\Image\\ImageServiceProvider',
-    25 => 'Laravel\\Horizon\\HorizonServiceProvider',
-    26 => 'Laravel\\Ui\\UiServiceProvider',
-    27 => 'Maatwebsite\\Excel\\ExcelServiceProvider',
-    28 => 'Carbon\\Laravel\\ServiceProvider',
-    29 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
-    30 => 'Oursdreams\\Export\\ExportServiceProvider',
-    31 => 'Overtrue\\LaravelPinyin\\ServiceProvider',
-    32 => 'Te7aHoudini\\LaravelTrix\\LaravelTrixServiceProvider',
-    33 => 'Yajra\\Oci8\\Oci8ServiceProvider',
-    34 => 'App\\Providers\\AppServiceProvider',
-    35 => 'App\\Providers\\AuthServiceProvider',
-    36 => 'App\\Providers\\BroadcastServiceProvider',
-    37 => 'App\\Providers\\EventServiceProvider',
-    38 => 'App\\Providers\\HorizonServiceProvider',
-    39 => 'App\\Providers\\RouteServiceProvider',
+    22 => 'BeyondCode\\DumpServer\\DumpServerServiceProvider',
+    23 => 'Facade\\Ignition\\IgnitionServiceProvider',
+    24 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider',
+    25 => 'Intervention\\Image\\ImageServiceProvider',
+    26 => 'Laravel\\Horizon\\HorizonServiceProvider',
+    27 => 'Laravel\\Ui\\UiServiceProvider',
+    28 => 'Maatwebsite\\Excel\\ExcelServiceProvider',
+    29 => 'Carbon\\Laravel\\ServiceProvider',
+    30 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
+    31 => 'Oursdreams\\Export\\ExportServiceProvider',
+    32 => 'Overtrue\\LaravelPinyin\\ServiceProvider',
+    33 => 'Te7aHoudini\\LaravelTrix\\LaravelTrixServiceProvider',
+    34 => 'Yajra\\Oci8\\Oci8ServiceProvider',
+    35 => 'App\\Providers\\AppServiceProvider',
+    36 => 'App\\Providers\\AuthServiceProvider',
+    37 => 'App\\Providers\\BroadcastServiceProvider',
+    38 => 'App\\Providers\\EventServiceProvider',
+    39 => 'App\\Providers\\HorizonServiceProvider',
+    40 => 'App\\Providers\\RouteServiceProvider',
   ),
   'eager' => 
   array (
@@ -54,24 +55,25 @@
     7 => 'Illuminate\\Pagination\\PaginationServiceProvider',
     8 => 'Illuminate\\Session\\SessionServiceProvider',
     9 => 'Illuminate\\View\\ViewServiceProvider',
-    10 => 'Facade\\Ignition\\IgnitionServiceProvider',
-    11 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider',
-    12 => 'Intervention\\Image\\ImageServiceProvider',
-    13 => 'Laravel\\Horizon\\HorizonServiceProvider',
-    14 => 'Laravel\\Ui\\UiServiceProvider',
-    15 => 'Maatwebsite\\Excel\\ExcelServiceProvider',
-    16 => 'Carbon\\Laravel\\ServiceProvider',
-    17 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
-    18 => 'Oursdreams\\Export\\ExportServiceProvider',
-    19 => 'Overtrue\\LaravelPinyin\\ServiceProvider',
-    20 => 'Te7aHoudini\\LaravelTrix\\LaravelTrixServiceProvider',
-    21 => 'Yajra\\Oci8\\Oci8ServiceProvider',
-    22 => 'App\\Providers\\AppServiceProvider',
-    23 => 'App\\Providers\\AuthServiceProvider',
-    24 => 'App\\Providers\\BroadcastServiceProvider',
-    25 => 'App\\Providers\\EventServiceProvider',
-    26 => 'App\\Providers\\HorizonServiceProvider',
-    27 => 'App\\Providers\\RouteServiceProvider',
+    10 => 'BeyondCode\\DumpServer\\DumpServerServiceProvider',
+    11 => 'Facade\\Ignition\\IgnitionServiceProvider',
+    12 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider',
+    13 => 'Intervention\\Image\\ImageServiceProvider',
+    14 => 'Laravel\\Horizon\\HorizonServiceProvider',
+    15 => 'Laravel\\Ui\\UiServiceProvider',
+    16 => 'Maatwebsite\\Excel\\ExcelServiceProvider',
+    17 => 'Carbon\\Laravel\\ServiceProvider',
+    18 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
+    19 => 'Oursdreams\\Export\\ExportServiceProvider',
+    20 => 'Overtrue\\LaravelPinyin\\ServiceProvider',
+    21 => 'Te7aHoudini\\LaravelTrix\\LaravelTrixServiceProvider',
+    22 => 'Yajra\\Oci8\\Oci8ServiceProvider',
+    23 => 'App\\Providers\\AppServiceProvider',
+    24 => 'App\\Providers\\AuthServiceProvider',
+    25 => 'App\\Providers\\BroadcastServiceProvider',
+    26 => 'App\\Providers\\EventServiceProvider',
+    27 => 'App\\Providers\\HorizonServiceProvider',
+    28 => 'App\\Providers\\RouteServiceProvider',
   ),
   'deferred' => 
   array (

+ 32 - 0
database/migrations/2021_09_08_153619_change_owners_table_add_column_is_manual_back.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeOwnersTableAddColumnIsManualBack extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('owners', function (Blueprint $table) {
+            $table->tinyInteger("is_manual_back")->default(0)->comment("是否开启订单一键回传");
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('owners', function (Blueprint $table) {
+            $table->dropColumn("is_manual_back");
+        });
+    }
+}

+ 41 - 12
resources/views/maintenance/owner/index.blade.php

@@ -12,18 +12,23 @@
                 <span class="mb-1 btn btn-sm btn-outline-secondary tooltipTarget" @click="syncOwners">同步货主</span>
                 <table class="table table-striped table-sm table-hover">
                     <tr>
-                        <th>ID</th>
-                        <th>货主编码</th>
-                        <th>货主名</th>
-                        <th>创建时间</th>
-                        <th>操作</th>
+                        <th class="text-center">ID</th>
+                        <th class="text-center">货主编码</th>
+                        <th class="text-center">货主名</th>
+                        <th class="text-center">创建时间</th>
+                        <th class="text-center">订单自动回传</th>
+                        <th class="text-center">操作</th>
                     </tr>
                     <tr v-for="(owner,i) in owners" @click="selectTr===i+1?selectTr=0:selectTr=i+1" :class="selectTr===i+1?'focusing' : ''">
-                        <td class="text-muted">@{{owner.id}}</td>
-                        <td>@{{owner.code}}</td>
-                        <td>@{{owner.name}}</td>
-                        <td class="text-muted">@{{owner.created_at}}</td>
-                        <td>
+                        <td class="text-muted text-center">@{{owner.id}}</td>
+                        <td class="text-center">@{{owner.code}}</td>
+                        <td class="text-center">@{{owner.name}}</td>
+                        <td class="text-muted text-center">@{{owner.created_at}}</td>
+                        <td class="text-center">
+                            <span class="btn btn-sm btn-outline-secondary" @click="changeManualBackType(owner.id,owner.is_manual_back)">
+                                @{{is_manual_back_type[owner.is_manual_back]}}</span>
+                        </td>
+                        <td class="text-center">
                             @can('货主-编辑')
                             <button class="btn btn-sm btn-outline-primary" @click="edit(owner.id)">改</button> @endcan
                             @can('货主-删除')
@@ -45,10 +50,11 @@
             data:{
                 owners:[
                     @foreach( $owners as $owner )
-                    {id:'{{$owner->id}}',code:'{{$owner->code}}',name:'{{$owner->name}}',group:'{{$owner->ownerGroup->name??''}}',created_at:'{{$owner->created_at}}'},
+                    {id:'{{$owner->id}}',code:'{{$owner->code}}',name:'{{$owner->name}}',is_manual_back:'{{$owner->is_manual_back}}',group:'{{$owner->ownerGroup->name??''}}',created_at:'{{$owner->created_at}}'},
                     @endforeach
                 ],
-                selectTr:0
+                selectTr:0,
+                is_manual_back_type:{!! json_encode(\App\Owner::IS_MANUAL_BACK,JSON_UNESCAPED_UNICODE) !!},
             },
             mounted:function(){
                 let data = [
@@ -108,6 +114,29 @@
                         tempTip.show('同步货主失败,网络链接错误!'+err);
                     })
                 },
+                changeManualBackType(id,isManualBack){
+                    console.log(isManualBack)
+                    let url = '{{url('maintenance/owner/changeManualBackType')}}';
+                    window.axios.post(url, {id:id,isManualBack:isManualBack})
+                        .then(res => {
+                            if (res.data.success) {
+                                this.owners.forEach(function (owner){
+                                     if (owner.id==res.data.data.id){
+                                         owner.is_manual_back=res.data.data.is_manual_back;
+                                     }
+                                })
+                                window.tempTip.setDuration(3000);
+                                window.tempTip.showSuccess('设置回传成功!');
+                                this.$forceUpdate();
+                                return;
+                            }
+                            window.tempTip.setDuration(3000);
+                            window.tempTip.show('设置回传失败!');
+                        }).catch(err => {
+                        window.tempTip.setDuration(3000);
+                        window.tempTip.show("网络错误:" + err);
+                    })
+                },
             }
         });
     </script>

+ 1 - 0
routes/web.php

@@ -129,6 +129,7 @@ Route::group(['middleware'=>'auth'],function ($route){
             Route::post("apiStore","OwnerController@apiStore");
             Route::get('recycle','OwnerController@recycle');
             Route::post('restoreSelected', 'OwnerController@restoreSelected');
+            Route::post('changeManualBackType', 'OwnerController@changeManualBackType');
         });
         /** 教程 */
         Route::group(['prefix'=>'tutorial'],function(){