@ -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 < InventoryReport > generateInventoryReport ( ) {
List < InventoryReport > 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" ) ;