|
|
|
@ -1,5 +1,7 @@
|
|
|
|
|
// 定义包名,表示该类属于com.lingnan.supermarket.dialog包
|
|
|
|
|
package com.lingnan.supermarket.dialog;
|
|
|
|
|
|
|
|
|
|
// 导入所需的java.awt和javax.swing包中的类
|
|
|
|
|
import java.awt.Container;
|
|
|
|
|
import java.awt.FlowLayout;
|
|
|
|
|
import java.awt.event.ActionEvent;
|
|
|
|
@ -15,6 +17,7 @@ import javax.swing.JPanel;
|
|
|
|
|
import javax.swing.JTable;
|
|
|
|
|
import javax.swing.JTextField;
|
|
|
|
|
|
|
|
|
|
// 导入项目中的其他包和类
|
|
|
|
|
import com.lingnan.supermarket.*;
|
|
|
|
|
import com.lingnan.supermarket.dao.UserService;
|
|
|
|
|
import com.lingnan.supermarket.dao.impl.BufferImpl;
|
|
|
|
@ -26,52 +29,74 @@ import com.lingnan.supermarket.dto.User;
|
|
|
|
|
import com.lingnan.supermarket.table.OutTableModel;
|
|
|
|
|
import com.lingnan.supermarket.view.OutView;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 定义ChangeSumDialog类,继承JDialog并实现ActionListener接口
|
|
|
|
|
public class ChangeSumDialog extends JDialog implements ActionListener{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 声明各种面板
|
|
|
|
|
private JPanel prodIdPanel,sumPanel,phonePanel,opePanel,titlePanel;
|
|
|
|
|
|
|
|
|
|
// 声明标签和文本框
|
|
|
|
|
private JLabel prodIdLabel,sumLabel,titleLabel;
|
|
|
|
|
private JTextField prodIdTF,sumTF;
|
|
|
|
|
|
|
|
|
|
// 声明按钮
|
|
|
|
|
private JButton UpdateBtn,cancelBtn;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 实例化OutTableModel对象
|
|
|
|
|
private OutTableModel outTableModel = new OutTableModel();
|
|
|
|
|
|
|
|
|
|
// 声明Buffer对象
|
|
|
|
|
private Buffer buffer;
|
|
|
|
|
|
|
|
|
|
// 声明字符串变量,用于存储商品ID和标记
|
|
|
|
|
private String prodId,mark;/*mark用来标记是进货还是出货系统*/
|
|
|
|
|
|
|
|
|
|
// 声明一个Vector集合,用于存储Production对象
|
|
|
|
|
private Vector<Production> v;
|
|
|
|
|
|
|
|
|
|
// 带参数的构造方法,初始化对话框并设置属性
|
|
|
|
|
public ChangeSumDialog(JFrame parent,String prodId,String mark,Vector<Production> v) {
|
|
|
|
|
super(parent,"更改商品数量");
|
|
|
|
|
|
|
|
|
|
// 设置对话框大小
|
|
|
|
|
setSize(350,200);
|
|
|
|
|
// 设置对话框相对于父窗口居中
|
|
|
|
|
setLocationRelativeTo(null);
|
|
|
|
|
// 设置对话框为模态
|
|
|
|
|
setModal(true);
|
|
|
|
|
// 设置对话框不可调整大小
|
|
|
|
|
setResizable(false);
|
|
|
|
|
// 设置对话框布局为FlowLayout
|
|
|
|
|
this.setLayout(new FlowLayout());
|
|
|
|
|
|
|
|
|
|
// 初始化成员变量
|
|
|
|
|
this.prodId=prodId;
|
|
|
|
|
this.mark=mark;
|
|
|
|
|
this.v = v;
|
|
|
|
|
// 初始化视图
|
|
|
|
|
initView();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 另一个带参数的构造方法,初始化对话框并设置属性
|
|
|
|
|
public ChangeSumDialog(JFrame parent,String prodId,String mark) {
|
|
|
|
|
super(parent,"更改商品数量");
|
|
|
|
|
|
|
|
|
|
// 设置对话框大小
|
|
|
|
|
setSize(350,200);
|
|
|
|
|
// 设置对话框相对于父窗口居中
|
|
|
|
|
setLocationRelativeTo(null);
|
|
|
|
|
// 设置对话框为模态
|
|
|
|
|
setModal(true);
|
|
|
|
|
// 设置对话框不可调整大小
|
|
|
|
|
setResizable(false);
|
|
|
|
|
// 设置对话框布局为FlowLayout
|
|
|
|
|
this.setLayout(new FlowLayout());
|
|
|
|
|
|
|
|
|
|
// 初始化成员变量
|
|
|
|
|
this.prodId=prodId;
|
|
|
|
|
this.mark=mark;
|
|
|
|
|
// 初始化视图
|
|
|
|
|
initView();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -79,56 +104,83 @@ public class ChangeSumDialog extends JDialog implements ActionListener{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 私有方法,用于初始化视图
|
|
|
|
|
private void initView() {
|
|
|
|
|
|
|
|
|
|
// 创建标题面板
|
|
|
|
|
titlePanel = new JPanel();
|
|
|
|
|
// 创建标题标签,显示要修改的商品ID
|
|
|
|
|
titleLabel = new JLabel("修改商品id为"+prodId+"的数量");
|
|
|
|
|
// 将标题标签添加到标题面板
|
|
|
|
|
titlePanel.add(titleLabel);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 创建数量输入面板
|
|
|
|
|
sumPanel = new JPanel();
|
|
|
|
|
// 创建数量标签
|
|
|
|
|
sumLabel = new JLabel("数量");
|
|
|
|
|
// 创建文本框,用于输入数量,宽度为15个字符
|
|
|
|
|
sumTF = new JTextField(15);
|
|
|
|
|
// 将数量标签和文本框添加到数量输入面板
|
|
|
|
|
sumPanel.add(sumLabel);
|
|
|
|
|
sumPanel.add(sumTF);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 创建操作按钮面板
|
|
|
|
|
opePanel = new JPanel();
|
|
|
|
|
// 创建更新按钮
|
|
|
|
|
UpdateBtn = new JButton("更改");
|
|
|
|
|
// 创建取消按钮
|
|
|
|
|
cancelBtn = new JButton("取消");
|
|
|
|
|
// 为更新按钮添加事件监听器
|
|
|
|
|
UpdateBtn.addActionListener(this);
|
|
|
|
|
// 为取消按钮添加事件监听器
|
|
|
|
|
cancelBtn.addActionListener(this);
|
|
|
|
|
// 将更新和取消按钮添加到操作按钮面板
|
|
|
|
|
opePanel.add(UpdateBtn);
|
|
|
|
|
opePanel.add(cancelBtn);
|
|
|
|
|
|
|
|
|
|
// 获取内容面板
|
|
|
|
|
Container container = getContentPane();
|
|
|
|
|
// 将标题面板、数量输入面板和操作按钮面板添加到内容面板
|
|
|
|
|
container.add(titlePanel);
|
|
|
|
|
container.add(sumPanel);
|
|
|
|
|
container.add(opePanel);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 公共方法,用于获取Vector<Production>
|
|
|
|
|
public Vector<Production> getVector(){
|
|
|
|
|
return v;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 实现ActionListener接口的actionPerformed方法
|
|
|
|
|
@Override
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
|
// 获取事件源
|
|
|
|
|
Object source = e.getSource();
|
|
|
|
|
// 判断事件源是否为更新按钮
|
|
|
|
|
if(source==UpdateBtn){
|
|
|
|
|
|
|
|
|
|
//TODO 参数校验
|
|
|
|
|
/*/返回这个记录的信息*/
|
|
|
|
|
|
|
|
|
|
// 从文本框中获取数量并转换为整数
|
|
|
|
|
int sum = Integer.parseInt(sumTF.getText());/*获得数量*/
|
|
|
|
|
// 打印要修改的数量
|
|
|
|
|
System.out.println("所要修改的数量sum="+sum);
|
|
|
|
|
|
|
|
|
|
// 判断文本框是否为空
|
|
|
|
|
if(sumTF.getText().equals("")) {
|
|
|
|
|
// 弹出错误提示对话框
|
|
|
|
|
JOptionPane.showMessageDialog(this,"请输入完整","提示",JOptionPane.ERROR_MESSAGE);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 判断输入的数量是否小于0
|
|
|
|
|
if(sum<0) {/*判断输入大于0*/
|
|
|
|
|
// 弹出错误提示对话框
|
|
|
|
|
JOptionPane.showMessageDialog(this,"请输入大于0的数量","提示",JOptionPane.ERROR_MESSAGE);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -136,50 +188,69 @@ public class ChangeSumDialog extends JDialog implements ActionListener{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 实例化BufferImpl对象,用于操作缓冲区数据
|
|
|
|
|
BufferImpl bufferImpl = new BufferImpl();
|
|
|
|
|
|
|
|
|
|
// 实例化productionImpl对象,用于操作商品数据
|
|
|
|
|
productionImpl productionImpl = new productionImpl();
|
|
|
|
|
// 创建一个新的Production对象
|
|
|
|
|
Production production = new Production();
|
|
|
|
|
// 根据商品ID查找商品信息并赋值给production对象
|
|
|
|
|
production = productionImpl.findByIdProduction(prodId);
|
|
|
|
|
|
|
|
|
|
// 创建一个新的Buffer对象
|
|
|
|
|
Buffer buffer = new Buffer();
|
|
|
|
|
// 标志变量,用于表示操作是否成功
|
|
|
|
|
boolean flag = false;
|
|
|
|
|
|
|
|
|
|
if(mark=="In") {/*进货界面*/
|
|
|
|
|
// 如果标记为"进货"
|
|
|
|
|
if(mark=="In") {
|
|
|
|
|
// 遍历购物缓冲区中的商品
|
|
|
|
|
for(Production p:v) {
|
|
|
|
|
// 如果找到对应ID的商品,则更新其数量
|
|
|
|
|
if(p.getId().equals(prodId))
|
|
|
|
|
p.setSum(sum);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
else if(mark=="Out") {/*出货界面*/
|
|
|
|
|
// 如果标记为"出货"
|
|
|
|
|
else if(mark=="Out") {
|
|
|
|
|
// 根据商品ID查找缓冲区中的进货记录
|
|
|
|
|
buffer = bufferImpl.findInBufferbyId(prodId);
|
|
|
|
|
if(buffer!=null) {/*记录有这条数据*/
|
|
|
|
|
if(sum>production.getSum())/*修改数量超过库存*/
|
|
|
|
|
// 如果找到了对应的记录
|
|
|
|
|
if(buffer!=null) {
|
|
|
|
|
// 如果修改的数量超过库存
|
|
|
|
|
if(sum>production.getSum())
|
|
|
|
|
// 弹出错误提示对话框
|
|
|
|
|
JOptionPane.showMessageDialog(this,"库存数量为:"+production.getSum()+",修改数量请勿超过库存","提示",JOptionPane.ERROR_MESSAGE);
|
|
|
|
|
else
|
|
|
|
|
// 更新缓冲区中的进货记录,并设置标志变量
|
|
|
|
|
flag = bufferImpl.UpdateInBufferById(prodId, sum);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(flag = true) {/*如果修改成功*/
|
|
|
|
|
|
|
|
|
|
// 如果操作成功
|
|
|
|
|
if(flag = true) {
|
|
|
|
|
// 弹出修改成功的提示对话框
|
|
|
|
|
JOptionPane.showMessageDialog(this,"修改成功","提示",JOptionPane.INFORMATION_MESSAGE);
|
|
|
|
|
// 关闭对话框
|
|
|
|
|
dispose();
|
|
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
// 弹出修改失败的提示对话框
|
|
|
|
|
JOptionPane.showMessageDialog(this,"修改失败","提示",JOptionPane.ERROR_MESSAGE);
|
|
|
|
|
// 关闭对话框
|
|
|
|
|
dispose();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
else if(source == cancelBtn) {
|
|
|
|
|
|
|
|
|
|
// 如果事件源是取消按钮
|
|
|
|
|
}else if(source == cancelBtn) {
|
|
|
|
|
// 关闭对话框
|
|
|
|
|
this.dispose();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|