You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
test/Supermarket/lib/dao/impl/outOrderServiceImpl.java

189 lines
7.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.lingnan.supermarket.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Date;
import java.util.Vector;
import com.lingnan.supermarket.dao.outOrderService;
import com.lingnan.supermarket.dto.InOrder;
import com.lingnan.supermarket.dto.OutOrder;
import com.lingnan.supermarket.utils.JDBCUtil;
// 实现outOrderService接口--用于处理与出库订单相关的数据访问操作
public class outOrderServiceImpl implements outOrderService {
// 查询所有出库订单信息,并按照日期降序排列返回
@Override
public Vector<OutOrder> findAllOutOrder() {
// 存储查询到的所有出库订单信息的向量集合
Vector<OutOrder> outOrders = new Vector<OutOrder>();
// 获取数据库连接
Connection conn = JDBCUtil.getConn();
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
// 从OutOrder表中查询所有记录并按oDate字段降序排序
String SQL = "select * from OutOrder order by oDate desc";
try {
// 根据SQL语句创建预编译的Statement对象
preparedStatement = conn.prepareStatement(SQL);
// 执行查询操作
resultSet = preparedStatement.executeQuery();
// 遍历结果集将每条记录封装成OutOrder对象并添加到outOrders集合中
while (resultSet.next()) {
OutOrder outOrder = new OutOrder();
outOrder.setoNumber(resultSet.getString("oNumber"));
outOrder.setAllOutPrice(resultSet.getFloat("allOutPrice"));
outOrder.setoDate(resultSet.getDate("oDate"));
outOrder.setPrincipal(resultSet.getString("principal"));
outOrders.add(outOrder);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭结果集、预编译语句以及数据库连接,释放相关资源
JDBCUtil.close(resultSet, preparedStatement, conn);
}
return outOrders;
}
// 根据订单编号查询对应的出库订单信息
@Override
public OutOrder findByIdOutOrder(String oNumber) {
// 用于存储查询到的出库订单信息的对象
OutOrder outOrder = new OutOrder();
// 获取数据库连接
Connection conn = JDBCUtil.getConn();
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
// 根据订单编号查询对应的出库订单记录
preparedStatement = conn.prepareStatement("select * from outOrder where oNumber =?");
// 设置查询的订单编号
preparedStatement.setString(1, oNumber);
// 执行查询操作
resultSet = preparedStatement.executeQuery();
// 如果结果集中有记录说明找到了对应的订单则将记录中的各字段值封装到outOrder对象中
if (resultSet.next()) {
outOrder.setoNumber(resultSet.getString("oNumber"));
outOrder.setAllOutPrice(resultSet.getFloat("allOutPrice"));
outOrder.setoDate(resultSet.getDate("oDate"));
outOrder.setPrincipal(resultSet.getString("principal"));
} else {
// 如果结果集中没有记录说明没有找到该订单或订单不存在返回null
return null;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭结果集、预编译语句以及数据库连接,释放相关资源
JDBCUtil.close(resultSet, preparedStatement, conn);
}
return outOrder;
}
// 向数据库中添加一条出库订单记录
@Override
public int addOutOrder(String oNumber, float allOutPrice) {
int flag = 0;
// 获取当前系统时间戳用于作为出库订单的日期oDate字段值表示订单创建时间
Timestamp oDate = new Timestamp(System.currentTimeMillis());
// 获取数据库连接
Connection conn = JDBCUtil.getConn();
PreparedStatement preparedStatement = null;
try {
// 创建预编译的SQL插入语句向outOrder表中插入一条记录
preparedStatement = conn.prepareStatement("insert into outOrder values (?,?,?,?)");
// 设置预编译语句中的参数,依次为订单编号、总出库价格、订单日期、负责人(此处写死为"a1",可能后续需要改进)
preparedStatement.setString(1, oNumber);
preparedStatement.setFloat(2, allOutPrice);
preparedStatement.setTimestamp(3, oDate);
preparedStatement.setString(4, "a1");
// 执行插入操作
preparedStatement.executeUpdate();
// 如果插入成功将标志位flag设置为1表示操作成功
flag = 1;
} catch (SQLException e) {
// 如果插入出现异常将标志位flag设置为 -1表示操作失败
flag = -1;
e.printStackTrace();
} finally {
// 关闭预编译语句以及数据库连接,释放相关资源
JDBCUtil.close(null, preparedStatement, conn);
}
return flag;
}
// 根据订单编号从数据库中删除对应的出库订单记录
@Override
public int deleteOutOrder(String oNumber) {
int flag = 0;
// 获取数据库连接
Connection conn = JDBCUtil.getConn();
PreparedStatement preparedStatement = null;
try {
// 创建预编译的SQL删除语句根据订单编号oNumber删除对应的出库订单记录
preparedStatement = conn.prepareStatement("delete from outOrder where oNumber =?");
// 设置预编译语句中的参数,即要删除的订单编号
preparedStatement.setString(1, oNumber);
// 执行删除操作
preparedStatement.executeUpdate();
// 如果删除成功将标志位flag设置为1表示操作成功
flag = 1;
} catch (SQLException e) {
// 如果删除出现异常将标志位flag设置为 -1表示操作失败
flag = -1;
e.printStackTrace();
} finally {
// 关闭预编译语句以及数据库连接,释放相关资源
JDBCUtil.close(null, preparedStatement, conn);
}
return flag;
}
// 获取指定日期的今日出库金额总和(此处方法名可能有点混淆,从代码逻辑看是获取指定日期的出库金额总和)
public Float TodayOutPrice(String date) {
// 创建一个InOrder对象
InOrder inOrder = new InOrder();
// 获取数据库连接
Connection conn = JDBCUtil.getConn();
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
// 用于存储查询到的今日出库金额总和初始为0
Float allInPrice = (float) 0;
try {
// 通过求和函数查询指定日期范围内的总出库价格
preparedStatement = conn.prepareStatement("select sum(allOutPrice) from outOrder where oDate>=? and oDate<=date_add(?,interval 1 day)");
// 设置两个参数均为传入的日期值,用于限定查询的日期范围
preparedStatement.setString(1, date);
preparedStatement.setString(2, date);
// 执行查询操作
resultSet = preparedStatement.executeQuery();
// 如果结果集中有记录说明查询到了对应的金额数据则将其取出赋值给allInPrice变量
if (resultSet.next()) {
allInPrice = resultSet.getFloat("sum(allOutPrice)");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭结果集、预编译语句以及数据库连接,释放相关资源
JDBCUtil.close(resultSet, preparedStatement, conn);
}
return allInPrice;
}
}