<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA—咖啡館

    ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

    18.11  物資出庫模塊

    18.11.1  物資出庫模塊總體架構

    物資出庫模塊主要包括以下功能:

      ●   部門領用:用于對部門領用信息進行登記;

      ●   物資借出:用于對物資借出信息進行登記;

      ●   借出審核:用于對物資借出信息進行審核。

    18.11.2  創建物資出庫模塊的持久化類及映射文件

    1.創建持久化類和映射文件

    物資出庫模塊涉及到的數據表的持久化類和映射文件如表18.18所示。持久化類及映射文件的具體實現方法請參見18.8.2節。

    表18.18                         物資出庫模塊涉及到的數據表的持久化類和映射文件

    數據表名稱

    持久化類名稱

    映射文件名稱

    tb_getUse

    GetUseForm

    GetUseForm.hbm.xml

    tb_branch

    BranchForm

    BranchForm.hbm.xml

    tb_loan

    LoanForm

    LoanForm.hbm.xml

    tb_goods

    GoodsForm

    GoodsForm.hbm.xml

    tb_storage

    StorageForm

    StorageForm.hbm.xml

    2.映射關聯關系

    在物資出庫模塊中,涉及到3對關聯關系,如表18.19所示。

    表18.19                                                 物資出庫模塊的表間關系

    主  鍵  表

    外  鍵  表

    名    稱

    字  段  名

    名    稱

    字  段  名

    tb_goods

    id

    tb_getUse

    goodsid

    tb_branch

    id

    tb_getUse

    branchid

    tb_goods

    id

    tb_loan

    goodsid

    說明:在Hibernate中映射關聯關系的具體方法請參見18.10.2節。

    3.修改Hibernate配置文件

    在創建持久化類、映射文件和關聯關系后,還需要在Hibernate配置文件hibernate.cfg.xml中指定持久化類映射文件,關鍵代碼如下:

    <mapping resource="com/actionForm/GetUseForm.hbm.xml"/>

    <mapping resource="com/actionForm/LoanForm.hbm.xml"/>

    <mapping resource="com/actionForm/BranchForm.hbm.xml"/>

    說明:由于物資信息持久化類及映射文件已經在18.9.2節介紹了,所以此時不需要再配置了。

    18.11.3  創建物資出庫的Action實現類

    物資出庫模塊涉及到兩個Action實現類,一個是用于部門領用操作的GetUse類,另一個是用于物資借出操作的Loan類,下面將分別介紹。

    1.創建部門領用操作的Action實現類GetUse

    在部門領用操作的Action實現類GetUse中首先需要在構造方法中實例化物資出庫模塊的OutStorageDAO類(該類用于實現業務邏輯操作),然后通過Action實現類的主要方法execute()執行相應的業務邏輯操作。Action實現類的execute()方法會被自動執行,這個方法本身沒有具體的事務,它是根據HttpServletRequest的getParameter()方法獲取的action參數值執行相應方法的。

    實現部門領用操作的Action實現類的關鍵代碼如下。

    例程18-92:光盤\mr\18\MaterialManage\src\com\action\GetUse.java

    public class GetUse extends Action {

        private OutStorageDAO outStorageDAO = null;

        public GetUse() {

            outStorageDAO = new OutStorageDAO();

        }

        public ActionForward execute(ActionMapping mapping, ActionForm form,

                                     HttpServletRequest request,

                                     HttpServletResponse response) {

            String action = request.getParameter("action");

            if (action.equals("") || action == null) {

                request.setAttribute("error", "您的操作有誤!");

                return mapping.findForward("error");

            } else if (action.equals("getuseaddquery")) {     //查詢庫存中的物資信息

                return getuseadd_request(mapping, form, request, response);

            } else if (action.equals("getuseadd")) {     //部門領用

                return getuseadd(mapping, form, request, response);

            }

            request.setAttribute("error", "您的操作有誤!");

            return mapping.findForward("error");

        }

        ……  //此處省略了該類中其他方法,這些方法將在后面的具體過程中給出

    }

    2.創建用于物資借出操作的Action實現類Loan

    在用于物資借出操作的Action實現類Loan中,首先需要在構造方法中實例化物資出庫模塊的OutStorageDAO類(該類用于實現業務邏輯操作),然后通過Action實現類的主要方法execute()執行相應的業務邏輯操作。Action實現類的execute()方法會被自動執行,這個方法本身沒有具體的事務,它是根據通過HttpServletRequest的getParameter()方法獲取的action參數值執行相應方法的。實現物資借出操作的Action實現類Loan的關鍵代碼如下。

    例程18-93:光盤\mr\18\MaterialManage\src\com\action\Loan .java

    public class GetUse extends Action {

        ……     //此處省略了在構造方法中實例化OutStorageDAO類的方法

        public ActionForward execute(ActionMapping mapping, ActionForm form,

                                     HttpServletRequest request,

                                     HttpServletResponse response) {

            String action = request.getParameter("action");

            if (action.equals("") || action == null) {

                request.setAttribute("error", "您的操作有誤!");

                return mapping.findForward("error");

            } else if (action.equals("loanaddquery")) {     //查詢庫存中的物資信息

                return loanadd_request(mapping, form, request, response);

            } else if (action.equals("loanadd")) {     //物資借出

                return loanadd(mapping, form, request, response);

            }else if(action.equals("approveloan")){     //借出審核

                return approveloan(mapping, form, request, response);

            }else if(action.equals("backloan")){     //借出歸還

                return backloan(mapping, form, request, response);

            }else{

                request.setAttribute("error", "您的操作有誤!");

                return mapping.findForward("error");

            }

        ……  //此處省略了該類中其他方法,這些方法將在后面的具體過程中給出

    }

    18.11.4  部門領用設計

    使用的數據表:tb_getuse、tb_branch、tb_goods、tb_storage
    主要技術:通過Hibernate API操作數據庫

    用戶登錄后,選擇“物資出庫”→“部門領用”菜單項,進入到部門領用登記頁面。在部門領用頁面中,首先從“物資名稱”下拉列表框中選擇要領用的物資(系統將自動檢索出該物資的生產廠家、單價、計量單位和庫存數量等信息),然后在“領用數量”文本框中輸入領用數量(系統會自動檢驗庫存數量,如果庫存數量不足,系統將給予提示),最后選擇領用部門并輸入負責人名稱,單擊【保存】按鈕,保存部門領用信息,運行結果如圖18.22所示。

    圖18.22  部門領用頁面運行結果

    1.設計部門領用頁面

    從系統主菜單中選擇“物資出庫”→“部門領用”菜單項或是在部門領用頁面中改變“物資名稱”下拉列表框的值時都會觸發一個URL地址,這個URL地址是“getUse.do?action=getuseaddquery”,從這個URL地址中可以知道部門領用頁面所涉及到的action的參數值為“getuseaddquery”,當action=getuseaddquery時,會調用查詢庫存中的物資信息的方法getuseadd_request(),具體代碼如下。

    例程18-94:光盤\mr\18\MaterialManage\src\com\action\GetUse.java

    if (action.equals("getuseaddquery")) {

        return getuseadd_request(mapping, form, request, response);

    }

    在查詢庫存物資信息的方法getuseadd_request()中,首先需要獲取從頁面中傳遞的參數id的值并保存到HttpServletRequest的對象id中,然后調用OutStorageDAO類中的storage_query()方法查詢出庫存中的物資信息,再將返回的查詢結果保存到HttpServletRequest的對象GoodsStorage中。查詢庫存中物資信息的方法getuseadd_request()的具體代碼如下。

    例程18-95:光盤\mr\18\MaterialManage\src\com\action\GetUse.java

    public ActionForward getuseadd_request(ActionMapping mapping,ActionForm form,

                                      HttpServletRequest request,HttpServletResponse response) {

        int goodsid = 0;

        if (request.getParameter("id") != null) {

            goodsid = Integer.parseInt(request.getParameter("id"));

        }

        request.setAttribute("id", goodsid);

        request.setAttribute("GoodsStorage", outStorageDAO.storage_query()); //獲取物資信息

        return mapping.findForward("selStorageGoods");

    }

    從上面的代碼中可以知道查詢庫存中物資信息使用的OutStorageDAO類的方法是storage_query(),在該方法中首先需要利用Hibernate的本地SQL查詢從兩個表中獲取庫存中物資的詳細信息,然后將查詢結果保存到List集合list中,并返回list。storage_query()方法的具體代碼如下。

    例程18-96:光盤\mr\18\MaterialManage\src\com\action\OutStorageDAO.java

    public List storage_query() {

        session = MySession.openSession(); //打開Session

        String sql = "select {goods.*},{storage.*} from tb_goods goods inner join tb_storage storage on goods.id= storage.goodsid where storage.number>0"; //使用內連接查詢庫存信息

        List list = null;

        try {

            SQLQuery query = session.createSQLQuery(sql);

            query.addEntity("goods", GoodsForm.class); //將數據表與持久化類關聯在一起

            query.addEntity("storage", StorageForm.class);

            list = query.list();

        } catch (Exception e) {

            System.out.println("查詢時的錯誤信息:" + e.getMessage());

        }

        return list;

    }

    在struts-config.xml文件中配置查詢庫存中物資信息所涉及的<forward>元素,代碼如下:

    <forward name="selStorageGoods" path="/getUseAdd.jsp" />

    接下來的工作是將Action實現類中的storage_query()方法返回的查詢結果顯示在部門領用頁面getUseAdd.jsp中。在getUseAdd.jsp中通過request.getAttribute()方法獲取查詢結果并將其顯示在相應的位置或表單元素中。

    2.保存部門領用信息

    在部門領用頁面中錄入部門領用信息后,單擊【保存】按鈕,系統會訪問一個URL,這個URL是“getUse.do?action=getuseadd”。從該URL地址中可以知道保存部門領用信息涉及到的action的參數值為“getuseadd”,也就是當action=getuseadd時,會調用保存部門領用信息的方法getuseadd(),具體代碼如下。

    例程18-97:光盤\mr\18\MaterialManage\src\com\action\GetUse.java

    if (action.equals("getuseadd")) {

        return getuseadd(mapping, form, request, response);

    }

    在保存部門領用信息的方法getuseadd()中,首先需要將接收到的表單信息強制轉換成ActionForm類型,然后調用OutStorageDAO類中的getuseAdd()方法保存部門領用信息到相應的數據表中,并將返回值保存到變量rtn中。如果返回值為1,表示信息修改成功,將頁面重定向到部門領用頁面,否則將錯誤提示信息“部門領用信息添加失敗!”保存到HttpServletRequest的對象error中,然后將頁面重定向到錯誤提示信息頁面。保存部門領用信息的方法getuseadd()的關鍵代碼如下。

    例程18-98:光盤\mr\18\MaterialManage\src\com\action\GetUse.java

    public ActionForward getuseadd(ActionMapping mapping, ActionForm form,

                                   HttpServletRequest request,HttpServletResponse response) {

        GetUseForm getUseForm = (GetUseForm) form;

        int rtn = outStorageDAO.getuseAdd(getUseForm);

        ……    //此處省略了根據返回值重定向頁面的代碼

    }

    3.編寫保存部門領用信息的OutStorageDAO類的方法

    從上面的代碼中可以知道保存部門領用信息時使用的OutStorageDAO類的方法是getuseAdd()。實現getuseAdd()方法主要分為以下4個步驟。

    (1)將部門領用信息保存到部門領用信息表中,由于映射了關聯關系,所以需要建立“GoodsForm和GetUseForm的關聯關系”以及“BranchForm和GetUseForm的關聯關系”。

    (2)獲取部門領用信息表中最大的自動編號,與字符“LY”和系統日期組合成“LYYYYY-MM-DDnnnnn”格式的領用單號,并插入到部門領用信息表中。

    (3)修改庫存信息表。

    (4)如果在執行過程中不拋出異常,則將標志變量賦值為1,否則將標志變量賦值為0,最后返回該標志變量。

    getuseAdd()方法的具體代碼如下。

    例程18-99:光盤\mr\18\MaterialManage\src\com\dao\OutStorageDAO.java

    public int getuseAdd(GetUseForm getUseForm) {

        session = MySession.openSession();     //打開Session

        Transaction tx = null;

        int rtn = 1;

        try {

            //保存部門領用信息

            tx = session.beginTransaction();

            int goodsid = getUseForm.getGoodsid();

            GoodsForm goodsForm = (GoodsForm) session.get(GoodsForm.class,goodsid);

            getUseForm.setGoods(goodsForm);

            int branchid = getUseForm.getBranchid();

            BranchForm branchForm = (BranchForm) session.get(BranchForm.class,branchid);

            getUseForm.setBranch(branchForm);

            getUseForm.setCreatetime(new Date());

            session.save(getUseForm);

            NumberFormat formater = NumberFormat.getNumberInstance();

            int id = getUseForm.getId();

            formater.setMinimumIntegerDigits(5);

            java.util.Date createTime = getUseForm.getCreatetime();

            java.sql.Date date = new java.sql.Date(createTime.getTime());

            String gNo = "LY" + date +formater.format(id).toString().replace(",", "");   //組合領用單號

            GetUseForm getUseF = (GetUseForm) session.get(

                    GetUseForm.class, id);

            getUseF.setGno(gNo);

            session.update(getUseF);

                //修改庫存信息

            List list = session.createQuery("FROM StorageForm WHERE goodsid=" +

                                            getUseForm.getGoodsid() + "").list();

            StorageForm storageF = (StorageForm) list.get(0);

            int storageNum = storageF.getNumber() - getUseForm.getNumber();

            if (storageNum >= 0) {

                storageF.setNumber(storageNum);

                session.update(storageF);

            } else {      //庫存數量不足

                rtn = 0;

            }

            if (rtn == 1) {

                tx.commit();

            } else {

                if (tx != null) {

                    tx.rollback();

                }

            }

        } catch (Exception e) {

            ……   //此處省略了事務回滾和輸出錯誤信息的代碼

            rtn = 0;

        } finally {

            MySession.closeSession(session); //關閉Session

        }

        return rtn;

    }

    4.struts-config.xml文件配置

    在struts-config.xml文件中配置保存部門領用信息所涉及的<forward>元素,代碼如下:

    <forward name="getUseAddok" path="/getUseAdd_ok.jsp?para=1" />

    18.11.5  物資借出設計

    使用的數據表:tb_loan、tb_goods、tb_storage      主要技術:通過Hibernate API操作數據庫

    用戶登錄后,選擇“物資出庫”→“物資借出”菜單項,進入到 物資借出登記頁面。在物資借出頁面中。首先從“物資名稱”下拉列表框中選擇要借出的物資(系統將自動檢索出該物資的生產廠家、單價、計量單位和庫存數量等信息),然后在“借出數量”文本框中輸入借出數量(系統會自動檢驗庫存數量,如果庫存數量不足,系統將給予提示),最后輸入借用人基本信息及負責人名稱,單擊【保存】按鈕,保存物資借出信息,運行結果如圖18.23所示。

    圖18.23  物資借出頁面運行結果

    1.設計物資借出頁面

    從系統主菜單中選擇“物資出庫”→“物資借出”菜單項或是在物資借出頁面中改變“物資名稱”下拉列表框的值時都會觸發一個URL地址,這個URL地址是“loan.do?action=loanaddquery”,從這個URL地址中可以知道物資借出頁面所涉及到的action參數值為“loanaddquery”,當action=loanaddquery時,會調用查詢庫存中的物資信息的方法loanadd_request(),具體代碼如下。

    例程18-100:光盤\mr\18\MaterialManage\src\com\action\GetUse.java

    if (action.equals("loanaddquery")) {

        return loanadd_request(mapping, form, request, response);

    }

    在查詢庫存中物資信息的方法loanadd_request()中,首先需要獲取從頁面中傳遞的參數id的值并保存到HttpServletRequest的對象id中,然后調用OutStorageDAO類中的storage_query()方法查詢出庫存中的物資信息,再將返回的查詢結果保存到HttpServletRequest的對象GoodsStorage中。查詢庫存中物資信息的方法getuseadd_request()的具體代碼同例程18-98類似,這里就不再贅述。

    查詢庫存中物資信息使用的OutStorageDAO類的方法是storage_query(),在該方法中首先需要利用Hibernate的本地SQL查詢從兩個表中獲取庫存中物資的詳細信息,然后將查詢結果保存到List集合list中,并返回list。storage_query()方法的具體代碼請參見例程18-99。

    在struts-config.xml文件中配置查詢庫存中物資信息所涉及的<forward>元素,代碼如下:

    <forward name="selStorageGoods" path="/getUseAdd.jsp" />

    接下來的工作是將Action實現類中storage_query()方法返回的查詢結果顯示在物資借出頁面loanAdd.jsp中。在loanAdd.jsp中通過request.getAttribute()方法獲取查詢結果并將其顯示在相應的位置或表單元素中。

    2.保存物資借出信息

    在物資借出頁面中錄入物資借出信息后,單擊【保存】按鈕,系統會訪問一個URL,這個URL是“loan.do?action=loanadd”。從該URL地址中可以知道保存物資借出信息涉及到的action的參數值為“loanadd”,也就是當action=loanadd時,會調用保存物資借出信息的方法loanadd(),具體代碼如下。

    例程18-101:光盤\mr\18\MaterialManage\src\com\action\Loan.java

    if (action.equals("loanadd")) {

        return loanadd(mapping, form, request, response);

    }

    在保存物資借出信息的方法loanadd()中,首先需要將接收到的表單信息強制轉換成ActionForm類型,然后調用OutStorageDAO類中的getuseAdd()方法保存物資借出信息到相應的數據表中,并將返回值保存到變量rtn中,如果返回值為1,表示信息保存成功,將頁面重定向到物資借出頁面,否則將錯誤提示信息“物資借出信息添加失??!”保存到HttpServletRequest的對象error中,然后將頁面重定向到錯誤提示信息頁面。保存物資借出信息的方法loanadd()的關鍵代碼如下。

    例程18-102:光盤\mr\18\MaterialManage\src\com\action\Loan.java

    public ActionForward loanadd(ActionMapping mapping, ActionForm form,

                                   HttpServletRequest request,HttpServletResponse response) {

        LoanForm loanForm = (LoanForm) form;

        int rtn = outStorageDAO.loanAdd(loanForm);

        ……    //此處省略了根據返回值重定向頁面的代碼

    }

    3.編寫保存物資借出信息的OutStorageDAO類的方法

    從上面的代碼中可以知道保存物資借出信息時使用的OutStorageDAO類的方法是loanAdd()。實現loanAdd()方法主要分為以下3個步驟。

    (1)將物資借出信息保存到物資借出信息表tb_loan中。

    (2)獲取物資借出信息表中最大的自動編號,與字符“LY”和系統日期組合成“JCYYYY-MM-DDnnnnn”格式的借出單號,并插入到物資借出信息表中。

    (3)如果在執行過程中不拋出異常,則將標志變量賦值為1,否則將標志變量賦值為0,最后返回該標志變量。

    loanAdd()方法的具體代碼如下。

    例程18-103:光盤\mr\18\MaterialManage\src\com\dao\OutStorageDAO.java

    public int loanAdd(LoanForm loanForm) {

        session = MySession.openSession(); //打開Session

        Transaction tx = null;

        int rtn = 0;

        try {

            //保存物資借出信息

            tx = session.beginTransaction();

            int goodsid = loanForm.getGoodsid();

            GoodsForm goodsForm = (GoodsForm) session.get(GoodsForm.class,goodsid);

            loanForm.setGoods(goodsForm);

            loanForm.setCreatetime(new Date());

            session.save(loanForm);

            NumberFormat formater = NumberFormat.getNumberInstance();

            int id = loanForm.getId();

            formater.setMinimumIntegerDigits(5);

            java.util.Date createTime = loanForm.getCreatetime();

            java.sql.Date date = new java.sql.Date(createTime.getTime());

            String lNo = "JC" + date +formater.format(id).toString().replace(",", ""); //組合借出單號

            LoanForm loanF = (LoanForm) session.get(

                    LoanForm.class, id);

            loanF.setLno(lNo);

            session.update(loanF);

            tx.commit();

            rtn = 1;

        } catch (Exception e) {

            ……   //此處省略了事務回滾和輸出錯誤信息的代碼

            rtn = 0;

        } finally {

            MySession.closeSession(session); //關閉Session

        }

        return rtn;

    }

    4.struts-config.xml文件配置

    在struts-config.xml文件中配置保存物資借出信息所涉及的<forward>元素,代碼如下:

    <forward name="loanAddok" path="/loanAddok_ok.jsp?para=1" />

    18.11.6  借出審核設計

    使用的數據表:tb_loan、tb_goods、tb_storage    主要技術:通過Hibernate API操作數據庫

    用戶登錄后,選擇“物資出庫”→“借出審核”命令,進入到借出審核頁面,在該頁面中將顯示全部未審核的借出單列表,單擊審核圖標,即可完成借出審核操作。借出審核頁面的運行結果如圖18.24所示。

    圖18.24  借出審核頁面運行結果

    在“借出審核”頁面中可以找到審核圖標的超級鏈接代碼,如下所示:

    例程18-104:光盤\mr\18\MaterialManage\defaultroot\loanApproveQuery.jsp

    <a href="loan.do?action=approveloan&id=<%=id%>">

    <img src="images/enforce.gif" width="16" height="16" border="0"></a>

    從上面的URL地址中可以知道實現借出審核操作所涉及到的action的參數值為“approveloan”,當action=approveloan時,會調用實現借出審核操作的方法approveloan(),具體代碼如下。

    例程18-105:光盤\mr\18\MaterialManage\src\com\action\Loan.java

    if(action.equals("approveloan")){

        return approveloan(mapping, form, request, response);

    }

    在實現借出審核操作的方法approveloan()中,首先需要判斷用戶是否登錄,如果沒登錄則跳轉到登錄頁面強制其登錄,這樣可以提高系統的安全性,然后獲取從頁面中傳遞的參數id,并將id的值賦給int型變量id,賦值后將該變量作為OutStorageDAO類中approveloanAdd()方法的參數,最后調用approveloanAdd()方法實現借出審核操作,并根據執行結果轉到相應的頁面。approveloan()方法的具體代碼如下。

    例程18-106:光盤\mr\18\MaterialManage\src\com\action\Instorage.java

    public ActionForward approveloan(ActionMapping mapping,ActionForm form,

                                    HttpServletRequest request,HttpServletResponse response){

        HttpSession httpsession = request.getSession();

        ……     //此處省略了判斷用戶是否登錄的代碼

        int id=Integer.valueOf(request.getParameter("id"));

        int rtn=outStorageDAO.approveloanAdd(id,request);

        if(rtn==1){

            return mapping.findForward("loanApproveAddok");

        }else if(rtn==2){

            request.setAttribute("error","庫存數量不足,不能完成借出審核!");

            return mapping.findForward("error");

        }else{

            request.setAttribute("error","借出審核操作失敗!");

            return mapping.findForward("error");

         }

    }

    從上面代碼中可以知道實現借出審核操作使用的OutStorageDAO類的方法是approveloanAdd()。在approveloanAdd()方法中首先將借出審核信息保存到物資借出信息表tb_loan中,然后修改相應物資的庫存數量,當庫存數量不足時,不能完成借出審核操作。approveloanAdd()方法的具體代碼如下。

    例程18-107:光盤\mr\18\MaterialManage\src\com\dao\OutStorageDAO.java

    public int approveloanAdd(int id, HttpServletRequest request) {

        int rtn = 1;

        session = MySession.openSession();                                                                //打開session

        Transaction tx = null;

        try {

            tx = session.beginTransaction();

            LoanForm loanForm = (LoanForm) session.get(LoanForm.class, id);

            loanForm.setApprovetime(new Date());

            HttpSession httpsession = request.getSession();

            loanForm.setTaster((String) httpsession.getAttribute("username"));//設置審核員

            loanForm.setState(new Short("1"));                                                //修改借出單狀態為已審核

            session.update(loanForm);                                                         //保存借出審核信息

            GoodsForm goodsF = loanForm.getGoods();

            int goodsid = goodsF.getId();

            int goodsnumber = loanForm.getNumber();

            String hql_goods = "FROM StorageForm WHERE goodsid=" + goodsid + "";

            List list_goods = session.createQuery(hql_goods).list();

            if (list_goods.size() > 0) {

                StorageForm storageF = (StorageForm) list_goods.get(0);

                if (storageF.getNumber() - goodsnumber >= 0) {

                    String hql_up = "UPDATE StorageForm set number=number-" +

                                    goodsnumber + " WHERE goodsid=" + goodsid +"";

                    session.createQuery(hql_up).executeUpdate();

                } else {

                    rtn = 2; //庫存不足

                }

            } else {

                rtn = 0;

            }

            if (rtn == 1) {

                tx.commit();

            } else {

                if (tx != null) {

                    tx.rollback();

                }

            }

        } catch (Exception e) {

            ……   //此處省略了事務回滾和輸出錯誤信息的代碼

            rtn = 0;

        } finally {

            MySession.closeSession(session); //關閉Session

        }

        return rtn;

    }

    在struts-config.xml文件中配置實現借出審核操作所涉及的<forward>元素,代碼如下:

    <forward name="loanApproveAddok" path="/loanAddok_ok.jsp?para=2" />

    posted on 2009-01-07 10:42 rogerfan 閱讀(176) 評論(0)  編輯  收藏 所屬分類: 【開源技術】
    主站蜘蛛池模板: 国产亚洲精品bv在线观看| 久久嫩草影院免费看夜色| 亚洲精品成人a在线观看| 中文字幕精品亚洲无线码一区应用| 花蝴蝶免费视频在线观看高清版| 亚洲国产成人久久77| 亚洲精品A在线观看| 91热久久免费精品99| 亚洲AV无码一区二区三区鸳鸯影院| 亚洲国产成人片在线观看无码| 一级a性色生活片久久无少妇一级婬片免费放 | 亚洲免费在线视频播放| 看成年女人免费午夜视频| 在线观看亚洲一区二区| 免费在线观看黄网| 黄页免费的网站勿入免费直接进入| 九九视频高清视频免费观看 | 亚洲线精品一区二区三区 | 久久久亚洲裙底偷窥综合| 四虎影库久免费视频| 在线看免费观看AV深夜影院| 一区二区三区视频免费观看| 色偷偷亚洲女人天堂观看欧| 成人免费视频一区| 免费视频精品一区二区三区| 看全免费的一级毛片| 久久乐国产综合亚洲精品| 亚洲精品国产成人99久久| 亚洲成av人在片观看| 久久久久久久久免费看无码| 99久久综合精品免费| 视频免费在线观看| 一级做a爰片久久免费| 亚洲AV成人一区二区三区观看| 亚洲欧洲日产韩国在线| 亚洲成AV人片在| 亚洲真人无码永久在线| 亚洲国产午夜中文字幕精品黄网站| 成人免费视频一区二区三区| 99久久99这里只有免费费精品| 久9这里精品免费视频|