库存报表版本二

master
spf 6 months ago
parent e2ef0e068e
commit 06421d49b1

Binary file not shown.

@ -31,43 +31,64 @@ public class DataManager {
} }
private void initializeData() { private void initializeData() {
// 电子产品类 // 从数据库加载数据
addGoodsWithStock("G001", "苹果手机", "iPhone 15", "台", 6999.00, "电子产品", 50); loadDataFromDatabase();
addGoodsWithStock("G002", "联想笔记本", "ThinkPad T14", "台", 5999.00, "电子产品", 30); }
addGoodsWithStock("G003", "华为平板", "MatePad Pro", "台", 3999.00, "电子产品", 40);
addGoodsWithStock("G004", "戴尔显示器", "27寸 4K", "台", 2399.00, "电子产品", 25); private void loadDataFromDatabase() {
String url = "jdbc:sqlite:db/dbuml.db3";
// 办公家具类
addGoodsWithStock("G005", "办公桌", "1.4米", "张", 799.00, "办公家具", 100); try (Connection conn = DriverManager.getConnection(url)) {
addGoodsWithStock("G006", "办公椅", "人体工学", "把", 599.00, "办公家具", 150); // 加载商品数据
addGoodsWithStock("G007", "文件柜", "三层", "个", 459.00, "办公家具", 80); loadGoods(conn);
addGoodsWithStock("G008", "会议桌", "2.4米", "张", 1599.00, "办公家具", 20); // 加载供应商数据
loadSuppliers(conn);
// 办公用品类 // 加载库存数据
addGoodsWithStock("G009", "打印纸", "A4 70g", "箱", 89.00, "办公用品", 200); loadInventory(conn);
addGoodsWithStock("G010", "签字笔", "0.5mm黑色", "盒", 15.00, "办公用品", 500); } catch (SQLException e) {
addGoodsWithStock("G011", "订书机", "标准型", "个", 35.00, "办公用品", 300); e.printStackTrace();
addGoodsWithStock("G012", "文件夹", "A4蓝色", "个", 8.00, "办公用品", 1000); }
}
// 添加供应商
suppliers.add("苹果官方旗舰店"); private void loadGoods(Connection conn) throws SQLException {
suppliers.add("联想专卖店"); String sql = "SELECT * FROM goods";
suppliers.add("华为授权店"); try (Statement stmt = conn.createStatement();
suppliers.add("戴尔官方店"); ResultSet rs = stmt.executeQuery(sql)) {
suppliers.add("京东自营"); while (rs.next()) {
suppliers.add("天猫超市"); String id = rs.getString("id");
suppliers.add("办公伙伴专营店"); String name = rs.getString("name");
suppliers.add("文具批发商"); String specification = rs.getString("specification");
suppliers.add("家具城"); String unit = rs.getString("unit");
suppliers.add("办公用品直营店"); double price = rs.getDouble("price");
} String category = rs.getString("category");
String remark = rs.getString("remark");
private void addGoodsWithStock(String id, String name, String specification, Goods goods = new Goods(id, name, specification, unit, price, category, 0, remark);
String unit, double price, String category, int initialStock) { goodsMap.put(id, goods);
Goods goods = new Goods(id, name, specification, unit, price, category, initialStock, ""); }
goodsMap.put(id, goods); }
inventory.put(id, initialStock); }
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) { public void addGoods(Goods goods) {
@ -79,14 +100,26 @@ public class DataManager {
public static List<InventoryReport> generateInventoryReport() { public static List<InventoryReport> generateInventoryReport() {
List<InventoryReport> reports = new ArrayList<>(); List<InventoryReport> reports = new ArrayList<>();
// 数据库连接URL
String url = "jdbc:sqlite:db/dbuml.db3"; String url = "jdbc:sqlite:db/dbuml.db3";
try (Connection conn = DriverManager.getConnection(url); try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement(); 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")) {
// 使用与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()) { while (rs.next()) {
String goodsId = rs.getString("goods_id"); String goodsId = rs.getString("goods_id");
String goodsName = rs.getString("goods_name"); String goodsName = rs.getString("goods_name");

Loading…
Cancel
Save