Commit c2ddab03 by 王德峰

筛选SQL 预演完成,待合同字段确认后补充

parent 3056ac0e
......@@ -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;
......@@ -37,8 +40,9 @@ public class AstPackServiceImpl extends ServiceSupport implements AstPackService
@Autowired
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();
});
}
}
......@@ -64,7 +64,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);
});
......
......@@ -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>
......@@ -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,60 @@
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"/>
</extraparams>
update abs_loan_pack_rel
set PACK_NO = #{packNo,jdbcType=VARCHAR}
where
PACK_NO = #{astPoolNo,jdbcType=VARCHAR}
AND ast_no in(
<if test="astType == @com.abssqr.plat.common.facade.enums.AstTypeEnum@QCDK">
<include refid="QCDK_SQL"/>
</if>
)
</operation>
<sql id="QCDK_SQL">
SELECT l.ast_no
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">
<if 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>
</if>
<if 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>
</if>
<if 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>
</if>
</foreach>
</sql>
</table>
......@@ -92,6 +92,7 @@ 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 ast_no 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";
......
......@@ -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);
}
}
......@@ -6,6 +6,8 @@ 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.abssqr.plat.common.dal.mysql.auto.mapper.LoanPackRelDOMapper;
/**
......@@ -38,6 +40,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 +89,17 @@ public class LoanPackRelDAO{
public LoanPackRelSummary sumAstByPack(String packNo){
return loanPackRelDOMapper.sumAstByPack(packNo);
}
/**
* desc:筛选.<br/>
* @param packNo packNo
* @param astPoolNo astPoolNo
* @param astType astType
* @param screenRuleList screenRuleList
* @return int
*/
public int updateForScreen(String packNo,String astPoolNo,AstTypeEnum astType,List<AstScreenRule> screenRuleList){
if(screenRuleList!=null && screenRuleList.size()>201){throw new RuntimeException("screenRuleList 超出201长度限制");}
return loanPackRelDOMapper.updateForScreen(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);
}
......@@ -3,6 +3,8 @@ 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 org.apache.ibatis.annotations.Param;
/**
......@@ -25,6 +27,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 +61,13 @@ public interface LoanPackRelDOMapper{
* @return LoanPackRelSummary
*/
LoanPackRelSummary sumAstByPack(@Param("packNo")String packNo);
/**
* desc:筛选.<br/>
* @param packNo packNo
* @param astPoolNo astPoolNo
* @param astType astType
* @param screenRuleList screenRuleList
* @return int
*/
int updateForScreen(@Param("packNo")String packNo,@Param("astPoolNo")String astPoolNo,@Param("astType")AstTypeEnum astType,@Param("screenRuleList")List<AstScreenRule> screenRuleList);
}
......@@ -10,23 +10,23 @@ import java.util.List;
public class PlanListPage extends BasePage<PlanListResultMap>{
/**
* passed 是否已通过过.
* passed .
*/
private Boolean passed;
private String passed;
/**
* userCode .
*/
private String userCode;
/**
* planType 计划类型.
* planType .
*/
private String planType;
/**
* planNo 计划编号.
* planNo 产品编号.
*/
private String planNo;
/**
* planName 计划名.
* planName 产品简称.
*/
private String planName;
/**
......@@ -39,18 +39,18 @@ public class PlanListPage extends BasePage<PlanListResultMap>{
private List<String> list;
/**
* Set passed 是否已通过过.
* Set passed .
*/
public void setPassed(Boolean passed){
public void setPassed(String passed){
this.passed = passed;
}
/**
* Get passed 是否已通过过.
* Get passed .
*
* @return the string
*/
public Boolean getPassed(){
public String getPassed(){
return passed;
}
......@@ -71,14 +71,14 @@ public class PlanListPage extends BasePage<PlanListResultMap>{
}
/**
* Set planType 计划类型.
* Set planType .
*/
public void setPlanType(String planType){
this.planType = planType;
}
/**
* Get planType 计划类型.
* Get planType .
*
* @return the string
*/
......@@ -87,14 +87,14 @@ public class PlanListPage extends BasePage<PlanListResultMap>{
}
/**
* Set planNo 计划编号.
* Set planNo 产品编号.
*/
public void setPlanNo(String planNo){
this.planNo = planNo;
}
/**
* Get planNo 计划编号.
* Get planNo 产品编号.
*
* @return the string
*/
......@@ -103,14 +103,14 @@ public class PlanListPage extends BasePage<PlanListResultMap>{
}
/**
* Set planName 计划名.
* Set planName 产品简称.
*/
public void setPlanName(String planName){
this.planName = planName;
}
/**
* Get planName 计划名.
* Get planName 产品简称.
*
* @return the string
*/
......
......@@ -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>
......@@ -28,6 +28,39 @@
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
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">
<if 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>
</if>
<if 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>
</if>
<if 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>
</if>
</foreach>
</sql>
<!--插入表:abs_loan_pack_rel mydalgen自动生成,请勿修改-->
......@@ -91,6 +124,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 +176,23 @@
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(
<if test="astType == @com.abssqr.plat.common.facade.enums.AstTypeEnum@QCDK">
<include refid="QCDK_SQL"/>
</if>
)
</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;
}
}
......@@ -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);
}
......@@ -44,6 +44,7 @@ public class AstPackConvert {
result.setPackDate(param.getPackDate());
//packSubmitDate 封包提交日
result.setPackSubmitDate(param.getPackSubmitDate());
result.setAstType(AstTypeEnum.getByCode(param.getAstType()));
return result;
}
......
......@@ -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;
/**
*
* @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
* @return
*/
int screenAst(String packNo, String astPoolNo, AstTypeEnum astType, List<AstScreenRule> screenRuleList);
}
......@@ -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 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) {
return loanPackRelDAO.updateForScreen(packNo,astPoolNo,astType,screenRuleList);
}
}
......@@ -34,5 +34,12 @@ public interface AstPoolRepository {
boolean checkAstPool(AstPoolEntity astPoolEntity);
/**
* 锁
* @param astPoolNo
* @return
*/
AstPoolEntity lockAstPool(String astPoolNo);
AstPoolLoanPage astPage(AstPoolLoanPage astPoolLoanPage);
}
\ No newline at end of file
......@@ -64,5 +64,16 @@ public class AstPoolRepositoryImpl implements AstPoolRepository {
return loanListByAstPoolNo;
}
/**
* 锁
*
* @param astPoolNo
* @return
*/
@Override
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;
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());
}
}
......@@ -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
......@@ -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