master
杜威垚 6 months ago
parent 5ae136188a
commit c7452b6eec

Binary file not shown.

@ -169,25 +169,106 @@ public class DataManager {
OperationLog log = new OperationLog(id, operationType, operationTarget,
operator, LocalDateTime.now(), details);
operationLogs.add(log);
// 添加数据库操作
String url = "jdbc:sqlite:db/dbuml.db3";
String sql = "INSERT INTO operation_logs (id, operation_type, operation_target, operator, operation_time, details) " +
"VALUES (?, ?, ?, ?, ?, ?)";
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, log.getId());
pstmt.setString(2, log.getOperationType());
pstmt.setString(3, log.getOperationTarget());
pstmt.setString(4, log.getOperator());
pstmt.setString(5, log.getOperationTime().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
pstmt.setString(6, log.getDetails());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
showAlert("错误", "保存操作日志失败:" + e.getMessage());
}
}
public List<OperationLog> getOperationLogs() {
return new ArrayList<>(operationLogs);
List<OperationLog> logs = new ArrayList<>();
String url = "jdbc:sqlite:db/dbuml.db3";
String sql = "SELECT * FROM operation_logs ORDER BY operation_time DESC";
try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
OperationLog log = new OperationLog(
rs.getString("id"),
rs.getString("operation_type"),
rs.getString("operation_target"),
rs.getString("operator"),
LocalDateTime.parse(rs.getString("operation_time")),
rs.getString("details")
);
logs.add(log);
}
} catch (SQLException e) {
e.printStackTrace();
showAlert("错误", "读取操作日志失败:" + e.getMessage());
}
return logs;
}
public List<OperationLog> getFilteredOperationLogs(LocalDateTime startDate, LocalDateTime endDate, String operationType) {
return operationLogs.stream()
.filter(log -> {
boolean timeMatch = true;
if (startDate != null && endDate != null) {
timeMatch = !log.getOperationTime().isBefore(startDate) &&
!log.getOperationTime().isAfter(endDate);
}
boolean typeMatch = "全部".equals(operationType) ||
operationType.equals(log.getOperationType());
return timeMatch && typeMatch;
})
.collect(Collectors.toList());
List<OperationLog> logs = new ArrayList<>();
String url = "jdbc:sqlite:db/dbuml.db3";
StringBuilder sql = new StringBuilder("SELECT * FROM operation_logs WHERE 1=1");
List<Object> params = new ArrayList<>();
if (startDate != null && endDate != null) {
sql.append(" AND operation_time BETWEEN ? AND ?");
params.add(startDate.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
params.add(endDate.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
}
if (!"全部".equals(operationType)) {
sql.append(" AND operation_type = ?");
params.add(operationType);
}
sql.append(" ORDER BY operation_time DESC");
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql.toString())) {
// 设置参数
for (int i = 0; i < params.size(); i++) {
pstmt.setObject(i + 1, params.get(i));
}
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
OperationLog log = new OperationLog(
rs.getString("id"),
rs.getString("operation_type"),
rs.getString("operation_target"),
rs.getString("operator"),
LocalDateTime.parse(rs.getString("operation_time")),
rs.getString("details")
);
logs.add(log);
}
} catch (SQLException e) {
e.printStackTrace();
showAlert("错误", "读取操作日志失败:" + e.getMessage());
}
return logs;
}
@ -219,8 +300,8 @@ public class DataManager {
// Synchronize memory data
addGoods(goods);
// Add operation log
addOperationLog("新增", goods.getId(), "当前用户", "新增货物: " + goods.getName());
// 将操作日志类型从"新增"改为"修改"
addOperationLog("修改", goods.getId(), "当前用户", "修改货物: " + goods.getName());
} catch (SQLException e) {
e.printStackTrace();
showAlert("错误", "添加货物失败:" + e.getMessage());

Loading…
Cancel
Save