Commit 42704b65 authored by 郝彦辉's avatar 郝彦辉

Ocr识别的身份证有效期校验

parent 224afef1
package cn.quantgroup.report.config.datasource.baihang;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Import(BaiHangDataSourcePreperties.class)
@Configuration
@Slf4j
@MapperScan(basePackages = BaiHangDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "baihangSqlSessionFactory")
public class BaiHangDataSourceConfig {
static final String PACKAGE = "cn.quantgroup.report.mapper.baihang";
@Value("${baihang.mapper-locations}")
private String mapperLocations;
@Value("${baihang.type-aliases-package}")
private String typeAliasesPackage;
@Value("${config-location}")
private String configLocation;
@Autowired
private BaiHangDataSourcePreperties baiHangDataSourcePreperties;
@Bean(name = "baihangDataSource")
@Primary
public DataSource baihangDataSource() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(baiHangDataSourcePreperties.getJdbcUrl());
log.info("百行征信数据库地址:{}", baiHangDataSourcePreperties.getJdbcUrl());
config.setPassword(baiHangDataSourcePreperties.getPassword());
config.setUsername(baiHangDataSourcePreperties.getUsername());
config.setMaximumPoolSize(baiHangDataSourcePreperties.getMaxPoolSize());
config.setMinimumIdle(baiHangDataSourcePreperties.getMinPoolSize());
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
return new HikariDataSource(config);
}
@Bean(name = "baihangTransactionManager")
@Primary
public DataSourceTransactionManager baihangTransactionManager(@Qualifier("baihangDataSource") DataSource baihangDataSource) {
return new DataSourceTransactionManager(baihangDataSource);
}
@Bean(name = "baihangSqlSessionFactory")
@Primary
public SqlSessionFactory baihangSqlSessionFactory(@Qualifier("baihangDataSource") DataSource baihangDataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(baihangDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(mapperLocations));
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
sessionFactory.setConfigLocation(new PathMatchingResourcePatternResolver()
.getResource(configLocation));
return sessionFactory.getObject();
}
@Bean(name = "baihangSqlSessionTemplate")
@Primary
public SqlSessionTemplate baihangSqlSessionTemplate(@Qualifier("baihangSqlSessionFactory") SqlSessionFactory baihangSqlSessionFactory) throws Exception {
return new SqlSessionTemplate(baihangSqlSessionFactory);
}
}
package cn.quantgroup.report.config.datasource.baihang;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Setter
@Getter
@Configuration
public class BaiHangDataSourcePreperties {
@Value("${db.driver}")
private String driverClass;
@Value("${baihang.db.minPoolSize}")
private int minPoolSize;
@Value("${baihang.db.maxPoolSize}")
private int maxPoolSize;
@Value("${data.source.baihang.jdbcUrl}")
private String jdbcUrl;
//private String jdbcUrl = "jdbc:mysql://172.20.6.29:4010/rc_real_time_data_pool?useUnicode=true&characterEncoding=UTF8&useSSL=false";
//private String jdbcUrl = "jdbc:mysql://172.20.6.21:4010/rc_real_time_data_pool?useUnicode=true&characterEncoding=UTF8&useSSL=false";
@Value("${data.source.baihang.username}")
private String username;
@Value("${data.source.baihang.password}")
private String password;
}
package cn.quantgroup.report.domain.baihang;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 申请贷款信息
*
* @Author fengjunkai
* @Date 2019-03-26 14:32
*/
@Data
public class ApplyLoanInfo {
private String reqID;
private String uploadTs;
private String name;
private String pid;
private String mobile;
private String queryReason;
private String guaranteeType;
private String loanPurpose;
private String customType;
private String applyAmount;
private String loanId;
}
package cn.quantgroup.report.domain.baihang;
import java.math.BigDecimal;
import lombok.Data;
/**
* 申请贷款信息
*
* @Author fengjunkai
* @Date 2019-03-26 14:32
*/
@Data
public class ApplyLoanInfoZhuDai {
private String reqID;
private String opCode;//操作代码A-增加 M-修改
private String uploadTs;
private int isFinTechAgencyBusiness;//是否是助贷业务 N
private String applyDate;
private String applyId;
private int applyType;
private String name;
private int idType;
private String pid;
private String mobile;
private String emailAddress; //电子邮箱
private int eduBackground;//学历
private int degree;//学位
private int guaranteeType;//信贷业务担保类型
private int loanPurpose;//贷款用途 Y/N
private int customType; //客户类型
private BigDecimal applyAmount; //申请贷款金额
private String businessOrgCreditCode;//业务发生机构代码 Y/N
//private String homeAddress; //N
//private String homePhone; //N
//private String workName; //N
//private String workAddress; //N
//private String workPhone; //N
//private String idAddress; //N
//private String mailAddress; //N
private int livingCondition;//居住状况
private int marriageStatus; //婚姻状况
private String spouseName;//配偶姓名 Y/N
//private Integer spouseIdType;
//private String spousePid;
//private String spouseMobile;
//private String spouseWorkName;
//private String firstContactsName; //第一联系人姓名 Y/N
//private Integer firstContactsRelationship;
//private Integer firstContactsIdType;
//private String firstContactsPid;
//private String firstContactsMobile; //第一联系人手机号码 Y/N
//private String firstContactsTelephone;
//private String firstContactsWorkName;
//private String secondContactsName;//第二联系人姓名 Y/N
//private Integer secondContactsRelationship;
//private Integer secondContactsIdType;
//private String secondContactsPid;
//private String secondContactsMobile;//第二联系人手机号码 Y/N
//private String secondContactsTelephone;
//private String secondContactsWorkName;
//device;
//deviceType;
//imei;
//mac;
//ipAddress;
//osName;
}
package cn.quantgroup.report.domain.baihang;
import lombok.Builder;
import lombok.Data;
/**
* @Author fengjunkai
* @Date 2019-04-24 15:46
*/
@Builder
@Data
public class BaiHangName {
private String loanId;
}
package cn.quantgroup.report.domain.baihang;
import lombok.Data;
/**
* @Author fengjunkai
* @Date 2019-04-24 15:46
*/
@Data
public class BaiHangNameResult {
private String name;
private String mobile;
private String pid;
}
package cn.quantgroup.report.domain.baihang;
import lombok.Builder;
import lombok.Data;
/**
* @Author fengjunkai
* @Date 2019-04-20 13:30
*/
@Data
@Builder
public class BaiHangRepayment {
private String sendDate;
private String loanId;
private int termNo;
}
package cn.quantgroup.report.domain.baihang;
import lombok.Builder;
import lombok.Data;
/**
* @Author fengjunkai
* @Date 2019-07-12 18:44
*/
@Builder
@Data
public class BaiHangThreeElements {
private String name;
private String idCard;
private String phone;
}
package cn.quantgroup.report.domain.baihang;
import lombok.Builder;
import lombok.Data;
/**
* @Author fengjunkai
* @Date 2019-04-16 16:29
*/
@Builder
@Data
public class BaiHangTimeRecord {
private String startTime;
private String endTime;
}
package cn.quantgroup.report.domain.baihang;
import lombok.Builder;
import lombok.Data;
/**
* @Author fengjunkai
* @Date 2019-04-16 20:11
*/
@Builder
@Data
public class BaiHangUpDateRecord {
private String enable;
private String recordId;
private String opCode;
}
package cn.quantgroup.report.domain.baihang;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 放款-资金合作方信息
*
* @Author fengjunkai
* @Date 2019-03-26 14:49
*/
@Data
public class FinTechAgencyBusinessZhuDai implements Serializable {
private static final long serialVersionUID = 7293591774673907983L;
private String institutionalFundingPartner; //资金合作方名称
private String institutionalFundingPartnerID; //资金合作方代码
private String relationID; //助贷机构与资金合作方的关联码
private String institutionalFundingPartnerLoanID; //资金合作方贷款/授信账户编号 N
private String orderID; //助贷业务贷款订单编号
private BigDecimal preCreditLimit; //预授信额度 N
}
package cn.quantgroup.report.domain.baihang;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 放款用户信息
*
* @Author fengjunkai
* @Date 2019-03-26 14:49
*/
@Data
public class LoanInfoZhuDai extends FinTechAgencyBusinessZhuDai implements Serializable {
private static final long serialVersionUID = 7293591774673907983L;
private String reqID; //记录唯一ID
private String opCode; //操作代码A-增加 M-修改
private String uploadTs; //记录生成时间 ISO 8601格式 LocalDateTime生成 2016-03-08T10:03:10
//businessOrgCreditCod 业务发生机构代码 Y/N 实际开展本信贷业务的机构的代码。
private String name; //姓名
private String pid; //身份证好
private String mobile; //手机号
private String loanId; //贷款编号
//originalLoanId
private int guaranteeType; //贷款担保类型
private int loanPurpose; //借款用途
private String applyDate;// 贷款申请时间
private String accountOpenDate; //账户开立时间
private String issueDate; //贷款放款时间
private String dueDate; //贷款到期日期 YYYY-MM-DD
private BigDecimal loanAmount; //贷款金额
private int totalTerm; //还款总期数
private int targetRepayDateType; //账单日类型
private int termPeriod;//每期还款周期
private String firstRepaymentDate; //首次应还款日期 YYYY-MM-DD
private int gracePeriod; //宽限日
private String targetRepayDateList; //账单日列表
private String recordId;
}
package cn.quantgroup.report.domain.baihang;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 放款用户信息
*
* @Author fengjunkai
* @Date 2019-03-26 14:49
*/
@Data
public class LoanInfoZhuDaiVo implements Serializable {
private static final long serialVersionUID = 7293591774673907983L;
private String reqID; //记录唯一ID
private String opCode; //操作代码A-增加 M-修改
private String uploadTs; //记录生成时间 ISO 8601格式 LocalDateTime生成 2016-03-08T10:03:10
private String name; //姓名
private String pid; //身份证好
private String mobile; //手机号
private String loanId; //贷款编号
//originalLoanId
private int guaranteeType; //贷款担保类型
private int loanPurpose; //借款用途
private String applyDate;// 贷款申请时间
private String accountOpenDate; //账户开立时间
private String issueDate; //贷款放款时间
private String dueDate; //贷款到期日期 YYYY-MM-DD
private BigDecimal loanAmount; //贷款金额
private int totalTerm; //还款总期数
private int targetRepayDateType; //账单日类型
private int termPeriod;//每期还款周期
private String firstRepaymentDate; //首次应还款日期 YYYY-MM-DD
private int gracePeriod; //宽限日
private String targetRepayDateList; //账单日列表
private FinTechAgencyBusinessZhuDai finTechAgencyBusiness; //资金合作方信息
//可以为空
/*"device": {
"deviceType": 1,
"imei": "ABCDEFG12345678",
"mac": "ABCD12345678",
"ipAddress": "139.129.1.54",
"osName": 2
}*/
}
package cn.quantgroup.report.domain.baihang;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 还款用户信息
*
* @Author fengjunkai
* @Date 2019-03-26 15:13
*/
@Data
public class RepaymentInfoZhuDai implements Serializable {
private static final long serialVersionUID = 8722959335665582382L;
private String reqID; //记录唯一标示
private String opCode; //操作CODE a-增加 m-修改
private String uploadTs; //记录生成时间 ISO 8601
private String loanId; //贷款ID
private String name;
private String pid;
private String mobile;
private int termNo; //当前还款期数
private String termStatus; //本期还款状态
private String targetRepaymentDate; //本期应还款日 YYYY-MM-DD
private String realRepaymentDate; //实际还款日期ISO 8601 Y/N
private BigDecimal plannedPayment; //本期计划应还款金额
private BigDecimal targetRepayment; //本期剩余应还款金额
private BigDecimal realRepayment; // 本次还款金额
private String overdueStatus; //当前逾期天数
private String statusConfirmAt;//本期还款状态确认时间
private BigDecimal overdueAmount; //当前逾期总金额
private BigDecimal remainingAmount; //贷款余额
private int loanStatus; //本笔贷款状态
//businessOrgCreditCode 业务发生机构代码string Y/N
private String recordId;
}
package cn.quantgroup.report.domain.baihang;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 还款用户信息
*
* @Author fengjunkai
* @Date 2019-03-26 15:13
*/
@Data
public class RepaymentLoanInfoLog implements Serializable {
private static final long serialVersionUID = 8722959335665582382L;
private String reqID; //记录唯一标示
private String opCode; //操作CODE a-增加 m-修改
private String uploadTs; //记录生成时间 ISO 8601
private String loanId; //贷款ID
private String name;
private String pid;
private String mobile;
private int termNo; //当前还款期数
private String termStatus; //本期还款状态
private String targetRepaymentDate; //本期应还款日 YYYY-MM-DD
private String realRepaymentDate; //实际还款日期ISO 8601
private BigDecimal plannedPayment; //本期计划应还款金额
private BigDecimal targetRepayment; //本期剩余应还款金额
private BigDecimal realRepayment; // 本次还款金额
private String overdueStatus; //当前逾期天数
private String statusConfirmAt;//本期还款状态确认时间
private BigDecimal overdueAmount; //当前逾期总金额
private BigDecimal remainingAmount; //贷款余额
private int loanStatus; //本笔贷款状态
private String recordId;
private Long id;
private Integer enable;
private String createdAt;
private String updatedAt;
}
......@@ -52,7 +52,8 @@ public class SynUserOcrJob {
* -----------------------------------------------------------------------------
*/
@Async
@Scheduled(cron = "0 30 04 * * ?")
//@Scheduled(cron = "0 30 04 * * ?")
@Scheduled(cron = "0 31 14 * * ?")
public void startSynUserOcr() {
if (increment()) {
redisTemplate.expire(Constant.QG_RENHANG_REPORT_SYN_USEROCR_LOCK_KEY, 10, TimeUnit.SECONDS);
......
package cn.quantgroup.report.mapper.baihang;
import cn.quantgroup.report.domain.baihang.ApplyLoanInfoZhuDai;
import cn.quantgroup.report.domain.baihang.BaiHangTimeRecord;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* -----------------------------------------------------------------------------<br>
* 描述: 贷款申请信息查询mapper <br>
* 作者:yanhui.Hao <br>
* 时间:2019.11.06 <br>
* 授权: (C) Copyright (c) 2017 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Repository
public interface ApplyLoanInfoMapper {
//广达小贷-申请实时
//List<ApplyLoanInfo> findApplyLoanInfo();
//广达小贷-申请存量
//List<ApplyLoanInfo> findStockApplyLoanInfo();
/**
* 描述: 百行-助贷申请存量数据 <br/>
* 参数: 日期 BaiHangTimeRecord: startTime和endsTime <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.23 <br/>
*/
@Deprecated
List<ApplyLoanInfoZhuDai> queryStockApplyLoanInfoZhuDai(BaiHangTimeRecord baiHangTimeRecord);
/**
* 描述: 1.1百行助贷-非联合贷 实时申请 <br/>
* 参数: 日期 BaiHangTimeRecord: startTime和endsTime <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.28 <br/>
*/
List<ApplyLoanInfoZhuDai> findRealTimeApplyLoanZhuDai(BaiHangTimeRecord timeRecord);
/**
* 描述: 1.2百行助贷-联合贷 实时申请 <br/>
* 参数: 日期 BaiHangTimeRecord: startTime和endsTime <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.28 <br/>
*/
List<ApplyLoanInfoZhuDai> findRealTimeApplyLoanZhuDaiLh(BaiHangTimeRecord timeRecord);
}
package cn.quantgroup.report.mapper.baihang;
import cn.quantgroup.report.domain.baihang.BaiHangTimeRecord;
import cn.quantgroup.report.domain.baihang.LoanInfoZhuDai;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 放款信息查询
*
* @Author fengjunkai
* @Date 2019-03-26 15:26
*/
@Repository
public interface LoanInfoMapper {
//报送实时放款数据(广达百行征信报送)
//List<LoanInfoZhuDai> findLoanInfo();
//List<LoanInfoZhuDai> findLoanInfoByTime(BaiHangTimeRecord baiHangTimeRecord);
//List<LoanInfoZhuDai> stockLoanInfo();
/**
* 描述: 根据loan_application_history_id查询xyqb_i_repayment_plan表最晚还款日 <br/>
* 参数: loan_application_history_id <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.11.06 <br/>
*/
List<String> findTargetRepaymentDayList(String reqId);
/**
* 描述: 根据order_no查询 loan_application_history_id <br/>
* 参数: orderNoArray<br/>
* 返回值: String <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.09.24 <br/>
*/
List<String> findHistoryIdByOrderNo(String[] orderNoArray);
/**
* 描述: 根据loan_application_history_id查询手动报送的bean <br/>
* 参数: loanApplicationHistoryId <br/>
* 返回值: LoanInfoZhuDai <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.09.25 <br/>
*/
LoanInfoZhuDai findLoanInfoD2ByHistoryId(String loanApplicationHistoryId);
/**
* 描述: 百行-助贷放款存量数据 <br/>
* 参数: 日期 BaiHangTimeRecord: startTime和endsTime <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.23 <br/>
*/
@Deprecated
List<LoanInfoZhuDai> queryStockLoanInfoZhuDai(BaiHangTimeRecord baiHangTimeRecord);
/**
* 描述: 2.1百行助贷-非联合贷 实时放款数据 <br/>
* 参数: <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.28 <br/>
*/
List<LoanInfoZhuDai> findRealTimeLoanInfoZhuDai(BaiHangTimeRecord timeRecord);
/**
* 描述: 2.2百行助贷-联合贷 实时放款数据 <br/>
* 参数: <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.28 <br/>
*/
List<LoanInfoZhuDai> findRealTimeLoanInfoZhuDaiLh(BaiHangTimeRecord timeRecord);
}
package cn.quantgroup.report.mapper.baihang;
import cn.quantgroup.report.domain.baihang.BaiHangTimeRecord;
import cn.quantgroup.report.domain.baihang.RepaymentInfoZhuDai;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 还款信息查询
*
* @Author fengjunkai
* @Date 2019-03-26 15:27
*/
@Repository
public interface RepaymentLoanInfoMapper {
//实时还款(广达百行征信报送)
//List<RepaymentInfoZhuDai> findRepayMentLoanInfo(BaiHangTimeRecord baiHangTimeRecord);
//实时逾期还款(广达百行征信报送)
//List<RepaymentInfoZhuDai> findRepayMentLoanInfoOverdue(BaiHangTimeRecord baiHangTimeRecord);
///List<RepaymentInfoZhuDai> findStockRepayMentLoanInfo(BaiHangTimeRecord baiHangTimeRecord);
//List<RepaymentInfoZhuDai> findStockRepayMentLoanInfoOverdue(BaiHangTimeRecord baiHangTimeRecord);
//BaiHangNameResult findName(BaiHangName baiHangName);
/**
* 描述: 百行-助贷逾期还款存量数据 整理 <br/>
* 参数: 日期 BaiHangTimeRecord: startTime和endsTime <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.23 <br/>
*/
@Deprecated
List<RepaymentInfoZhuDai> queryStockRepayMentInfoOverdueZhuDai(BaiHangTimeRecord baiHangTimeRecord);
/**
* 描述: 百行-助贷还款存量数据 整理 <br/>
* 参数: 日期 BaiHangTimeRecord: startTime和endsTime <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.23 <br/>
*/
@Deprecated
List<RepaymentInfoZhuDai> queryStockRepayMentInfoZhuDai(BaiHangTimeRecord baiHangTimeRecord);
/**
* 描述: 3.1百行助贷-非联合贷 实时还款 <br/>
* 参数: 日期 BaiHangTimeRecord: startTime和endsTime <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.28 <br/>
*/
List<RepaymentInfoZhuDai> findRealTimeRepayMentInfo(BaiHangTimeRecord baiHangTimeRecord);
/**
* 描述: 3.2百行助贷-联合贷 实时还款 <br/>
* 参数: 日期 BaiHangTimeRecord: startTime和endsTime <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.28 <br/>
*/
List<RepaymentInfoZhuDai> findRealTimeRepayMentInfoLh(BaiHangTimeRecord baiHangTimeRecord);
/**
* 描述: 4.1百行助贷-非联合贷 实时逾期还款 <br/>
* 参数: 日期 BaiHangTimeRecord: startTime和endsTime <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.28 <br/>
*/
List<RepaymentInfoZhuDai> findRealTimeRepayMentOverdue(BaiHangTimeRecord baiHangTimeRecord);
/**
* 描述: 4.2百行助贷-联合贷 实时逾期还款 <br/>
* 参数: 日期 BaiHangTimeRecord: startTime和endsTime <br/>
* 返回值: <br/>
* 创建人: yanhui.Hao <br/>
* 创建时间: 2019.10.28 <br/>
*/
List<RepaymentInfoZhuDai> findRealTimeRepayMentOverdueLh(BaiHangTimeRecord baiHangTimeRecord);
}
......@@ -99,14 +99,43 @@ public class UserOcrService {
userOcrVo.setUuid(uuid);
}
userOcrVo.setAgency(idCardContentB.getString("agency"));//签发机关
userOcrVo.setValidDateBegin(idCardContentB.getString("valid_date_begin"));//有效日期之起始日期 格式:20131022
userOcrVo.setValidDateEnd(idCardContentB.getString("valid_date_end"));//有效日期之结束日期 格式:20231022
//有效日期之起始日期 格式:20131022
String beginTime = idCardContentB.getString("valid_date_begin");
if(StringUtils.isNotBlank(beginTime)){
if("".equals(beginTime.trim())){
userOcrVo.setValidDateBegin(null);
}else{
userOcrVo.setValidDateBegin(beginTime.trim());
}
}
//有效日期之结束日期 格式:20231022
String end_time = idCardContentB.getString("valid_date_end");
if(StringUtils.isNotBlank(end_time)){
end_time = end_time.trim();
int length = end_time.length();
if("".equals(end_time) || length==0){
userOcrVo.setValidDateEnd(null);
}
else if(length==8){
userOcrVo.setValidDateEnd(end_time);
}
else if(length > 0 && end_time.contains("长期")){
//长期、长期有效
userOcrVo.setValidDateEnd("长期");
}else {
userOcrVo.setValidDateEnd(null);
}
}
}
if (userOcrVo != null) {
resultList.add(userOcrVo);
}
} catch (Exception e) {
log.error("从hbase中查询身份证正反面异常, uuid: {} ", uuid, e);
} finally {
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.quantgroup.report.mapper.baihang.ApplyLoanInfoMapper">
<resultMap id="ApplyLoanInfoBaseResultMap" type="cn.quantgroup.report.domain.baihang.ApplyLoanInfo">
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="pid" jdbcType="VARCHAR" property="pid"/>
<result column="mobile" jdbcType="VARCHAR" property="mobile"/>
<result column="queryReason" jdbcType="INTEGER" property="queryReason"/>
<result column="guaranteeType" jdbcType="INTEGER" property="guaranteeType"/>
<result column="loanPurpose" jdbcType="INTEGER" property="loanPurpose"/>
<result column="customType" jdbcType="INTEGER" property="customType"/>
<result column="applyAmount" jdbcType="DECIMAL" property="applyAmount"/>
<result column="loanId" jdbcType="VARCHAR" property="loanId"/>
</resultMap>
<!--<select id="findApplyLoanInfo" resultMap="ApplyLoanInfoBaseResultMap">
select b.name as name, b.id_no as pid, b.phone_no as mobile, '1' as queryReason, '1' as guaranteeType, '1' as loanPurpose, '99' as customType, '-1' as applyAmount, a.order_no as loanId
from xyqb_i_apply_quota_record a left join xyqb_user_i_user_detail b on a.user_id=b.user_id
where a.created_at>=DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y-%m-%d');
</select>-->
<!--<select id="findApplyLoanInfoByThreeElements" parameterType="cn.quantgroup.report.domain.baihang.BaiHangThreeElements" resultMap="ApplyLoanInfoBaseResultMap">
select b.name as name, b.id_no as pid, b.phone_no as mobile, '1' as queryReason, '1' as guaranteeType, '1' as loanPurpose, '99' as customType, '-1' as applyAmount, a.order_no as loanId
from xyqb_i_apply_quota_record a left join xyqb_user_i_user_detail b on a.user_id=b.user_id
where b.name=#{name} and b.id_no=#{idCard} and b.phone_no=#{phone} limit 1;
</select>-->
<!--申请-->
<!--<select id="findStockApplyLoanInfo" resultMap="ApplyLoanInfoBaseResultMap">
select * from
(select
b.name name
,b.id_no pid
,b.phone_no mobile
,'1' queryReason
,'1' guaranteeType
,'1' loanPurpose
,'99' customType
,'-1' applyAmount
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
from xyqb_i_loan_application_manifest_history a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
where a.funding_corp_id=480 and a.transaction_status in (2,5) and a.loan_paid_at > '2019-05-09 19:07:00' and a.loan_paid_at &lt; '2019-05-29') a
</select>-->
<!--百行-助贷申请存量数据 整理 2019.10.23-->
<select id="queryStockApplyLoanInfoZhuDai" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord" resultType="cn.quantgroup.report.domain.baihang.ApplyLoanInfoZhuDai">
select a.loan_application_history_id reqID
from xyqb_i_loan_application_manifest_history a
where a.loan_paid_at >= #{startTime,jdbcType=VARCHAR}
and a.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
</select>
<!--1.1百行助贷-非联合贷 申请实时 2019.10.28-->
<select id="findRealTimeApplyLoanZhuDai" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord" resultType="cn.quantgroup.report.domain.baihang.ApplyLoanInfoZhuDai">
select
a.id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,'1' isFinTechAgencyBusiness
,DATE_FORMAT(case when i.created_at is null and h.created_at &lt;= f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end,'%Y-%m-%dT%H:%i:%S') as applyDate
,if(d.order_no is null,a.loan_application_history_id,d.order_no) applyId
,'1' applyType
,b.name name
,'1' idType
,b.id_no pid
,b.phone_no mobile
,b.email emailAddress
,case when j.education=1 then '10'
when j.education=2 then '20'
when j.education=3 then '30'
when j.education in (4,6) then '40'
when j.education=5 then '50'
when j.education in (7,8) then '60'
else '70' end eduBackground
,'500' degree
,'1' guaranteeType
,'1' loanPurpose
,'99' customType
,'-1' applyAmount
,'8' livingCondition
,case when j.marry_status=1 then '10'
when j.marry_status=2 then '20'
when j.marry_status=4 then '30'
when j.marry_status=3 then '40'
else '90' end marriageStatus
from xyqb_i_loan_application_manifest_history a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join xyqb_i_loan_submit_info f on a.loan_application_history_id=f.loan_id
left join xyqb_i_loan_application_history h on a.loan_application_history_id=h.id
/* 2020.01.06表迁移 left join xyqb_i_quota_credit i on d.order_no=i.order_no */
left join business_flow_i_apply_list i on d.order_no=i.apply_no
left join xyqb_i_loan_base_info j on a.loan_application_history_id=j.loan_id
where a.funding_corp_id in (420,520,580,650,670,810,240,640,700)
and a.contract_term not in (2,3)
and a.transaction_status in (2,5)
and case when i.created_at is null and h.created_at &lt;=f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end >= #{startTime,jdbcType=VARCHAR}
and case when i.created_at is null and h.created_at &lt;=f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end &lt; #{endTime,jdbcType=VARCHAR};
<!-- p2p 2019.12.13 -->
<!--
select
a.id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,'1' isFinTechAgencyBusiness
,DATE_FORMAT(case when i.created_at is null and h.created_at &lt;= f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end,'%Y-%m-%dT%H:%i:%S') as applyDate
,if(d.order_no is null,a.loan_application_history_id,d.order_no) applyId
,'1' applyType
,b.name name
,'1' idType
,b.id_no pid
,b.phone_no mobile
,b.email emailAddress
,case when j.education=1 then '10'
when j.education=2 then '20'
when j.education=3 then '30'
when j.education in (4,6) then '40'
when j.education=5 then '50'
when j.education in (7,8) then '60'
else '70' end eduBackground
,'500' degree
,'1' guaranteeType
,'1' loanPurpose
,'99' customType
,'-1' applyAmount
,'8' livingCondition
,case when j.marry_status=1 then '10'
when j.marry_status=2 then '20'
when j.marry_status=4 then '30'
when j.marry_status=3 then '40'
else '90' end marriageStatus
from xyqb_i_loan_application_manifest_history a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join xyqb_i_loan_submit_info f on a.loan_application_history_id=f.loan_id
left join xyqb_i_loan_application_history h on a.loan_application_history_id=h.id
left join xyqb_i_quota_credit i on d.order_no=i.order_no
left join xyqb_i_loan_base_info j on a.loan_application_history_id=j.loan_id
where a.funding_corp_id in (540,210)
and a.contract_term >=3
and a.transaction_status in (2,5)
and case when i.created_at is null and h.created_at &lt;= f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end >= #{startTime,jdbcType=VARCHAR}
and case when i.created_at is null and h.created_at &lt;= f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end &lt; #{endTime,jdbcType=VARCHAR};
-->
</select>
<!--1.2百行助贷-联合贷 申请实时 2019.10.28-->
<select id="findRealTimeApplyLoanZhuDaiLh" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord" resultType="cn.quantgroup.report.domain.baihang.ApplyLoanInfoZhuDai">
select
a.id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,'1' isFinTechAgencyBusiness
,DATE_FORMAT(case when i.created_at is null and h.created_at &lt;=f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end,'%Y-%m-%dT%H:%i:%S') as applyDate
,if(d.order_no is null,a.loan_application_history_id,d.order_no) applyId
,'1' applyType
,b.name name
,'1' idType
,b.id_no pid
,b.phone_no mobile
,b.email emailAddress
,case when j.education=1 then '10'
when j.education=2 then '20'
when j.education=3 then '30'
when j.education in (4,6) then '40'
when j.education=5 then '50'
when j.education in (7,8) then '60'
else '70' end eduBackground
,'500' degree
,'1' guaranteeType
,'1' loanPurpose
,'99' customType
,'-1' applyAmount
,'8' livingCondition
,case when j.marry_status=1 then '10'
when j.marry_status=2 then '20'
when j.marry_status=4 then '30'
when j.marry_status=3 then '40'
else '90' end marriageStatus
from xyqb_i_loan_application_manifest_history a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join xyqb_i_loan_submit_info f on a.loan_application_history_id=f.loan_id
left join xyqb_i_loan_application_history h on a.loan_application_history_id=h.id
/* 2020.01.06表迁移 left join xyqb_i_quota_credit i on d.order_no=i.order_no */
left join business_flow_i_apply_list i on d.order_no=i.apply_no
left join xyqb_i_loan_base_info j on a.loan_application_history_id=j.loan_id
where a.funding_corp_id in (880,890)
and a.contract_term not in (2,3)
and a.transaction_status in (2,5)
and case when i.created_at is null and h.created_at &lt;=f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end >= #{startTime,jdbcType=VARCHAR}
and case when i.created_at is null and h.created_at &lt;=f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end &lt; #{endTime,jdbcType=VARCHAR};
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.quantgroup.report.mapper.baihang.LoanInfoMapper">
<!--<resultMap id="LoanInfoResultMap" type="cn.quantgroup.report.domain.baihang.LoanInfoVo">
<result column="reqID" jdbcType="VARCHAR" property="reqID"/>
<result column="opCode" jdbcType="VARCHAR" property="opCode"/>
<result column="uploadTs" jdbcType="VARCHAR" property="uploadTs"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="pid" jdbcType="VARCHAR" property="pid"/>
<result column="mobile" jdbcType="VARCHAR" property="mobile"/>
<result column="loanId" jdbcType="VARCHAR" property="loanId"/>
<result column="guaranteeType" jdbcType="VARCHAR" property="guaranteeType"/>
<result column="loanPurpose" jdbcType="VARCHAR" property="loanPurpose"/>
<result column="applyDate" jdbcType="VARCHAR" property="applyDate"/>
<result column="accountOpenDate" jdbcType="VARCHAR" property="accountOpenDate"/>
<result column="issueDate" jdbcType="VARCHAR" property="issueDate"/>
<result column="dueDate" jdbcType="VARCHAR" property="dueDate"/>
<result column="loanAmount" jdbcType="VARCHAR" property="loanAmount"/>
<result column="totalTerm" jdbcType="VARCHAR" property="totalTerm"/>
<result column="targetRepayDateType" jdbcType="VARCHAR" property="targetRepayDateType"/>
<result column="termPeriod" jdbcType="VARCHAR" property="termPeriod"/>
<result column="firstRepaymentDate" jdbcType="VARCHAR" property="firstRepaymentDate"/>
<result column="gracePeriod" jdbcType="VARCHAR" property="gracePeriod"/>
</resultMap>-->
<resultMap id="LoanInfoVoResultMapByBS" type="cn.quantgroup.report.domain.baihang.LoanInfoZhuDai"><!-- LoanInfoVo-->
<result column="reqID" jdbcType="INTEGER" property="reqID"/>
<result column="opCode" jdbcType="VARCHAR" property="opCode"/>
<result column="uploadTs" jdbcType="VARCHAR" property="uploadTs"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="pid" jdbcType="VARCHAR" property="pid"/>
<result column="mobile" jdbcType="VARCHAR" property="mobile"/>
<result column="loanId" jdbcType="VARCHAR" property="loanId"/>
<result column="guaranteeType" jdbcType="INTEGER" property="guaranteeType"/>
<result column="loanPurpose" jdbcType="INTEGER" property="loanPurpose"/>
<result column="applyDate" jdbcType="VARCHAR" property="applyDate"/>
<result column="accountOpenDate" jdbcType="VARCHAR" property="accountOpenDate"/>
<result column="issueDate" jdbcType="VARCHAR" property="issueDate"/>
<result column="dueDate" jdbcType="VARCHAR" property="dueDate"/>
<result column="loanAmount" jdbcType="VARCHAR" property="loanAmount"/>
<result column="totalTerm" jdbcType="INTEGER" property="totalTerm"/>
<result column="targetRepayDateType" jdbcType="VARCHAR" property="targetRepayDateType"/>
<result column="termPeriod" jdbcType="VARCHAR" property="termPeriod"/>
<result column="firstRepaymentDate" jdbcType="VARCHAR" property="firstRepaymentDate"/>
<result column="gracePeriod" jdbcType="VARCHAR" property="gracePeriod"/>
</resultMap>
<!--报送实时放款数据(广达百行征信报送)-->
<!-- <select id="findLoanInfo" resultMap="LoanInfoResultMap" >
select a.loan_application_history_id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,b.name name
,b.id_no pid
,b.phone_no mobile
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,'1' guaranteeType
,'1' loanPurpose
,DATE_FORMAT(case when i.created_at is null and h.created_at&lt;=f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end,'%Y-%m-%dT%H:%i:%S') as applyDate
,DATE_FORMAT(case when d.created_at is null and f.created_at>=h.created_at then f.created_at
when d.created_at is null and f.created_at&lt;h.created_at then h.created_at
else d.created_at end,'%Y-%m-%dT%H:%i:%S') as accountOpenDate
,DATE_FORMAT(a.loan_paid_at,'%Y-%m-%dT%H:%i:%S') issueDate
,date(date_sub(e.deadline,INTERVAL 1 second)) dueDate
,a.contract_loan_amount loanAmount
,a.contract_term totalTerm
,if(a.contract_term=1,'1','2') targetRepayDateType
,if(a.contract_term=1,'30','-1') termPeriod
,date(date_sub(g.deadline,INTERVAL 1 second)) firstRepaymentDate
,'0' gracePeriod
from xyqb_i_loan_application_manifest_history a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join xyqb_i_repayment_plan e on a.loan_application_history_id=e.loan_application_history_id
left join xyqb_i_loan_submit_info f on a.loan_application_history_id=f.loan_id
left join xyqb_i_repayment_plan g on a.loan_application_history_id=g.loan_application_history_id
left join xyqb_i_loan_application_history h on a.loan_application_history_id=h.id
left join xyqb_i_quota_credit i on d.order_no=i.order_no
/*where a.funding_corp_id in (480,710) and e.term_no=a.contract_term and g.term_no=1*/
where a.funding_corp_id in (480,710,630,790,820) and e.term_no=a.contract_term and g.term_no=1
and a.transaction_status in (2,5)
and a.created_at>=DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y-%m-%d')
and a.created_at&lt;DATE_FORMAT(NOW(), '%Y-%m-%d');
</select>-->
<!--广达重新报送实时放款数据-->
<!--<select id="findLoanInfoByTime" resultMap="LoanInfoResultMap" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord">
select a.loan_application_history_id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,b.name name
,b.id_no pid
,b.phone_no mobile
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,'1' guaranteeType
,'1' loanPurpose
,DATE_FORMAT(case when i.created_at is null and h.created_at&lt;=f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end,'%Y-%m-%dT%H:%i:%S') as applyDate
,DATE_FORMAT(case when d.created_at is null and f.created_at>=h.created_at then f.created_at
when d.created_at is null and f.created_at&lt;h.created_at then h.created_at
else d.created_at end,'%Y-%m-%dT%H:%i:%S') as accountOpenDate
,DATE_FORMAT(a.loan_paid_at,'%Y-%m-%dT%H:%i:%S') issueDate
,date(date_sub(e.deadline,INTERVAL 1 second)) dueDate
,a.contract_loan_amount loanAmount
,a.contract_term totalTerm
,if(a.contract_term=1,'1','2') targetRepayDateType
,if(a.contract_term=1,'30','-1') termPeriod
,date(date_sub(g.deadline,INTERVAL 1 second)) firstRepaymentDate
,'0' gracePeriod
from xyqb_i_loan_application_manifest_history a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join xyqb_i_repayment_plan e on a.loan_application_history_id=e.loan_application_history_id
left join xyqb_i_loan_submit_info f on a.loan_application_history_id=f.loan_id
left join xyqb_i_repayment_plan g on a.loan_application_history_id=g.loan_application_history_id
left join xyqb_i_loan_application_history h on a.loan_application_history_id=h.id
left join xyqb_i_quota_credit i on d.order_no=i.order_no
where a.funding_corp_id in (480,710) and e.term_no=a.contract_term and g.term_no=1
and a.transaction_status in (2,5)
and a.created_at>=#{startTime}
and a.created_at&lt;#{endTime};
</select>-->
<!--广达存量放款数据报送-->
<!-- <select id="stockLoanInfo" resultMap="LoanInfoResultMap" >
select a.loan_application_history_id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,b.name name
,b.id_no pid
,b.phone_no mobile
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,'1' guaranteeType
,'1' loanPurpose
,DATE_FORMAT(case when i.created_at is null and h.created_at&lt;=f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end,'%Y-%m-%dT%H:%i:%S') as applyDate
,DATE_FORMAT(case when d.created_at is null and f.created_at>=h.created_at then f.created_at
when d.created_at is null and f.created_at&lt;h.created_at then h.created_at
else d.created_at end,'%Y-%m-%dT%H:%i:%S') as accountOpenDate
,DATE_FORMAT(a.loan_paid_at,'%Y-%m-%dT%H:%i:%S') issueDate
,date(date_sub(e.deadline,INTERVAL 1 second)) dueDate
,a.contract_loan_amount loanAmount
,a.contract_term totalTerm
,if(a.contract_term=1,'1','2') targetRepayDateType
,if(a.contract_term=1,'30','-1') termPeriod
,date(date_sub(g.deadline,INTERVAL 1 second)) firstRepaymentDate
,'0' gracePeriod
from xyqb_i_loan_application_manifest_history a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join xyqb_i_repayment_plan e on a.loan_application_history_id=e.loan_application_history_id
left join xyqb_i_loan_submit_info f on a.loan_application_history_id=f.loan_id
left join xyqb_i_repayment_plan g on a.loan_application_history_id=g.loan_application_history_id
left join xyqb_i_loan_application_history h on a.loan_application_history_id=h.id
left join xyqb_i_quota_credit i on d.order_no=i.order_no
where a.funding_corp_id in (480,710) and e.term_no=a.contract_term and g.term_no=1
and a.transaction_status in (2,5);
/* and a.loan_paid_at > '2019-05-09 10:30:07' and a.loan_paid_at &lt; '2019-05-29' order by a.loan_paid_at;*/
</select>-->
<!--根据loan_application_history_id查询最晚还款日-->
<select id="findTargetRepaymentDayList" parameterType="java.lang.String" resultType="java.lang.String">
select date(DATE_SUB(deadline,INTERVAL 1 second)) from xyqb_i_repayment_plan where loan_application_history_id=#{reqID}
</select>
<!--1.根据order_no查询 loan_application_history_id 工具报送 2019.09.25-->
<select id="findHistoryIdByOrderNo" resultType="java.lang.String">
select a.loan_application_history_id as loanApplicationHistoryId
from xyqb_i_loan_application_manifest_history a
left join rc_real_time_data_pool.xyqb_i_loan_account_ext b on a.loan_application_history_id=b.loan_id
left join rc_real_time_data_pool.xyqb_i_apply_quota_record c on b.order_no=c.order_no
where c.order_no IN
<foreach collection="array" item="orderNo" index="index" open="(" close=")" separator=",">
#{orderNo}
</foreach>
</select>
<!--2.根据loan_application_history_id查询工具报送的bean 放款 2019.09.25-->
<select id="findLoanInfoD2ByHistoryId" resultType="cn.quantgroup.report.domain.baihang.LoanInfoZhuDai"> <!--resultMap="LoanInfoVoResultMapByBS"-->
select a.loan_application_history_id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(a.funding_corp_id in (240,640,700),'深圳市小赢科技有限责任公司','广州惠金小额贷款有限公司') institutionalFundingPartner
,if(a.funding_corp_id in (240,640,700),'91440300MA5DMXHN4R','91440101MA59G7X78Y') institutionalFundingPartnerID
,j.corp_loan_id relationID
,'' institutionalFundingPartnerLoanID
,if(d.order_no is null,a.loan_application_history_id,d.order_no) orderID
,'' preCreditLimit
,b.name name
,b.id_no pid
,b.phone_no mobile
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,'1' guaranteeType
,'1' loanPurpose
,DATE_FORMAT(case when i.created_at is null and h.created_at &lt;=f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end,'%Y-%m-%dT%H:%i:%S') as applyDate
,DATE_FORMAT(case when d.created_at is null and f.created_at>=h.created_at then f.created_at
when d.created_at is null and f.created_at &lt; h.created_at then h.created_at
else d.created_at end,'%Y-%m-%dT%H:%i:%S') as accountOpenDate
,DATE_FORMAT(a.loan_paid_at,'%Y-%m-%dT%H:%i:%S') issueDate
,date(date_sub(e.deadline,INTERVAL 1 second)) dueDate
,a.contract_loan_amount loanAmount
,a.contract_term totalTerm
,'2' targetRepayDateType
,'-1' termPeriod
,date(date_sub(g.deadline,INTERVAL 1 second)) firstRepaymentDate
-- ,'0' gracePeriod
-- ,'30' gracePeriod
,if(a.funding_corp_id in (880,890),'30','0') gracePeriod
from xyqb_i_loan_application_manifest_history a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join xyqb_i_repayment_plan e on a.loan_application_history_id=e.loan_application_history_id
left join xyqb_i_loan_submit_info f on a.loan_application_history_id=f.loan_id
left join xyqb_i_repayment_plan g on a.loan_application_history_id=g.loan_application_history_id
left join xyqb_i_loan_application_history h on a.loan_application_history_id=h.id
/* 2020.01.06表迁移 left join xyqb_i_quota_credit i on d.order_no=i.order_no */
left join business_flow_i_apply_list i on d.order_no=i.apply_no
left join xyqb_i_waiting_funding_corp_operate_people j on a.loan_application_history_id=j.loan_application_history_id
where a.funding_corp_id in (420,520,580,650,670,810,240,640,700, 880,890) and
e.term_no=a.contract_term and g.term_no=1
and a.contract_term not in (2,3)
and a.transaction_status in (2,5)
AND a.loan_application_history_id=#{loanApplicationHistoryId}
</select>
<!--百行-助贷放款存量数据 整理 2019.10.23-->
<select id="queryStockLoanInfoZhuDai" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord" resultType="cn.quantgroup.report.domain.baihang.LoanInfoZhuDai">
select a.loan_application_history_id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(a.funding_corp_id in (240,640,700),'深圳市小赢科技有限责任公司','广州惠金小额贷款有限公司') institutionalFundingPartner
,if(a.funding_corp_id in (240,640,700),'91440300MA5DMXHN4R','91440101MA59G7X78Y') institutionalFundingPartnerID
,j.corp_loan_id relationID
,'' institutionalFundingPartnerLoanID
,if(d.order_no is null,a.loan_application_history_id,d.order_no) orderID
,'' preCreditLimit
,b.name name
,b.id_no pid
,b.phone_no mobile
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,'1' guaranteeType
,'1' loanPurpose
,DATE_FORMAT(case when i.created_at is null and h.created_at &lt;= f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end,'%Y-%m-%dT%H:%i:%S') as applyDate
,DATE_FORMAT(case when d.created_at is null and f.created_at>=h.created_at then f.created_at
when d.created_at is null and f.created_at &lt; h.created_at then h.created_at
else d.created_at end,'%Y-%m-%dT%H:%i:%S') as accountOpenDate
,DATE_FORMAT(a.loan_paid_at,'%Y-%m-%dT%H:%i:%S') issueDate
,date(date_sub(e.deadline,INTERVAL 1 second)) dueDate
,a.contract_loan_amount loanAmount
,a.contract_term totalTerm
,if(a.contract_term=1,'1','2') targetRepayDateType
,if(a.contract_term=1,'30','-1') termPeriod
,date(date_sub(g.deadline,INTERVAL 1 second)) firstRepaymentDate
,'0' gracePeriod
from xyqb_i_loan_application_manifest_history a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join xyqb_i_repayment_plan e on a.loan_application_history_id=e.loan_application_history_id
left join xyqb_i_loan_submit_info f on a.loan_application_history_id=f.loan_id
left join xyqb_i_repayment_plan g on a.loan_application_history_id=g.loan_application_history_id
left join xyqb_i_loan_application_history h on a.loan_application_history_id=h.id
/* 2020.01.06表迁移 left join xyqb_i_quota_credit i on d.order_no=i.order_no */
left join business_flow_i_apply_list i on d.order_no=i.apply_no
left join xyqb_i_waiting_funding_corp_operate_people j on a.loan_application_history_id=j.loan_application_history_id
where a.funding_corp_id in (420,520,580,650,670,810,240,640,700) and e.term_no=a.contract_term and g.term_no=1
and a.contract_term not in (2,3)
and a.transaction_status in (2,5)
and a.loan_paid_at >= #{startTime,jdbcType=VARCHAR}
and a.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR};
</select>
<!--2.1百行助贷-非联合贷 放款实时 2019.10.28-->
<select id="findRealTimeLoanInfoZhuDai" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord" resultType="cn.quantgroup.report.domain.baihang.LoanInfoZhuDai">
select a.loan_application_history_id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(a.funding_corp_id in (240,640,700),'深圳市小赢科技有限责任公司','广州惠金小额贷款有限公司') institutionalFundingPartner
,if(a.funding_corp_id in (240,640,700),'91440300MA5DMXHN4R','91440101MA59G7X78Y') institutionalFundingPartnerID
,j.corp_loan_id relationID
,'' institutionalFundingPartnerLoanID
,if(d.order_no is null,a.loan_application_history_id,d.order_no) orderID
,'' preCreditLimit
,b.name name
,b.id_no pid
,b.phone_no mobile
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,'1' guaranteeType
,'1' loanPurpose
,DATE_FORMAT(case when i.created_at is null and h.created_at &lt;= f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end,'%Y-%m-%dT%H:%i:%S') as applyDate
,DATE_FORMAT(case when d.created_at is null and f.created_at>=h.created_at then f.created_at
when d.created_at is null and f.created_at &lt; h.created_at then h.created_at
else d.created_at end,'%Y-%m-%dT%H:%i:%S') as accountOpenDate
,DATE_FORMAT(a.loan_paid_at,'%Y-%m-%dT%H:%i:%S') issueDate
,date(date_sub(e.deadline,INTERVAL 1 second)) dueDate
,a.contract_loan_amount loanAmount
,a.contract_term totalTerm
,'2' targetRepayDateType
,'-1' termPeriod
,date(date_sub(g.deadline,INTERVAL 1 second)) firstRepaymentDate
,'0' gracePeriod
from xyqb_i_loan_application_manifest_history a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join xyqb_i_repayment_plan e on a.loan_application_history_id=e.loan_application_history_id
left join xyqb_i_loan_submit_info f on a.loan_application_history_id=f.loan_id
left join xyqb_i_repayment_plan g on a.loan_application_history_id=g.loan_application_history_id
left join xyqb_i_loan_application_history h on a.loan_application_history_id=h.id
/* 2020.01.06表迁移 left join xyqb_i_quota_credit i on d.order_no=i.order_no */
left join business_flow_i_apply_list i on d.order_no=i.apply_no
left join xyqb_i_waiting_funding_corp_operate_people j on a.loan_application_history_id=j.loan_application_history_id
where
a.loan_paid_at>= #{startTime,jdbcType=VARCHAR}
and a.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
and a.funding_corp_id in (420,520,580,650,670,810,240,640,700)
and e.term_no=a.contract_term and g.term_no=1
and a.contract_term not in (2,3)
and a.transaction_status in (2,5)
;
<!--p2p 2019.12.13-->
<!--select a.loan_application_history_id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(a.funding_corp_id=210,'大连金州广源小额贷款有限公司','广州惠金小额贷款有限公司') institutionalFundingPartner
,if(a.funding_corp_id=210,'91210200696039834G','91440101MA59G7X78Y') institutionalFundingPartnerID
,j.corp_loan_id relationID
,'' institutionalFundingPartnerLoanID
,if(d.order_no is null,a.loan_application_history_id,d.order_no) orderID
,'' preCreditLimit
,b.name name
,b.id_no pid
,b.phone_no mobile
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,'1' guaranteeType
,'1' loanPurpose
,DATE_FORMAT(case when i.created_at is null and h.created_at &lt;= f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end,'%Y-%m-%dT%H:%i:%S') as applyDate
,DATE_FORMAT(case when d.created_at is null and f.created_at>=h.created_at then f.created_at
when d.created_at is null and f.created_at &lt; h.created_at then h.created_at
else d.created_at end,'%Y-%m-%dT%H:%i:%S') as accountOpenDate
,DATE_FORMAT(a.loan_paid_at,'%Y-%m-%dT%H:%i:%S') issueDate
,date(date_sub(e.deadline,INTERVAL 1 second)) dueDate
,a.contract_loan_amount loanAmount
,a.contract_term totalTerm
,'2' targetRepayDateType
,'-1' termPeriod
,date(date_sub(g.deadline,INTERVAL 1 second)) firstRepaymentDate
,'0' gracePeriod
from xyqb_i_loan_application_manifest_history a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join xyqb_i_repayment_plan e on a.loan_application_history_id=e.loan_application_history_id
left join xyqb_i_loan_submit_info f on a.loan_application_history_id=f.loan_id
left join xyqb_i_repayment_plan g on a.loan_application_history_id=g.loan_application_history_id
left join xyqb_i_loan_application_history h on a.loan_application_history_id=h.id
left join xyqb_i_quota_credit i on d.order_no=i.order_no
left join xyqb_i_waiting_funding_corp_operate_people j on a.loan_application_history_id=j.loan_application_history_id
left join xyqb_i_loan_withdraw_record k on a.loan_application_history_id=k.loan_id
where a.funding_corp_id in (540,210) and g.term_no=1
and e.term_no=a.contract_term and e.repayment_status=3 and e.repaid_at &lt; '2019-10-25'
and if(a.loan_paid_at>='2018-01-01',a.contract_term >3,a.contract_term >=3)
and a.transaction_status in (2,5)
and (k.id is null or k.status=3)
and a.loan_paid_at >= #{startTime,jdbcType=VARCHAR}
and a.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR};
-->
</select>
<!--2.2百行助贷-联合贷 放款实时 2019.10.28-->
<select id="findRealTimeLoanInfoZhuDaiLh" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord" resultType="cn.quantgroup.report.domain.baihang.LoanInfoZhuDai">
select a.loan_application_history_id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,'广州惠金小额贷款有限公司' institutionalFundingPartner
,'91440101MA59G7X78Y' institutionalFundingPartnerID
,j.corp_loan_id relationID
,'' institutionalFundingPartnerLoanID
,if(d.order_no is null,a.loan_application_history_id,d.order_no) orderID
,'' preCreditLimit
,b.name name
,b.id_no pid
,b.phone_no mobile
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,'1' guaranteeType
,'1' loanPurpose
,DATE_FORMAT(case when i.created_at is null and h.created_at &lt;=f.created_at then h.created_at
when i.created_at is null and h.created_at>f.created_at then f.created_at
else i.created_at end,'%Y-%m-%dT%H:%i:%S') as applyDate
,DATE_FORMAT(case when d.created_at is null and f.created_at>=h.created_at then f.created_at
when d.created_at is null and f.created_at &lt;h.created_at then h.created_at
else d.created_at end,'%Y-%m-%dT%H:%i:%S') as accountOpenDate
,DATE_FORMAT(a.loan_paid_at,'%Y-%m-%dT%H:%i:%S') issueDate
,date(date_sub(e.deadline,INTERVAL 1 second)) dueDate
,a.contract_loan_amount loanAmount
,a.contract_term totalTerm
,'2' targetRepayDateType
,'-1' termPeriod
,date(date_sub(g.deadline,INTERVAL 1 second)) firstRepaymentDate
,'30' gracePeriod
from xyqb_i_loan_application_manifest_history a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join xyqb_i_repayment_plan e on a.loan_application_history_id=e.loan_application_history_id
left join xyqb_i_loan_submit_info f on a.loan_application_history_id=f.loan_id
left join xyqb_i_repayment_plan g on a.loan_application_history_id=g.loan_application_history_id
left join xyqb_i_loan_application_history h on a.loan_application_history_id=h.id
/* 2020.01.06表迁移 left join xyqb_i_quota_credit i on d.order_no=i.order_no */
left join business_flow_i_apply_list i on d.order_no=i.apply_no
left join xyqb_i_waiting_funding_corp_operate_people j on a.loan_application_history_id=j.loan_application_history_id
where
a.loan_paid_at>= #{startTime,jdbcType=VARCHAR}
and a.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
and a.funding_corp_id in (880,890)
and e.term_no=a.contract_term and g.term_no=1
and a.contract_term not in (2,3)
and a.transaction_status in (2,5)
;
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.quantgroup.report.mapper.baihang.RepaymentLoanInfoMapper">
<!--<resultMap id="RepaymetnLoanInfoResultMap" tyRepaymentLoanInfoInfo">-->
<!--<result column="reqID" jdbcType="VARCHAR" property="reqID"/>-->
<!--<result column="opCode" jdbcType="VARCHAR" property="opCode"/>-->
<!--<result column="uploadTs" jdbcType="VARCHAR" property="uploadTs"/>-->
<!--<result column="loanId" jdbcType="VARCHAR" property="loanId"/>-->
<!--<result column="name" jdbcType="VARCHAR" property="name"/>-->
<!--<result column="pid" jdbcType="VARCHAR" property="pid"/>-->
<!--<result column="mobile" jdbcType="VARCHAR" property="mobile"/>-->
<!--<result column="termNo" jdbcType="VARCHAR" property="termNo"/>-->
<!--<result column="termStatus" jdbcType="VARCHAR" property="termStatus"/>-->
<!--<result column="targetRepaymentDate" jdbcType="VARCHAR" property="targetRepaymentDate"/>-->
<!--<result column="realRepaymentDate" jdbcType="VARCHAR" property="realRepaymentDate"/>-->
<!--<result column="plannedPayment" jdbcType="VARCHAR" property="plannedPayment"/>-->
<!--<result column="targetRepayment" jdbcType="VARCHAR" property="targetRepayment"/>-->
<!--<result column="realRepayment" jdbcType="VARCHAR" property="realRepayment"/>-->
<!--<result column="overdueStatus" jdbcType="VARCHAR" property="overdueStatus"/>-->
<!--<result column="statusConfirmAt" jdbcType="VARCHAR" property="statusConfirmAt"/>-->
<!--<result column="overdueAmount" jdbcType="VARCHAR" property="overdueAmount"/>-->
<!--<result column="remainingAmount" jdbcType="VARCHAR" property="remainingAmount"/>-->
<!--<result column="loanStatus" jdbcType="VARCHAR" property="loanStatus"/>-->
<!--</resultMap>-->
<!--实时逾期还款(广达百行征信报送)-->
<!--<select id="findRepayMentLoanInfoOverdue"
parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord"
resultType="cn.quantgroup.report.domain.baihang.RepaymentInfoZhuDai">
select
a.id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,b.name name
,b.id_no pid
,b.phone_no mobile
,a.term_no termNo
,date(DATE_sub(a.deadline,INTERVAL 1 second)) targetRepaymentDate
,'' realRepaymentDate
,a.required_repayment plannedPayment
,f.yqze targetRepayment
,0 realRepayment
,case when f.yqze=0 then ''
else concat('D',DATEDIFF(#{endTime,jdbcType=VARCHAR},f.min_deadline)+1) end overdueStatus
,DATE_FORMAT(#{endTime,jdbcType=VARCHAR},'%Y-%m-%dT%H:%i:%S') statusConfirmAt
,f.yqze overdueAmount
,f.dkye remainingAmount
,case when f.yqze>0 then '2'
when f.dkye=0 then '3'
when f.yqze=0 and f.dkye>0 then '1'
end as loanStatus
,'overdue' termStatus
from (select a.*
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id
where a.repayment_status not in (3,4) and
if(b.contract_term>a.term_no,DATEDIFF(#{endTime,jdbcType=VARCHAR},a.deadline)=0,DATEDIFF(#{endTime,jdbcType=VARCHAR},a.deadline)>=0)
and floor(DATEDIFF(#{endTime,jdbcType=VARCHAR},a.deadline)/30)=DATEDIFF(#{endTime,jdbcType=VARCHAR,jdbcType=VARCHAR},a.deadline)/30
&#45;&#45; and (b.funding_corp_id=480 or (b.funding_corp_id=710 and b.loan_paid_at>='2019-05-29')) and b.transaction_status in (2,5) ) a
and (b.funding_corp_id=480 or (b.funding_corp_id=710 and b.loan_paid_at>='2019-05-29') or
(b.funding_corp_id in (630,790,820) and b.loan_paid_at>='2019-10-16')
) and b.transaction_status in (2,5) ) a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join (select a.loan_application_history_id
,sum(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},g.principal+g.interest+g.service_fee,0)) yqze
,sum(if(a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR}),g.principal,0)) dkye
,min(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.deadline,null)) min_deadline
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
&#45;&#45; where b.funding_corp_id in (480,710)
where b.funding_corp_id in (480,710,630,790,820)
group by a.loan_application_history_id) f on a.loan_application_history_id=f.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id;
</select>
-->
<!--实时还款(广达百行征信报送)-->
<!--<select id="findRepayMentLoanInfo" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord"
resultType="cn.quantgroup.report.domain.baihang.RepaymentInfoZhuDai">
select
a.id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,b.name name
,b.id_no pid
,b.phone_no mobile
,if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term) termNo
,date(DATE_sub(if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.deadline,h.max_deadline),INTERVAL 1 second)) targetRepaymentDate
,DATE_FORMAT(a.repaid_at,'%Y-%m-%dT%H:%i:%S') realRepaymentDate
,j.required_repayment plannedPayment
,f.yqze+sum(a.required_repayment) targetRepayment
,sum(a.required_repayment) realRepayment
,case when f.yqze=0 then ''
else concat('D',DATEDIFF(#{endTime,jdbcType=VARCHAR},f.min_deadline)+1) end overdueStatus
,DATE_FORMAT(#{endTime,jdbcType=VARCHAR},'%Y-%m-%dT%H:%i:%S') statusConfirmAt
,f.yqze overdueAmount
,min(i.dkye) remainingAmount
,case when f.yqze>0 then '2'
when i.dkye=0 and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term)&lt;f.max_term_no then '2'
when i.dkye=0 and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term)= f.max_term_no then '3'
when f.yqze=0 and i.dkye>0 then '1'
end as loanStatus
,if(f.yqze>0,'overdue','normal') termStatus
from (
select a.*,if(c.term_no is null,a.term_no,c.term_no) next_term
,if(c.deadline is null,a.deadline,c.deadline) next_deadline
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id
left join xyqb_i_repayment_plan c on a.loan_application_history_id=c.loan_application_history_id
and a.term_no=c.term_no-1
where a.repaid_at>=#{startTime,jdbcType=VARCHAR} and a.repaid_at &lt; #{endTime,jdbcType=VARCHAR} and a.repayment_status=3
and (b.funding_corp_id=480 or (b.funding_corp_id=710 and b.loan_paid_at>='2019-05-29') or
(b.funding_corp_id in (630,790,820) and b.loan_paid_at>='2019-10-16') )) a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join (
select a.loan_application_history_id
,sum(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.required_repayment,0)) yqze
,sum(if(a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR}),g.principal,0)) dkye
,min(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.deadline,null)) min_deadline
,max(a.term_no) max_term_no
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
where b.funding_corp_id in (480,710,630,790,820)
group by a.loan_application_history_id) f on a.loan_application_history_id=f.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
left join (
select a.loan_application_history_id,a.repaid_at,a.deadline,a.term_no
,max(c.term_no) max_term
,max(c.deadline) max_deadline
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id
left join xyqb_i_repayment_plan c on a.loan_application_history_id=c.loan_application_history_id
where DATEDIFF(a.repaid_at,c.deadline)>=-1
and b.funding_corp_id in (480,710,630,790,820)
group by a.loan_application_history_id,a.term_no) h
on a.loan_application_history_id=h.loan_application_history_id and a.term_no=h.term_no
left join (
select a.loan_application_history_id
,a.term_no
,sum(if(d.term_no>a.term_no,d.principal,0)) dkye
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id
left join xyqb_i_repayment_record d on a.loan_application_history_id=d.loan_application_history_id
where b.funding_corp_id in (480,710,630,790,820)
group by a.loan_application_history_id,a.term_no) i
on a.loan_application_history_id=i.loan_application_history_id and a.term_no=i.term_no
left join xyqb_i_repayment_plan j on a.loan_application_history_id=j.loan_application_history_id
and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term)=j.term_no
group by if(d.order_no is null,a.loan_application_history_id,d.order_no),
if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term)
</select>
-->
<!-- <select id="findName" parameterType="cn.quantgroup.report.domain.baihang.BaiHangName"
resultType="cn.quantgroup.report.domain.baihang.BaiHangNameResult">
select d.NAME name
,d.id_no pid
,d.phone_no mobile
from xyqb_i_loan_application_history a
left join xyqb_i_loan_account_ext b on a.id=b.loan_id
left join xyqb_i_apply_quota_record c on b.order_no=c.order_no
left join xyqb_user_i_user_detail d on a.user_id=d.user_id
where c.order_no=#{loanId}
union
select d.NAME name
,d.id_no pid
,d.phone_no mobile
from xyqb_i_loan_application_history a
left join xyqb_i_loan_account_ext b on a.id=b.loan_id
left join xyqb_i_apply_quota_record c on b.order_no=c.order_no
left join xyqb_user_i_user_detail d on a.user_id=d.user_id
where a.id=#{loanId};
</select>-->
<!--百行-助贷“逾期还款”存量数据 整理 2019.10.23-->
<select id="queryStockRepayMentInfoOverdueZhuDai" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord"
resultType="cn.quantgroup.report.domain.baihang.RepaymentInfoZhuDai">
select
a.id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,b.name name
,b.id_no pid
,b.phone_no mobile
,a.term_no termNo
,date(DATE_sub(a.deadline,INTERVAL 1 second)) targetRepaymentDate
,'' realRepaymentDate
,a.required_repayment plannedPayment
,f.yqze targetRepayment
,0 realRepayment
,case when f.yqze=0 then ''
else concat('D',DATEDIFF(#{endTime,jdbcType=VARCHAR},f.min_deadline)+1) end overdueStatus
,DATE_FORMAT(#{endTime,jdbcType=VARCHAR},'%Y-%m-%dT%H:%i:%S') statusConfirmAt
,f.yqze overdueAmount
,f.dkye remainingAmount
,case when f.yqze>0 then '2'
when f.dkye=0 then '3'
when f.yqze=0 and f.dkye>0 then '1'
end as loanStatus
,'overdue' termStatus
from (select a.*
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
where (a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and
if(b.contract_term>a.term_no,DATEDIFF(#{endTime,jdbcType=VARCHAR},a.deadline)=0,DATEDIFF(#{endTime,jdbcType=VARCHAR},a.deadline)>=0)
and floor(DATEDIFF(#{endTime,jdbcType=VARCHAR},a.deadline)/30)=DATEDIFF(#{endTime,jdbcType=VARCHAR},a.deadline)/30
and b.funding_corp_id in (420,520,580,650,670,810,240,640,700)
and b.transaction_status in (2,5)
and b.contract_term not in (2,3)) a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join (select a.loan_application_history_id
,sum(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},if(b.loan_paid_at>='2018-01-01',g.principal+g.interest+g.service_fee,h.principle+h.interest+h.service_fee_per_term),0)) yqze
,sum(if(a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR}),if(b.loan_paid_at>='2018-01-01',g.principal,h.principle),0)) dkye
,min(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.deadline,null)) min_deadline
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
left join xyqb_i_plan_amount_detail h on a.id=h.plan_id
where b.funding_corp_id in (420,520,580,650,670,810,240,640,700)
group by a.loan_application_history_id) f on a.loan_application_history_id=f.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
</select>
<!--百行-助贷“还款”存量数据 整理 2019.10.23-->
<select id="queryStockRepayMentInfoZhuDai" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord"
resultType="cn.quantgroup.report.domain.baihang.RepaymentInfoZhuDai">
select
a.id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,b.name name
,b.id_no pid
,b.phone_no mobile
,if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term) termNo
,date(DATE_sub(if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.deadline,h.max_deadline),INTERVAL 1 second)) targetRepaymentDate
,DATE_FORMAT(a.repaid_at,'%Y-%m-%dT%H:%i:%S') realRepaymentDate
,j.required_repayment plannedPayment
,f.yqze+sum(a.required_repayment) targetRepayment
,sum(a.required_repayment) realRepayment
,case when f.yqze=0 then ''
else concat('D',DATEDIFF(#{endTime,jdbcType=VARCHAR},f.min_deadline)+1) end overdueStatus
,DATE_FORMAT(#{endTime,jdbcType=VARCHAR},'%Y-%m-%dT%H:%i:%S') statusConfirmAt
,f.yqze overdueAmount
,min(i.dkye) remainingAmount
,case when f.yqze>0 then '2'
when i.dkye=0 and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term) &lt; f.max_term_no then '2'
when i.dkye=0 and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term)= f.max_term_no then '3'
when f.yqze=0 and i.dkye>0 then '1'
end as loanStatus
,if(f.yqze>0,'overdue','normal') termStatus
from (
select a.*,if(c.term_no is null,a.term_no,c.term_no) next_term
,if(c.deadline is null,a.deadline,c.deadline) next_deadline
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_plan c on a.loan_application_history_id=c.loan_application_history_id
and a.term_no=c.term_no-1
where a.repaid_at>=#{startTime,jdbcType=VARCHAR} and a.repaid_at &lt; #{endTime,jdbcType=VARCHAR} and a.repayment_status=3
and b.funding_corp_id in (420,520,580,650,670,810,240,640,700)
and b.contract_term not in (2,3)
) a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join (
select a.loan_application_history_id
,sum(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.required_repayment,0)) yqze
,sum(if(a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR}),if(b.loan_paid_at>='2018-01-01',g.principal,h.principle),0)) dkye
,min(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.deadline,null)) min_deadline
,max(a.term_no) max_term_no
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
left join xyqb_i_plan_amount_detail h on a.id=h.plan_id
where b.funding_corp_id in (420,520,580,650,670,810,240,640,700)
group by a.loan_application_history_id) f on a.loan_application_history_id=f.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
left join (
select a.loan_application_history_id,a.repaid_at,a.deadline,a.term_no
,max(c.term_no) max_term
,max(c.deadline) max_deadline
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_plan c on a.loan_application_history_id=c.loan_application_history_id
where DATEDIFF(a.repaid_at,c.deadline)>=-1
and b.funding_corp_id in (420,520,580,650,670,810,240,640,700)
group by a.loan_application_history_id,a.term_no) h
on a.loan_application_history_id=h.loan_application_history_id and a.term_no=h.term_no
left join (
select a.loan_application_history_id
,a.term_no
,sum(if(d.term_no>a.term_no,d.principal,0)) dkye
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_record d on a.loan_application_history_id=d.loan_application_history_id
where b.funding_corp_id in (420,520,580,650,670,810,240,640,700)
group by a.loan_application_history_id,a.term_no) i
on a.loan_application_history_id=i.loan_application_history_id and a.term_no=i.term_no
left join xyqb_i_repayment_plan j on a.loan_application_history_id=j.loan_application_history_id
and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term)=j.term_no
group by if(d.order_no is null,a.loan_application_history_id,d.order_no),
if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term)
</select>
<!--3.1百行助贷-非联合贷 实时还款 2019.10.28-->
<select id="findRealTimeRepayMentInfo" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord"
resultType="cn.quantgroup.report.domain.baihang.RepaymentInfoZhuDai">
<!-- 助贷 -->
select
a.id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,b.name name
,b.id_no pid
,b.phone_no mobile
,if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term) termNo
,date(DATE_sub(if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.deadline,h.max_deadline),INTERVAL 1 second)) targetRepaymentDate
,DATE_FORMAT(a.repaid_at,'%Y-%m-%dT%H:%i:%S') realRepaymentDate
,j.required_repayment plannedPayment
,f.yqze+sum(a.required_repayment) targetRepayment
,sum(a.required_repayment) realRepayment
,case when f.yqze=0 then ''
else concat('D',DATEDIFF( #{endTime,jdbcType=VARCHAR},f.min_deadline)+1) end overdueStatus
,DATE_FORMAT( #{endTime,jdbcType=VARCHAR},'%Y-%m-%dT%H:%i:%S') statusConfirmAt
,f.yqze overdueAmount
,min(if(a.loan_paid_at>='2018-01-01',i.dkye,i2.dkye)) remainingAmount
,case when f.yqze>0 then '2'
when min(if(a.loan_paid_at>='2018-01-01',i.dkye,i2.dkye))=0 and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term) &lt; f.max_term_no then '2'
when min(if(a.loan_paid_at>='2018-01-01',i.dkye,i2.dkye))=0 and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term)= f.max_term_no then '3'
when f.yqze=0 and min(if(a.loan_paid_at>='2018-01-01',i.dkye,i2.dkye))>0 then '1'
end as loanStatus
,if(f.yqze>0,'overdue','normal') termStatus
from (
select
a.id,a.user_id,a.loan_application_history_id,a.term_no,a.deadline,a.required_repayment,a.repayment_status,a.repaid_at,a.created_at,
if(c.term_no is null,a.term_no,c.term_no) next_term
,if(c.deadline is null,a.deadline,c.deadline) next_deadline
,b.loan_paid_at
from xyqb_i_repayment_plan_bak a
left join xyqb_i_loan_a_m_history_bak b
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_plan_bak c on a.loan_application_history_id=c.loan_application_history_id
and a.term_no=c.term_no-1
where a.repaid_at>= #{startTime,jdbcType=VARCHAR} and a.repaid_at &lt; #{endTime,jdbcType=VARCHAR} and a.repayment_status=3
/*and b.funding_corp_id in (420,520,580,650,670,810,240,640,700)*/
and b.contract_term not in (2,3)
) a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join (
select a.loan_application_history_id
,sum(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.required_repayment,0)) yqze
,sum(if(a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR}),if(b.loan_paid_at>='2018-01-01',g.principal,h.principle),0)) dkye
,min(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.deadline,null)) min_deadline
,max(a.term_no) max_term_no
from xyqb_i_repayment_plan_bak a
left join xyqb_i_loan_a_m_history_bak b on a.loan_application_history_id=b.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
left join xyqb_i_plan_amount_detail h on a.id=h.plan_id
/*where b.funding_corp_id in (420,520,580,650,670,810,240,640,700)*/
group by a.loan_application_history_id
) f on a.loan_application_history_id=f.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
left join (
select a.loan_application_history_id,a.repaid_at,a.deadline,a.term_no
,max(c.term_no) max_term
,max(c.deadline) max_deadline
from xyqb_i_repayment_plan_bak a
left join xyqb_i_loan_a_m_history_bak b
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_plan_bak c on a.loan_application_history_id=c.loan_application_history_id
where DATEDIFF(a.repaid_at,c.deadline)>=-1
/*and b.funding_corp_id in (420,520,580,650,670,810,240,640,700)*/
group by a.loan_application_history_id,a.term_no
) h
on a.loan_application_history_id=h.loan_application_history_id and a.term_no=h.term_no
left join (
select a.loan_application_history_id
,a.term_no
,sum(if(d.term_no>a.term_no,d.principal,0)) dkye
from xyqb_i_repayment_plan_bak a
left join xyqb_i_loan_a_m_history_bak b
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_record d on a.loan_application_history_id=d.loan_application_history_id
/*where b.funding_corp_id in (420,520,580,650,670,810,240,640,700)*/
group by a.loan_application_history_id,a.term_no
) i
on a.loan_application_history_id=i.loan_application_history_id and a.term_no=i.term_no
left join (
select a.loan_application_history_id
,a.term_no
,sum(if(e.term_no>a.term_no,h.principle,0)) dkye
from xyqb_i_repayment_plan_bak a
left join xyqb_i_loan_a_m_history_bak b
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_plan_bak e on a.loan_application_history_id=e.loan_application_history_id
left join xyqb_i_plan_amount_detail h on e.id=h.plan_id
/*where b.funding_corp_id in (420,520,580,650,670,810,240,640,700)*/
group by a.loan_application_history_id,a.term_no
) i2
on a.loan_application_history_id=i2.loan_application_history_id and a.term_no=i2.term_no
left join xyqb_i_repayment_plan_bak j on a.loan_application_history_id=j.loan_application_history_id
and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term)=j.term_no
group by if(d.order_no is null,a.loan_application_history_id,d.order_no),
if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term);
<!--p2p 2019.12.13-->
<!--
select
a.id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,b.name name
,b.id_no pid
,b.phone_no mobile
,if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term) termNo
,date(DATE_sub(if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.deadline,h.max_deadline),INTERVAL 1 second)) targetRepaymentDate
,DATE_FORMAT(a.repaid_at,'%Y-%m-%dT%H:%i:%S') realRepaymentDate
,j.required_repayment plannedPayment
,f.yqze+sum(a.required_repayment) targetRepayment
,sum(a.required_repayment) realRepayment
,case when f.yqze=0 then ''
else concat('D',DATEDIFF(#{endTime,jdbcType=VARCHAR},f.min_deadline)+1) end overdueStatus
,DATE_FORMAT(#{endTime,jdbcType=VARCHAR},'%Y-%m-%dT%H:%i:%S') statusConfirmAt
,f.yqze overdueAmount
,min(if(a.loan_paid_at>='2018-01-01',i.dkye,i2.dkye)) remainingAmount
,case when f.yqze>0 then '2'
when min(if(a.loan_paid_at>='2018-01-01',i.dkye,i2.dkye))=0 and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term) &lt; f.max_term_no then '2'
when min(if(a.loan_paid_at>='2018-01-01',i.dkye,i2.dkye))=0 and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term)= f.max_term_no then '3'
when f.yqze=0 and min(if(a.loan_paid_at>='2018-01-01',i.dkye,i2.dkye))>0 then '1'
end as loanStatus
,if(f.yqze>0,'overdue','normal') termStatus
from (
select /* a.*, */
a.id,a.user_id,a.loan_application_history_id,a.term_no,a.deadline,a.required_repayment,a.repayment_status,a.repaid_at,a.created_at,
if(c.term_no is null,a.term_no,c.term_no) next_term
,if(c.deadline is null,a.deadline,c.deadline) next_deadline
,b.loan_paid_at
from xyqb_i_repayment_plan_p2p_bak a
left join xyqb_i_loan_a_m_history_p2p_bak b /**xyqb_i_loan_application_manifest_history b*/
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_plan_p2p_bak c on a.loan_application_history_id=c.loan_application_history_id
and a.term_no=c.term_no-1
left join xyqb_i_loan_withdraw_record k on a.loan_application_history_id=k.loan_id
left join xyqb_i_repayment_plan_p2p_bak g on b.loan_application_history_id=g.loan_application_history_id
and g.term_no=b.contract_term
where a.repaid_at>=#{startTime,jdbcType=VARCHAR} and a.repaid_at &lt; #{endTime,jdbcType=VARCHAR} and a.repayment_status=3
and b.funding_corp_id in (210,540)
and if(b.loan_paid_at>='2018-01-01',b.contract_term >3,b.contract_term >=3)
and (k.id is null or k.status=3)
and g.repayment_status=3 and g.repaid_at &lt; '2019-10-25'
and b.loan_paid_at>='2016-11-01'
) a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join (
select a.loan_application_history_id
,sum(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.required_repayment,0)) yqze
,sum(if(a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR}),if(b.loan_paid_at>='2018-01-01',g.principal,h.principle),0)) dkye
,min(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.deadline,null)) min_deadline
,max(a.term_no) max_term_no
from xyqb_i_repayment_plan_p2p_bak a
left join xyqb_i_loan_a_m_history_p2p_bak b /**xyqb_i_loan_application_manifest_history b*/
on a.loan_application_history_id=b.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
left join xyqb_i_plan_amount_detail h on a.id=h.plan_id
where b.funding_corp_id in (210,540)
group by a.loan_application_history_id) f on a.loan_application_history_id=f.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
left join (
select a.loan_application_history_id,a.repaid_at,a.deadline,a.term_no
,max(c.term_no) max_term
,max(c.deadline) max_deadline
from xyqb_i_repayment_plan_p2p_bak a
left join xyqb_i_loan_a_m_history_p2p_bak b /**xyqb_i_loan_application_manifest_history b*/
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_plan_p2p_bak c on a.loan_application_history_id=c.loan_application_history_id
where DATEDIFF(a.repaid_at,c.deadline)>=-1
and b.funding_corp_id in (210,540)
group by a.loan_application_history_id,a.term_no) h
on a.loan_application_history_id=h.loan_application_history_id and a.term_no=h.term_no
left join (
select a.loan_application_history_id
,a.term_no
,sum(if(d.term_no>a.term_no,d.principal,0)) dkye
from xyqb_i_repayment_plan_p2p_bak a
left join xyqb_i_loan_a_m_history_p2p_bak b /**xyqb_i_loan_application_manifest_history b*/
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_record d on a.loan_application_history_id=d.loan_application_history_id
where b.funding_corp_id in (210,540)
group by a.loan_application_history_id,a.term_no) i
on a.loan_application_history_id=i.loan_application_history_id and a.term_no=i.term_no
left join (
select a.loan_application_history_id
,a.term_no
,sum(if(e.term_no>a.term_no,h.principle,0)) dkye
from xyqb_i_repayment_plan_p2p_bak a
left join xyqb_i_loan_a_m_history_p2p_bak b /**xyqb_i_loan_application_manifest_history b*/
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_plan_p2p_bak e on a.loan_application_history_id=e.loan_application_history_id
left join xyqb_i_plan_amount_detail h on e.id=h.plan_id
where b.funding_corp_id in (210,540)
group by a.loan_application_history_id,a.term_no) i2
on a.loan_application_history_id=i2.loan_application_history_id and a.term_no=i2.term_no
left join xyqb_i_repayment_plan_p2p_bak j on a.loan_application_history_id=j.loan_application_history_id
and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term)=j.term_no
group by if(d.order_no is null,a.loan_application_history_id,d.order_no),
if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term);
-->
</select>
<!--3.2百行助贷-联合贷 实时还款 2019.10.28-->
<select id="findRealTimeRepayMentInfoLh" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord"
resultType="cn.quantgroup.report.domain.baihang.RepaymentInfoZhuDai">
select
a.id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,b.name name
,b.id_no pid
,b.phone_no mobile
,if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term) termNo
,date(DATE_sub(if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.deadline,h.max_deadline),INTERVAL 1 second)) targetRepaymentDate
,DATE_FORMAT(a.repaid_at,'%Y-%m-%dT%H:%i:%S') realRepaymentDate
,j.required_repayment plannedPayment
,f.yqze+sum(a.required_repayment) targetRepayment
,sum(a.required_repayment) realRepayment
,case when f.yqze=0 then ''
else concat('D',DATEDIFF( #{endTime,jdbcType=VARCHAR},f.min_deadline)+1) end overdueStatus
,DATE_FORMAT( #{endTime,jdbcType=VARCHAR},'%Y-%m-%dT%H:%i:%S') statusConfirmAt
,f.yqze overdueAmount
,min(i.dkye) remainingAmount
,case when f.yqze>0 then '2'
when min(i.dkye)=0 and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term) &lt; f.max_term_no then '2'
when min(i.dkye)=0 and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term)= f.max_term_no then '3'
when f.yqze=0 and min(i.dkye)>0 then '1'
end as loanStatus
,if(f.yqze>0,'overdue','normal') termStatus
from (
select a.*,if(c.term_no is null,a.term_no,c.term_no) next_term
,if(c.deadline is null,a.deadline,c.deadline) next_deadline
,b.loan_paid_at
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_plan c on a.loan_application_history_id=c.loan_application_history_id
and a.term_no=c.term_no-1
where a.repaid_at>= #{startTime,jdbcType=VARCHAR} and a.repaid_at &lt; #{endTime,jdbcType=VARCHAR} and a.repayment_status=3
and b.funding_corp_id in (880,890)
and b.contract_term not in (2,3)
and b.loan_paid_at>='2019-10-25'
) a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join (
select a.loan_application_history_id
,sum(if(((a.repayment_status !=3 and DATEDIFF( #{endTime,jdbcType=VARCHAR},a.deadline)>=30) or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR} and DATEDIFF(a.repaid_at,a.deadline)>=30)) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.required_repayment,0)) yqze
,sum(if(a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR}),g.principal,0)) dkye
,min(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.deadline,null)) min_deadline
,max(a.term_no) max_term_no
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
where b.funding_corp_id in (880,890)
group by a.loan_application_history_id) f on a.loan_application_history_id=f.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
left join (
select a.loan_application_history_id,a.repaid_at,a.deadline,a.term_no
,max(c.term_no) max_term
,max(c.deadline) max_deadline
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_plan c on a.loan_application_history_id=c.loan_application_history_id
where DATEDIFF(a.repaid_at,c.deadline)>=-1
and b.funding_corp_id in (880,890)
group by a.loan_application_history_id,a.term_no) h
on a.loan_application_history_id=h.loan_application_history_id and a.term_no=h.term_no
left join (
select a.loan_application_history_id
,a.term_no
,sum(if(d.term_no>a.term_no,d.principal,0)) dkye
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_repayment_record d on a.loan_application_history_id=d.loan_application_history_id
where b.funding_corp_id in (880,890)
group by a.loan_application_history_id,a.term_no) i
on a.loan_application_history_id=i.loan_application_history_id and a.term_no=i.term_no
left join xyqb_i_repayment_plan j on a.loan_application_history_id=j.loan_application_history_id
and if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term)=j.term_no
group by if(d.order_no is null,a.loan_application_history_id,d.order_no),
if(DATEDIFF(a.next_deadline,a.repaid_at)>1,a.term_no,h.max_term);
</select>
<!--4.1百行助贷-非联合贷 实时逾期还款 2019.10.28-->
<select id="findRealTimeRepayMentOverdue" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord"
resultType="cn.quantgroup.report.domain.baihang.RepaymentInfoZhuDai">
<!-- 助贷 -->
select
a.id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,b.name name
,b.id_no pid
,b.phone_no mobile
,a.term_no termNo
,date(DATE_sub(a.deadline,INTERVAL 1 second)) targetRepaymentDate
,'' realRepaymentDate
,a.required_repayment plannedPayment
,f.yqze targetRepayment
,0 realRepayment
,case when f.yqze=0 then ''
else concat('D',DATEDIFF( #{endTime,jdbcType=VARCHAR},f.min_deadline)+1) end overdueStatus
,DATE_FORMAT( #{endTime,jdbcType=VARCHAR},'%Y-%m-%dT%H:%i:%S') statusConfirmAt
,f.yqze overdueAmount
,f.dkye remainingAmount
,case when f.yqze>0 then '2'
when f.dkye=0 then '3'
when f.yqze=0 and f.dkye>0 then '1'
end as loanStatus
,'overdue' termStatus
from (
select
a.id,a.user_id,a.loan_application_history_id,a.term_no,a.deadline,a.required_repayment,a.repayment_status,a.repaid_at,a.repayment_received_at
from xyqb_i_repayment_plan_bak a
left join xyqb_i_loan_a_m_history_bak b /**xyqb_i_loan_application_manifest_history*/
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
where (a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR})) and
if(b.contract_term>a.term_no,DATEDIFF( #{endTime,jdbcType=VARCHAR},a.deadline)=0,DATEDIFF( #{endTime,jdbcType=VARCHAR},a.deadline)>=0)
and floor(DATEDIFF( #{endTime,jdbcType=VARCHAR},a.deadline)/30)=DATEDIFF( #{endTime,jdbcType=VARCHAR},a.deadline)/30
/**and b.funding_corp_id in (420,520,580,650,670,810,240,640,700)*/
and b.transaction_status in (2,5)
and b.contract_term not in (2,3)
) a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join (
select a.loan_application_history_id
,sum(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},if(b.loan_paid_at>='2018-01-01',g.principal+g.interest+g.service_fee,h.principle+h.interest+h.service_fee_per_term),0)) yqze
,sum(if(a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR}),if(b.loan_paid_at>='2018-01-01',g.principal,h.principle),0)) dkye
,min(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.deadline,null)) min_deadline
from xyqb_i_repayment_plan_bak a
left join xyqb_i_loan_a_m_history_bak b on a.loan_application_history_id=b.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
left join xyqb_i_plan_amount_detail h on a.id=h.plan_id
/** where b.funding_corp_id in (420,520,580,650,670,810,240,640,700)*/
group by a.loan_application_history_id
) f on a.loan_application_history_id=f.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id;
<!-- p2p 2019.12.13 -->
<!--
select
a.id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,b.name name
,b.id_no pid
,b.phone_no mobile
,a.term_no termNo
,date(DATE_sub(a.deadline,INTERVAL 1 second)) targetRepaymentDate
,'' realRepaymentDate
,a.required_repayment plannedPayment
,f.yqze targetRepayment
,0 realRepayment
,case when f.yqze=0 then ''
else concat('D',DATEDIFF(#{endTime,jdbcType=VARCHAR},f.min_deadline)+1) end overdueStatus
,DATE_FORMAT(#{endTime,jdbcType=VARCHAR},'%Y-%m-%dT%H:%i:%S') statusConfirmAt
,f.yqze overdueAmount
,f.dkye remainingAmount
,case when f.yqze>0 then '2'
when f.dkye=0 then '3'
when f.yqze=0 and f.dkye>0 then '1'
end as loanStatus
,'overdue' termStatus
from (select /* a.* */
a.id,a.user_id,a.loan_application_history_id,a.term_no,a.deadline,a.required_repayment,a.repayment_status,a.repaid_at,a.repayment_received_at
from xyqb_i_repayment_plan_p2p_bak a
left join xyqb_i_loan_a_m_history_p2p_bak b /**xyqb_i_loan_application_manifest_history b*/
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
left join xyqb_i_loan_withdraw_record k on a.loan_application_history_id=k.loan_id
left join xyqb_i_repayment_plan_p2p_bak g on b.loan_application_history_id=g.loan_application_history_id
and b.contract_term=g.term_no
where (a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and
if(b.contract_term>a.term_no,DATEDIFF(#{endTime,jdbcType=VARCHAR},a.deadline)=0,DATEDIFF(#{endTime,jdbcType=VARCHAR},a.deadline)>=0)
and floor(DATEDIFF(#{endTime,jdbcType=VARCHAR},a.deadline)/30)=DATEDIFF(#{endTime,jdbcType=VARCHAR},a.deadline)/30
and b.funding_corp_id in (210,540)
and b.transaction_status in (2,5)
and if(b.loan_paid_at>='2018-01-01',b.contract_term >3,b.contract_term >=3)
and (k.id is null or k.status=3)
and g.repayment_status=3 and g.repaid_at &lt; '2019-10-25'
and b.loan_paid_at>='2016-11-01'
) a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join (select a.loan_application_history_id
,sum(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},if(b.loan_paid_at>='2018-01-01',g.principal+g.interest+g.service_fee,h.principle+h.interest+h.service_fee_per_term),0)) yqze
,sum(if(a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR}),if(b.loan_paid_at>='2018-01-01',g.principal,h.principle),0)) dkye
,min(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>=#{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.deadline,null)) min_deadline
from xyqb_i_repayment_plan_p2p_bak a
left join xyqb_i_loan_a_m_history_p2p_bak b /**xyqb_i_loan_application_manifest_history b*/
on a.loan_application_history_id=b.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
left join xyqb_i_plan_amount_detail h on a.id=h.plan_id
where b.funding_corp_id in (210,540)
group by a.loan_application_history_id) f on a.loan_application_history_id=f.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id;
-->
</select>
<!--4.2百行助贷-联合贷 实时逾期还款 2019.10.28-->
<select id="findRealTimeRepayMentOverdueLh" parameterType="cn.quantgroup.report.domain.baihang.BaiHangTimeRecord"
resultType="cn.quantgroup.report.domain.baihang.RepaymentInfoZhuDai">
select
a.id reqID
,'A' opCode
,DATE_FORMAT(now(),'%Y-%m-%dT%H:%i:%S') uploadTs
,if(d.order_no is null,a.loan_application_history_id,d.order_no) loanId
,b.name name
,b.id_no pid
,b.phone_no mobile
,a.term_no termNo
,date(DATE_sub(a.deadline,INTERVAL 1 second)) targetRepaymentDate
,'' realRepaymentDate
,a.required_repayment plannedPayment
,f.yqze targetRepayment
,0 realRepayment
,case when f.yqze=0 then ''
else concat('D',DATEDIFF( #{endTime,jdbcType=VARCHAR},f.min_deadline)+1) end overdueStatus
,DATE_FORMAT( #{endTime,jdbcType=VARCHAR},'%Y-%m-%dT%H:%i:%S') statusConfirmAt
,f.yqze overdueAmount
,f.dkye remainingAmount
,case when f.yqze>0 then '2'
when f.dkye=0 then '3'
when f.yqze=0 and f.dkye>0 then '1'
end as loanStatus
,'overdue' termStatus
from (select a.*
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id and b.loan_paid_at &lt; #{endTime,jdbcType=VARCHAR}
where ((a.repayment_status !=3 and DATEDIFF( #{endTime,jdbcType=VARCHAR},a.deadline)>=30) or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR} and DATEDIFF(a.repaid_at,a.deadline)>=30)) and
if(b.contract_term>a.term_no,DATEDIFF( #{endTime,jdbcType=VARCHAR},a.deadline)=30,DATEDIFF( #{endTime,jdbcType=VARCHAR},a.deadline)>=30)
and floor(DATEDIFF( #{endTime,jdbcType=VARCHAR},a.deadline)/30)=DATEDIFF( #{endTime,jdbcType=VARCHAR},a.deadline)/30
and b.funding_corp_id in (880,890)
and b.transaction_status in (2,5)
and b.contract_term not in (2,3)
and b.loan_paid_at>='2019-10-25'
) a
left join xyqb_user_i_user_detail b on a.user_id=b.user_id
left join xyqb_i_loan_account_ext c on a.loan_application_history_id=c.loan_id
left join xyqb_i_apply_quota_record d on c.order_no=d.order_no
left join (select a.loan_application_history_id
,sum(if(((a.repayment_status !=3 and DATEDIFF( #{endTime,jdbcType=VARCHAR},a.deadline)>=30) or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR} and DATEDIFF(a.repaid_at,a.deadline)>=30)) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.required_repayment,0)) yqze
,sum(if(a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR}),if(b.loan_paid_at>='2018-01-01',g.principal,h.principle),0)) dkye
,min(if((a.repayment_status !=3 or (a.repayment_status =3 and a.repaid_at>= #{endTime,jdbcType=VARCHAR})) and a.deadline &lt;= #{endTime,jdbcType=VARCHAR},a.deadline,null)) min_deadline
from xyqb_i_repayment_plan a
left join xyqb_i_loan_application_manifest_history b
on a.loan_application_history_id=b.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id
left join xyqb_i_plan_amount_detail h on a.id=h.plan_id
where b.funding_corp_id in (880,890)
group by a.loan_application_history_id) f on a.loan_application_history_id=f.loan_application_history_id
left join xyqb_i_repayment_record g on a.id=g.repayment_plan_id;
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment