From a62d0f6a25e07ccb064b7bdc6401c51a41a92049 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=9F=8E?= <2304508674@qq.com> Date: Wed, 18 Dec 2024 13:26:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A7=E7=89=A9=E4=BF=A1=E6=81=AF=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/dbuml.db3 | Bin 36864 -> 36864 bytes src/view/GoodsManagementView.java | 86 ++++++++++++++++++++---------- 2 files changed, 57 insertions(+), 29 deletions(-) diff --git a/db/dbuml.db3 b/db/dbuml.db3 index 6f6c90a58d5e840b832518ad8f7a094b0247cf6b..7b35501b00e98fdf1de2ca23282b32f2fa0a3c4e 100644 GIT binary patch delta 1246 zcmb7D-)qxQ7)@7~wNCHNw)&85QW1-=kv6$ENs|mj5K+)MC&LFHRAlo>hCVB_5vp!X zq@+XKFE-iK!kisd#L;cw!~TH1_zyH`2ZMo6K8ZNba#GU_S9Ve2?NfPU z+FZ+-lg}K~#%ptYTBkcg3Ab_3Zp_y@i>fS3ikVq5*9?!%TsO?ImzCTH%a~@FQ6y@T z9QR;E!~b?~Z9i-qt4L8Wv0YitRaXku%(7$qEW(1}XRyK7cpjdDsIZ;5Vp(ZBPR5zX_4cqDQH;sj+#z*;SL5jFPr#aCl%v_A#8u*Z6Z4sp@H zHu2W#-`OuW+iT||bLXa#X%nWDPpFX8ZUt&8dK=c9+->po|BuMO^?4+JQN;T_TC+3N zv~JCAR=>=d->lK*YeNUEU2)KZ}X)%eMWwM0R|?%V+{P;_>S=>@g3VNkdVX|V#~&%%g@Mb zt;!qZ>TGCkY+_F?l=H^Hy2eESK>N295U~X(?XlaHp0n9gHffxaItVM{Sv6Z2bm7$rQp`{6u zk=s2OIdmn#X2Q(?dey+l&=6z<=h_L(P}gjf6%{o!Le|Q~e~5vJf9+=Wg5CUf3=9lf cu+W0}i&=zOmk}WdaVo1Yvo0sPU5gq70FLF0x&QzG diff --git a/src/view/GoodsManagementView.java b/src/view/GoodsManagementView.java index 0a1a56e..bd0270d 100644 --- a/src/view/GoodsManagementView.java +++ b/src/view/GoodsManagementView.java @@ -11,8 +11,10 @@ import model.Goods; import java.sql.Connection; import java.sql.DriverManager; +import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; +import java.sql.SQLException; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -39,7 +41,7 @@ public class GoodsManagementView extends BorderPane { tableView = createTableView(); setCenter(tableView); - // 加载现有货物数据 + // 加载现有货��数据 loadGoodsData(); // 添加双击事件填充文本字段 @@ -181,7 +183,12 @@ public class GoodsManagementView extends BorderPane { String remark = remarkField.getText().trim(); // 输入验证 - if (id.isEmpty() || name.isEmpty() || quantityText.isEmpty() || supplier.isEmpty()) { + if (id.isEmpty()) { + showAlert("错误", "请先选择要修改的货物记录!"); + return; + } + + if (name.isEmpty() || quantityText.isEmpty() || supplier.isEmpty()) { showAlert("错误", "请填写完整的货物信息!"); return; } @@ -198,36 +205,57 @@ public class GoodsManagementView extends BorderPane { return; } - // 查找货物对象 - Goods existingGoods = DataManager.getInstance().getGoods(id); - if (existingGoods == null) { - // 插入新货物 - Goods newGoods = new Goods(String.format("NO%014d", System.currentTimeMillis()), - name, quantity, remark); - newGoods.setInboundTime(LocalDateTime.now()); - newGoods.setOperator("当前用户"); - newGoods.setSupplier(supplier); - DataManager.getInstance().addGoodsToDatabase(newGoods); - } else { - // 更新现有货物 - existingGoods.setName(name); - existingGoods.setQuantity(quantity); - existingGoods.setSupplier(supplier); - existingGoods.setRemark(remark); - DataManager.getInstance().updateGoodsInDatabase(existingGoods); + String url = "jdbc:sqlite:db/dbuml.db3"; + try (Connection conn = DriverManager.getConnection(url)) { + // 修改SQL语句,使用UPDATE而不是INSERT + String sql = "UPDATE warehouse SET " + + "goods_id = ?, " + + "quantity = ?, " + + "supplier = ?, " + + "remark = ? " + + "WHERE id = ?"; + + try (PreparedStatement pstmt = conn.prepareStatement(sql)) { + pstmt.setString(1, name); + pstmt.setInt(2, quantity); + pstmt.setString(3, supplier); + pstmt.setString(4, remark); + pstmt.setString(5, id); + + int affectedRows = pstmt.executeUpdate(); + if (affectedRows > 0) { + // 记录操作日志 + String logSql = "INSERT INTO operation_logs " + + "(id, operation_type, operation_target, operator, operation_time, details) " + + "VALUES (?, ?, ?, ?, ?, ?)"; + try (PreparedStatement logStmt = conn.prepareStatement(logSql)) { + String logId = "LOG" + System.currentTimeMillis(); + logStmt.setString(1, logId); + logStmt.setString(2, "修改"); + logStmt.setString(3, name); + logStmt.setString(4, "当前用户"); + logStmt.setString(5, LocalDateTime.now().toString()); + logStmt.setString(6, String.format("修改货物信息:%s,数量:%d,供应商:%s", + name, quantity, supplier)); + + logStmt.executeUpdate(); + } + + // 刷新表格 + loadGoodsData(); + handleClear(); + showAlert("成功", "货物信息已更新!"); + } else { + showAlert("错误", "未找到要修改的货物记录!"); + } + } + } catch (SQLException e) { + e.printStackTrace(); + showAlert("错误", "更新失败:" + e.getMessage()); } - - // 更新表格 - loadGoodsData(); - - // 清空输入 - handleClear(); - - showAlert("成功", "货物信息已更新!"); - } catch (Exception e) { - showAlert("错误", "保存失败:" + e.getMessage()); e.printStackTrace(); + showAlert("错误", "保存失败:" + e.getMessage()); } }