diff --git a/WebContent/WEB-INF/etc/jbo/jbo_oti.xml b/WebContent/WEB-INF/etc/jbo/jbo_oti.xml index d714bd101..5f0878302 100644 --- a/WebContent/WEB-INF/etc/jbo/jbo_oti.xml +++ b/WebContent/WEB-INF/etc/jbo/jbo_oti.xml @@ -301,6 +301,7 @@ + @@ -331,6 +332,7 @@ + @@ -340,6 +342,7 @@ + @@ -357,19 +360,47 @@ - + + - - - + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src_jbo/jbo/oti/FC_FILE_PUSH.java b/src_jbo/jbo/oti/FC_FILE_PUSH.java new file mode 100644 index 000000000..4291167c1 --- /dev/null +++ b/src_jbo/jbo/oti/FC_FILE_PUSH.java @@ -0,0 +1,64 @@ +package jbo.oti; + +/** +* 接口资料表 - JBO命名常量类

+* Note: This file is generated by ADE tools, dont modify it.
+ +*/ +public interface FC_FILE_PUSH { + /** + * 接口资料表

+ * 代表本类映射的BizObjectClass + */ + public static final String CLASS_NAME = "jbo.oti.FC_FILE_PUSH"; + /** + * 唯一标识 STRING(32)
+ */ + public static final String ID = "ID"; + /** + * 渠道编号 STRING(32)
+ */ + public static final String CHANNEL_NO = "CHANNEL_NO"; + /** + * 渠道名称 STRING(32)
+ */ + public static final String CHANNEL_NAME = "CHANNEL_NAME"; + /** + * 当前推送文件名称 STRING(32)
+ */ + public static final String FC_FILE_PUSH_NAME = "FC_FILE_PUSH_NAME"; + /** + * 文件类型 STRING(32)
+ */ + public static final String FILE_TYPE = "FILE_TYPE"; + /** + * 文件名称 STRING(32)
+ */ + public static final String FILE_NAME = "FILE_NAME"; + /** + * 文件路径 STRING(32)
+ */ + public static final String FILE_PATH = "FILE_PATH"; + /** + * 文件状态 STRING(32)
+ */ + public static final String FILE_STS = "FILE_STS"; + /** + * 文件状态描述 STRING(32)
+ */ + public static final String FILE_STS_DESC = "FILE_STS_DESC"; + /** + * 包含订单数量 STRING(32)
+ */ + public static final String ORDER_COUNT = "ORDER_COUNT"; + /** + * 创建时间 STRING(32)
+ */ + public static final String CREATE_TIME = "CREATE_TIME"; + /** + * 修改时间 STRING(32)
+ */ + public static final String UPDATE_TIME = "UPDATE_TIME"; + + +} \ No newline at end of file diff --git a/src_jbo/jbo/oti/FC_REQUEST_FILE.java b/src_jbo/jbo/oti/FC_REQUEST_FILE.java index f738d3526..8656cc746 100644 --- a/src_jbo/jbo/oti/FC_REQUEST_FILE.java +++ b/src_jbo/jbo/oti/FC_REQUEST_FILE.java @@ -41,6 +41,10 @@ public interface FC_REQUEST_FILE{ * 资方:文件类型:JPG,PNG,FDP等 STRING(32)
*/ public static final String FC_FILE_TYPE = "FC_FILE_TYPE"; + /** + * 资方:文件类型:JPG,PNG,FDP等 STRING(32)
+ */ + public static final String FILE_TYPE = "FILE_TYPE"; /** * 文件名称 STRING(32)
*/ diff --git a/src_jbo/jbo/oti/FC_REQUEST_FILE_PUSH.java b/src_jbo/jbo/oti/FC_REQUEST_FILE_PUSH.java deleted file mode 100644 index 63f9fc409..000000000 --- a/src_jbo/jbo/oti/FC_REQUEST_FILE_PUSH.java +++ /dev/null @@ -1,43 +0,0 @@ -package jbo.oti; - -/** -* 接口资料表 - JBO命名常量类

-* Note: This file is generated by ADE tools, dont modify it.
- -*/ -public interface FC_REQUEST_FILE_PUSH { - /** - * 接口资料表

- * 代表本类映射的BizObjectClass - */ - public static final String CLASS_NAME = "jbo.oti.FC_REQUEST_FILE_PUSH"; - /** - * 唯一标识 STRING(32)
- */ - public static final String ID = "ID"; - /** - * 资金渠道申请ID STRING(32)
- */ - public static final String FC_REQUEST_ID = "FC_REQUEST_ID"; - /** - * 文件状态 STRING(32)
- */ - public static final String FC_FILE_STS = "PUSH_STS"; - /** - * 文件状态描述 STRING(32)
- */ - public static final String FC_FILE_STS_DESC = "PUSH_STS_DESC"; - /** - * 创建时间 STRING(32)
- */ - public static final String CREATE_TIME = "CREATE_TIME"; - /** - * 修改时间 STRING(32)
- */ - public static final String UPDATE_TIME = "UPDATE_TIME"; - /** - * 有效标志 STRING(32)
- */ - public static final String DEL_FLAG = "DEL_FLAG"; - -} \ No newline at end of file diff --git a/src_jbo/jbo/oti/FC_YC_FILE_REPAY_PLAN.java b/src_jbo/jbo/oti/FC_YC_FILE_REPAY_PLAN.java new file mode 100644 index 000000000..9658ac934 --- /dev/null +++ b/src_jbo/jbo/oti/FC_YC_FILE_REPAY_PLAN.java @@ -0,0 +1,59 @@ +package jbo.oti; + +/** +* 接口资料表 - JBO命名常量类

+* Note: This file is generated by ADE tools, dont modify it.
+ +*/ +public interface FC_YC_FILE_REPAY_PLAN { + /** + * 接口资料表

+ * 代表本类映射的BizObjectClass + */ + public static final String CLASS_NAME = "jbo.oti.FC_YC_FILE_REPAY_PLAN"; + /** + * 唯一标识 STRING(32)
+ */ + public static final String ID = "ID"; + /** + * 文件ID STRING(32)
+ */ + public static final String FC_FILE_ID = "FC_FILE_ID"; + /** + * 资金渠道申请ID STRING(32)
+ */ + public static final String FC_REQUEST_ID = "FC_REQUEST_ID"; + /** + * 放款请求编号 STRING(32)
+ */ + public static final String LOAN_NO = "LOAN_NO"; + /** + * 期次 STRING(32)
+ */ + public static final String LEND_TERM = "LEND_TERM"; + /** + * 还款日期 STRING(32)
+ */ + public static final String ANS_REPAYMENT_DATE = "ANS_REPAYMENT_DATE"; + /** + * 本金 STRING(32)
+ */ + public static final String ANS_PRINCIPAL = "ANS_PRINCIPAL"; + /** + * 利息 STRING(32)
+ */ + public static final String ANS_INTEREST = "ANS_INTEREST"; + /** + * 租金 STRING(32)
+ */ + public static final String ANS_REPAYMENT_MONEY = "ANS_REPAYMENT_MONEY"; + /** + * 创建时间 STRING(32)
+ */ + public static final String CREATE_TIME = "CREATE_TIME"; + /** + * 修改时间 STRING(32)
+ */ + public static final String UPDATE_TIME = "UPDATE_TIME"; + +} \ No newline at end of file diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/CorpusSourceRentPlanCopy.java b/src_tenwa/com/tenwa/lease/app/quartzmession/CorpusSourceRentPlanCopy.java new file mode 100644 index 000000000..7af754607 --- /dev/null +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/CorpusSourceRentPlanCopy.java @@ -0,0 +1,213 @@ +package com.tenwa.lease.app.quartzmession; + +import com.amarsoft.are.jbo.*; +import com.amarsoft.are.util.StringFunction; +import com.amarsoft.awe.util.ASResultSet; +import com.amarsoft.awe.util.SqlObject; +import com.amarsoft.awe.util.Transaction; +import com.base.util.QuartzUtil; +import com.tenwa.reckon.executor.CreateTransactionExecutor; +import jbo.app.tenwa.calc.LC_CALC_CONDITION; +import jbo.app.tenwa.calc.LC_RENT_PLAN; +import jbo.oti.FC_FILE_PUSH; +import jbo.oti.FC_YC_FILE_REPAY_PLAN; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +import java.math.BigDecimal; +import java.sql.SQLException; + +import java.text.ParseException; +import java.text.SimpleDateFormat; + +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import static java.math.BigDecimal.ROUND_HALF_UP; + +/** + * 资方租金计划拷贝 + */ +public class CorpusSourceRentPlanCopy implements Job { + + Set contractSet = null; + JBOTransaction tx = null; + Transaction Sqlca = null; + { + try { + tx = JBOFactory.createJBOTransaction(); + Sqlca = Transaction.createTransaction(tx); + } catch (JBOException e) { + e.printStackTrace(); + try { + if (Sqlca != null) { + Sqlca.rollback(); + } + } catch (JBOException e1) { + e1.printStackTrace(); + } + } + } + + + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + String startime = StringFunction.getTodayNow(); + Object userId = jobExecutionContext.getTrigger().getJobDataMap().get("CurUserId"); + String curUserId = userId == null? "system" : userId.toString(); + + BizObjectManager ffpBom = null; + BizObjectManager fyfrpBom = null; + try { + ffpBom = JBOFactory.getBizObjectManager(FC_FILE_PUSH.CLASS_NAME,tx); + fyfrpBom = JBOFactory.getBizObjectManager(FC_YC_FILE_REPAY_PLAN.CLASS_NAME,tx); + //todo 添加渠道商的选择,哪些需要拷表哪些不需要 + List ffpBoList = ffpBom.createQuery("select ID,FILE_STS from O where FILE_STS='2'").getResultList(true); + for(BizObject ffpBo : ffpBoList){ + String fcFileId = ffpBo.getAttribute("ID").toString(); + //更新租金计划租金信息,并获取每个文件的contract_id + String sql = "select fr.CONTRACT_ID,O.LEND_TERM,O.ANS_REPAYMENT_DATE,O.ANS_PRINCIPAL,O.ANS_INTEREST,ANS_REPAYMENT_MONEY from O left join jbo.oti.FC_REQUEST fr on O.FC_REQUEST_ID=fr.ID where fr.DEL_FLAG='0' and O.FC_FILE_ID=:fcFileId"; + List fyfrpBoList = fyfrpBom.createQuery(sql).setParameter("fcFileId",fcFileId).getResultList(false); + contractSet = this.updateRentPlan(fyfrpBoList); + //更新租金计划剩余本金 + updateAllRemainCorpus(); + //更新租金计划分润信息 + updateSplitSP(); + ffpBo.setAttributeValue("FILE_STS","3"); + ffpBo.setAttributeValue("FILE_STS_DESC","拷贝成功"); + ffpBom.saveObject(ffpBo); + } + + Sqlca.commit(); + QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.CorpusSourceRentPlanCopy", "success", "成功", curUserId); + } catch (Exception e) { + e.printStackTrace(); + QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.CorpusSourceRentPlanCopy", "error", "失败", curUserId); + try { + if (Sqlca != null) { + Sqlca.rollback(); + } + } catch (JBOException e1) { + e1.printStackTrace(); + } + throw new JobExecutionException(e); + } + } + + /** + * 租金计划拷贝 + * @param fyfrpBoList 每个回执文件包含的租金计划信息 + * @return 每个回执文件包含的contract_id + * @throws JBOException + * @throws ParseException + */ + public Set updateRentPlan(List fyfrpBoList) throws JBOException, ParseException { + BizObjectManager lrpBom = null; + lrpBom = JBOFactory.getBizObjectManager(LC_RENT_PLAN.CLASS_NAME,tx); + contractSet = new HashSet<>(); + //更新租金计划表 + for(BizObject bo : fyfrpBoList){ + //获取参数 + String contractId = bo.getAttribute("CONTRACT_ID").toString(); + String lendTerm = bo.getAttribute("LEND_TERM").toString(); + String principal = bo.getAttribute("ANS_PRINCIPAL").toString(); + String interest = bo.getAttribute("ANS_INTEREST").toString(); + String repaymentMoney = bo.getAttribute("ANS_REPAYMENT_MONEY").toString(); + String repaymentDate = bo.getAttribute("ANS_REPAYMENT_DATE").toString(); + //转换日期格式 + Date date = new SimpleDateFormat("yyyyMMdd").parse(repaymentDate); + repaymentDate = new SimpleDateFormat("yyyy/MM/dd").format(date); + //更新租金计划表 + BizObject lrpBo = lrpBom.createQuery("CONTRACT_ID=:contractId and PLAN_LIST=:lendTerm").setParameter("contractId",contractId).setParameter("lendTerm",lendTerm).getSingleResult(true); + lrpBo.setAttributeValue("RENT",repaymentMoney); + lrpBo.setAttributeValue("CORPUS",principal); + lrpBo.setAttributeValue("INTEREST",interest); + lrpBo.setAttributeValue("CORPUS_BUSINESS",principal); + lrpBo.setAttributeValue("INTEREST_BUSINESS",interest); + lrpBo.setAttributeValue("PLAN_DATE",repaymentDate); + lrpBo.setAttributeValue("RENT",repaymentMoney); + lrpBom.saveObject(lrpBo); + //放进set去重 + contractSet.add(contractId); + } + return contractSet; + } + + /** + * 更新剩余本金信息 + * @throws JBOException + */ + public void updateAllRemainCorpus() throws JBOException { + BizObjectManager lrpBom = null; + lrpBom = JBOFactory.getBizObjectManager(LC_RENT_PLAN.CLASS_NAME,tx); + BizObjectManager lccBom = null; + lccBom = JBOFactory.getBizObjectManager(LC_CALC_CONDITION.CLASS_NAME,tx); + //根据contractId遍历循环来更新租金计划表中剩余本金字段 + for(String contractId : contractSet){ + BizObject lccBo = lccBom.createQuery("select CLEAN_LEASE_MONEY from O where contract_id=:contractId").setParameter("contractId",contractId).getSingleResult(false); + String clean_lease_money = lccBo.getAttribute("CLEAN_LEASE_MONEY").toString(); + BigDecimal cleanLeaseMoneyBd = new BigDecimal(clean_lease_money); + List lrpBos= lrpBom.createQuery("contract_id=:contractId order by plan_list").setParameter("contractId",contractId).getResultList(true); + for(BizObject bo :lrpBos){ + String corpus = bo.getAttribute("corpus").toString(); + BigDecimal corpusBd = new BigDecimal(corpus); + cleanLeaseMoneyBd = cleanLeaseMoneyBd.subtract(corpusBd).setScale(2,ROUND_HALF_UP); + bo.setAttributeValue("ALL_REMAIN_CORPUS",cleanLeaseMoneyBd.toString()); + lrpBom.saveObject(bo); + } + + } + } + + /** + * 更新分润信息 + * @throws Exception + */ + public void updateSplitSP() throws Exception { + + for(String contractId : contractSet) { + String sql = "select lci.product_id,lci.distributor_id,lcc.payment_number from lb_contract_info lci left join lc_calc_condition lcc on lci.id=lcc.contract_id where lci.id='" + contractId + "'"; + SqlObject sqlBo = null; + String productId = null; + String distributorId = null; + String paymentNumber = null; + ASResultSet rs = null; + try { + sqlBo = new SqlObject(sql); + rs = Sqlca.getASResultSet(sqlBo); + if ( rs.next() ) { + productId = rs.getString( "product_id" ); + distributorId = rs.getString( "distributor_id" ); + paymentNumber = rs.getString( "payment_number" ); + String splitType = Sqlca.getString("select attribute5 from business_type where typeno = '" + productId + "'"); + String splittingRatio = Sqlca.getString("select splitting_ratio from lb_splitting_ratio where distributor_id='" + distributorId + "' and product_id='" + productId + "'"); + if (!"".equals(splittingRatio) && splittingRatio != null) { + CreateTransactionExecutor cre = new CreateTransactionExecutor(); + cre.setPlannumber(paymentNumber); + cre.insertRentPlan_SP(splittingRatio, Sqlca, splitType); + } + } + + } catch (SQLException throwables) { + throwables.printStackTrace(); + }finally { + rs.close(); + } + + } + } + + + public Set getContractSet() { + return contractSet; + } + + public void setContractSet(Set contractSet) { + this.contractSet = contractSet; + } + +}