解决的方案有很多,我给你一个改动相对来说比较小的。
修改com.lzw.iframe.XiaoShouDan 这个类:
[strong]Map oldKcsl=new HashMap();/创建一个新的全局变量,用来保存商品编号和商品库存数量。[/strong]/
/*在给表格填充商品信息的方法里加一行代码,记录添加的商品编号和库存数量*/
private synchronized void updateTable() {
TbSpinfo spinfo = (TbSpinfo) sp.getSelectedItem();
Item item = new Item();
item.setId(spinfo.getId());
TbKucun kucun = Dao.getKucun(item);
int row = table.getSelectedRow();
if (row >= 0 && spinfo != null) {
table.setValueAt(spinfo.getId(), row, 1);
table.setValueAt(spinfo.getGysname(), row, 2);
table.setValueAt(spinfo.getCd(), row, 3);
table.setValueAt(spinfo.getDw(), row, 4);
table.setValueAt(spinfo.getGg(), row, 5);
table.setValueAt(kucun.getDj() + "", row, 6);
table.setValueAt(kucun.getKcsl() + "", row, 7);
table.setValueAt(spinfo.getBz(), row, 8);
table.setValueAt(spinfo.getPh(), row, 9);
table.setValueAt(spinfo.getPzwh(), row, 10);
table.editCellAt(row, 7);
[strong]oldKcsl.put(spinfo.getId(), kucun.getKcsl());//记录商品编号和库存数量[/strong]
}
}
/*修改销售按钮的监听方法,如果出库数量大于库存数量,则弹出对话框*/
JButton sellButton = new JButton("销售");
sellButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
/*省略若干代码*/
TbSellMain sellMain = new TbSellMain(id, pzsStr, jeStr,
ysjlStr, kehuName, rkDate, czyStr, jsrStr, jsfsStr);
Set<TbSellDetail> set = sellMain.getTbSellDetails();
int rows = table.getRowCount();
for (int i = 0; i < rows; i++) {
TbSpinfo spinfo = (TbSpinfo) table.getValueAt(i, 0);
String djStr = (String) table.getValueAt(i, 6);
String slStr = (String) table.getValueAt(i, 7);
[strong]String idTmp=(String) table.getValueAt(i, 1);//获取商品编号
int slTmp=(int)oldKcsl.get(idTmp);//获取库存数量
if(slTmp<Integer.parseInt(slStr)){//如果库存小于出库
JOptionPane.showMessageDialog(XiaoShouDan.this, "第"+(i+1)+"行出库数量大于库存数量,请验证!");
return;
}[/strong]
Double dj = Double.valueOf(djStr);
Integer sl = Integer.valueOf(slStr);
TbSellDetail detail = new TbSellDetail();
detail.setSpid(spinfo.getId());
detail.setTbSellMain(sellMain.getSellId());
detail.setDj(dj);
detail.setSl(sl);
set.add(detail);
}
/*省略若干代码*/
});