Преглед изворни кода

修改海柔通知状态问题

LD пре 5 година
родитељ
комит
dc1af12e82

+ 2 - 1
app/Batch.php

@@ -5,6 +5,7 @@ namespace App;
 use Illuminate\Database\Eloquent\Model;
 
 use App\Traits\ModelLogChanging;
+use Illuminate\Database\Eloquent\Relations\HasOne;
 
 class Batch extends Model
 {
@@ -41,7 +42,7 @@ class Batch extends Model
     {
         return $this->hasOne(Owner::class,"id","owner_id");
     }
-    public function stationTaskBatch()
+    public function stationTaskBatch(): HasOne
     {
         return $this->hasOne(StationTaskBatch::class);
     }

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

@@ -311,7 +311,9 @@ sql;
 
     function t1(Request $request)
     {
-//        StationTask::query()->create(['status'=>'待处理']);
+        StationTaskBatch::query()
+            ->whereIn('id', [594,593,592])
+            ->update(['status'=>'处理中']);
     }
 
     function packageT(Request $request)

+ 9 - 2
app/Services/ForeignHaiRoboticsService.php

@@ -22,6 +22,8 @@ class ForeignHaiRoboticsService
 
     /** @var  $stationTaskMaterialBoxService StationTaskMaterialBoxService */
     private $stationTaskMaterialBoxService;
+    /** @var  $stationTaskCommoditiesService StationTaskCommodityService */
+    private $stationTaskCommoditiesService;
     /** @var  $materialBoxService MaterialBoxService */
     private $materialBoxService;
     /** @var  $stationService StationService */
@@ -120,10 +122,13 @@ class ForeignHaiRoboticsService
                 =(function()use($materialBox){
                 return $stationTaskMaterialBox=
                     $this->stationTaskMaterialBoxService
-                        ->get([
+                        ->get(
+                            [
                             'material_box_id'=>$materialBox['id'],
                             'status'=>'处理中',
-                        ])->first();
+                        ],
+                            'stationTaskCommodities'
+                        )->first();
             })()){
                 throw new ErrorException('该料箱没有安排在处理队列中');
             }
@@ -132,6 +137,8 @@ class ForeignHaiRoboticsService
                 :(function(){throw new ErrorException('呼叫机器人回收U型线料箱失败');})();
             $this->stationTaskMaterialBoxService
                 ->markProcessed($stationTaskMaterialBox);
+            $this->stationTaskCommoditiesService
+                ->markProcessed($stationTaskMaterialBox['stationTaskCommodities']);
             return true;
         }catch (\Exception $e){
             $this->stationTaskMaterialBoxService

+ 1 - 1
app/Services/StationTaskBatchService.php

@@ -183,7 +183,7 @@ class StationTaskBatchService
     function markProcessing($stationTaskBatches)
     {
         if (get_class($stationTaskBatches)==StationTaskBatch::class){
-            $stationTaskBatches = collect($stationTaskBatches);
+            $stationTaskBatches = collect([$stationTaskBatches]);
         }
         StationTaskBatch::query()
             ->whereIn('id', data_get($stationTaskBatches, '*.id'))

+ 8 - 0
app/Services/StationTaskCommodityService.php

@@ -9,6 +9,7 @@ use App\OrderCommodity;
 use App\StationTask;
 use App\StationTaskBatch;
 use App\StationTaskCommodity;
+use App\StationTaskMaterialBox;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Cache;
 use App\Traits\ServiceAppAop;
@@ -63,6 +64,8 @@ class StationTaskCommodityService
 
     }
 
+
+
 //    function getAndAttachIds($taskCommodities): Collection
 //    {
 //        $md5=is_array($taskCommodities)
@@ -131,4 +134,9 @@ class StationTaskCommodityService
                 data_get($stationTaskCommodities, '*.station_id')
             );
     }
+    function markProcessed(Collection $stationTaskCommodities){
+        StationTaskCommodity::query()
+            ->whereIn('id',data_get($stationTaskCommodities,'*.id'))
+            ->update(['status'=>'完成']);
+    }
 }

+ 5 - 2
app/Services/StationTaskMaterialBoxService.php

@@ -81,10 +81,13 @@ class StationTaskMaterialBoxService
         return $this->insert($stationMaterialBoxes_toCreate->toArray(),true);
     }
 
-    function get(array $kvPairs){
+    function get(array $kvPairs, $with=null){
         ksort($kvPairs);
-        return Cache::remember('StationTaskMaterialBox'.md5(json_encode($kvPairs)), config('cache.expirations.fastChange'), function ()use($kvPairs) {
+        return Cache::remember('StationTaskMaterialBox'.md5(json_encode($kvPairs).json_encode([$with])), config('cache.expirations.fastChange'), function ()use($kvPairs,$with) {
             $query = StationTaskMaterialBox::query();
+            if($with){
+                $query->with($query);
+            }
             foreach ($kvPairs as $column => $value){
                 if (is_array($value))$query->whereIn($column,$value);
                 else $query->where($column,$value);

+ 3 - 3
app/StationTaskMaterialBox.php

@@ -4,8 +4,8 @@ namespace App;
 
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use Illuminate\Database\Eloquent\Relations\HasMany;
 use Illuminate\Database\Eloquent\Relations\HasOne;
-use Illuminate\Database\Eloquent\Relations\MorphOne;
 
 use App\Traits\ModelLogChanging;
 
@@ -31,9 +31,9 @@ class StationTaskMaterialBox extends Model
     {
         return $this->belongsTo(StationTask::class);
     }
-    function stationTaskCommodities(): HasOne
+    function stationTaskCommodities(): HasMany
     {
-        return $this->hasOne(StationTaskCommodity::class,"station_task_batch_id","station_task_batch_id")
+        return $this->hasMany(StationTaskCommodity::class,"station_task_batch_id","station_task_batch_id")
         ->where('material_box_id',$this['material_box_id']);
     }
 }

+ 33 - 32
tests/Services/BatchService/AssignTasksTest.php

@@ -78,6 +78,7 @@ class AssignTasksTest extends TestCase
     {
         $this->service->assignTasks($this->data['batches']);
         ($波次任务指向了波次=function(){
+            $this->data['batches']->load('stationTaskBatch');
             $this->assertEquals(
                 data_get($this->data['batches'],'*.id'),
                 data_get($this->data['batches'],'*.stationTaskBatch.batch_id')
@@ -87,39 +88,39 @@ class AssignTasksTest extends TestCase
 
     function tearDown(): void
     {
-        $stationTaskBatchs=data_get($this->data['batches'],'*.stationTaskBatch');
-        foreach ($stationTaskBatchs as $stationTaskBatch){
-            $stationTaskBatch->loadMissing('stationTask.stationTaskCommodities');
-            $stationTaskBatch->loadMissing('stationTask.stationTaskMaterialBoxes.materialBox');
-        }
+//        $stationTaskBatchs=data_get($this->data['batches'],'*.stationTaskBatch');
+//        foreach ($stationTaskBatchs as $stationTaskBatch){
+//            $stationTaskBatch->loadMissing('stationTask.stationTaskCommodities');
+//            $stationTaskBatch->loadMissing('stationTask.stationTaskMaterialBoxes.materialBox');
+//        }
 
-        MaterialBox::query()
-            ->whereIn('id',data_get($this->data['batches'],'*.stationTaskBatch.stationTask.stationTaskMaterialBoxes.*.materialBox.id')??[])
-            ->delete();
-        StationTaskMaterialBox::query()
-            ->whereIn('id',data_get($this->data['batches'],'*.stationTaskBatch.stationTask.stationTaskMaterialBoxes.*.id')??[])
-            ->delete();
-        StationTaskCommodity::query()
-            ->whereIn('id',data_get($this->data['batches'],'*.stationTaskBatch.stationTask.stationTaskCommodities.*.id')??[])
-            ->delete();
-        StationTaskBatch::query()
-            ->whereIn('id',data_get($this->data['batches'],'*.stationTaskBatch.id')??[])
-            ->delete();
-        StationTask::query()
-            ->whereIn('id',data_get($this->data['batches'],'*.stationTaskBatch.stationTask.id')??[])
-            ->delete();
-        StationRuleBatch::query()
-            ->whereIn('id',data_get($this->data['station_rule_batches'],'*.id')??[])
-            ->delete();
-        OrderCommodity::query()
-            ->whereIn('id',data_get($this->data['orderCommodities'],'*.id')??[])
-            ->delete();
-        Order::query()
-            ->whereIn('id',data_get($this->data['orders'],'*.id')??[])
-            ->delete();
-        Batch::query()
-            ->whereIn('id',data_get($this->data['batches'],'*.id')??[])
-            ->delete();
+//        MaterialBox::query()
+//            ->whereIn('id',data_get($this->data['batches'],'*.stationTaskBatch.stationTask.stationTaskMaterialBoxes.*.materialBox.id')??[])
+//            ->delete();
+//        StationTaskMaterialBox::query()
+//            ->whereIn('id',data_get($this->data['batches'],'*.stationTaskBatch.stationTask.stationTaskMaterialBoxes.*.id')??[])
+//            ->delete();
+//        StationTaskCommodity::query()
+//            ->whereIn('id',data_get($this->data['batches'],'*.stationTaskBatch.stationTask.stationTaskCommodities.*.id')??[])
+//            ->delete();
+//        StationTaskBatch::query()
+//            ->whereIn('id',data_get($this->data['batches'],'*.stationTaskBatch.id')??[])
+//            ->delete();
+//        StationTask::query()
+//            ->whereIn('id',data_get($this->data['batches'],'*.stationTaskBatch.stationTask.id')??[])
+//            ->delete();
+//        StationRuleBatch::query()
+//            ->whereIn('id',data_get($this->data['station_rule_batches'],'*.id')??[])
+//            ->delete();
+//        OrderCommodity::query()
+//            ->whereIn('id',data_get($this->data['orderCommodities'],'*.id')??[])
+//            ->delete();
+//        Order::query()
+//            ->whereIn('id',data_get($this->data['orders'],'*.id')??[])
+//            ->delete();
+//        Batch::query()
+//            ->whereIn('id',data_get($this->data['batches'],'*.id')??[])
+//            ->delete();
         parent::tearDown();
     }
 }