|  |  | 
 |  |  |         return (float) Arith.multiplys(2, f, 1); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static int armStaNo(int armNo,int staNo) { | 
 |  |  |         switch (armNo){ | 
 |  |  |             case 1: | 
 |  |  |                 switch (staNo){ | 
 |  |  |                     case 0: | 
 |  |  |                         return 7; | 
 |  |  |                     case 1: | 
 |  |  |                         return 8; | 
 |  |  |                     case 2: | 
 |  |  |                         return 101; | 
 |  |  |                     case 3: | 
 |  |  |                         return 102; | 
 |  |  |                     default: | 
 |  |  |                         return 0; | 
 |  |  |                 } | 
 |  |  |             case 2: | 
 |  |  |                 switch (staNo){ | 
 |  |  |                     case 0: | 
 |  |  |                         return 5; | 
 |  |  |                     case 1: | 
 |  |  |                         return 6; | 
 |  |  |                     case 2: | 
 |  |  |                         return 101; | 
 |  |  |                     case 3: | 
 |  |  |                         return 102; | 
 |  |  |                     default: | 
 |  |  |                         return 0; | 
 |  |  |                 } | 
 |  |  |             case 3: | 
 |  |  |                 switch (staNo){ | 
 |  |  |                     case 0: | 
 |  |  |                         return 3; | 
 |  |  |                     case 1: | 
 |  |  |                         return 4; | 
 |  |  |                     case 2: | 
 |  |  |                         return 101; | 
 |  |  |                     case 3: | 
 |  |  |                         return 102; | 
 |  |  |                     default: | 
 |  |  |                         return 0; | 
 |  |  |                 } | 
 |  |  |             case 4: | 
 |  |  |                 switch (staNo){ | 
 |  |  |                     case 0: | 
 |  |  |                         return 1; | 
 |  |  |                     case 1: | 
 |  |  |                         return 2; | 
 |  |  |                     case 2: | 
 |  |  |                         return 101; | 
 |  |  |                     case 3: | 
 |  |  |                         return 102; | 
 |  |  |                     default: | 
 |  |  |                         return 0; | 
 |  |  |                 } | 
 |  |  |             case 5: | 
 |  |  |                 switch (staNo){ | 
 |  |  |                     case 0: | 
 |  |  |                         return 11; | 
 |  |  |                     case 1: | 
 |  |  |                         return 12; | 
 |  |  |                     case 2: | 
 |  |  |                         return 101; | 
 |  |  |                     case 3: | 
 |  |  |                         return 102; | 
 |  |  |                     default: | 
 |  |  |                         return 0; | 
 |  |  |                 } | 
 |  |  |             case 6: | 
 |  |  |                 switch (staNo){ | 
 |  |  |                     case 0: | 
 |  |  |                         return 13; | 
 |  |  |                     case 1: | 
 |  |  |                         return 14; | 
 |  |  |                     case 2: | 
 |  |  |                         return 101; | 
 |  |  |                     case 3: | 
 |  |  |                         return 102; | 
 |  |  |                     default: | 
 |  |  |                         return 0; | 
 |  |  |                 } | 
 |  |  |             default: | 
 |  |  |                 return 0; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static String zerofill(String msg, Integer count) { | 
 |  |  |         if (msg.length() == count) { | 
 |  |  |             return msg; | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     public static String getShallowLoc(SlaveProperties slaveProperties, String deepLoc) { | 
 |  |  |         int row = getRow(deepLoc); | 
 |  |  |         int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount()); | 
 |  |  |         int shallowRow = remainder == 1 ? (row + 1) : (row - 1); | 
 |  |  |         return zerofill(String.valueOf(shallowRow), 2) + deepLoc.substring(2); | 
 |  |  |         boolean deepLocLeft = isDeepLocLeft(slaveProperties, row); | 
 |  |  |         boolean deepLocRight = isDeepLocRight(slaveProperties, row); | 
 |  |  |         int targetRow; | 
 |  |  |         if (deepLocLeft) { | 
 |  |  |             targetRow = row + 1; | 
 |  |  |         } else if (deepLocRight) { | 
 |  |  |             targetRow = row - 1; | 
 |  |  |         } else { | 
 |  |  |             throw new RuntimeException(deepLoc + "不是浅库位,系统繁忙"); | 
 |  |  |         } | 
 |  |  |         return zerofill(String.valueOf(targetRow), 2) + deepLoc.substring(2); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     public static String getDeepLoc(SlaveProperties slaveProperties, String shallowLoc) { | 
 |  |  |         int row = getRow(shallowLoc); | 
 |  |  |         int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount()); | 
 |  |  |         boolean deepLocLeft = isDeepLocLeft(slaveProperties, row-1); | 
 |  |  |         boolean deepLocRight = isDeepLocRight(slaveProperties, row+1); | 
 |  |  |         int targetRow; | 
 |  |  |         if (remainder == 2) { | 
 |  |  |         if (deepLocLeft) { | 
 |  |  |             targetRow = row - 1; | 
 |  |  |         } else if (remainder == 3) { | 
 |  |  |         } else if (deepLocRight) { | 
 |  |  |             targetRow = row + 1; | 
 |  |  |         } else { | 
 |  |  |             throw new RuntimeException(shallowLoc + "不是浅库位,系统繁忙"); | 
 |  |  |         } | 
 |  |  |         return zerofill(String.valueOf(targetRow), 2) + shallowLoc.substring(2); | 
 |  |  |     } | 
 |  |  | //    public static String getDeepLoc(SlaveProperties slaveProperties, String shallowLoc) { | 
 |  |  | //        int row = getRow(shallowLoc); | 
 |  |  | //        int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount()); | 
 |  |  | //        int targetRow; | 
 |  |  | //        if (remainder == 2) { | 
 |  |  | //            targetRow = row - 1; | 
 |  |  | //        } else if (remainder == 3) { | 
 |  |  | //            targetRow = row + 1; | 
 |  |  | //        } else { | 
 |  |  | //            throw new RuntimeException(shallowLoc + "不是浅库位,系统繁忙"); | 
 |  |  | //        } | 
 |  |  | //        return zerofill(String.valueOf(targetRow), 2) + shallowLoc.substring(2); | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 获取 浅库位排对应的深库位排 | 
 |  |  |      */ | 
 |  |  |     public static Integer getDeepRow(SlaveProperties slaveProperties, Integer shallowRow) { | 
 |  |  |         int remainder = (int) Arith.remainder(shallowRow, slaveProperties.getGroupCount()); | 
 |  |  |         boolean deepLocLeft = isDeepLocLeft(slaveProperties, shallowRow-1); | 
 |  |  |         boolean deepLocRight = isDeepLocRight(slaveProperties, shallowRow+1); | 
 |  |  |         int targetRow; | 
 |  |  |         if (remainder == 2) { | 
 |  |  |         if (deepLocLeft) { | 
 |  |  |             targetRow = shallowRow - 1; | 
 |  |  |         } else if (remainder == 3) { | 
 |  |  |         } else if (deepLocRight) { | 
 |  |  |             targetRow = shallowRow + 1; | 
 |  |  |         } else { | 
 |  |  |             throw new RuntimeException(shallowRow + "不是浅库位排,系统繁忙"); | 
 |  |  |             throw new RuntimeException(shallowRow + "不是浅库位,系统繁忙"); | 
 |  |  |         } | 
 |  |  |         return targetRow; | 
 |  |  |     } | 
 |  |  | 
 |  |  |             if (curRow < sRow || curRow > (crnNumber * 4 + sRow - 1)) { | 
 |  |  |                 throw new CoolException("库位排号异常:排号:" + curRow); | 
 |  |  |             } | 
 |  |  |             if ((curRow - sRow) % 4 == 0) { | 
 |  |  |             if ((curRow - (sRow-1)) % 4 == 0) { | 
 |  |  |                 necessaryParameters[1] = curRow;    //curRow   最深库位排 | 
 |  |  |                 necessaryParameters[2] = (curRow - sRow + 2) / 4 + sCrnNo - 1;     //crnNo     堆垛机号 | 
 |  |  |                 necessaryParameters[3] = curRow + 1;    //nearRow  最浅库位排 | 
 |  |  |             } else if ((curRow - sRow + 1) % 4 == 0) { | 
 |  |  |                 necessaryParameters[1] = curRow;    //curRow   最深库位排 | 
 |  |  |                 necessaryParameters[2] = (curRow - sRow + 1) / 4 + sCrnNo - 1;     //crnNo     堆垛机号 | 
 |  |  |                 necessaryParameters[2] = (curRow - (sRow-1)) / 4 + sCrnNo - 1;     //crnNo     堆垛机号 | 
 |  |  |                 necessaryParameters[3] = curRow - 1;    //nearRow  最浅库位排 | 
 |  |  |             } else if ((curRow - (sRow-1)-1) % 4 == 0) { | 
 |  |  |                 necessaryParameters[1] = curRow;    //curRow   最深库位排 | 
 |  |  |                 necessaryParameters[2] = (curRow - (sRow-1)-1) / 4 + sCrnNo;     //crnNo     堆垛机号 | 
 |  |  |                 necessaryParameters[3] = curRow + 1;    //nearRow  最浅库位排 | 
 |  |  |             } else { | 
 |  |  |                 throw new CoolException("库位排号异常:排号:" + curRow); | 
 |  |  |             } |