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

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

@@ -318,10 +318,10 @@ sql;
 
     function t2(Request $request)
     {
-        $arr=collect([['aa'=>11,'bb'=>221],['aa'=>111,'bb'=>222],['aa'=>111,'bb'=>223]]);
-        $a = $arr->where('aa', 11);
-        $b = $arr->where('aa', 111);
-        dd($a, $b);
+        $arr=collect([['aa'=>11,'bb'=>1],['aa'=>111,'bb'=>2],['aa'=>111,'bb'=>3]]);
+        $arr->sortBy('bb');
+        $a = $arr->groupBy('aa');
+        dd($a->toJson());
     }
 
     function packageT(Request $request)

+ 5 - 0
app/Services/ForeignHaiRoboticsService.php

@@ -141,8 +141,13 @@ class ForeignHaiRoboticsService
                 :(function(){throw new ErrorException('呼叫机器人回收U型线料箱失败');})();
             $this->stationTaskMaterialBoxService
                 ->markProcessed($stationTaskMaterialBox);
+            $stationTaskMaterialBox_next=
+                $this->stationTaskMaterialBoxService
+                ->processNextQueued($stationTaskMaterialBox); //找到队列中下一个料箱,并标记为处理中
             $this->stationTaskCommoditiesService
                 ->markProcessed($stationTaskMaterialBox['stationTaskCommodities']);
+            $this->stationTaskCommoditiesService
+                ->markProcessing($stationTaskMaterialBox_next['stationTaskCommodities']);//因为上边商品任务被标记完成了,所以这里要将队列中找出正在处理的料箱对应的标记为“处理中”
             $this->stationService->broadcastBinMonitor($stationTaskMaterialBox['station_id'],$stationTaskMaterialBox['stationTask']);
             return true;
         }catch (\Exception $e){

+ 13 - 0
app/Services/StationTaskCommodityService.php

@@ -182,5 +182,18 @@ class StationTaskCommodityService
         StationTaskCommodity::query()
             ->whereIn('id',data_get($stationTaskCommodities,'*.id'))
             ->update(['status'=>'完成']);
+//        $station_id=$stationTaskCommodities[0]['station_id'];
+//        $stationTaskCommodities_next=StationTaskCommodity::query()
+//            ->where('station_id',$station_id)
+//            ->where('status','处理队列')
+//            ->orderBy('updated_at')
+//            ->get();
+//        if($stationTaskCommodities_next->isNotEmpty()){
+//            $stationTaskCommodities_toUpdate=$stationTaskCommodities_next->where(
+//                'material_box_id', $stationTaskCommodities_next->first()['material_box_id']);
+//            StationTaskCommodity::query()
+//                ->whereIn('id',data_get($stationTaskCommodities_toUpdate,'*.id'))
+//                ->update(['status'=>'处理中']);
+//        }
     }
 }

+ 12 - 2
app/Services/StationTaskMaterialBoxService.php

@@ -128,9 +128,19 @@ class StationTaskMaterialBoxService
     function markPutStored($stationTaskMaterialBox){
         //TODO: 标记 料箱位置(需要其字段存在)$stationTaskMaterialBox['materialBox']['position']
     }
+    function processNextQueued(StationTaskMaterialBox $stationTaskMaterialBox_lastProcessed){
+        $station_id=$stationTaskMaterialBox_lastProcessed['station_id'];
+        $stationTaskMaterialBox_next=StationTaskMaterialBox::query()
+            ->where('station_id',$station_id)
+            ->where('status','处理队列')
+            ->orderBy('updated_at')
+            ->first();
+        if($stationTaskMaterialBox_next){
+            $stationTaskMaterialBox_next->update(['status'=>'处理中']);
+        }
+        return $stationTaskMaterialBox_next;
+    }
     function markProcessed(StationTaskMaterialBox $stationTaskMaterialBox){
-        var_dump($stationTaskMaterialBox->id);
-        var_dump($stationTaskMaterialBox['status']);
         $stationTaskMaterialBox['status'] = '完成';
         $stationTaskMaterialBox->update();
     }

+ 46 - 0
database/migrations/2021_02_26_163114_change_index_of_station_task_material_boxes_of_status_station_id.php

@@ -0,0 +1,46 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeIndexOfStationTaskMaterialBoxesOfStatusStationId extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('station_task_material_boxes', function (Blueprint $table) {
+            $table->dropIndex('station_task_material_boxes_station_id_index');
+            $table->dropIndex('station_task_material_boxes_status_index');
+            $table->index(['status','station_id'],'s_t_material_boxes_i_s_s');
+        });
+        Schema::table('station_task_commodities', function (Blueprint $table) {
+            $table->dropIndex('station_task_commodities_station_id_index');
+            $table->dropIndex('station_task_commodities_status_index');
+            $table->index(['status','station_id'],'s_t_commodities_i_s_s');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('station_task_material_boxes', function (Blueprint $table) {
+            $table->index('status');
+            $table->index('station_id');
+            $table->dropIndex('s_t_material_boxes_i_s_s');
+        });
+        Schema::table('station_task_commodities', function (Blueprint $table) {
+            $table->index('status');
+            $table->index('station_id');
+            $table->dropIndex('s_t_commodities_i_s_s');
+        });
+    }
+}

+ 1 - 1
laravel-echo-server.lock

@@ -1,3 +1,3 @@
 {
-	"process": 7236
+	"process": 22524
 }

+ 1 - 1
resources/views/station/monitor/show.blade.php

@@ -91,7 +91,7 @@
 @section('lastScript')
     <script type="text/javascript" src="{{mix('js/utilities/barcode.js')}}"></script>
     <script>
-        new Vue({
+        $vue=new Vue({
             el:"#container",
             data:{
                 {{--broadcastName : "{{config('database.redis.options.prefix').'presence-station-'.$station->id}}",--}}

+ 22 - 0
tests/Services/ForeignHaiRoboticsService/TempMarkBinProcessedTest.php

@@ -73,6 +73,28 @@ class MarkBinProcessedTest extends TestCase
             true);
         $this->assertTrue(true);
     }
+    public function testMarkBinProcessed3()
+    {
+        $this->service->markBinProcessed(
+            '',
+            "fa61ad33-6598-339b-9a32-a73a4720b46b",
+            true,
+            '',
+            '',
+            true);
+        $this->assertTrue(true);
+    }
+    public function testMarkBinProcessed4()
+    {
+        $this->service->markBinProcessed(
+            '',
+            "03c0bde8-b5d7-393d-918e-383d38a1efe9",
+            true,
+            '',
+            '',
+            true);
+        $this->assertTrue(true);
+    }
     public function testTaskUpdate()
     {
         $this->service->taskUpdate(