map(function (StationTaskMaterialBox $taskMaterialBox)use($timestampSuffix,$fromLocation,$toLocation){ return [ "taskCode" =>$taskMaterialBox['id'], "binCode" => $taskMaterialBox['materialBox']['code'], "fromLocCode" => $fromLocation??'', "toLocCode" => $toLocation??'', ]; }); return [ "taskMode" =>$taskMode, "bins"=>$bins, "groupCode"=>$groupId.$timestampSuffix, "priority"=>$priority, "sequenceFlag"=>$isSequenced, ]; } public function fetchGroup($toLocation, Collection $taskMaterialBoxes, $groupIdPrefix=''): bool { $dataToPost=$this->makeJson_move( $taskMaterialBoxes, '立架出至输送线', '', $toLocation, $groupIdPrefix ); $response = Http::post(config('api.haiq.storage.moveBin'),$dataToPost); $errMsg=(function()use($response){ if($response->ok())return ''; $errMsg = '错误: '; if (!$response){ return $errMsg.'没有返回内容,检查连接或目标服务器'; } switch (((string)$response["code"])[0]){ case 5: $errMsg.='目标服务器代码错误,请联系对方';break; case 4: $errMsg.='权限不足以请求资源,请检查对方服务器规范';break; default: $errMsg.='出现未知请求错误';break; } $responseDetails=' code:'.$response["code"] .' header:'.$response->body() .' response:'.json_encode($response->headers()); return $errMsg.$responseDetails; })(); LogService::log(__METHOD__,__FUNCTION__, $errMsg??'' .'请求:'.json_encode($dataToPost) .'调用堆栈:'.json_encode(array_slice(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS),0,3)) ); return $isSuccess=!$errMsg; } public function moveBin(){ } public function markBinProcessed(){ } public function taskUpdate( // $groupCode, $taskCode, $updateEventType, //0:task_begin(取货)1:task_end(放货) $status, //0:任务成功1:任务失败 $binCode ):bool{ try{ if(($failed =$status)==1){ throw new ErrorException('海柔任务失败'); } if($stationTaskMaterialBox =(function()use($taskCode,$binCode){ $stationTaskMaterialBox=StationTaskMaterialBox::query()->find($taskCode); if($stationTaskMaterialBox['code']==$binCode)return $stationTaskMaterialBox; return null; })()){ throw new ErrorException('发回的料箱和任务号(ID)不匹配'); }; if(($isPut =$updateEventType)==0){ $this->stationTaskMaterialBoxService->markHasPut($stationTaskMaterialBox); } if(($isGet =$updateEventType)==1){ $this->stationTaskMaterialBoxService->markHasTaken($stationTaskMaterialBox); } }catch (\Exception $e){ $this->excepted($taskCode, $binCode); return false; } return true; } // public function markHasPut($taskCode,$binCode):bool{ // try{ // //标记料箱进入位置 //// $taskMaterialBoxesService->markDone();// // }catch (\Exception $e){ // switch ($e->getCode()){ // case 'taskBinNotMatch'; // case 'taskGetFailed'; // } // } // // } public function excepted($taskCode,$binCode):bool{ } }