Browse Source

报价详情

tanmh 5 years ago
parent
commit
cf5734bdf3

+ 897 - 484
src/main/java/com/uas/erp/schedular/finance/task/B2BInformation.java

@@ -1,484 +1,897 @@
-package com.uas.erp.schedular.finance.task;
-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.Locale;
-import java.util.Map;
-import java.util.Set;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.uas.erp.schedular.entity.Master;
-import com.uas.erp.schedular.task.support.Method;
-import com.usoft.fin.external.open.api.entity.CapitalSideLoan;
-import com.usoft.fin.external.open.api.entity.FinanceOfferListOrBuilder;
-import com.usoft.fin.external.open.api.entity.OfferQuotaInfoRest;
-import com.usoft.fin.external.open.api.protobuf.*;
-import com.usoft.sdk.fin.client.CapitalSideSdk;
-import com.usoft.sdk.fin.client.TradingHallSdk;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.tomcat.util.descriptor.web.ContextHandler;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import com.uas.erp.schedular.task.support.Role;
-import com.uas.erp.schedular.task.support.TaskMapping;
-import com.uas.erp.schedular.util.CollectionUtil;
-import com.uas.erp.schedular.util.ContextHolder;
-import com.usoft.fin.external.open.api.entity.AcceptOfferDetail;
-import com.usoft.fin.external.open.api.entity.CompanyBasicInfosByErmRest;
-import com.usoft.fin.external.open.api.entity.CompanyEnterpriseCrawlerListFinRest;
-import com.usoft.fin.external.open.api.entity.CompanyIndustryAndCommerceInfoRest;
-import com.usoft.fin.external.open.api.entity.CompanyLawInfoFinRest;
-import com.usoft.fin.external.open.api.entity.FinanceOfferDetails;
-import com.usoft.fin.external.open.api.entity.OfferDetailAndFinanceAccept;
-import com.usoft.fin.external.open.api.entity.OpenCapitalSideLoanOther;
-import com.usoft.fin.external.open.api.entity.OpenCapitalSideRepaymentPlanOther;
-import com.usoft.fin.external.open.api.entity.RestBaseInfo;
-import com.usoft.fin.external.open.api.protobuf.GetCapitalSideLoanReq;
-import com.usoft.fin.external.open.api.protobuf.GetCapitalSideLoanResp;
-import com.usoft.fin.external.open.api.protobuf.GetFinanceOfferDetailsReq;
-import com.usoft.fin.external.open.api.protobuf.GetFinanceOfferDetailsResp;
-import com.usoft.fin.external.open.api.protobuf.GetFinanceOfferListReq;
-import com.usoft.fin.external.open.api.protobuf.GetFinanceOfferListResp;
-import com.usoft.fin.external.open.api.protobuf.GetOfferQuotaInfoListReq;
-import com.usoft.fin.external.open.api.protobuf.GetOfferQuotaInfoListResp;
-import com.usoft.sdk.fin.utils.ProtoBufUtil;
-
-@Component
-@TaskMapping(title = "U智融对接服务", role = Role.SELLER)
-public class B2BInformation  extends AbstractTask{
-	private CapitalSideSdk capitalSideSdk = new CapitalSideSdk("https://finrest.uuzcc.cn", "10050877", "b78d577449b64f56a8a6cf1feeb3fbf5");
-	private TradingHallSdk tradingHallSdk = new TradingHallSdk("https://finrest.uuzcc.cn", "10050877", "b78d577449b64f56a8a6cf1feeb3fbf5");
-	/**
-     * 额度申请
-     * @throws Exception
-     */
-	@TaskMapping(title = "额度申请下载", fixedDelay = 30000, method = Method.DOWNLOAD)
-    public void getOfferQuotaInfoList() throws Exception {
-		List<String> sqls = new ArrayList<>();
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-		Calendar beforeTime = Calendar.getInstance();
-		beforeTime.add(Calendar.MINUTE, -7);// 7分钟之前的时间
-		Date beforeD = beforeTime.getTime();
-    	GetOfferQuotaInfoListReq.Builder req = GetOfferQuotaInfoListReq.newBuilder();
-    	req.setCsEnuu(10042875);
-		req.setPageNumber(1);
-		req.setPageSize(50);
-		req.setUpdateTime(beforeD.getTime());//获取最近7分钟更新的单据列表
-		GetOfferQuotaInfoListResp resp = capitalSideSdk.getOfferQuotaInfoList(req);
-		java.util.List<OfferQuotaInfoRest> restlist = resp.getOfferQuoteInfoList();
-		List<Map<String, Object>> enUUList = new ArrayList<>();
-		for(OfferQuotaInfoRest rest : restlist) {
-			Map<String, Object> enMap = new HashMap<>();
-			if (rest.getFsEnuu() > 0) {
-//				System.out.println("CQ_CODE:" + rest.getCode() + ",STATUS:" + rest.getStatus() +
-//						",rest.getCsEnName():" + rest.getCsEnName() + "(" + rest.getCsEnuu() + ")" +
-//						",rest.getFsEnName():" + rest.getFsEnName() + "(" + rest.getFsEnuu() + ")");
-				sqls.add("MERGE INTO CUSTOMERQUOTA INERP " +
-						"	USING ( SELECT nvl(MAX(CQ_ID),-1) CQ_ID," +
-						"	MAX((select MAX(CU_CODE) from CUSTOMERINFOR WHERE CU_STATUSCODE <> 'DISABLE' AND NVL(CU_ENUU,0) = "+rest.getFsEnuu()+" )) CU_CODE " +
-						"	FROM CustomerQuota WHERE CQ_CODE = '" + rest.getCode() + "' ) ONERP " +
-						"	ON (INERP.CQ_ID = ONERP.CQ_ID) " +
-						"	WHEN MATCHED THEN " +
-						"	UPDATE SET INERP.CQ_UPDATEDATE = SYSDATE,INERP.CQ_UPLOADSTATUS='已上传',INERP.CQ_QUOTATYPE='卖方客户'," +
-						"	INERP.CQ_CUSTCODE = ONERP.CU_CODE," +
-						"	INERP.CQ_CUSTUU = " + rest.getFsEnuu() + ",INERP.CQ_CUSTNAME='" + rest.getFsEnName() + "'," +
-						"	INERP.CQ_APPLYQUOTA=" + rest.getQuotaAmount() + ",INERP.CQ_EFFECTDAYS=" + rest.getCredDays() + ",INERP.CQ_LENDRATE=" + rest.getFinanceRate() + "," +
-						"	INERP.CQ_ANNUALRATE=" + rest.getOfferRate() + ",INERP.CQ_REPAYMENTMEANS='" + rest.getRepayment() + "'," +
-						"	INERP.CQ_AUDITDATE = TO_DATE('" + rest.getCheckerTime() + "','YYYY-MM-DD hh24:mi:ss')," +
-						"	INERP.CQ_STATUSCODE='" + (rest.getStatus() == 1402 ? "AUDITED" : "ENTERING") + "'," +
-						"	INERP.CQ_STATUS='" + (rest.getStatus() == 1402 ? "已审核" : "在录入") + "'," +
-						"	INERP.CQ_BASICEVALUATION='" + rest.getCheckerContent() + "'" +
-						"	WHEN NOT MATCHED THEN " +
-						"	INSERT (CQ_ID,CQ_UPLOADSTATUS,CQ_SOURCETYPE,CQ_QUOTATYPE,CQ_UPDATEDATE,CQ_CODE,CQ_FACTORUU,CQ_FACTORNAME,CQ_CUSTCODE,CQ_CUSTUU,CQ_CUSTNAME," +
-						"	CQ_APPLYQUOTA,CQ_EFFECTDAYS,CQ_LENDRATE,CQ_ANNUALRATE,CQ_REPAYMENTMEANS," +
-						"	CQ_INDATE,CQ_RECORDER,CQ_RECORDERUU,CQ_AUDITDATE," +
-						"	CQ_STATUSCODE,CQ_STATUS,CQ_BASICEVALUATION)" +
-						"	VALUES(CUSTOMERQUOTA_SEQ.NEXTVAL,'已上传','B2B','卖方客户',SYSDATE,'" + rest.getCode() + "'," + rest.getCsEnuu() + ",'" + rest.getCsEnName() + "',ONERP.CU_CODE," + rest.getFsEnuu() + ",'" + rest.getFsEnName() + "'," +
-						"	" + rest.getQuotaAmount() + "," + rest.getCredDays() + "," + rest.getFinanceRate() + "," + rest.getOfferRate() + ",'" + rest.getRepayment() + "'," +
-						"	TO_DATE('" + rest.getApplyTime() + "','YYYY-MM-DD hh24:mi:ss'),'" + rest.getApplyUsername() + "'," + rest.getApplyUu() + ",TO_DATE('" + rest.getCheckerTime() + "','YYYY-MM-DD hh24:mi:ss')," +
-						"	'" + (rest.getStatus() == 1402 ? "AUDITED" : "ENTERING") + "','" + (rest.getStatus() == 1402 ? "已审核" : "在录入") + "','" + rest.getCheckerContent() + "')");
-				enMap.put("CQ_CUSTUU", rest.getFsEnuu());
-				enMap.put("CQ_FACTORUU", rest.getCsEnuu());
-				enMap.put("CQ_RECORDERUU", rest.getApplyUu());
-				if (!enUUList.contains(enMap)) {
-					enUUList.add(enMap);
-				}
-			}
-		}
-        //System.out.println(sqls);
-		jdbcTemplate.batchExecute(sqls);
-		//下载或更新客户信息
-		if(enUUList.size()>0){
-			getCustInfomation(enUUList);
-		}
-    }
-
-	/**
-	 * 客户信息下载
-	 * @param enUUList
-	 * @throws Exception
-	 */
-	public void getCustInfomation(List<Map<String, Object>> enUUList) throws Exception {
-		List<String> sqls = new ArrayList<>();
-		for(Map<String, Object> enMap : enUUList){
-			int facUU = enMap.get("CQ_FACTORUU") ==null ? 10042875 :Integer.valueOf(enMap.get("CQ_FACTORUU").toString());//资金方UU
-			int custUU = Integer.valueOf(enMap.get("CQ_CUSTUU").toString());//融资方UU--客户
-			int userUU = enMap.get("CQ_RECORDERUU") ==null ? 0 :Integer.valueOf(enMap.get("CQ_RECORDERUU").toString());//操作人UU
-//			System.out.println("facUU:"+facUU);
-//			System.out.println("custUU:"+custUU);
-			GetEnterpriseExtensionInfoReq.Builder entExtReq = GetEnterpriseExtensionInfoReq.newBuilder();
-			entExtReq.setEnuu(custUU);
-			//客户基本信息 CompanyBasicInfosByErmRest
-			GetEnterpriseExtensionInfoResp entExtInfoResp = tradingHallSdk.getEnterpriseExtensionInfo(entExtReq);
-			CompanyBasicInfosByErmRest compBaseInfoByErmRest = entExtInfoResp.getCompanyBasicInfo();
-			if(compBaseInfoByErmRest.getEnName()==null||compBaseInfoByErmRest.getEnName().equals("")){
-				break;
-			}
-//			System.out.println("客户基本信息: "+ProtoBufUtil.toJSON(compBaseInfoByErmRest));
-//			System.out.println("获取客户UU:"+compBaseInfoByErmRest.getEnuu());
-			//扩展信息 CompanyIndustryAndCommerceInfoRest
-			CompanyEnterpriseCrawlerListFinRest entCrawLFRest = entExtInfoResp.getCompanyEnterpriseCrawlerList();
-			CompanyIndustryAndCommerceInfoRest compIndusAndCommInforRest = entCrawLFRest.getCompanyIndustryAndCommerceInfo();
-			//System.out.println("扩展信息:"+ProtoBufUtil.toJSON(entCrawLFRest));
-			//企业简介 员工人数 CompanyIndustryAndCommerceInfoRest.CompanyLawInfoFinRest enIntro insuredNumberOfPeople
-			CompanyLawInfoFinRest compLawInfoRest = entCrawLFRest.getCompanyLawInfo();
-			//企业 融资方信息 RestBaseInfo
-			GetBaseInfoReq.Builder req = GetBaseInfoReq.newBuilder();
-			//资金方UU  为空或为0默认保理
-			req.setCsEnuu(facUU);
-			//融资方UU
-			req.setEnuu(custUU);
-			//操作人UU 为空就为0
-			req.setUu(userUU);
-			GetBaseInfoResp restBaseInfoResp = tradingHallSdk.getBaseInfo(req);
-			RestBaseInfo restBaseInfo = restBaseInfoResp.getBaseInfo();
-//			System.out.println("融资方信息:"+ProtoBufUtil.toJSON(restBaseInfoResp));
-//			System.out.println("融资方信息-客户名称:"+restBaseInfo.getEnName());
-			int cuId = jdbcTemplate.getInt("SELECT NVL(MAX(CU_ID),0) FROM CUSTOMERINFOR WHERE CU_STATUSCODE <> 'DISABLE' AND CU_ENUU = ? ", custUU);
-			int detno = 1;
-			//主表
-			String cu_term = ((compBaseInfoByErmRest.getEnOpDate()==null || compBaseInfoByErmRest.getEnOpDate().equals(""))? "null" : (compBaseInfoByErmRest.getEnOpDate().contains("无固定期限")?"9999":compBaseInfoByErmRest.getEnOpDate()));
-			String cu_licensedate = (compBaseInfoByErmRest.getEnRegDate()==null||compBaseInfoByErmRest.getEnRegDate().equals("")?"null":"to_date('"+compBaseInfoByErmRest.getEnRegDate()+"','YYYY-MM-DD HH24:MI:SS')");
-			String cu_regcapital = (compBaseInfoByErmRest.getEnRegCapital() ==null || compBaseInfoByErmRest.getEnRegCapital().equals("") ? "null":compBaseInfoByErmRest.getEnRegCapital().replace("万元人民币",""));
-			String cu_paidincapital =(compIndusAndCommInforRest.getContributedCapital() ==null ||compIndusAndCommInforRest.getContributedCapital().equals("") ? "null" : compIndusAndCommInforRest.getContributedCapital().replace("万元人民币",""));
-			String cu_employeesnum = (compIndusAndCommInforRest.getInsuredNumberOfPeople() == null || compIndusAndCommInforRest.getInsuredNumberOfPeople().equals("") ? "null":compIndusAndCommInforRest.getInsuredNumberOfPeople());
-			//从表
-			if (cuId > 0) {//资料更新
-				//System.out.println("cuId:"+cuId);
-				sqls.add("UPDATE CUSTOMERQUOTA SET CQ_CUSTCODE = (SELECT CU_CODE FROM CUSTOMERINFOR WHERE CU_ID = "+cuId+") where CQ_CUSTCODE is null and CQ_CUSTUU = "+custUU);
-				sqls.add("UPDATE CUSTOMERINFOR SET " +
-						" CU_STATUS='在录入',CU_STATUSCODE='ENTERING'," +
-						" CU_UPDATEDATE=SYSDATE,CU_NAME='"+compBaseInfoByErmRest.getEnName()+"',CU_LEGALPERSON='"+compBaseInfoByErmRest.getEnLegalRepName()+"'," +
-						" CU_TERM = "+cu_term+",CU_TYPE ='"+compBaseInfoByErmRest.getEnType()+"',CU_PLAFORMLEVEL='"+restBaseInfo.getGrade()+"'," +
-						" CU_LICENSEDATE = "+cu_licensedate+",CU_PAPERSCODE='"+compBaseInfoByErmRest.getEnCodeCrawled()+"'," +
-						" CU_TAXCREDIT ='"+compIndusAndCommInforRest.getUnifiedSocialCreditCode()+"',CU_REGISTSTATUS='"+compBaseInfoByErmRest.getEnRegStatus()+"',CU_BUSINSSCOPE='"+compBaseInfoByErmRest.getEnOpRange()+"',CU_BUSINESSMAIN='"+restBaseInfo.getEnBusinessMain()+"'," +
-						" CU_CONTACT='"+restBaseInfo.getFsContactsMan()+"',CU_CONTACTNUM='"+restBaseInfo.getFsContactsPhone()+"',CU_REGCAPITAL="+cu_regcapital+",CU_PAIDINCAPITAL="+cu_paidincapital+"," +
-						" CU_REGADD='"+restBaseInfo.getFsContactsMan()+"',CU_OFFICEADD='"+restBaseInfo.getFsContactsPhone()+"',CU_INTRODUCTION='"+compLawInfoRest.getEnIntro()+"'," +
-						" CU_EMPLOYEESNUM=" +cu_employeesnum+
-						" WHERE CU_ENUU = "+custUU+" AND CU_STATUSCODE <> 'DISABLE'");
-				//从表1 高管信息 CUSTOMEREXCUTIVE
-				JSONArray enKeyPerList = JSONArray.parseArray(compBaseInfoByErmRest.getEnKeyPersonnel());
-				//System.out.println("更新高管信息:"+compBaseInfoByErmRest.getEnKeyPersonnel());
-				if(enKeyPerList!=null && enKeyPerList.size()>0){
-					for(int ei = 0;ei < enKeyPerList.size();ei++){
-						JSONObject ek = enKeyPerList.getJSONObject(ei);
-						Set<Map.Entry<String, Object>>ekKeySet = ek.entrySet();
-						if(ekKeySet!= null && ekKeySet.size()>0){
-							for(Map.Entry<String, Object> ekMap : ekKeySet){
-								sqls.add(" INSERT INTO CUSTOMEREXCUTIVE(CE_ID,CE_CUID,CE_DETNO,CE_NAME,CE_POSITION) " +
-										" SELECT CUSTOMEREXCUTIVE_seq.nextval,"+cuId+",9999,'"+ekMap.getKey()+"','"+ekMap.getValue()+"'" +
-										" FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM CUSTOMEREXCUTIVE " +
-										" WHERE CE_CUID = "+cuId+" AND CE_NAME ='"+ekMap.getKey()+"' AND CE_POSITION ='"+ekMap.getValue()+"')");
-							}
-						}
-					}
-					sqls.add("UPDATE CUSTOMEREXCUTIVE SET CE_DETNO = (select RN from (SELECT ROWNUM RN,CE_ID FROM " +
-							"	(SELECT CE_ID FROM CUSTOMEREXCUTIVE WHERE CE_CUID = "+cuId+" ORDER BY CE_DETNO ASC,CE_ID ASC)) TT where TT.CE_ID = CUSTOMEREXCUTIVE.CE_ID) " +
-							"WHERE CE_CUID = "+cuId);
-				}
-				//从表2 股东信息 CUSTOMERSHAREHOLDER
-				//System.out.println("更新股东信息:"+compBaseInfoByErmRest.getEnShareholders());
-				JSONArray enShareholdersList = JSONArray.parseArray(compBaseInfoByErmRest.getEnShareholders());
-				if(enShareholdersList!=null && enShareholdersList.size()>0) {
-					for (int i = 0; i < enShareholdersList.size(); i++) {
-						JSONObject enShareholders = enShareholdersList.getJSONObject(i);
-						Object cs_payableamount = ((enShareholders.get("认缴出资额(万元)")  == null || enShareholders.get("认缴出资额(万元)").equals("-")) ? "null" : enShareholders.get("认缴出资额(万元)") );
-						Object cs_investratio =	(enShareholders.getString("持股比例") == null ? 0 :enShareholders.getString("持股比例").replace("%",""));
-						Object cs_investdate = (enShareholders.getDate("认缴出资日期") == null ? "null" :"to_date('"+ new SimpleDateFormat("yyyy-MM-dd").format(enShareholders.getDate("认缴出资日期"))+"','yyyy-mm-dd')");
-						sqls.add(" MERGE INTO CUSTOMERSHAREHOLDER INHOLDER " +
-								" USING (SELECT NVL(MAX(CS_ID),0) CS_ID FROM CUSTOMERSHAREHOLDER WHERE CS_CUID = "+cuId+" AND CS_NAME = '"+enShareholders.get("股东")+"') ONHOLDER " +
-								" ON (INHOLDER.CS_ID = ONHOLDER.CS_ID) " +
-								" WHEN MATCHED THEN " +
-								" UPDATE SET CS_DETNO = 9999, INHOLDER.CS_PAYABLEAMOUNT="+cs_payableamount+",INHOLDER.CS_INVESTRATIO="+cs_investratio+",INHOLDER.CS_INVESTDATE="+cs_investdate+" " +
-								" WHEN NOT MATCHED THEN " +
-								" INSERT (INHOLDER.CS_ID,INHOLDER.CS_CUID,INHOLDER.CS_DETNO,INHOLDER.CS_NAME,INHOLDER.CS_PAYABLEAMOUNT,INHOLDER.CS_INVESTRATIO,INHOLDER.CS_INVESTDATE) " +
-								" VALUES(CUSTOMERSHAREHOLDER_SEQ.NEXTVAL,"+cuId+",9999,'"+enShareholders.get("股东")+"',"+cs_payableamount+","+cs_investratio+","+cs_investdate+")");
-//					System.out.println(" MERGE INTO CUSTOMERSHAREHOLDER INHOLDER " +
-//							" USING (SELECT NVL(MAX(CS_ID),0) CS_ID FROM CUSTOMERSHAREHOLDER WHERE CS_CUID = "+cuId+" AND CS_NAME = '"+enShareholders.get("股东")+"') ONHOLDER " +
-//							" ON (INHOLDER.CS_ID = ONHOLDER.CS_ID) " +
-//							" WHEN MATCHED THEN " +
-//							" UPDATE SET CS_DETNO = 9999, INHOLDER.CS_PAYABLEAMOUNT="+cs_payableamount+",INHOLDER.CS_INVESTRATIO="+cs_investratio+",INHOLDER.CS_INVESTDATE="+cs_investdate+" " +
-//							" WHEN NOT MATCHED THEN " +
-//							" INSERT (INHOLDER.CS_ID,INHOLDER.CS_CUID,INHOLDER.CS_DETNO,INHOLDER.CS_NAME,INHOLDER.CS_PAYABLEAMOUNT,INHOLDER.CS_INVESTRATIO,INHOLDER.CS_INVESTDATE) " +
-//							" VALUES(CUSTOMERSHAREHOLDER_SEQ.NEXTVAL,"+cuId+",9999,'"+enShareholders.get("股东")+"',"+cs_payableamount+","+cs_investratio+","+cs_investdate+");");
-					}
-					sqls.add("UPDATE CUSTOMERSHAREHOLDER SET CS_DETNO = (select RN from (SELECT ROWNUM RN,CS_ID FROM " +
-							"	(SELECT CS_ID FROM CUSTOMERSHAREHOLDER WHERE CS_CUID = "+cuId+" ORDER BY CS_DETNO ASC,CS_ID ASC)) TT where TT.CS_ID = CUSTOMERSHAREHOLDER.CS_ID) " +
-							"WHERE CS_CUID = "+cuId);
-				}
-				//从表4 变更说明 FSCHANGESINSTRUCTION
-				//System.out.println("更新变更说明:"+compBaseInfoByErmRest.getEnChangingRecords());
-				JSONObject enChangingRecords = JSONObject.parseObject(compBaseInfoByErmRest.getEnChangingRecords());
-				if(enChangingRecords!=null&&enChangingRecords.size()>0&&enChangingRecords.getString("变更内容列表") != null){
-					JSONArray enChangingRecordList = JSONArray.parseArray(enChangingRecords.getString("变更内容列表"));
-					if(enChangingRecordList!=null && enChangingRecordList.size()>0) {
-						sqls.add("DELETE FSCHANGESINSTRUCTION WHERE CS_CUID = "+cuId);
-						for (int i = 0; i < enChangingRecordList.size(); i++) {
-							JSONObject enChangingRecord = enChangingRecordList.getJSONObject(i);
-							Set<Map.Entry<String, Object>> changKey = enChangingRecord.entrySet();
-							for(Map.Entry<String, Object> ckMap : changKey){
-								String cd_type = ckMap.getKey();
-								if(ckMap.getValue()!=null){
-									JSONArray recordByDateList = JSONArray.parseArray(ckMap.getValue().toString());
-									if(recordByDateList != null && recordByDateList.size() > 0) {
-										for (int j = 0; j < recordByDateList.size(); j++) {
-											JSONObject recordByDate = recordByDateList.getJSONObject(j);
-											Set<Map.Entry<String, Object>> recordByDateKey = recordByDate.entrySet();
-											for(Map.Entry<String, Object> cbdMap : recordByDateKey){
-												if(cbdMap.getKey()!=null){
-													String cs_date = "to_date('"+ cbdMap.getKey()+"','yyyy-mm-dd')";
-													JSONObject cbdRecord = JSONObject.parseObject(cbdMap.getValue().toString());
-													//BEFORE
-													StringBuffer beforeStr = new StringBuffer();
-													JSONArray beforeList = JSONArray.parseArray(cbdRecord.getString("before"));
-													Object[] bRecordArr = beforeList.toArray();
-													for(int bi = 0 ; bi < bRecordArr.length; bi++){
-														if(bRecordArr[bi] != null){
-															beforeStr.append(bRecordArr[bi]);
-														}
-													}
-													//AFTER
-													StringBuffer afterStr = new StringBuffer();
-													JSONArray afterList = JSONArray.parseArray(cbdRecord.getString("after"));
-													Object[] aRecordArr = afterList.toArray();
-													for(int ai = 0 ; ai < aRecordArr.length; ai++){
-														if(aRecordArr[ai] != null){
-															afterStr.append(aRecordArr[ai]);
-														}
-													}
-													if(afterStr.length()>0){
-														sqls.add("INSERT INTO FSCHANGESINSTRUCTION(CS_ID,CS_CUID,CD_DETNO,cd_type,cs_date,cs_before,cs_after) " +
-																"SELECT FSCHANGESINSTRUCTION_SEQ.NEXTVAL,"+cuId+","+(detno++)+",'"+cd_type+"',"+cs_date+",'"+beforeStr.toString()+"','"+afterStr.toString()+"'" +
-																"FROM DUAL WHERE NOT EXISTS(SELECT 1 FROM FSCHANGESINSTRUCTION " +
-																"WHERE CS_CUID = "+cuId+" AND cd_type = '"+cd_type+"' AND cs_date = "+cs_date+" AND cs_before = '"+beforeStr.toString()+"' AND cs_after = '"+afterStr.toString()+"')");
-													}
-												}
-											}
-										}
-									}
-								}
-							}
-						}
-					}
-				}
-			} else {//新增在录入
-				//客户资料主表 CUSTOMERINFOR
-				cuId = jdbcTemplate.generate("CUSTOMERINFOR_SEQ");
-				String cuCode = (compBaseInfoByErmRest.getCode() ==null || compBaseInfoByErmRest.getCode().equals("") )? jdbcTemplate.generateCode("Customer!Infor", 2):compBaseInfoByErmRest.getCode();
-				detno = 1;
-				//System.out.println("enuu:"+compBaseInfoByErmRest.getEnuu()+",cuCode:"+cuCode);
-				sqls.add("INSERT INTO CUSTOMERINFOR(CU_ID,CU_CODE,CU_ENUU,CU_STATUS,CU_STATUSCODE,CU_UPDATEDATE,CU_NAME,CU_LEGALPERSON," +
-						"CU_TERM,CU_TYPE,CU_PLAFORMLEVEL,CU_LICENSEDATE,CU_PAPERSCODE," +
-						"CU_TAXCREDIT,CU_REGISTSTATUS,CU_BUSINSSCOPE,CU_BUSINESSMAIN," +
-						"CU_CONTACT,CU_CONTACTNUM,CU_REGCAPITAL,CU_PAIDINCAPITAL," +
-						"CU_REGADD,CU_OFFICEADD,CU_INTRODUCTION,CU_EMPLOYEESNUM" +
-						") VALUES ("+cuId+",'"+cuCode+"',"+compBaseInfoByErmRest.getEnuu()+",'在录入','ENTERING',SYSDATE,'"+compBaseInfoByErmRest.getEnName()+"','"+compBaseInfoByErmRest.getEnLegalRepName()+"',"
-						+cu_term+","+"'"+compBaseInfoByErmRest.getEnType()+"','"+restBaseInfo.getGrade()+"'," +cu_licensedate+",'"+compBaseInfoByErmRest.getEnCodeCrawled()+"',"+
-						"'"+compIndusAndCommInforRest.getUnifiedSocialCreditCode()+"','"+compBaseInfoByErmRest.getEnRegStatus()+"','"+compBaseInfoByErmRest.getEnOpRange()+"','"+restBaseInfo.getEnBusinessMain()+"',"+
-						"'"+restBaseInfo.getFsContactsMan()+"','"+restBaseInfo.getFsContactsPhone()+"',"+cu_regcapital+","+cu_paidincapital+",'"
-						+compBaseInfoByErmRest.getEnRegLocation()+"','"+restBaseInfo.getEnAddress()+"','"+compLawInfoRest.getEnIntro()+"',"+cu_employeesnum+")");
-				sqls.add("UPDATE CUSTOMERQUOTA SET cq_custcode ='"+cuCode+"' where cq_custcode is null and CQ_CUSTUU = "+custUU);
-				//从表2 高管信息 CUSTOMEREXCUTIVE
-//				高管信息-高管姓名	CUSTOMEREXCUTIVE.ce_name	enKeyPersonnel
-//				高管信息-担任职务	CUSTOMEREXCUTIVE.ce_position	enKeyPersonnel
-//enKeyPersonnel 数据格式:[{'陈亚荣': '总经理'}, {'陈正明': '执行董事'}, {'陈劲松': '监事'}]
-				JSONArray enKeyPerList = JSONArray.parseArray(compBaseInfoByErmRest.getEnKeyPersonnel());
-				//System.out.println("高管信息:"+compBaseInfoByErmRest.getEnKeyPersonnel());
-				if(enKeyPerList!=null && enKeyPerList.size()>0){
-					for(int ei = 0;ei < enKeyPerList.size();ei++){
-						JSONObject ek = enKeyPerList.getJSONObject(ei);
-						Set<Map.Entry<String, Object>>ekKeySet = ek.entrySet();
-						if(ekKeySet!= null && ekKeySet.size()>0){
-							for(Map.Entry<String, Object> ekMap : ekKeySet){
-								sqls.add("INSERT INTO CUSTOMEREXCUTIVE(CE_ID,CE_CUID,CE_DETNO,CE_NAME,CE_POSITION) VALUES " +
-										"(CUSTOMEREXCUTIVE_seq.nextval,"+cuId+","+(detno++)+",'"+ekMap.getKey()+"','"+ekMap.getValue()+"')");
-							}
-						}
-					}
-				}
-				//从表2 股东信息 CUSTOMERSHAREHOLDER
-//				股东情况-股东名称	CUSTOMERSHAREHOLDER.cs_name	enShareholders
-//				股东情况-应出资金额(万元)	CUSTOMERSHAREHOLDER.cs_payableamount	enShareholders
-//				股东情况-出资比例(%)	CUSTOMERSHAREHOLDER.cs_investratio	enShareholders
-//				股东情况-投资日期	CUSTOMERSHAREHOLDER.cs_investdate	enShareholders
-//enShareholders 数据格式:[{'股东': '深圳市瑞联软件技术合伙企业(有限合伙)', '持股比例': '80.00%', '认缴出资额(万元)': '4000', '认缴出资日期': ''}, {'股东': '钟勇斌', '持股比例': '20.00%', '认缴出资额(万元)': '1000', '认缴出资日期': ''}]
-				//System.out.println("股东信息:"+compBaseInfoByErmRest.getEnShareholders());
-				detno = 1;
-				JSONArray enShareholdersList = JSONArray.parseArray(compBaseInfoByErmRest.getEnShareholders());
-				if(enShareholdersList!=null && enShareholdersList.size()>0) {
-					for (int i = 0; i < enShareholdersList.size(); i++) {
-						JSONObject enShareholders = enShareholdersList.getJSONObject(i);
-						Object cs_payableamount = ((enShareholders.get("认缴出资额(万元)")  == null || enShareholders.get("认缴出资额(万元)").equals("-")) ? "null" : enShareholders.get("认缴出资额(万元)") );
-						Object cs_investratio =	(enShareholders.getString("持股比例") == null ? 0 :enShareholders.getString("持股比例").replace("%",""));
-						Object cs_investdate = (enShareholders.getDate("认缴出资日期") == null ? "null" :"to_date('"+ new SimpleDateFormat("yyyy-MM-dd").format(enShareholders.getDate("认缴出资日期"))+"','yyyy-mm-dd')");
-						sqls.add("INSERT INTO CUSTOMERSHAREHOLDER(CS_ID,CS_CUID,CS_DETNO,CS_NAME,CS_PAYABLEAMOUNT,CS_INVESTRATIO,CS_INVESTDATE) VALUES " +
-								"(CUSTOMERSHAREHOLDER_SEQ.NEXTVAL,"+cuId+","+(detno++)+",'"+enShareholders.get("股东")+"',"+cs_payableamount+","+cs_investratio+","+cs_investdate+")");
-					}
-				}
-				//从表4 变更说明 FSCHANGESINSTRUCTION
-//				变更说明-变更科目	FsChangesInstruction.cd_type	enChangingRecords
-//				变更说明-变更时间	FsChangesInstruction.cs_date	enChangingRecords
-//				变更说明-变更前内容	FsChangesInstruction.cs_before	enChangingRecords
-//				变更说明-变更后内容	FsChangesInstruction.cs_after	enChangingRecords
-//数据格式 {'变更次数':1,'变更内容列表':[{'名称变更(字号名称、集团名称等)':[{'2019-06-12':{'before':['深圳','优软商城','科技有限公司'],'after':['深圳','市英唐优软云','科技有限公司']},'2019-06-13':{'before':['深圳','优软商城','科技有限公司'],'after':['深圳','市英唐优软云','科技有限公司']}}]},{...},...]
-				//System.out.println("变更说明:"+compBaseInfoByErmRest.getEnChangingRecords());
-				detno = 1;
-				JSONObject enChangingRecords = JSONObject.parseObject(compBaseInfoByErmRest.getEnChangingRecords());
-				if(enChangingRecords!=null&&enChangingRecords.size()>0&&enChangingRecords.getString("变更内容列表") != null){
-					JSONArray enChangingRecordList = JSONArray.parseArray(enChangingRecords.getString("变更内容列表"));
-					if(enChangingRecordList!=null && enChangingRecordList.size()>0) {
-						for (int i = 0; i < enChangingRecordList.size(); i++) {
-							JSONObject enChangingRecord = enChangingRecordList.getJSONObject(i);
-							Set<Map.Entry<String, Object>> changKey = enChangingRecord.entrySet();
-							for(Map.Entry<String, Object> ckMap : changKey){
-								String cd_type = ckMap.getKey();
-								if(ckMap.getValue()!=null){
-									JSONArray recordByDateList = JSONArray.parseArray(ckMap.getValue().toString());
-									if(recordByDateList != null && recordByDateList.size() > 0) {
-										for (int j = 0; j < recordByDateList.size(); j++) {
-											JSONObject recordByDate = recordByDateList.getJSONObject(j);
-											Set<Map.Entry<String, Object>> recordByDateKey = recordByDate.entrySet();
-											for(Map.Entry<String, Object> cbdMap : recordByDateKey){
-												if(cbdMap.getKey()!=null){
-													String cs_date = "to_date('"+ cbdMap.getKey()+"','yyyy-mm-dd')";
-													JSONObject cbdRecord = JSONObject.parseObject(cbdMap.getValue().toString());
-													//BEFORE
-													StringBuffer beforeStr = new StringBuffer();
-													JSONArray beforeList = JSONArray.parseArray(cbdRecord.getString("before"));
-													Object[] bRecordArr = beforeList.toArray();
-													for(int bi = 0 ; bi < bRecordArr.length; bi++){
-														if(bRecordArr[bi] != null){
-															beforeStr.append(bRecordArr[bi]);
-														}
-													}
-													//AFTER
-													StringBuffer afterStr = new StringBuffer();
-													JSONArray afterList = JSONArray.parseArray(cbdRecord.getString("after"));
-													Object[] aRecordArr = afterList.toArray();
-													for(int ai = 0 ; ai < aRecordArr.length; ai++){
-														if(aRecordArr[ai] != null){
-															afterStr.append(aRecordArr[ai]);
-														}
-													}
-													if(afterStr.length()>0){
-														sqls.add("INSERT INTO FSCHANGESINSTRUCTION(CS_ID,CS_CUID,cd_detno,cd_type,cs_date,cs_before,cs_after) VALUES " +
-																"(FSCHANGESINSTRUCTION_SEQ.NEXTVAL,"+cuId+","+(detno++)+",'"+cd_type+"',"+cs_date+",'"+beforeStr.toString()+"','"+afterStr.toString()+"')");
-													}
-												}
-											}
-										}
-									}
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-		//System.out.println("COMMONSQLS:"+sqls);
-		jdbcTemplate.batchExecute(sqls);
-	}
-
-	/**
-	 * 上传卖方客户额度申请
-	 * @throws Exception
-	 */
-	@TaskMapping(title = "上传卖方客户额度申请", fixedDelay = 60000, method = Method.UPLOAD)
-	public void saveOfferQuotaInfoReq() throws Exception{
-		List<Map<String, Object>> customerQuotaUpload = getCustomerQuotaUpload();
-		if (!CollectionUtils.isEmpty(customerQuotaUpload)) {
-            List<String> sqlList = new ArrayList<>();
-			for (Map<String, Object> map:customerQuotaUpload) {
-                //资金方UU
-                Object cq_factoruu = map.get("CQ_FACTORUU");
-                Integer cqFactoruu =10050877;
-                //Integer cqFactoruu =10046945; //线上
-                if (cq_factoruu!=null) {
-                   cqFactoruu = Integer.valueOf(cq_factoruu.toString());
-                }
-
-			    //融资方UU
-                Object cq_custuu = map.get("CQ_CUSTUU");
-                Integer cqCustuu =0;
-                if (cq_custuu!=null) {
-                    cqCustuu = Integer.valueOf(cq_custuu.toString());
-                }
-                //融资方企业名称
-                String cqCustname = map.get("CQ_CUSTNAME").toString();
-                //授信期限(月)
-                Integer cqEffectdays = Integer.valueOf(map.get("CQ_EFFECTDAYS").toString());
-			    //当前额度
-                Double cqQuota = Double.valueOf(map.get("CQ_QUOTA").toString())/10000;
-                //融资比例
-                Double cqLendrate = Double.valueOf(map.get("CQ_LENDRATE").toString());
-                //年化利率
-                Double cqAnnualrate = Double.valueOf(map.get("CQ_ANNUALRATE").toString());
-                //还款方式
-                String cqRepaymentmeans = map.get("CQ_REPAYMENTMEANS").toString();
-                //录入人UU
-                Object cq_recorderuu = map.get("CQ_RECORDERUU");
-                Integer cqRecorderuu =200040254;
-                //Integer cqRecorderuu =1000014617;  // 线上
-                if (cq_recorderuu!=null) {
-                    cqRecorderuu = Integer.valueOf(cq_recorderuu.toString());
-                }
-                SaveOfferQuotaInfoReq.Builder req = SaveOfferQuotaInfoReq.newBuilder();
-				req.setCsEnuu(cqFactoruu).setCsEnName("深圳市英唐保理有限公司").setFsEnuu(cqCustuu).setFsEnName(cqCustname).setQuotaAmount(cqQuota)
-						.setCredDays(cqEffectdays).setFinanceRate(cqLendrate).setOfferRate(cqAnnualrate).setRepayment(
-                        cqRepaymentmeans).setApplyUu(cqRecorderuu);
-				SaveOfferQuotaInfoResp resp = capitalSideSdk.saveOfferQuotaInfo(req);
-                String s = ProtoBufUtil.toJSON(resp);
-                JSONObject jsonObject = JSONObject.parseObject(s);
-                Object code = JSONObject.parseObject(jsonObject.get("respHeader").toString()).get("code");
-                if ("0".equals(code.toString())){
-                    sqlList.add("update customerQuota set CQ_UPLOADSTATUS = '已上传' where cq_id = " + map.get("CQ_ID"));
-                }
-			}
-            if (!CollectionUtils.isEmpty(sqlList)) {
-                jdbcTemplate.batchExecute(sqlList);
-            }
-		}
-	}
-
-	/**
-	 * 获取需要上传的卖方客户额度申请
-	 *
-	 * @return
-	 */
-	private List<Map<String, Object>> getCustomerQuotaUpload() {
-		List<Map<String, Object>> maps = jdbcTemplate.queryForList("select * from (select cq_id,cq_factoruu," +
-                "cq_custuu,cq_custname,cq_effectdays,cq_quota,cq_lendrate,cq_annualrate," +
-                "cq_repaymentmeans,cq_recorderuu from " +
-                "customerQuota where " +
-				"CQ_UPLOADSTATUS='待上传'  and cq_quotatype='卖方客户' order by cq_code ) where rownum < 100");
-		return maps;
-	}
-}
-
-
+package com.uas.erp.schedular.finance.task;
+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.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.uas.erp.schedular.entity.Master;
+import com.uas.erp.schedular.task.support.Method;
+import com.uas.erp.schedular.util.ContextHolder;
+import com.usoft.fin.external.open.api.entity.CapitalSideLoan;
+import com.usoft.fin.external.open.api.entity.FinanceOfferListOrBuilder;
+import com.usoft.fin.external.open.api.entity.OfferQuotaInfoRest;
+import com.usoft.fin.external.open.api.protobuf.*;
+import com.usoft.sdk.fin.client.CapitalSideSdk;
+import com.usoft.sdk.fin.client.TradingHallSdk;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.tomcat.util.descriptor.web.ContextHandler;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import com.uas.erp.schedular.task.support.Role;
+import com.uas.erp.schedular.task.support.TaskMapping;
+import com.uas.erp.schedular.util.CollectionUtil;
+import com.uas.erp.schedular.util.ContextHolder;
+import com.usoft.fin.external.open.api.entity.AcceptOfferDetail;
+import com.usoft.fin.external.open.api.entity.CompanyBasicInfosByErmRest;
+import com.usoft.fin.external.open.api.entity.CompanyEnterpriseCrawlerListFinRest;
+import com.usoft.fin.external.open.api.entity.CompanyIndustryAndCommerceInfoRest;
+import com.usoft.fin.external.open.api.entity.CompanyLawInfoFinRest;
+import com.usoft.fin.external.open.api.entity.FinanceOfferDetails;
+import com.usoft.fin.external.open.api.entity.OfferDetailAndFinanceAccept;
+import com.usoft.fin.external.open.api.entity.OpenCapitalSideLoanOther;
+import com.usoft.fin.external.open.api.entity.OpenCapitalSideRepaymentPlanOther;
+import com.usoft.fin.external.open.api.entity.RestBaseInfo;
+import com.usoft.fin.external.open.api.protobuf.GetCapitalSideLoanReq;
+import com.usoft.fin.external.open.api.protobuf.GetCapitalSideLoanResp;
+import com.usoft.fin.external.open.api.protobuf.GetFinanceOfferDetailsReq;
+import com.usoft.fin.external.open.api.protobuf.GetFinanceOfferDetailsResp;
+import com.usoft.fin.external.open.api.protobuf.GetFinanceOfferListReq;
+import com.usoft.fin.external.open.api.protobuf.GetFinanceOfferListResp;
+import com.usoft.fin.external.open.api.protobuf.GetOfferQuotaInfoListReq;
+import com.usoft.fin.external.open.api.protobuf.GetOfferQuotaInfoListResp;
+import com.usoft.sdk.fin.utils.ProtoBufUtil;
+
+
+
+
+
+@Component
+@TaskMapping(title = "U智融对接服务", role = Role.SELLER)
+public class B2BInformation  extends AbstractTask{
+	private CapitalSideSdk capitalSideSdk = new CapitalSideSdk("https://finrest.uuzcc.cn", "10050877", "b78d577449b64f56a8a6cf1feeb3fbf5");
+	private TradingHallSdk tradingHallSdk = new TradingHallSdk("https://finrest.uuzcc.cn", "10050877", "b78d577449b64f56a8a6cf1feeb3fbf5");
+
+	/**
+     * 额度申请
+     * @throws Exception
+     */
+	@TaskMapping(title = "额度申请下载", fixedDelay = 30000, method = Method.DOWNLOAD)
+    public void getOfferQuotaInfoList() throws Exception {
+		List<String> sqls = new ArrayList<>();
+		Calendar beforeTime = Calendar.getInstance();
+		beforeTime.add(Calendar.MINUTE, -7);// 7分钟之前的时间
+		Date beforeD = beforeTime.getTime();
+		Master currMaster = ContextHolder.getMaster();
+    	GetOfferQuotaInfoListReq.Builder req = GetOfferQuotaInfoListReq.newBuilder();
+    	req.setCsEnuu(Integer.valueOf(currMaster.getMa_uu().toString()));
+		req.setPageNumber(1);
+		req.setPageSize(50);
+		req.setUpdateTime(beforeD.getTime());//获取最近7分钟更新的单据列表
+		GetOfferQuotaInfoListResp resp = capitalSideSdk.getOfferQuotaInfoList(req);
+		java.util.List<OfferQuotaInfoRest> restlist = resp.getOfferQuoteInfoList();
+		//System.out.println("restlist-size:"+restlist.size());
+		List<Map<String, Object>> enUUList = new ArrayList<>();
+		for(OfferQuotaInfoRest rest : restlist) {
+			Map<String, Object> enMap = new HashMap<>();
+			if (rest.getFsEnuu() > 0) {
+//				System.out.println("CQ_CODE:" + rest.getCode() + ",STATUS:" + rest.getStatus() +
+//						",rest.getCsEnName():" + rest.getCsEnName() + "(" + rest.getCsEnuu() + ")" +
+//						",rest.getFsEnName():" + rest.getFsEnName() + "(" + rest.getFsEnuu() + ")");
+				sqls.add("MERGE INTO CUSTOMERQUOTA INERP " +
+						"	USING ( SELECT nvl(MAX(CQ_ID),-1) CQ_ID," +
+						"	MAX((select MAX(CU_CODE) from CUSTOMERINFOR WHERE CU_STATUSCODE <> 'DISABLE' AND NVL(CU_ENUU,0) = "+rest.getFsEnuu()+" )) CU_CODE " +
+						"	FROM CustomerQuota WHERE CQ_CODE = '" + rest.getCode() + "' ) ONERP " +
+						"	ON (INERP.CQ_ID = ONERP.CQ_ID) " +
+						"	WHEN MATCHED THEN " +
+						"	UPDATE SET INERP.CQ_UPDATEDATE = SYSDATE,INERP.CQ_UPLOADSTATUS='已上传',INERP.CQ_QUOTATYPE='卖方客户',INERP.CQ_COP='"+currMaster.getMa_user()+"',INERP.CQ_CLASS='卖方客户申请单'," +
+						"	INERP.CQ_CUSTCODE = ONERP.CU_CODE," +
+						"	INERP.CQ_CUSTUU = " + rest.getFsEnuu() + ",INERP.CQ_CUSTNAME='" + rest.getFsEnName() + "'," +
+						"	INERP.CQ_APPLYQUOTA=" + rest.getQuotaAmount()*10000 + ",INERP.CQ_EFFECTDAYS=" + rest.getCredDays() + ",INERP.CQ_LENDRATE=" + rest.getFinanceRate() + "," +
+						"	INERP.CQ_ANNUALRATE=" + rest.getOfferRate() + ",INERP.CQ_REPAYMENTMEANS='" + rest.getRepayment() + "'," +
+						"	INERP.CQ_AUDITDATE = TO_DATE('" + rest.getCheckerTime() + "','YYYY-MM-DD hh24:mi:ss')," +
+						"	INERP.CQ_STATUSCODE='" + (rest.getStatus() == 1402 ? "AUDITED" : "ENTERING") + "'," +
+						"	INERP.CQ_STATUS='" + (rest.getStatus() == 1402 ? "已审核" : "在录入") + "'," +
+						"	INERP.CQ_BASICEVALUATION='" + rest.getCheckerContent() + "'" +
+						"	WHEN NOT MATCHED THEN " +
+						"	INSERT (CQ_ID,CQ_UPLOADSTATUS,CQ_SOURCETYPE,CQ_QUOTATYPE,CQ_UPDATEDATE,CQ_COP,CQ_CLASS," +
+						"	CQ_CODE,CQ_FACTORUU,CQ_FACTORNAME,CQ_CUSTCODE,CQ_CUSTUU,CQ_CUSTNAME," +
+						"	CQ_APPLYQUOTA,CQ_EFFECTDAYS,CQ_LENDRATE,CQ_ANNUALRATE,CQ_REPAYMENTMEANS," +
+						"	CQ_INDATE,CQ_RECORDER,CQ_RECORDERUU,CQ_AUDITDATE," +
+						"	CQ_STATUSCODE,CQ_STATUS,CQ_BASICEVALUATION)" +
+						"	VALUES(CUSTOMERQUOTA_SEQ.NEXTVAL,'待上传','B2B','卖方客户',SYSDATE,'"+ currMaster.getMa_user()+"','卖方客户申请单'," +
+						"	'" + rest.getCode() + "'," + rest.getCsEnuu() + ",'" + rest.getCsEnName() + "',ONERP.CU_CODE," + rest.getFsEnuu() + ",'" + rest.getFsEnName() + "'," +
+						"	" + rest.getQuotaAmount()*10000 + "," + rest.getCredDays() + "," + rest.getFinanceRate() + "," + rest.getOfferRate() + ",'" + rest.getRepayment() + "'," +
+						"	TO_DATE('" + rest.getApplyTime() + "','YYYY-MM-DD hh24:mi:ss'),'" + rest.getApplyUsername() + "'," + rest.getApplyUu() + ",TO_DATE('" + rest.getCheckerTime() + "','YYYY-MM-DD hh24:mi:ss')," +
+						"	'" + (rest.getStatus() == 1402 ? "AUDITED" : "ENTERING") + "','" + (rest.getStatus() == 1402 ? "已审核" : "在录入") + "','" + rest.getCheckerContent() + "')");
+				enMap.put("CQ_CUSTUU", rest.getFsEnuu());
+				enMap.put("CQ_FACTORUU", rest.getCsEnuu());
+				enMap.put("CQ_RECORDERUU", rest.getApplyUu());
+				if (!enUUList.contains(enMap)) {
+					enUUList.add(enMap);
+				}
+			}
+		}
+        //System.out.println(sqls);
+		jdbcTemplate.batchExecute(sqls);
+		//下载或更新客户信息
+		if(enUUList.size()>0){
+			getCustInfomation(enUUList);
+		}
+    }
+
+	/**
+	 * 客户信息下载
+	 * @param enUUList
+	 * @throws Exception
+	 */
+	public void getCustInfomation(List<Map<String, Object>> enUUList) throws Exception {
+		List<String> sqls = new ArrayList<>();
+		for(Map<String, Object> enMap : enUUList){
+			int facUU = enMap.get("CQ_FACTORUU") ==null ? 10050877 :Integer.valueOf(enMap.get("CQ_FACTORUU").toString());//资金方UU
+			int custUU = Integer.valueOf(enMap.get("CQ_CUSTUU").toString());//融资方UU--客户
+			int userUU = enMap.get("CQ_RECORDERUU") ==null ? 0 :Integer.valueOf(enMap.get("CQ_RECORDERUU").toString());//操作人UU
+//			System.out.println("facUU:"+facUU);
+//			System.out.println("custUU:"+custUU);
+			GetEnterpriseExtensionInfoReq.Builder entExtReq = GetEnterpriseExtensionInfoReq.newBuilder();
+			entExtReq.setEnuu(custUU);
+			//客户基本信息 CompanyBasicInfosByErmRest
+			GetEnterpriseExtensionInfoResp entExtInfoResp = tradingHallSdk.getEnterpriseExtensionInfo(entExtReq);
+			CompanyBasicInfosByErmRest compBaseInfoByErmRest = entExtInfoResp.getCompanyBasicInfo();
+			if(compBaseInfoByErmRest.getEnName()==null||compBaseInfoByErmRest.getEnName().equals("")){
+				break;
+			}
+			//System.out.println("客户基本信息: "+ProtoBufUtil.toJSON(compBaseInfoByErmRest));
+//			System.out.println("获取客户UU:"+compBaseInfoByErmRest.getEnuu());
+			//扩展信息 CompanyIndustryAndCommerceInfoRest
+			CompanyEnterpriseCrawlerListFinRest entCrawLFRest = entExtInfoResp.getCompanyEnterpriseCrawlerList();
+			CompanyIndustryAndCommerceInfoRest compIndusAndCommInforRest = entCrawLFRest.getCompanyIndustryAndCommerceInfo();
+			//System.out.println("扩展信息:"+ProtoBufUtil.toJSON(entCrawLFRest));
+			//企业简介 员工人数 CompanyIndustryAndCommerceInfoRest.CompanyLawInfoFinRest enIntro insuredNumberOfPeople
+			CompanyLawInfoFinRest compLawInfoRest = entCrawLFRest.getCompanyLawInfo();
+			//企业 融资方信息 RestBaseInfo
+			GetBaseInfoReq.Builder req = GetBaseInfoReq.newBuilder();
+			//资金方UU  为空或为0默认保理
+			req.setCsEnuu(facUU);
+			//融资方UU
+			req.setEnuu(custUU);
+			//操作人UU 为空就为0
+			req.setUu(userUU);
+			GetBaseInfoResp restBaseInfoResp = tradingHallSdk.getBaseInfo(req);
+			RestBaseInfo restBaseInfo = restBaseInfoResp.getBaseInfo();
+//			System.out.println("融资方信息:"+ProtoBufUtil.toJSON(restBaseInfoResp));
+//			System.out.println("融资方信息-客户名称:"+restBaseInfo.getEnName());
+			int cuId = jdbcTemplate.getInt("SELECT NVL(MAX(CU_ID),0) FROM CUSTOMERINFOR WHERE CU_STATUSCODE <> 'DISABLE' AND CU_ENUU = ? ", custUU);
+			int detno = 1;
+			//主表
+			String cu_term = ((compBaseInfoByErmRest.getEnOpDate()==null || compBaseInfoByErmRest.getEnOpDate().equals(""))? "null" : (compBaseInfoByErmRest.getEnOpDate().contains("无固定期限")?"9999":compBaseInfoByErmRest.getEnOpDate()));
+			String cu_licensedate = (compBaseInfoByErmRest.getEnRegDate()==null||compBaseInfoByErmRest.getEnRegDate().equals("")?"null":"to_date('"+compBaseInfoByErmRest.getEnRegDate()+"','YYYY-MM-DD HH24:MI:SS')");
+			String cu_regcapital = (compBaseInfoByErmRest.getEnRegCapital() ==null || compBaseInfoByErmRest.getEnRegCapital().equals("") ? "null":compBaseInfoByErmRest.getEnRegCapital().replace("万元人民币",""));
+			String cu_paidincapital =(compIndusAndCommInforRest.getContributedCapital() ==null ||compIndusAndCommInforRest.getContributedCapital().equals("") ? "null" : compIndusAndCommInforRest.getContributedCapital().replace("万元人民币",""));
+			String cu_employeesnum = (compIndusAndCommInforRest.getInsuredNumberOfPeople() == null || compIndusAndCommInforRest.getInsuredNumberOfPeople().equals("") ? "null":compIndusAndCommInforRest.getInsuredNumberOfPeople());
+			//从表
+			if (cuId > 0) {//资料更新
+				//System.out.println("cuId:"+cuId);
+				sqls.add("UPDATE CUSTOMERQUOTA SET CQ_CUSTCODE = (SELECT CU_CODE FROM CUSTOMERINFOR WHERE CU_ID = "+cuId+") where CQ_CUSTCODE is null and CQ_CUSTUU = "+custUU);
+				sqls.add("UPDATE CUSTOMERINFOR SET " +
+						" CU_STATUS='在录入',CU_STATUSCODE='ENTERING'," +
+						" CU_UPDATEDATE=SYSDATE,CU_NAME='"+compBaseInfoByErmRest.getEnName()+"',CU_LEGALPERSON='"+compBaseInfoByErmRest.getEnLegalRepName()+"'," +
+						" CU_TERM = "+cu_term+",CU_TYPE ='"+compBaseInfoByErmRest.getEnType()+"',CU_PLAFORMLEVEL='"+restBaseInfo.getGrade()+"'," +
+						" CU_LICENSEDATE = "+cu_licensedate+",CU_PAPERSCODE='"+compBaseInfoByErmRest.getEnCodeCrawled()+"'," +
+						" CU_TAXCREDIT ='"+compIndusAndCommInforRest.getUnifiedSocialCreditCode()+"',CU_REGISTSTATUS='"+compBaseInfoByErmRest.getEnRegStatus()+"',CU_BUSINSSCOPE='"+compBaseInfoByErmRest.getEnOpRange()+"',CU_BUSINESSMAIN='"+restBaseInfo.getEnBusinessMain()+"'," +
+						" CU_CONTACT='"+restBaseInfo.getFsContactsMan()+"',CU_CONTACTNUM='"+restBaseInfo.getFsContactsPhone()+"',CU_REGCAPITAL="+cu_regcapital+",CU_PAIDINCAPITAL="+cu_paidincapital+"," +
+						" CU_REGADD='"+compBaseInfoByErmRest.getEnRegLocation()+"',CU_OFFICEADD='"+restBaseInfo.getEnAddress()+"',CU_INTRODUCTION='"+compLawInfoRest.getEnIntro()+"'," +
+						" CU_EMPLOYEESNUM=" +cu_employeesnum+
+						" WHERE CU_ENUU = "+custUU+" AND CU_STATUSCODE <> 'DISABLE'");
+				//从表1 高管信息 CUSTOMEREXCUTIVE
+				JSONArray enKeyPerList = JSONArray.parseArray(compBaseInfoByErmRest.getEnKeyPersonnel());
+				//System.out.println("更新高管信息:"+compBaseInfoByErmRest.getEnKeyPersonnel());
+				if(enKeyPerList!=null && enKeyPerList.size()>0){
+					for(int ei = 0;ei < enKeyPerList.size();ei++){
+						JSONObject ek = enKeyPerList.getJSONObject(ei);
+						Set<Map.Entry<String, Object>>ekKeySet = ek.entrySet();
+						if(ekKeySet!= null && ekKeySet.size()>0){
+							for(Map.Entry<String, Object> ekMap : ekKeySet){
+								sqls.add(" INSERT INTO CUSTOMEREXCUTIVE(CE_ID,CE_CUID,CE_DETNO,CE_NAME,CE_POSITION) " +
+										" SELECT CUSTOMEREXCUTIVE_seq.nextval,"+cuId+",9999,'"+ekMap.getKey()+"','"+ekMap.getValue()+"'" +
+										" FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM CUSTOMEREXCUTIVE " +
+										" WHERE CE_CUID = "+cuId+" AND CE_NAME ='"+ekMap.getKey()+"' AND CE_POSITION ='"+ekMap.getValue()+"')");
+							}
+						}
+					}
+					sqls.add("UPDATE CUSTOMEREXCUTIVE SET CE_DETNO = (select RN from (SELECT ROWNUM RN,CE_ID FROM " +
+							"	(SELECT CE_ID FROM CUSTOMEREXCUTIVE WHERE CE_CUID = "+cuId+" ORDER BY CE_DETNO ASC,CE_ID ASC)) TT where TT.CE_ID = CUSTOMEREXCUTIVE.CE_ID) " +
+							"WHERE CE_CUID = "+cuId);
+				}
+				//从表2 股东信息 CUSTOMERSHAREHOLDER
+				//System.out.println("更新股东信息:"+compBaseInfoByErmRest.getEnShareholders());
+				JSONArray enShareholdersList = JSONArray.parseArray(compBaseInfoByErmRest.getEnShareholders());
+				if(enShareholdersList!=null && enShareholdersList.size()>0) {
+					for (int i = 0; i < enShareholdersList.size(); i++) {
+						JSONObject enShareholders = enShareholdersList.getJSONObject(i);
+						Object cs_payableamount = ((enShareholders.get("认缴出资额(万元)")  == null || enShareholders.get("认缴出资额(万元)").equals("-")) ? "null" : enShareholders.get("认缴出资额(万元)") );
+						Object cs_investratio =	(enShareholders.getString("持股比例") == null ? 0 :enShareholders.getString("持股比例").replace("%",""));
+						Object cs_investdate = (enShareholders.getDate("认缴出资日期") == null ? "null" :"to_date('"+ new SimpleDateFormat("yyyy-MM-dd").format(enShareholders.getDate("认缴出资日期"))+"','yyyy-mm-dd')");
+						sqls.add(" MERGE INTO CUSTOMERSHAREHOLDER INHOLDER " +
+								" USING (SELECT NVL(MAX(CS_ID),0) CS_ID FROM CUSTOMERSHAREHOLDER WHERE CS_CUID = "+cuId+" AND CS_NAME = '"+enShareholders.get("股东")+"') ONHOLDER " +
+								" ON (INHOLDER.CS_ID = ONHOLDER.CS_ID) " +
+								" WHEN MATCHED THEN " +
+								" UPDATE SET CS_DETNO = 9999, INHOLDER.CS_PAYABLEAMOUNT="+cs_payableamount+",INHOLDER.CS_INVESTRATIO="+cs_investratio+",INHOLDER.CS_INVESTDATE="+cs_investdate+" " +
+								" WHEN NOT MATCHED THEN " +
+								" INSERT (INHOLDER.CS_ID,INHOLDER.CS_CUID,INHOLDER.CS_DETNO,INHOLDER.CS_NAME,INHOLDER.CS_PAYABLEAMOUNT,INHOLDER.CS_INVESTRATIO,INHOLDER.CS_INVESTDATE) " +
+								" VALUES(CUSTOMERSHAREHOLDER_SEQ.NEXTVAL,"+cuId+",9999,'"+enShareholders.get("股东")+"',"+cs_payableamount+","+cs_investratio+","+cs_investdate+")");
+//					System.out.println(" MERGE INTO CUSTOMERSHAREHOLDER INHOLDER " +
+//							" USING (SELECT NVL(MAX(CS_ID),0) CS_ID FROM CUSTOMERSHAREHOLDER WHERE CS_CUID = "+cuId+" AND CS_NAME = '"+enShareholders.get("股东")+"') ONHOLDER " +
+//							" ON (INHOLDER.CS_ID = ONHOLDER.CS_ID) " +
+//							" WHEN MATCHED THEN " +
+//							" UPDATE SET CS_DETNO = 9999, INHOLDER.CS_PAYABLEAMOUNT="+cs_payableamount+",INHOLDER.CS_INVESTRATIO="+cs_investratio+",INHOLDER.CS_INVESTDATE="+cs_investdate+" " +
+//							" WHEN NOT MATCHED THEN " +
+//							" INSERT (INHOLDER.CS_ID,INHOLDER.CS_CUID,INHOLDER.CS_DETNO,INHOLDER.CS_NAME,INHOLDER.CS_PAYABLEAMOUNT,INHOLDER.CS_INVESTRATIO,INHOLDER.CS_INVESTDATE) " +
+//							" VALUES(CUSTOMERSHAREHOLDER_SEQ.NEXTVAL,"+cuId+",9999,'"+enShareholders.get("股东")+"',"+cs_payableamount+","+cs_investratio+","+cs_investdate+");");
+					}
+					sqls.add("UPDATE CUSTOMERSHAREHOLDER SET CS_DETNO = (select RN from (SELECT ROWNUM RN,CS_ID FROM " +
+							"	(SELECT CS_ID FROM CUSTOMERSHAREHOLDER WHERE CS_CUID = "+cuId+" ORDER BY CS_DETNO ASC,CS_ID ASC)) TT where TT.CS_ID = CUSTOMERSHAREHOLDER.CS_ID) " +
+							"WHERE CS_CUID = "+cuId);
+				}
+				//从表4 变更说明 FSCHANGESINSTRUCTION
+				//System.out.println("更新变更说明:"+compBaseInfoByErmRest.getEnChangingRecords());
+				JSONObject enChangingRecords = JSONObject.parseObject(compBaseInfoByErmRest.getEnChangingRecords());
+				if(enChangingRecords!=null&&enChangingRecords.size()>0&&enChangingRecords.getString("变更内容列表") != null){
+					JSONArray enChangingRecordList = JSONArray.parseArray(enChangingRecords.getString("变更内容列表"));
+					if(enChangingRecordList!=null && enChangingRecordList.size()>0) {
+						sqls.add("DELETE FSCHANGESINSTRUCTION WHERE CS_CUID = "+cuId);
+						for (int i = 0; i < enChangingRecordList.size(); i++) {
+							JSONObject enChangingRecord = enChangingRecordList.getJSONObject(i);
+							Set<Map.Entry<String, Object>> changKey = enChangingRecord.entrySet();
+							for(Map.Entry<String, Object> ckMap : changKey){
+								String cd_type = ckMap.getKey();
+								if(ckMap.getValue()!=null){
+									JSONArray recordByDateList = JSONArray.parseArray(ckMap.getValue().toString());
+									if(recordByDateList != null && recordByDateList.size() > 0) {
+										for (int j = 0; j < recordByDateList.size(); j++) {
+											JSONObject recordByDate = recordByDateList.getJSONObject(j);
+											Set<Map.Entry<String, Object>> recordByDateKey = recordByDate.entrySet();
+											for(Map.Entry<String, Object> cbdMap : recordByDateKey){
+												if(cbdMap.getKey()!=null){
+													String cs_date = "to_date('"+ cbdMap.getKey()+"','yyyy-mm-dd')";
+													JSONObject cbdRecord = JSONObject.parseObject(cbdMap.getValue().toString());
+													//BEFORE
+													StringBuffer beforeStr = new StringBuffer();
+													JSONArray beforeList = JSONArray.parseArray(cbdRecord.getString("before"));
+													Object[] bRecordArr = beforeList.toArray();
+													for(int bi = 0 ; bi < bRecordArr.length; bi++){
+														if(bRecordArr[bi] != null){
+															beforeStr.append(bRecordArr[bi]);
+														}
+													}
+													//AFTER
+													StringBuffer afterStr = new StringBuffer();
+													JSONArray afterList = JSONArray.parseArray(cbdRecord.getString("after"));
+													Object[] aRecordArr = afterList.toArray();
+													for(int ai = 0 ; ai < aRecordArr.length; ai++){
+														if(aRecordArr[ai] != null){
+															afterStr.append(aRecordArr[ai]);
+														}
+													}
+													if(afterStr.length()>0){
+														sqls.add("INSERT INTO FSCHANGESINSTRUCTION(CS_ID,CS_CUID,CD_DETNO,cd_type,cs_date,cs_before,cs_after) " +
+																"SELECT FSCHANGESINSTRUCTION_SEQ.NEXTVAL,"+cuId+","+(detno++)+",'"+cd_type+"',"+cs_date+",'"+beforeStr.toString()+"','"+afterStr.toString()+"'" +
+																"FROM DUAL WHERE NOT EXISTS(SELECT 1 FROM FSCHANGESINSTRUCTION " +
+																"WHERE CS_CUID = "+cuId+" AND cd_type = '"+cd_type+"' AND cs_date = "+cs_date+" AND cs_before = '"+beforeStr.toString()+"' AND cs_after = '"+afterStr.toString()+"')");
+													}
+												}
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+			} else {//新增在录入
+				//客户资料主表 CUSTOMERINFOR
+				cuId = jdbcTemplate.generate("CUSTOMERINFOR_SEQ");
+				String cuCode = (compBaseInfoByErmRest.getCode() ==null || compBaseInfoByErmRest.getCode().equals("") )? jdbcTemplate.generateCode("Customer!Infor", 2):compBaseInfoByErmRest.getCode();
+				detno = 1;
+				//System.out.println("enuu:"+compBaseInfoByErmRest.getEnuu()+",cuCode:"+cuCode);
+				sqls.add("INSERT INTO CUSTOMERINFOR(CU_ID,CU_CODE,CU_ENUU,CU_STATUS,CU_STATUSCODE,CU_UPDATEDATE,CU_NAME,CU_LEGALPERSON," +
+						"CU_TERM,CU_TYPE,CU_PLAFORMLEVEL,CU_LICENSEDATE,CU_PAPERSCODE," +
+						"CU_TAXCREDIT,CU_REGISTSTATUS,CU_BUSINSSCOPE,CU_BUSINESSMAIN," +
+						"CU_CONTACT,CU_CONTACTNUM,CU_REGCAPITAL,CU_PAIDINCAPITAL," +
+						"CU_REGADD,CU_OFFICEADD,CU_INTRODUCTION,CU_EMPLOYEESNUM" +
+						") VALUES ("+cuId+",'"+cuCode+"',"+compBaseInfoByErmRest.getEnuu()+",'在录入','ENTERING',SYSDATE,'"+compBaseInfoByErmRest.getEnName()+"','"+compBaseInfoByErmRest.getEnLegalRepName()+"',"
+						+cu_term+","+"'"+compBaseInfoByErmRest.getEnType()+"','"+restBaseInfo.getGrade()+"'," +cu_licensedate+",'"+compBaseInfoByErmRest.getEnCodeCrawled()+"',"+
+						"'"+compIndusAndCommInforRest.getUnifiedSocialCreditCode()+"','"+compBaseInfoByErmRest.getEnRegStatus()+"','"+compBaseInfoByErmRest.getEnOpRange()+"','"+restBaseInfo.getEnBusinessMain()+"',"+
+						"'"+restBaseInfo.getFsContactsMan()+"','"+restBaseInfo.getFsContactsPhone()+"',"+cu_regcapital+","+cu_paidincapital+",'"
+						+compBaseInfoByErmRest.getEnRegLocation()+"','"+restBaseInfo.getEnAddress()+"','"+compLawInfoRest.getEnIntro()+"',"+cu_employeesnum+")");
+				sqls.add("UPDATE CUSTOMERQUOTA SET cq_custcode ='"+cuCode+"' where cq_custcode is null and CQ_CUSTUU = "+custUU);
+				//从表2 高管信息 CUSTOMEREXCUTIVE
+//				高管信息-高管姓名	CUSTOMEREXCUTIVE.ce_name	enKeyPersonnel
+//				高管信息-担任职务	CUSTOMEREXCUTIVE.ce_position	enKeyPersonnel
+//enKeyPersonnel 数据格式:[{'陈亚荣': '总经理'}, {'陈正明': '执行董事'}, {'陈劲松': '监事'}]
+				JSONArray enKeyPerList = JSONArray.parseArray(compBaseInfoByErmRest.getEnKeyPersonnel());
+				//System.out.println("高管信息:"+compBaseInfoByErmRest.getEnKeyPersonnel());
+				if(enKeyPerList!=null && enKeyPerList.size()>0){
+					for(int ei = 0;ei < enKeyPerList.size();ei++){
+						JSONObject ek = enKeyPerList.getJSONObject(ei);
+						Set<Map.Entry<String, Object>>ekKeySet = ek.entrySet();
+						if(ekKeySet!= null && ekKeySet.size()>0){
+							for(Map.Entry<String, Object> ekMap : ekKeySet){
+								sqls.add("INSERT INTO CUSTOMEREXCUTIVE(CE_ID,CE_CUID,CE_DETNO,CE_NAME,CE_POSITION) VALUES " +
+										"(CUSTOMEREXCUTIVE_seq.nextval,"+cuId+","+(detno++)+",'"+ekMap.getKey()+"','"+ekMap.getValue()+"')");
+							}
+						}
+					}
+				}
+				//从表2 股东信息 CUSTOMERSHAREHOLDER
+//				股东情况-股东名称	CUSTOMERSHAREHOLDER.cs_name	enShareholders
+//				股东情况-应出资金额(万元)	CUSTOMERSHAREHOLDER.cs_payableamount	enShareholders
+//				股东情况-出资比例(%)	CUSTOMERSHAREHOLDER.cs_investratio	enShareholders
+//				股东情况-投资日期	CUSTOMERSHAREHOLDER.cs_investdate	enShareholders
+//enShareholders 数据格式:[{'股东': '深圳市瑞联软件技术合伙企业(有限合伙)', '持股比例': '80.00%', '认缴出资额(万元)': '4000', '认缴出资日期': ''}, {'股东': '钟勇斌', '持股比例': '20.00%', '认缴出资额(万元)': '1000', '认缴出资日期': ''}]
+				//System.out.println("股东信息:"+compBaseInfoByErmRest.getEnShareholders());
+				detno = 1;
+				JSONArray enShareholdersList = JSONArray.parseArray(compBaseInfoByErmRest.getEnShareholders());
+				if(enShareholdersList!=null && enShareholdersList.size()>0) {
+					for (int i = 0; i < enShareholdersList.size(); i++) {
+						JSONObject enShareholders = enShareholdersList.getJSONObject(i);
+						Object cs_payableamount = ((enShareholders.get("认缴出资额(万元)")  == null || enShareholders.get("认缴出资额(万元)").equals("-")) ? "null" : enShareholders.get("认缴出资额(万元)") );
+						Object cs_investratio =	(enShareholders.getString("持股比例") == null ? 0 :enShareholders.getString("持股比例").replace("%",""));
+						Object cs_investdate = (enShareholders.getDate("认缴出资日期") == null ? "null" :"to_date('"+ new SimpleDateFormat("yyyy-MM-dd").format(enShareholders.getDate("认缴出资日期"))+"','yyyy-mm-dd')");
+						sqls.add("INSERT INTO CUSTOMERSHAREHOLDER(CS_ID,CS_CUID,CS_DETNO,CS_NAME,CS_PAYABLEAMOUNT,CS_INVESTRATIO,CS_INVESTDATE) VALUES " +
+								"(CUSTOMERSHAREHOLDER_SEQ.NEXTVAL,"+cuId+","+(detno++)+",'"+enShareholders.get("股东")+"',"+cs_payableamount+","+cs_investratio+","+cs_investdate+")");
+					}
+				}
+				//从表4 变更说明 FSCHANGESINSTRUCTION
+//				变更说明-变更科目	FsChangesInstruction.cd_type	enChangingRecords
+//				变更说明-变更时间	FsChangesInstruction.cs_date	enChangingRecords
+//				变更说明-变更前内容	FsChangesInstruction.cs_before	enChangingRecords
+//				变更说明-变更后内容	FsChangesInstruction.cs_after	enChangingRecords
+//数据格式 {'变更次数':1,'变更内容列表':[{'名称变更(字号名称、集团名称等)':[{'2019-06-12':{'before':['深圳','优软商城','科技有限公司'],'after':['深圳','市英唐优软云','科技有限公司']},'2019-06-13':{'before':['深圳','优软商城','科技有限公司'],'after':['深圳','市英唐优软云','科技有限公司']}}]},{...},...]
+				//System.out.println("变更说明:"+compBaseInfoByErmRest.getEnChangingRecords());
+				detno = 1;
+				JSONObject enChangingRecords = JSONObject.parseObject(compBaseInfoByErmRest.getEnChangingRecords());
+				if(enChangingRecords!=null&&enChangingRecords.size()>0&&enChangingRecords.getString("变更内容列表") != null){
+					JSONArray enChangingRecordList = JSONArray.parseArray(enChangingRecords.getString("变更内容列表"));
+					if(enChangingRecordList!=null && enChangingRecordList.size()>0) {
+						for (int i = 0; i < enChangingRecordList.size(); i++) {
+							JSONObject enChangingRecord = enChangingRecordList.getJSONObject(i);
+							Set<Map.Entry<String, Object>> changKey = enChangingRecord.entrySet();
+							for(Map.Entry<String, Object> ckMap : changKey){
+								String cd_type = ckMap.getKey();
+								if(ckMap.getValue()!=null){
+									JSONArray recordByDateList = JSONArray.parseArray(ckMap.getValue().toString());
+									if(recordByDateList != null && recordByDateList.size() > 0) {
+										for (int j = 0; j < recordByDateList.size(); j++) {
+											JSONObject recordByDate = recordByDateList.getJSONObject(j);
+											Set<Map.Entry<String, Object>> recordByDateKey = recordByDate.entrySet();
+											for(Map.Entry<String, Object> cbdMap : recordByDateKey){
+												if(cbdMap.getKey()!=null){
+													String cs_date = "to_date('"+ cbdMap.getKey()+"','yyyy-mm-dd')";
+													JSONObject cbdRecord = JSONObject.parseObject(cbdMap.getValue().toString());
+													//BEFORE
+													StringBuffer beforeStr = new StringBuffer();
+													JSONArray beforeList = JSONArray.parseArray(cbdRecord.getString("before"));
+													Object[] bRecordArr = beforeList.toArray();
+													for(int bi = 0 ; bi < bRecordArr.length; bi++){
+														if(bRecordArr[bi] != null){
+															beforeStr.append(bRecordArr[bi]);
+														}
+													}
+													//AFTER
+													StringBuffer afterStr = new StringBuffer();
+													JSONArray afterList = JSONArray.parseArray(cbdRecord.getString("after"));
+													Object[] aRecordArr = afterList.toArray();
+													for(int ai = 0 ; ai < aRecordArr.length; ai++){
+														if(aRecordArr[ai] != null){
+															afterStr.append(aRecordArr[ai]);
+														}
+													}
+													if(afterStr.length()>0){
+														sqls.add("INSERT INTO FSCHANGESINSTRUCTION(CS_ID,CS_CUID,cd_detno,cd_type,cs_date,cs_before,cs_after) VALUES " +
+																"(FSCHANGESINSTRUCTION_SEQ.NEXTVAL,"+cuId+","+(detno++)+",'"+cd_type+"',"+cs_date+",'"+beforeStr.toString()+"','"+afterStr.toString()+"')");
+													}
+												}
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		//System.out.println("COMMONSQLS:"+sqls);
+		jdbcTemplate.batchExecute(sqls);
+	}
+	/**
+	 * 下载放款记录列表
+	 * @throws Exception
+	 */
+	@TaskMapping(title = "放款记录下载", fixedDelay = 30000, method = Method.DOWNLOAD)
+    public void getCapitalSideLoan() throws Exception {
+		final List<String> sqls = new ArrayList<>();
+        GetCapitalSideLoanReq.Builder req = GetCapitalSideLoanReq.newBuilder();
+        req.setPageSize(100);
+        req.setPageNumber(1);
+        Master ceuuMaster = ContextHolder.getMaster();
+        req.setCsEnuu(Integer.valueOf(ceuuMaster.getMa_uu().toString()));
+        //req.setCsEnuu(10050877);  //保理企业UU
+        //req.setCsEnuu(10050877);    //优软商城企业UU com.usoft.fin.external.open.api.entity.
+		Calendar beforeTime = Calendar.getInstance();
+		beforeTime.add(Calendar.MINUTE, -7);// 7分钟之前的时间
+		Date beforeD = beforeTime.getTime();
+		req.setUpdateTime(beforeD.getTime());//获取最近7分钟更新的单据列表
+        GetCapitalSideLoanResp resp = capitalSideSdk.getCapitalSideLoan(req);
+        java.util.List<CapitalSideLoan> rlist = resp.getCapitalSideLoanList();
+        for(CapitalSideLoan loan :rlist){
+        	String aaCode = jdbcTemplate.generateCode("AccountApply!YSB2", 2);
+        	/*sqls.add("MERGE INTO AccountApply a"
+        			+" USING (SELECT nvl(max(id),0) ID FROM AccountApply where AA_LOANCODE = '"+loan.getLoanCode()+"') b"
+        		    +" ON (a.ID = b.ID)"
+        		    +" WHEN MATCHED THEN "
+        		    +" UPDATE SET a.AA_LOANDATE = '"+loan.getLoanDate()+"',a.AA_BACKDATE = '"+loan.getRepaymentData()+"', a.AA_TRUSTER ='"+loan.getPersonInCharge()+"',"
+        		    + "a.AA_APPLYDATE ='"+loan.getApplyDate()+"',a.AA_AUDITMAN ='"+loan.getApprovalMan()+"',a.AA_AUDITDATE='"+loan.getApprovalMan()+"',a.AA_AUDITDATE ='"+loan.getApprovalDate()+"',"
+        		    + "a.AA_LOANAMOUNT = '"+loan.getLoanAmount()+"',a.AA_FINANCEDEMANDCODE = '"+loan.getFinanceDemandCode()+"',a.AA_RECEIVABLESARRIVALDATE ='"+loan.getReceivablesArrivalDate()+"',"
+        		    + "a.AA_LOANRATE ='"+loan.getLoanRate()+"',a.AA_REPAYMENTFREQUENCY = '"+loan.getRepaymentFrequency()+"',a.AA_FSCOLLECTIONBANK ='"+loan.getFsCollectionBank()+"',"
+        		    + "a.AA_FSCOLLECTIONACCOUNT ='"+loan.getFsCollectionAccount()+"',a.AA_FSCOLLECTIONNAME ='"+loan.getFsCollectionName()+"',a.AA_RECEIPTFORLOAN ='"+loan.getReceiptForLoan()+"',"
+        		    + "a.AA_INTERESTPAYABLE='"+loan.getInterestPayable()+"',a.AA_BEOVERDUE='"+loan.getBeOverdue()+"',a.AA_SETTLE='"+loan.getSettle()+"',a.AA_PERSONINCHARGE'"+loan.getPersonInCharge()+"',"
+        		    + "a.AA_APPROVALDATE='"+loan.getApprovalDate()+"',a.AA_APPROVALMAN='"+loan.getApprovalMan()+"',a.AA_B2BSTATUS='"+loan.getStatus()+"',a.AA_REPAYMENTDATA= '"+loan.getRepaymentData()+"'"
+        		    +" WHEN NOT MATCHED THEN"
+        		    +" INSERT (AA_ID, AA_CODE, AA_CUSTCODE, AA_CUSTNAME, AA_STATUS, AA_SACODES, AA_BILLCODES,AA_BILLAMOUNT, AA_CURRENCY, AA_DUEAMOUNT,"
+        		    + " AA_BANK, AA_BACKBANKNO, AA_LOANDATE, AA_BACKDATE,AA_INTERESTRATE, AA_PENALTYRATE, AA_LENDRATE, AA_EFFECTDAYS, AA_HANDRATE, AA_OTHRATE, AA_ISNOTARIZATION,"
+        		    + "AA_OTHERS, AA_REMARK, AA_TRUSTER, AA_APPLYDATE, AA_RECORDER, AA_INDATE, AA_AUDITMAN, AA_AUDITDATE,AA_STATUSCODE, AA_ISPENALTY, AA_CACODE, AA_INTERESTPAYMETHOD, AA_FACTORING, AA_HAND, AA_MATURITYDATE,"
+        		    + "AA_LEFTAMOUNT, AA_INTERESTPAY, AA_AHEADPOUNDAGE, AA_OVERDUEDAYS, AA_ISCLOSEOFF, AA_CATECODE, AA_CATEDESC,AA_ISOVERDUE, AA_ODCODE, AA_INTEREST, AA_ARID, AA_ARCODE, AA_SAAMOUNT, AA_THISPAYAMOUNT, AA_THISPAYDATE,"
+        		    + "AA_TURNSTATUS, AA_TURNSTATUSCODE, AA_YAMOUNT, AA_MFCUSTCODE, AA_MFCUSTNAME, AA_TRANSFERAMOUNT, AA_ACTPAYDATE,"
+        			+ " AA_DOWNPAY, AA_DOWNPAYDESC, AA_MARGIN, AA_MARGINAMOUNT, AA_MARGINDATE, AA_GRACEPERIOD, AA_GRACEDAYS, "
+        			+ "AA_GRACERATE, AA_ASSUREMEANS, AA_CUSTACCOUNT, AA_LIVEYEAR, AA_AAID, AA_PRODUCTTYPE, AA_CLASS, AA_WANTAMOUNT, "
+        			+ "AA_FACTORCODE, AA_FACTORNAME, AA_LASTUPDATEDATE, AA_FIRSTDATE, AA_DEBXDATE, AA_DEBJDATE, AA_SENDSTATUS, " 
+        			+ "AA_B2BCODE, AA_AGREE, AA_MATURITY, AA_FINANCEDEMANDCODE, AA_ACCEPTOFFERCODE, AA_LOANCODE, AA_CSENUU, "
+        			+ "AA_FSENUU, AA_FSNAME, AA_RECEIVABLESARRIVALDATE, AA_FINANCERATE, AA_LOANAMOUNT, AA_LOANRATE, "
+        			+ "AA_REPAYMENTFREQUENCY, AA_FSCOLLECTIONBANK, AA_FSCOLLECTIONACCOUNT, AA_FSCOLLECTIONNAME, "
+        			+ "AA_RECEIPTFORLOAN, AA_INTERESTPAYABLE, AA_BEOVERDUE, AA_SETTLE, AA_PERSONINCHARGE, AA_APPROVALDATE, "
+        			+ "AA_APPROVALMAN, AA_UPLOADSTATUS,AA_B2BSTATUS,AA_REPAYMENTDATA,AA_B2BAA_APPLYDATE,AA_B2BAA_AUDITDATE) "
+        			+ "values (AccountApply_seq.nextval,'"+aaCode+"',null,null,'在录入',null,null,null,' ',null,null,null,to_date('"+loan.getLoanDate()+"','yyyy-MM-dd'),to_date('"+loan.getRepaymentData()+"','yyyy-MM-dd'),'"+loan.getLoanRate()+"',null,'"+loan.getFinanceRate()+"',null,null,null,null,null,null"
+			        + ",'"+loan.getPersonInCharge()+"',to_date('"+loan.getApplyDate()+"','yyyy-MM-dd'),null,null,'"+loan.getApprovalMan()+"',to_date('"+loan.getApprovalDate()+"','yyyy-MM-dd'),'ENTERING',null,null,null,null,null"
+				    + ",to_date('"+loan.getReceivablesArrivalDate()+"','yyyy-MM-dd'),null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null"
+					+ ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,'"+loan.getFinanceDemandCode()+"','"+loan.getAcceptOfferCode()+"',"
+					+ "'"+loan.getLoanCode()+"','"+loan.getCsEnuu()+"','"+loan.getFsEnuu()+"','"+loan.getFsName()+"',"
+				    + "'"+loan.getReceivablesArrivalDate()+"','"+loan.getFinanceRate()+"','"+loan.getLoanAmount()+"',"
+				    + "'"+loan.getLoanRate()+"','"+loan.getRepaymentFrequency()+"','"+loan.getFsCollectionBank()+"',"
+				    + "'"+loan.getFsCollectionAccount()+"','"+loan.getFsCollectionName()+"','"+loan.getReceiptForLoan()+"','"+loan.getInterestPayable()+"',"
+				    + "'"+loan.getBeOverdue()+"','"+loan.getSettle()+"','"+loan.getPersonInCharge()+"','"+loan.getApprovalDate()+"','"+loan.getApprovalMan()+"','已上传',"
+				    + "'"+loan.getStatus()+"','"+loan.getRepaymentData()+"','"+loan.getApplyDate()+"','"+loan.getApprovalDate()+"')");*/
+        	
+        	
+        	/*sqls.add("insert into AccountApply(AA_ID, AA_CODE, AA_CUSTCODE, AA_CUSTNAME, AA_STATUS, AA_SACODES, AA_BILLCODES,"
+        			+ " AA_BILLAMOUNT, AA_CURRENCY, AA_DUEAMOUNT, AA_BANK, AA_BACKBANKNO, AA_LOANDATE, AA_BACKDATE, "
+        			+ "AA_INTERESTRATE, AA_PENALTYRATE, AA_LENDRATE, AA_EFFECTDAYS, AA_HANDRATE, AA_OTHRATE, AA_ISNOTARIZATION,"
+        			
+        			+ " AA_OTHERS, AA_REMARK, AA_TRUSTER, AA_APPLYDATE, AA_RECORDER, AA_INDATE, AA_AUDITMAN, AA_AUDITDATE, "
+        			+ "AA_STATUSCODE, AA_ISPENALTY, AA_CACODE, AA_INTERESTPAYMETHOD, AA_FACTORING, AA_HAND, AA_MATURITYDATE, "
+        			
+        			+ "AA_LEFTAMOUNT, AA_INTERESTPAY, AA_AHEADPOUNDAGE, AA_OVERDUEDAYS, AA_ISCLOSEOFF, AA_CATECODE, AA_CATEDESC,"
+        			+ " AA_ISOVERDUE, AA_ODCODE, AA_INTEREST, AA_ARID, AA_ARCODE, AA_SAAMOUNT, AA_THISPAYAMOUNT, AA_THISPAYDATE, "
+        			
+        			+ "AA_TURNSTATUS, AA_TURNSTATUSCODE, AA_YAMOUNT, AA_MFCUSTCODE, AA_MFCUSTNAME, AA_TRANSFERAMOUNT, AA_ACTPAYDATE,"
+        			+ " AA_DOWNPAY, AA_DOWNPAYDESC, AA_MARGIN, AA_MARGINAMOUNT, AA_MARGINDATE, AA_GRACEPERIOD, AA_GRACEDAYS, "
+        			+ "AA_GRACERATE, AA_ASSUREMEANS, AA_CUSTACCOUNT, AA_LIVEYEAR, AA_AAID, AA_PRODUCTTYPE, AA_CLASS, AA_WANTAMOUNT, "
+        			+ "AA_FACTORCODE, AA_FACTORNAME, AA_LASTUPDATEDATE, AA_FIRSTDATE, AA_DEBXDATE, AA_DEBJDATE, AA_SENDSTATUS, " 
+        			+ "AA_B2BCODE, AA_AGREE, AA_MATURITY, AA_FINANCEDEMANDCODE, AA_ACCEPTOFFERCODE, AA_LOANCODE, AA_CSENUU, "
+        			+ "AA_FSENUU, AA_FSNAME, AA_RECEIVABLESARRIVALDATE, AA_FINANCERATE, AA_LOANAMOUNT, AA_LOANRATE, "
+        			+ "AA_REPAYMENTFREQUENCY, AA_FSCOLLECTIONBANK, AA_FSCOLLECTIONACCOUNT, AA_FSCOLLECTIONNAME, "
+        			+ "AA_RECEIPTFORLOAN, AA_INTERESTPAYABLE, AA_BEOVERDUE, AA_SETTLE, AA_PERSONINCHARGE, AA_APPROVALDATE, "
+        			+ "AA_APPROVALMAN, AA_UPLOADSTATUS,AA_B2BSTATUS,AA_REPAYMENTDATA,AA_B2BAA_APPLYDATE,AA_B2BAA_AUDITDATE) "
+        			+ "values (AccountApply_seq.nextval,'"+aaCode+"',null,null,'在录入',null,null,null,' ',null,null,null,to_date('"+loan.getLoanDate()+"','yyyy-MM-dd'),to_date('"+loan.getRepaymentData()+"','yyyy-MM-dd'),'"+loan.getLoanRate()+"',null,'"+loan.getFinanceRate()+"',null,null,null,null,null,null"
+        			        + ",'"+loan.getPersonInCharge()+"',to_date('"+loan.getApplyDate()+"','yyyy-MM-dd'),null,null,'"+loan.getApprovalMan()+"',to_date('"+loan.getApprovalDate()+"','yyyy-MM-dd'),'ENTERING',null,null,null,null,null"
+        				    + ",to_date('"+loan.getReceivablesArrivalDate()+"','yyyy-MM-dd'),null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null"
+        					+ ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,'"+loan.getFinanceDemandCode()+"','"+loan.getAcceptOfferCode()+"',"
+        					+ "'"+loan.getLoanCode()+"','"+loan.getCsEnuu()+"','"+loan.getFsEnuu()+"','"+loan.getFsName()+"',"
+        				    + "'"+loan.getReceivablesArrivalDate()+"','"+loan.getFinanceRate()+"','"+loan.getLoanAmount()+"',"
+        				    + "'"+loan.getLoanRate()+"','"+loan.getRepaymentFrequency()+"','"+loan.getFsCollectionBank()+"',"
+        				    + "'"+loan.getFsCollectionAccount()+"','"+loan.getFsCollectionName()+"','"+loan.getReceiptForLoan()+"','"+loan.getInterestPayable()+"',"
+        				    + "'"+loan.getBeOverdue()+"','"+loan.getSettle()+"','"+loan.getPersonInCharge()+"','"+loan.getApprovalDate()+"','"+loan.getApprovalMan()+"','已上传',"
+        				    + "'"+loan.getStatus()+"','"+loan.getRepaymentData()+"','"+loan.getApplyDate()+"','"+loan.getApprovalDate()+"')");*/
+        }
+        System.out.println(sqls);
+        jdbcTemplate.batchExecute(sqls);
+       
+    }
+
+	  /**
+		* 上传放款信息
+		* @throws Exception
+		*/
+	@TaskMapping(title = "上传放款信息", fixedDelay = 60000, method = Method.UPLOAD)
+	public void addCapitalSideLoan() throws Exception  {
+		   
+		    List<Map<String, Object>> capitalSideLoan = getAccountApplyUpload();  //获取需要上传的放款申请
+		    AddCapitalSideLoanReq.Builder req = AddCapitalSideLoanReq.newBuilder();
+		    OpenCapitalSideLoanOther.Builder capitalSideLoanOther = OpenCapitalSideLoanOther.newBuilder();
+		    if (!CollectionUtils.isEmpty(capitalSideLoan)) {
+	            List<String> sqlList = new ArrayList<>();
+				for (Map<String, Object> map:capitalSideLoan) {
+					 capitalSideLoanOther.setFinanceDemandCode(map.get("AA_FINANCEDEMANDCODE").toString());
+					 Object loancode = map.get("AA_LOANCODE");
+					 if(loancode != null){
+						 capitalSideLoanOther.setLoanCode(map.get("AA_LOANCODE").toString());  //放款编号
+					 }
+					 if(map.get("AA_RECEIVABLESARRIVALDATE").toString() != null){
+					    capitalSideLoanOther.setReceivablesArrivalDate(map.get("AA_RECEIVABLESARRIVALDATE").toString()); //应收账款到期日
+					  }
+					  if(Double.valueOf(map.get("AA_FINANCERATE").toString()) != null && Double.valueOf(map.get("AA_FINANCERATE").toString()) != 0){
+						  capitalSideLoanOther.setFinanceRate(Double.valueOf(map.get("AA_FINANCERATE").toString()));   //融资比例
+					  }
+					  if(Double.valueOf(map.get("AA_LOANAMOUNT").toString()) != null && Double.valueOf(map.get("AA_LOANAMOUNT").toString()) !=0){
+					      capitalSideLoanOther.setLoanAmount(Double.valueOf(map.get("AA_LOANAMOUNT").toString()));    //放款金额(元)
+					    }
+					  if(map.get("AA_LOANRATE").toString() != null){
+						  capitalSideLoanOther.setLoanDate(map.get("AA_LOANRATE").toString());   //放款日期
+					  }
+					  if(map.get("AA_BACKDATE").toString() != null){
+						  capitalSideLoanOther.setRepaymentData(map.get("AA_BACKDATE").toString());  //还款日期
+					  }
+					  if(Double.valueOf(map.get("AA_LOANRATE").toString()) != null && Double.valueOf(map.get("AA_LOANRATE").toString()) != 0){
+						  capitalSideLoanOther.setLoanRate(Double.valueOf(map.get("AA_LOANRATE").toString()));    //放款年利率
+					  }
+					  if(map.get("AA_REPAYMENTFREQUENCY").toString() != null){
+						  capitalSideLoanOther.setRepaymentFrequency(map.get("AA_REPAYMENTFREQUENCY").toString());   //还息频率
+					  }
+					   if(map.get("AA_FSCOLLECTIONBANK").toString() != null){
+						   capitalSideLoanOther.setFsCollectionBank(map.get("AA_FSCOLLECTIONBANK").toString());    //客户收款开户行
+					   }
+					    if(map.get("AA_FSCOLLECTIONACCOUNT").toString() != null){
+					    	capitalSideLoanOther.setFsCollectionAccount(map.get("AA_FSCOLLECTIONACCOUNT").toString());   //客户收款账号
+					    }
+					  if(map.get("AA_FSCOLLECTIONNAME").toString() != null){
+						  capitalSideLoanOther.setFsCollectionName(map.get("AA_FSCOLLECTIONNAME").toString());   //客户收款账号名称
+					  }
+					  if(map.get("AA_RECEIPTFORLOAN").toString() != null){
+						  capitalSideLoanOther.setReceiptForLoan(Double.valueOf(map.get("AA_RECEIPTFORLOAN").toString()));  //借据余额(元)
+					  }
+					  if(Double.valueOf(map.get("AA_INTERESTPAYABLE").toString()) != null && Double.valueOf(map.get("AA_INTERESTPAYABLE").toString()) != 0){
+						  capitalSideLoanOther.setInterestPayable(Double.valueOf(map.get("AA_INTERESTPAYABLE").toString()));   //应还利息(元)
+					  }
+					  if(Integer.valueOf(map.get("AA_BEOVERDUE").toString()) != null && Integer.valueOf(map.get("AA_BEOVERDUE").toString()) != 0){
+						  capitalSideLoanOther.setBeOverdue(Integer.valueOf(map.get("AA_BEOVERDUE").toString()));   //是否结清
+					  }
+					  if(Integer.valueOf(map.get("AA_SETTLE").toString()) != null && Integer.valueOf(map.get("AA_SETTLE").toString()) != 0){
+						  capitalSideLoanOther.setSettle(Integer.valueOf(map.get("AA_SETTLE").toString()));   //是否结清
+				      }
+					  if(map.get("AA_APPLYDATE").toString() != null && map.get("AA_APPLYDATE").toString() != " "){
+						  capitalSideLoanOther.setApplyDate(map.get("AA_APPLYDATE").toString());   //申请日期
+					  } 
+					  if(map.get("AA_PERSONINCHARGE").toString() != null){
+						  capitalSideLoanOther.setPersonInCharge(map.get("AA_PERSONINCHARGE").toString());   //状态
+
+					  }
+					   if(Integer.valueOf(map.get("AA_B2BSTATUS").toString()) != null && Integer.valueOf(map.get("AA_B2BSTATUS").toString()) != 0){
+						   capitalSideLoanOther.setStatus(Integer.valueOf(map.get("AA_B2BSTATUS").toString()));  //状态
+
+					   }
+					  if(map.get("AA_APPROVALDATE").toString() != null ){
+						  capitalSideLoanOther.setApprovalDate(map.get("AA_APPROVALDATE").toString());  //审批人
+					  }
+					  if(map.get("AA_APPROVALMAN").toString() != null){
+						  capitalSideLoanOther.setApprovalMan(map.get("AA_APPROVALMAN").toString()); //审批人
+					  }
+					   req.setCapitalSideLoan(capitalSideLoanOther);
+					   Master ceuuMaster = ContextHolder.getMaster();
+				       req.setEnuu(Integer.valueOf(ceuuMaster.getMa_uu().toString()));
+					 AddCapitalSideLoanResp resp = capitalSideSdk.addCapitalSideLoan(req);
+					 System.out.println(resp);
+	                String s = ProtoBufUtil.toJSON(resp);
+	                JSONObject jsonObject = JSONObject.parseObject(s);
+	                Object code = JSONObject.parseObject(jsonObject.get("respHeader").toString()).get("code");
+	                if ("0".equals(code.toString())){
+	                    sqlList.add("update ACCOUNTAPPLY set AA_UPLOADSTATUS = '已上传' where aa_id = " + map.get("aa_ID"));
+	                }
+				}
+	            if (!CollectionUtils.isEmpty(sqlList)) {
+	                jdbcTemplate.batchExecute(sqlList);
+	            }
+			}
+		
+		   /* OpenCapitalSideRepaymentPlanOther.Builder capitalSideRepaymentPlanOther = OpenCapitalSideRepaymentPlanOther.newBuilder();
+		    capitalSideRepaymentPlanOther.setRepaymentData("2020-2-25");
+		    capitalSideRepaymentPlanOther.setCurrency("RMB");
+		    capitalSideRepaymentPlanOther.setCapitalAmount(10000);
+		    capitalSideRepaymentPlanOther.setInterest(1000);
+		    capitalSideRepaymentPlanOther.setAmount(101000);
+		    capitalSideRepaymentPlanOther.setPersonInCharge("lzx");
+		    req.addCapitalSideRepaymentPlan(capitalSideRepaymentPlanOther);
+		
+		    OpenCapitalSideRepaymentPlanOther.Builder capitalSideRepaymentPlanOther1 = OpenCapitalSideRepaymentPlanOther.newBuilder();
+		    capitalSideRepaymentPlanOther1.setRepaymentData("2020-3-25");
+		    capitalSideRepaymentPlanOther1.setCurrency("RMB");
+		    capitalSideRepaymentPlanOther1.setCapitalAmount(9891.2);
+		    capitalSideRepaymentPlanOther1.setInterest(4000);
+		    capitalSideRepaymentPlanOther1.setAmount(13891.2);
+		    capitalSideRepaymentPlanOther1.setPersonInCharge("lzx");
+		    req.addCapitalSideRepaymentPlan(capitalSideRepaymentPlanOther1);
+		    req.setEnuu(10050877);*/
+		
+		  //  AddCapitalSideLoanResp resp = capitalSideSdk.addCapitalSideLoan(req);
+		   // System.out.println(ProtoBufUtil.toJSON(resp));
+		}
+		
+		/**
+		 * 获取需要上传的放款申请
+		 *
+		 * @return
+		 */
+	private List<Map<String, Object>> getAccountApplyUpload() {
+			List<Map<String, Object>> maps = jdbcTemplate.queryForList(" select * from ("
+        +" select AA_ID,AA_FINANCEDEMANDCODE,AA_LOANCODE,AA_CSENUU,AA_FSENUU,AA_RECEIVABLESARRIVALDATE,AA_FINANCERATE,AA_LOANAMOUNT,"
+        +" AA_LOANRATE,AA_REPAYMENTFREQUENCY,AA_FSCOLLECTIONBANK,AA_FSCOLLECTIONACCOUNT,AA_FSCOLLECTIONNAME,AA_RECEIPTFORLOAN,AA_INTERESTPAYABLE,"
+        +" AA_BEOVERDUE,AA_SETTLE,AA_PERSONINCHARGE,AA_APPROVALDATE,AA_APPROVALMAN,AA_BACKDATE,AA_APPLYDATE,AA_B2BSTATUS from ACCOUNTAPPLY "
+        +" where AA_UPLOADSTATUS = '待上传' order by aa_code) where rownum < 100");
+		 return maps;
+		}
+
+	/**
+	 * 上传卖方客户额度申请
+	 * @throws Exception
+	 */
+	@TaskMapping(title = "上传卖方客户额度申请", fixedDelay = 60000, method = Method.UPLOAD)
+	public void saveOfferQuotaInfoReq() throws Exception{
+		List<Map<String, Object>> customerQuotaUpload = getCustomerQuotaUpload();
+		if (!CollectionUtils.isEmpty(customerQuotaUpload)) {
+            List<String> sqlList = new ArrayList<>();
+			for (Map<String, Object> map:customerQuotaUpload) {
+                //资金方UU
+                Object cq_factoruu = map.get("CQ_FACTORUU");
+                Integer cqFactoruu =10050877;
+                //Integer cqFactoruu =10046945; //线上
+                if (cq_factoruu!=null) {
+                   cqFactoruu = Integer.valueOf(cq_factoruu.toString());
+                }
+
+			    //融资方UU
+                Object cq_custuu = map.get("CQ_CUSTUU");
+                Integer cqCustuu =0;
+                if (cq_custuu!=null) {
+                    cqCustuu = Integer.valueOf(cq_custuu.toString());
+                }
+                //融资方企业名称
+                String cqCustname = map.get("CQ_CUSTNAME").toString();
+                //授信期限(月)
+                Integer cqEffectdays = Integer.valueOf(map.get("CQ_EFFECTDAYS").toString());
+			    //当前额度
+                Double cqQuota = Double.valueOf(map.get("CQ_QUOTA").toString())/10000;
+                //融资比例
+                Double cqLendrate = Double.valueOf(map.get("CQ_LENDRATE").toString());
+                //年化利率
+                Double cqAnnualrate = Double.valueOf(map.get("CQ_ANNUALRATE").toString());
+                //还款方式
+                String cqRepaymentmeans = map.get("CQ_REPAYMENTMEANS").toString();
+                //录入人UU
+                Object cq_recorderuu = map.get("CQ_RECORDERUU");
+                Integer cqRecorderuu =200040254;
+                //Integer cqRecorderuu =1000014617;  // 线上
+				if (cq_recorderuu!=null) {
+					cqRecorderuu = Integer.valueOf(cq_recorderuu.toString());
+				}
+				//审核结果
+				Object cq_approval = map.get("CQ_APPROVAL");
+				Integer cqApproval=1403;
+				if (Integer.valueOf(cq_approval.toString())==1){
+					cqApproval=1402;
+				}
+				//到期时间
+				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+				Object cq_enddate = map.get("CQ_ENDDATE");
+				String cqEnddate = format.format(new Date());
+				if (cq_enddate!=null){
+					cqEnddate = format.format(new Date(Long.valueOf(cq_enddate.toString())));
+				}
+				//基本面评价
+				Object cq_basicevaluation = map.get("CQ_BASICEVALUATION");
+				String cqBasicevaluation = "";
+				if (cq_basicevaluation!=null){
+					cqBasicevaluation = cq_basicevaluation.toString();
+				}
+
+
+				SaveOfferQuotaInfoReq.Builder req = SaveOfferQuotaInfoReq.newBuilder();
+				req.setCsEnuu(cqFactoruu).setCsEnName("深圳市英唐保理有限公司").setFsEnuu(cqCustuu).setFsEnName(cqCustname).setQuotaAmount(cqQuota)
+						.setCredDays(cqEffectdays).setFinanceRate(cqLendrate).setOfferRate(cqAnnualrate).setRepayment(
+                        cqRepaymentmeans).setApplyUu(cqRecorderuu);
+				SaveOfferQuotaInfoResp resp = capitalSideSdk.saveOfferQuotaInfo(req);
+                String s = ProtoBufUtil.toJSON(resp);
+                JSONObject jsonObject = JSONObject.parseObject(s);
+                Object code = JSONObject.parseObject(jsonObject.get("respHeader").toString()).get("code");
+				Object msg = JSONObject.parseObject(jsonObject.get("respHeader").toString()).get("msg");
+                if ("0".equals(code.toString())||(msg!=null&&"您已经为该企业申请过报价额度,请不要重复申请".equals(msg.toString()))){
+					UpdateOfferQuotaInfoReq.Builder builder = UpdateOfferQuotaInfoReq.newBuilder();
+					builder.setCsEnuu(cqFactoruu).setFsEnuu(cqCustuu).setStatus(cqApproval).setEndTime(cqEnddate)
+							.setCheckerContent(cqBasicevaluation).setCheckUu(cqRecorderuu);
+					UpdateOfferQuotaInfoResp infoResp = capitalSideSdk.updateOfferQuotaInfo(builder);
+					String ss = ProtoBufUtil.toJSON(infoResp);
+					JSONObject json = JSONObject.parseObject(ss);
+					Object code1 = JSONObject.parseObject(json.get("respHeader").toString()).get("code");
+					if ("0".equals(code1.toString())) {
+						sqlList.add("update customerQuota set CQ_UPLOADSTATUS = '已上传' where cq_id = " + map.get("CQ_ID"));
+					}
+                }
+			}
+            if (!CollectionUtils.isEmpty(sqlList)) {
+                jdbcTemplate.batchExecute(sqlList);
+            }
+		}
+	}
+
+	/**
+	 * 获取需要上传的卖方客户额度申请
+	 *
+	 * @return
+	 */
+	private List<Map<String, Object>> getCustomerQuotaUpload() {
+		List<Map<String, Object>> maps = jdbcTemplate.queryForList("select * from (select cq_id,cq_factoruu," +
+                "cq_custuu,cq_custname,cq_effectdays,cq_quota,cq_lendrate,cq_annualrate," +
+                "cq_repaymentmeans,cq_recorderuu,cq_approval,cq_enddate,cq_basicevaluation from " +
+                "customerQuota where " +
+				"CQ_UPLOADSTATUS='待上传' and cq_status = '已审核' and cq_quotatype='卖方客户' order by cq_code ) where rownum " +
+                "< 100");
+		return maps;
+	}
+	/**
+     * 报价记录下载
+     * @throws Exception
+     */
+	@TaskMapping(title = "报价记录下载", fixedDelay = 30000, method = Method.DOWNLOAD)
+    public void getFinanceOfferList() throws Exception {
+    	final List<String> sqls = new ArrayList<>();
+    	final List<String> sqlsDemand = new ArrayList<>();
+    	final List<String> sqlloand = new ArrayList<>();
+    	GetFinanceOfferListReq.Builder req = GetFinanceOfferListReq.newBuilder();
+    	Master ceuuMaster = ContextHolder.getMaster();
+        req.setEnuu(Integer.valueOf(ceuuMaster.getMa_uu().toString()));
+		req.setPageNumber(1);
+		req.setPageSize(100);
+		//Calendar beforeTime = Calendar.getInstance();
+		//beforeTime.add(Calendar.MINUTE, -7);// 7分钟之前的时间
+		//Date beforeD = beforeTime.getTime();
+		//req.setUpdateTime(beforeD.getTime());//获取最近7分钟更新的单据列表
+		GetFinanceOfferListResp resp = capitalSideSdk.getFinanceOfferList(req);
+		List<? extends FinanceOfferListOrBuilder> flist = resp.getFinanceOfferInfoOrBuilderList();
+		for(FinanceOfferListOrBuilder Finance :flist){
+			//System.out.println("从表1:"+Finance.toString());
+			sqls.add("MERGE INTO AcceptOffer ao"
+			+" USING (SELECT nvl(max(id),0) ID FROM AcceptOffer where CODE = '"+Finance.getAcceptOfferInfo().getCode()+"') b"
+		    +" ON (ao.ID = b.ID)"
+		    +" WHEN MATCHED THEN "
+		    +" UPDATE SET ao.OFFERAMOUNT='"+Finance.getAcceptOfferInfo().getOfferAmount()+"',ao.FINANCERATE = '"+Finance.getAcceptOfferInfo().getOfferRate()+"',ao.FINANCEDAYS ='"+Finance.getAcceptOfferInfo().getFinanceDays()+"',"
+		    	+ "ao.CAPITALSIDENAME = '"+Finance.getAcceptOfferInfo().getCapitalSideName()+"',ao.CSCONTACTSMAN = '"+Finance.getAcceptOfferInfo().getCsContactsMan()+"',ao.FSCONTACTSPHONE = '"+Finance.getAcceptOfferInfo().getFsContactsPhone()+"',"
+		    	+ "ao.OFFERTIME = '"+Finance.getAcceptOfferInfo().getOfferTime()+"',ao.STATUS = '"+Finance.getAcceptOfferInfo().getStatus()+"',ao.PAYMENTS ='"+Finance.getAcceptOfferInfo().getPayments()+"',"
+		    	+ " ao.FINANCINGRATIO = '"+Finance.getAcceptOfferInfo().getFinanceRate()+"' "
+		    +" WHEN NOT MATCHED THEN"
+		    +" INSERT (ID,CODE,FINANCECODE,OFFERAMOUNT,FINANCERATE,FINANCEDAYS,CAPITALSIDENAME,CSCONTACTSMAN,CSCONTACTSPHONE,CSENUU,"
+		    +" CSUSERUU,CSUSERNAME,FINANCESIDENAME,FSCONTACTSMAN,FSCONTACTSPHONE,OFFERTIME,STATUS,PAYMENTS,OFFERRATE,FINANCINGRATIO,UPLOADSTATUS)"
+		    + " values (AcceptOffer_seq.nextval,'"+Finance.getAcceptOfferInfo().getCode()+"','"+Finance.getAcceptOfferInfo().getFinanceCode()+"','"+Finance.getAcceptOfferInfo().getOfferAmount()+"',"
+				+ "'"+Finance.getAcceptOfferInfo().getOfferRate() * 100+"','"+Finance.getAcceptOfferInfo().getFinanceDays()+"','"+Finance.getAcceptOfferInfo().getCapitalSideName()+"','"+Finance.getAcceptOfferInfo().getCsContactsMan()+"',"
+			    + "'"+Finance.getAcceptOfferInfo().getCsContactsPhone()+"','"+Finance.getAcceptOfferInfo().getCsEnuu()+"','"+Finance.getAcceptOfferInfo().getCsUseruu()+"','"+Finance.getAcceptOfferInfo().getCsUserName()+"',"
+			    + "'"+Finance.getAcceptOfferInfo().getFinanceSideName()+"','"+Finance.getAcceptOfferInfo().getFsContactsMan()+"','"+Finance.getAcceptOfferInfo().getFsContactsPhone()+"','"+Finance.getAcceptOfferInfo().getOfferTime()+"',"
+			    + "'"+Finance.getAcceptOfferInfo().getStatus()+"','"+Finance.getAcceptOfferInfo().getPayments()+"','"+Finance.getAcceptOfferInfo().getOfferRate()+"',"
+			    + "'"+Finance.getAcceptOfferInfo().getFinanceRate() * 100+"','已上传')");
+			//融资需求
+			sqlsDemand.add("MERGE INTO ACCEPTFINANCEDEMAND a"
+				    +" USING (SELECT nvl(max(id),0) ID from ACCEPTFINANCEDEMAND where code = '"+Finance.getFinanceDemandInfo().getCode()+"') b"
+				    +" ON (a.ID = b.ID)"
+				    +" WHEN MATCHED THEN "
+				    +" UPDATE SET a.AMOUNT='"+Finance.getFinanceDemandInfo().getAmount()+"',a.DEALAMOUNT = '"+Finance.getFinanceDemandInfo().getDealAmount()+"',a.DEALRATE = '"+Finance.getFinanceDemandInfo().getDealRate()+"',"
+				    		+ "a.FSENNAME = '"+Finance.getFinanceDemandInfo().getFsEnName()+"',a.status = '"+Finance.getFinanceDemandInfo().getStatus()+"',a.FSCONTACTSPHONE = '"+Finance.getFinanceDemandInfo().getFsContactsPhone()+"',"
+				    		+ "a.PUBTIME = '"+Finance.getFinanceDemandInfo().getPubTime()+"',a.ENDTIME = '"+Finance.getFinanceDemandInfo().getEndTime()+"',"
+				    		+ "a.DEALTIME ='"+Finance.getFinanceDemandInfo().getDealTime()+"',a.OFFERCOUNT ='"+Finance.getFinanceDemandInfo().getOfferCount()+"',a.FSDEMANDAMOUNT = '"+Finance.getFinanceDemandInfo().getFsDemandAmount()+"'"
+				    +" WHEN NOT MATCHED THEN "
+				    +" INSERT (ID,CODE,ADOPTCODE,FINANCEDAYS,STATUS,AMOUNT,DEALAMOUNT,DEALRATE,FSENNAME,FSENUU,FSUSERNAME,FSUSERUU,FSCONTACTSMAN,"
+				    + "FSCONTACTSPHONE,CSENNAME,CSENUU,CSUSERNAME,CSUSERUU,CSCONTACTSMAN,CSCONTACTSPHONE,PUBTIME,ENDTIME,DEALTIME,OFFERCOUNT,FSDEMANDAMOUNT,UPLOADSTATUS)"
+    			+ " values (ACCEPTFINANCEDEMAND_seq.nextval,'"+Finance.getFinanceDemandInfo().getCode()+"','"+Finance.getFinanceDemandInfo().getAdoptCode()+"','"+Finance.getFinanceDemandInfo().getFinanceDays()+"',"
+    					+ "'"+Finance.getFinanceDemandInfo().getStatus()+"','"+Finance.getFinanceDemandInfo().getAmount()+"','"+Finance.getFinanceDemandInfo().getDealAmount()+"','"+Finance.getFinanceDemandInfo().getDealRate()+"',"
+    				    + "'"+Finance.getFinanceDemandInfo().getFsEnName()+"','"+Finance.getFinanceDemandInfo().getFsEnuu()+"','"+Finance.getFinanceDemandInfo().getFsUserName()+"','"+Finance.getFinanceDemandInfo().getFsUseruu()+"',"
+    				    + "'"+Finance.getFinanceDemandInfo().getFsContactsMan()+"','"+Finance.getFinanceDemandInfo().getFsContactsPhone()+"','"+Finance.getFinanceDemandInfo().getCsEnName()+"','"+Finance.getFinanceDemandInfo().getCsEnuu()+"',"
+    				    + "'"+Finance.getFinanceDemandInfo().getCsUserName()+"','"+Finance.getFinanceDemandInfo().getCsUseruu()+"','"+Finance.getFinanceDemandInfo().getCsContactsMan()+"',"
+    				    + "'"+Finance.getFinanceDemandInfo().getCsContactsPhone()+"','"+Finance.getFinanceDemandInfo().getPubTime()+"','"+Finance.getFinanceDemandInfo().getEndTime()+"'"
+    				    + ",'"+Finance.getFinanceDemandInfo().getDealTime()+"','"+Finance.getFinanceDemandInfo().getOfferCount()+"','"+Finance.getFinanceDemandInfo().getFsDemandAmount()+"'"
+    				    + ",'已上传')");
+			sqls.addAll(getFinanceOfferDetailsSqls(Finance.getAcceptOfferInfo().getCode()));
+			if(Finance.getAcceptOfferInfo().getStatus() == 1002){
+				String aaCode = jdbcTemplate.generateCode("AccountApply!YSB2", 2);
+				sqlloand.add("MERGE INTO AccountApply a"
+					    +" USING (SELECT nvl(max(AA_ID),0) ID from AccountApply where AA_CODE = '"+aaCode+"') b"
+					    +" ON (a.AA_ID = b.ID)"
+					    +" WHEN MATCHED THEN "
+					    +" UPDATE SET a.AA_CUSTNAME ='"+Finance.getFinanceDemandInfo().getCsUserName()+"'"
+					    +" WHEN NOT MATCHED THEN "
+                        +" INSERT(AA_ID, AA_CODE, AA_CUSTCODE, AA_CUSTNAME, AA_STATUS, AA_SACODES, AA_BILLCODES,"
+	        			+ " AA_BILLAMOUNT, AA_CURRENCY, AA_DUEAMOUNT, AA_BANK, AA_BACKBANKNO, AA_LOANDATE, AA_BACKDATE, "
+	        			+ "AA_INTERESTRATE, AA_PENALTYRATE, AA_LENDRATE, AA_EFFECTDAYS, AA_HANDRATE, AA_OTHRATE, AA_ISNOTARIZATION,"
+	        			+ " AA_OTHERS, AA_REMARK, AA_TRUSTER, AA_APPLYDATE, AA_RECORDER, AA_INDATE, AA_AUDITMAN, AA_AUDITDATE, "
+	        			+ "AA_STATUSCODE, AA_ISPENALTY, AA_CACODE, AA_INTERESTPAYMETHOD, AA_FACTORING, AA_HAND, AA_MATURITYDATE, "
+	        			+ "AA_LEFTAMOUNT, AA_INTERESTPAY, AA_AHEADPOUNDAGE, AA_OVERDUEDAYS, AA_ISCLOSEOFF, AA_CATECODE, AA_CATEDESC,"
+	        			+ " AA_ISOVERDUE, AA_ODCODE, AA_INTEREST, AA_ARID, AA_ARCODE, AA_SAAMOUNT, AA_THISPAYAMOUNT, AA_THISPAYDATE, "
+	        			+ "AA_TURNSTATUS, AA_TURNSTATUSCODE, AA_YAMOUNT, AA_MFCUSTCODE, AA_MFCUSTNAME, AA_TRANSFERAMOUNT, AA_ACTPAYDATE,"
+	        			+ " AA_DOWNPAY, AA_DOWNPAYDESC, AA_MARGIN, AA_MARGINAMOUNT, AA_MARGINDATE, AA_GRACEPERIOD, AA_GRACEDAYS, "
+	        			+ "AA_GRACERATE, AA_ASSUREMEANS, AA_CUSTACCOUNT, AA_LIVEYEAR, AA_AAID, AA_PRODUCTTYPE, AA_CLASS, AA_WANTAMOUNT, "
+	        			+ "AA_FACTORCODE, AA_FACTORNAME, AA_LASTUPDATEDATE, AA_FIRSTDATE, AA_DEBXDATE, AA_DEBJDATE, AA_SENDSTATUS, " 
+	        			+ "AA_B2BCODE, AA_AGREE, AA_MATURITY, AA_FINANCEDEMANDCODE, AA_ACCEPTOFFERCODE, AA_LOANCODE, AA_CSENUU, "
+	        			+ "AA_FSENUU, AA_FSNAME, AA_RECEIVABLESARRIVALDATE, AA_FINANCERATE, AA_LOANAMOUNT, AA_LOANRATE, "
+	        			+ "AA_REPAYMENTFREQUENCY, AA_FSCOLLECTIONBANK, AA_FSCOLLECTIONACCOUNT, AA_FSCOLLECTIONNAME, "
+	        			+ "AA_RECEIPTFORLOAN, AA_INTERESTPAYABLE, AA_BEOVERDUE, AA_SETTLE, AA_PERSONINCHARGE, AA_APPROVALDATE, "
+	        			+ "AA_APPROVALMAN, AA_UPLOADSTATUS,AA_B2BSTATUS,AA_REPAYMENTDATA,AA_B2BAA_APPLYDATE,AA_B2BAA_AUDITDATE) "
+					    
+					    + "values (AccountApply_seq.nextval,'"+aaCode+"',null,null,'在录入',null,null,null,' ',null,null,null,null,null,'"+Finance.getAcceptOfferInfo().getOfferRate()+"',null,'"+Finance.getAcceptOfferInfo().getFinancingRatio()+"',null,null,null,null,null,null"
+    			        + ",'"+Finance.getFinanceDemandInfo().getCsUserName()+"',null,null,sysdate,null,null,'ENTERING',null,null,null,null,null"
+    				    + ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null"
+    					+ ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,'"+Finance.getFinanceDemandInfo().getCode()+"','"+Finance.getAcceptOfferInfo().getCode()+"',"
+    					+ "'"+aaCode+"','"+Finance.getAcceptOfferInfo().getCsEnuu()+"','"+Finance.getFinanceDemandInfo().getFsEnuu()+"','"+Finance.getFinanceDemandInfo().getFsEnName()+"',"
+    				    + "null,'"+Finance.getAcceptOfferInfo().getFinancingRatio()+"',null,"
+    				    + "'"+Finance.getAcceptOfferInfo().getOfferRate()+"','"+Finance.getAcceptOfferInfo().getPayments()+"',null,"
+    				    + "null,null,null,null,"
+    				    + "null,null,'"+Finance.getFinanceDemandInfo().getCsUserName()+"',null,null,'已上传',"
+    				    + "'"+Finance.getAcceptOfferInfo().getStatus()+"',null,null,null)");
+			}
+		}
+        jdbcTemplate.batchExecute(sqls);  //报价信息
+        jdbcTemplate.batchExecute(sqlsDemand);   //融资信息
+        jdbcTemplate.batchExecute(sqlloand);   //放款信息
+	}
+	//报价详情
+    public List<String> getFinanceOfferDetailsSqls(String OfferCode) throws Exception{
+	List<String> sqls = new ArrayList<String>();
+	GetFinanceOfferDetailsReq.Builder req = GetFinanceOfferDetailsReq.newBuilder();
+	//System.out.println("OfferCode:"+OfferCode);
+	req.setOfferCode(OfferCode);
+	GetFinanceOfferDetailsResp resp = capitalSideSdk.getFinanceOfferDetails(req);
+	FinanceOfferDetails adetaillist =  resp.getFinanceOfferInfo();
+	List<OfferDetailAndFinanceAccept> restlist = adetaillist.getOfferDetailAndFinanceAcceptInfoList();
+	//System.out.println("从表1:"+restlist.size());
+	//System.out.println("从表1:"+restlist.toString());
+	for(OfferDetailAndFinanceAccept rest :restlist){
+		//报价明细
+		int offerDetailCount = jdbcTemplate.count(" from acceptOfferDetail where acceptOfferCode =?",OfferCode);
+		//System.out.println("acceptOfferDetail:"+offerDetailCount);
+		if(offerDetailCount == 0){
+			AcceptOfferDetail acceptOfferDetail = rest.getAcceptOfferDetail();
+			sqls.add("insert into acceptOfferDetail(id_,MIANcode,acceptOfferCode,financeDemandDetailCode,financeDemandDetailAcceptCode,offerAmount) "
+					+ "values (acceptOfferDetail_seq.nextval,'"+acceptOfferDetail.getCode()+"','"+acceptOfferDetail.getAcceptOfferCode()+"',"
+					+ "'"+acceptOfferDetail.getFinanceDemandDetailCode()+"','"+acceptOfferDetail.getFinanceDemandDetailAcceptCode()+"'"
+					+ ",'"+acceptOfferDetail.getOfferAmount()+"')");
+		}
+		//融资需求与B2B订单信息
+		int accepDetailCount = jdbcTemplate.count(" from ACCEPTFINANCEDEMANDDETAIL where FINANCEDEMANDCODE =?",rest.getFinanceDemandDetail().getFinanceDemandCode());
+		//System.out.println("ACCEPTFINANCEDEMANDDETAIL:"+accepDetailCount);
+		if(accepDetailCount == 0){
+			sqls.add("insert into ACCEPTFINANCEDEMANDDETAIL(ID,CODE,FINANCEDEMANDCODE,CUSTENUU,CUSTENNAME,CUSTGRADE,PAYMENTS,ORDERID,ORDERCODE,ORDERTOTAL,"
+					+ "ACCEPTAMOUNT,UPLOADSTATUS) "
+					+ "values (ACCEPTFINANCEDEMANDDETAIL_seq.nextval,'"+rest.getFinanceDemandDetail().getCode()+"','"+rest.getFinanceDemandDetail().getFinanceDemandCode()+"','"+rest.getFinanceDemandDetail().getCustEnuu()+"',"
+					+ "'"+rest.getFinanceDemandDetail().getCustEnName()+"','"+rest.getFinanceDemandDetail().getCustGrade()+"','"+rest.getFinanceDemandDetail().getPayments()+"','"+rest.getFinanceDemandDetail().getOrderId()+"',"
+					+ "'"+rest.getFinanceDemandDetail().getOrderCode()+"','"+rest.getFinanceDemandDetail().getOrderTotal()+"','"+rest.getFinanceDemandDetail().getAcceptAmount()+"','已上传')");
+		}
+		 //融资需求与B2B验收单信息单详情
+		int accepDetCount = jdbcTemplate.count(" from FINANCEDEMANDDETAILACCEPT where FINANCEDEMANDCODE =?",rest.getFinanceDemandDetailAccept().getFinanceDemandCode());
+		//System.out.println("FINANCEDEMANDDETAILACCEPT:"+accepDetCount);
+		if(accepDetCount == 0){
+			sqls.add("insert into FINANCEDEMANDDETAILACCEPT(ID,CODE,FINANCEDEMANDCODE,FINANCEDEMANDDETAILCODE,ORDERITEMID,ACCEPTITEMID,ACCEPTID,ACCEPTAMOUNT,ACCEPTDATE,ACCEPTCODE,"
+        			+ "ACCEPTSTATUS,TITLE,SPEC,PRODUCTCODE,STATUS,UPLOADSTATUS) "
+        			+ "values (FINANCEDEMANDDETAILACCEPT_seq.nextval,'"+rest.getFinanceDemandDetailAccept().getCode()+"','"+rest.getFinanceDemandDetailAccept().getFinanceDemandCode()+"','"+rest.getFinanceDemandDetailAccept().getFinanceDemandDetailCode()+"',"
+        			+ "'"+rest.getFinanceDemandDetailAccept().getOrderItemId()+"','"+rest.getFinanceDemandDetailAccept().getAcceptItemId()+"','"+rest.getFinanceDemandDetailAccept().getAcceptId()+"','"+rest.getFinanceDemandDetailAccept().getAcceptAmount()+"',"
+        					+ "( ("+rest.getFinanceDemandDetailAccept().getAcceptDate()+"/(1000*60*60*24)) + to_date('19700101 08:00:00','yyyymmdd hh24:mi:ss') ),"
+        		    + "'"+rest.getFinanceDemandDetailAccept().getAcceptCode()+"','"+rest.getFinanceDemandDetailAccept().getAcceptStatus()+"',"
+        		    + "'"+rest.getFinanceDemandDetailAccept().getTitle()+"','"+rest.getFinanceDemandDetailAccept().getSpec()+"',"
+        		    + "'"+rest.getFinanceDemandDetailAccept().getProductCode()+"','"+rest.getFinanceDemandDetailAccept().getStatus()+"','已上传')");
+		}
+	}
+	return sqls;
+}
+}
+

+ 1 - 1
src/test/java/com/uas/erp/test/SdkTest.java

@@ -53,7 +53,7 @@ public class SdkTest extends AbstractTask {
          master.setMa_user("YITOA_BL");
          master.setMa_uu(10050877L);
          ContextHolder.setMaster(master);
-		 b2BInformation.getFinanceOfferDetails();
+		 //b2BInformation.getFinanceOfferDetails();
 	 }