package com.zy.asrs.utils; import com.core.common.Arith; import com.core.common.Cools; import com.core.common.SpringUtils; import com.zy.common.utils.NavigatePositionConvert; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.ShuttleSlave; import com.zy.core.model.protocol.ShuttleProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.ShuttleThread; import java.text.DecimalFormat; import java.util.*; /** * Created by vincent on 2020/8/27 */ public class Utils { private static final DecimalFormat fmt = new DecimalFormat("##0.00"); public static float scale(Float f){ if (f == null || f == 0f || Float.isNaN(f)) { return 0f; } return (float) Arith.multiplys(2, f, 1); } public static String zerofill(String msg, Integer count){ if (msg.length() == count){ return msg; } else if (msg.length() > count){ return msg.substring(0, 16); } else { StringBuilder msgBuilder = new StringBuilder(msg); for (int i = 0; i getGroupLoc(String locNo) { return null; } //获取除白名单外的指定楼层全部穿梭车xy坐标点 public static List getShuttlePoints(Integer whiteShuttle, Integer lev) { SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); ArrayList list = new ArrayList<>(); for (ShuttleSlave slave : slaveProperties.getShuttle()) { if (slave.getId().intValue() == whiteShuttle) { continue;//跳过白名单 } //获取穿梭车所在节点位置 ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); if (shuttleThread == null) { continue; } ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { continue; } String currentLocNo = shuttleProtocol.getCurrentLocNo(); if (currentLocNo == null) { continue; } if (lev != Utils.getLev(currentLocNo)) { continue;//楼层不同 } if (shuttleProtocol.getCurrentLocNo() == null) { continue; } int[] xyPosition = NavigatePositionConvert.positionToXY(shuttleProtocol.getCurrentLocNo());//通过库位号获取xy坐标 list.add(xyPosition); } return list; } //检测楼层是否有穿梭车 public static boolean checkLevHasShuttle(Integer lev) { SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { //获取四向穿梭车线程 ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); if (shuttleThread == null) { continue; } ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { continue; } String currentLocNo = shuttleProtocol.getCurrentLocNo(); if (currentLocNo == null) { continue; } if (lev == Utils.getLev(currentLocNo)) { return true;//指定楼层有穿梭车 } } return false;//指定楼层没有穿梭车 } //检测库位组是否存在小车,存在返回小车号。 public static Integer checkGroupLocHasShuttle(List groupLoc) { if (groupLoc == null) { return null; } if (groupLoc.isEmpty()) { return null; } SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); if (slaveProperties == null) { return null; } for (String loc : groupLoc) { for (ShuttleSlave slave : slaveProperties.getShuttle()) { ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); if (shuttleThread == null) { continue; } ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { continue; } if (shuttleProtocol.getCurrentLocNo() == null) { continue; } if (shuttleProtocol.getCurrentLocNo().equals(loc)) { //存在小车 return slave.getId(); } } } return null; } }