📄 returnstockjdialog.java.svn-base
字号:
/* * returnStockJDialog.java * * Created on 2007年6月9日, 下午7:32 */package com.studio009.store.ui;import com.studio009.store.StoreApp;import com.studio009.store.entity.Stock;import com.studio009.store.entity.StockItem;import com.studio009.store.entity.StoreGoods;import java.text.SimpleDateFormat;import java.util.Vector;import javax.persistence.Query;import javax.swing.JOptionPane;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;import javax.swing.table.DefaultTableModel;/** * 进货单退货对话框 * @see Stock * @author wangs */public class ReturnStockJDialog extends javax.swing.JDialog { /** Creates new form returnStockJDialog * @param parent 父窗口 * @param modal 模式 */ public ReturnStockJDialog(java.awt.Window parent, boolean modal) { super(parent, java.awt.Dialog.ModalityType.APPLICATION_MODAL); initComponents(); // 设置对话框居中 this.setLocationRelativeTo(parent); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents private void initComponents() { em = StoreApp.getEntityManagerFactory().createEntityManager(); stockQuery = em.createQuery("select s from Stock s where s.stockState = 1"); stockList = stockQuery.getResultList(); jPanel1 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); jTextField1 = new javax.swing.JTextField(); jLabel1 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("\u91c7\u8d2d\u9000\u8d27"); jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton1.setFont(new java.awt.Font("Dialog", 1, 14)); jButton1.setText("\u9000\u8d27"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jTextField1.setFont(new java.awt.Font("Dialog", 0, 18)); jLabel1.setFont(new java.awt.Font("Dialog", 1, 14)); jLabel1.setText("\u8fdb\u8d27\u5355\u53f7:"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(23, 23, 23) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 211, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(260, 260, 260) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(24, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jTextField1) .addComponent(jLabel1) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jTable1.setModel(getStockTableModel()); jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e) { tableSelected(e); } }); jScrollPane1.setViewportView(jTable1); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 710, Short.MAX_VALUE) .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 373, Short.MAX_VALUE) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed int stockID = 0; try { stockID = Integer.parseInt(jTextField1.getText()); } catch (Exception e) { } // 在实体管理器里寻找进货单 Stock stock = em.find(Stock.class, stockID); if (stock == null) { JOptionPane.showMessageDialog(this, "没有找到该进货单!"); jTextField1.requestFocus(); return; } try { for (StockItem si : stock.getStockItemCollection()) { // 在仓库里查找商品 Query storeGoodsQuery = em.createQuery("select sg from StoreGoods sg where sg.storeName = :storeName and sg.goodsID = :goodsID"); storeGoodsQuery.setParameter("storeName", stock.getStoreName()); storeGoodsQuery.setParameter("goodsID", si.getGoodsID()); StoreGoods sg = null; try { sg = (StoreGoods) storeGoodsQuery.getSingleResult(); } catch (Exception e) { JOptionPane.showMessageDialog(this, "没有找到商品!"); return; } // 更新数量 double quantity = sg.getStoreGoodsQuantity() - si.getStockQuantity(); // 检查数量 if (quantity < 0) { throw new GoodNotEnoughException(); } sg.setStoreGoodsQuantity(quantity); si.setStockitemState(0); } stock.setStockState(0); // 更新到数据库 try { em.getTransaction().begin(); em.getTransaction().commit(); } catch(Exception e) { JOptionPane.showMessageDialog(this, "退货失败!"); return; } JOptionPane.showMessageDialog(this, "进货单: " + stock.getStockID() + " 已退货!"); } catch (GoodNotEnoughException gnee) { JOptionPane.showMessageDialog(this, "仓库的数量不足,不能完成退货!"); em.clear(); } updateTable();}//GEN-LAST:event_jButton1ActionPerformedprivate void tableSelected(ListSelectionEvent evt) { try { jTextField1.setText(stockList.get(jTable1.getSelectedRow()).getStockID().toString()); } catch(Exception e) { }}/** * 获取用来显示进货单的表格模型 * @return 用来显示进货单的表格模型 */public DefaultTableModel getStockTableModel() { Vector columnName=new Vector(); columnName.add("单据编号"); columnName.add("供应商"); columnName.add("操作员"); columnName.add("收货仓库"); columnName.add("进货时间"); columnName.add("实付款"); columnName.add("欠付款"); Vector content=new Vector(); for( Stock s : stockList) { Vector row = new Vector(); row.add(s.getStockID()); row.add(s.getSupplierName().getSupplierName()); row.add(s.getOperatorName().getOperatorName()); row.add(s.getStoreName().getStoreName()); row.add(new SimpleDateFormat().format(s.getStockTime())); row.add(String.format("%.2f", s.getGiveMoney())); row.add(String.format("%.2f", s.getOweGiveMoney())); content.add(row); } DefaultTableModel stockItemTableModel=new DefaultTableModel(content,columnName){ public boolean isCellEditable(int row, int col) { return false; } }; return stockItemTableModel;}/** * 更新表格 */private void updateTable(){ stockList = stockQuery.getResultList(); jTable1.setModel(getStockTableModel()); }/** * 退货时库存数量不足异常 */private class GoodNotEnoughException extends Exception{ }/** * @param args the command line arguments */public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { ReturnStockJDialog dialog = new ReturnStockJDialog(new javax.swing.JFrame(), true); dialog.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } }); dialog.setVisible(true); } });} // Variables declaration - do not modify//GEN-BEGIN:variables private javax.persistence.EntityManager em; private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; private javax.swing.JTextField jTextField1; private java.util.List<Stock> stockList; private javax.persistence.Query stockQuery; // End of variables declaration//GEN-END:variables }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -