|  |  |  | 
|---|
|  |  |  | import com.zy.asrs.framework.exception.CoolException; | 
|---|
|  |  |  | import com.zy.asrs.wcs.common.ExecuteSupport; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.domain.param.ShuttleMoveLocParam; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.entity.BasLift; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.entity.BasShuttle; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.entity.Loc; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.model.NavigateNode; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.model.command.ShuttleCommand; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.model.command.ShuttleRedisCommand; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.model.enums.*; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.service.BasLiftService; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.service.BasShuttleService; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.service.LocService; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.utils.LiftDispatcher; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.utils.NavigateUtils; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.utils.Utils; | 
|---|
|  |  |  | import com.zy.asrs.wcs.rcs.News; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public boolean updateLocation(ShuttleCommand command) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | String loginToken = requestLoginToken(); | 
|---|
|  |  |  | if (loginToken == null) { | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | HashMap<String, Object> headers = new HashMap<>(); | 
|---|
|  |  |  | headers.put("Authorization", "Bearer " + loginToken); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String response = new HttpHandler.Builder() | 
|---|
|  |  |  | .setUri(API_URL) | 
|---|
|  |  |  | .setPath("/RDS/changeLocation") | 
|---|
|  |  |  | .setHeaders(headers) | 
|---|
|  |  |  | .setJson(command.getBody()) | 
|---|
|  |  |  | .setTimeout(60, TimeUnit.SECONDS) | 
|---|
|  |  |  | .build() | 
|---|
|  |  |  | .doPost(); | 
|---|
|  |  |  | JSONObject jsonObject = JSON.parseObject(response); | 
|---|
|  |  |  | Integer code = jsonObject.getInteger("code"); | 
|---|
|  |  |  | if (code.equals(200)) { | 
|---|
|  |  |  | this.shuttleProtocol.setSendTime(System.currentTimeMillis());//指令下发时间 | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public boolean isIdle() { | 
|---|
|  |  |  | return this.isIdle(null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | body.put("nodeY", loc.getBay()); | 
|---|
|  |  |  | body.put("nodeZ", loc.getLev()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //检测目标点是否为提升机 | 
|---|
|  |  |  | BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class); | 
|---|
|  |  |  | BasLift basLift = basLiftService.getOne(new LambdaQueryWrapper<BasLift>().eq(BasLift::getRow, loc.getRow()) | 
|---|
|  |  |  | .eq(BasLift::getBay, loc.getBay()) | 
|---|
|  |  |  | .eq(BasLift::getHostId, this.device.getHostId())); | 
|---|
|  |  |  | if (basLift != null) { | 
|---|
|  |  |  | LiftDispatcher liftDispatcher = SpringUtils.getBean(LiftDispatcher.class); | 
|---|
|  |  |  | Integer realLev = liftDispatcher.getLiftLevOffset(basLift.getDeviceId().intValue(), loc.getLev()); | 
|---|
|  |  |  | body.put("nodeZ", realLev); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ShuttleCommand command = new ShuttleCommand(); | 
|---|
|  |  |  | command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo())); | 
|---|
|  |  |  | command.setBody(JSON.toJSONString(body)); | 
|---|
|  |  |  | 
|---|
|  |  |  | return command; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public ShuttleCommand getUpdateLocationCommand(Integer taskNo, String locNo) { | 
|---|
|  |  |  | HashMap<String, Object> body = new HashMap<>(); | 
|---|
|  |  |  | body.put("messageName", "runOrder"); | 
|---|
|  |  |  | body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); | 
|---|
|  |  |  | body.put("deviceNo", Integer.parseInt(this.device.getDeviceNo())); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String coord = "(" + Utils.getRow(locNo) + "," + Utils.getBay(locNo) + "," + Utils.getLev(locNo) + ")"; | 
|---|
|  |  |  | body.put("coord", coord); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ShuttleCommand command = new ShuttleCommand(); | 
|---|
|  |  |  | command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo())); | 
|---|
|  |  |  | command.setBody(JSON.toJSONString(body)); | 
|---|
|  |  |  | command.setMode(ShuttleCommandModeType.UPDATE_LOCATION.id); | 
|---|
|  |  |  | return command; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //***************设备层通讯-不同厂商设备通讯方案不一致*************** | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //请求登录 | 
|---|