Compare commits

...

2 Commits

Author SHA1 Message Date
HouXinyu 979b0b099e Merge branch 'developer'
10 months ago
HouXinyu b319190310 t3
10 months ago

@ -6,6 +6,10 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
<<<<<<< HEAD
=======
// 导入相关的业务逻辑接口、数据传输对象以及工具类,用于数据库操作和日期处理等功能
>>>>>>> developer
import com.lingnan.supermarket.dao.storageRecordService;
import com.lingnan.supermarket.dto.StorageRecord;
import com.lingnan.supermarket.utils.DateUtil;
@ -13,6 +17,7 @@ import com.lingnan.supermarket.utils.JDBCUtil;
public class storageRecordImpl implements storageRecordService {
<<<<<<< HEAD
/**
*
*
@ -52,11 +57,45 @@ public class storageRecordImpl implements storageRecordService {
sr.setNum(resultSet.getInt("num")); // 设置数量字段
sr.setExecute(resultSet.getString("execute")); // 设置执行状态字段
// 设置创建日期字段并通过DateUtil工具类格式化日期
=======
// 查询所有库存记录信息并以Vector容器存储返回
@Override
public Vector<StorageRecord> findAllStorageRecord() {
// 创建一个Vector容器用于存放查询到的StorageRecord对象
Vector<StorageRecord> v = new Vector<StorageRecord>();
// 获取数据库连接通过JDBCUtil工具类来获取已经配置好的连接对象
Connection conn = JDBCUtil.getConn();
PreparedStatement pstmt = null;
ResultSet resultSet = null;
try {
// 编写SQL查询语句从storageRecord表中查询所有记录并按照cDate字段降序排序
String sql = "select * from storageRecord order by cDate desc";
// 使用获取到的数据库连接对象预编译SQL语句
pstmt = conn.prepareStatement(sql);
// 执行查询操作
resultSet = pstmt.executeQuery();
// 遍历结果集将每一条记录封装成StorageRecord对象并添加到Vector容器中
while (resultSet.next()) {
StorageRecord sr = new StorageRecord();
// 设置StorageRecord对象的id属性
sr.setId(resultSet.getString("id"));
// 设置StorageRecord对象的库存编号属性
sr.setTheNumber(resultSet.getString("theNumber"));
// 设置StorageRecord对象的数量属性
sr.setNum(resultSet.getInt("num"));
// 设置StorageRecord对象的执行情况属性
sr.setExecute(resultSet.getString("execute"));
// 通过DateUtil工具类的dateToString方法将数据库中获取的时间戳类型的日期数据转换为字符串类型方便后续使用第二个参数为null可能表示使用默认的日期格式转换具体看DateUtil实现
>>>>>>> developer
sr.setcDate(DateUtil.dateToString(resultSet.getTimestamp("cDate"), null));
// 将StorageRecord对象添加到Vector中
v.add(sr);
}
<<<<<<< HEAD
} catch (SQLException e) {
// 如果出现SQL异常打印错误信息
e.printStackTrace();
@ -85,10 +124,33 @@ public class storageRecordImpl implements storageRecordService {
Connection conn = JDBCUtil.getConn();
// 声明PreparedStatement和ResultSet对象
=======
} catch (SQLException e) {
// 若出现SQL异常打印异常栈信息
e.printStackTrace();
} finally {
// 通过JDBCUtil工具类提供的方法进行关闭操作
JDBCUtil.close(resultSet, pstmt, conn);
}
return v;
}
// 根据给定的库存编号theNumber查找对应的库存记录信息并返回
@Override
public StorageRecord findByIdStorageRecord(String theNumber) {
// 初始化一个StorageRecord对象为null用于存放查询到的库存记录信息如果没查到则返回null
StorageRecord sr = null;
// 获取数据库连接
Connection conn = JDBCUtil.getConn();
>>>>>>> developer
PreparedStatement pstmt = null;
ResultSet resultSet = null;
try {
<<<<<<< HEAD
// 初始化StorageRecord对象
sr = new StorageRecord();
@ -105,11 +167,26 @@ public class storageRecordImpl implements storageRecordService {
if (resultSet.next()) {
sr.setTheNumber(resultSet.getString("theNumber"));
sr.setId(resultSet.getString("id"));
=======
// 创建一个新的StorageRecord对象用于后续封装查询到的数据
sr = new StorageRecord();
// 预编译SQL语句用于根据给定的库存编号theNumber查询storageRecord表中的记录
pstmt = conn.prepareStatement("select *from storageRecord where theNumber=?");
// 设置SQL语句中的参数将传入的库存编号赋值给查询语句中的占位符
pstmt.setString(1, theNumber);
// 执行查询操作,获取结果集
resultSet = pstmt.executeQuery();
// 如果结果集中有下一条记录则将对应记录中的各字段值封装到StorageRecord对象中
if (resultSet.next()) {
sr.setTheNumber((resultSet.getString("theNumber")));
sr.setId((resultSet.getString("id")));
>>>>>>> developer
sr.setNum(resultSet.getInt("num"));
sr.setExecute(resultSet.getString("execute"));
// 设置存储记录的创建日期,并进行格式化
sr.setcDate(DateUtil.dateToString(resultSet.getTimestamp("cDate"), null));
}
<<<<<<< HEAD
} catch (SQLException e) {
// 如果发生SQLException打印堆栈信息
e.printStackTrace();
@ -141,10 +218,31 @@ public class storageRecordImpl implements storageRecordService {
Connection conn = JDBCUtil.getConn();
// 声明PreparedStatement和ResultSet对象
=======
} catch (SQLException e) {
// 若出现SQL异常打印异常栈信息
e.printStackTrace();
} finally {
// 关闭相关资源
JDBCUtil.close(resultSet, pstmt, conn);
}
return sr;
}
// 向库存记录表storageRecord中插入一条新的库存记录信息
public boolean insertStorageRecord(String iNumber, String time, String prodId, String execute, int sum) {
// 定义一个布尔变量用于标记插入操作是否成功初始化为false
boolean flag = false;
// 获取数据库连接
Connection conn = JDBCUtil.getConn();
>>>>>>> developer
PreparedStatement pstmt = null;
ResultSet resultSet = null;
try {
<<<<<<< HEAD
// 编写SQL插入语句将数据插入到storageRecord表中
pstmt = conn.prepareStatement("insert into storageRecord values(?,?,?,?,?)");
@ -179,6 +277,33 @@ public class storageRecordImpl implements storageRecordService {
}
// 返回插入操作的结果成功返回true失败返回false
=======
// 预编译插入数据的SQL语句向storageRecord表中插入五条数据
pstmt = conn.prepareStatement("insert into storageRecord values(?,?,?,?,?) ");
// 设置SQL语句中的第一个参数
pstmt.setString(1, iNumber);
// 设置SQL语句中的第二个参数
pstmt.setString(2, time);
// 设置SQL语句中的第三个参数
pstmt.setString(3, prodId);
// 设置SQL语句中的第四个参数
pstmt.setString(4, execute);
// 设置SQL语句中的第五个参数
pstmt.setInt(5, sum);
// 执行插入操作若受影响的行数为1则将flag置为true表示插入成功
if (pstmt.executeUpdate() == 1) {
flag = true;
}
} catch (SQLException e) {
// 若出现SQL异常打印异常栈信息
e.printStackTrace();
} finally {
// 关闭相关资源
JDBCUtil.close(resultSet, pstmt, conn);
}
>>>>>>> developer
return flag;
}
}

@ -7,6 +7,7 @@ import com.lingnan.supermarket.dto.Production;
public class CreateOrder {
<<<<<<< HEAD
// 方法:生成订单小票文本
public String CreateOrder(Vector<Production> v, String oNumber, String time, Float allPrice, String username) {
// 初始化分隔符
@ -19,10 +20,23 @@ public class CreateOrder {
InRequireText += "#名称 #单价 #数量 #金额\r\n";
// 遍历商品列表,生成订单项信息
=======
// 用于生成一个完整的订单文本信息,接收商品信息向量、订单编号、时间、总价以及负责人用户名等参数
public String CreateOrder(Vector<Production> v, String oNumber, String time, Float allPrice, String username) {
// 分割线
String xx = "----------------------------------------------------------------------------\r\n";
// 初始化订单文本内容
String InRequireText = time + "\r\n" + xx;
// 添加订单小票中商品信息展示的表头部分
InRequireText += "#名称 #单价 #数量 #金额\r\n";
//循环遍历传入的商品信息向量,将每个商品的具体信息按照设定的格式拼接添加到订单文本中
>>>>>>> developer
for (Production p : v) {
InRequireText += p.getName() + " " + p.getInPrice() + " " + p.getSum() + " " + p.getPrice() + "\r\n";
}
<<<<<<< HEAD
// 订单总金额
InRequireText += "\r\n" + xx;
InRequireText += "#总进货金额:" + allPrice + "元";
@ -92,4 +106,23 @@ public class CreateOrder {
return orderList.toString();
}
=======
// 添加一条分割线
InRequireText += "\r\n" + xx;
// 显示本次进货的总价金额
InRequireText += "#总进货金额:" + allPrice + "元";
// 显示订单的负责人
InRequireText += "\r\n#负责人:" + username;
// 添加订单编号信息到订单文本中
InRequireText += "\r\n#订单编号:" + oNumber;
// 添加超市地址信息到订单文本中,注明订单对应的收货地址等相关信息
InRequireText += "\r\n#地址:新民超市";
// 添加联系电话信息到订单文本中
InRequireText += "\r\n#联系电话:xxx";
// 返回最终生成的完整订单文本内容
return InRequireText;
}
>>>>>>> developer
}

@ -9,14 +9,22 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
<<<<<<< HEAD
public class JDBCUtil {
// Properties对象用于加载配置文件
=======
// JDBCUtil工具类用于管理数据库连接相关的操作如加载数据库配置、获取数据库连接以及释放相关资源等
public class JDBCUtil {
// 用于存储数据库连接相关的配置信息,通过读取配置文件将配置项加载到该对象中
>>>>>>> developer
private static Properties properties;
private static String url;
private static String user;
private static String password;
<<<<<<< HEAD
// 静态代码块用于加载配置文件和数据库驱动
static {
// 获取配置文件输入流
@ -34,6 +42,25 @@ public class JDBCUtil {
} finally {
// 关闭输入流
if (inputStream != null) {
=======
// 静态代码块,在类加载时执行,主要用于加载数据库配置文件并注册数据库驱动,同时获取配置文件中的连接相关信息
static {
// 通过类加载器获取配置文件的输入流,该文件应位于类路径下,以便能够正确读取
InputStream inputStream = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
// 创建一个Properties对象用于存储键值对形式的配置信息
properties = new Properties();
try {
// 将从输入流中读取配置文件的内容加载到Properties对象中
properties.load(inputStream);
} catch (IOException e) {
// 若加载配置文件出现IO异常打印异常栈信息
e.printStackTrace();
} finally {
// 在完成配置文件读取后释放资源
if (inputStream!= null) {
>>>>>>> developer
try {
inputStream.close();
} catch (IOException e) {
@ -43,6 +70,7 @@ public class JDBCUtil {
}
}
<<<<<<< HEAD
// 注册JDBC驱动
try {
// 加载JDBC驱动类
@ -55,14 +83,36 @@ public class JDBCUtil {
} catch (ClassNotFoundException e) {
// 如果驱动类加载失败,打印错误信息
=======
// 注册数据库驱动
try {
// 从配置文件中获取驱动类名属性,并加载该驱动类,类加载过程会执行驱动类中相关的静态代码,完成驱动在系统中的注册
Class.forName(properties.getProperty("driver"));
// 从配置文件中获取数据库连接的URL地址属性
url = properties.getProperty("url");
// 从配置文件中获取数据库连接的用户名属性
user = properties.getProperty("user");
// 从配置文件中获取数据库连接的密码属性
password = properties.getProperty("password");
} catch (ClassNotFoundException e) {
// 若找不到指定的驱动类,打印异常栈信息
>>>>>>> developer
e.printStackTrace();
}
}
/**
<<<<<<< HEAD
*
*
* @return
=======
* DriverManagerURL
* SQLnull
*
* @return null
>>>>>>> developer
*/
public static Connection getConn() {
try {
@ -76,6 +126,7 @@ public class JDBCUtil {
}
/**
<<<<<<< HEAD
*
*
* @param resultSet
@ -99,11 +150,35 @@ public class JDBCUtil {
connection.close();
}
=======
* ResultSetStatementConnection
* nullnullcloseSQL
*
* @param resultSet null
* @param statement PreparedStatementStatementSQLnull
* @param connection null
*/
public static void close(ResultSet resultSet, Statement statement, Connection connection) {
try {
// 如果结果集对象不为null则关闭结果集释放相关资源
if (resultSet!= null) {
resultSet.close();
}
// 如果语句执行对象不为null则关闭语句执行对象释放相关资源
if (statement!= null) {
statement.close();
}
// 如果数据库连接对象不为null则关闭数据库连接释放相关资源
if (connection!= null) {
connection.close();
}
>>>>>>> developer
} catch (SQLException e) {
// 如果关闭资源时发生错误,打印错误信息
e.printStackTrace();
}
}
<<<<<<< HEAD
/**
*
@ -163,4 +238,6 @@ public class JDBCUtil {
private static void logCloseConnection() {
System.out.println("数据库连接已关闭。");
}
=======
>>>>>>> developer
}

@ -7,6 +7,7 @@ import java.util.Random;
public class TimeAndOrder {
/**
<<<<<<< HEAD
*
* @param username
* @return
@ -40,10 +41,54 @@ public class TimeAndOrder {
System.out.println(s[1]);
// 返回包含订单号和时间的字符串数组
=======
*
*
* "yyyy-MM-dd HH:mm:ss"
*
* @param username
* @return
*/
public static String[] TimeAndOrder(String username) {
// 创建一个长度为2的字符串数组用于存储订单号和时间戳
String[] s = new String[2];
// 创建两个SimpleDateFormat对象分别用于格式化日期和时间
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 格式化时间为 "yyyy-MM-dd HH:mm:ss"
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMddHHmmss"); // 格式化时间为 "yyyyMMddHHmmss"
// 获取当前时间的Calendar实例
Calendar cal = Calendar.getInstance();
// 获取当前时间并格式化为字符串
String date1 = sdf1.format(cal.getTime()); // 格式化时间为 "yyyy-MM-dd HH:mm:ss"
String date2 = sdf2.format(cal.getTime()); // 格式化时间为 "yyyyMMddHHmmss"
// 创建一个随机数生成器
Random random = new Random();
// 生成两个随机数
int result1 = random.nextInt(10); // 生成0到9之间的随机数
int result2 = random.nextInt(10); // 生成0到9之间的随机数
// 生成订单号:用户名 + 随机数 + 时间戳 + 随机数
s[0] = username + result1 + date2 + result2;
// 将当前时间戳存入数组的第二个元素
s[1] = date1;
// 打印订单号和时间戳(用于调试)
System.out.println(s[0]); // 打印订单号
System.out.println(s[1]); // 打印时间戳
// 返回包含订单号和时间戳的字符串数组
>>>>>>> developer
return s;
}
/**
<<<<<<< HEAD
*
* @return yyyy-MM-dd
*/
@ -76,6 +121,24 @@ public class TimeAndOrder {
private static void logMethodCall(String methodName) {
// 模拟打印方法调用日志
System.out.println("Method " + methodName + " was called.");
=======
* "yyyy-MM-dd"
*
* @return
*/
public static String yMdTime() {
// 创建一个SimpleDateFormat对象用于格式化日期
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); // 格式化日期为 "yyyy-MM-dd"
// 获取当前时间的Calendar实例
Calendar cal = Calendar.getInstance();
// 获取当前日期并格式化为字符串
String date = sdf1.format(cal.getTime()); // 格式化日期为 "yyyy-MM-dd"
// 返回当前日期的字符串表示
return date;
>>>>>>> developer
}
}

@ -43,15 +43,29 @@ import com.lingnan.supermarket.utils.SendQQMailUtil;
import com.lingnan.supermarket.utils.TimeAndOrder;
import com.lingnan.supermarket.view.ProdCatalogView.MyItemListener;
<<<<<<< HEAD
public class InView extends JPanel implements ActionListener{
//上面
private JPanel toolBarPanel;
=======
/**
*
*
*/
public class InView extends JPanel implements ActionListener {
// 顶部工具栏面板
private JPanel toolBarPanel;
// 搜索面板
>>>>>>> developer
private JPanel searchPanel;
private JLabel nameLabel,locationLabel;
private JTextField nameSearchTF;
<<<<<<< HEAD
private JButton searchBtn,StockBtn,exitBtn;
private JPanel opePanel;
@ -70,10 +84,35 @@ public class InView extends JPanel implements ActionListener{
private static Vector<Production> v = new Vector<Production>();
=======
private JButton searchBtn, StockBtn, exitBtn;
// 操作面板
private JPanel opePanel;
private JButton addBtn, updateBtn, deleteBtn, historyBtn, backBtn, detailBtn;
// 中间表格区域
private JScrollPane tableScrollPane;
private JTable inTable;
// 底部面板
private JPanel bottomPanel, bottomPanelLeft, bottomPanelRight;
private JLabel countInfoLabel, countInfoLabel2;
// 缓冲区对象
private Buffer Buffer;
private BufferImpl BufferImpl;
// 商品向量
private static Vector<Production> v = new Vector<Production>();
// 状态下拉框
>>>>>>> developer
private JComboBox<String> combo;
private String[] status ={"全部","已入库","待入库","已取消"};
private int catalog;
<<<<<<< HEAD
private JFrame jFrame;
private User user;
@ -85,10 +124,30 @@ public class InView extends JPanel implements ActionListener{
private inOrderServiceImpl inOrderImpl;
=======
// 主窗口和用户信息
private JFrame jFrame;
private User user;
// 表格模型
private InTableModel inTableModel;
// 缓冲区实现类
private BufferImpl bufferImpl = new BufferImpl();
// 标记从提醒那里来1是进货表0是提醒过来的表
private int mark;
// 进货订单服务实现类
private inOrderServiceImpl inOrderImpl;
// 总价和行数
>>>>>>> developer
private Float allPrice;
private int row;
private String uname;
<<<<<<< HEAD
public InView(JFrame jFrame,User user,Vector<Production> v,int mark) {
this.setLayout(new BorderLayout());
this.jFrame = jFrame;
@ -224,10 +283,126 @@ public class InView extends JPanel implements ActionListener{
}
=======
//构造函数
public InView(JFrame jFrame, User user, Vector<Production> v, int mark) {
this.setLayout(new BorderLayout()); // 设置布局为BorderLayout
this.jFrame = jFrame; // 设置主窗口
this.user = user; // 设置用户信息
// 获得进货缓冲区的保存的货物并删除缓冲区
this.v = bufferImpl.allInBuffer(); // 从缓冲区获取商品数据
bufferImpl.DelAllInBuffer(); // 清空缓冲区
this.mark = mark; // 设置标记
System.out.println("mark=" + mark); // 打印标记值
uname = user.getUsername(); // 获取用户名
initView(); // 初始化界面
}
// 初始化界面组件。
private void initView() {
toolBarPanel = new JPanel(new BorderLayout()); // 创建顶部工具栏面板
searchPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); // 创建搜索面板
nameLabel = new JLabel("订单号"); // 创建订单号标签
nameSearchTF = new JTextField(20); // 创建订单号搜索文本框
searchBtn = new JButton(new ImageIcon("static\\icon\\search.png")); // 创建搜索按钮
searchBtn.addActionListener(this); // 为搜索按钮添加事件监听器
locationLabel = new JLabel("当前位置>进货系统"); // 创建位置标签
locationLabel.setFont(new FontUtil().userFont); // 设置字体
locationLabel.setForeground(new Color(18, 150, 219)); // 设置颜色
combo = new JComboBox<String>(status); // 创建状态下拉框
combo.addItemListener(new MyItemListener()); // 为下拉框添加事件监听器
opePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 创建操作面板
addBtn = new JButton(new ImageIcon("static\\icon\\add.png")); // 创建添加按钮
updateBtn = new JButton(new ImageIcon("static\\icon\\change.png")); // 创建更新按钮
deleteBtn = new JButton(new ImageIcon("static\\icon\\delete.png")); // 创建删除按钮
historyBtn = new JButton(new ImageIcon("static\\icon\\history.png")); // 创建历史记录按钮
backBtn = new JButton(new ImageIcon("static\\icon\\back.png")); // 创建返回按钮
detailBtn = new JButton(new ImageIcon("static\\icon\\detail.png")); // 创建详情按钮
addBtn.addActionListener(this); // 为添加按钮添加事件监听器
updateBtn.addActionListener(this); // 为更新按钮添加事件监听器
deleteBtn.addActionListener(this); // 为删除按钮添加事件监听器
historyBtn.addActionListener(this); // 为历史记录按钮添加事件监听器
backBtn.addActionListener(this); // 为返回按钮添加事件监听器
detailBtn.addActionListener(this); // 为详情按钮添加事件监听器
backBtn.setVisible(false); // 隐藏返回按钮
detailBtn.setVisible(false); // 隐藏详情按钮
opePanel.add(addBtn); // 添加添加按钮到操作面板
opePanel.add(backBtn); // 添加返回按钮到操作面板
opePanel.add(detailBtn); // 添加详情按钮到操作面板
opePanel.add(updateBtn); // 添加更新按钮到操作面板
opePanel.add(deleteBtn); // 添加删除按钮到操作面板
opePanel.add(historyBtn); // 添加历史记录按钮到操作面板
searchPanel.add(locationLabel); // 添加位置标签到搜索面板
searchPanel.add(nameLabel); // 添加订单号标签到搜索面板
searchPanel.add(nameSearchTF); // 添加订单号搜索文本框到搜索面板
searchPanel.add(searchBtn); // 添加搜索按钮到搜索面板
searchPanel.add(combo); // 添加状态下拉框到搜索面板
toolBarPanel.add(searchPanel, "West"); // 将搜索面板添加到工具栏面板的西侧
toolBarPanel.add(opePanel, "East"); // 将操作面板添加到工具栏面板的东侧
// 中间表
inTableModel = new InTableModel(v); // 创建表格模型
inTable = new JTable(inTableModel); // 创建表格
inTable.setFont(FontUtil.tableFont); // 设置表格字体
inTable.setRowHeight(50); // 设置表格行高
tableScrollPane = new JScrollPane(inTable); // 创建表格滚动面板
allPrice = inTableModel.getAllPrice(); // 获取总价
row = inTableModel.getRowCount(); // 获取行数
// 下面
bottomPanelLeft = new JPanel(new FlowLayout(FlowLayout.RIGHT)); // 创建底部左侧面板
countInfoLabel = new JLabel("商品种类:" + row + ",总价:" + allPrice); // 创建商品种类和总价标签
bottomPanelLeft.add(countInfoLabel); // 将标签添加到底部左侧面板
bottomPanelRight = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 创建底部右侧面板
StockBtn = new JButton(new ImageIcon("static\\icon\\stock.png")); // 创建结账按钮
exitBtn = new JButton(new ImageIcon("static\\icon\\exit.png")); // 创建退出按钮
StockBtn.addActionListener(this); // 为结账按钮添加事件监听器
exitBtn.addActionListener(this); // 为退出按钮添加事件监听器
bottomPanelRight.add(StockBtn); // 将结账按钮添加到底部右侧面板
bottomPanelRight.add(exitBtn); // 将退出按钮添加到底部右侧面板
bottomPanel = new JPanel(new BorderLayout()); // 创建底部面板
bottomPanel.add(bottomPanelRight, "East"); // 将底部右侧面板添加到底部面板的东侧
bottomPanel.add(bottomPanelLeft, "West"); // 将底部左侧面板添加到底部面板的西侧
this.add(toolBarPanel, "North"); // 将工具栏面板添加到顶部
this.add(tableScrollPane, "Center"); // 将表格滚动面板添加到中间
this.add(bottomPanel, "South"); // 将底部面板添加到底部
if (mark == 1) { // 判断是否从提醒那里过来的
refreshBuffer(v); // 刷新缓冲区
} else if (mark == 0) {
InOrderRecord(); // 调出进货订单表
}
setVisible(true); // 设置可见
}
//获取商品数量
public static Vector<Production> getVector() {
return v;
}
//处理状态下拉框的选项变化
>>>>>>> developer
public class MyItemListener implements ItemListener {
@Override
public void itemStateChanged(ItemEvent e) {
<<<<<<< HEAD
JComboBox cb = (JComboBox) e.getSource();
String catalog1 = (String) cb.getSelectedItem();
if(catalog1.equals("全部"))
@ -240,15 +415,31 @@ public class InView extends JPanel implements ActionListener{
catalog=3;
resultOfFindStatus(catalog);
=======
JComboBox cb = (JComboBox) e.getSource(); // 获取事件源
String catalog1 = (String) cb.getSelectedItem(); // 获取选中的状态
if (catalog1.equals("全部"))
catalog = 0;
else if (catalog1.equals("已入库"))
catalog = 1;
else if (catalog1.equals("待入库"))
catalog = 2;
else if (catalog1.equals("已取消"))
catalog = 3;
>>>>>>> developer
}
<<<<<<< HEAD
}
//按钮组件隐藏
=======
//按钮组件隐藏。
>>>>>>> developer
public void OrderView() {
backBtn.setVisible(true);
detailBtn.setVisible(true);
@ -258,6 +449,7 @@ public class InView extends JPanel implements ActionListener{
historyBtn.setVisible(false);
}
<<<<<<< HEAD
public void resultOfNumber(String iNumber) {
this.mark=0;
@ -270,6 +462,21 @@ public class InView extends JPanel implements ActionListener{
OrderView();
}
=======
//根据订单号查询结果
public void resultOfNumber(String iNumber) {
this.mark = 0; // 设置标记为0
InOrderTM inOrderTM = new InOrderTM(); // 创建进货订单表格模型
inOrderTM.resultOfNumber(iNumber); // 根据订单号查询结果
inTable.setModel(inOrderTM); // 设置表格模型
bottomPanelLeft.removeAll(); // 清空底部左侧面板
countInfoLabel = new JLabel("共" + inOrderTM.getRowCount() + "条记录"); // 创建记录数标签
bottomPanelLeft.add(countInfoLabel); // 将标签添加到底部左侧面板
OrderView(); // 调用OrderView方法
}
//根据状态查询结果
>>>>>>> developer
public void resultOfFindStatus(int catalog) {
this.mark=0;
InOrderTM inOrderTM = new InOrderTM();
@ -281,6 +488,7 @@ public class InView extends JPanel implements ActionListener{
OrderView();
}
<<<<<<< HEAD
/*刷新*/
public void refreshBuffer(Vector<Production> v) {
@ -336,10 +544,45 @@ public class InView extends JPanel implements ActionListener{
=======
//刷新缓冲区
public void refreshBuffer(Vector<Production> v) {
this.mark = 1; // 设置标记为1
InTableModel inTableModel = new InTableModel(v); // 创建表格模型
inTable.setModel(inTableModel); // 设置表格模型
bottomPanelLeft.removeAll(); // 清空底部左侧面板
countInfoLabel = new JLabel("商品种类:" + inTableModel.getRowCount() + ",总价:" + inTableModel.getAllPrice()); // 创建商品种类和总价标签
bottomPanelLeft.add(countInfoLabel); // 将标签添加到底部左侧面板
backBtn.setVisible(false); // 隐藏返回按钮
detailBtn.setVisible(false); // 隐藏详情按钮
historyBtn.setVisible(true); // 显示历史记录按钮
updateBtn.setVisible(true); // 显示更新按钮
addBtn.setVisible(true); // 显示添加按钮
deleteBtn.setVisible(true); // 显示删除按钮
allPrice = inTableModel.getAllPrice(); // 获取总价
row = inTableModel.getRowCount(); // 获取行数
}
//调出进货订单表。
public void InOrderRecord() {
this.mark = 0; // 设置标记为0
InOrderTM inOrderTM = new InOrderTM(); // 创建进货订单表格模型
inOrderTM.allInOrderRecord(); // 查询所有进货订单记录
inTable.setModel(inOrderTM); // 设置表格模型
bottomPanelLeft.removeAll(); // 清空底部左侧面板
countInfoLabel = new JLabel("共" + inOrderTM.getRowCount() + "条记录"); // 创建记录数标签
bottomPanelLeft.add(countInfoLabel); // 将标签添加到底部左侧面板
OrderView(); // 调用OrderView方法
}
>>>>>>> developer
/*按钮监听时间*/
@Override
public void actionPerformed(ActionEvent e) {
<<<<<<< HEAD
BufferImpl = new BufferImpl();/*获得购物车*/
Object source = e.getSource();
@ -511,3 +754,147 @@ public class InView extends JPanel implements ActionListener{
}
}
}
=======
BufferImpl = new BufferImpl(); // 获取购物车
Object source = e.getSource(); // 获取事件源
if (searchBtn == source) { // 如果是搜索按钮
String number = nameSearchTF.getText(); // 获取搜索的订单号
System.out.println("搜索后的订单:" + number); // 打印订单号
resultOfNumber(number); // 根据订单号查询结果
} else if (addBtn == source) { // 如果是添加按钮
InDialog outDialog = new InDialog(jFrame, v, user); // 创建添加对话框
outDialog.setVisible(true); // 显示对话框
v = outDialog.getVector(); // 获取更新后的商品向量
refreshBuffer(v); // 刷新缓冲区
} else if (updateBtn == source) { // 如果是更新按钮
System.out.println("mark=" + mark); // 打印标记值
int rowIndex = inTable.getSelectedRow(); // 获取选中的行
if (rowIndex == -1) { // 如果没有选中行
JOptionPane.showMessageDialog(this, "请选中一条进行更改数量"); // 提示用户选中行
return;
}
// 进货表修改
if (mark == 1) {
String id = (String) inTable.getValueAt(rowIndex, 0); // 获取选中行的ID
ChangeSumDialog changesumDialog = new ChangeSumDialog(jFrame, id, "In", v); // 创建更改数量对话框
changesumDialog.setVisible(true); // 显示对话框
v = changesumDialog.getVector(); // 获取更新后的商品向量
System.out.println("更改状态后v.size=" + v.size()); // 打印商品向量大小
refreshBuffer(v); // 刷新缓冲区
}
// inOrder修改,修改状态
else if (mark == 0) {
String iNumber = (String) inTable.getValueAt(rowIndex, 0); // 获取选中行的订单号
String status = (String) inTable.getValueAt(rowIndex, 4); // 获取选中行的状态
if (status.equals("已入库")) { // 如果状态是已入库
JOptionPane.showMessageDialog(this, "订单上的货物已入库无法修改状态", "提示", JOptionPane.INFORMATION_MESSAGE); // 提示用户无法修改状态
return;
}
ChangeStatusDialog changeStatusDialog = new ChangeStatusDialog(jFrame, iNumber, status); // 创建更改状态对话框
changeStatusDialog.setVisible(true); // 显示对话框
MainView.refreshRemind(); // 刷新提醒
HomeView.refreshHome(); // 刷新主页
InOrderRecord(); // 调出进货订单表
}
} else if (deleteBtn == source) { // 如果是删除按钮
int rowIndex = inTable.getSelectedRow(); // 获取选中的行
if (rowIndex == -1) { // 如果没有选中行
JOptionPane.showMessageDialog(this, "请选中一条"); // 提示用户选中行
return;
}
/* 删除进货表的 */
if (mark == 1) {
System.out.println("删除进货表"); // 打印日志
String id = (String) inTable.getValueAt(rowIndex, 0); // 获取选中行的ID
int select = JOptionPane.showConfirmDialog(this, "是否删除id为" + id + "的记录", "提示", JOptionPane.YES_NO_OPTION); // 提示用户确认删除
if (select == JOptionPane.YES_OPTION) { // 如果用户选择是
for (int i = 0; i < v.size(); i++) { // 遍历商品向量
System.out.println("开始删除"); // 打印日志
if (v.elementAt(i).getId().equals(id)) { // 如果找到对应的商品
v.remove(i); // 删除商品
JOptionPane.showMessageDialog(this, "删除成功", "提示", JOptionPane.INFORMATION_MESSAGE); // 提示用户删除成功
break;
}
}
refreshBuffer(v); // 刷新缓冲区
}
}
// 删除进货订单
else if (mark == 0) {
System.out.println("删除订单表"); // 打印日志
String iNumber = (String) inTable.getValueAt(rowIndex, 0); // 获取选中行的订单号
int select = JOptionPane.showConfirmDialog(this, "是否删除订单为" + iNumber + "的记录", "提示", JOptionPane.YES_NO_OPTION); // 提示用户确认删除
if (select == JOptionPane.YES_OPTION) { // 如果用户选择是
System.out.println("iNumber=" + iNumber); // 打印订单号
inOrderImpl = new inOrderServiceImpl(); // 创建进货订单服务实现类
inOrderImpl.deleteInOrder(iNumber); // 删除订单
JOptionPane.showMessageDialog(this, "删除成功", "提示", JOptionPane.INFORMATION_MESSAGE); // 提示用户删除成功
InOrderRecord(); // 调出进货订单表
}
}
} else if (historyBtn == source) { // 如果是历史记录按钮
InOrderRecord(); // 调出进货订单表
} else if (backBtn == source) { // 如果是返回按钮
if (mark == 0)
refreshBuffer(v); // 刷新缓冲区
else if (mark == 2)
InOrderRecord(); // 调出进货订单表
} else if (detailBtn == source) { // 如果是详情按钮
int rowIndex = inTable.getSelectedRow(); // 获取选中的行
if (rowIndex == -1) { // 如果没有选中行
JOptionPane.showMessageDialog(this, "请选中一条查看订单详细信息"); // 提示用户选中行
return;
}
String iNumber = (String) inTable.getValueAt(rowIndex, 0); // 获取选中行的订单号
System.out.println("详情订单号为=" + iNumber); // 打印订单号
InRecord(iNumber); // 调出进货记录表
} else if (StockBtn == source) { // 如果是结账按钮
refreshBuffer(v); // 刷新缓冲区
if (v.size() == 0) { // 如果购物车为空
JOptionPane.showMessageDialog(null, "您的进货页面为空", "提示", JOptionPane.YES_OPTION); // 提示用户购物车为空
} else { // 如果购物车不为空
int res = JOptionPane.showConfirmDialog(null, "进价总金额:" + allPrice + "元\r\n负责人:" + uname + "\r\n发送邮件至 re@qq.com", "提交订单", JOptionPane.YES_NO_OPTION); // 提示用户确认提交订单
if (res == JOptionPane.YES_OPTION) { // 如果用户选择是
/* 获得时间和订单号,s[0]为订单号,s[1]为时间 */
String[] s = TimeAndOrder.TimeAndOrder(uname); // 获取时间和订单号
/* 往订单表插入一条记录 */
inOrderServiceImpl inOrderImpl = new inOrderServiceImpl(); // 创建进货订单服务实现类
inOrderImpl.InsertInOrder(s[0], allPrice, s[1], uname, 2); // 插入订单记录
/* 往inRecord表添加数据 */
inRecordServiceImpl inRecordImpl = new inRecordServiceImpl(); // 创建进货记录服务实现类
for (Production p : v) { // 遍历商品向量
inRecordImpl.insertInRecord(s[0], p); // 插入进货记录
}
/* 生成订单文本 */
CreateOrder createOrder = new CreateOrder(); // 创建订单生成工具类
String OrderText = createOrder.CreateOrder(v, s[0], s[1], allPrice, uname); // 生成订单文本
try { // 发送邮件
SendQQMailUtil QQEmail = new SendQQMailUtil("cwfeng5@qq.com", "wlcinslohrgpdiac", "1912638153@qq.com", "@新民超市进货需求申请", OrderText); // 创建邮件发送工具类
} catch (MessagingException e1) { // 捕获异常
e1.printStackTrace(); // 打印异常信息
}
v = new Vector<Production>(); // 清空商品向量
refreshBuffer(v); // 刷新缓冲区
MainView.refreshRemind(); // 刷新提醒
JOptionPane.showConfirmDialog(null, "发送邮件成功\r\n订单号:" + s[0] + "\r\n负责人:" + uname, "提示", JOptionPane.YES_OPTION); // 提示用户发送邮件成功
}
}
} else if (exitBtn == source) { // 如果是退出按钮
int res = JOptionPane.showConfirmDialog(null, "确定退出并清空购物车吗", "结账", JOptionPane.YES_NO_OPTION); // 提示用户确认退出
if (res == JOptionPane.YES_OPTION) { // 如果用户选择是
v = new Vector<Production>(); // 清空商品向量
refreshBuffer(v); // 刷新缓冲区
JOptionPane.showConfirmDialog(null, "退出成功", "提示", JOptionPane.PLAIN_MESSAGE); // 提示用户退出成功
}
}
}
}
>>>>>>> developer

Loading…
Cancel
Save