From bbf11a79fce0131aa95905c09b00f25e7696d20b Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期二, 21 十月 2025 16:53:13 +0800 Subject: [PATCH] * --- src/main/java/com/zy/asrs/utils/param/ItemUtilParam.java | 82 ++++++++++++++++++++++++++++++++++------- 1 files changed, 68 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/zy/asrs/utils/param/ItemUtilParam.java b/src/main/java/com/zy/asrs/utils/param/ItemUtilParam.java index 4ca44df..39c799c 100644 --- a/src/main/java/com/zy/asrs/utils/param/ItemUtilParam.java +++ b/src/main/java/com/zy/asrs/utils/param/ItemUtilParam.java @@ -2,24 +2,78 @@ import lombok.Data; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + @Data public class ItemUtilParam { - String name; - double unitSpace; - int maxCapacity; - int stock; - int remaining; - public ItemUtilParam(String name, int maxCapacity, int stock) { - this.name = name; - this.maxCapacity = maxCapacity; - this.unitSpace = 1.0 / maxCapacity; - this.stock = stock; - this.remaining = stock; + @Data + public static class Item { + String name; + double unitSpace; + int maxCapacity; + int stock; + int remaining; + + public Item(String name, int maxCapacity, int stock) { + this.name = name; + this.maxCapacity = maxCapacity; + this.unitSpace = 1.0 / maxCapacity; + this.stock = stock; + this.remaining = stock; + } + + @Override + public String toString() { + return name + "(鍗曟斁" + maxCapacity + "涓�, 搴撳瓨" + stock + "涓�)"; + } } - @Override - public String toString() { - return name + "(鍗曟斁" + maxCapacity + "涓�, 搴撳瓨" + stock + "涓�)"; + + static class Locker { + int id; + double remainingSpace; + long bindingTags; + Map<String, Integer> contents; + Set<String> itemTypes; + + public Locker(int id) { + this.id = id; + this.remainingSpace = 1.0; + this.contents = new HashMap<>(); + this.itemTypes = new HashSet<>(); + this.bindingTags = System.currentTimeMillis(); + + } + + public boolean canAdd(ItemUtilParam.Item item, int quantity) { + return remainingSpace >= quantity * item.unitSpace; + } + + public void addItem(ItemUtilParam.Item item, int quantity) { + double spaceUsed = quantity * item.unitSpace; + remainingSpace -= spaceUsed; + contents.put(item.name, contents.getOrDefault(item.name, 0) + quantity); + itemTypes.add(item.name); + item.remaining -= quantity; + } + + public boolean containsItemType(String itemName) { + return itemTypes.contains(itemName); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("鍌ㄧ墿鏌�").append(id).append(": "); + sb.append(String.format("鍓╀綑绌洪棿%.4f", remainingSpace)).append("\n"); + for (Map.Entry<String, Integer> entry : contents.entrySet()) { + sb.append(" ").append(entry.getKey()).append(": ").append(entry.getValue()).append("涓猏n"); + } + return sb.toString(); + } } } -- Gitblit v1.9.1