package com.zy.asrs.utils; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Arith; import com.core.common.Cools; import com.core.common.SpringUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.LocMast; import com.zy.asrs.service.LocMastService; import com.zy.common.properties.SlaveProperties; 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){ int row = getRow(locNo); ArrayList list = new ArrayList<>(); switch (row) { case 1: case 2: case 3: list.add(zerofill(String.valueOf(1), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(2), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(3), 2) + locNo.substring(2)); Collections.reverse(list); return list; case 4: case 5: case 6: case 7: list.add(zerofill(String.valueOf(4), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(5), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(6), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(7), 2) + locNo.substring(2)); return list; case 8: case 9: case 10: case 11: list.add(zerofill(String.valueOf(8), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(9), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(10), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(11), 2) + locNo.substring(2)); Collections.reverse(list); return list; case 12: case 13: case 14: list.add(zerofill(String.valueOf(12), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(13), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(14), 2) + locNo.substring(2)); return list; case 15: case 16: case 17: case 18: list.add(zerofill(String.valueOf(15), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(16), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(17), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(18), 2) + locNo.substring(2)); Collections.reverse(list); return list; case 19: case 20: case 21: list.add(zerofill(String.valueOf(19), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(20), 2) + locNo.substring(2)); list.add(zerofill(String.valueOf(21), 2) + locNo.substring(2)); return list; default: throw new RuntimeException("库位解析异常"); } } public static List getGroupLoc(Integer row){ switch (row) { case 1: case 2: case 3: return new ArrayList() {{ add(1); add(2); add(3); }}; case 4: case 5: case 6: case 7: return new ArrayList() {{ add(4); add(5); add(6); add(7); }}; case 8: case 9: case 10: case 11: return new ArrayList() {{ add(8); add(9); add(10); add(11); }}; case 12: case 13: case 14: return new ArrayList() {{ add(12); add(13); add(14); }}; case 15: case 16: case 17: case 18: return new ArrayList() {{ add(15); add(16); add(17); add(18); }}; case 19: case 20: case 21: return new ArrayList() {{ add(19); add(20); add(21); }}; default: throw new RuntimeException("库位解析异常"); } } // 注意顺序 public static List getGroupOuterLoc(String locNo){ int row = getRow(locNo); switch (row) { case 1: return new ArrayList() {{ add(zerofill(String.valueOf(3), 2) + locNo.substring(2)); add(zerofill(String.valueOf(2), 2) + locNo.substring(2)); }}; case 2: return new ArrayList() {{ add(zerofill(String.valueOf(3), 2) + locNo.substring(2)); }}; case 3: case 4: case 11: case 12: case 18: case 19: return new ArrayList<>(); case 5: return new ArrayList() {{ add(zerofill(String.valueOf(4), 2) + locNo.substring(2)); }}; case 6: return new ArrayList() {{ add(zerofill(String.valueOf(4), 2) + locNo.substring(2)); add(zerofill(String.valueOf(5), 2) + locNo.substring(2)); }}; case 7: return new ArrayList() {{ add(zerofill(String.valueOf(4), 2) + locNo.substring(2)); add(zerofill(String.valueOf(5), 2) + locNo.substring(2)); add(zerofill(String.valueOf(6), 2) + locNo.substring(2)); }}; case 8: return new ArrayList() {{ add(zerofill(String.valueOf(11), 2) + locNo.substring(2)); add(zerofill(String.valueOf(10), 2) + locNo.substring(2)); add(zerofill(String.valueOf(9), 2) + locNo.substring(2)); }}; case 9: return new ArrayList() {{ add(zerofill(String.valueOf(11), 2) + locNo.substring(2)); add(zerofill(String.valueOf(10), 2) + locNo.substring(2)); }}; case 10: return new ArrayList() {{ add(zerofill(String.valueOf(11), 2) + locNo.substring(2)); }}; case 13: return new ArrayList() {{ add(zerofill(String.valueOf(12), 2) + locNo.substring(2)); }}; case 14: return new ArrayList() {{ add(zerofill(String.valueOf(12), 2) + locNo.substring(2)); add(zerofill(String.valueOf(13), 2) + locNo.substring(2)); }}; case 15: return new ArrayList() {{ add(zerofill(String.valueOf(18), 2) + locNo.substring(2)); add(zerofill(String.valueOf(17), 2) + locNo.substring(2)); add(zerofill(String.valueOf(16), 2) + locNo.substring(2)); }}; case 16: return new ArrayList() {{ add(zerofill(String.valueOf(18), 2) + locNo.substring(2)); add(zerofill(String.valueOf(17), 2) + locNo.substring(2)); }}; case 17: return new ArrayList() {{ add(zerofill(String.valueOf(18), 2) + locNo.substring(2)); }}; case 20: return new ArrayList() {{ add(zerofill(String.valueOf(19), 2) + locNo.substring(2)); }}; case 21: return new ArrayList() {{ add(zerofill(String.valueOf(19), 2) + locNo.substring(2)); add(zerofill(String.valueOf(20), 2) + locNo.substring(2)); }}; default: throw new RuntimeException("库位解析异常"); } } // 注意顺序 public static List getGroupInsideLoc(String locNo){ int row = getRow(locNo); switch (row) { case 1: case 21: case 14: case 15: case 7: case 8: return new ArrayList<>(); case 2: return new ArrayList() {{ add(zerofill(String.valueOf(1), 2) + locNo.substring(2)); }}; case 3: return new ArrayList() {{ add(zerofill(String.valueOf(1), 2) + locNo.substring(2)); add(zerofill(String.valueOf(2), 2) + locNo.substring(2)); }}; case 4: return new ArrayList() {{ add(zerofill(String.valueOf(7), 2) + locNo.substring(2)); add(zerofill(String.valueOf(6), 2) + locNo.substring(2)); add(zerofill(String.valueOf(5), 2) + locNo.substring(2)); }}; case 5: return new ArrayList() {{ add(zerofill(String.valueOf(7), 2) + locNo.substring(2)); add(zerofill(String.valueOf(6), 2) + locNo.substring(2)); }}; case 6: return new ArrayList() {{ add(zerofill(String.valueOf(7), 2) + locNo.substring(2)); }}; case 9: return new ArrayList() {{ add(zerofill(String.valueOf(8), 2) + locNo.substring(2)); }}; case 10: return new ArrayList() {{ add(zerofill(String.valueOf(8), 2) + locNo.substring(2)); add(zerofill(String.valueOf(9), 2) + locNo.substring(2)); }}; case 11: return new ArrayList() {{ add(zerofill(String.valueOf(8), 2) + locNo.substring(2)); add(zerofill(String.valueOf(9), 2) + locNo.substring(2)); add(zerofill(String.valueOf(10), 2) + locNo.substring(2)); }}; case 12: return new ArrayList() {{ add(zerofill(String.valueOf(14), 2) + locNo.substring(2)); add(zerofill(String.valueOf(13), 2) + locNo.substring(2)); }}; case 13: return new ArrayList() {{ add(zerofill(String.valueOf(14), 2) + locNo.substring(2)); }}; case 16: return new ArrayList() {{ add(zerofill(String.valueOf(15), 2) + locNo.substring(2)); }}; case 17: return new ArrayList() {{ add(zerofill(String.valueOf(15), 2) + locNo.substring(2)); add(zerofill(String.valueOf(16), 2) + locNo.substring(2)); }}; case 18: return new ArrayList() {{ add(zerofill(String.valueOf(15), 2) + locNo.substring(2)); add(zerofill(String.valueOf(16), 2) + locNo.substring(2)); add(zerofill(String.valueOf(17), 2) + locNo.substring(2)); }}; case 19: return new ArrayList() {{ add(zerofill(String.valueOf(21), 2) + locNo.substring(2)); add(zerofill(String.valueOf(20), 2) + locNo.substring(2)); }}; case 20: return new ArrayList() {{ add(zerofill(String.valueOf(21), 2) + locNo.substring(2)); }}; default: throw new RuntimeException("库位解析异常"); } } public Map> getRowSeqHasSortOfPakin(int start, int end) { Map> result = new HashMap<>(); for (int i = start ; i <= end; i++) { } return result; } //检测提交的出库库位是否合法(浅库位有非空库位) public static void checkStockOutLocNo(List locNos) { LocMastService locMastService = SpringUtils.getBean(LocMastService.class); //检测是否为浅库位 boolean sign = false; String th = ""; for (String locNo : locNos) { if (sign) { break; } List groupInsideLoc = Utils.getGroupLoc(locNo); if (!Cools.isEmpty(groupInsideLoc)) { for (String insideLoc : groupInsideLoc) { if (locNos.contains(insideLoc)) { break; } LocMast locMast = locMastService.selectOne(new EntityWrapper().eq("loc_no", insideLoc)); if (locMast != null) { if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")) { sign = true; th = "库位号:" + locNo + " 浅库位有非空库位!"; break; } } } } } if (sign){ throw new CoolException("出库失败;" + th); } } /** * 检测当前库位内侧其他库位是否为D、F、X * 返回true表示内侧库位不是DFX,返回false表示内侧库位是DFX */ public static boolean checkInsideLocIsDFX(String locNo) { LocMastService locMastService = SpringUtils.getBean(LocMastService.class); List insideLoc = Utils.getGroupInsideLoc(locNo); if (insideLoc.size() > 0) { List insideLocMast = locMastService.selectByLocNos(insideLoc); for (LocMast mast : insideLocMast) { if (!mast.getLocSts().equals("D") && !mast.getLocSts().equals("F") && !mast.getLocSts().equals("X")) { //D、F、X(不能选定这个外侧库位) return true; } } } return false; } /** * 检测当前库位内侧其他库位是否为D、F、X、S * 返回true表示内侧库位不是DFX,返回false表示内侧库位是DFX */ public static boolean checkInsideLocIsDFXS(String locNo) { LocMastService locMastService = SpringUtils.getBean(LocMastService.class); List insideLoc = Utils.getGroupInsideLoc(locNo); if (insideLoc.size() > 0) { List insideLocMast = locMastService.selectByLocNos(insideLoc); for (LocMast mast : insideLocMast) { if (!mast.getLocSts().equals("D") && !mast.getLocSts().equals("F") && !mast.getLocSts().equals("X") && !mast.getLocSts().equals("S")) { //D、F、X、S(不能选定这个外侧库位) return true; } } } return false; } public static void main(String[] args) { List groupLoc = Utils.getGroupLoc("1300801"); System.out.println(groupLoc); } }