with('materialBox:code')->where('station_id',$station['id'])->where('status',1)->orderBy('grid_id')->get(); $station->setRelation('grids',$grids); } /** * 亮灯 * @param Station $station * @param $pointX * @param $pointY * @return string */ public function lightOnApi(Station $station,$pointX,$pointY): string { $locCode = 'HAI'.$station['code'].'-0'.$pointX.'-0'.$pointY; $params = [ "areaCode"=> "1004", "PTLAction"=> 1, //1是开,0是关 "PTLSettings"=> [ "color"=> 1, "frequency"=> 1 ], "displayInfo"=> [ "detail01"=> "detail01", "detail02"=> "detail02", "detail03"=> "detail03", "qrCode"=> "qrCode", "qty00"=> "11", "qty01"=> 1, "qty02"=> 2, "title"=> "title", "uomDesc01"=> "uo", "uomDesc02"=> "uo" ], "locCode"=> $locCode//灯条口,B1\B2=设备编号,中间号码代表从右往左数的列,右边号码时从下往上数 ]; $response = Http::post(config('api.haiq.storage.light'),$params); return $response->body(); } /** * 拍灯 * @param Station $station * @param MaterialBox $materialBox * @param StationCacheShelfGrid $grid * @return bool * @throws ErrorException */ public function putBinToStore(Station $station,MaterialBox $materialBox,StationCacheShelfGrid $grid): bool { // 生成任务 /** @var StationTaskMaterialBox $stationTaskMaterialBox */ $stationTaskMaterialBox = StationTaskMaterialBox::query()->create([ 'station_id' => $station['id'], 'material_box_id' => $materialBox['id'], 'status' => '待处理' ]); // 格口状态修改 $grid->update(['station_id'=>$station['id'],'status'=>1]); $station->setRelation('grids',$grid); $stationTaskMaterialBox->setRelation('station',$station); $stationTaskMaterialBox->setRelation('materialBox',$materialBox); // 推送任务给海柔 /** @var ForeignHaiRoboticsService $foreignHaiRoboticsService */ $foreignHaiRoboticsService = app(ForeignHaiRoboticsService::class); return $foreignHaiRoboticsService->putBinToStore_fromCacheShelf($stationTaskMaterialBox); } /** * 入库任务完成 * @param $params */ public function putBinToStoreFinish($params) { $locCode = $params['locCode']; list($stationCode,$gridId) = StationCacheShelfGrid::getGridByCode($locCode); $station = Station::query()->where('code',$stationCode)->first(); $stationCacheShelfGrid = StationCacheShelfGrid::query()->with('materialBox')->where('station_id',$station)->where('grid_id',$gridId)->first(); $stationCacheShelfGrid->update(['status'=>'0','material_box_id' => null]); $StationTaskMaterialBox = StationTaskMaterialBox::query()->where('station_id',$station['id'])->where('material_box_id',$stationCacheShelfGrid['$stationCacheShelfGrid'])->first(); /** @var StationTaskMaterialBoxService $stationTaskMaterialBoxService */ $stationTaskMaterialBoxService = app(StationTaskMaterialBoxService::class); $stationTaskMaterialBoxService->set($StationTaskMaterialBox,['status'=>'已完成']); } }