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