#
Junjie
2024-05-10 a42ae1ffc20459dc46a88590bc4a94f9280f2d3d
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java
@@ -9,6 +9,7 @@
import com.zy.asrs.framework.common.SpringUtils;
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.BasShuttle;
import com.zy.asrs.wcs.core.entity.Loc;
import com.zy.asrs.wcs.core.model.MapNode;
@@ -190,7 +191,10 @@
            NyShuttleHttpCommand readStatusCommand = getReadStatusCommand(Integer.parseInt(device.getDeviceNo()));
            JSONObject data = requestCommand(readStatusCommand);
            if (data == null) {
//                shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE);
                if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) {
                    //最后一次上线时间超过60s,认定离线
                    shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE);
                }
                OutputQueue.SHUTTLE.offer(MessageFormat.format("【{0}】四向穿梭车Socket状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), device.getId(), device.getIp(), device.getPort()));
            }else {
@@ -340,10 +344,15 @@
    @Override
    public ShuttleProtocol getStatus() {
        return getStatus(true);
    }
    @Override
    public ShuttleProtocol getStatus(boolean clone) {
        if (this.shuttleProtocol == null) {
            return null;
        }
        return this.shuttleProtocol.clone();
        return clone ? this.shuttleProtocol.clone() : this.shuttleProtocol;
    }
    @Override
@@ -361,11 +370,39 @@
        try {
            //发出请求
            NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class);
            JSONObject result = requestCommand(httpCommand);
            if (result == null) {
                return false;//请求失败
            Map<String, Object> body = httpCommand.getRequest().getBody();
            Object pathObj = body.get("path");
            List<JSONObject> path = JSON.parseArray(JSON.toJSONString(pathObj), JSONObject.class);
            ArrayList<NyShuttleHttpCommand> commandList = new ArrayList<>();
            while (!path.isEmpty()) {
                ArrayList<Map<String, Object>> list = new ArrayList<>();
                if (path.size() > 10) {
                    List<JSONObject> subList = path.subList(0, 10);
                    list.addAll(subList);
                    subList.clear();
                }else  {
                    list.addAll(path);
                    path.clear();
                }
                NyShuttleHttpCommand httpCommandCopy = JSON.parseObject(JSON.toJSONString(httpCommand), NyShuttleHttpCommand.class);
                JSONObject bodyCopy = JSON.parseObject(JSON.toJSONString(body));
                NyShuttleHttpCommand.NyRequest request = httpCommandCopy.getRequest();
                bodyCopy.put("path", list);
                request.setBody(bodyCopy);
                httpCommandCopy.setRequest(request);
                commandList.add(httpCommandCopy);//add copy
            }
            this.shuttleProtocol.setSendTime(System.currentTimeMillis());//指令下发时间
            for (NyShuttleHttpCommand requestCommand : commandList) {
                JSONObject result = requestCommand(requestCommand);
                if (result == null) {
                    return false;//请求失败
                }
                this.shuttleProtocol.setSendTime(System.currentTimeMillis());//指令下发时间
            }
            return true;
        } catch (IOException e) {
            return false;
@@ -621,6 +658,19 @@
    }
    @Override
    public boolean enableMoveLoc(ShuttleMoveLocParam param) {
        shuttleProtocol.setMoveLoc(true);//开启跑库
        shuttleProtocol.setMoveType(param.getMoveType());
        shuttleProtocol.setXStart(param.getStartX());
        shuttleProtocol.setXTarget(param.getTargetX());
        shuttleProtocol.setXCurrent(param.getStartX());
        shuttleProtocol.setYStart(param.getStartY());
        shuttleProtocol.setYTarget(param.getTargetY());
        shuttleProtocol.setYCurrent(param.getStartY());
        return true;
    }
    @Override
    public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) {
        NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
        NyShuttleHttpCommand httpStandard = getHttpStandard(Integer.parseInt(device.getDeviceNo()), taskNo);