|
|
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;
|
|
|
}
|
|
|
} |