|
|
@@ -103,6 +103,8 @@ class StationTaskMaterialBoxService
|
|
|
function markHasTaken(StationTaskMaterialBox $stationTaskMaterialBox){
|
|
|
$this->instant($this->stationTaskBatchService,'StationTaskBatchService');
|
|
|
$this->instant($this->stationTaskCommodityService,'StationTaskCommodityService');
|
|
|
+ $this->instant($this->stationTaskService,'StationTaskService');
|
|
|
+ $this->instant($this->stationService,'StationService');
|
|
|
try{
|
|
|
$taskType=$this->getServingTaskType($stationTaskMaterialBox);
|
|
|
switch ($taskType){
|
|
|
@@ -111,6 +113,7 @@ class StationTaskMaterialBoxService
|
|
|
$this->stationTaskBatchService->markProcessing_byIds($stationTaskMaterialBox['station_task_batch_id']);
|
|
|
$this->stationTaskCommodityService->markProcessing($stationTaskMaterialBox['stationTaskCommodities']);
|
|
|
$this->stationTaskService->markProcessing_byIds(data_get($stationTaskMaterialBox['stationTaskCommodities'],'*.station_task_id'));
|
|
|
+ $this->stationService->broadcastBinMonitor($stationTaskMaterialBox['station_id'],$stationTaskMaterialBox['stationTask']);
|
|
|
break;
|
|
|
case '入立库':
|
|
|
|
|
|
@@ -132,21 +135,55 @@ class StationTaskMaterialBoxService
|
|
|
$stationTaskMaterialBox->update();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 每波次仅将最老的作务标为“处理中”,其他置入队列;
|
|
|
+ * 如某波次已经有“处理中“,则他部置入队列
|
|
|
+ * @param $stationTaskMaterialBox_orBoxes Collection 单个或多个
|
|
|
+ */
|
|
|
function markProcessing($stationTaskMaterialBox_orBoxes)
|
|
|
{
|
|
|
$this->instant($this->stationTaskService,'StationTaskService');
|
|
|
- if (get_class($stationTaskMaterialBox_orBoxes)==StationTaskMaterialBox::class){
|
|
|
- $stationTaskMaterialBox_orBoxes = collect([$stationTaskMaterialBox_orBoxes]);
|
|
|
- }
|
|
|
+ $stationTaskMaterialBoxes =
|
|
|
+ (function()use($stationTaskMaterialBox_orBoxes){
|
|
|
+ if (get_class($stationTaskMaterialBox_orBoxes)==StationTaskMaterialBox::class){
|
|
|
+ return collect([$stationTaskMaterialBox_orBoxes]);
|
|
|
+ }
|
|
|
+ return collect($stationTaskMaterialBox_orBoxes);
|
|
|
+ })();
|
|
|
+ ($按时间从前往后排出顺序=function ()use(&$stationTaskMaterialBoxes){
|
|
|
+ $stationTaskMaterialBoxes=$stationTaskMaterialBoxes
|
|
|
+ ->orderBy('id','asc')
|
|
|
+ ->groupBy('station_task_batch_id')
|
|
|
+ ->get();
|
|
|
+ })();
|
|
|
+ $stationTaskMaterialBoxes->each(function($groupByBatch){
|
|
|
+ $taskBatchId=$groupByBatch[0]['station_task_batch_id'];
|
|
|
+ $processing=$this->getProcessing_byTaskBatch($taskBatchId);
|
|
|
+ if(!$processing){
|
|
|
+ $groupByBatch->each(function ($stationTaskMaterialBox){
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
StationTaskMaterialBox::query()
|
|
|
- ->whereIn('id', data_get($stationTaskMaterialBox_orBoxes, '*.id'))
|
|
|
+ ->whereIn('id', data_get($stationTaskMaterialBoxes, '*.id'))
|
|
|
->update(['status'=>'处理中']);
|
|
|
$this->stationTaskService
|
|
|
->markProcessing_byIds(
|
|
|
- data_get($stationTaskMaterialBox_orBoxes, '*.station_id')
|
|
|
+ data_get($stationTaskMaterialBoxes, '*.station_id')
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ function getProcessing_byTaskBatch($stationTaskBatch_id)
|
|
|
+ {
|
|
|
+ //这里不能用缓存,因为更新会非常快
|
|
|
+ return StationTaskMaterialBox::query()
|
|
|
+ ->where('station_task_batch_id',$stationTaskBatch_id)
|
|
|
+ ->where('status','处理中')
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
function excepted($stationTaskMaterialBoxes_orBox){
|
|
|
if (get_class($stationTaskMaterialBoxes_orBox)==StationTaskMaterialBox::class){
|
|
|
$stationTaskMaterialBoxes_orBox = collect([$stationTaskMaterialBoxes_orBox]);
|