Quellcode durchsuchen

修复一框多商品的状态标记问题

LD vor 5 Jahren
Ursprung
Commit
4e78518bc9

+ 4 - 4
app/Console/Commands/SyncBatchTask.php

@@ -228,7 +228,7 @@ sql;
         }
         $updateOrder = [["code","batch_id"]];
         $existOrder = [];
-        $updateBatch = [];
+        $updatingBatches = [];
         foreach (Order::query()->select("code","batch_id")->whereNotNull("batch_id")->whereIn("code",$ods)->get() as $item){
             $existOrder[$item->code] = $item->batch_id;
         }
@@ -243,14 +243,14 @@ sql;
                     $mark = true;
                 }
             }
-            if ($mark)$updateBatch[] = $batch;
+            if ($mark)$updatingBatches[] = $batch;
             unset($map[$batch->code]);
         }
         if (count($updateOrder)>1){
             app("OrderService")->batchUpdate($updateOrder);//反向修改订单
             LogService::log(__METHOD__,"波次同步-修改订单波次号",json_encode($updateOrder));
-            LogService::log(__METHOD__,"修改过的波次_",json_encode($updateBatch));
-            BatchTaskJob::dispatch($updateBatch);    //在这里为波次注册队列任务!
+            LogService::log(__METHOD__,"修改过的波次_",json_encode($updatingBatches));
+            BatchTaskJob::dispatch($updatingBatches);    //在这里为波次注册队列任务!
         }
 
         if ($map){

+ 2 - 0
app/Services/StationRuleBatchService.php

@@ -66,7 +66,9 @@ class StationRuleBatchService
         foreach ($batches as $batch){
             $stationRuleBatch=$this->getByBatch($batch);
             if(!$stationRuleBatch)continue;
+            if(Cache::get('波次防重叠'.$batch['id']))continue;
             $batches_toProcess->push($batch);
+            Cache::add('波次防重叠'.$batch['id'],true,config('haiRou.波次防重叠时间_秒'));
         }
         LogService::log(__METHOD__,'shouldProcess','波次任务分配1.3:'.json_encode($batches_inTask));
         return $batches_toProcess;

+ 16 - 12
app/Services/StationTaskCommodityService.php

@@ -147,16 +147,20 @@ class StationTaskCommodityService
         $stationTaskCommodities_grouped->each(function(&$groupByBatch){
             ($标记本波次内是处理中或处理队列=function()use(&$groupByBatch){
                 $taskBatchId=$groupByBatch[0]['station_task_batch_id'];
-                $processing=$this->getProcessing_byTaskBatch($taskBatchId);
-                if(!$processing
-                    || $processing['material_box_id'] == $taskBatchId['material_box_id']){
-                    $status='处理中';
-                }else{
-                    $status='处理队列';
-                }
-                $groupByBatch->each(function(&$stationTaskCommodity)use($status){
-                    $stationTaskCommodity['status']=$status;
+                $processingIds=data_get($this->getProcessings_byTaskBatch($taskBatchId),'*.id')??[];
+                $groupByBatch->each(function(&$stationTaskCommodity)use($processingIds){
+                    if(in_array($stationTaskCommodity['id'],$processingIds))
+                        $stationTaskCommodity['status']='处理中';
+                    else
+                        $stationTaskCommodity['status']='处理队列';
                 });
+                if(count($processingIds)==0){
+                    foreach($groupByBatch as &$stationTaskCommodity){
+                        if($stationTaskCommodity['material_box_id']==$groupByBatch[0]['material_box_id']){
+                            $stationTaskCommodity['status']='处理中';
+                        }
+                    }
+                }
             })();
         });
         ($持久化处理队列的记录=function()use(&$stationTaskCommodities_grouped){
@@ -173,13 +177,13 @@ class StationTaskCommodityService
 
     }
 
-    function getProcessing_byTaskBatch($stationTaskBatch_id)
+    function getProcessings_byTaskBatch($stationTaskBatch_id)
     {
-        //这里不用缓存,因为更新会非常快
+        //这里不用缓存,因为更新会非常快
         return StationTaskCommodity::query()
             ->where('station_task_batch_id',$stationTaskBatch_id)
             ->where('status','处理中')
-            ->first();
+            ->get();
     }
 
 

+ 1 - 1
app/Services/StationTaskMaterialBoxService.php

@@ -183,7 +183,7 @@ class StationTaskMaterialBoxService
                 ->groupBy('station_task_batch_id');
         })();
         $stationTaskMaterialBoxes_grouped->each(function(&$groupByBatch){
-            ($将所要标记的箱任务先放在队列里=function()use(&$groupByBatch){
+            ($将所要标记的箱任务先放在队列里=function()use(&$groupByBatch){
                 $groupByBatch->each(function (&$stationTaskMaterialBox){
                     $stationTaskMaterialBox['status']='处理队列';
                 });

+ 5 - 0
config/haiRou.php

@@ -0,0 +1,5 @@
+<?php
+
+return [
+    "波次防重叠时间_秒" => 1200,
+];

+ 1 - 1
resources/js/utilities/barcode.js

@@ -6,7 +6,7 @@ window.setBarcode = function setBarcode(val, dom='barcode', width=2, height=40,
     JsBarcode(dom, val, {
         format: 'CODE39',
         lineColor: '#000',
-        background: '#EBEEF5',
+        background: '#ffffff',
         width: width,
         height: height,
         displayValue: isShowValue