apzl_leasing/calc/com/tenwa/reckon/util/TbBeanTools.java
2019-10-14 09:27:52 +08:00

194 lines
9.2 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.tenwa.reckon.util;
import java.util.ArrayList;
import java.util.List;
import com.amarsoft.are.jbo.JBOTransaction;
import jbo.com.tenwa.entity.comm.flow.FLOW_BUSSINESS_OBJECT;
import com.amarsoft.are.ARE;
import com.amarsoft.are.jbo.BizObject;
import com.amarsoft.are.jbo.BizObjectManager;
import com.amarsoft.are.jbo.JBOFactory;
import com.amarsoft.are.log.Log;
import com.amarsoft.awe.util.SqlObject;
import com.tenwa.reckon.bean.KnowingConfigBean;
import com.tenwa.reckon.bean.KnowingTableBean;
import com.tenwa.reckon.bean.SubsectionBean;
import com.tenwa.reckon.bean.TabCalBean;
/**
*
* @author SHIHONGFEI
* @version 1.0
* @copyright (C) TENWA 2016
* @date 2016-07-24
* @desc ( 此类用于根据流程类型得出,交易结构,租金计划所用的表信息)
*/
public class TbBeanTools {
public static Log logger=ARE.getLog();
/**
*
* ( 根据交易结构信息,测算类型得到测算所涉及的表信息)
*
* @param calType
* @param cb
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static TabCalBean getTabInfo(String calType, String flowunid,String plannumber,String productId) throws Exception {
logger.info("进入方法:getTabInfo");
TabCalBean tcb = new TabCalBean();
tcb = getTabInfo(calType);
tcb.setPlanCValue(plannumber);
BizObject condition=JBOFactory.createBizObjectQuery(tcb.getCondition_tb(), "select * from O where flowunid = :flowunid and "+tcb.getPlanCName()+"='"+plannumber+"'").setParameter("flowunid", flowunid).getSingleResult(false);
tcb.setCondition(condition);
//设置已知规则
BizObjectManager m2 = JBOFactory.getBizObjectManager(tcb.getRuleTb());
List<BizObject> objs = m2.createQuery("flowunid=:flowunid and "+tcb.getPlanCName()+"='"+tcb.getPlanCValue()+"' order by start_list asc").setParameter("flowunid", flowunid).getResultList(false);
List<KnowingConfigBean> configs = new ArrayList<KnowingConfigBean>();
for(BizObject obj : objs){
configs.add(ObjectConvertUtils.converBizObjectToBean(KnowingConfigBean.class, obj));
}
tcb.setKnowingConfigs(configs);
//设置已知租金表
BizObjectManager m3 = JBOFactory.getBizObjectManager(tcb.getPeriodTb());
List<BizObject> objs3 = m3.createQuery("flowunid=:flowunid and "+tcb.getPlanCName()+"='"+tcb.getPlanCValue()+"' order by PLAN_LIST asc").setParameter("flowunid", flowunid).getResultList(false);
List<KnowingTableBean> tables = new ArrayList<KnowingTableBean>();
for(BizObject obj : objs3){
tables.add(ObjectConvertUtils.converBizObjectToBean(KnowingTableBean.class, obj));
}
tcb.setKnowingTables(tables);
//分段测算
BizObjectManager breakBm=JBOFactory.getBizObjectManager(tcb.getSubsectionTb());
List<BizObject> subList=breakBm.createQuery("flowunid=:flowunid and "+tcb.getPlanCName()+"='"+tcb.getPlanCValue()+"' order by START_LIST asc").setParameter("flowunid", flowunid).getResultList(false);
List<SubsectionBean> subs=new ArrayList<SubsectionBean>();
for(BizObject obj:subList){
subs.add(ObjectConvertUtils.converBizObjectToBean(SubsectionBean.class, obj));
}
tcb.setSubsections(subs);
tcb.setDocId(flowunid);
if(productId==null||productId==""){
BizObject flow=JBOFactory.createBizObjectQuery(FLOW_BUSSINESS_OBJECT.CLASS_NAME,"flow_unid=:flowunid").setParameter("flowunid", flowunid).getSingleResult(false);
productId=flow.getAttribute("productId").getString();
}
tcb.setProductId(productId);
logger.info("方法getTabInfo处理结束");
return tcb;
}
@SuppressWarnings("unchecked")
public static TabCalBean getTabInfoTrans( String calType, String flowunid, String plannumber, String productId, JBOTransaction tx ) throws Exception {
logger.info("进入方法:getTabInfo");
TabCalBean tcb = new TabCalBean();
tcb = getTabInfo(calType);
tcb.setPlanCValue(plannumber);
BizObject condition = JBOFactory.getBizObjectManager( tcb.getCondition_tb(), tx ).createQuery( "select * from O where flowunid = :flowunid and "+tcb.getPlanCName()+"='"+plannumber+"'" ).setParameter( "flowunid", flowunid ).getSingleResult( false );
tcb.setCondition(condition);
//设置已知规则
BizObjectManager m2 = JBOFactory.getBizObjectManager( tcb.getRuleTb(), tx );
List<BizObject> objs = m2.createQuery("flowunid=:flowunid and "+tcb.getPlanCName()+"='"+tcb.getPlanCValue()+"' order by start_list asc").setParameter("flowunid", flowunid).getResultList(false);
List<KnowingConfigBean> configs = new ArrayList<KnowingConfigBean>();
for(BizObject obj : objs){
configs.add(ObjectConvertUtils.converBizObjectToBean(KnowingConfigBean.class, obj));
}
tcb.setKnowingConfigs(configs);
//设置已知租金表
BizObjectManager m3 = JBOFactory.getBizObjectManager( tcb.getPeriodTb(), tx );
List<BizObject> objs3 = m3.createQuery("flowunid=:flowunid and "+tcb.getPlanCName()+"='"+tcb.getPlanCValue()+"' order by PLAN_LIST asc").setParameter("flowunid", flowunid).getResultList(false);
List<KnowingTableBean> tables = new ArrayList<KnowingTableBean>();
for(BizObject obj : objs3){
tables.add(ObjectConvertUtils.converBizObjectToBean(KnowingTableBean.class, obj));
}
tcb.setKnowingTables(tables);
//分段测算
BizObjectManager breakBm=JBOFactory.getBizObjectManager( tcb.getSubsectionTb(), tx );
List<BizObject> subList=breakBm.createQuery("flowunid=:flowunid and "+tcb.getPlanCName()+"='"+tcb.getPlanCValue()+"' order by START_LIST asc").setParameter("flowunid", flowunid).getResultList(false);
List<SubsectionBean> subs=new ArrayList<SubsectionBean>();
for(BizObject obj:subList){
subs.add(ObjectConvertUtils.converBizObjectToBean(SubsectionBean.class, obj));
}
tcb.setSubsections(subs);
tcb.setDocId(flowunid);
if(productId==null||productId==""){
BizObject flow = JBOFactory.getBizObjectManager( FLOW_BUSSINESS_OBJECT.CLASS_NAME, tx ).createQuery( "flow_unid=:flowunid" ).setParameter( "flowunid", flowunid ).getSingleResult( false );
productId=flow.getAttribute("productId").getString();
}
tcb.setProductId(productId);
logger.info("方法getTabInfo处理结束");
return tcb;
}
/**
*
* 根据calType 类型返回在该类型下查询的表和字段名 该方法流程类型返回要和该类中其他重载方法一致
* <BR>在这里返回的都是表名,可以通过tabcalbean中的方法转换为视图或者正式表
* <BR>该方法中会吧userid存为查询客户名的表,实际上应该为当前登录人所以需要在其他方法中覆盖
* @author 孙传良
* @param calType(流程类型:项目proj_process;合同cont_process;
*<BR>起租onHire_process;多次起租只读onHire_ready_process
*<BR>项目只读:proj_ready_process;合同只读:cont_ready_process;客户:quoted_price)
*<BR>proj_process --vi_c1_condition --vi_fund_rent_plan_proj_temp
*<BR>proj_ready_process --vi_c1_condition --vi_fund_rent_plan_proj_temp
*<BR>cont_process --vi_c1_condition --vi_fund_rent_plan_temp
*<BR>cont_ready_process --vi_c1_condition --vi_fund_rent_plan_temp
*<BR>onHire_process --vi_c1_condition --vi_fund_rent_plan_before->vi_fund_rent_plan_temp
*<BR>onHire_more_process --vi_onHire_condition_temp --vi_fund_rent_plan_onHire_temp
*<BR>onHire_more_ready_process --vi_onHire_condition_temp --vi_fund_rent_plan_onHire_temp
*<BR>quoted_price --vi_quot_price_condition --vi_quot_price_rent_plan
*<BR>quoted_ready_price --vi_quot_price_condition --vi_quot_price_rent_plan
* @return TabCalBean 返回操作表的bean类
*/
public static TabCalBean getTabInfo(String calType) throws Exception{
TabCalBean tcb = new TabCalBean();
tcb.setCalType(calType);
tcb.setFundFundPlan_tb("jbo.app.tenwa.calc.LC_FUND_PLAN_TEMP");
tcb.setCondition_tb("jbo.app.tenwa.calc.LC_CALC_CONDITION_TEMP");
tcb.setContractCashTb("jbo.app.tenwa.calc.LC_CASH_FLOW_TEMP");
tcb.setRentPlan_tb("jbo.app.tenwa.calc.LC_RENT_PLAN_TEMP");
tcb.setRuleTb("jbo.app.tenwa.calc.LC_CALC_RULES_TEMP");
tcb.setPeriodTb("jbo.app.tenwa.calc.LC_CALC_PERIOD_TEMP");
tcb.setSubsectionTb("jbo.app.tenwa.calc.LC_CALC_SUBSECTION_TEMP");
tcb.setCalcFund("jbo.app.tenwa.calc.LC_FUND_CONDITION_TEMP");
if ("proj_process".equals(calType) || "proj_ready_process".equals(calType)) {// 项目和项目只读都是来自同一个视图
tcb.setPlanCName("PROJECT_PLAN_NUMBER");
tcb.setUserId("vi_proj_cust");// 用来查询客户名的视图
} else if ("cont_process".equals(calType) || "cont_ready_process".equals(calType)) {// 合同
tcb.setPlanCName("CONTRACT_PLAN_NUMBER");
tcb.setUserId("vi_contract_cust");
} else if ("quoted_price".equals(calType) || "quoted_ready_price".equals(calType)) {// 客户报价
tcb.setFundFundPlan_tb("jbo.app.tenwa.calc.LC_CUSTOMER_FUND_PLAN");
tcb.setCondition_tb("jbo.app.tenwa.calc.LC_CUSTOMER_CONDITION");
tcb.setContractCashTb("jbo.app.tenwa.calc.LC_CUSTOMER_CASH_FLOW");
tcb.setRentPlan_tb("jbo.app.tenwa.calc.LC_CUSTOMER_RENT_PLAN");
tcb.setRuleTb("jbo.app.tenwa.calc.LC_CUSTOMER_RULES");
tcb.setPeriodTb("jbo.app.tenwa.calc.LC_CUSTOMER_PERIOD");
tcb.setSubsectionTb("jbo.app.tenwa.calc.LC_CUSTOMER_SUBSECTION");
tcb.setPlanCName("QUOT_ID");
} else if("pay_process".equals(calType)){//投放时
tcb.setPlanCName("PAYMENT_NUMBER");
tcb.setUserId("vi_contract_cust");
}else if ("onHire_process".equals(calType)) {// 起租时
tcb.setPlanCName("PAYMENT_NUMBER");
tcb.setUserId("vi_contract_cust");
}else if("contract_process".equals(calType)){// 合同审批
tcb.setPlanCName("PROJECT_PLAN_NUMBER");
tcb.setUserId("vi_contract_cust");
}else {// 默认为合同
tcb.setPlanCName("PAYMENT_NUMBER");
tcb.setUserId("vi_contract_cust");
}
return tcb;
}
}