Package net.yanhl.finance.action

Source Code of net.yanhl.finance.action.FinanceBaseAction

package net.yanhl.finance.action;

import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonDateToStringProcessorImpl;
import net.sf.json.util.PropertyFilter;
import net.yanhl.base.action.BaseAction;
import net.yanhl.base.query.ListQuery;
import net.yanhl.finance.FinanceException;
import net.yanhl.finance.pojo.FinanceMoneyDetail;
import net.yanhl.finance.service.FinanceManager;
import net.yanhl.iouser.pojo.Iouser;
import net.yanhl.util.StringUtil;
import net.yanhl.util.UserUtil;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
* <p>Title: 账务基础ACTION类</p>
* <p>Description: </p>
* @author  闫洪磊
* @version  1.0.0.2009
*/
public class FinanceBaseAction extends BaseAction {
  Log log = LogFactory.getLog(this.getClass());
  protected final String FINANCE_TYPE_IN = "0";// 借入标志
  protected final String FINANCE_TYPE_OUT = "1";// 借出标志

  private FinanceManager financeManager;

  public void setFinanceManager(FinanceManager financeManager) {
    this.financeManager = financeManager;
  }

  /**
   * 增加借入出款
   *
   * @param mapping
   * @param actionForm
   * @param request
   * @param response
   * @return
   * @throws Exception
   */
  @SuppressWarnings("static-access")
  public ActionForward addFinanceMoney(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request,
      HttpServletResponse response) throws Exception {
    String currentUserName = null;
    try {
      currentUserName = UserUtil.getCurrentUserName(request);
      JSONObject jsonObject = readJson(request);
      FinanceMoneyDetail financeMoney = new FinanceMoneyDetail();
      financeMoney.setCreatorId(new Integer(UserUtil.getCurrentUserId(request)));
      financeMoney.setCreateDate(new java.util.Date());
      financeMoney.setLoanDate(StringUtil.getSqlDate(jsonObject.getString("loanDate"), "date"));
      financeMoney.setFallinDate(StringUtil.getSqlDate(jsonObject.getString("fallinDate"), "date"));
      financeMoney.setFinanceType(jsonObject.getString("financeType"));// 设置借入标志
      financeMoney.setDebtType(jsonObject.getString("debtType"));
      financeMoney.setTotalArrearage(jsonObject.getDouble("totalArrearage"));
      financeMoney.setRequitedArrearage(0.0d);
      financeMoney.setRemark(jsonObject.getString("remark"));
      // 设置借入/出人员
      String borrowUserId = jsonObject.getString("borrowUser");
      if (borrowUserId == null) {
        print(response, "债务人不能为空");
        throw new Exception("债务人不能为空");
      }
      Iouser borrowUser = (Iouser) getBaseManager().get(Iouser.class, Long.parseLong(borrowUserId));
      financeMoney.setBorrowUser(borrowUser);
      getBaseManager().save(financeMoney);
      print(response, RESBONSE_SUCCESS + "|" + financeMoney.getId());
      log.info(currentUserName + ">增加借入款项[" + financeMoney + "]");
    } catch (JSONException je) {
      je.printStackTrace();
      log.error(currentUserName + ">增加借入款项>解析JSON数据出错:" + je.getMessage());
    } catch (Exception ex) {
      ex.printStackTrace();
      log.error(currentUserName + ">增加款项出错:" + ex.getMessage());
    }
    return null;
  }

  /**
   * 载入借入出款
   *
   * @param mapping
   * @param actionForm
   * @param request
   * @param response
   * @return
   * @throws Exception
   */
  public ActionForward loadFinanceMoney(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request,
      HttpServletResponse response) throws Exception {
    String currentUserName = null;
    Long financeMoneyDetailId = StringUtil.getLongValue(request, "id");
    try {
      currentUserName = UserUtil.getCurrentUserName(request);
      FinanceMoneyDetail financeMoneyDetail = (FinanceMoneyDetail) getBaseManager().get(FinanceMoneyDetail.class,
          financeMoneyDetailId);
      JsonConfig config = new JsonConfig();
      // 注册日期解析器
      config.registerJsonValueProcessor(java.sql.Date.class, new JsonDateToStringProcessorImpl());
      config.registerJsonValueProcessor(java.util.Date.class, new JsonDateToStringProcessorImpl());
      config.registerJsonValueProcessor(java.sql.Timestamp.class, new JsonDateToStringProcessorImpl());
      // 忽略父子级别关联
      config.setJsonPropertyFilter(new PropertyFilter() {
        public boolean apply(Object source, String name, Object value) {
          if (name.equals("parentGroup") || name.equals("childGroups")) {
            return true;
          } else {
            return false;
          }
        }

      });
      JSONObject jsonObject = JSONObject.fromObject(financeMoneyDetail, config);
      print(response, jsonObject.toString());
      log.debug(currentUserName + ">载入借入出款[id=" + financeMoneyDetailId + "]");
    } catch (Exception ex) {
      ex.printStackTrace();
      log.error(currentUserName + ">载入借入出款[id=" + financeMoneyDetailId + "]出错");
    }
    return null;
  }

  /**
   * 修改物品详细信息
   *
   * @param mapping
   * @param actionForm
   * @param request
   * @param response
   * @return
   * @throws Exception
   */
  public ActionForward updateFinanceMoney(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request,
      HttpServletResponse response) throws Exception {
    String currentUserName = null;
    try {
      currentUserName = UserUtil.getCurrentUserName(request);
      JSONObject jsonObject = readJson(request);
      FinanceMoneyDetail financeMoney = (FinanceMoneyDetail) getBaseManager().get(FinanceMoneyDetail.class,
          jsonObject.getLong("id"));
      financeMoney.setLoanDate(StringUtil.getSqlDate(jsonObject.getString("loanDate"), "date"));
      financeMoney.setFallinDate(StringUtil.getSqlDate(jsonObject.getString("fallinDate"), "date"));
      financeMoney.setFinanceType(jsonObject.getString("financeType"));// 设置借入标志
      financeMoney.setDebtType(jsonObject.getString("debtType"));
      financeMoney.setTotalArrearage(jsonObject.getDouble("totalArrearage"));
      financeMoney.setRemark(jsonObject.getString("remark"));
      // 设置借入/出人员
      String borrowUserId = jsonObject.getString("borrowUser");
      if (borrowUserId == null) {
        print(response, "债务人不能为空");
        throw new Exception("债务人不能为空");
      }
      Iouser borrowUser = (Iouser) getBaseManager().get(Iouser.class, Long.parseLong(borrowUserId));
      financeMoney.setBorrowUser(borrowUser);
      getBaseManager().update(financeMoney);
      print(response, RESBONSE_SUCCESS);
    } catch (JSONException je) {
      je.printStackTrace();
      log.error(currentUserName + ">修改借入/出款>解析JSON数据出错:" + je.getMessage());
    } catch (Exception ex) {
      ex.printStackTrace();
      log.error(currentUserName + ">更新物品详细出错");
    }
    return null;
  }

  /**
   * 删除借入出款
   *
   * @param mapping
   * @param actionForm
   * @param request
   * @param response
   * @return
   * @throws Exception
   */
  public ActionForward deleteFinanceMoney(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request,
      HttpServletResponse response) throws Exception {
    String currentUserName = null;
    String[] ids = request.getParameterValues("ids");
    try {
      currentUserName = UserUtil.getCurrentUserName(request);
      getBaseManager().deleteAll(FinanceMoneyDetail.class, ids);
      print(response, RESBONSE_SUCCESS);
      log.debug(currentUserName + ">删除借入出款,ids=" + Arrays.toString(ids));
    } catch (RuntimeException ex) {
      ex.printStackTrace();
      log.error(currentUserName + ">删除借入出款[ids=" + ids + "]出错");
    }
    return null;
  }

  /**
   * 债务管理列表
   *
   * @param mapping
   * @param form
   * @param request
   * @param response
   * @return
   * @throws Exception
   */
  public ActionForward listMoney(ActionMapping mapping, ActionForm form, HttpServletRequest request,
      HttpServletResponse response) throws Exception {
    try {
      // 增加查询条件-结束
      ListQuery listQuery = new ListQuery(FinanceMoneyDetail.class, request);
      setPageIndex(request, listQuery);// 设置页码
      List<FinanceMoneyDetail> result = financeManager.list(listQuery);
      savePagination(request, result, FinanceMoneyDetail.class);// 保存结果集

      // 设置属性
      request.setAttribute("borrowUserName", request.getParameter("borrowUserName"));
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return mapping.findForward(FORWARD_SUCCESS);
  }

  /**
   * 还款操作
   *
   * @param mapping
   * @param actionForm
   * @param request
   * @param response
   * @return
   * @throws Exception
   */
  public ActionForward repay(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request,
      HttpServletResponse response) throws Exception {
    String currentUserName = null;
    try {
      currentUserName = UserUtil.getCurrentUserName(request);
      JSONObject jsonObject = readJson(request);
      long detailId = jsonObject.getLong("id");
      double repayTotal = jsonObject.getDouble("repayTotal");
      try {
        if (financeManager.repay(detailId, repayTotal)) {
          print(response, "true");
          log.info(currentUserName + ">借款-还款:[id=" + detailId + ",总额=" + repayTotal + "]");
        }
      } catch (FinanceException e) {
        print(response, e.getMessage());
        log.error(currentUserName + ">借款-还款:[id=" + detailId + ",总额=" + repayTotal + "]");
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }

  /**
   * 统计当前登录人欠款总额
   *
   * @param mapping
   * @param actionForm
   * @param request
   * @param response
   * @return
   * @throws Exception
   */
  public ActionForward count(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request,
      HttpServletResponse response) throws Exception {
    String currentUserName = null;
    try {
      currentUserName = UserUtil.getCurrentUserName(request);
      String creatorId = UserUtil.getCurrentUserId(request);
      Double[] count = financeManager.count(creatorId, request.getParameter("financeType"));
      DecimalFormat df = new DecimalFormat("#.00");
      JSONObject jsonObject = new JSONObject();
      jsonObject.accumulate("totalArrearage", df.format(count[0]));
      jsonObject.accumulate("requitedArrearage", df.format(count[1]));
      jsonObject.accumulate("remain", df.format(count[0] - count[1]));
      print(response, jsonObject.toString());
      log.info(currentUserName + ">统计欠款总额<type=" + request.getParameter("financeType") + ">=" + jsonObject.toString());
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
}
TOP

Related Classes of net.yanhl.finance.action.FinanceBaseAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.