Просмотр исходного кода

Merge branch 'zzd' of ssh://was.baoshi56.com:10022/var/git/bswas

LD 5 лет назад
Родитель
Сommit
b93fdd7443

+ 57 - 18
app/Console/Commands/SyncBatchTask.php

@@ -5,7 +5,6 @@ namespace App\Console\Commands;
 use App\Order;
 use App\OrderBin;
 use App\Services\BatchService;
-use App\Services\CacheService;
 use App\Services\common\BatchUpdateService;
 use App\Services\DocWaveHeaderService;
 use App\Services\LogService;
@@ -39,13 +38,37 @@ class SyncBatchTask extends Command
         $this->disposeDetail();
     }
 
-    private function disposeHeader()
+    private function disposeHeader($date = null)
     {
-        //获取更新时间与WMS数据
-        $date = $this->service->getSyncDate();
-        $waves = $this->service->get(["edittime"=>$date],["edittime"=>"gtOrEqual"]);
-        if (count($waves) < 1)return;
+        DB::transaction(function ()use($date){
+            //获取更新时间与WMS数据
+            if (!$date){
+                $valueStore = ValueStore::query()->where("name","wave_last_sync_date")->lockForUpdate()->first();
+                $date = $valueStore->value ?? Carbon::now()->subSeconds(65)->toDateTimeString();
+            }
+
+            $count = DB::connection("oracle")->selectOne(DB::raw("SELECT COUNT(*) count FROM DOC_WAVE_HEADER WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')"),[$date]);
+
+            if ($count->count > 500){
+                $query = DB::raw(<<<sql
+                    SELECT * FROM (SELECT header.*, ROWNUM AS rowno FROM (
+SELECT * FROM DOC_WAVE_HEADER WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')
+ORDER BY EDITTIME)header WHERE ROWNUM <= 500)wave WHERE wave.rowno >= 0
+sql
+                );
+                $waves = DB::connection("oracle")->select($query,[$date]);
+                $this->headerExe($waves);
+                $this->disposeHeader($waves[count($waves)-1]->edittime);
+            }else{
+                $waves = $this->service->get(["edittime"=>$date],["edittime"=>"gtOrEqual"]);
+                $this->headerExe($waves);
+            }
+        });
+    }
 
+    private function headerExe($waves)
+    {
+        if (count($waves) < 1)return;
         //获取本地数据对比差异
         $codes = array_column($waves->toArray(),"waveno");
         $map = [];
@@ -92,18 +115,36 @@ class SyncBatchTask extends Command
             $this->batchService->insert($insert);
             LogService::log(__METHOD__,"SUCCESS-同步插入波次成功",json_encode($insert));
         }
-        $lastDate = $waves[0]->edittime;
-        $this->service->setSyncDate($lastDate);
+        ValueStore::query()->where("name","wave_last_sync_date")->update(["value"=>$waves[count($waves)-1]->editime]);
     }
 
-    public function disposeDetail()
+    public function disposeDetail($date = null)
     {
-        $date = app(CacheService::class)->getOrExecute("wave_detail_last_sync_date",function (){
-            $valueStore = ValueStore::query()->where("name","wave_detail_last_sync_date")->first();
-            return $valueStore->value ?? Carbon::now()->subSeconds(65)->toDateTimeString();
+        DB::transaction(function ()use($date){
+            if (!$date){
+                $valueStore = ValueStore::query()->where("name","wave_detail_last_sync_date")->lockForUpdate()->first();
+                $date = $valueStore->value ?? Carbon::now()->subSeconds(65)->toDateTimeString();
+            }
+            $count = DB::connection("oracle")->selectOne(DB::raw("SELECT count(*) count FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')"),[$date]);
+            if ($count->count > 1000){
+                $sql = <<<sql
+    SELECT * FROM (SELECT ORDERNO,WAVENO,SEQNO,EDITTIME, ROWNUM AS rowno FROM ( 
+    SELECT * FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')
+ ORDER BY EDITTIME) WHERE ROWNUM <= 1000)wave WHERE wave.rowno >= 0
+sql;
+                $details = DB::connection("oracle")->select(DB::raw($sql),[$date]);
+                $this->detailExe($details);
+                $this->disposeDetail($details[count($details)-1]->edittime);
+            }else{
+                $sql = "SELECT ORDERNO,WAVENO,SEQNO FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')";
+                $details = DB::connection("oracle")->select(DB::raw($sql),[$date]);
+                $this->detailExe($details);
+            }
         });
-        $sql = "SELECT ORDERNO,WAVENO,SEQNO FROM DOC_WAVE_DETAILS WHERE EDITTIME > TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')";
-        $details = DB::connection("oracle")->select(DB::raw($sql),[$date]);
+    }
+
+    private function detailExe($details)
+    {
         if (count($details) < 1)return;
         $map = [];
         $nos = [];
@@ -178,10 +219,8 @@ class SyncBatchTask extends Command
                 }
             }
         }
-//        $this->batchService->assignTasks($batches);
-
-
-        ValueStore::query()->where("name","wave_detail_last_sync_date")->update(["value"=>Carbon::now()->subSeconds(1)->toDateTimeString()]);
+        //        $this->batchService->assignTasks($batches);
+        ValueStore::query()->where("name","wave_detail_last_sync_date")->update(["value"=>$details[count($details)-1]->edittime]);
     }
 
     /**

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

@@ -70,6 +70,7 @@ use App\Store;
 use App\StationTaskBatch;
 use App\StoreCheckingReceiveItem;
 use App\StoreItems;
+use App\Unit;
 use App\User;
 use App\ValueStore;
 use App\Warehouse;
@@ -128,16 +129,42 @@ class TestController extends Controller
             app(BatchUpdateService::class)->batchUpdate('inventory_accounts', $updateParams);
         }
     }
+    public function disposeDetail($date = null)
+    {
+        DB::transaction(function ()use($date){
+            if (!$date){
+                $valueStore = ValueStore::query()->where("name","wave_detail_last_sync_date")->lockForUpdate()->first();
+                $date = $valueStore->value ?? Carbon::now()->subSeconds(65)->toDateTimeString();
+            }
+            $count = DB::connection("oracle")->selectOne(DB::raw("SELECT count(*) count FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')"),[$date]);
+            if ($count->count > 1000){
+                $sql = <<<sql
+    SELECT * FROM (SELECT ORDERNO,WAVENO,SEQNO,EDITTIME, ROWNUM AS rowno FROM ( 
+    SELECT * FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')
+ ORDER BY EDITTIME) WHERE ROWNUM <= 1000)wave WHERE wave.rowno >= 0
+sql;
+                $details = DB::connection("oracle")->select(DB::raw($sql),[$date]);
+                //$this->detailExe($details);
+                $this->disposeDetail($details[count($details)-1]->edittime);dump($details[count($details)-1]->edittime);
+            }else{
+                $sql = "SELECT ORDERNO,WAVENO,SEQNO FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')";
+                $details = DB::connection("oracle")->select(DB::raw($sql),[$date]);dd($details ? $details[count($details)-1]->edittime : Carbon::now()->toDateTimeString());
+                //$this->detailExe($details);
+                //ValueStore::query()->where("name","wave_detail_last_sync_date")->update(["value"=>$details ? $details[count($details)-1]->edittime : Carbon::now()->toDateTimeString()]);
+            }
+        });
+    }
     public function zzd()
     {
-        $a = new DocWaveHeaderService();
-        dd($a->get(["edittime"=>"2020-12-29 00:00:00"],["edittime"=>"gtOrEqual"]));
+        $this->disposeDetail();
     }
 
     public function zzd1()
     {
-        fsockopen('127.0.0.1','9722',$error,$errorstr,2);
-        dd($error,$errorstr);
+        DB::transaction(function (){
+            ValueStore::query()->where("name","wave_detail_last_sync_date")->lockForUpdate()->first();
+        });
+        return microtime(true);
     }
 
     public function mergeCarrier()

+ 2 - 1
app/Services/DocWaveHeaderService.php

@@ -4,6 +4,7 @@ namespace App\Services;
 
 use App\ValueStore;
 use Carbon\Carbon;
+use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\DB;
 use Yajra\Oci8\Query\OracleBuilder;
 
@@ -13,7 +14,7 @@ Class DocWaveHeaderService
     public function get(array $params, $rule = [])
     {
         /** @var OracleBuilder $query */
-        $query = DB::connection("oracle")->table("doc_wave_header")->orderByDesc("edittime");
+        $query = DB::connection("oracle")->table("doc_wave_header")->orderBy("edittime");
         foreach ($params as $column=>$param){
             if (isset($rule[$column]))$query = $this->rule($query,$rule[$column],$column,$param);
             else $query->where($column,$param);

+ 34 - 0
database/migrations/2020_12_29_131024_change_value_store_index.php

@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeValueStoreIndex extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('value_stores', function (Blueprint $table) {
+            $table->dropIndex("value_stores_value_index");
+            $table->index("name");
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('value_stores', function (Blueprint $table) {
+            $table->index("value");
+            $table->dropIndex("value_stores_name_index");
+        });
+    }
+}

+ 25 - 31
resources/views/customer/project/create.blade.php

@@ -179,6 +179,8 @@
                 selectedModel:{//已选定的计费模型
                     storage:[],
                 },
+                thisOperationItemIndex:-1,//当前选中的作业费子项下标,用以唤起特征模态框
+                oldFeature:"",//上一个特征,如果与当前特征一致则无需再次转换特征
             },
             mounted(){
                 if (this.errors.length===0 && this.owner.id){
@@ -355,49 +357,41 @@
                 //显示特征选择modal
                 showAddFeatureModal(index,feature){
                     if (!feature){
-                        this.features = [{
+                        this.model.operation.items[index].features = [{
                             "strategyGroupStartSign": false,
                             "calculation" : "",
                             "type" : "",
-                            "id" : "",  //特征ID
-                            "logic" : "",  //特征逻辑
-                            "describe" : "",  //特征信息
+                            "id" : "",
+                            "logic" : "",
+                            "describe" : "",
                             "strategyGroupEndSign" : false,
                         }];
-                        this.thisIndex = index;
+                        this.thisOperationItemIndex = index;
                         $("#addFeatureModal").modal("show");
                         return;
                     }
                     if (this.oldFeature === feature) {
-                        this.thisIndex = index;
+                        this.thisOperationItemIndex = index;
                         $("#addFeatureModal").modal("show");
                         return;
                     }
-                    window.axios.post("{{url('maintenance/priceModel/operation/getFeatures')}}", {feature:feature})
-                        .then(res=>{
-                            if (res.data.success){
-                                this.features = res.data.data;
-                                this.oldFeature = feature;
-                                if (!this.features || this.features.length === 0){
-                                    this.features = [{
-                                        "strategyGroupStartSign": false,
-                                        "calculation" : "",
-                                        "type" : "",
-                                        "id" : "",  //特征ID
-                                        "logic" : "",  //特征逻辑
-                                        "describe" : "",  //特征信息
-                                        "strategyGroupEndSign" : false,
-                                    }];
-                                }
-                                this.thisIndex = index;
-                                $("#addFeatureModal").modal("show");
-                                return;
-                            }
-                            window.tempTip.setDuration(3000);
-                            window.tempTip.show(res.data.data);
-                        }).catch(err=>{
-                        window.tempTip.setDuration(3000);
-                        window.tempTip.show("网络错误:"+err);
+                    let url = "{{url('maintenance/priceModel/operation/getFeatures')}}";
+                    window.tempTip.postBasicRequest(url,{feature:feature},res=>{
+                        this.features = res.data.data;
+                        this.oldFeature = feature;
+                        if (!this.features || this.features.length === 0){
+                            this.features = [{
+                                "strategyGroupStartSign": false,
+                                "calculation" : "",
+                                "type" : "",
+                                "id" : "",  //特征ID
+                                "logic" : "",  //特征逻辑
+                                "describe" : "",  //特征信息
+                                "strategyGroupEndSign" : false,
+                            }];
+                        }
+                        this.thisOperationItemIndex = index;
+                        $("#addFeatureModal").modal("show");
                     });
                 },
             },