diff --git a/db/dbuml.db3 b/db/dbuml.db3 index 929c474..02d1d48 100644 Binary files a/db/dbuml.db3 and b/db/dbuml.db3 differ diff --git a/src/model/DataManager.java b/src/model/DataManager.java index 558f6fe..78b348a 100644 --- a/src/model/DataManager.java +++ b/src/model/DataManager.java @@ -31,43 +31,64 @@ public class DataManager { } private void initializeData() { - // 电子产品类 - addGoodsWithStock("G001", "苹果手机", "iPhone 15", "台", 6999.00, "电子产品", 50); - addGoodsWithStock("G002", "联想笔记本", "ThinkPad T14", "台", 5999.00, "电子产品", 30); - addGoodsWithStock("G003", "华为平板", "MatePad Pro", "台", 3999.00, "电子产品", 40); - addGoodsWithStock("G004", "戴尔显示器", "27寸 4K", "台", 2399.00, "电子产品", 25); - - // 办公家具类 - addGoodsWithStock("G005", "办公桌", "1.4米", "张", 799.00, "办公家具", 100); - addGoodsWithStock("G006", "办公椅", "人体工学", "把", 599.00, "办公家具", 150); - addGoodsWithStock("G007", "文件柜", "三层", "个", 459.00, "办公家具", 80); - addGoodsWithStock("G008", "会议桌", "2.4米", "张", 1599.00, "办公家具", 20); - - // 办公用品类 - addGoodsWithStock("G009", "打印纸", "A4 70g", "箱", 89.00, "办公用品", 200); - addGoodsWithStock("G010", "签字笔", "0.5mm黑色", "盒", 15.00, "办公用品", 500); - addGoodsWithStock("G011", "订书机", "标准型", "个", 35.00, "办公用品", 300); - addGoodsWithStock("G012", "文件夹", "A4蓝色", "个", 8.00, "办公用品", 1000); - - // 添加供应商 - suppliers.add("苹果官方旗舰店"); - suppliers.add("联想专卖店"); - suppliers.add("华为授权店"); - suppliers.add("戴尔官方店"); - suppliers.add("京东自营"); - suppliers.add("天猫超市"); - suppliers.add("办公伙伴专营店"); - suppliers.add("文具批发商"); - suppliers.add("家具城"); - suppliers.add("办公用品直营店"); - } - - - private void addGoodsWithStock(String id, String name, String specification, - String unit, double price, String category, int initialStock) { - Goods goods = new Goods(id, name, specification, unit, price, category, initialStock, ""); - goodsMap.put(id, goods); - inventory.put(id, initialStock); + // 从数据库加载数据 + loadDataFromDatabase(); + } + + private void loadDataFromDatabase() { + String url = "jdbc:sqlite:db/dbuml.db3"; + + try (Connection conn = DriverManager.getConnection(url)) { + // 加载商品数据 + loadGoods(conn); + // 加载供应商数据 + loadSuppliers(conn); + // 加载库存数据 + loadInventory(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + private void loadGoods(Connection conn) throws SQLException { + String sql = "SELECT * FROM goods"; + try (Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery(sql)) { + while (rs.next()) { + String id = rs.getString("id"); + String name = rs.getString("name"); + String specification = rs.getString("specification"); + String unit = rs.getString("unit"); + double price = rs.getDouble("price"); + String category = rs.getString("category"); + String remark = rs.getString("remark"); + + Goods goods = new Goods(id, name, specification, unit, price, category, 0, remark); + goodsMap.put(id, goods); + } + } + } + + private void loadSuppliers(Connection conn) throws SQLException { + String sql = "SELECT supplier_name FROM suppliers"; + try (Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery(sql)) { + while (rs.next()) { + suppliers.add(rs.getString("supplier_name")); + } + } + } + + private void loadInventory(Connection conn) throws SQLException { + String sql = "SELECT goods_id, quantity FROM inventory"; + try (Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery(sql)) { + while (rs.next()) { + String goodsId = rs.getString("goods_id"); + int quantity = rs.getInt("quantity"); + inventory.put(goodsId, quantity); + } + } } public void addGoods(Goods goods) { @@ -79,14 +100,26 @@ public class DataManager { public static List generateInventoryReport() { List reports = new ArrayList<>(); - - // 数据库连接URL String url = "jdbc:sqlite:db/dbuml.db3"; try (Connection conn = DriverManager.getConnection(url); - Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT goods_id, goods_name, SUM(quantity) as total_quantity, supplier, remark FROM inbound_records GROUP BY goods_id")) { - + Statement stmt = conn.createStatement()) { + + // 使用与InboundView相同的表结构 + String sql = "SELECT " + + " goods_id, " + + " goods_id as goods_name, " + // 因为InboundView中使用goods_id存储的是货物名称 + " SUM(quantity) as total_quantity, " + + " GROUP_CONCAT(DISTINCT supplier) as supplier, " + + " CASE " + + " WHEN SUM(quantity) < 10 THEN '库存偏低' " + + " ELSE '库存正常' " + + " END as remark " + + "FROM inbound_records " + + "GROUP BY goods_id " + + "ORDER BY goods_id"; + + ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { String goodsId = rs.getString("goods_id"); String goodsName = rs.getString("goods_name");