package com.tenwa.loan.action; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.BizObjectKey; import com.amarsoft.are.jbo.BizObjectManager; import com.amarsoft.are.jbo.JBOFactory; import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.are.util.json.JSONEncoder; import com.amarsoft.are.util.json.JSONObject; import com.amarsoft.awe.util.json.JSONValue; import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.flow.action.comm.BaseTable; import jbo.loan.LOAN_FUND_BALANCE; public class LoanFundBalanceAction extends BaseTable { private String calcDate; private String fundBalanceParam; private String queryDate; public String getCalcDate() { return calcDate; } public void setCalcDate(String calcDate) { this.calcDate = calcDate; } public String getFundBalanceParam() { return fundBalanceParam; } public void setFundBalanceParam(String fundBalanceParam) { this.fundBalanceParam = fundBalanceParam; } public String getQueryDate() { return queryDate; } public void setQueryDate(String queryDate) { this.queryDate = queryDate; } /** * 新增本方账户余额 * @param tx * @return * @throws JBOException * @throws RecordNotFoundException */ public String addFundBalance(JBOTransaction tx) throws Exception{ String[] params = fundBalanceParam.split("@"); BizObjectManager lfbManager = JBOFactory.getBizObjectManager(LOAN_FUND_BALANCE.CLASS_NAME, tx); for(int i=0; i> showFundBalanceForWeek(JBOTransaction tx) throws Exception{ Calendar calendar = Calendar.getInstance(); List> results = showFundBalanceByCalendar(calendar,tx); return results; } /** * 根据指定日期查询账户余额 * @param tx * @return * @throws Exception */ public String queryDataByDate(JBOTransaction tx) throws Exception{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); Calendar queryCalendar = Calendar.getInstance(); queryCalendar.setTime(sdf.parse(queryDate)); List> results = showFundBalanceByCalendar(queryCalendar,tx); return JSONArray.fromObject(results).toString(); } /** * 根据calendar查询当周账户余额 * @param calendar * @param tx * @return * @throws Exception */ public List> showFundBalanceByCalendar(Calendar calendar,JBOTransaction tx) throws Exception{ Map showDates = showDatesForWeek(calendar); List> results = new ArrayList>(); Map result = new HashMap(); result.put("own_name","出租人"); result.put("acc_number","本方账号"); result.put("acc_bank","本方银行"); for (String key : showDates.keySet()) { result.put(key,showDates.get(key)); } results.add(result); String sql = "SELECT oa.ID,oa.ACC_NUMBER,oa.ACC_BANK,oi.OWN_NAME FROM own_account oa LEFT JOIN OWN_INFO oi ON oa.own_id=oi.own_number ORDER BY oa.acc_number "; List> ownAccountList=DataOperatorUtil.getDataBySql(tx, sql, null); if(ownAccountList.size()>0){ for(Map ownAccount:ownAccountList){ result = new HashMap(); result.put("own_name",ownAccount.get("OWN_NAME")); result.put("acc_number",ownAccount.get("ACC_NUMBER")); result.put("acc_bank",ownAccount.get("ACC_BANK")); List lfbs = JBOFactory.createBizObjectQuery(LOAN_FUND_BALANCE.CLASS_NAME, "select O.OWN_ACCOUNT_BALANCE,O.INPUTDATE FROM O WHERE O.OWN_ACCOUNT_ID=:ownaccountid and O.INPUTDATE>='"+showDates.get("1day")+"' AND O.INPUTDATE<='"+showDates.get("7day")+"' order by O.INPUTDATE ").setParameter("ownaccountid",ownAccount.get("ID")).getResultList(false); if(lfbs.size()>0){ Map compareDate = new HashMap(); for(BizObject lfb:lfbs){ String inputDate = lfb.getAttribute("INPUTDATE").getString(); for (String key : showDates.keySet()) { if(showDates.get(key).equals(inputDate)){ result.put(key,lfb.getAttribute("OWN_ACCOUNT_BALANCE").getString()); compareDate.put(key,key); } } } if(compareDate.size() showDatesForWeek(Calendar calendar){ int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); if(dayOfWeek==1){ dayOfWeek=8; } SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); String showDate=""; Map showDates = new HashMap(); for(int i=1;i<=7;i++){ Date date = new Date(); date.setTime(calendar.getTime().getTime()+(2-dayOfWeek+i-1)*24*3600000); showDate = sdf.format(date); showDates.put(i+"day",showDate); } return showDates; } }