private void handleBudget(HttpServletRequest request, Payment entity) throws Exception { BudgetActionHelper budgetActionHelper = AppContextUtil.getAppContext().getBean("budgetActionHelper", BudgetActionHelper.class); BudgetHelper budgetHelper = AppContextUtil.getAppContext().getBean("budgetHelper", BudgetHelper.class); // handle budget User user = (User) ParamUtil.getSessionAttr(request, "LOGIN_USER"); if (user == null) throw new Exception(MessageConsts.MSG_COMMON_SESSION_TIMEOUT); Budget currentBudget = budgetHelper.getBudgetByPaydate(user.getxDEPT_xID(), entity.getxPAY_DATE()); // if there are no budget,then no paymentAction too if (currentBudget == null) { return; } BudgetAction paymenAction = new BudgetAction(); paymenAction.setxACTION(MessageConsts.BUDGET_TYPE_PAYMENT); paymenAction.setxPAYMENT_ID(entity.getxID()); paymenAction.setxACTION_AMT(entity.getxPAY_AMT()); paymenAction.setxCREATER_ID(user.getxLOGIN_ID()); if (currentBudget != null) { paymenAction.setxBUDGET_xID(currentBudget.getxID()); paymenAction.setxSOURCE_AMT(currentBudget.getxBALANCE_AMT()); } budgetActionHelper.insert(paymenAction); // handle borrow int deptId = ParamUtil.getInt(request, "deptId", 0); double borrowAmt = ParamUtil.getDouble(request, "borrowAmtHidden", 0); logger.info("PaymentAction-->borrowDeptId:" + deptId); logger.info("PaymentAction-->borrowAmt:" + borrowAmt); if (deptId > 0 && borrowAmt > 0) { Budget borrowBudget = budgetHelper.getBudgetByPaydate(deptId, entity.getxPAY_DATE()); BudgetAction borrowOutAction = new BudgetAction(); borrowOutAction.setxBUDGET_xID(borrowBudget.getxID()); borrowOutAction.setxPAYMENT_ID(entity.getxID()); borrowOutAction.setxACTION(MessageConsts.BUDGET_TYPE_BORROW_OUT); borrowOutAction.setxSOURCE_AMT(borrowBudget.getxBALANCE_AMT()); borrowOutAction.setxACTION_AMT(borrowAmt); borrowOutAction.setxCREATER_ID(user.getxLOGIN_ID()); budgetActionHelper.insert(borrowOutAction); borrowBudget.setxBALANCE_AMT(Calculator.sub(borrowBudget.getxBALANCE_AMT(), borrowAmt)); budgetHelper.update(borrowBudget); BudgetAction borrowInAction = new BudgetAction(); borrowInAction.setxBUDGET_xID(currentBudget.getxID()); borrowInAction.setxPAYMENT_ID(entity.getxID()); borrowInAction.setxACTION(MessageConsts.BUDGET_TYPE_BORROW_IN); borrowInAction.setxSOURCE_AMT(currentBudget.getxBALANCE_AMT()); borrowInAction.setxACTION_AMT(borrowAmt); borrowInAction.setxRELATED_BUDGET_ACTION_ID(borrowOutAction.getxID()); borrowInAction.setxCREATER_ID(user.getxLOGIN_ID()); budgetActionHelper.insert(borrowInAction); borrowOutAction.setxRELATED_BUDGET_ACTION_ID(borrowInAction.getxID()); budgetActionHelper.update(borrowOutAction); } double currentBalanceAmt = Calculator.add( Calculator.sub(currentBudget.getxBALANCE_AMT(), entity.getxPAY_AMT()), borrowAmt); currentBudget.setxBALANCE_AMT(currentBalanceAmt); budgetHelper.update(currentBudget); }