|  |  | 
 |  |  | import com.zy.asrs.wcs.rcs.thread.ShuttleThread; | 
 |  |  | import com.zy.asrs.wcs.core.utils.RedisUtil; | 
 |  |  | import com.zy.asrs.wcs.rcs.entity.Device; | 
 |  |  | import lombok.Data; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  |  | 
 |  |  | import java.text.MessageFormat; | 
 |  |  | 
 |  |  |                     shuttleProtocol.setShuttleNo(Integer.valueOf(device.getDeviceNo())); | 
 |  |  |                     shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); | 
 |  |  |                     shuttleProtocol.setDevice(device); | 
 |  |  |  | 
 |  |  |                     InnerSuhttleExtend extend = new InnerSuhttleExtend(); | 
 |  |  |                     shuttleProtocol.setExtend(extend); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 //----------读取四向穿梭车状态----------- | 
 |  |  | 
 |  |  |                 //是否为充电状态 | 
 |  |  |                 shuttleProtocol.setHasCharge((deviceStatus == 5 || deviceStatus == 13) ? true : false); | 
 |  |  |  | 
 |  |  |                 //*********读取扩展字段********** | 
 |  |  |                 InnerSuhttleExtend extend = JSON.parseObject(JSON.toJSONString(shuttleProtocol.getExtend()), InnerSuhttleExtend.class); | 
 |  |  |                 extend.setMapVersion(data.getString("version"));//地图版本 | 
 |  |  |                 extend.setStatusDescription(data.getString("statusDescription"));//状态描述 | 
 |  |  |                 shuttleProtocol.setExtend(extend);//扩展字段 | 
 |  |  |  | 
 |  |  |                 ///读取四向穿梭车状态-end | 
 |  |  |  | 
 |  |  | //                //小车处于忙碌状态,将标记置为true | 
 |  |  | //                if (shuttleProtocol.getDeviceStatusType() == ShuttleDeviceStatusType.BUSY) { | 
 |  |  | //                    shuttleProtocol.setPakMk(true); | 
 |  |  | //                } | 
 |  |  | // | 
 |  |  |                 //小车处于忙碌状态,将标记置为true | 
 |  |  |                 if (!shuttleProtocol.getIdle()) { | 
 |  |  |                     shuttleProtocol.setPakMk(true); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  | //                if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == ShuttleDeviceStatusType.IDLE.id) { | 
 |  |  | //                    //小车空闲状态、小车任务状态为未知,认定曾离线过,需要复位成空闲 | 
 |  |  | //                    shuttleProtocol.setProtocolStatusType(ShuttleProtocolStatusType.IDLE); | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public boolean isIdle() { | 
 |  |  |         if (this.shuttleProtocol.getIdle() == null | 
 |  |  |                 || this.shuttleProtocol.getPakMk() == null | 
 |  |  |                 || this.shuttleProtocol.getErrorCode() == null | 
 |  |  |                 || this.shuttleProtocol.getProtocolStatus() == null | 
 |  |  |         ) { | 
 |  |  |             return false; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         boolean res = this.shuttleProtocol.getIdle() | 
 |  |  |                 && this.shuttleProtocol.getPakMk() | 
 |  |  |                 && this.shuttleProtocol.getErrorCode().equals("0") | 
 |  |  |                 && this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id | 
 |  |  |                 ; | 
 |  |  |         return res; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed) { | 
 |  |  |         HashMap<String, Object> body = new HashMap<>(); | 
 |  |  |         body.put("messageName", "runOrder"); | 
 |  |  | 
 |  |  |         return command; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift) { | 
 |  |  |         HashMap<String, Object> body = new HashMap<>(); | 
 |  |  |         body.put("messageName", "actionOrder"); | 
 |  |  |         body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); | 
 |  |  |         body.put("deviceNo", Integer.parseInt(this.device.getDeviceNo())); | 
 |  |  |         body.put("taskId", taskNo); | 
 |  |  |         body.put("action", lift ? 1 : 2); | 
 |  |  |  | 
 |  |  |         ShuttleCommand command = new ShuttleCommand(); | 
 |  |  |         command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo())); | 
 |  |  |         command.setBody(JSON.toJSONString(body)); | 
 |  |  |         command.setMode(lift ? ShuttleCommandModeType.PALLET_LIFT.id : ShuttleCommandModeType.PALLET_DOWN.id); | 
 |  |  |         return command; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge) { | 
 |  |  |         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())); | 
 |  |  |         body.put("taskId", taskNo); | 
 |  |  |         body.put("action", charge ? 3 : 4); | 
 |  |  |  | 
 |  |  |         ShuttleCommand command = new ShuttleCommand(); | 
 |  |  |         command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo())); | 
 |  |  |         command.setBody(JSON.toJSONString(body)); | 
 |  |  |         command.setMode(charge ? ShuttleCommandModeType.CHARGE_OPEN.id : ShuttleCommandModeType.CHARGE_CLOSE.id); | 
 |  |  |         return command; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //***************设备层通讯-不同厂商设备通讯方案不一致*************** | 
 |  |  |  | 
 |  |  | 
 |  |  |         } | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Data | 
 |  |  |     private class InnerSuhttleExtend { | 
 |  |  |  | 
 |  |  |         /** | 
 |  |  |          * 地图版本 | 
 |  |  |          */ | 
 |  |  |         private String mapVersion; | 
 |  |  |  | 
 |  |  |         /** | 
 |  |  |          * 状态描述 | 
 |  |  |          */ | 
 |  |  |         private String statusDescription; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |