|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|