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