package com.zy.asrs.utils; import com.core.common.Arith; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.common.properties.SlaveProperties; import com.zy.common.service.CommonService; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; /** * 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 list = new ArrayList<>(); // list.add(1);list.add(4);list.add(5);list.add(8);list.add(9);list.add(12); // slaveProperties.setDoubleLocs(list); // slaveProperties.setGroupCount(4); // Integer deepRow = getDeepRow(slaveProperties, 6); // System.out.println(deepRow); // // } // 外侧方向的货位 优先入库方向/优先出库方向 ===>> 反之 public static List getGroupOutsideLocCrn(String locNo,boolean pakin){ int row = getRow(locNo); List result = new ArrayList<>(); result.add(locNo); // result.add(zerofill(String.valueOf(32), 2) + locNo.substring(2)); return result; } public static boolean BooleanWhsTypeSta(Integer whsType){ if (whsType==1){ return true; } return false; } public static int RowCount(Integer whsType,Integer curRow){ return LocNecessaryParameters(whsType, curRow)[0]; } public static int getCurRow(Integer whsType,Integer curRow){ return LocNecessaryParameters(whsType, curRow)[1]; } public static int getCrnNo(Integer whsType,Integer curRow){ return LocNecessaryParameters(whsType, curRow)[2]; } public static int getNearRow(Integer whsType,Integer curRow){ return LocNecessaryParameters(whsType, curRow)[3]; } //库位排号分配 public static int[] LocNecessaryParameters(Integer whsType,Integer curRow){ int[] necessaryParameters=new int[]{0,0,0,0}; if (BooleanWhsTypeSta(whsType)){ necessaryParameters[0] = 6; switch (curRow){ //满板正常入库 case 24: necessaryParameters[1] = 1; //curRow 最深库位排 necessaryParameters[2] = 1; //crnNo 堆垛机号 necessaryParameters[3] = 2; //nearRow 最浅库位排 break; case 21: necessaryParameters[1] = 4; //curRow 最深库位排 necessaryParameters[2] = 1; //crnNo 堆垛机号 necessaryParameters[3] = 3; //nearRow 最浅库位排 break; default: curRow=curRow+4; if (curRow<1 || curRow>24){ throw new CoolException("库位排号异常:排号:"+curRow); } if ((curRow-1)%4==0){ necessaryParameters[1] = curRow; //curRow 最深库位排 necessaryParameters[2] = (curRow+3)/4; //crnNo 堆垛机号 necessaryParameters[3] = curRow+1; //nearRow 最浅库位排 }else if (curRow%4==0){ necessaryParameters[1] = curRow; //curRow 最深库位排 necessaryParameters[2] = curRow/4; //crnNo 堆垛机号 necessaryParameters[3] = curRow-1; //nearRow 最浅库位排 }else { throw new CoolException("库位排号异常:排号:"+curRow); } } }else {//空板不入1号 necessaryParameters[0] = 5; switch (curRow){ case 24: necessaryParameters[1] = 5; //curRow 最深库位排 necessaryParameters[2] = 2; //crnNo 堆垛机号 necessaryParameters[3] = 6; //nearRow 最浅库位排 break; case 21: necessaryParameters[1] = 8; //curRow 最深库位排 necessaryParameters[2] = 2; //crnNo 堆垛机号 necessaryParameters[3] = 7; //nearRow 最浅库位排 break; default: curRow=curRow+4; if (curRow<5 || curRow>24){ throw new CoolException("库位排号异常:排号:"+curRow); } if ((curRow-1)%4==0){ necessaryParameters[1] = curRow; //curRow 最深库位排 necessaryParameters[2] = (curRow+3)/4; //crnNo 堆垛机号 necessaryParameters[3] = curRow+1; //nearRow 最浅库位排 }else if (curRow%4==0){ necessaryParameters[1] = curRow; //curRow 最深库位排 necessaryParameters[2] = curRow/4; //crnNo 堆垛机号 necessaryParameters[3] = curRow-1; //nearRow 最浅库位排 }else { throw new CoolException("库位排号异常:排号:"+curRow); } } } return necessaryParameters; } }