Commit fea9f2d1 by zhaoyang

Merge remote-tracking branch 'origin/dev_branch_BB_1_202004' into aaaa

# Conflicts:
#	app/common/dal/src/main/java/com/abssqr/plat/common/dal/AbssqrCoreConstants.java
#	app/common/dal/src/main/java/com/abssqr/plat/common/dal/mysql/auto/paging/PlanListPage.java
parents fd6456af 20e3bb64
......@@ -12,6 +12,8 @@ import com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum;
import com.abssqr.plat.common.facade.param.ast.AstPackOprParam;
import com.abssqr.plat.common.facade.param.ast.AstPackQryParam;
import com.abssqr.plat.common.facade.param.ast.AstPackSealOprParam;
import com.abssqr.plat.common.facade.param.ast.AstPackSplitPackOprParam;
import com.abssqr.plat.common.facade.param.ast.AstPackUnPackOprParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.pack.AstPackListVO;
import com.abssqr.plat.common.facade.result.pack.AstPackVO;
......@@ -21,6 +23,7 @@ import com.abssqr.plat.common.model.convertor.vo.AstPackListVOConvert;
import com.abssqr.plat.common.model.convertor.web.AstPackWebConvert;
import com.abssqr.plat.common.model.domain.ast.AstPack;
import com.abssqr.plat.common.model.repo.ast.AstPackRepo;
import com.abssqr.plat.common.model.repo.ast.LoanPackRelRepo;
import com.abssqr.plat.core.service.ast.AstPackManager;
import com.general.system.common.util.VarChecker;
......@@ -35,10 +38,11 @@ import org.springframework.stereotype.Service;
@Service
public class AstPackServiceImpl extends ServiceSupport implements AstPackService {
@Autowired
AstPackManager astPackManager;
AstPackManager astPackManager;
@Autowired
AstPackRepo astPackRepository;
AstPackRepo astPackRepo;
@Autowired
LoanPackRelRepo loanPackRelRepo;
@Override
public String edit(@Valid AstPackOprParam param) {
VarChecker.checkNotNull(param);
......@@ -60,7 +64,7 @@ public class AstPackServiceImpl extends ServiceSupport implements AstPackService
@Override
public BasePage<AstPackListVO> getList(@Valid AstPackQryParam param) {
return this.doQry(param, () -> {
AstPackPagePage page = astPackRepository.getList(param);
AstPackPagePage page = astPackRepo.getList(param);
BasePage<AstPackListVO> result = new BasePage<AstPackListVO>();
result.setCurrPageNo(page.getCurrPageNo());
result.setTotal(page.getTotal());
......@@ -76,7 +80,7 @@ public class AstPackServiceImpl extends ServiceSupport implements AstPackService
AstPack astPack = astPackManager.get(astPackQryParam.getPackNo());
AstPackVO result = AstPackWebConvert.model2VO(astPack);
if(astPack!=null) {
LoanPackRelSummary summary = astPackRepository.sumAstPack(astPack.getPackNo());
LoanPackRelSummary summary = loanPackRelRepo.sumAstPack(astPack.getPackNo());
result.setAstCnt(summary.getAstCnt());
result.setAstPrinBal(summary.getAstPrinBal());
}
......@@ -91,4 +95,26 @@ public class AstPackServiceImpl extends ServiceSupport implements AstPackService
});
}
@Override
public String unPack(@Valid AstPackUnPackOprParam astPackUnPackOprParam) {
return this.doOpr(astPackUnPackOprParam, () -> {
astPackManager.unPack(astPackUnPackOprParam.getPackNo());
return astPackUnPackOprParam.getBizNo();
});
}
/**
* 拆包
*
* @param astPackSplitPackOprParam
* @return
*/
@Override
public String splitPack(AstPackSplitPackOprParam astPackSplitPackOprParam) {
return this.doOpr(astPackSplitPackOprParam, () -> {
astPackManager.splitPack(astPackSplitPackOprParam.getPackNo());
return astPackSplitPackOprParam.getBizNo();
});
}
}
package com.abssqr.plat.biz.api.ast;
import com.abssqr.plat.biz.support.ServiceSupport;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPoolLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPoolPage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstPoolLoanStat;
import com.abssqr.plat.common.facade.base.BaseStringParam;
import com.abssqr.plat.common.facade.enums.AstTypeEnum;
import com.abssqr.plat.common.facade.param.ast.AstPageQryParam;
import com.abssqr.plat.common.facade.param.astPool.AstPoolOprParam;
import com.abssqr.plat.common.facade.param.astPool.AstPoolPageQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.AstPoolLoanVO;
import com.abssqr.plat.common.facade.result.astPool.AstPoolVO;
import com.abssqr.plat.common.facade.service.ast.AstPoolService;
import com.abssqr.plat.common.facade.validation.Valid;
import com.abssqr.plat.common.model.convertor.web.AstPoolLoanWebConvert;
import com.abssqr.plat.common.model.convertor.web.AstPoolWebConvert;
import com.abssqr.plat.common.model.domain.ast.AstPoolEntity;
import com.abssqr.plat.common.model.enums.IdTypeEnum;
......@@ -64,7 +60,7 @@ public class AstPoolServiceImpl extends ServiceSupport implements AstPoolService
VarChecker.checkArgument(astPoolRepository.checkAstPool(astPoolEntity),"资产池名称/资产池编号重复");
//创建默认资产包
astPackManager.craeteDefaultPack(astPoolEntity.getAstPoolNo(),astPoolEntity.getAstTypeEnum(),astPoolEntity.getProdNo());
astPackManager.createDefaultPack(astPoolEntity.getAstPoolNo(),astPoolEntity.getAstTypeEnum(),astPoolEntity.getProdNo());
return astPoolRepository.create(astPoolEntity);
});
......@@ -106,13 +102,5 @@ public class AstPoolServiceImpl extends ServiceSupport implements AstPoolService
});
}
@Override
public BasePage<AstPoolLoanVO> astList(AstPageQryParam astPageQryParam) {
return super.doQry(astPageQryParam,()->{
AstPoolLoanPage result = astPoolRepository.astPage(AstPoolLoanWebConvert.convertAstParam2AstPage(astPageQryParam));
return AstPoolLoanWebConvert.convertAstPoolLoan2AstPoolVOs(result);
});
}
}
package com.abssqr.plat.biz.api.ast;
import com.abssqr.plat.biz.support.ServiceSupport;
import java.io.UnsupportedEncodingException;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import com.abssqr.plat.biz.support.ServiceSupport;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPackAddLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPackLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPoolLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.PackAstPage;
import com.abssqr.plat.common.facade.param.ast.AstDownLoadParam;
import com.abssqr.plat.common.facade.param.ast.AstPageQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.AstLoanVO;
import com.abssqr.plat.common.facade.service.ast.AstService;
import com.abssqr.plat.common.facade.validation.Valid;
import com.abssqr.plat.common.model.convertor.web.AstLoanWebConvert;
import com.abssqr.plat.common.model.domain.ast.AstPack;
import com.abssqr.plat.common.model.exception.AbssqrBizException;
import com.abssqr.plat.common.model.repo.ast.LoanRepository;
import com.abssqr.plat.core.service.ast.AstPackManager;
import com.abssqr.plat.core.service.ast.DownLoadAstManager;
import com.general.system.common.util.VarChecker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.util.*;
@Component
public class AstServiceImpl extends ServiceSupport implements AstService {
protected final Logger LOGGER = LoggerFactory.getLogger(getClass());
......@@ -26,8 +37,9 @@ public class AstServiceImpl extends ServiceSupport implements AstService {
private final int limit=2000;
@Autowired
LoanRepository loanRepository;
LoanRepository loanRepository;
@Autowired
AstPackManager astPackManager;
@Autowired
DownLoadAstManager downLoadAstManager;
......@@ -48,6 +60,49 @@ public class AstServiceImpl extends ServiceSupport implements AstService {
}
/**
* 查询资产列表
*
* @param astPageQryParam
* @return
*/
@Override
public BasePage<AstLoanVO> poolAstList(AstPageQryParam astPageQryParam) {
return super.doQry(astPageQryParam, () -> {
AstPoolLoanPage astPoolLoanPage = new AstPoolLoanPage();
astPoolLoanPage.setAstPoolNo(astPageQryParam.getAstPoolNo());
astPoolLoanPage.setCurrPageNo(astPageQryParam.getPageNum());
astPoolLoanPage.setLimit(astPageQryParam.getPageNum());
astPoolLoanPage = loanRepository.getLoanPageByAstPoolNo(astPoolLoanPage);
return AstLoanWebConvert.convert2AstPoolVOs(astPoolLoanPage);
});
}
@Override
public BasePage<AstLoanVO> packAstList(AstPageQryParam astPageQryParam) {
VarChecker.checkNotEmpty(astPageQryParam.getPackNo(), "资产包编号不能为空");
return super.doQry(astPageQryParam, () -> {
AstPack astPack = astPackManager.get(astPageQryParam.getPackNo());
AstPackLoanPage astPackLoanPage = new AstPackLoanPage();
astPackLoanPage.setPackNo(astPack.getPackNo());
astPackLoanPage = loanRepository.getLoanListForPack(astPackLoanPage);
return AstLoanWebConvert.convert2AstPoolVOs(astPackLoanPage);
});
}
@Override
public BasePage<AstLoanVO> packAddAstList(AstPageQryParam astPageQryParam) {
VarChecker.checkNotEmpty(astPageQryParam.getPackNo(), "资产包编号不能为空");
return super.doQry(astPageQryParam, () -> {
AstPack astPack = astPackManager.get(astPageQryParam.getPackNo());
AstPackAddLoanPage astPackLoanPage = new AstPackAddLoanPage();
astPackLoanPage.setAstPoolNo(astPack.getAstPoolNo());
astPackLoanPage.setAstType(astPack.getAstType());
astPackLoanPage.setScreenRuleList(astPack.getScreenRuleList());
astPackLoanPage = loanRepository.getLoanPageForPackAddAst(astPackLoanPage);
return AstLoanWebConvert.convert2AstPoolVOs(astPackLoanPage);
});
}
private ServletOutputStream getOutputStream(String packNo,HttpServletResponse response) throws Exception{
response.reset();
......@@ -66,6 +121,4 @@ public class AstServiceImpl extends ServiceSupport implements AstService {
}
}
......@@ -4,14 +4,30 @@
*/
package com.abssqr.plat.biz.shared.handler;
import javax.annotation.PostConstruct;
import com.abssqr.plat.biz.shared.dispatcher.commonTask.CommonTaskExecutor;
import com.abssqr.plat.common.facade.enums.CommonTaskTypeEnum;
import com.abssqr.plat.common.model.domain.task.CommonTask;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @author bangis.wangdf
* @version com.abssqr.plat.biz.shared.handler: CommonTaskHandler.java, v 0.1 2020-03-04 13:56 bangis.wangdf Exp $
*/
public interface CommonTaskHandler {
public abstract class CommonTaskHandler {
public final static Logger LOGGER = LoggerFactory.getLogger(CommonTaskHandler.class);
@Autowired
CommonTaskExecutor commonTaskExecutor;
CommonTask execute(CommonTask commonTask);
public abstract CommonTask execute(CommonTask commonTask);
protected abstract CommonTaskTypeEnum commonTaskType();
@PostConstruct
private void doRegister(){
commonTaskExecutor.registerHandler(commonTaskType(),this);
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2020 All Rights Reserved.
*/
package com.abssqr.plat.biz.shared.handler.impl;
import com.abssqr.plat.biz.shared.handler.CommonTaskHandler;
import com.abssqr.plat.common.facade.enums.AstPackStatusEnum;
import com.abssqr.plat.common.facade.enums.CommonTaskTypeEnum;
import com.abssqr.plat.common.model.domain.ast.AstPack;
import com.abssqr.plat.common.model.domain.ast.AstPoolEntity;
import com.abssqr.plat.common.model.domain.task.CommonTask;
import com.abssqr.plat.common.model.repo.ast.AstPackRepo;
import com.abssqr.plat.common.model.repo.astPool.AstPoolRepository;
import com.abssqr.plat.core.service.ast.AstPackManager;
import com.abssqr.plat.core.service.rule.AstScreenRuleComponent;
import com.general.system.common.util.LogUtil;
import com.general.system.common.util.VarChecker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.support.TransactionTemplate;
/**
* @author bangis.wangdf
* @version com.abssqr.plat.biz.shared.handler: PackMatchTaskHandler.java, v 0.1 2020-04-26 11:58 bangis.wangdf Exp $
*/
public class PackMatchTaskHandler extends CommonTaskHandler {
@Autowired
AstPackRepo astPackRepo;
@Autowired
AstPackManager astPackManager;
@Autowired
AstPoolRepository astPoolRepository;
@Autowired
TransactionTemplate transactionTemplate;
@Autowired
AstScreenRuleComponent astScreenRuleComponent;
@Override
public CommonTask execute(CommonTask commonTask) {
transactionTemplate.execute(status -> {
//锁资产池
AstPoolEntity astPoolEntity = astPoolRepository.lockAstPool(commonTask.getContext());
VarChecker.checkNotNull(astPoolEntity,"找不到对应的资产池{0}",commonTask.getContext());
//锁资产包
AstPack astPack = astPackManager.lockAstPack(commonTask.getBizNo());
VarChecker.checkNotNull(astPack,"找不到对应的资产包{0}",commonTask.getBizNo());
//状态判断
if(AstPackStatusEnum.INIT==astPack.getStatus()){
//开始筛选
//TODO SQL 预演完成,待合同字段明确后补充
int cnt = astScreenRuleComponent.screenAst(astPack);
if(cnt==0){
LogUtil.warn(LOGGER,"资产包[{0}],未筛选到资产",astPack.getPackNo());
}
//筛选完成,更新资产包状态
astPackRepo.screenFisPack(astPack.getPackNo());
}else{
LogUtil.warn(LOGGER,"资产包[{0}],状态为[{1}],无需筛选",astPack.getPackNo(),astPack.getStatus());
}
return status;
});
return commonTask;
}
@Override
protected CommonTaskTypeEnum commonTaskType() {
return CommonTaskTypeEnum.PACK_MATCH;
}
}
......@@ -149,6 +149,7 @@
UPDATE abs_ast_pack
SET
PACK_DATE = #{packDate,jdbcType=DATE}
,STATUS = 'pack'
,GMT_MODIFIED = sysdate
,PACK_SUBMIT_DATE = #{packSubmitDate,jdbcType=DATE}
WHERE
......@@ -157,6 +158,47 @@
]]>
</operation>
<operation name="updateUnPack" paramtype="primitive" remark="根据唯一约束AbsPackPackNo更新表:abs_ast_pack">
<![CDATA[
UPDATE abs_ast_pack
SET
PACK_DATE = null
,GMT_MODIFIED = sysdate
,STATUS = 'unpack'
,PACK_SUBMIT_DATE = null
WHERE
PACK_NO = #{packNo,jdbcType=VARCHAR}
AND STATUS = 'pack'
]]>
</operation>
<operation name="updateSplitPack" paramtype="primitive" remark="根据唯一约束AbsPackPackNo更新表:abs_ast_pack">
<![CDATA[
UPDATE abs_ast_pack
SET
PACK_DATE = null
,GMT_MODIFIED = sysdate
,STATUS = 'break'
,PACK_SUBMIT_DATE = null
WHERE
PACK_NO = #{packNo,jdbcType=VARCHAR}
AND STATUS in ('sceen_fis','unpack')
]]>
</operation>
<operation name="updateScreenFis" paramtype="primitive" remark="根据唯一约束AbsPackPackNo更新表:abs_ast_pack">
<![CDATA[
UPDATE abs_ast_pack
SET
PACK_DATE = null
,GMT_MODIFIED = sysdate
,STATUS = 'sceen_fis'
,PACK_SUBMIT_DATE = null
WHERE
PACK_NO = #{packNo,jdbcType=VARCHAR}
AND STATUS = 'init'
]]>
</operation>
<operation name="deleteByAbsPackPackNo" remark="根据唯一约束AbsPackPackNo删除数据:abs_ast_pack">
<![CDATA[
DELETE FROM abs_ast_pack
......@@ -174,6 +216,16 @@
]]>
</operation>
<operation name="getForLock" multiplicity="one" remark="根据唯一约束AbsPackPackNo获取数据:abs_ast_pack">
SELECT *
FROM abs_ast_pack
WHERE
<![CDATA[
PACK_NO = #{packNo,jdbcType=VARCHAR}
FOR UPDATE
]]>
</operation>
<!-- 根据普通索引查询数据 -->
<operation name="queryByAbsPackPlanNo" multiplicity="many" remark="根据普通索引AbsPackPlanNo获取数据:abs_ast_pack">
SELECT *
......
......@@ -124,4 +124,14 @@
]]>
</operation>
<operation name="getForLock" multiplicity="one" remark="根据主键获取数据:abs_ast_pool">
SELECT *
FROM abs_ast_pool
WHERE
<![CDATA[
AST_POOL_NO = #{astPoolNo,jdbcType=VARCHAR} for update
]]>
</operation>
</table>
......@@ -300,7 +300,7 @@
</resultmap>
<resultmap name="AstPoolLoan" type="AstPoolLoan">
<resultmap name="AstLoanResultMap" type="AstLoan">
<column name="AST_NO" jdbctype="VARCHAR" javatype="String" remark="资产编号"/>
<column name="PRIN_BAL" jdbctype="BIGINT" javatype="com.general.system.common.model.Money" remark="贷款剩余本金"/>
<column name="START_DATE" jdbctype="DATE" javatype="java.util.Date" remark="贷款日期"/>
......@@ -314,8 +314,6 @@
</resultmap>
AstPoolLoan
<operation name="statPlanBal" resultmap="LoanPropCntStat" multiplicity="one" remark="统计机构当前资产规模">
SELECT
LENDER_ORG_CODE as PROP_VAL,
......@@ -395,30 +393,82 @@
R2.AST_POOL_NO=#{astPoolNo,jdbcType=VARCHAR}
</operation>
<operation name="getLoanListByAstPoolNo" resultmap="AstPoolLoan" multiplicity="paging" paging="AstPoolLoan" remark="根据资产池编号查询对应的资产">
<sql id="pageResltSql">
L1.AST_NO, --资产编号
L1.PRIN_BAL, --贷款剩余本金
L1.START_DATE, --贷款日期
L1.TERM_CNT-L1.CUR_TERM AS FREE_TERM, --贷款剩余期限
R1.RATE, --贷款利率
L1.RISK_CL, --五级分类
R1.REPAY_PERIOD, --还款周期
R1.REPAY_PERIOD_TYPE, --还款周期类型
R1.REPAY_METHOD, --还款方式
R4.PLAN_NAME --资产归属
</sql>
<operation name="getLoanListByAstPoolNo" resultmap="AstLoanResultMap" multiplicity="paging" paging="AstPoolLoan" remark="根据资产池编号查询对应的资产">
SELECT
L1.AST_NO, --资产编号
L1.PRIN_BAL, --贷款剩余本金
L1.START_DATE, --贷款日期
L1.TERM_CNT-L1.CUR_TERM AS FREE_TERM, --贷款剩余期限
R1.RATE, --贷款利率
L1.RISK_CL, --五级分类
R1.REPAY_PERIOD, --还款周期
R1.REPAY_PERIOD_TYPE, --还款周期类型
R1.REPAY_METHOD, --还款方式
R4.PLAN_NAME --资产归属
<include refid="pageResltSql"/>
FROM
ABS_LOAN L1
LEFT JOIN ABS_LOAN_CONTRACT R1 ON L1.AST_NO=R1.AST_NO
LEFT JOIN ABS_LOAN_PACK_REL R2 ON L1.AST_NO=R2.AST_NO
LEFT JOIN ABS_AST_PACK R3 ON R2.PACK_NO=R3.PACK_NO
LEFT JOIN ABS_PLAN R4 ON R3.PLAN_NO=R4.PLAN_NO
LEFT JOIN ABS_LOAN_CONTRACT R1
ON L1.AST_NO=R1.AST_NO
LEFT JOIN ABS_LOAN_PACK_REL R2
ON L1.AST_NO=R2.AST_NO
LEFT JOIN ABS_AST_PACK R3
ON R2.PACK_NO=R3.PACK_NO
LEFT JOIN ABS_PLAN R4
ON R3.PLAN_NO=R4.PLAN_NO
WHERE
R2.STATUS='in'
AND R3.AST_POOL_NO=#{astPoolNo,jdbcType=VARCHAR}
AND L1.STATUS IN ('nor', 'ovd')
</operation>
<operation name="getLoanListForPackAddAst" resultmap="AstLoanResultMap" multiplicity="paging" paging="AstPackAddLoan" remark="根据资产池编号查询对应的资产">
<extraparams>
<param name="screenRuleList" javatype="java.util.List&lt;com.abssqr.plat.common.facade.model.rule.AstScreenRule&gt;"/>
<param name="astType" javatype="com.abssqr.plat.common.facade.enums.AstTypeEnum"/>
</extraparams>
SELECT
<include refid="pageResltSql"/>
FROM
ABS_LOAN L1
UNION (
<if test="astType == @com.abssqr.plat.common.facade.enums.AstTypeEnum@QCDK">
<include refid="ABS_LOAN_PACK_REL.QCDK_SQL"/>
</if>
) u ON L1.ast_no=u.ast_no
LEFT JOIN ABS_LOAN_CONTRACT R1
ON L1.AST_NO=R1.AST_NO
LEFT JOIN ABS_LOAN_PACK_REL R2
ON L1.AST_NO=R2.AST_NO
LEFT JOIN ABS_AST_PACK R3
ON R2.PACK_NO=R3.PACK_NO
LEFT JOIN ABS_PLAN R4
ON R3.PLAN_NO=R4.PLAN_NO
WHERE
R2.STATUS='in'
AND R3.AST_POOL_NO=#{astPoolNo,jdbcType=VARCHAR}
AND L1.STATUS IN ('nor', 'ovd')
</operation>
<operation name="getLoanListForPack" resultmap="AstLoanResultMap" multiplicity="paging" paging="AstPackLoan" remark="根据资产池编号查询对应的资产">
SELECT
<include refid="pageResltSql"/>
FROM
ABS_LOAN L1
LEFT JOIN ABS_LOAN_CONTRACT R1
ON L1.AST_NO=R1.AST_NO
LEFT JOIN ABS_LOAN_PACK_REL R2
ON L1.AST_NO=R2.AST_NO
LEFT JOIN ABS_AST_PACK R3
ON R2.PACK_NO=R3.PACK_NO
LEFT JOIN ABS_PLAN R4
ON R3.PLAN_NO=R4.PLAN_NO
WHERE
R2.STATUS='in'
AND R2.PACK_NO = #{packNo,jdbcType=VARCHAR}
AND L1.STATUS IN ('nor', 'ovd')
</operation>
<operation name="getLoanPageByPackNo" multiplicity="paging" paging="PackAst" remark="根据资产包编号分页获取所有的资产">
SELECT sf.*
......
......@@ -90,6 +90,18 @@
]]>
</operation>
-->
<operation name="updatePackRel" paramtype="primitive" remark="更新表:abs_loan_pack_rel" >
<![CDATA[
UPDATE abs_loan_pack_rel
SET
PACK_NO = #{packNo,jdbcType=VARCHAR}
,GMT_MODIFIED = sysdate
WHERE
PACK_NO = #{oldPackNo,jdbcType=VARCHAR}
]]>
</operation>
<operation name="deleteByAbsLoanPackRelPk" remark="根据主键删除数据:abs_loan_pack_rel">
<![CDATA[
DELETE FROM abs_loan_pack_rel
......@@ -132,11 +144,95 @@
WHERE
<![CDATA[
l.ast_no = rel.ast_no
AND l.STATUS in ('nor','ovd')
AND rel.status = 'in'
AND rel.PACK_NO = #{packNo,jdbcType=VARCHAR}
AND l.STATUS in ('nor','ovd')
]]>
</operation>
<operation name="updateForScreen" paramtype="primitive" remark="筛选">
<extraparams>
<param name="screenRuleList" javatype="java.util.List&lt;com.abssqr.plat.common.facade.model.rule.AstScreenRule&gt;"/>
<param name="astType" javatype="com.abssqr.plat.common.facade.enums.AstTypeEnum"/>
<param name="avalAmt" javatype="com.general.system.common.model.Money"/>
</extraparams>
update abs_loan_pack_rel
set PACK_NO = #{packNo,jdbcType=VARCHAR}
where
PACK_NO = #{astPoolNo,jdbcType=VARCHAR}
AND ast_no in(
select
ast_no
from(
<if test="astType == @com.abssqr.plat.common.facade.enums.AstTypeEnum@QCDK">
<include refid="QCDK_SQL"/>
</if>
)where
sum_bal &lt;= ${avalAmt,jdbcType=DECIMAL}
)
</operation>
<sql id="QCDK_SQL">
SELECT l.ast_no,sum(l.prin_bal)OVER(order by l.ast_no desc) sum_bal
FROM abs_loan_pack_rel rel,abs_loan l,ABS_LOAN_CONTRACT lc
WHERE
l.ast_no = rel.ast_no
AND rel.ast_no = lc.ast_no
AND rel.status = 'in'
AND rel.PACK_NO = #{astPoolNo,jdbcType=VARCHAR}
<foreach collection="screenRuleList" item="rule">
<choose>
<!-- 五级分类 -->
<when test="rule.ruleType == @com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum@QCDK_RISK_TYPE">
AND l.RISK_CL in
<foreach collection="rule.listVal" item="val" open="(" separator="," close=")">
#{val,jdbcType=VARCHAR}
</foreach>
</when>
<!-- 贷款发放日 -->
<when test="rule.ruleType == @com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum@QCDK_DISB_DATE">
<if test="rule.leftCondition != null">
AND lc.DISB_DATE ${rule.leftCondition.code} to_date(#{rule.leftValue,jdbcType=VARCHAR},'yyyy-MM-dd')
</if>
<if test="rule.rightCondition != null">
AND lc.DISB_DATE ${rule.rightCondition.code} to_date(#{rule.rightValue,jdbcType=VARCHAR},'yyyy-MM-dd')
</if>
</when>
<!-- 贷款到期日 -->
<when test="rule.ruleType == @com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum@QCDK_END_DATE">
<if test="rule.leftCondition != null">
AND lc.DISB_DATE ${rule.leftCondition.code} to_date(#{rule.leftValue,jdbcType=VARCHAR},'yyyy-MM-dd')
</if>
<if test="rule.rightCondition != null">
AND lc.DISB_DATE ${rule.rightCondition.code} to_date(#{rule.rightValue,jdbcType=VARCHAR},'yyyy-MM-dd')
</if>
</when>
<!-- 执行利率 -->
<when test="rule.ruleType == @com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum@QCDK_LOAN_RATE">
<if test="rule.leftCondition != null">
AND lc.RATE ${rule.leftCondition.code} to_number(#{rule.leftValue,jdbcType=VARCHAR},'yyyy-MM-dd')
</if>
<if test="rule.rightCondition != null">
AND lc.RATE ${rule.rightCondition.code} to_number(#{rule.rightValue,jdbcType=VARCHAR},'yyyy-MM-dd')
</if>
</when>
<!-- 还款频率 -->
<when test="rule.ruleType == @com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum@QCDK_REPAY_FREQ">
<if test="rule.rightCondition != null">
AND lc.REPAY_PERIOD ${rule.rightCondition.code} #{rule.rightValue,jdbcType=VARCHAR}
</if>
</when>
<!-- 利率类型 -->
<when test="rule.ruleType == @com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum@QCDK_RATE_TYPE">
<if test="rule.rightCondition != null">
AND lc.RATE_TYPE ${rule.rightCondition.code} #{rule.rightValue,jdbcType=VARCHAR}
</if>
</when>
<otherwise>
@failure
</otherwise>
</choose>
</foreach>
</sql>
</table>
......@@ -92,17 +92,13 @@ public class AbssqrCoreConstants{
public static final String tableName="ABS_LOAN_PACK_REL";
public static final String Base_SF_Column_List = "sf.BACK_COST,sf.BACK_PRIN,sf.AST_NO,sf.BACK_NO,sf.PACK_NO ,sf.STATUS,sf.GMT_CREATE,sf.GMT_MODIFIED,sf.REPAY_FINAL_DATE,sf.BACK_RATE";
public static final String Base_Column_List = "BACK_COST,BACK_PRIN,AST_NO,BACK_NO,PACK_NO ,STATUS,GMT_CREATE,GMT_MODIFIED,REPAY_FINAL_DATE,BACK_RATE";
public static final String QCDK_SQL = "SELECT l.ast_no,sum(l.prin_bal)OVER(order by l.ast_no desc) sum_bal FROM abs_loan_pack_rel rel,abs_loan l,ABS_LOAN_CONTRACT lc WHERE l.ast_no = rel.ast_no AND rel.ast_no = lc.ast_no AND rel.status = 'in' AND rel.PACK_NO = #{astPoolNo,jdbcType=VARCHAR}";
}
public static class ABS_PLAN_REPORT_ENTITY_STAT{
public static final String tableName="ABS_PLAN_REPORT_ENTITY_STAT";
public static final String Base_SF_Column_List = "sf.AST_CHG,sf.FEE_AMT,sf.INTR_AMT,sf.PRIN_AMT,sf.OVD_FEE_AMT ,sf.OVD_INTR_AMT,sf.OVD_PRIN_AMT,sf.FEE_PENAL_AMT,sf.INTR_PENAL_AMT,sf.PRIN_PENAL_AMT ,sf.PLAN_NO,sf.STAT_VAL,sf.STAT_TYPE,sf.EVENT_CODE,sf.ACCOUNT_DATE,sf.COST,sf.ORG_DISTPFT_AMT";
public static final String Base_Column_List = "AST_CHG,FEE_AMT,INTR_AMT,PRIN_AMT,OVD_FEE_AMT ,OVD_INTR_AMT,OVD_PRIN_AMT,FEE_PENAL_AMT,INTR_PENAL_AMT,PRIN_PENAL_AMT ,PLAN_NO,STAT_VAL,STAT_TYPE,EVENT_CODE,ACCOUNT_DATE,ORG_DISTPFT_AMT,COST";
}
public static class ABS_PLAN_ALLOC_ITEM{
public static final String tableName="ABS_PLAN_ALLOC_ITEM";
public static final String Base_SF_Column_List = "sf.ID,sf.ORDER,sf.ITEM_NO,sf.PLAN_NO,sf.ALLOC_NO ,sf.TITLE_NO,sf.ALLOC_TYPE,sf.TITLE_NAME,sf.GMT_CREATE,sf.GMT_MODIFIED";
public static final String Base_Column_List = "ID,ORDER,ITEM_NO,PLAN_NO,ALLOC_NO ,TITLE_NO,ALLOC_TYPE,TITLE_NAME,GMT_CREATE,GMT_MODIFIED";
}
public static class ABS_AST_PRICE_RULE{
public static final String tableName="ABS_AST_PRICE_RULE";
public static final String Base_SF_Column_List = "sf.ID,sf.RISK_CL,sf.ABSSQR_PROD_CODE,sf.GMT_CREATE,sf.GMT_MODIFIED ,sf.INTR_RATE,sf.PRIN_RATE,sf.PENAL_FEE_RATE";
......@@ -115,8 +111,8 @@ public class AbssqrCoreConstants{
}
public static class ABS_PLAN_FEE_STRUCTURE{
public static final String tableName="ABS_PLAN_FEE_STRUCTURE";
public static final String Base_SF_Column_List = "sf.ID,sf.ORDER,sf.FIXED_FEE_AMT,sf.PAY_LIMIT_AMT,sf.FEE_NO ,sf.PLAN_NO,sf.FEE_NAME,sf.FEE_CALC_TYPE,sf.FEE_TIME_TYPE,sf.FEE_SCALE_TYPE ,sf.GMT_CREATE,sf.GMT_MODIFIED,sf.FEE_RATE";
public static final String Base_Column_List = "ID,ORDER,FIXED_FEE_AMT,PAY_LIMIT_AMT,FEE_NO ,PLAN_NO,FEE_NAME,FEE_CALC_TYPE,FEE_TIME_TYPE,FEE_SCALE_TYPE ,GMT_CREATE,GMT_MODIFIED,FEE_RATE";
public static final String Base_SF_Column_List = "sf.ID,sf.SORT,sf.FIXED_FEE_AMT,sf.PAY_LIMIT_AMT,sf.FEE_NO ,sf.PLAN_NO,sf.FEE_CALC_TYPE,sf.FEE_SCALE_TYPE,sf.GMT_CREATE,sf.GMT_MODIFIED ,sf.FEE_CALC_DEFAULT_DATE,sf.FEE_RATE";
public static final String Base_Column_List = "ID,SORT,FIXED_FEE_AMT,PAY_LIMIT_AMT,FEE_NO ,PLAN_NO,FEE_CALC_TYPE,FEE_SCALE_TYPE,GMT_CREATE,GMT_MODIFIED ,FEE_CALC_DEFAULT_DATE,FEE_RATE";
}
public static class ABS_PLAN_CLEARING_LOG_HIS{
public static final String tableName="ABS_PLAN_CLEARING_LOG_HIS";
......@@ -125,6 +121,7 @@ public class AbssqrCoreConstants{
}
public static class ABS_LOAN{
public static final String tableName="ABS_LOAN";
public static final String pageResltSql = "L1.AST_NO, --资产编号 L1.PRIN_BAL, --贷款剩余本金 L1.START_DATE, --贷款日期 L1.TERM_CNT-L1.CUR_TERM AS FREE_TERM, --贷款剩余期限 R1.RATE, --贷款利率 L1.RISK_CL, --五级分类 R1.REPAY_PERIOD, --还款周期 R1.REPAY_PERIOD_TYPE, --还款周期类型 R1.REPAY_METHOD, --还款方式 R4.PLAN_NAME --资产归属";
public static final String Base_SF_Column_List = "sf.USER_ID,sf.FEE_BAL,sf.INTR_BAL,sf.PRIN_BAL,sf.PAID_FEE_AMT,sf.OVD_PRIN_BAL,sf.OVD_INTR_BAL,sf.OVD_FEE_BAL,sf.OWN_STATUS ,sf.FEE_PENAL_BAL,sf.OTHER_FEE_BAL,sf.PAID_INTR_AMT,sf.PAID_PRIN_AMT,sf.INTR_PENAL_BAL ,sf.PRIN_PENAL_BAL,sf.PAID_FEE_PENAL_AMT,sf.PAID_OTHER_FEE_AMT,sf.OTHER_FEE_PENAL_BAL,sf.PAID_INTR_PENAL_AMT ,sf.PAID_PRIN_PENAL_AMT,sf.PAID_OTHER_FEE_PENAL_AMT,sf.AST_NO,sf.OWN_ORG,sf.PROD_NO,sf.OUT_PROD_NO ,sf.RISK_CL,sf.STATUS,sf.OWN_PACK,sf.OUT_AST_NO,sf.CONTRACT_NO ,sf.LAST_OWN_ORG,sf.LENDER_ORG_CODE,sf.MANAGER_ORG_CODE,sf.SPONSER_ORG_CODE,sf.CUR_TERM,sf.WTF_STATUS ,sf.OVD_DAYS,sf.TERM_CNT,sf.IN_DATE,sf.END_DATE,sf.CLEAR_DATE,sf.DISB_DATE ,sf.GMT_CREATE,sf.START_DATE,sf.GMT_MODIFIED,sf.LAST_UPDATE_DATE,sf.CERT_NO,sf.TRANS_CNT ,sf.CAPITAL_NO,sf.LAYER_NAME,sf.EXT_INF";
public static final String Base_Column_List = "USER_ID,FEE_BAL,INTR_BAL,PRIN_BAL,PAID_FEE_AMT,OVD_PRIN_BAL,OVD_INTR_BAL,OVD_FEE_BAL,OWN_STATUS ,FEE_PENAL_BAL,OTHER_FEE_BAL,PAID_INTR_AMT,PAID_PRIN_AMT,INTR_PENAL_BAL ,PRIN_PENAL_BAL,PAID_FEE_PENAL_AMT,PAID_OTHER_FEE_AMT,OTHER_FEE_PENAL_BAL,PAID_INTR_PENAL_AMT ,PAID_PRIN_PENAL_AMT,PAID_OTHER_FEE_PENAL_AMT,AST_NO,OWN_ORG,PROD_NO,OUT_PROD_NO ,RISK_CL,STATUS,OWN_PACK,OUT_AST_NO,CONTRACT_NO ,LAST_OWN_ORG,LENDER_ORG_CODE,MANAGER_ORG_CODE,SPONSER_ORG_CODE,CUR_TERM,WTF_STATUS ,OVD_DAYS,TERM_CNT,IN_DATE,END_DATE,CLEAR_DATE,DISB_DATE ,GMT_CREATE,START_DATE,GMT_MODIFIED,LAST_UPDATE_DATE,CERT_NO,TRANS_CNT,CAPITAL_NO,LAYER_NAME,EXT_INF";
}
......@@ -295,8 +292,8 @@ public class AbssqrCoreConstants{
}
public static class ABS_PLAN{
public static final String tableName="ABS_PLAN";
public static final String Base_SF_Column_List = "sf.ID,sf.TOTAL_AMT,sf.PLAN_NO,sf.STATUS,sf.PAY_FREQ ,sf.PLAN_NAME,sf.GMT_CREATOR,sf.TRADE_PLACE,sf.GMT_MODIFIER,sf.CALC_INTR_TYPE ,sf.PLAN_FULL_NAME,sf.END_DATE,sf.BEGIN_DATE,sf.GMT_CREATE,sf.GMT_MODIFIED ,sf.FIRST_PAY_DATE,sf.FIRST_CALC_DATE,sf.FIRST_ALLOC_DATE,sf.FIRST_REPORT_DATE,sf.FIRST_SETTLE_DATE";
public static final String Base_Column_List = "ID,TOTAL_AMT,PLAN_NO,STATUS,PAY_FREQ ,PLAN_NAME,GMT_CREATOR,TRADE_PLACE,GMT_MODIFIER,CALC_INTR_TYPE ,PLAN_FULL_NAME,END_DATE,BEGIN_DATE,GMT_CREATE,GMT_MODIFIED ,FIRST_PAY_DATE,FIRST_CALC_DATE,FIRST_ALLOC_DATE,FIRST_REPORT_DATE,FIRST_SETTLE_DATE";
public static final String Base_SF_Column_List = "sf.ID,sf.TOTAL_AMT,sf.ALLOC_PERIOD,sf.PLAN_NO,sf.STATUS ,sf.PLAN_NAME,sf.TRADE_PLACE,sf.CALC_INTR_TYPE,sf.PLAN_FULL_NAME,sf.ALLOC_PERIOD_METHOD ,sf.END_DATE,sf.BEGIN_DATE,sf.GMT_CREATE,sf.GMT_MODIFIED,sf.FIRST_PAY_DATE ,sf.FIRST_CALC_DATE,sf.FIRST_ALLOC_DATE,sf.FIRST_REPORT_DATE,sf.FIRST_SETTLE_DATE";
public static final String Base_Column_List = "ID,TOTAL_AMT,ALLOC_PERIOD,PLAN_NO,STATUS ,PLAN_NAME,TRADE_PLACE,CALC_INTR_TYPE,PLAN_FULL_NAME,ALLOC_PERIOD_METHOD ,END_DATE,BEGIN_DATE,GMT_CREATE,GMT_MODIFIED,FIRST_PAY_DATE ,FIRST_CALC_DATE,FIRST_ALLOC_DATE,FIRST_REPORT_DATE,FIRST_SETTLE_DATE";
}
public static class ABS_PRODUCT_RISK_CL{
public static final String tableName="ABS_PRODUCT_RISK_CL";
......
......@@ -78,6 +78,33 @@ public class AstPackDAO{
return astPackDOMapper.updateSealPack(packDate, packSubmitDate, packNo);
}
/**
* desc:根据唯一约束AbsPackPackNo更新表:abs_ast_pack.<br/>
* @param packNo packNo
* @return int
*/
public int updateUnPack(String packNo){
return astPackDOMapper.updateUnPack(packNo);
}
/**
* desc:根据唯一约束AbsPackPackNo更新表:abs_ast_pack.<br/>
* @param packNo packNo
* @return int
*/
public int updateSplitPack(String packNo){
return astPackDOMapper.updateSplitPack(packNo);
}
/**
* desc:根据唯一约束AbsPackPackNo更新表:abs_ast_pack.<br/>
* @param packNo packNo
* @return int
*/
public int updateScreenFis(String packNo){
return astPackDOMapper.updateScreenFis(packNo);
}
/**
* desc:根据唯一约束AbsPackPackNo删除数据:abs_ast_pack.<br/>
* @param packNo packNo
* @return int
......@@ -96,6 +123,15 @@ public class AstPackDAO{
return astPackDOMapper.getByAbsPackPackNo(packNo);
}
/**
* desc:根据唯一约束AbsPackPackNo获取数据:abs_ast_pack.<br/>
* @param packNo packNo
* @return AstPackDO
*/
public AstPackDO getForLock(String packNo){
return astPackDOMapper.getForLock(packNo);
}
/**
* desc:根据普通索引AbsPackPlanNo获取数据:abs_ast_pack.<br/>
* @param planNo planNo
* @return List<AstPackDO>
......
......@@ -91,4 +91,13 @@ public class AstPoolDAO{
public AstPoolDO getById(Long id){
return astPoolDOMapper.getById(id);
}
/**
* desc:根据主键获取数据:abs_ast_pool.<br/>
* @param astPoolNo astPoolNo
* @return AstPoolDO
*/
public AstPoolDO getForLock(String astPoolNo){
return astPoolDOMapper.getForLock(astPoolNo);
}
}
......@@ -10,6 +10,8 @@ import com.abssqr.plat.common.dal.mysql.auto.paging.CapitalAstMatchPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.CapitalAstUnMatchPage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstPoolLoanStat;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPoolLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPackAddLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPackLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.PackAstPage;
import com.abssqr.plat.common.dal.mysql.auto.mapper.LoanDOMapper;
......@@ -171,6 +173,38 @@ public class LoanDAO{
return astPoolLoan;
}
/**
* desc:根据资产池编号查询对应的资产.<br/>
* @param astPackAddLoan astPackAddLoan
* @return AstPackAddLoanPage
*/
public AstPackAddLoanPage getLoanListForPackAddAst(AstPackAddLoanPage astPackAddLoan){
int total = loanDOMapper.getLoanListForPackAddAstCount(astPackAddLoan);
if(total>0){
astPackAddLoan.setDatas(loanDOMapper.getLoanListForPackAddAstResult(astPackAddLoan));
}else{
astPackAddLoan.setDatas(new ArrayList());
}
astPackAddLoan.setTotal(total);
return astPackAddLoan;
}
/**
* desc:根据资产池编号查询对应的资产.<br/>
* @param astPackLoan astPackLoan
* @return AstPackLoanPage
*/
public AstPackLoanPage getLoanListForPack(AstPackLoanPage astPackLoan){
int total = loanDOMapper.getLoanListForPackCount(astPackLoan);
if(total>0){
astPackLoan.setDatas(loanDOMapper.getLoanListForPackResult(astPackLoan));
}else{
astPackLoan.setDatas(new ArrayList());
}
astPackLoan.setTotal(total);
return astPackLoan;
}
/**
* desc:根据资产包编号分页获取所有的资产.<br/>
* @param packAst packAst
* @return PackAstPage
......
......@@ -6,6 +6,9 @@ import java.util.ArrayList;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.LoanPackRelDO;
import java.util.List;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.LoanPackRelSummary;
import com.abssqr.plat.common.facade.model.rule.AstScreenRule;
import com.abssqr.plat.common.facade.enums.AstTypeEnum;
import com.general.system.common.model.Money;
import com.abssqr.plat.common.dal.mysql.auto.mapper.LoanPackRelDOMapper;
/**
......@@ -38,6 +41,16 @@ public class LoanPackRelDAO{
return list.size();
}
/**
* desc:更新表:abs_loan_pack_rel.<br/>
* @param packNo packNo
* @param oldPackNo oldPackNo
* @return int
*/
public int updatePackRel(String packNo,String oldPackNo){
return loanPackRelDOMapper.updatePackRel(packNo, oldPackNo);
}
/**
* desc:根据主键删除数据:abs_loan_pack_rel.<br/>
* @param astNo astNo
* @param packNo packNo
......@@ -77,4 +90,18 @@ public class LoanPackRelDAO{
public LoanPackRelSummary sumAstByPack(String packNo){
return loanPackRelDOMapper.sumAstByPack(packNo);
}
/**
* desc:筛选.<br/>
* @param avalAmt avalAmt
* @param packNo packNo
* @param astPoolNo astPoolNo
* @param astType astType
* @param screenRuleList screenRuleList
* @return int
*/
public int updateForScreen(Money avalAmt,String packNo,String astPoolNo,AstTypeEnum astType,List<AstScreenRule> screenRuleList){
if(screenRuleList!=null && screenRuleList.size()>201){throw new RuntimeException("screenRuleList 超出201长度限制");}
return loanPackRelDOMapper.updateForScreen(avalAmt, packNo, astPoolNo, astType, screenRuleList);
}
}
......@@ -54,6 +54,24 @@ public interface AstPackDOMapper{
*/
int updateSealPack(@Param("packDate")Date packDate,@Param("packSubmitDate")Date packSubmitDate,@Param("packNo")String packNo);
/**
* desc:根据唯一约束AbsPackPackNo更新表:abs_ast_pack.<br/>
* @param packNo packNo
* @return int
*/
int updateUnPack(@Param("packNo")String packNo);
/**
* desc:根据唯一约束AbsPackPackNo更新表:abs_ast_pack.<br/>
* @param packNo packNo
* @return int
*/
int updateSplitPack(@Param("packNo")String packNo);
/**
* desc:根据唯一约束AbsPackPackNo更新表:abs_ast_pack.<br/>
* @param packNo packNo
* @return int
*/
int updateScreenFis(@Param("packNo")String packNo);
/**
* desc:根据唯一约束AbsPackPackNo删除数据:abs_ast_pack.<br/>
* @param packNo packNo
* @return int
......@@ -66,6 +84,12 @@ public interface AstPackDOMapper{
*/
AstPackDO getByAbsPackPackNo(@Param("packNo")String packNo);
/**
* desc:根据唯一约束AbsPackPackNo获取数据:abs_ast_pack.<br/>
* @param packNo packNo
* @return AstPackDO
*/
AstPackDO getForLock(@Param("packNo")String packNo);
/**
* desc:根据普通索引AbsPackPlanNo获取数据:abs_ast_pack.<br/>
* @param planNo planNo
* @return List<AstPackDO>
......
......@@ -62,4 +62,10 @@ public interface AstPoolDOMapper{
* @return AstPoolDO
*/
AstPoolDO getById(Long id);
/**
* desc:根据主键获取数据:abs_ast_pool.<br/>
* @param astPoolNo astPoolNo
* @return AstPoolDO
*/
AstPoolDO getForLock(@Param("astPoolNo")String astPoolNo);
}
......@@ -9,7 +9,9 @@ import java.lang.String;
import com.abssqr.plat.common.dal.mysql.auto.paging.CapitalAstUnMatchPage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstPoolLoanStat;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPoolLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstPoolLoan;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstLoan;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPackAddLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPackLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.PackAstPage;
import org.apache.ibatis.annotations.Param;
......@@ -121,9 +123,33 @@ public interface LoanDOMapper{
/**
* desc:根据资产池编号查询对应的资产.<br/>
* @param astPoolLoan astPoolLoan
* @return List<AstPoolLoan>
* @return List<AstLoan>
*/
List<AstPoolLoan> getLoanListByAstPoolNoResult(AstPoolLoanPage astPoolLoan);
List<AstLoan> getLoanListByAstPoolNoResult(AstPoolLoanPage astPoolLoan);
/**
* desc:根据资产池编号查询对应的资产.<br/>
* @param astPackAddLoan astPackAddLoan
* @return int
*/
int getLoanListForPackAddAstCount(AstPackAddLoanPage astPackAddLoan);
/**
* desc:根据资产池编号查询对应的资产.<br/>
* @param astPackAddLoan astPackAddLoan
* @return List<AstLoan>
*/
List<AstLoan> getLoanListForPackAddAstResult(AstPackAddLoanPage astPackAddLoan);
/**
* desc:根据资产池编号查询对应的资产.<br/>
* @param astPackLoan astPackLoan
* @return int
*/
int getLoanListForPackCount(AstPackLoanPage astPackLoan);
/**
* desc:根据资产池编号查询对应的资产.<br/>
* @param astPackLoan astPackLoan
* @return List<AstLoan>
*/
List<AstLoan> getLoanListForPackResult(AstPackLoanPage astPackLoan);
/**
* desc:根据资产包编号分页获取所有的资产.<br/>
* @param packAst packAst
......
......@@ -3,6 +3,9 @@ package com.abssqr.plat.common.dal.mysql.auto.mapper;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.LoanPackRelDO;
import java.util.List;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.LoanPackRelSummary;
import com.abssqr.plat.common.facade.model.rule.AstScreenRule;
import com.abssqr.plat.common.facade.enums.AstTypeEnum;
import com.general.system.common.model.Money;
import org.apache.ibatis.annotations.Param;
/**
......@@ -25,6 +28,13 @@ public interface LoanPackRelDOMapper{
*/
int insertBatch(List<LoanPackRelDO> list);
/**
* desc:更新表:abs_loan_pack_rel.<br/>
* @param packNo packNo
* @param oldPackNo oldPackNo
* @return int
*/
int updatePackRel(@Param("packNo")String packNo,@Param("oldPackNo")String oldPackNo);
/**
* desc:根据主键删除数据:abs_loan_pack_rel.<br/>
* @param astNo astNo
* @param packNo packNo
......@@ -52,4 +62,14 @@ public interface LoanPackRelDOMapper{
* @return LoanPackRelSummary
*/
LoanPackRelSummary sumAstByPack(@Param("packNo")String packNo);
/**
* desc:筛选.<br/>
* @param avalAmt avalAmt
* @param packNo packNo
* @param astPoolNo astPoolNo
* @param astType astType
* @param screenRuleList screenRuleList
* @return int
*/
int updateForScreen(@Param("avalAmt")Money avalAmt,@Param("packNo")String packNo,@Param("astPoolNo")String astPoolNo,@Param("astType")AstTypeEnum astType,@Param("screenRuleList")List<AstScreenRule> screenRuleList);
}
package com.abssqr.plat.common.dal.mysql.auto.paging;
import com.abssqr.plat.common.dal.mysql.auto.paging.BasePage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstLoan;
import java.util.List;
import com.abssqr.plat.common.facade.model.rule.AstScreenRule;
import com.abssqr.plat.common.facade.enums.AstTypeEnum;
/**
* The table ABS_LOAN 信贷资产
*/
public class AstPackAddLoanPage extends BasePage<AstLoan>{
/**
* screenRuleList .
*/
private List<AstScreenRule> screenRuleList;
/**
* astType .
*/
private AstTypeEnum astType;
/**
* astPoolNo .
*/
private String astPoolNo;
/**
* Set screenRuleList .
*/
public void setScreenRuleList(List<AstScreenRule> screenRuleList){
this.screenRuleList = screenRuleList;
}
/**
* Get screenRuleList .
*
* @return the string
*/
public List<AstScreenRule> getScreenRuleList(){
return screenRuleList;
}
/**
* Set astType .
*/
public void setAstType(AstTypeEnum astType){
this.astType = astType;
}
/**
* Get astType .
*
* @return the string
*/
public AstTypeEnum getAstType(){
return astType;
}
/**
* Set astPoolNo .
*/
public void setAstPoolNo(String astPoolNo){
this.astPoolNo = astPoolNo;
}
/**
* Get astPoolNo .
*
* @return the string
*/
public String getAstPoolNo(){
return astPoolNo;
}
}
package com.abssqr.plat.common.dal.mysql.auto.paging;
import com.abssqr.plat.common.dal.mysql.auto.paging.BasePage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstLoan;
/**
* The table ABS_LOAN 信贷资产
*/
public class AstPackLoanPage extends BasePage<AstLoan>{
/**
* packNo .
*/
private String packNo;
/**
* Set packNo .
*/
public void setPackNo(String packNo){
this.packNo = packNo;
}
/**
* Get packNo .
*
* @return the string
*/
public String getPackNo(){
return packNo;
}
}
package com.abssqr.plat.common.dal.mysql.auto.paging;
import com.abssqr.plat.common.dal.mysql.auto.paging.BasePage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstPoolLoan;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstLoan;
/**
* The table ABS_LOAN 信贷资产
*/
public class AstPoolLoanPage extends BasePage<AstPoolLoan>{
public class AstPoolLoanPage extends BasePage<AstLoan>{
/**
* astPoolNo .
......
......@@ -7,9 +7,9 @@ import java.math.BigDecimal;
/**
* The table AstPoolLoan
* The table AstLoan
*/
public class AstPoolLoan implements Serializable {
public class AstLoan implements Serializable {
private static final long serialVersionUID = -1L;
......
......@@ -155,6 +155,7 @@
UPDATE /*MS-ABS-AST-PACK-UPDATESEALPACK*/ abs_ast_pack
SET
PACK_DATE = #{packDate,jdbcType=DATE}
,STATUS = 'pack'
,GMT_MODIFIED = sysdate
,PACK_SUBMIT_DATE = #{packSubmitDate,jdbcType=DATE}
WHERE
......@@ -163,6 +164,51 @@
]]>
</update>
<!--根据唯一约束AbsPackPackNo更新表:abs_ast_pack mydalgen自动生成,请勿修改-->
<update id="updateUnPack" >
<![CDATA[
UPDATE /*MS-ABS-AST-PACK-UPDATEUNPACK*/ abs_ast_pack
SET
PACK_DATE = null
,GMT_MODIFIED = sysdate
,STATUS = 'unpack'
,PACK_SUBMIT_DATE = null
WHERE
PACK_NO = #{packNo,jdbcType=VARCHAR}
AND STATUS = 'pack'
]]>
</update>
<!--根据唯一约束AbsPackPackNo更新表:abs_ast_pack mydalgen自动生成,请勿修改-->
<update id="updateSplitPack" >
<![CDATA[
UPDATE /*MS-ABS-AST-PACK-UPDATESPLITPACK*/ abs_ast_pack
SET
PACK_DATE = null
,GMT_MODIFIED = sysdate
,STATUS = 'break'
,PACK_SUBMIT_DATE = null
WHERE
PACK_NO = #{packNo,jdbcType=VARCHAR}
AND STATUS in ('sceen_fis','unpack')
]]>
</update>
<!--根据唯一约束AbsPackPackNo更新表:abs_ast_pack mydalgen自动生成,请勿修改-->
<update id="updateScreenFis" >
<![CDATA[
UPDATE /*MS-ABS-AST-PACK-UPDATESCREENFIS*/ abs_ast_pack
SET
PACK_DATE = null
,GMT_MODIFIED = sysdate
,STATUS = 'sceen_fis'
,PACK_SUBMIT_DATE = null
WHERE
PACK_NO = #{packNo,jdbcType=VARCHAR}
AND STATUS = 'init'
]]>
</update>
<!--根据唯一约束AbsPackPackNo删除数据:abs_ast_pack mydalgen自动生成,请勿修改-->
<delete id="deleteByAbsPackPackNo" >
<![CDATA[
......@@ -182,6 +228,17 @@
]]>
</select>
<!--根据唯一约束AbsPackPackNo获取数据:abs_ast_pack mydalgen自动生成,请勿修改-->
<select id="getForLock" resultMap="BaseResultMap" >
SELECT /*MS-ABS-AST-PACK-GETFORLOCK*/ <include refid="Base_Column_List" />
FROM abs_ast_pack
WHERE
<![CDATA[
PACK_NO = #{packNo,jdbcType=VARCHAR}
FOR UPDATE
]]>
</select>
<!--根据普通索引AbsPackPlanNo获取数据:abs_ast_pack mydalgen自动生成,请勿修改-->
<select id="queryByAbsPackPlanNo" resultMap="BaseResultMap" >
SELECT /*MS-ABS-AST-PACK-QUERYBYABSPACKPLANNO*/ <include refid="Base_Column_List" />
......
......@@ -142,4 +142,14 @@
ID = #{id,jdbcType=DECIMAL}
]]>
</select>
<!--根据主键获取数据:abs_ast_pool mydalgen自动生成,请勿修改-->
<select id="getForLock" resultMap="BaseResultMap" >
SELECT /*MS-ABS-AST-POOL-GETFORLOCK*/ <include refid="Base_Column_List" />
FROM abs_ast_pool
WHERE
<![CDATA[
AST_POOL_NO = #{astPoolNo,jdbcType=VARCHAR} for update
]]>
</select>
</mapper>
......@@ -67,7 +67,7 @@
<result column="ALL_PRIN_BAL" property="allPrinBal" javaType="com.general.system.common.model.Money"/>
<result column="PACK_PRIN_BAL" property="packPrinBal" javaType="com.general.system.common.model.Money"/>
</resultMap>
<resultMap id="AstPoolLoan" type="com.abssqr.plat.common.dal.mysql.auto.resultmap.AstPoolLoan" >
<resultMap id="AstLoanResultMap" type="com.abssqr.plat.common.dal.mysql.auto.resultmap.AstLoan" >
<result column="FREE_TERM" property="freeTerm" javaType="Long"/>
<result column="REPAY_PERIOD" property="repayPeriod" javaType="Long"/>
<result column="AST_NO" property="astNo" javaType="String"/>
......@@ -80,6 +80,18 @@
<result column="PRIN_BAL" property="prinBal" javaType="com.general.system.common.model.Money"/>
</resultMap>
<sql id="pageResltSql">
L1.AST_NO, --资产编号
L1.PRIN_BAL, --贷款剩余本金
L1.START_DATE, --贷款日期
L1.TERM_CNT-L1.CUR_TERM AS FREE_TERM, --贷款剩余期限
R1.RATE, --贷款利率
L1.RISK_CL, --五级分类
R1.REPAY_PERIOD, --还款周期
R1.REPAY_PERIOD_TYPE, --还款周期类型
R1.REPAY_METHOD, --还款方式
R4.PLAN_NAME --资产归属
</sql>
<sql id="Base_SF_Column_List">
sf.USER_ID,sf.FEE_BAL,sf.INTR_BAL,sf.PRIN_BAL,sf.PAID_FEE_AMT,sf.OVD_PRIN_BAL,sf.OVD_INTR_BAL,sf.OVD_FEE_BAL,sf.OWN_STATUS
,sf.FEE_PENAL_BAL,sf.OTHER_FEE_BAL,sf.PAID_INTR_AMT,sf.PAID_PRIN_AMT,sf.INTR_PENAL_BAL
......@@ -516,16 +528,21 @@
FROM
ABS_LOAN L1
LEFT JOIN ABS_LOAN_CONTRACT R1 ON L1.AST_NO=R1.AST_NO
LEFT JOIN ABS_LOAN_PACK_REL R2 ON L1.AST_NO=R2.AST_NO
LEFT JOIN ABS_AST_PACK R3 ON R2.PACK_NO=R3.PACK_NO
LEFT JOIN ABS_PLAN R4 ON R3.PLAN_NO=R4.PLAN_NO
LEFT JOIN ABS_LOAN_CONTRACT R1
ON L1.AST_NO=R1.AST_NO
LEFT JOIN ABS_LOAN_PACK_REL R2
ON L1.AST_NO=R2.AST_NO
LEFT JOIN ABS_AST_PACK R3
ON R2.PACK_NO=R3.PACK_NO
LEFT JOIN ABS_PLAN R4
ON R3.PLAN_NO=R4.PLAN_NO
WHERE
R2.STATUS='in'
AND R3.AST_POOL_NO=#{astPoolNo,jdbcType=VARCHAR}
AND L1.STATUS IN ('nor', 'ovd')
</select>
<!--根据资产池编号查询对应的资产 pageResult mydalgen自动生成,请勿修改-->
<select id="getLoanListByAstPoolNoResult" resultMap="AstPoolLoan" >
<select id="getLoanListByAstPoolNoResult" resultMap="AstLoanResultMap" >
select
*
from(
......@@ -533,25 +550,131 @@
tt.*,ROWNUM AS rowno
from(
SELECT
L1.AST_NO, --资产编号
L1.PRIN_BAL, --贷款剩余本金
L1.START_DATE, --贷款日期
L1.TERM_CNT-L1.CUR_TERM AS FREE_TERM, --贷款剩余期限
R1.RATE, --贷款利率
L1.RISK_CL, --五级分类
R1.REPAY_PERIOD, --还款周期
R1.REPAY_PERIOD_TYPE, --还款周期类型
R1.REPAY_METHOD, --还款方式
R4.PLAN_NAME --资产归属
<include refid="pageResltSql"/>
FROM
ABS_LOAN L1
LEFT JOIN ABS_LOAN_CONTRACT R1 ON L1.AST_NO=R1.AST_NO
LEFT JOIN ABS_LOAN_PACK_REL R2 ON L1.AST_NO=R2.AST_NO
LEFT JOIN ABS_AST_PACK R3 ON R2.PACK_NO=R3.PACK_NO
LEFT JOIN ABS_PLAN R4 ON R3.PLAN_NO=R4.PLAN_NO
LEFT JOIN ABS_LOAN_CONTRACT R1
ON L1.AST_NO=R1.AST_NO
LEFT JOIN ABS_LOAN_PACK_REL R2
ON L1.AST_NO=R2.AST_NO
LEFT JOIN ABS_AST_PACK R3
ON R2.PACK_NO=R3.PACK_NO
LEFT JOIN ABS_PLAN R4
ON R3.PLAN_NO=R4.PLAN_NO
WHERE
R2.STATUS='in'
AND R3.AST_POOL_NO=#{astPoolNo,jdbcType=VARCHAR}
AND L1.STATUS IN ('nor', 'ovd')
) tt where ROWNUM &lt;= #{endRow}
) table_alias
where table_alias.rowno &gt; #{startRow}
</select>
<!--根据资产池编号查询对应的资产 pageCount mydalgen自动生成,请勿修改-->
<select id="getLoanListForPackAddAstCount" resultType="int" >
SELECT
COUNT(*) AS total
FROM
ABS_LOAN L1
UNION (
<if test="astType == @com.abssqr.plat.common.facade.enums.AstTypeEnum@QCDK">
<include refid="ABS_LOAN_PACK_REL.QCDK_SQL"/>
</if>
) u ON L1.ast_no=u.ast_no
LEFT JOIN ABS_LOAN_CONTRACT R1
ON L1.AST_NO=R1.AST_NO
LEFT JOIN ABS_LOAN_PACK_REL R2
ON L1.AST_NO=R2.AST_NO
LEFT JOIN ABS_AST_PACK R3
ON R2.PACK_NO=R3.PACK_NO
LEFT JOIN ABS_PLAN R4
ON R3.PLAN_NO=R4.PLAN_NO
WHERE
R2.STATUS='in'
AND R3.AST_POOL_NO=#{astPoolNo,jdbcType=VARCHAR}
AND L1.STATUS IN ('nor', 'ovd')
</select>
<!--根据资产池编号查询对应的资产 pageResult mydalgen自动生成,请勿修改-->
<select id="getLoanListForPackAddAstResult" resultMap="AstLoanResultMap" >
select
*
from(
select
tt.*,ROWNUM AS rowno
from(
SELECT
<include refid="pageResltSql"/>
FROM
ABS_LOAN L1
UNION (
<if test="astType == @com.abssqr.plat.common.facade.enums.AstTypeEnum@QCDK">
<include refid="com.abssqr.plat.common.dal.mysql.auto.mapper.LoanPackRelDOMapper.QCDK_SQL"/>
</if>
) u ON L1.ast_no=u.ast_no
LEFT JOIN ABS_LOAN_CONTRACT R1
ON L1.AST_NO=R1.AST_NO
LEFT JOIN ABS_LOAN_PACK_REL R2
ON L1.AST_NO=R2.AST_NO
LEFT JOIN ABS_AST_PACK R3
ON R2.PACK_NO=R3.PACK_NO
LEFT JOIN ABS_PLAN R4
ON R3.PLAN_NO=R4.PLAN_NO
WHERE
R2.STATUS='in'
AND R3.AST_POOL_NO=#{astPoolNo,jdbcType=VARCHAR}
AND L1.STATUS IN ('nor', 'ovd')
) tt where ROWNUM &lt;= #{endRow}
) table_alias
where table_alias.rowno &gt; #{startRow}
</select>
<!--根据资产池编号查询对应的资产 pageCount mydalgen自动生成,请勿修改-->
<select id="getLoanListForPackCount" resultType="int" >
SELECT
COUNT(*) AS total
FROM
ABS_LOAN L1
LEFT JOIN ABS_LOAN_CONTRACT R1
ON L1.AST_NO=R1.AST_NO
LEFT JOIN ABS_LOAN_PACK_REL R2
ON L1.AST_NO=R2.AST_NO
LEFT JOIN ABS_AST_PACK R3
ON R2.PACK_NO=R3.PACK_NO
LEFT JOIN ABS_PLAN R4
ON R3.PLAN_NO=R4.PLAN_NO
WHERE
R2.STATUS='in'
AND R2.PACK_NO = #{packNo,jdbcType=VARCHAR}
AND L1.STATUS IN ('nor', 'ovd')
</select>
<!--根据资产池编号查询对应的资产 pageResult mydalgen自动生成,请勿修改-->
<select id="getLoanListForPackResult" resultMap="AstLoanResultMap" >
select
*
from(
select
tt.*,ROWNUM AS rowno
from(
SELECT
<include refid="pageResltSql"/>
FROM
ABS_LOAN L1
LEFT JOIN ABS_LOAN_CONTRACT R1
ON L1.AST_NO=R1.AST_NO
LEFT JOIN ABS_LOAN_PACK_REL R2
ON L1.AST_NO=R2.AST_NO
LEFT JOIN ABS_AST_PACK R3
ON R2.PACK_NO=R3.PACK_NO
LEFT JOIN ABS_PLAN R4
ON R3.PLAN_NO=R4.PLAN_NO
WHERE
R2.STATUS='in'
AND R2.PACK_NO = #{packNo,jdbcType=VARCHAR}
AND L1.STATUS IN ('nor', 'ovd')
) tt where ROWNUM &lt;= #{endRow}
) table_alias
where table_alias.rowno &gt; #{startRow}
......
......@@ -28,6 +28,68 @@
BACK_COST,BACK_PRIN,AST_NO,BACK_NO,PACK_NO
,STATUS,GMT_CREATE,GMT_MODIFIED,REPAY_FINAL_DATE,BACK_RATE
</sql>
<sql id="QCDK_SQL">
SELECT l.ast_no,sum(l.prin_bal)OVER(order by l.ast_no desc) sum_bal
FROM abs_loan_pack_rel rel,abs_loan l,ABS_LOAN_CONTRACT lc
WHERE
l.ast_no = rel.ast_no
AND rel.ast_no = lc.ast_no
AND rel.status = 'in'
AND rel.PACK_NO = #{astPoolNo,jdbcType=VARCHAR}
<foreach collection="screenRuleList" item="rule">
<choose>
<!-- 五级分类 -->
<when test="rule.ruleType == @com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum@QCDK_RISK_TYPE">
AND l.RISK_CL in
<foreach collection="rule.listVal" item="val" open="(" separator="," close=")">
#{val,jdbcType=VARCHAR}
</foreach>
</when>
<!-- 贷款发放日 -->
<when test="rule.ruleType == @com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum@QCDK_DISB_DATE">
<if test="rule.leftCondition != null">
AND lc.DISB_DATE ${rule.leftCondition.code} to_date(#{rule.leftValue,jdbcType=VARCHAR},'yyyy-MM-dd')
</if>
<if test="rule.rightCondition != null">
AND lc.DISB_DATE ${rule.rightCondition.code} to_date(#{rule.rightValue,jdbcType=VARCHAR},'yyyy-MM-dd')
</if>
</when>
<!-- 贷款到期日 -->
<when test="rule.ruleType == @com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum@QCDK_END_DATE">
<if test="rule.leftCondition != null">
AND lc.DISB_DATE ${rule.leftCondition.code} to_date(#{rule.leftValue,jdbcType=VARCHAR},'yyyy-MM-dd')
</if>
<if test="rule.rightCondition != null">
AND lc.DISB_DATE ${rule.rightCondition.code} to_date(#{rule.rightValue,jdbcType=VARCHAR},'yyyy-MM-dd')
</if>
</when>
<!-- 执行利率 -->
<when test="rule.ruleType == @com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum@QCDK_LOAN_RATE">
<if test="rule.leftCondition != null">
AND lc.RATE ${rule.leftCondition.code} to_number(#{rule.leftValue,jdbcType=VARCHAR},'yyyy-MM-dd')
</if>
<if test="rule.rightCondition != null">
AND lc.RATE ${rule.rightCondition.code} to_number(#{rule.rightValue,jdbcType=VARCHAR},'yyyy-MM-dd')
</if>
</when>
<!-- 还款频率 -->
<when test="rule.ruleType == @com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum@QCDK_REPAY_FREQ">
<if test="rule.rightCondition != null">
AND lc.REPAY_PERIOD ${rule.rightCondition.code} #{rule.rightValue,jdbcType=VARCHAR}
</if>
</when>
<!-- 利率类型 -->
<when test="rule.ruleType == @com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum@QCDK_RATE_TYPE">
<if test="rule.rightCondition != null">
AND lc.RATE_TYPE ${rule.rightCondition.code} #{rule.rightValue,jdbcType=VARCHAR}
</if>
</when>
<otherwise>
@failure
</otherwise>
</choose>
</foreach>
</sql>
<!--插入表:abs_loan_pack_rel mydalgen自动生成,请勿修改-->
......@@ -91,6 +153,18 @@
;end;
</insert>
<!--更新表:abs_loan_pack_rel mydalgen自动生成,请勿修改-->
<update id="updatePackRel" >
<![CDATA[
UPDATE /*MS-ABS-LOAN-PACK-REL-UPDATEPACKREL*/ abs_loan_pack_rel
SET
PACK_NO = #{packNo,jdbcType=VARCHAR}
,GMT_MODIFIED = sysdate
WHERE
PACK_NO = #{oldPackNo,jdbcType=VARCHAR}
]]>
</update>
<!--根据主键删除数据:abs_loan_pack_rel mydalgen自动生成,请勿修改-->
<delete id="deleteByAbsLoanPackRelPk" >
<![CDATA[
......@@ -131,9 +205,28 @@
WHERE
<![CDATA[
l.ast_no = rel.ast_no
AND l.STATUS in ('nor','ovd')
AND rel.status = 'in'
AND rel.PACK_NO = #{packNo,jdbcType=VARCHAR}
AND l.STATUS in ('nor','ovd')
]]>
</select>
<!--筛选 mydalgen自动生成,请勿修改-->
<update id="updateForScreen" >
update /*MS-ABS-LOAN-PACK-REL-UPDATEFORSCREEN*/ abs_loan_pack_rel
set PACK_NO = #{packNo,jdbcType=VARCHAR}
where
PACK_NO = #{astPoolNo,jdbcType=VARCHAR}
AND ast_no in(
select
ast_no
from(
<if test="astType == @com.abssqr.plat.common.facade.enums.AstTypeEnum@QCDK">
<include refid="QCDK_SQL"/>
</if>
)where
sum_bal &lt;= ${avalAmt,jdbcType=DECIMAL}
)
</update>
</mapper>
......@@ -5,13 +5,19 @@
package com.abssqr.plat.common.facade.model.rule;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.abssqr.plat.common.facade.enums.AstScRuleLeftCondEnum;
import com.abssqr.plat.common.facade.enums.AstScRuleRightCondEnum;
import com.abssqr.plat.common.facade.enums.AstScreenRelTypeEnum;
import com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum;
import com.general.system.common.model.BaseEntity;
import com.general.system.common.util.StringUtil;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
/**
* @author bangis.wangdf
......@@ -112,4 +118,23 @@ public class AstScreenRule extends BaseEntity {
return ObjectUtils.allNotNull(this.ruleType) && (ObjectUtils.allNotNull(this.leftCondition, this.leftValue)
|| ObjectUtils.allNotNull(this.rightCondition, this.rightValue));
}
public List<String> getListVal(){
List<String> res = new ArrayList<String>();
if(StringUtils.isNotBlank(rightValue)){
if (StringUtil.isEmpty(rightValue)) {
return res;
}
String[] txtParts = rightValue.split(",");
for (String txtPart : txtParts) {
if (!StringUtil.isEmpty(txtPart)) {
res.add(txtPart.trim());
}
}
}
return res;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2020 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.param.ast;
import com.abssqr.plat.common.facade.base.BaseOprParam;
import com.abssqr.plat.common.facade.enums.EventCodeEnum;
import com.abssqr.plat.common.facade.validation.VldString;
/**
*
* @author bangis.wangdf
* @version com.abssqr.plat.common.facade.param.ast: AstPackSealOprParam.java, v 0.1 2020-04-21 13:41 bangis.wangdf Exp $
*/
public class AstPackSplitPackOprParam extends BaseOprParam {
/**
* 资产包编号
*/
@VldString(message = "资产包编号不能为空")
private String packNo;
public String getPackNo() {
return packNo;
}
public void setPackNo(String packNo) {
this.packNo = packNo;
}
@Override
public EventCodeEnum getEventCode() {
return EventCodeEnum.ADMIN_EDIT;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2020 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.param.ast;
import java.util.Date;
import com.abssqr.plat.common.facade.base.BaseOprParam;
import com.abssqr.plat.common.facade.enums.EventCodeEnum;
import com.abssqr.plat.common.facade.validation.VldDate;
import com.abssqr.plat.common.facade.validation.VldString;
/**
*
* @author bangis.wangdf
* @version com.abssqr.plat.common.facade.param.ast: AstPackSealOprParam.java, v 0.1 2020-04-21 13:41 bangis.wangdf Exp $
*/
public class AstPackUnPackOprParam extends BaseOprParam {
/**
* 资产包编号
*/
@VldString(message = "资产包编号不能为空")
private String packNo;
public String getPackNo() {
return packNo;
}
public void setPackNo(String packNo) {
this.packNo = packNo;
}
@Override
public EventCodeEnum getEventCode() {
return EventCodeEnum.ADMIN_EDIT;
}
}
......@@ -5,7 +5,7 @@ import com.abssqr.plat.common.facade.enums.EventCodeEnum;
public class AstPageQryParam extends BasePageQryParam{
private String astPoolNo;
private String packNo;
public String getAstPoolNo() {
return astPoolNo;
}
......@@ -14,6 +14,14 @@ public class AstPageQryParam extends BasePageQryParam{
this.astPoolNo = astPoolNo;
}
public String getPackNo() {
return packNo;
}
public void setPackNo(String packNo) {
this.packNo = packNo;
}
@Override
public EventCodeEnum getEventCode() {
return EventCodeEnum.ADMIN_DTL_QRY;
......
package com.abssqr.plat.common.facade.result.ast;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import com.abssqr.plat.common.facade.enums.AstRiskClassEnum;
import com.abssqr.plat.common.facade.enums.RepayMethodEnum;
import com.general.system.common.model.BaseEntity;
import com.general.system.common.model.Money;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
public class AstPoolLoanVO extends BaseEntity implements Serializable {
public class AstLoanVO extends BaseEntity implements Serializable {
//资产编号
private String astNo;
//贷款剩余本金
......
......@@ -8,9 +8,12 @@ package com.abssqr.plat.common.facade.service.ast;
import com.abssqr.plat.common.facade.param.ast.AstPackOprParam;
import com.abssqr.plat.common.facade.param.ast.AstPackQryParam;
import com.abssqr.plat.common.facade.param.ast.AstPackSealOprParam;
import com.abssqr.plat.common.facade.param.ast.AstPackSplitPackOprParam;
import com.abssqr.plat.common.facade.param.ast.AstPackUnPackOprParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.pack.AstPackListVO;
import com.abssqr.plat.common.facade.result.pack.AstPackVO;
import com.abssqr.plat.common.facade.validation.Valid;
/**
* 资产包服务
......@@ -46,4 +49,18 @@ public interface AstPackService {
*/
String sealPack(AstPackSealOprParam astPackSealOprParam);
/**
* 解包
* @param astPackUnPackOprParam
* @return
*/
String unPack(@Valid AstPackUnPackOprParam astPackUnPackOprParam);
/**
* 拆包
* @param astPackSplitPackOprParam
* @return
*/
String splitPack(AstPackSplitPackOprParam astPackSplitPackOprParam);
}
......@@ -4,11 +4,9 @@ import com.abssqr.plat.common.facade.param.ast.AstPageQryParam;
import com.abssqr.plat.common.facade.param.astPool.AstPoolOprParam;
import com.abssqr.plat.common.facade.param.astPool.AstPoolPageQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.AstPoolLoanVO;
import com.abssqr.plat.common.facade.result.ast.AstLoanVO;
import com.abssqr.plat.common.facade.result.astPool.AstPoolVO;
import java.util.List;
/**
* 资产池服务
*/
......@@ -35,10 +33,5 @@ public interface AstPoolService {
*/
AstPoolVO get(String astPoolNo);
/**
* 查询资产列表
* @param astPageQryParam
* @return
*/
BasePage<AstPoolLoanVO> astList(AstPageQryParam astPageQryParam);
}
package com.abssqr.plat.common.facade.service.ast;
import com.abssqr.plat.common.facade.param.ast.AstDownLoadParam;
import com.abssqr.plat.common.facade.param.ast.AstPageQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.AstLoanVO;
import javax.servlet.Servlet;
import javax.servlet.ServletOutputStream;
......@@ -14,4 +17,15 @@ public interface AstService {
* @param response
*/
void downLoadAstFile(AstDownLoadParam astDownLoadParam, HttpServletResponse response);
/**
* 查询资产列表
* @param astPageQryParam
* @return
*/
BasePage<AstLoanVO> poolAstList(AstPageQryParam astPageQryParam);
BasePage<AstLoanVO> packAstList(AstPageQryParam astPageQryParam);
BasePage<AstLoanVO> packAddAstList(AstPageQryParam astPageQryParam);
}
......@@ -44,6 +44,7 @@ public class AstPackConvert {
result.setPackDate(param.getPackDate());
//packSubmitDate 封包提交日
result.setPackSubmitDate(param.getPackSubmitDate());
result.setAstType(AstTypeEnum.getByCode(param.getAstType()));
return result;
}
......
package com.abssqr.plat.common.model.convertor.web;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPoolLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstLoan;
import com.abssqr.plat.common.facade.enums.AstRiskClassEnum;
import com.abssqr.plat.common.facade.enums.RepayMethodEnum;
import com.abssqr.plat.common.facade.param.ast.AstPageQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.AstLoanVO;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
public class AstLoanWebConvert {
public static AstLoanVO convert2AstPoolVO(AstLoan astLoan){
AstLoanVO astPoolLoanVO=new AstLoanVO();
astPoolLoanVO.setAstNo(astLoan.getAstNo());
astPoolLoanVO.setFreeTerm(astLoan.getFreeTerm());
astPoolLoanVO.setPlanName(astLoan.getPlanName());
astPoolLoanVO.setPrinBal(astLoan.getPrinBal());
astPoolLoanVO.setRate(astLoan.getRate());
astPoolLoanVO.setRepayMethod(RepayMethodEnum.getByCode(astLoan.getRepayMethod()));
astPoolLoanVO.setRepayPeriod(astLoan.getRepayPeriod());
astPoolLoanVO.setRepayPeriodType(astLoan.getRepayPeriodType());
astPoolLoanVO.setRiskCl(AstRiskClassEnum.getByCode(astLoan.getRiskCl()));
astPoolLoanVO.setStartDate(astLoan.getStartDate());
return astPoolLoanVO;
}
public static BasePage<AstLoanVO> convert2AstPoolVOs(
com.abssqr.plat.common.dal.mysql.auto.paging.BasePage<AstLoan> page) {
BasePage<AstLoanVO> result=new BasePage<>();
List<AstLoanVO> astLoanVOS=new ArrayList<>();
if(CollectionUtils.isNotEmpty(page.getDatas())) {
page.getDatas().forEach(v -> {
astLoanVOS.add(convert2AstPoolVO(v));
});
}
result.setDatas(astLoanVOS);
result.setTotal(page.getTotal());
result.setCurrPageNo(page.getCurrPageNo());
result.setLimit(page.getLimit());
return result;
}
}
package com.abssqr.plat.common.model.convertor.web;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPoolLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstPoolLoan;
import com.abssqr.plat.common.facade.enums.AstRiskClassEnum;
import com.abssqr.plat.common.facade.enums.RepayMethodEnum;
import com.abssqr.plat.common.facade.param.ast.AstPageQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.AstPoolLoanVO;
import java.util.ArrayList;
import java.util.List;
public class AstPoolLoanWebConvert {
public static AstPoolLoanVO convertAstPoolLoan2AstPoolVO(AstPoolLoan absPoolLoan){
AstPoolLoanVO astPoolLoanVO=new AstPoolLoanVO();
astPoolLoanVO.setAstNo(absPoolLoan.getAstNo());
astPoolLoanVO.setFreeTerm(absPoolLoan.getFreeTerm());
astPoolLoanVO.setPlanName(absPoolLoan.getPlanName());
astPoolLoanVO.setPrinBal(absPoolLoan.getPrinBal());
astPoolLoanVO.setRate(absPoolLoan.getRate());
astPoolLoanVO.setRepayMethod(RepayMethodEnum.getByCode(absPoolLoan.getRepayMethod()));
astPoolLoanVO.setRepayPeriod(absPoolLoan.getRepayPeriod());
astPoolLoanVO.setRepayPeriodType(absPoolLoan.getRepayPeriodType());
astPoolLoanVO.setRiskCl(AstRiskClassEnum.getByCode(absPoolLoan.getRiskCl()));
astPoolLoanVO.setStartDate(absPoolLoan.getStartDate());
return astPoolLoanVO;
}
public static BasePage<AstPoolLoanVO> convertAstPoolLoan2AstPoolVOs(AstPoolLoanPage page){
BasePage<AstPoolLoanVO> result=new BasePage<>();
List<AstPoolLoanVO> astPoolLoanVOS=new ArrayList<>();
page.getDatas().forEach(v->{
astPoolLoanVOS.add(convertAstPoolLoan2AstPoolVO(v));
});
result.setDatas(astPoolLoanVOS);
result.setTotal(page.getTotal());
result.setCurrPageNo(page.getCurrPageNo());
result.setLimit(page.getLimit());
return result;
}
public static AstPoolLoanPage convertAstParam2AstPage(AstPageQryParam astPageQryParam){
AstPoolLoanPage astPoolLoanPage=new AstPoolLoanPage();
astPoolLoanPage.setAstPoolNo(astPageQryParam.getAstPoolNo());
astPoolLoanPage.setCurrPageNo(astPageQryParam.getPageNum());
astPoolLoanPage.setLimit(astPageQryParam.getPageNum());
return astPoolLoanPage;
}
}
......@@ -43,16 +43,35 @@ public interface AstPackRepo {
AstPackPagePage getList(AstPackQryParam param);
/**
* 汇总资产包情况
* @param packNo
*/
LoanPackRelSummary sumAstPack(String packNo);
/**
* 封包
* @param packNo 包编号
* @param packSubmitDate 封包提交日
* @param sealPackDate 封包日
*/
void sealPack(String packNo, Date packSubmitDate, Date sealPackDate);
/**
* 解包
* @param packNo
*/
void unPack(String packNo);
/**
* 解包
* @param packNo
*/
void splitPack(String packNo);
/**
* 锁
* @param packNo
* @return
*/
AstPack lockAstPack(String packNo);
/**
*
* @param packNo
*/
void screenFisPack(String packNo);
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2020 All Rights Reserved.
*/
package com.abssqr.plat.common.model.repo.ast;
import java.util.List;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.LoanPackRelSummary;
import com.abssqr.plat.common.facade.enums.AstTypeEnum;
import com.abssqr.plat.common.facade.model.rule.AstScreenRule;
import com.general.system.common.model.Money;
/**
*
* @author bangis.wangdf
* @version com.abssqr.plat.common.model.repo.ast: LoanPackRelRepo.java, v 0.1 2020-04-21 16:58 bangis.wangdf Exp $
*/
public interface LoanPackRelRepo {
/**
* 汇总资产包情况
* @param packNo
*/
LoanPackRelSummary sumAstPack(String packNo);
/**
* 切换资产关系
* @param packNo
* @param astPoolNo
*/
void changePackRel(String packNo, String astPoolNo);
/**
* 资产筛选
* @param packNo
* @param astPoolNo
* @param astType
* @param screenRuleList
* @param avalAmt
* @return
*/
int screenAst(String packNo, String astPoolNo, AstTypeEnum astType, List<AstScreenRule> screenRuleList, Money avalAmt);
}
......@@ -6,7 +6,6 @@
package com.abssqr.plat.common.model.repo.ast;
import com.abssqr.plat.common.dal.mysql.auto.paging.*;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstPoolLoan;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstPoolLoanStat;
import com.abssqr.plat.common.facade.param.loan.LoanPageQryParam;
import com.abssqr.plat.common.model.domain.ast.Loan;
......@@ -119,5 +118,9 @@ public interface LoanRepository {
PackAstPage getLoanPageByPackNo(PackAstPage packAstPage);
AstPoolLoanPage getLoanPageByPoolNo(AstPoolLoanPage astPoolLoanPage);
AstPackAddLoanPage getLoanPageForPackAddAst(AstPackAddLoanPage astPackLoan);
AstPackLoanPage getLoanListForPack(AstPackLoanPage astPackLoan);
}
......@@ -10,6 +10,7 @@ import java.util.List;
import com.abssqr.plat.common.dal.mysql.auto.dao.AstPackDAO;
import com.abssqr.plat.common.dal.mysql.auto.dao.LoanPackRelDAO;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.AstPackDO;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPackPagePage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.LoanPackRelSummary;
import com.abssqr.plat.common.facade.enums.AstPackStatusEnum;
......@@ -32,8 +33,6 @@ import org.springframework.stereotype.Component;
public class AstPackRepoImpl implements AstPackRepo {
@Autowired
private AstPackDAO astPackDAO;
@Autowired
private LoanPackRelDAO loanPackRelDAO;
@Override
public AstPack getByAbsPackPackNo(String packNo) {
......@@ -69,10 +68,6 @@ public class AstPackRepoImpl implements AstPackRepo {
return astPackDAO.getList(page);
}
@Override
public LoanPackRelSummary sumAstPack(String packNo) {
return loanPackRelDAO.sumAstByPack(packNo);
}
/**
* 封包
......@@ -86,4 +81,47 @@ public class AstPackRepoImpl implements AstPackRepo {
int i = astPackDAO.updateSealPack(sealPackDate, packSubmitDate, packNo);
VarChecker.checkEquals(i,1,"封包失败");
}
/**
* 解包
*
* @param packNo
*/
@Override
public void unPack(String packNo) {
int i = astPackDAO.updateUnPack(packNo);
VarChecker.checkEquals(i,1,"解包失败");
}
/**
* 解包
*
* @param packNo
*/
@Override
public void splitPack(String packNo) {
int i = astPackDAO.updateSplitPack(packNo);
VarChecker.checkEquals(i,1,"拆包失败");
}
/**
* 锁
*
* @param packNo
* @return
*/
@Override
public AstPack lockAstPack(String packNo) {
AstPackDO astPackDO = astPackDAO.getForLock(packNo);
return AstPackConvert.convertDomain(astPackDO);
}
/**
* @param packNo
*/
@Override
public void screenFisPack(String packNo) {
int i = astPackDAO.updateScreenFis(packNo);
VarChecker.checkEquals(i,1,"更新包状态失败");
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2020 All Rights Reserved.
*/
package com.abssqr.plat.common.model.repo.ast.impl;
import java.util.List;
import com.abssqr.plat.common.dal.mysql.auto.dao.LoanPackRelDAO;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.LoanPackRelSummary;
import com.abssqr.plat.common.facade.enums.AstTypeEnum;
import com.abssqr.plat.common.facade.model.rule.AstScreenRule;
import com.abssqr.plat.common.model.repo.ast.LoanPackRelRepo;
import com.general.system.common.model.Money;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
*
* @author bangis.wangdf
* @version com.abssqr.plat.common.model.repo.ast.impl: LoanPackRelImpl.java, v 0.1 2020-04-21 16:58 bangis.wangdf Exp $
*/
@Component
public class LoanPackRelImpl implements LoanPackRelRepo {
@Autowired
private LoanPackRelDAO loanPackRelDAO;
@Override
public LoanPackRelSummary sumAstPack(String packNo) {
return loanPackRelDAO.sumAstByPack(packNo);
}
/**
* 切换资产关系
*
* @param packNo
* @param astPoolNo
*/
@Override
public void changePackRel(String packNo, String astPoolNo) {
loanPackRelDAO.updatePackRel(packNo,astPoolNo);
}
/**
* 资产筛选
*
* @param packNo
* @param astPoolNo
* @param astType
* @param screenRuleList
* @return
*/
@Override
public int screenAst(String packNo, String astPoolNo, AstTypeEnum astType, List<AstScreenRule> screenRuleList, Money avalAmt) {
return loanPackRelDAO.updateForScreen(avalAmt,packNo,astPoolNo,astType,screenRuleList);
}
}
......@@ -5,22 +5,31 @@
package com.abssqr.plat.common.model.repo.ast.impl;
import cn.hutool.core.util.StrUtil;
import java.util.Date;
import java.util.List;
import com.abssqr.plat.common.dal.mysql.auto.dao.LoanBakDAO;
import com.abssqr.plat.common.dal.mysql.auto.dao.LoanContractDAO;
import com.abssqr.plat.common.dal.mysql.auto.dao.LoanDAO;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.LoanBakDO;
import com.abssqr.plat.common.dal.mysql.auto.paging.*;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstPoolLoan;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPackAddLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPackLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPoolLoanPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.CapitalAstMatchPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.CapitalAstUnMatchPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.LoanBakListPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.LoanListPage;
import com.abssqr.plat.common.dal.mysql.auto.paging.PackAstPage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstPoolLoanStat;
import com.abssqr.plat.common.facade.param.loan.LoanPageQryParam;
import com.abssqr.plat.common.model.convertor.LoanConvert;
import com.abssqr.plat.common.model.domain.ast.AstPoolEntity;
import com.abssqr.plat.common.model.domain.ast.Loan;
import com.abssqr.plat.common.model.domain.ast.LoanBak;
import com.abssqr.plat.common.model.repo.ast.LoanRepository;
import com.abssqr.plat.common.model.repo.astPool.AstPoolRepository;
import com.abssqr.plat.common.util.profiler.PerformTrace;
import cn.hutool.core.util.StrUtil;
import com.general.system.common.model.Money;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
......@@ -28,9 +37,6 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
/**
* 贷款资产仓储
*
......@@ -183,6 +189,20 @@ public class LoanRepositoryImpl implements LoanRepository {
return result;
}
@Override
public AstPoolLoanPage getLoanPageByPoolNo(AstPoolLoanPage astPoolLoanPage) {
AstPoolLoanPage loanListByAstPoolNo = loanDAO.getLoanListByAstPoolNo(astPoolLoanPage);
return loanListByAstPoolNo;
}
@Override
public AstPackAddLoanPage getLoanPageForPackAddAst(AstPackAddLoanPage astPackLoan){
AstPackAddLoanPage astPackLoanPage = loanDAO.getLoanListForPackAddAst(astPackLoan);
return astPackLoanPage;
}
@Override
public AstPackLoanPage getLoanListForPack(AstPackLoanPage astPackLoan){
AstPackLoanPage astPackLoanPage = loanDAO.getLoanListForPack(astPackLoan);
return astPackLoanPage;
}
}
......@@ -34,5 +34,10 @@ public interface AstPoolRepository {
boolean checkAstPool(AstPoolEntity astPoolEntity);
AstPoolLoanPage astPage(AstPoolLoanPage astPoolLoanPage);
/**
* 锁
* @param astPoolNo
* @return
*/
AstPoolEntity lockAstPool(String astPoolNo);
}
\ No newline at end of file
......@@ -58,11 +58,18 @@ public class AstPoolRepositoryImpl implements AstPoolRepository {
return true;
}
/**
* 锁
*
* @param astPoolNo
* @return
*/
@Override
public AstPoolLoanPage astPage(AstPoolLoanPage astPoolLoanPage) {
AstPoolLoanPage loanListByAstPoolNo = loanDAO.getLoanListByAstPoolNo(astPoolLoanPage);
return loanListByAstPoolNo;
public AstPoolEntity lockAstPool(String astPoolNo) {
AstPoolDO astPoolDO = astPoolDAO.getForLock(astPoolNo);
return AstPoolConvert.convert2Domain(astPoolDO);
}
}
......@@ -71,5 +71,9 @@
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<dependency>
<groupId>com.abssqr.bbplat</groupId>
<artifactId>common-facade</artifactId>
</dependency>
</dependencies>
</project>
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.util.utils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.abssqr.plat.common.facade.constants.AbssqrConstants;
import com.abssqr.plat.common.facade.enums.CommonErrorCodeEnum;
import com.general.system.common.util.StringUtil;
import org.springframework.util.CollectionUtils;
import static com.general.system.common.util.MessageUtil.formatMsg;
/**
*
* @author zhenxuan.luo
* @version com.abssqr.plat.common.util.utils: TextUtil.java, v 0.1 2019-05-28 11:39 zhenxuan.luo Exp $
*/
public class TextUtil {
/**
* 单元项之间的分隔符
*/
public final static String ITEM_SEP = ",";
/**
* 值之间的分隔符,用于map
*/
public final static String VALUE_SEP = ":";
/**
* 将Set转成String
*
* @param obj
* @return
*/
public final static String convertSet2Txt(Set<String> obj) {
return convertSet2Txt(obj, ITEM_SEP);
}
/**
* 将Set转成String
*
* @param obj
* @return
*/
public final static String convertSet2Txt(Set<String> obj, String seq) {
StringBuilder builder = new StringBuilder();
if (!CollectionUtils.isEmpty(obj)) {
for (String txt : obj) {
builder.append(txt).append(seq);
}
builder.deleteCharAt(builder.length() - 1);
}
return builder.toString();
}
/**
* 将文本String转成Set,用“,”分隔
*
* @param txt
* @return
*/
public final static Set<String> convertTxt2Set(String txt) {
return convertTxt2Set(txt, ITEM_SEP);
}
/**
* 将文本String转成Set,用自定义分隔
*
* @param txt
* @return
*/
public final static Set<String> convertTxt2Set(String txt, String sep) {
Set<String> res = new HashSet<String>();
if (StringUtil.isEmpty(txt)) {
return res;
}
String[] txtParts = txt.split(sep);
for (String txtPart : txtParts) {
if (!StringUtil.isEmpty(txtPart)) {
res.add(txtPart.trim());
}
}
return res;
}
/**
* 将文本String转成List,用“,”分隔
*
* @param txt
* @return
*/
public final static List<String> convertTxt2List(String txt) {
return convertTxt2List(txt, ITEM_SEP);
}
/**
* 将文本String转成List,用自定义分隔
*
* @param txt
* @return
*/
public final static List<String> convertTxt2List(String txt, String sep) {
List<String> res = new ArrayList<String>();
if (StringUtil.isEmpty(txt)) {
return res;
}
String[] txtParts = txt.split(sep);
for (String txtPart : txtParts) {
if (!StringUtil.isEmpty(txtPart)) {
res.add(txtPart.trim());
}
}
return res;
}
/**
* 将map转为String
*
* @param obj
* @return
*/
public final static String convertMap2Txt(Map<String, ? extends Object> obj) {
StringBuilder builder = new StringBuilder();
if (!CollectionUtils.isEmpty(obj)) {
for (String key : obj.keySet()) {
builder.append(key).append(VALUE_SEP).append(String.valueOf(obj.get(key)))
.append(ITEM_SEP);
}
builder.deleteCharAt(builder.length() - 1);
}
return builder.toString();
}
/**
* 将String转为map
*
* @param txt
* @return
*/
public final static Map<String, String> convertTxt2Map(String txt) {
Map<String, String> res = new HashMap<String, String>();
if (StringUtil.isEmpty(txt)) {
return res;
}
String[] parts = txt.split(ITEM_SEP);
for (String part : parts) {
String[] valParts = part.split(VALUE_SEP, 2);
if (valParts == null || valParts.length != 2) {
throw new RuntimeException(formatMsg("将{0}转成map失败,存在非法格式串{1}", txt, part));
}
if (valParts[0] == null || valParts[1] == null) {
continue;
}
res.put(valParts[0].trim(), valParts[1].trim());
}
return res;
}
/**
* 解析Y、N
*
* @param txt
* @param defaultVal
* @return
*/
public static boolean parseYesOrNo(String txt, boolean defaultVal) {
if (null == txt) {
return defaultVal;
}
if (StringUtil.equalsIgnoreCase(AbssqrConstants.YES_FLAG, txt.trim())) {
return true;
} else if (StringUtil.equalsIgnoreCase(AbssqrConstants.NO_FLAG, txt.trim())) {
return false;
} else {
return defaultVal;
}
}
/**
* 转换true false为Y或者N
*
* @param val
* @return
*/
public static String convertYesOrNo(boolean val) {
return val ? AbssqrConstants.YES_FLAG : AbssqrConstants.NO_FLAG;
}
/**
* 复制map
*
* @param orig
* @return
*/
public static Map<String, String> copyMap(Map<String, String> orig) {
Map<String, String> newMap = new HashMap<String, String>();
if (null != orig) {
for (String key : orig.keySet()) {
newMap.put(key, orig.get(key));
}
}
return newMap;
}
/**
* 合并两个map
*
* @param baseMap 基础map,如果有key和mergeMap冲突,使用baseMap中的值
* @param mergeMap
* @return
*/
public static Map<String, String> mergeMap(Map<String, String> baseMap,
Map<String, String> mergeMap) {
// 1.先取被合并的map
Map<String, String> newMap = copyMap(mergeMap);
// 2.直接将baseMap中的值装入
for (String key : baseMap.keySet()) {
newMap.put(key, baseMap.get(key));
}
return newMap;
}
}
\ No newline at end of file
......@@ -16,9 +16,11 @@ import com.abssqr.plat.common.facade.enums.AstTypeEnum;
import com.abssqr.plat.common.facade.enums.CommonTaskTypeEnum;
import com.abssqr.plat.common.facade.model.rule.AstScreenRule;
import com.abssqr.plat.common.model.domain.ast.AstPack;
import com.abssqr.plat.common.model.domain.ast.AstPoolEntity;
import com.abssqr.plat.common.model.domain.task.CommonTask;
import com.abssqr.plat.common.model.enums.OrgCodeEnum;
import com.abssqr.plat.common.model.repo.ast.AstPackRepo;
import com.abssqr.plat.common.model.repo.ast.LoanPackRelRepo;
import com.abssqr.plat.common.model.repo.rule.AstScreenRuleRepo;
import com.abssqr.plat.common.model.repo.task.CommonTaskRepository;
import com.abssqr.plat.common.util.base.Day;
......@@ -37,13 +39,16 @@ import org.springframework.stereotype.Component;
@Component
public class AstPackManager {
@Autowired
AstPackRepo astPackRepository;
AstPackRepo astPackRepo;
@Autowired
LoanPackRelRepo loanPackRelRepo;
@Autowired
AstScreenRuleRepo astScreenRuleRepo;
@Autowired
CommonTaskRepository commonTaskRepository;
@Autowired
OrgAcctDayComponent orgAcctDayComponent;
OrgAcctDayComponent orgAcctDayComponent;
public static final List<AstPackStatusEnum> canPack = Lists.newArrayList(AstPackStatusEnum.SCEEN_FIS,AstPackStatusEnum.UNPACK);
/**
* 新增资产包
......@@ -53,11 +58,11 @@ public class AstPackManager {
*/
public String add(AstPack astPack) {
// 1. 校验重复
AstPack checkAstPack = astPackRepository.getByAbsPackPackNo(astPack.getPackNo());
AstPack checkAstPack = astPackRepo.getByAbsPackPackNo(astPack.getPackNo());
VarChecker.checkArgument(checkAstPack == null, "资产包已存在{0}", astPack.getPackNo());
Long cnt = astPackRepository.cntByPackName(astPack.getPackName());
Long cnt = astPackRepo.cntByPackName(astPack.getPackName());
VarChecker.checkEquals(cnt, 0L, "资产包名重复");
astPackRepository.insert(astPack);
astPackRepo.insert(astPack);
// 3. 保存筛选规则
astScreenRuleRepo.insertBatch(astPack.getScreenRuleList());
......@@ -73,7 +78,7 @@ public class AstPackManager {
* @param astPoolNo
* @param astTypeEnum
*/
public void craeteDefaultPack(String astPoolNo, AstTypeEnum astTypeEnum,String prodNo) {
public void createDefaultPack(String astPoolNo, AstTypeEnum astTypeEnum, String prodNo) {
AstPack astPack = new AstPack();
astPack.setAstPoolNo(astPoolNo);
astPack.setPackNo(astPoolNo);
......@@ -81,7 +86,7 @@ public class AstPackManager {
astPack.setStatus(AstPackStatusEnum.INIT);
astPack.setAstType(astTypeEnum);
createDefaultScreenRule(prodNo,astPack.getPackNo());
astPackRepository.insert(astPack);
astPackRepo.insert(astPack);
}
/**
......@@ -91,7 +96,7 @@ public class AstPackManager {
*/
public AstPack get(String packNo) {
VarChecker.checkNotEmpty(packNo,"包编号必填");
AstPack astPack = astPackRepository.getByAbsPackPackNo(packNo);
AstPack astPack = astPackRepo.getByAbsPackPackNo(packNo);
VarChecker.checkNotNull(astPack,"找不到对应的资产包{0}",packNo);
List<AstScreenRule> ruleList = astScreenRuleRepo.getScreenRuleList(packNo);
astPack.setScreenRuleList(ruleList);
......@@ -120,10 +125,43 @@ public class AstPackManager {
* @param sealPackDate
*/
public void sealPack(String packNo, Date sealPackDate) {
AstPack astPack = astPackRepository.getByAbsPackPackNo(packNo);
AstPack astPack = astPackRepo.getByAbsPackPackNo(packNo);
VarChecker.checkNotNull(astPack,"{0}包不存在",packNo);
VarChecker.checkArgument(canPack.contains(astPack.getStatus()),"资产包状态不满足");
Day astAcctDay = orgAcctDayComponent.getAstAcctDay(OrgCodeEnum.ABS);
astPackRepository.sealPack(packNo,astAcctDay.getDate(), sealPackDate);
astPackRepo.sealPack(packNo, astAcctDay.getDate(), sealPackDate);
}
/**
* 解包
*
* @param packNo
*/
public void unPack(String packNo) {
AstPack astPack = astPackRepo.getByAbsPackPackNo(packNo);
VarChecker.checkNotNull(astPack, "{0}包不存在", packNo);
VarChecker.checkEquals(astPack.getStatus(), AstPackStatusEnum.PACK, "资产包状态不满足");
astPackRepo.unPack(packNo);
}
/**
* 拆包
*
* @param packNo
*/
public void splitPack(String packNo) {
AstPack astPack = astPackRepo.getByAbsPackPackNo(packNo);
VarChecker.checkNotNull(astPack, "{0}包不存在", packNo);
VarChecker.checkArgument(canPack.contains(astPack.getStatus()), "资产包状态不满足");
loanPackRelRepo.changePackRel(packNo,astPack.getAstPoolNo());
astPackRepo.splitPack(packNo);
}
public AstPack lockAstPack(String packNo) {
AstPack astPack = astPackRepo.lockAstPack(packNo);
VarChecker.checkNotNull(astPack,"找不到对应的资产包{0}",packNo);
List<AstScreenRule> ruleList = astScreenRuleRepo.getScreenRuleList(packNo);
astPack.setScreenRuleList(ruleList);
return astPack;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2020 All Rights Reserved.
*/
package com.abssqr.plat.core.service.rule;
import com.abssqr.plat.common.model.domain.ast.AstPack;
import com.abssqr.plat.common.model.repo.ast.LoanPackRelRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
*
* @author bangis.wangdf
* @version com.abssqr.plat.core.service.rule: AstScreenRuleComponent.java, v 0.1 2020-04-26 14:36 bangis.wangdf Exp $
*/
@Component
public class AstScreenRuleComponent {
@Autowired
LoanPackRelRepo loanPackRelRepo;
/**
* 筛选资产包
* @param astPack
* @return
*/
public int screenAst(AstPack astPack) {
return loanPackRelRepo.screenAst(astPack.getPackNo(),astPack.getAstPoolNo(),astPack.getAstType(),astPack.getScreenRuleList(),astPack.getAvalAmt());
}
}
......@@ -6,7 +6,7 @@ package com.abssqr.plat.test.unittest.astPool; /**
import com.abssqr.plat.common.facade.param.ast.AstPageQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.AstPoolLoanVO;
import com.abssqr.plat.common.facade.result.ast.AstLoanVO;
import com.abssqr.plat.common.facade.service.ast.AstPoolService;
import com.abssqr.plat.test.BaseAutoTests;
import com.abssqr.test.annotation.XTest;
......@@ -28,7 +28,7 @@ public class AstListUnitTest extends BaseAutoTests {
@Test(dataProvider = "YamlDataProvider", description = "资产列表查询")
public void add(ICase iCase, AstPageQryParam astPageQryParam,String checkGet) {
try {
BasePage<AstPoolLoanVO> astPoolLoanVOBasePage = astPoolService.astList(astPageQryParam);
BasePage<AstLoanVO> astPoolLoanVOBasePage = astPoolService.astList(astPageQryParam);
VarChecker.checkArgument(checkGet.equals(new Gson().toJson(astPoolLoanVOBasePage)),"查询不符合预期");
} finally {
// 校验数据
......
......@@ -9,6 +9,9 @@ import com.abssqr.plat.common.facade.param.ast.AstPackOprParam;
import com.abssqr.plat.common.facade.param.ast.AstPackQryParam;
import com.abssqr.plat.common.facade.result.pack.AstPackVO;
import com.abssqr.plat.common.facade.service.ast.AstPackService;
import com.abssqr.plat.common.model.domain.ast.AstPack;
import com.abssqr.plat.common.model.repo.ast.LoanPackRelRepo;
import com.abssqr.plat.core.service.ast.AstPackManager;
import com.abssqr.plat.test.BaseAutoTests;
import com.abssqr.test.annotation.XTest;
import com.abssqr.test.icase.ICase;
......@@ -25,7 +28,11 @@ import org.testng.annotations.Test;
public class PackAddUnitTest extends BaseAutoTests {
@Autowired
private AstPackService astPackService;
AstPackService astPackService;
@Autowired
LoanPackRelRepo loanPackRelRepo;
@Autowired
AstPackManager astPackManager;
@XTest(relatePath = "unittest/pack/add")
@Test(dataProvider = "YamlDataProvider", description = "资产包新增")
......@@ -40,6 +47,13 @@ public class PackAddUnitTest extends BaseAutoTests {
VarChecker.checkNotNull(astPackVO);
System.out.println(JSON.toJSONString(astPackVO));
//
AstPack astPack = astPackManager.get(packOprParam.getPackNo());
int cnt = loanPackRelRepo.screenAst(astPack.getPackNo(), astPack.getAstPoolNo(), astPack.getAstType(),
astPack.getScreenRuleList());
System.out.println(cnt);
} finally {
// 校验数据
super.checkDB(iCase);
......
--- !!com.abssqr.test.icase.Case
id: pack_add_case0001
desc: 资产包新增测试
context:
clearDBContext:
- abs_ast_pack:
PACK_NO: packAdd01
- abs_ast_pack:
PACK_NAME: 资产包01
- abs_ast_screen_rule:
REL_NO: packAdd01
REL_TYPE: PACK
- ABS_COMMON_TASK:
BIZ_NO: packAdd01
initDBContext:
checkDBContext:
- ABS_COMMON_TASK:
ENV:
MEMO:
BIZ_NO[C]: packAdd01
CONTEXT: astPool01
LAST_HOST:
TASK_TYPE: PACK_MATCH
TASK_STATUS: init
EXEC_TIMES: 0
LAST_EXEC_TIME:
NEXT_EXEC_TIME:
#- ABS_AST_SCREEN_RULE:
# REL_NO[C]: packAdd01
# REL_TYPE: PACK
# RULE_TYPE: QCDK_RISK_TYPE
# LEFT_CONDITION:
# LEFT_VALUE:
# RIGHT_CONDITION: eq
# RIGHT_VALUE: 1,2,3
- ABS_AST_PACK:
PACK_NO[C]: packAdd01
PACK_NAME: 资产包01
AVAL_AMT: 1000000000
AST_POOL_NO: astPool01
PLAN_NO:
STATUS: init
PACK_DATE:
PACK_SUBMIT_DATE:
PACK_TYPE: normal
AST_TYPE: QCDK
###
--- !!com.abssqr.plat.common.facade.param.ast.AstPackOprParam
packNo: packAdd01
packName: 资产包01
avalAmt: 10000000
astPoolNo: astPool01
astType: QCDK
screenRuleList:
- ruleType: QCDK_RISK_TYPE
leftValue:
rightValue: '1,2,3'
rightCondition: 'eq'
- ruleType: QCDK_DISB_DATE
leftValue:
rightValue: '1,2,3'
rightCondition: 'in'
\ No newline at end of file
--- !!com.abssqr.test.icase.Case
id: astPool_add_case0001
desc: 资产池新增测试
context:
clearDBContext:
- ABS_AST_POOL:
AST_TYPE: BL
- ABS_AST_PACK:
AST_TYPE: BL
initDBContext:
checkDBContext:
- ABS_AST_POOL:
AST_POOL_NAME: 测试资产池
AST_TYPE: BL
PROD_NO[C]: TEST_PROD_NO1
- ABS_AST_PACK:
AST_TYPE[C]: BL
STATUS: init
PACK_TYPE: default
###
--- !!com.abssqr.plat.common.facade.param.astPool.AstPoolOprParam
astPoolName: 测试资产池
astType: BL
prodNo: TEST_PROD_NO1
\ No newline at end of file
--- !!com.abssqr.test.icase.Case
id: astPool_astList_case0001
desc: 资产池新增测试
context:
clearDBContext:
- ABS_AST_POOL:
AST_POOL_NO: TEST_ASTPOOL001
- ABS_AST_PACK:
PACK_NO: packAdd01
- ABS_LOAN_PACK_REL:
PACK_NO: packAdd01
- ABS_LOAN:
AST_NO: absLoanAstNo0020
- ABS_AST_PACK:
PACK_NO: packAdd01
- ABS_LOAN_CONTRACT:
AST_NO: absLoanAstNo0020
- abs_plan:
PLAN_NO: planNo001
initDBContext:
- ABS_AST_POOL:
ID: "{nextval}"
AST_POOL_NAME: 测试资产池
AST_TYPE: BL
AST_POOL_NO: TEST_ASTPOOL001
PROD_NO: testProdNo1
- ABS_AST_PACK:
ID: "{nextval}"
PACK_NO: packAdd01
PACK_NAME: 资产包01
AVAL_AMT: 1000000000
AST_POOL_NO: TEST_ASTPOOL001
PLAN_NO: planNo001
STATUS: 'init'
PACK_DATE:
PACK_SUBMIT_DATE:
PACK_TYPE: default
AST_TYPE: QCDK
GMT_CREATE: sysdate
GMT_MODIFIED: sysdate
- abs_plan:
id: "{nextval}"
plan_no: planNo001
plan_name: 测试计划名称
total_amt: 0
begin_date: "@20190501@"
end_date: "@20200501@"
fund_type: PUBLIC
sponsor_org_code: sponsorOrgCode01
plan_mgr_org_code: managerOrgCode01
init_calc_date: "@20190502@"
effect_date: "@20190503@"
first_clear_date: "@20190504@"
first_pay_date: "@20190505@"
pay_freq: M
calc_intr_type: ACT_360
vat_rate: 0.3
status: ONGOING
approve_status: PASSED
gmt_create: sysdate
PLAN_TYPE: SPV
- abs_loan_pack_rel:
PACK_NO: packAdd01
AST_NO: absLoanAstNo0020
STATUS: in
GMT_CREATE: sysdate
GMT_MODIFIED: sysdate
- abs_loan:
AST_NO: absLoanAstNo0020
OWN_ORG: planNo001
PROD_NO: prodCode001
RISK_CL: 1
STATUS: nor
OWN_PACK:
OUT_AST_NO: testSyncDataLoanNo0020
OUT_PROD_NO: prod01
CONTRACT_NO: absLoanContNo0020
LAST_OWN_ORG:
LENDER_ORG_CODE: planNo001
manager_org_code: '1009'
SPONSER_ORG_CODE:
CUR_TERM: 0
OVD_DAYS: 0
TERM_CNT: 12
IN_DATE: '@20190610@'
END_DATE: '@20200615@'
CLEAR_DATE:
GMT_CREATE:
START_DATE: '@20190607@'
GMT_MODIFIED: '@20190626@'
LAST_UPDATE_DATE: '@20190610@'
FEE_BAL: 0
INTR_BAL: 1145
PRIN_BAL: 300000
PAID_FEE_AMT: 0
FEE_PENAL_BAL: 0
OTHER_FEE_BAL: 0
PAID_INTR_AMT: 0
PAID_PRIN_AMT: 0
INTR_PENAL_BAL: 0
PRIN_PENAL_BAL: 0
PAID_FEE_PENAL_AMT: 0
PAID_OTHER_FEE_AMT: 0
OTHER_FEE_PENAL_BAL: 0
PAID_INTR_PENAL_AMT: 0
PAID_PRIN_PENAL_AMT: 0
PAID_OTHER_FEE_PENAL_AMT: 0
OVD_PRIN_BAL: 0
OVD_INTR_BAL: 0
OVD_FEE_BAL: 0
OWN_STATUS: pOut
USER_ID:
WTF_STATUS: N
- abs_loan_contract:
id: '{nextval}'
CITY: 123
NAME: 焦建国
AST_NO: absLoanAstNo0020
CERT_NO: 142123197804210535
CONT_NO: absLoanContNo0020
PROD_NO: prodCode001
PURPOSE: U04
CERT_TYPE: 0
LOAN_TYPE: '03'
MOBILE_NO:
OUT_AST_NO: testSyncDataLoanNo0020
PROVINCE: 142
RATE_TYPE: '02'
APPLY_LOC:
OUT_CONT_NO: testSyncDataContNo0020
REPAY_METHOD: RM02
LENDER_ORG_CODE: planNo001
manager_org_code: '1009'
SPONSER_ORG_CODE:
REPAY_PERIOD_TYPE: M
TERM_CNT: 12
RATE_DAYS: 30
REPAY_PERIOD: 1
END_DATE: '@20200615@'
DISB_DATE: '@20190607@'
START_DATE: '@20190607@'
EFFECT_DATE: '@20190607@'
RATE: 0.024
DISB_AMOUNT: 300000
PNY_RATE: 0.036
GRANT_TYPE: CT01
checkDBContext:
###
--- !!com.abssqr.plat.common.facade.param.ast.AstPageQryParam
astPoolNo: TEST_ASTPOOL001
pageNum: 1
pageSize: 1
## checkGet
---
'{"total":1,"limit":1,"currPageNo":1,"datas":[{"astNo":"absLoanAstNo0020","prinBal":{"cent":300000,"currency":"CNY","currencyValue":"156"},"startDate":"Jun 7, 2019 12:00:00 AM","freeTerm":12,"rate":0.024,"riskCl":"NORMAL","repayPeriod":1,"repayPeriodType":"M","repayMethod":"RM02","planName":"测试计划名称"}]}'
\ No newline at end of file
--- !!com.abssqr.test.icase.Case
id: astPool_get_case0001
desc: 资产池详情查询测试
context:
clearDBContext:
- ABS_AST_POOL:
AST_TYPE: BL
- ABS_AST_PACK:
AST_TYPE: BL
initDBContext:
- ABS_AST_POOL:
ID: "{nextval}"
AST_POOL_NAME: 测试资产池
AST_TYPE: BL
AST_POOL_NO: ASTPOOL2020042118092600425385
PROD_NO: testProdNo1
checkDBContext:
## astPoolNo
---
"ASTPOOL2020042118092600425385"
## checkGet
---
'{"astPoolName":"测试资产池","astType":"BL","prodNo":"testProdNo1","astAmt":{"cent":0,"currency":"CNY","currencyValue":"156"},"astCnt":0,"packedAstAmt":{"cent":0,"currency":"CNY","currencyValue":"156"},"packedAstCnt":0}'
\ No newline at end of file
--- !!com.abssqr.test.icase.Case
id: astPool_list_case0001
desc: 资产池列表查询测试
context:
clearDBContext:
- ABS_AST_POOL:
- ABS_AST_PACK:
AST_TYPE: BL
initDBContext:
- ABS_AST_POOL:
ID: "{nextval}"
AST_POOL_NAME: 测试资产池
AST_TYPE: BL
AST_POOL_NO: ASTPOOL2020042118092600425385
PROD_NO: testProdNo1
checkDBContext:
## astPoolNo
--- !!com.abssqr.plat.common.facade.param.astPool.AstPoolPageQryParam
astPoolName: 测试资产池
pageNum: 1
pageSize: 21
## checkGet
---
'{"total":1,"limit":21,"currPageNo":1,"datas":[{"astPoolName":"测试资产池","astType":"BL","prodNo":"testProdNo1"}]}'
\ No newline at end of file
--- !!com.abssqr.test.icase.Case
id: pack_add_case0001
desc: 资产包新增测试
context:
clearDBContext:
- abs_ast_pack:
PACK_NO: packAdd01
- abs_ast_pack:
PACK_NAME: 资产包01
- abs_ast_screen_rule:
REL_NO: packAdd01
REL_TYPE: PACK
- ABS_COMMON_TASK:
BIZ_NO: packAdd01
initDBContext:
checkDBContext:
- ABS_COMMON_TASK:
ENV:
MEMO:
BIZ_NO[C]: packAdd01
CONTEXT: astPool01
LAST_HOST:
TASK_TYPE: PACK_MATCH
TASK_STATUS: init
EXEC_TIMES: 0
LAST_EXEC_TIME:
NEXT_EXEC_TIME:
#- ABS_AST_SCREEN_RULE:
# REL_NO[C]: packAdd01
# REL_TYPE: PACK
# RULE_TYPE: QCDK_RISK_TYPE
# LEFT_CONDITION:
# LEFT_VALUE:
# RIGHT_CONDITION: eq
# RIGHT_VALUE: 1,2,3
- ABS_AST_PACK:
PACK_NO[C]: packAdd01
PACK_NAME: 资产包01
AVAL_AMT: 1000000000
AST_POOL_NO: astPool01
PLAN_NO:
STATUS: init
PACK_DATE:
PACK_SUBMIT_DATE:
PACK_TYPE: normal
AST_TYPE: QCDK
###
--- !!com.abssqr.plat.common.facade.param.ast.AstPackOprParam
packNo: packAdd01
packName: 资产包01
avalAmt: 10000000
astPoolNo: astPool01
astType: QCDK
screenRuleList:
- ruleType: QCDK_RISK_TYPE
leftValue:
rightValue: '1,2,3'
rightCondition: 'eq'
- ruleType: QCDK_DISB_DATE
leftValue:
rightValue: '1,2,3'
rightCondition: 'in'
\ No newline at end of file
package com.abssqr.plat.web.controller.ast;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import javax.servlet.http.HttpServletResponse;
import com.abssqr.plat.common.facade.enums.LoanFieldEnum;
import com.abssqr.plat.common.facade.param.ast.AstDownLoadParam;
import com.abssqr.plat.common.facade.service.ast.AstPoolService;
import com.abssqr.plat.common.facade.param.ast.AstPageQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.AstLoanVO;
import com.abssqr.plat.common.facade.service.ast.AstService;
import com.general.enhanced.controller.annotation.RestJsonController;
import com.general.system.common.model.BaseResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@RestJsonController
public class AstController {
......@@ -29,5 +31,36 @@ public class AstController {
astService.downLoadAstFile(astDownLoadParam,response);
}
/**
* 查询资产列表
*
* @param astPageQryParam
* @return
*/
@RequestMapping("ast/poolAstList.json")
public BasePage<AstLoanVO> poolAstList(@RequestBody AstPageQryParam astPageQryParam) {
return astService.poolAstList(astPageQryParam);
}
/**
* 查询资产列表
*
* @param astPageQryParam
* @return
*/
@RequestMapping("ast/packAstList.json")
public BasePage<AstLoanVO> packAstList(@RequestBody AstPageQryParam astPageQryParam) {
return astService.packAstList(astPageQryParam);
}
/**
* 查询资产列表
*
* @param astPageQryParam
* @return
*/
@RequestMapping("ast/packAddAstList.json")
public BasePage<AstLoanVO> packAddAstList(@RequestBody AstPageQryParam astPageQryParam) {
return astService.packAddAstList(astPageQryParam);
}
}
......@@ -4,7 +4,7 @@ import com.abssqr.plat.common.facade.param.ast.AstPageQryParam;
import com.abssqr.plat.common.facade.param.astPool.AstPoolOprParam;
import com.abssqr.plat.common.facade.param.astPool.AstPoolPageQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.AstPoolLoanVO;
import com.abssqr.plat.common.facade.result.ast.AstLoanVO;
import com.abssqr.plat.common.facade.result.astPool.AstPoolVO;
import com.abssqr.plat.common.facade.service.ast.AstPoolService;
import com.general.enhanced.controller.annotation.RestJsonController;
......@@ -48,15 +48,4 @@ public class AstPoolController {
}
/**
* 查询资产列表
* @param astPageQryParam
* @return
*/
@RequestMapping("astPool/astList.json")
public BasePage<AstPoolLoanVO> astList(@RequestBody AstPageQryParam astPageQryParam){
return astPoolService.astList(astPageQryParam);
}
}
......@@ -8,6 +8,8 @@ package com.abssqr.plat.web.controller.pack;
import com.abssqr.plat.common.facade.param.ast.AstPackOprParam;
import com.abssqr.plat.common.facade.param.ast.AstPackQryParam;
import com.abssqr.plat.common.facade.param.ast.AstPackSealOprParam;
import com.abssqr.plat.common.facade.param.ast.AstPackSplitPackOprParam;
import com.abssqr.plat.common.facade.param.ast.AstPackUnPackOprParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.pack.AstPackListVO;
import com.abssqr.plat.common.facade.service.ast.AstPackService;
......@@ -47,7 +49,7 @@ public class PackController {
* @param astPackQryParam
* @return
*/
@RequestMapping(value = "astPack/get.json", method = RequestMethod.GET)
@RequestMapping(value = "/astPack/get.json", method = RequestMethod.GET)
public BaseResult<String> get(@RequestBody AstPackQryParam astPackQryParam) {
return BaseResult.success(astPackService.get(astPackQryParam));
}
......@@ -57,12 +59,34 @@ public class PackController {
* @param astPackSealOprParam
* @return
*/
@RequestMapping(value = "astPack/sealPack.json", method = RequestMethod.GET)
@RequestMapping(value = "/astPack/sealPack.json", method = RequestMethod.GET)
public BaseResult<String> sealPack(@RequestBody AstPackSealOprParam astPackSealOprParam) {
return BaseResult.success(astPackService.sealPack(astPackSealOprParam));
}
/**
* 解包
*
* @param astPackUnPackOprParam
* @return
*/
@RequestMapping(value = "/astPack/unPack.json", method = RequestMethod.GET)
public BaseResult<String> unPack(@RequestBody AstPackUnPackOprParam astPackUnPackOprParam) {
return BaseResult.success(astPackService.unPack(astPackUnPackOprParam));
}
/**
* 解包
*
* @param astPackSplitPackOprParam
* @return
*/
@RequestMapping(value = "/astPack/splitPack.json", method = RequestMethod.GET)
public BaseResult<String> splitPack(@RequestBody AstPackSplitPackOprParam astPackSplitPackOprParam) {
return BaseResult.success(astPackService.splitPack(astPackSplitPackOprParam));
}
/**
* 编辑
* @param astPackQryParam
* @return
......
drop table ABS_AST_PACK;
drop table ABS_AST_PACK;
......@@ -18,11 +18,9 @@ CREATE TABLE ABS_AST_PACK (
)
;
CREATE UNIQUE INDEX UK_ABS_PACK_PACK_NO
ON ABS_AST_PACK (PACK_NO);
CREATE UNIQUE INDEX UK_ABS_PACK_PACK_NO ON ABS_AST_PACK (PACK_NO);
CREATE INDEX IDX_ABS_PACK_PLAN_NO
ON ABS_AST_PACK (PLAN_NO);
CREATE INDEX IDX_ABS_PACK_PLAN_NO ON ABS_AST_PACK (PLAN_NO);
COMMENT ON COLUMN ABS_AST_PACK.PACK_NO IS '资产包编号';
......
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