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/inOrderServiceImpl.java

269 lines
12 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 com.lingnan.supermarket.dao.inOrderService;
import com.lingnan.supermarket.dto.InOrder;
import com.lingnan.supermarket.utils.JDBCUtil;
import java.sql.*;
import java.util.Vector;
public class inOrderServiceImpl implements inOrderService{
@Override
public Vector<InOrder> findAllInOrder() {
Vector<InOrder> inOrders = new Vector<InOrder>(); // 创建一个向量用于存储InOrder对象
Connection conn = JDBCUtil.getConn(); // 获取数据库连接
PreparedStatement preparedStatement = null; // 声明预编译语句对象
ResultSet resultSet = null; // 声明结果集对象
// SQL查询语句选择未删除的订单并按入库日期降序排列
String SQL = "select * from inOrder where delmark=1 order by inDate desc";
try {
preparedStatement = conn.prepareStatement(SQL); // 准备SQL语句
resultSet = preparedStatement.executeQuery(); // 执行查询
while (resultSet.next()) { // 遍历结果集
InOrder inOrder = new InOrder(); // 创建InOrder对象
// 从结果集中获取属性并设置到inOrder对象
inOrder.setiNumber(resultSet.getString("iNumber"));
inOrder.setAllInPrice(resultSet.getFloat("allInPrice"));
inOrder.setInDate(resultSet.getString("inDate"));
inOrder.setPrincipal(resultSet.getString("principal"));
inOrder.setStatus(resultSet.getInt("status"));
inOrder.setDelmark(resultSet.getInt("Delmark"));
inOrders.add(inOrder); // 将InOrder对象添加到向量中
}
} catch (SQLException e) {
e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
return inOrders; // 返回存储所有InOrder对象的向量
}
@Override
public InOrder findByIdinOrder(String iNumber) {
InOrder inOrder = new InOrder(); // 创建InOrder对象
Connection conn = JDBCUtil.getConn(); // 获取数据库连接
PreparedStatement preparedStatement = null; // 声明预编译语句对象
ResultSet resultSet = null; // 声明结果集对象
try {
// 准备SQL语句根据订单号查找特定的订单
preparedStatement = conn.prepareStatement("select * from inOrder where iNumber = ?"); //根据订单号查询订单
preparedStatement.setString(1, iNumber); // 设置订单号参数
resultSet = preparedStatement.executeQuery(); // 执行查询
// 设置查询到的订单的属性到InOrder对象中
if (resultSet.next()) { // 如果找到对应记录
// 从结果集中获取属性并设置到inOrder对象
inOrder.setiNumber(resultSet.getString("iNumber"));
inOrder.setAllInPrice(resultSet.getFloat("allInPrice"));
inOrder.setInDate(resultSet.getString("inDate"));
inOrder.setPrincipal(resultSet.getString("principal"));
inOrder.setStatus(resultSet.getInt("status"));
} else {
return null; // 没有找到该订单或订单不存在返回null
}
} catch (SQLException e) {
e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
return inOrder; // 返回找到的InOrder对象
}
@Override
public int addInOrder(String iNumber, float allInPrice) {
int flag = 0; // 状态标志初始化为0
Timestamp inDate = new Timestamp(System.currentTimeMillis()); // 获取当前时间戳
Connection conn = JDBCUtil.getConn(); // 获取数据库连接
PreparedStatement preparedStatement = null; // 声明预编译语句对象
try {
// 准备SQL插入语句
preparedStatement = conn.prepareStatement("insert into inOrder values (?,?,?,?)");
preparedStatement.setString(1, iNumber); // 设置订单号参数
preparedStatement.setFloat(2, allInPrice); // 设置总价格参数
preparedStatement.setTimestamp(3, inDate); // 设置入库日期
preparedStatement.setString(4, "a1"); // 设置其他固定参数例如默认的负责人ID
preparedStatement.executeUpdate(); // 执行插入操作
flag = 1; // 标记插入成功
} catch (SQLException e) {
flag = -1; // 插入失败时标记为-1
e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
JDBCUtil.close(null, preparedStatement, conn); // 关闭预编译语句和数据库连接
}
return flag; // 返回插入结果标志
}
@Override
public int deleteInOrder(String iNumber) {
int flag = 0; // 状态标志初始化为0
Connection conn = JDBCUtil.getConn(); // 获取数据库连接
PreparedStatement preparedStatement = null; // 声明预编译语句对象
try {
// 准备SQL更新语句将delmark标记为0表示逻辑删除
preparedStatement = conn.prepareStatement("update inOrder set delmark=0 where iNumber = ?");
preparedStatement.setString(1, iNumber); // 设置订单号参数
preparedStatement.executeUpdate(); // 执行更新操作
flag = 1; // 标记删除成功
} catch (SQLException e) {
flag = -1; // 删除失败时标记为-1
e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
JDBCUtil.close(null, preparedStatement, conn); // 关闭预编译语句和数据库连接
}
return flag; // 返回删除结果标志
}
/*往订单表插入一条记录*/
// 插入新的进货订单
public boolean InsertInOrder(String number, Float allPrice, String time, String username, int c) {
boolean flag = false; // 初始化标志为false
Connection conn = JDBCUtil.getConn(); // 获取数据库连接
PreparedStatement pstmt = null; // 声明预编译语句对象
ResultSet resultSet = null; // 声明结果集对象
try {
// 准备SQL插入语句
pstmt = conn.prepareStatement("insert into InOrder values(?,?,?,?,?,?)");
pstmt.setString(1, number); // 设置订单号
pstmt.setFloat(2, allPrice); // 设置总价格
pstmt.setString(3, time); // 设置入库时间
pstmt.setString(4, username); // 设置负责人用户名
pstmt.setInt(5, 2); // 设置状态假设2代表某个特定状态
pstmt.setInt(6, 1); // 设置删除标记假设1表示未删除
// 执行插入操作
if (pstmt.execute())
flag = true; // 如果成功执行插入设置标志为true
} catch (SQLException e) {
e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
JDBCUtil.close(resultSet, pstmt, conn); // 关闭结果集、预编译语句和数据库连接
}
return flag; // 返回插入结果标志
}
/* 更新状态 */
public boolean updateInOrderStatus(String iNumber, int status) {
boolean flag = false; // 初始化标志为false
Connection conn = JDBCUtil.getConn(); // 获取数据库连接
PreparedStatement preparedStatement = null; // 声明预编译语句对象
try {
// 准备SQL更新语句更新指定订单号的状态
preparedStatement = conn.prepareStatement("update inOrder set status=? where iNumber=?");
preparedStatement.setInt(1, status); // 设置状态
preparedStatement.setString(2, iNumber); // 设置订单号
// 如果更新操作影响了一行则设置标志为true
if (preparedStatement.executeUpdate() == 1)
flag = true;
} catch (SQLException e) {
e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
JDBCUtil.close(null, preparedStatement, conn); // 关闭预编译语句和数据库连接
}
return flag; // 返回更新结果标志
}
// 查找所有待入库订单(待确认)
public Vector<InOrder> findUnconfirmInOrder() {
Vector<InOrder> inOrders = new Vector<InOrder>(); // 创建一个向量用于存储InOrder对象
Connection conn = JDBCUtil.getConn(); // 获取数据库连接
PreparedStatement preparedStatement = null; // 声明预编译语句对象
ResultSet resultSet = null; // 声明结果集对象
// SQL查询语句选择状态为2并且未删除的订单
String SQL = "select * from inOrder where status=2 and delmark=1";
try {
preparedStatement = conn.prepareStatement(SQL); // 准备SQL语句
resultSet = preparedStatement.executeQuery(); // 执行查询
while (resultSet.next()) { // 遍历结果集
InOrder inOrder = new InOrder(); // 创建InOrder对象
// 从结果集中获取属性并设置到inOrder对象
inOrder.setiNumber(resultSet.getString("iNumber")); // 设置订单号
inOrder.setAllInPrice(resultSet.getFloat("allInPrice")); // 设置总价格
inOrder.setInDate(resultSet.getString("inDate")); // 设置入库日期
inOrder.setPrincipal(resultSet.getString("principal")); // 设置负责人
inOrder.setStatus(resultSet.getInt("status")); // 设置订单状态
inOrder.setDelmark(resultSet.getInt("Delmark")); // 设置删除标记
inOrders.add(inOrder); // 将InOrder对象添加到向量中
}
} catch (SQLException e) {
e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
return inOrders; // 返回存储待确认订单的向量
}
// 获取今日进货金额
public Float TodayInPrice(String date) {
InOrder inOrder = new InOrder(); // 创建InOrder对象
Connection conn = JDBCUtil.getConn(); // 获取数据库连接
PreparedStatement preparedStatement = null; // 声明预编译语句对象
ResultSet resultSet = null; // 声明结果集对象
Float allInPrice = (float) 0; // 初始化总进货金额为0
try {
// 准备SQL查询语句计算指定日期的进货金额总和
preparedStatement = conn.prepareStatement("select sum(allInPrice) from inOrder where inDate>=? and inDate<=date_add(?,interval 1 day)");
preparedStatement.setString(1, date); // 设置起始日期
preparedStatement.setString(2, date); // 设置结束日期(起始日期+1天
resultSet = preparedStatement.executeQuery(); // 执行查询
if (resultSet.next()) { // 如果有结果
allInPrice = resultSet.getFloat("sum(allInPrice)"); // 获取总进货金额
}
} catch (SQLException e) {
e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
return allInPrice; // 返回总进货金额
}
// 查找指定状态订单
public Vector<InOrder> FindStatus(int status) {
Vector<InOrder> inOrders = new Vector<InOrder>(); // 创建一个向量用于存储InOrder对象
Connection conn = JDBCUtil.getConn(); // 获取数据库连接
PreparedStatement preparedStatement = null; // 声明预编译语句对象
ResultSet resultSet = null; // 声明结果集对象
try {
// 准备SQL查询语句根据状态查找订单
preparedStatement = conn.prepareStatement("select * from inOrder where status=? and delmark=1 order by inDate desc");
preparedStatement.setInt(1, status); // 设置状态参数
resultSet = preparedStatement.executeQuery(); // 执行查询
while (resultSet.next()) { // 遍历结果集
InOrder inOrder = new InOrder(); // 创建InOrder对象
// 从结果集中获取属性并设置到inOrder对象
inOrder.setiNumber(resultSet.getString("iNumber")); // 设置订单号
inOrder.setAllInPrice(resultSet.getFloat("allInPrice")); // 设置总价格
inOrder.setInDate(resultSet.getString("inDate")); // 设置入库日期
inOrder.setPrincipal(resultSet.getString("principal")); // 设置负责人
inOrder.setStatus(resultSet.getInt("status")); // 设置订单状态
inOrder.setDelmark(resultSet.getInt("Delmark")); // 设置删除标记
inOrders.add(inOrder); // 将InOrder对象添加到向量中
}
} catch (SQLException e) {
e.printStackTrace(); // 捕获并打印异常堆栈信息
} finally {
JDBCUtil.close(resultSet, preparedStatement, conn); // 关闭结果集、预编译语句和数据库连接
}
return inOrders; // 返回指定状态的订单向量
}
}