package com.zy.common.utils; import com.core.common.SpringUtils; import com.zy.asrs.utils.Utils; import com.zy.common.model.NavigateNode; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.ForkLiftSlave; import com.zy.core.model.protocol.ForkLiftStaProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.ForkLiftThread; import java.util.ArrayList; import java.util.List; /** * 货叉提升机工具类 */ public class ForkLiftUtils { //获取提升机站点 public static ForkLiftStaProtocol getLiftStaByStaNo(Integer staNo) { SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); for (ForkLiftSlave liftSlave : slaveProperties.getForkLift()) { ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftSlave.getId()); if (forkLiftThread == null) { return null; } for (ForkLiftStaProtocol forkLiftStaProtocol : forkLiftThread.getForkLiftStaProtocols()) { if (forkLiftStaProtocol.getStaNo().equals(staNo)) { return forkLiftStaProtocol; } } } return null; } //获取提升机站点 public static ForkLiftStaProtocol getLiftStaByLev(Integer liftNo, Integer lev) { ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); if (forkLiftThread == null) { return null; } for (ForkLiftStaProtocol forkLiftStaProtocol : forkLiftThread.getForkLiftStaProtocols()) { if (forkLiftStaProtocol.getLev().equals(lev)) { return forkLiftStaProtocol; } } return null; } //获取提升机输送站及其前一站节点 public static List getLiftStaNodes(Integer staNo) { List targetNodes = new ArrayList<>(); //获取目标站 ForkLiftStaProtocol targetLiftSta = ForkLiftUtils.getLiftStaByStaNo(staNo); if (targetLiftSta == null) { return null;//找不到站点 } NavigateNode targetNode = NavigatePositionConvert.locNoToNode(targetLiftSta.getLocNo());//目标节点 String targetLastLocNo = Utils.getLocNo(Utils.getRow(targetLiftSta.getLocNo()) - 1, Utils.getBay(targetLiftSta.getLocNo()), Utils.getLev(targetLiftSta.getLocNo()));//目标节点前一站 NavigateNode targetLastNode = NavigatePositionConvert.locNoToNode(targetLastLocNo);//目标节点前一站 targetNodes.add(targetNode); targetNodes.add(targetLastNode); return targetNodes; } }