luxiaotao1123
2024-04-03 15047d62d27fbe4f99b7f93292c2cf9709b7cc97
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
@@ -21,6 +21,7 @@
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;
@@ -87,6 +88,9 @@
                    shuttleProtocol.setShuttleNo(Integer.valueOf(device.getDeviceNo()));
                    shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
                    shuttleProtocol.setDevice(device);
                    InnerSuhttleExtend extend = new InnerSuhttleExtend();
                    shuttleProtocol.setExtend(extend);
                }
                //----------读取四向穿梭车状态-----------
@@ -108,13 +112,19 @@
                //是否为充电状态
                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);
@@ -325,6 +335,24 @@
    }
    @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");
@@ -351,6 +379,37 @@
        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;
    }
    //***************设备层通讯-不同厂商设备通讯方案不一致***************
@@ -410,4 +469,20 @@
        }
        return null;
    }
    @Data
    private class InnerSuhttleExtend {
        /**
         * 地图版本
         */
        private String mapVersion;
        /**
         * 状态描述
         */
        private String statusDescription;
    }
}