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;
+ }
+
+}