| | |
| | | } |
| | | } |
| | | |
| | | // // 使用Stream API进行排序并创建新的Map,同时保持插入顺序。 |
| | | // Map<String, Double> sortedMap = locAnfmeMap.entrySet().stream() |
| | | // .sorted(Map.Entry.<String, Double>comparingByValue(Comparator.reverseOrder())) // 根据值排序条目。 |
| | | // .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new)); |
| | | |
| | | |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | |
| | | // 使用 TreeMap(自动按 key 升序排序) |
| | | Map<String, List<Map.Entry<String, Date>>> sortedByDayAsc = locTimeMap.entrySet() |
| | | .stream() |
| | |
| | | List<LocDetl> allLoc = new ArrayList<>(); |
| | | List<LocDetl> lessLoc = new ArrayList<>(); |
| | | |
| | | //优先找整托 |
| | | // //优先找整托 |
| | | // for (Map.Entry<String, List<Map.Entry<String, Date>>> listEntry : sortedByDayAsc.entrySet()) { |
| | | // for (Map.Entry<String, Date> dateEntry : listEntry.getValue()) { |
| | | // if (issued <= 0) { |
| | | // break; |
| | | // } |
| | | // String locNo = dateEntry.getKey(); |
| | | // Double anfme = locAnfmeMap.get(locNo); |
| | | // if(anfme > orderDetl.getAnfme()) { |
| | | // lessMap.put(locNo, anfme); |
| | | // continue; |
| | | // } |
| | | // List<LocDetl> list = map.get(locNo); |
| | | // allLoc.addAll(list); |
| | | // |
| | | // // 剩余待出数量递减 |
| | | // issuedBigDecimal = issuedBigDecimal.subtract(BigDecimal.valueOf(anfme)); |
| | | // issued = issuedBigDecimal.doubleValue(); |
| | | // } |
| | | // } |
| | | // |
| | | // if(issued > 0) { |
| | | // //零散搜索 |
| | | // for (Map.Entry<String, Double> entry : lessMap.entrySet()) { |
| | | // if (issued <= 0) { |
| | | // break; |
| | | // } |
| | | // |
| | | // String locNo = entry.getKey(); |
| | | // Double anfme = entry.getValue(); |
| | | // if (anfme >= issued) { |
| | | // List<LocDetl> list = map.get(locNo); |
| | | // lessLoc.addAll(list); |
| | | // // 剩余待出数量递减 |
| | | // issuedBigDecimal = issuedBigDecimal.subtract(BigDecimal.valueOf(anfme)); |
| | | // issued = issuedBigDecimal.doubleValue(); |
| | | // } |
| | | // } |
| | | // } |
| | | // allLoc.addAll(lessLoc); |
| | | |
| | | //必须把当天库存用完 |
| | | for (Map.Entry<String, List<Map.Entry<String, Date>>> listEntry : sortedByDayAsc.entrySet()) { |
| | | for (Map.Entry<String, Date> dateEntry : listEntry.getValue()) { |
| | | if (issued <= 0) { |
| | |
| | | } |
| | | String locNo = dateEntry.getKey(); |
| | | Double anfme = locAnfmeMap.get(locNo); |
| | | if(anfme > orderDetl.getAnfme()) { |
| | | lessMap.put(locNo, anfme); |
| | | continue; |
| | | } |
| | | |
| | | List<LocDetl> list = map.get(locNo); |
| | | allLoc.addAll(list); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | if(issued > 0) { |
| | | //零散搜索 |
| | | for (Map.Entry<String, Double> entry : lessMap.entrySet()) { |
| | | if (issued <= 0) { |
| | | break; |
| | | } |
| | | |
| | | String locNo = entry.getKey(); |
| | | Double anfme = entry.getValue(); |
| | | if (anfme >= issued) { |
| | | List<LocDetl> list = map.get(locNo); |
| | | lessLoc.addAll(list); |
| | | // 剩余待出数量递减 |
| | | issuedBigDecimal = issuedBigDecimal.subtract(BigDecimal.valueOf(anfme)); |
| | | issued = issuedBigDecimal.doubleValue(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | allLoc.addAll(lessLoc); |
| | | issuedBigDecimal = Optional.of(BigDecimal.valueOf(orderDetl.getAnfme()).subtract(BigDecimal.valueOf(orderDetl.getWorkQty()))).orElse(new BigDecimal(0)); |
| | | issued = issuedBigDecimal.doubleValue(); |
| | | for (LocDetl locDetl : allLoc) { |