|
|
@@ -9,6 +9,7 @@ use App\MaterialBox;
|
|
|
use App\StationCacheShelfGrid;
|
|
|
use App\StationTaskMaterialBox;
|
|
|
use Illuminate\Support\Collection;
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
use Illuminate\Support\Facades\Http;
|
|
|
use App\Traits\ServiceAppAop;
|
|
|
|
|
|
@@ -153,44 +154,66 @@ class ForeignHaiRoboticsService
|
|
|
LogService::log('海柔请求','markBinProcessed1.6',
|
|
|
json_encode($stationTaskMaterialBox));
|
|
|
if(!$stationTaskMaterialBox){
|
|
|
- throw new ErrorException('该料箱没有安排在处理队列中.');
|
|
|
+ throw new ErrorException($binCode.'该料箱没有安排在处理队列中.');
|
|
|
}
|
|
|
- $this->putBinToStore($stationTaskMaterialBox)
|
|
|
- ?true
|
|
|
- :(function(){throw new ErrorException('呼叫机器人回收U型线料箱失败');})();
|
|
|
LogService::log('海柔请求','markBinProcessed1.7',
|
|
|
json_encode($stationTaskMaterialBox));
|
|
|
- $stationTaskMaterialBox_next=
|
|
|
- $this->stationTaskMaterialBoxService
|
|
|
- ->processNextQueued($stationTaskMaterialBox); //找到队列中下一个料箱,并标记为处理中
|
|
|
- $this->stationTaskCommoditiesService
|
|
|
- ->markProcessed($stationTaskMaterialBox['stationTaskCommodities']);
|
|
|
- LogService::log('海柔请求','markBinProcessed1.8',
|
|
|
- json_encode($stationTaskMaterialBox));
|
|
|
- if($stationTaskMaterialBox_next)
|
|
|
+
|
|
|
+ DB::transaction(function ()use($stationTaskMaterialBox){
|
|
|
+ $stationTaskMaterialBox_next=
|
|
|
+ $this->stationTaskMaterialBoxService
|
|
|
+ ->processNextQueued($stationTaskMaterialBox); //找到队列中下一个料箱,并标记为处理中
|
|
|
$this->stationTaskCommoditiesService
|
|
|
- ->markProcessing($stationTaskMaterialBox_next['stationTaskCommodities']);//因为上边商品任务被标记完成了,所以这里要将队列中找出正在处理的料箱对应的标记为“处理中”
|
|
|
-
|
|
|
- $notFinishedBoxTasks = $this->stationTaskMaterialBoxService->getNotFinishedSiblings($stationTaskMaterialBox);
|
|
|
- if($notFinishedBoxTasks->isEmpty()){
|
|
|
- $this->instant($this->stationTaskService,'StationTaskService');
|
|
|
- LogService::log('海柔请求','markBinProcessed1.81',
|
|
|
- json_encode($stationTaskMaterialBox['stationTaskBatch']));
|
|
|
- $stationTaskMaterialBox->loadMissing('stationTaskBatch');
|
|
|
- $this->stationTaskBatchService->markProcessed($stationTaskMaterialBox['stationTaskBatch']);
|
|
|
- LogService::log('海柔请求','markBinProcessed1.82',
|
|
|
- json_encode($stationTaskMaterialBox['stationTaskBatch']));
|
|
|
- $this->stationTaskService->markProcessed($stationTaskMaterialBox['stationTask']);
|
|
|
- }
|
|
|
- LogService::log('海柔请求','markBinProcessed1.9',
|
|
|
- json_encode($stationTaskMaterialBox));
|
|
|
- $this->stationService->broadcastBinMonitor($stationTaskMaterialBox['station_id'],$stationTaskMaterialBox['stationTask']);
|
|
|
- $this->stationTaskMaterialBoxService
|
|
|
- ->markProcessed($stationTaskMaterialBox);
|
|
|
- LogService::log('海柔请求','markBinProcessed1.99',
|
|
|
- json_encode($stationTaskMaterialBox));
|
|
|
+ ->markProcessed($stationTaskMaterialBox['stationTaskCommodities']);
|
|
|
+ LogService::log('海柔请求','markBinProcessed1.8',
|
|
|
+ json_encode($stationTaskMaterialBox));
|
|
|
+ if($stationTaskMaterialBox_next)
|
|
|
+ $this->stationTaskCommoditiesService
|
|
|
+ ->markProcessing($stationTaskMaterialBox_next['stationTaskCommodities']);//因为上边商品任务被标记完成了,所以这里要将队列中找出正在处理的料箱对应的标记为“处理中”
|
|
|
+
|
|
|
+ $this->stationTaskMaterialBoxService
|
|
|
+ ->markProcessed($stationTaskMaterialBox);
|
|
|
+ $notProcessedBoxTasks = $this->stationTaskMaterialBoxService->getNotProcessedSiblings($stationTaskMaterialBox);
|
|
|
+ if($notProcessedBoxTasks->isEmpty()){
|
|
|
+ $this->instant($this->stationTaskService,'StationTaskService');
|
|
|
+ LogService::log('海柔请求','markBinProcessed1.81',
|
|
|
+ json_encode($stationTaskMaterialBox['stationTaskBatch']));
|
|
|
+ $stationTaskMaterialBox->loadMissing('stationTaskBatch');
|
|
|
+ $this->stationTaskBatchService->markProcessed($stationTaskMaterialBox['stationTaskBatch']);
|
|
|
+ LogService::log('海柔请求','markBinProcessed1.82',
|
|
|
+ json_encode($stationTaskMaterialBox['stationTaskBatch']));
|
|
|
+ $this->stationTaskService->markProcessed($stationTaskMaterialBox['stationTask']);
|
|
|
+ }
|
|
|
+ $this->storeBox($stationTaskMaterialBox)
|
|
|
+ ?true
|
|
|
+ :(function(){throw new ErrorException('呼叫机器人回收U型线料箱失败');})();
|
|
|
+ LogService::log('海柔请求','markBinProcessed1.9',
|
|
|
+ json_encode($stationTaskMaterialBox));
|
|
|
+ $this->stationService->broadcastBinMonitor($stationTaskMaterialBox['station_id'],$stationTaskMaterialBox['stationTask']);
|
|
|
+ LogService::log('海柔请求','markBinProcessed1.99',
|
|
|
+ json_encode($stationTaskMaterialBox));
|
|
|
+ });
|
|
|
+
|
|
|
return true;
|
|
|
}catch (\Exception $e){
|
|
|
+
|
|
|
+ $this->instant($this->stationTaskMaterialBoxService,'StationTaskMaterialBoxService');
|
|
|
+ $stationTaskMaterialBox_toStore=
|
|
|
+ $this->stationTaskMaterialBoxService->create([
|
|
|
+ 'station_id' => $this->stationService->getStation_byType('立库')['id'],
|
|
|
+ 'material_box_id' => $stationTaskMaterialBox['materialBox']['id'],
|
|
|
+ 'status' => '处理中'
|
|
|
+ ] );
|
|
|
+
|
|
|
+ $dataToPost=$this->makeJson_move(
|
|
|
+ collect([$stationTaskMaterialBox_toStore]),
|
|
|
+ '输送线入立架',
|
|
|
+ 'BIN-IN1',//TODO:这里应该是动态取得,参考出立架getULineExit()方法,不然不能从站获得对应的出口,而且要改Station的child为children
|
|
|
+ '',
|
|
|
+ $stationTaskMaterialBox['stationTaskBatch']['id']
|
|
|
+ );
|
|
|
+ $this->controlHaiRobot($dataToPost);
|
|
|
+
|
|
|
$stationTaskMaterialBox = $stationTaskMaterialBox??$materialBox??null;
|
|
|
if($stationTaskMaterialBox && get_class($stationTaskMaterialBox)==MaterialBox::class){
|
|
|
$stationTaskMaterialBox = StationTaskMaterialBox::query()
|
|
|
@@ -206,15 +229,22 @@ class ForeignHaiRoboticsService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public function putBinToStore(?StationTaskMaterialBox $stationTaskMaterialBox): bool
|
|
|
+ public function storeBox(?StationTaskMaterialBox $stationTaskMaterialBox): bool
|
|
|
{
|
|
|
LogService::log('海柔请求','putBinToStore1',
|
|
|
'');
|
|
|
LogService::log('海柔请求','putBinToStore2',
|
|
|
json_encode($stationTaskMaterialBox));
|
|
|
$this->instant($this->stationService,'StationService');
|
|
|
+ $this->instant($this->stationTaskMaterialBoxService,'StationTaskMaterialBoxService');
|
|
|
+ $stationTaskMaterialBox_toStore=
|
|
|
+ $this->stationTaskMaterialBoxService->create([
|
|
|
+ 'station_id' => $this->stationService->getStation_byType('立库')['id'],
|
|
|
+ 'material_box_id' => $stationTaskMaterialBox['materialBox']['id'],
|
|
|
+ 'status' => '处理中'
|
|
|
+ ] );
|
|
|
$dataToPost=$this->makeJson_move(
|
|
|
- collect([$stationTaskMaterialBox]),
|
|
|
+ collect([$stationTaskMaterialBox_toStore]),
|
|
|
'输送线入立架',
|
|
|
'BIN-IN1',//TODO:这里应该是动态取得,参考出立架getULineExit()方法,不然不能从站获得对应的出口,而且要改Station的child为children
|
|
|
'',
|
|
|
@@ -224,11 +254,6 @@ class ForeignHaiRoboticsService
|
|
|
json_encode($dataToPost));
|
|
|
$controlSuccess = $this->controlHaiRobot($dataToPost);
|
|
|
if($controlSuccess){
|
|
|
- $this->instant($this->stationTaskMaterialBoxService,'StationTaskMaterialBoxService');
|
|
|
- $this->stationTaskMaterialBoxService->set($stationTaskMaterialBox,[
|
|
|
- 'id' => $stationTaskMaterialBox['id'],
|
|
|
- 'status' => $stationTaskMaterialBox['status']='处理中',
|
|
|
- ]);
|
|
|
}
|
|
|
return $controlSuccess;
|
|
|
}
|