📄 stocktakegainmanageframe.java
字号:
} } //显示表格内容的方法 public void showTableData(Object[][] detail){ //设置表格的标题 sslTableModel.setColumnNames(colNames); //设置表格的数据 sslTableModel.setData(detail); jTable1 = new JTable(sslTableModel); //设置表格的字体 jTable1.setFont(dialog13); //将数据表格加入数据滚动框 jScrollPane3.getViewport().add(jTable1, null); //设置列的宽度 jTable1.getColumnModel().getColumn(0).setPreferredWidth(20); jTable1.getColumnModel().getColumn(1).setPreferredWidth(50); jTable1.getColumnModel().getColumn(2).setPreferredWidth(50); jTable1.getColumnModel().getColumn(3).setPreferredWidth(10); jTable1.getColumnModel().getColumn(4).setPreferredWidth(10); jTable1.getColumnModel().getColumn(5).setPreferredWidth(10); jTable1.getColumnModel().getColumn(6).setPreferredWidth(50); //取得表格的行 ListSelectionModel rowSM = jTable1.getSelectionModel(); //加入行选择接收器 rowSM.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { //当多种事件被激发的时候,不执行接收器后面的代码 if (e.getValueIsAdjusting()) return; jTable1_valueChanged(e); } }); } //重新计算货物金额 public void recountGoodsAmount(){ double costPrice = 0; int quantity = 0; double amount = 0; double total = 0; for(int i = 0; i < stockSubLedgerObjects.length; i++){ costPrice = dataMethod.round(((Double)stockSubLedgerObjects[i][3]).doubleValue()); quantity = ((Integer)stockSubLedgerObjects[i][4]).intValue(); amount = dataMethod.round(costPrice * quantity); stockSubLedgerObjects[i][5] = new Double(amount); total += amount; } jTextField9.setText(String.valueOf(dataMethod.round(total))); } //检查明细账日期的方法 public int checkStockSubLedgerDate(){ java.sql.Date date = null; for(int i = 0; i < stockSubLedgerObjects.length; i++){ date = dataMethod.transferShortDate((String)stockSubLedgerObjects[i][6]); if(date == null){ JOptionPane.showMessageDialog(null, "第" + (i+1) + "行日期输入错误,正确的日期格式是" + "yyyy-mm-dd(年-月-日),如2004-1-1"); return 0; } } return 1; } //检查明细账的商品条形码方法 public int checkStockSubLedgerGoodsBarCode(){ int result = 0; for(int i = 0; i < stockSubLedgerObjects.length; i++){ result = stockManagementData.checkGoodsBarCode((String)stockSubLedgerObjects[i][2]); if(result == 0){ JOptionPane.showMessageDialog(null, "第" + (i + 1) + "行的商品条形码在商品数据库中" + "不存在,请打开商品数据管理窗口添加."); return 0; } } return 1; } //检查明细账数量是否为正的方法 public int checkStockSubLedgerQuantity(){ int quantity = 0; for(int i = 0; i < stockSubLedgerObjects.length; i++){ quantity = ((Integer)stockSubLedgerObjects[i][4]).intValue(); if(quantity < 0){ JOptionPane.showMessageDialog(null, "第" + (i+1) + "行的盈收数量输入错误,盈收数量必须是正数."); return 0; } } return 1; } //清空单个盘点盈收单显示的方法 public void clearStockLedger(){ jTextField4.setText(""); jTextField5.setText(""); jTextField6.setText(""); jTextField7.setText(""); jTextField8.setText(""); jTextField9.setText(""); jTextArea1.setText(""); stockSubLedgers = new String[0][6]; stockSubLedgerObjects = new Object[0][7]; this.showTableData(stockSubLedgerObjects); } //检查按钮的状态 public void checkBtn(boolean isManipulated){ if(isManipulated){ jButton2.setEnabled(false); jButton3.setEnabled(false); jButton4.setEnabled(false); jButton5.setEnabled(false); jButton6.setEnabled(true); jButton7.setEnabled(true); }else{ jButton2.setEnabled(true); jButton3.setEnabled(true); jButton4.setEnabled(true); jButton5.setEnabled(true); jButton6.setEnabled(false); jButton7.setEnabled(false); } } //检查明细账按钮的状态 public void checkSubBtn(boolean isCreated){ if(isCreated){ jButton9.setEnabled(true); jButton10.setEnabled(true); }else{ jButton9.setEnabled(false); jButton10.setEnabled(false); } } //列表1的选择事件 void jList1_valueChanged(ListSelectionEvent e) { if(listData1.size() > 0){ this.showStockLedger(); }else{ this.clearStockLedger(); } } //表格行选择事件 public void jTable1_valueChanged(ListSelectionEvent e) { //重新计算金额 this.recountGoodsAmount(); } //查询方法 public void search(){ //取得查询选项 int selectedIndex = jComboBox1.getSelectedIndex(); //取得编辑框的变量 String searchValue = jTextField1.getText().trim(); String startDateStr = jTextField2.getText().trim(); String endDateStr = jTextField3.getText().trim(); if (selectedIndex == 0 | selectedIndex == 1 | selectedIndex == 2 | selectedIndex == 3) { if (searchValue.length() == 0) { JOptionPane.showMessageDialog(null, "请输入查询值"); return; } switch (selectedIndex) { case 0: //根据盘点盈收单编号取得记录 stockLedgers = stockManagementData.getStockLedgerByStringField( ledgerDate, "orderId", searchValue, 7); break; case 1: //根据填写用户取得记录 stockLedgers = stockManagementData.getStockLedgerByStringField( ledgerDate, "submitUser", searchValue, 7); break; case 2: //根据仓库名字取得记录 stockLedgers = stockManagementData.getStockLedgerByStringField( ledgerDate, "warehouse", searchValue, 7); break; case 3: if(dataMethod.checkInt(searchValue) == 0){ JOptionPane.showMessageDialog(null, "按完成状态查询时,输入值必须是整数," + "0表示进行,1表示撤消,2表示完成."); return; } //根据完成状态取得记录 stockLedgers = stockManagementData.getStockLedgerByOnProcess( ledgerDate, 7, Integer.parseInt(searchValue)); break; } }else{ java.sql.Timestamp startDate = dataMethod.transferDate(startDateStr); java.sql.Timestamp endDate = dataMethod.transferEndDate(endDateStr); if(startDate == null | endDate == null){ JOptionPane.showMessageDialog(null, "日期输入错误,正确的日期格式是" + "yyyy-mm-dd(年-月-日),如2004-1-1"); return; } //根据日期取得记录 stockLedgers = stockManagementData.getStockLedgerByOrderDate(ledgerDate, startDate, endDate, 7); } this.showSearchStockLedger(); } //单击事件 public void actionPerformed(ActionEvent e) { //取得按钮的动作字符串 String actionCommand = e.getActionCommand().trim(); //检查打开的账套是否当前账套 if (actionCommand.equals("createStockLedger") | actionCommand.equals("updateStockLedger") | actionCommand.equals("cancelStockLedger") | actionCommand.equals("restoreStockLedger")) { int result = stockManagementData.isCurrentLedger(ledgerDate); if(result == 0){ JOptionPane.showMessageDialog(null, ledgerDate + "是往期账套,不能进行添加、修改和撤消操作."); return; } } if (actionCommand.equals("search")) { //查询 search(); }else if(actionCommand.equals("createStockLedger")){ action = "create"; this.clearStockLedger(); this.checkBtn(true); this.checkSubBtn(true); }else if(actionCommand.equals("updateStockLedger")){ action = "update"; this.checkBtn(true); }else if(actionCommand.equals("cancelStockLedger")){ action = "cancel"; this.checkBtn(true); }else if(actionCommand.equals("restoreStockLedger")){ action = "restore"; this.checkBtn(true); }else if(actionCommand.equals("ok")){ int selectedIndex = jList1.getSelectedIndex(); //创建库存账套数据表的单个记录数组 String[] stockLedger = new String[13]; //取得盘点盈收单的值 stockLedger[0] = ""; //单据编号 stockLedger[1] = "7"; //7表示盘点盈收单 stockLedger[2] = ""; stockLedger[3] = user.getUserName(); //填写用户 stockLedger[4] = ""; stockLedger[5] = ""; stockLedger[6] = ""; stockLedger[7] = ""; stockLedger[8] = jTextField6.getText().trim(); //仓库 stockLedger[9] = jTextField7.getText().trim(); //填写日期 stockLedger[10] = dataMethod.getCurrentDate().toString(); //系统日期 stockLedger[11] = "2"; stockLedger[12] = jTextArea1.getText().trim(); int result = 0; if(action.equals("update") | action.equals("create")){ //检查盘点盈收单的仓库名字 result = stockManagementData.checkWarehouse(stockLedger[8]); if(result == 0){ JOptionPane.showMessageDialog(null, stockLedger[4] + "在仓库数据库中" + "不存在,请打开仓库数据管理窗口添加."); return; } //检查填写日期 if(dataMethod.transferDateTime(stockLedger[9]) == null){ JOptionPane.showMessageDialog(null, "填写日期输入错误,正确的日期格式是" + "yyyy-mm-dd(年-月-日),如2004-1-1"); return; } //检查盘点盈收单明细账的商品条形码、盈收数量是否为正、日期 result = this.checkStockSubLedgerGoodsBarCode(); if(result == 0) return; result = this.checkStockSubLedgerQuantity(); if(result == 0) return; result = this.checkStockSubLedgerDate(); if(result == 0) return; //转换表格数组 this.transferTableData(); } if(action.equals("create")){ //检查明细账是否为空 if(stockSubLedgerObjects.length == 0){ JOptionPane.showMessageDialog(null, "明细账数据表为空,不可以创建盘点盈收单."); return; } //添加盘点盈收单 result = stockManagementData.createStockLedgerAndSub(ledgerDate, stockLedger, stockSubLedgers); if(result == 1){ JOptionPane.showMessageDialog(null, "盘点盈收单添加成功,请重新执行查询操作显示新的盘点盈收单."); }else{ JOptionPane.showMessageDialog(null, "盘点盈收单添加失败,请检查输入值是否大于字段范围."); } }else if (action.equals("update")){ //取得原来的单据编号 stockLedger[0] = stockLedgers[selectedIndex][0].trim(); //修改盘点盈收单 result = stockManagementData.updateStockLedgerAndSub(ledgerDate, stockLedger, stockSubLedgers); if(result == 1){ JOptionPane.showMessageDialog(null, "盘点盈收单修改成功."); //更新数组的数据 for (int i = 0; i < 13; i++) { stockLedgers[selectedIndex][i] = stockLedger[i]; } }else{ JOptionPane.showMessageDialog(null, "盘点盈收单修改失败,请检查输入值是否大于字段范围."); } }else if (action.equals("cancel")){ //撤消盘点盈收单 result = stockManagementData.cancelStockLedgerAndSub(ledgerDate, stockLedgers[selectedIndex][0], stockLedger[12]); if(result == 1){ JOptionPane.showMessageDialog(null, "盘点盈收单撤消成功."); //更新完成状态编辑框的值 jTextField8.setText(onProcesses[1]); //更新数组的数据 stockLedgers[selectedIndex][11] = "1"; stockLedgers[selectedIndex][12] = stockLedger[12]; }else{ JOptionPane.showMessageDialog(null, "盘点盈收单撤消失败."); } }else if (action.equals("restore")){ //恢复盘点盈收单 result = stockManagementData.signStockLedgerAndSubForFinish(ledgerDate, "submitUser", user.getUserName(), stockLedgers[selectedIndex][0], 2, stockLedger[12]); if(result == 1){ JOptionPane.showMessageDialog(null, "盘点盈收单恢复成功."); //更新完成状态编辑框的值 jTextField8.setText(onProcesses[2]); //更新数组的数据 stockLedgers[selectedIndex][11] = "2"; stockLedgers[selectedIndex][12] = stockLedger[12]; }else{ JOptionPane.showMessageDialog(null, "盘点盈收单恢复失败."); } } this.checkSubBtn(false); this.checkBtn(false); }else if(actionCommand.equals("cancel")){ this.jList1_valueChanged(null); this.checkBtn(false); this.checkSubBtn(false); }else if(actionCommand.equals("createSub")){ //为库存账套明细表添加一个空行 int objectsLength = stockSubLedgerObjects.length; Object[][] tempObjs = new Object[objectsLength + 1][7]; System.arraycopy(stockSubLedgerObjects, 0, tempObjs, 0, objectsLength); tempObjs[objectsLength][0] = new Integer(0); tempObjs[objectsLength][1] = new String(""); tempObjs[objectsLength][2] = new String(""); tempObjs[objectsLength][3] = new Double(0); tempObjs[objectsLength][4] = new Integer(0); tempObjs[objectsLength][5] = new Double(0); tempObjs[objectsLength][6] = new String(""); stockSubLedgerObjects = tempObjs; this.showTableData(stockSubLedgerObjects); }else if(actionCommand.equals("deleteSub")){ if(jTable1.getSelectedRowCount() == 0){ JOptionPane.showMessageDialog(null, "请选择明细记录."); return; } //删除选择的记录 int selectedIndex = jTable1.getSelectedRow(); Object[][] tempObjs = new Object[stockSubLedgerObjects.length - 1][7]; int line = 0; for(int i = 0; i < stockSubLedgerObjects.length; i++){ if(i == selectedIndex){ continue; }else{ for(int j = 0; j < 7; j++){ tempObjs[line][j] = stockSubLedgerObjects[i][j]; } line++; } } stockSubLedgerObjects = tempObjs; this.showTableData(stockSubLedgerObjects); }else if(actionCommand.equals("exit")){ exit(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -