Commit c2ddab03 by 王德峰

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

parent 3056ac0e
...@@ -12,6 +12,8 @@ import com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum; ...@@ -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.AstPackOprParam;
import com.abssqr.plat.common.facade.param.ast.AstPackQryParam; 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.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.BasePage;
import com.abssqr.plat.common.facade.result.pack.AstPackListVO; import com.abssqr.plat.common.facade.result.pack.AstPackListVO;
import com.abssqr.plat.common.facade.result.pack.AstPackVO; import com.abssqr.plat.common.facade.result.pack.AstPackVO;
...@@ -21,6 +23,7 @@ import com.abssqr.plat.common.model.convertor.vo.AstPackListVOConvert; ...@@ -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.convertor.web.AstPackWebConvert;
import com.abssqr.plat.common.model.domain.ast.AstPack; 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.AstPackRepo;
import com.abssqr.plat.common.model.repo.ast.LoanPackRelRepo;
import com.abssqr.plat.core.service.ast.AstPackManager; import com.abssqr.plat.core.service.ast.AstPackManager;
import com.general.system.common.util.VarChecker; import com.general.system.common.util.VarChecker;
...@@ -35,10 +38,11 @@ import org.springframework.stereotype.Service; ...@@ -35,10 +38,11 @@ import org.springframework.stereotype.Service;
@Service @Service
public class AstPackServiceImpl extends ServiceSupport implements AstPackService { public class AstPackServiceImpl extends ServiceSupport implements AstPackService {
@Autowired @Autowired
AstPackManager astPackManager; AstPackManager astPackManager;
@Autowired @Autowired
AstPackRepo astPackRepository; AstPackRepo astPackRepo;
@Autowired
LoanPackRelRepo loanPackRelRepo;
@Override @Override
public String edit(@Valid AstPackOprParam param) { public String edit(@Valid AstPackOprParam param) {
VarChecker.checkNotNull(param); VarChecker.checkNotNull(param);
...@@ -60,7 +64,7 @@ public class AstPackServiceImpl extends ServiceSupport implements AstPackService ...@@ -60,7 +64,7 @@ public class AstPackServiceImpl extends ServiceSupport implements AstPackService
@Override @Override
public BasePage<AstPackListVO> getList(@Valid AstPackQryParam param) { public BasePage<AstPackListVO> getList(@Valid AstPackQryParam param) {
return this.doQry(param, () -> { return this.doQry(param, () -> {
AstPackPagePage page = astPackRepository.getList(param); AstPackPagePage page = astPackRepo.getList(param);
BasePage<AstPackListVO> result = new BasePage<AstPackListVO>(); BasePage<AstPackListVO> result = new BasePage<AstPackListVO>();
result.setCurrPageNo(page.getCurrPageNo()); result.setCurrPageNo(page.getCurrPageNo());
result.setTotal(page.getTotal()); result.setTotal(page.getTotal());
...@@ -76,7 +80,7 @@ public class AstPackServiceImpl extends ServiceSupport implements AstPackService ...@@ -76,7 +80,7 @@ public class AstPackServiceImpl extends ServiceSupport implements AstPackService
AstPack astPack = astPackManager.get(astPackQryParam.getPackNo()); AstPack astPack = astPackManager.get(astPackQryParam.getPackNo());
AstPackVO result = AstPackWebConvert.model2VO(astPack); AstPackVO result = AstPackWebConvert.model2VO(astPack);
if(astPack!=null) { if(astPack!=null) {
LoanPackRelSummary summary = astPackRepository.sumAstPack(astPack.getPackNo()); LoanPackRelSummary summary = loanPackRelRepo.sumAstPack(astPack.getPackNo());
result.setAstCnt(summary.getAstCnt()); result.setAstCnt(summary.getAstCnt());
result.setAstPrinBal(summary.getAstPrinBal()); result.setAstPrinBal(summary.getAstPrinBal());
} }
...@@ -91,4 +95,26 @@ public class AstPackServiceImpl extends ServiceSupport implements AstPackService ...@@ -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 ...@@ -64,7 +64,7 @@ public class AstPoolServiceImpl extends ServiceSupport implements AstPoolService
VarChecker.checkArgument(astPoolRepository.checkAstPool(astPoolEntity),"资产池名称/资产池编号重复"); 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); return astPoolRepository.create(astPoolEntity);
}); });
......
...@@ -4,14 +4,30 @@ ...@@ -4,14 +4,30 @@
*/ */
package com.abssqr.plat.biz.shared.handler; 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 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 * @author bangis.wangdf
* @version com.abssqr.plat.biz.shared.handler: CommonTaskHandler.java, v 0.1 2020-03-04 13:56 bangis.wangdf Exp $ * @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 @@ ...@@ -149,6 +149,7 @@
UPDATE abs_ast_pack UPDATE abs_ast_pack
SET SET
PACK_DATE = #{packDate,jdbcType=DATE} PACK_DATE = #{packDate,jdbcType=DATE}
,STATUS = 'pack'
,GMT_MODIFIED = sysdate ,GMT_MODIFIED = sysdate
,PACK_SUBMIT_DATE = #{packSubmitDate,jdbcType=DATE} ,PACK_SUBMIT_DATE = #{packSubmitDate,jdbcType=DATE}
WHERE WHERE
...@@ -157,6 +158,47 @@ ...@@ -157,6 +158,47 @@
]]> ]]>
</operation> </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"> <operation name="deleteByAbsPackPackNo" remark="根据唯一约束AbsPackPackNo删除数据:abs_ast_pack">
<![CDATA[ <![CDATA[
DELETE FROM abs_ast_pack DELETE FROM abs_ast_pack
...@@ -174,6 +216,16 @@ ...@@ -174,6 +216,16 @@
]]> ]]>
</operation> </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"> <operation name="queryByAbsPackPlanNo" multiplicity="many" remark="根据普通索引AbsPackPlanNo获取数据:abs_ast_pack">
SELECT * SELECT *
......
...@@ -124,4 +124,14 @@ ...@@ -124,4 +124,14 @@
]]> ]]>
</operation> </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> </table>
...@@ -90,6 +90,18 @@ ...@@ -90,6 +90,18 @@
]]> ]]>
</operation> </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"> <operation name="deleteByAbsLoanPackRelPk" remark="根据主键删除数据:abs_loan_pack_rel">
<![CDATA[ <![CDATA[
DELETE FROM abs_loan_pack_rel DELETE FROM abs_loan_pack_rel
...@@ -132,11 +144,60 @@ ...@@ -132,11 +144,60 @@
WHERE WHERE
<![CDATA[ <![CDATA[
l.ast_no = rel.ast_no l.ast_no = rel.ast_no
AND l.STATUS in ('nor','ovd')
AND rel.status = 'in' AND rel.status = 'in'
AND rel.PACK_NO = #{packNo,jdbcType=VARCHAR} AND rel.PACK_NO = #{packNo,jdbcType=VARCHAR}
AND l.STATUS in ('nor','ovd')
]]> ]]>
</operation> </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> </table>
...@@ -92,6 +92,7 @@ public class AbssqrCoreConstants{ ...@@ -92,6 +92,7 @@ public class AbssqrCoreConstants{
public static final String tableName="ABS_LOAN_PACK_REL"; 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_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 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 class ABS_PLAN_REPORT_ENTITY_STAT{
public static final String tableName="ABS_PLAN_REPORT_ENTITY_STAT"; public static final String tableName="ABS_PLAN_REPORT_ENTITY_STAT";
......
...@@ -78,6 +78,33 @@ public class AstPackDAO{ ...@@ -78,6 +78,33 @@ public class AstPackDAO{
return astPackDOMapper.updateSealPack(packDate, packSubmitDate, packNo); 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/> * desc:根据唯一约束AbsPackPackNo删除数据:abs_ast_pack.<br/>
* @param packNo packNo * @param packNo packNo
* @return int * @return int
...@@ -96,6 +123,15 @@ public class AstPackDAO{ ...@@ -96,6 +123,15 @@ public class AstPackDAO{
return astPackDOMapper.getByAbsPackPackNo(packNo); 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/> * desc:根据普通索引AbsPackPlanNo获取数据:abs_ast_pack.<br/>
* @param planNo planNo * @param planNo planNo
* @return List<AstPackDO> * @return List<AstPackDO>
......
...@@ -91,4 +91,13 @@ public class AstPoolDAO{ ...@@ -91,4 +91,13 @@ public class AstPoolDAO{
public AstPoolDO getById(Long id){ public AstPoolDO getById(Long id){
return astPoolDOMapper.getById(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; ...@@ -6,6 +6,8 @@ import java.util.ArrayList;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.LoanPackRelDO; import com.abssqr.plat.common.dal.mysql.auto.dataobject.LoanPackRelDO;
import java.util.List; import java.util.List;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.LoanPackRelSummary; 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; import com.abssqr.plat.common.dal.mysql.auto.mapper.LoanPackRelDOMapper;
/** /**
...@@ -38,6 +40,16 @@ public class LoanPackRelDAO{ ...@@ -38,6 +40,16 @@ public class LoanPackRelDAO{
return list.size(); 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/> * desc:根据主键删除数据:abs_loan_pack_rel.<br/>
* @param astNo astNo * @param astNo astNo
* @param packNo packNo * @param packNo packNo
...@@ -77,4 +89,17 @@ public class LoanPackRelDAO{ ...@@ -77,4 +89,17 @@ public class LoanPackRelDAO{
public LoanPackRelSummary sumAstByPack(String packNo){ public LoanPackRelSummary sumAstByPack(String packNo){
return loanPackRelDOMapper.sumAstByPack(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{ ...@@ -54,6 +54,24 @@ public interface AstPackDOMapper{
*/ */
int updateSealPack(@Param("packDate")Date packDate,@Param("packSubmitDate")Date packSubmitDate,@Param("packNo")String packNo); 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/> * desc:根据唯一约束AbsPackPackNo删除数据:abs_ast_pack.<br/>
* @param packNo packNo * @param packNo packNo
* @return int * @return int
...@@ -66,6 +84,12 @@ public interface AstPackDOMapper{ ...@@ -66,6 +84,12 @@ public interface AstPackDOMapper{
*/ */
AstPackDO getByAbsPackPackNo(@Param("packNo")String packNo); 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/> * desc:根据普通索引AbsPackPlanNo获取数据:abs_ast_pack.<br/>
* @param planNo planNo * @param planNo planNo
* @return List<AstPackDO> * @return List<AstPackDO>
......
...@@ -62,4 +62,10 @@ public interface AstPoolDOMapper{ ...@@ -62,4 +62,10 @@ public interface AstPoolDOMapper{
* @return AstPoolDO * @return AstPoolDO
*/ */
AstPoolDO getById(Long id); 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; ...@@ -3,6 +3,8 @@ package com.abssqr.plat.common.dal.mysql.auto.mapper;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.LoanPackRelDO; import com.abssqr.plat.common.dal.mysql.auto.dataobject.LoanPackRelDO;
import java.util.List; import java.util.List;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.LoanPackRelSummary; 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; import org.apache.ibatis.annotations.Param;
/** /**
...@@ -25,6 +27,13 @@ public interface LoanPackRelDOMapper{ ...@@ -25,6 +27,13 @@ public interface LoanPackRelDOMapper{
*/ */
int insertBatch(List<LoanPackRelDO> list); 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/> * desc:根据主键删除数据:abs_loan_pack_rel.<br/>
* @param astNo astNo * @param astNo astNo
* @param packNo packNo * @param packNo packNo
...@@ -52,4 +61,13 @@ public interface LoanPackRelDOMapper{ ...@@ -52,4 +61,13 @@ public interface LoanPackRelDOMapper{
* @return LoanPackRelSummary * @return LoanPackRelSummary
*/ */
LoanPackRelSummary sumAstByPack(@Param("packNo")String packNo); 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; ...@@ -10,23 +10,23 @@ import java.util.List;
public class PlanListPage extends BasePage<PlanListResultMap>{ public class PlanListPage extends BasePage<PlanListResultMap>{
/** /**
* passed 是否已通过过. * passed .
*/ */
private Boolean passed; private String passed;
/** /**
* userCode . * userCode .
*/ */
private String userCode; private String userCode;
/** /**
* planType 计划类型. * planType .
*/ */
private String planType; private String planType;
/** /**
* planNo 计划编号. * planNo 产品编号.
*/ */
private String planNo; private String planNo;
/** /**
* planName 计划名. * planName 产品简称.
*/ */
private String planName; private String planName;
/** /**
...@@ -39,18 +39,18 @@ public class PlanListPage extends BasePage<PlanListResultMap>{ ...@@ -39,18 +39,18 @@ public class PlanListPage extends BasePage<PlanListResultMap>{
private List<String> list; private List<String> list;
/** /**
* Set passed 是否已通过过. * Set passed .
*/ */
public void setPassed(Boolean passed){ public void setPassed(String passed){
this.passed = passed; this.passed = passed;
} }
/** /**
* Get passed 是否已通过过. * Get passed .
* *
* @return the string * @return the string
*/ */
public Boolean getPassed(){ public String getPassed(){
return passed; return passed;
} }
...@@ -71,14 +71,14 @@ public class PlanListPage extends BasePage<PlanListResultMap>{ ...@@ -71,14 +71,14 @@ public class PlanListPage extends BasePage<PlanListResultMap>{
} }
/** /**
* Set planType 计划类型. * Set planType .
*/ */
public void setPlanType(String planType){ public void setPlanType(String planType){
this.planType = planType; this.planType = planType;
} }
/** /**
* Get planType 计划类型. * Get planType .
* *
* @return the string * @return the string
*/ */
...@@ -87,14 +87,14 @@ public class PlanListPage extends BasePage<PlanListResultMap>{ ...@@ -87,14 +87,14 @@ public class PlanListPage extends BasePage<PlanListResultMap>{
} }
/** /**
* Set planNo 计划编号. * Set planNo 产品编号.
*/ */
public void setPlanNo(String planNo){ public void setPlanNo(String planNo){
this.planNo = planNo; this.planNo = planNo;
} }
/** /**
* Get planNo 计划编号. * Get planNo 产品编号.
* *
* @return the string * @return the string
*/ */
...@@ -103,14 +103,14 @@ public class PlanListPage extends BasePage<PlanListResultMap>{ ...@@ -103,14 +103,14 @@ public class PlanListPage extends BasePage<PlanListResultMap>{
} }
/** /**
* Set planName 计划名. * Set planName 产品简称.
*/ */
public void setPlanName(String planName){ public void setPlanName(String planName){
this.planName = planName; this.planName = planName;
} }
/** /**
* Get planName 计划名. * Get planName 产品简称.
* *
* @return the string * @return the string
*/ */
......
...@@ -155,6 +155,7 @@ ...@@ -155,6 +155,7 @@
UPDATE /*MS-ABS-AST-PACK-UPDATESEALPACK*/ abs_ast_pack UPDATE /*MS-ABS-AST-PACK-UPDATESEALPACK*/ abs_ast_pack
SET SET
PACK_DATE = #{packDate,jdbcType=DATE} PACK_DATE = #{packDate,jdbcType=DATE}
,STATUS = 'pack'
,GMT_MODIFIED = sysdate ,GMT_MODIFIED = sysdate
,PACK_SUBMIT_DATE = #{packSubmitDate,jdbcType=DATE} ,PACK_SUBMIT_DATE = #{packSubmitDate,jdbcType=DATE}
WHERE WHERE
...@@ -163,6 +164,51 @@ ...@@ -163,6 +164,51 @@
]]> ]]>
</update> </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自动生成,请勿修改--> <!--根据唯一约束AbsPackPackNo删除数据:abs_ast_pack mydalgen自动生成,请勿修改-->
<delete id="deleteByAbsPackPackNo" > <delete id="deleteByAbsPackPackNo" >
<![CDATA[ <![CDATA[
...@@ -182,6 +228,17 @@ ...@@ -182,6 +228,17 @@
]]> ]]>
</select> </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自动生成,请勿修改--> <!--根据普通索引AbsPackPlanNo获取数据:abs_ast_pack mydalgen自动生成,请勿修改-->
<select id="queryByAbsPackPlanNo" resultMap="BaseResultMap" > <select id="queryByAbsPackPlanNo" resultMap="BaseResultMap" >
SELECT /*MS-ABS-AST-PACK-QUERYBYABSPACKPLANNO*/ <include refid="Base_Column_List" /> SELECT /*MS-ABS-AST-PACK-QUERYBYABSPACKPLANNO*/ <include refid="Base_Column_List" />
......
...@@ -142,4 +142,14 @@ ...@@ -142,4 +142,14 @@
ID = #{id,jdbcType=DECIMAL} ID = #{id,jdbcType=DECIMAL}
]]> ]]>
</select> </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> </mapper>
...@@ -28,6 +28,39 @@ ...@@ -28,6 +28,39 @@
BACK_COST,BACK_PRIN,AST_NO,BACK_NO,PACK_NO BACK_COST,BACK_PRIN,AST_NO,BACK_NO,PACK_NO
,STATUS,GMT_CREATE,GMT_MODIFIED,REPAY_FINAL_DATE,BACK_RATE ,STATUS,GMT_CREATE,GMT_MODIFIED,REPAY_FINAL_DATE,BACK_RATE
</sql> </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自动生成,请勿修改--> <!--插入表:abs_loan_pack_rel mydalgen自动生成,请勿修改-->
...@@ -91,6 +124,18 @@ ...@@ -91,6 +124,18 @@
;end; ;end;
</insert> </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自动生成,请勿修改--> <!--根据主键删除数据:abs_loan_pack_rel mydalgen自动生成,请勿修改-->
<delete id="deleteByAbsLoanPackRelPk" > <delete id="deleteByAbsLoanPackRelPk" >
<![CDATA[ <![CDATA[
...@@ -131,9 +176,23 @@ ...@@ -131,9 +176,23 @@
WHERE WHERE
<![CDATA[ <![CDATA[
l.ast_no = rel.ast_no l.ast_no = rel.ast_no
AND l.STATUS in ('nor','ovd')
AND rel.status = 'in' AND rel.status = 'in'
AND rel.PACK_NO = #{packNo,jdbcType=VARCHAR} AND rel.PACK_NO = #{packNo,jdbcType=VARCHAR}
AND l.STATUS in ('nor','ovd')
]]> ]]>
</select> </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> </mapper>
...@@ -5,13 +5,19 @@ ...@@ -5,13 +5,19 @@
package com.abssqr.plat.common.facade.model.rule; 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.AstScRuleLeftCondEnum;
import com.abssqr.plat.common.facade.enums.AstScRuleRightCondEnum; import com.abssqr.plat.common.facade.enums.AstScRuleRightCondEnum;
import com.abssqr.plat.common.facade.enums.AstScreenRelTypeEnum; import com.abssqr.plat.common.facade.enums.AstScreenRelTypeEnum;
import com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum; import com.abssqr.plat.common.facade.enums.AstScreenRuleTypeEnum;
import com.general.system.common.model.BaseEntity; 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.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
/** /**
* @author bangis.wangdf * @author bangis.wangdf
...@@ -112,4 +118,23 @@ public class AstScreenRule extends BaseEntity { ...@@ -112,4 +118,23 @@ public class AstScreenRule extends BaseEntity {
return ObjectUtils.allNotNull(this.ruleType) && (ObjectUtils.allNotNull(this.leftCondition, this.leftValue) return ObjectUtils.allNotNull(this.ruleType) && (ObjectUtils.allNotNull(this.leftCondition, this.leftValue)
|| ObjectUtils.allNotNull(this.rightCondition, this.rightValue)); || 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; ...@@ -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.AstPackOprParam;
import com.abssqr.plat.common.facade.param.ast.AstPackQryParam; 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.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.BasePage;
import com.abssqr.plat.common.facade.result.pack.AstPackListVO; import com.abssqr.plat.common.facade.result.pack.AstPackListVO;
import com.abssqr.plat.common.facade.result.pack.AstPackVO; import com.abssqr.plat.common.facade.result.pack.AstPackVO;
import com.abssqr.plat.common.facade.validation.Valid;
/** /**
* 资产包服务 * 资产包服务
...@@ -46,4 +49,18 @@ public interface AstPackService { ...@@ -46,4 +49,18 @@ public interface AstPackService {
*/ */
String sealPack(AstPackSealOprParam astPackSealOprParam); 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 { ...@@ -44,6 +44,7 @@ public class AstPackConvert {
result.setPackDate(param.getPackDate()); result.setPackDate(param.getPackDate());
//packSubmitDate 封包提交日 //packSubmitDate 封包提交日
result.setPackSubmitDate(param.getPackSubmitDate()); result.setPackSubmitDate(param.getPackSubmitDate());
result.setAstType(AstTypeEnum.getByCode(param.getAstType()));
return result; return result;
} }
......
...@@ -43,16 +43,35 @@ public interface AstPackRepo { ...@@ -43,16 +43,35 @@ public interface AstPackRepo {
AstPackPagePage getList(AstPackQryParam param); AstPackPagePage getList(AstPackQryParam param);
/** /**
* 汇总资产包情况
* @param packNo
*/
LoanPackRelSummary sumAstPack(String packNo);
/**
* 封包 * 封包
* @param packNo 包编号 * @param packNo 包编号
* @param packSubmitDate 封包提交日 * @param packSubmitDate 封包提交日
* @param sealPackDate 封包日 * @param sealPackDate 封包日
*/ */
void sealPack(String packNo, Date packSubmitDate, Date 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; ...@@ -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.AstPackDAO;
import com.abssqr.plat.common.dal.mysql.auto.dao.LoanPackRelDAO; 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.paging.AstPackPagePage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.LoanPackRelSummary; import com.abssqr.plat.common.dal.mysql.auto.resultmap.LoanPackRelSummary;
import com.abssqr.plat.common.facade.enums.AstPackStatusEnum; import com.abssqr.plat.common.facade.enums.AstPackStatusEnum;
...@@ -32,8 +33,6 @@ import org.springframework.stereotype.Component; ...@@ -32,8 +33,6 @@ import org.springframework.stereotype.Component;
public class AstPackRepoImpl implements AstPackRepo { public class AstPackRepoImpl implements AstPackRepo {
@Autowired @Autowired
private AstPackDAO astPackDAO; private AstPackDAO astPackDAO;
@Autowired
private LoanPackRelDAO loanPackRelDAO;
@Override @Override
public AstPack getByAbsPackPackNo(String packNo) { public AstPack getByAbsPackPackNo(String packNo) {
...@@ -69,10 +68,6 @@ public class AstPackRepoImpl implements AstPackRepo { ...@@ -69,10 +68,6 @@ public class AstPackRepoImpl implements AstPackRepo {
return astPackDAO.getList(page); return astPackDAO.getList(page);
} }
@Override
public LoanPackRelSummary sumAstPack(String packNo) {
return loanPackRelDAO.sumAstByPack(packNo);
}
/** /**
* 封包 * 封包
...@@ -86,4 +81,47 @@ public class AstPackRepoImpl implements AstPackRepo { ...@@ -86,4 +81,47 @@ public class AstPackRepoImpl implements AstPackRepo {
int i = astPackDAO.updateSealPack(sealPackDate, packSubmitDate, packNo); int i = astPackDAO.updateSealPack(sealPackDate, packSubmitDate, packNo);
VarChecker.checkEquals(i,1,"封包失败"); 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 { ...@@ -34,5 +34,12 @@ public interface AstPoolRepository {
boolean checkAstPool(AstPoolEntity astPoolEntity); boolean checkAstPool(AstPoolEntity astPoolEntity);
/**
* 锁
* @param astPoolNo
* @return
*/
AstPoolEntity lockAstPool(String astPoolNo);
AstPoolLoanPage astPage(AstPoolLoanPage astPoolLoanPage); AstPoolLoanPage astPage(AstPoolLoanPage astPoolLoanPage);
} }
\ No newline at end of file
...@@ -64,5 +64,16 @@ public class AstPoolRepositoryImpl implements AstPoolRepository { ...@@ -64,5 +64,16 @@ public class AstPoolRepositoryImpl implements AstPoolRepository {
return loanListByAstPoolNo; return loanListByAstPoolNo;
} }
/**
* 锁
*
* @param astPoolNo
* @return
*/
@Override
public AstPoolEntity lockAstPool(String astPoolNo) {
AstPoolDO astPoolDO = astPoolDAO.getForLock(astPoolNo);
return AstPoolConvert.convert2Domain(astPoolDO);
}
} }
...@@ -71,5 +71,9 @@ ...@@ -71,5 +71,9 @@
<groupId>org.freemarker</groupId> <groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId> <artifactId>freemarker</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.abssqr.bbplat</groupId>
<artifactId>common-facade</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </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; ...@@ -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.enums.CommonTaskTypeEnum;
import com.abssqr.plat.common.facade.model.rule.AstScreenRule; 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.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.domain.task.CommonTask;
import com.abssqr.plat.common.model.enums.OrgCodeEnum; 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.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.rule.AstScreenRuleRepo;
import com.abssqr.plat.common.model.repo.task.CommonTaskRepository; import com.abssqr.plat.common.model.repo.task.CommonTaskRepository;
import com.abssqr.plat.common.util.base.Day; import com.abssqr.plat.common.util.base.Day;
...@@ -37,13 +39,16 @@ import org.springframework.stereotype.Component; ...@@ -37,13 +39,16 @@ import org.springframework.stereotype.Component;
@Component @Component
public class AstPackManager { public class AstPackManager {
@Autowired @Autowired
AstPackRepo astPackRepository; AstPackRepo astPackRepo;
@Autowired
LoanPackRelRepo loanPackRelRepo;
@Autowired @Autowired
AstScreenRuleRepo astScreenRuleRepo; AstScreenRuleRepo astScreenRuleRepo;
@Autowired @Autowired
CommonTaskRepository commonTaskRepository; CommonTaskRepository commonTaskRepository;
@Autowired @Autowired
OrgAcctDayComponent orgAcctDayComponent; OrgAcctDayComponent orgAcctDayComponent;
public static final List<AstPackStatusEnum> canPack = Lists.newArrayList(AstPackStatusEnum.SCEEN_FIS,AstPackStatusEnum.UNPACK); public static final List<AstPackStatusEnum> canPack = Lists.newArrayList(AstPackStatusEnum.SCEEN_FIS,AstPackStatusEnum.UNPACK);
/** /**
* 新增资产包 * 新增资产包
...@@ -53,11 +58,11 @@ public class AstPackManager { ...@@ -53,11 +58,11 @@ public class AstPackManager {
*/ */
public String add(AstPack astPack) { public String add(AstPack astPack) {
// 1. 校验重复 // 1. 校验重复
AstPack checkAstPack = astPackRepository.getByAbsPackPackNo(astPack.getPackNo()); AstPack checkAstPack = astPackRepo.getByAbsPackPackNo(astPack.getPackNo());
VarChecker.checkArgument(checkAstPack == null, "资产包已存在{0}", 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, "资产包名重复"); VarChecker.checkEquals(cnt, 0L, "资产包名重复");
astPackRepository.insert(astPack); astPackRepo.insert(astPack);
// 3. 保存筛选规则 // 3. 保存筛选规则
astScreenRuleRepo.insertBatch(astPack.getScreenRuleList()); astScreenRuleRepo.insertBatch(astPack.getScreenRuleList());
...@@ -73,7 +78,7 @@ public class AstPackManager { ...@@ -73,7 +78,7 @@ public class AstPackManager {
* @param astPoolNo * @param astPoolNo
* @param astTypeEnum * @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 astPack = new AstPack();
astPack.setAstPoolNo(astPoolNo); astPack.setAstPoolNo(astPoolNo);
astPack.setPackNo(astPoolNo); astPack.setPackNo(astPoolNo);
...@@ -81,7 +86,7 @@ public class AstPackManager { ...@@ -81,7 +86,7 @@ public class AstPackManager {
astPack.setStatus(AstPackStatusEnum.INIT); astPack.setStatus(AstPackStatusEnum.INIT);
astPack.setAstType(astTypeEnum); astPack.setAstType(astTypeEnum);
createDefaultScreenRule(prodNo,astPack.getPackNo()); createDefaultScreenRule(prodNo,astPack.getPackNo());
astPackRepository.insert(astPack); astPackRepo.insert(astPack);
} }
/** /**
...@@ -91,7 +96,7 @@ public class AstPackManager { ...@@ -91,7 +96,7 @@ public class AstPackManager {
*/ */
public AstPack get(String packNo) { public AstPack get(String packNo) {
VarChecker.checkNotEmpty(packNo,"包编号必填"); VarChecker.checkNotEmpty(packNo,"包编号必填");
AstPack astPack = astPackRepository.getByAbsPackPackNo(packNo); AstPack astPack = astPackRepo.getByAbsPackPackNo(packNo);
VarChecker.checkNotNull(astPack,"找不到对应的资产包{0}",packNo); VarChecker.checkNotNull(astPack,"找不到对应的资产包{0}",packNo);
List<AstScreenRule> ruleList = astScreenRuleRepo.getScreenRuleList(packNo); List<AstScreenRule> ruleList = astScreenRuleRepo.getScreenRuleList(packNo);
astPack.setScreenRuleList(ruleList); astPack.setScreenRuleList(ruleList);
...@@ -120,10 +125,43 @@ public class AstPackManager { ...@@ -120,10 +125,43 @@ public class AstPackManager {
* @param sealPackDate * @param sealPackDate
*/ */
public void sealPack(String packNo, Date sealPackDate) { public void sealPack(String packNo, Date sealPackDate) {
AstPack astPack = astPackRepository.getByAbsPackPackNo(packNo); AstPack astPack = astPackRepo.getByAbsPackPackNo(packNo);
VarChecker.checkNotNull(astPack,"{0}包不存在",packNo); VarChecker.checkNotNull(astPack,"{0}包不存在",packNo);
VarChecker.checkArgument(canPack.contains(astPack.getStatus()),"资产包状态不满足"); VarChecker.checkArgument(canPack.contains(astPack.getStatus()),"资产包状态不满足");
Day astAcctDay = orgAcctDayComponent.getAstAcctDay(OrgCodeEnum.ABS); 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; ...@@ -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.param.ast.AstPackQryParam;
import com.abssqr.plat.common.facade.result.pack.AstPackVO; import com.abssqr.plat.common.facade.result.pack.AstPackVO;
import com.abssqr.plat.common.facade.service.ast.AstPackService; 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.plat.test.BaseAutoTests;
import com.abssqr.test.annotation.XTest; import com.abssqr.test.annotation.XTest;
import com.abssqr.test.icase.ICase; import com.abssqr.test.icase.ICase;
...@@ -25,7 +28,11 @@ import org.testng.annotations.Test; ...@@ -25,7 +28,11 @@ import org.testng.annotations.Test;
public class PackAddUnitTest extends BaseAutoTests { public class PackAddUnitTest extends BaseAutoTests {
@Autowired @Autowired
private AstPackService astPackService; AstPackService astPackService;
@Autowired
LoanPackRelRepo loanPackRelRepo;
@Autowired
AstPackManager astPackManager;
@XTest(relatePath = "unittest/pack/add") @XTest(relatePath = "unittest/pack/add")
@Test(dataProvider = "YamlDataProvider", description = "资产包新增") @Test(dataProvider = "YamlDataProvider", description = "资产包新增")
...@@ -40,6 +47,13 @@ public class PackAddUnitTest extends BaseAutoTests { ...@@ -40,6 +47,13 @@ public class PackAddUnitTest extends BaseAutoTests {
VarChecker.checkNotNull(astPackVO); VarChecker.checkNotNull(astPackVO);
System.out.println(JSON.toJSONString(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 { } finally {
// 校验数据 // 校验数据
super.checkDB(iCase); 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; ...@@ -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.AstPackOprParam;
import com.abssqr.plat.common.facade.param.ast.AstPackQryParam; 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.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.BasePage;
import com.abssqr.plat.common.facade.result.pack.AstPackListVO; import com.abssqr.plat.common.facade.result.pack.AstPackListVO;
import com.abssqr.plat.common.facade.service.ast.AstPackService; import com.abssqr.plat.common.facade.service.ast.AstPackService;
...@@ -47,7 +49,7 @@ public class PackController { ...@@ -47,7 +49,7 @@ public class PackController {
* @param astPackQryParam * @param astPackQryParam
* @return * @return
*/ */
@RequestMapping(value = "astPack/get.json", method = RequestMethod.GET) @RequestMapping(value = "/astPack/get.json", method = RequestMethod.GET)
public BaseResult<String> get(@RequestBody AstPackQryParam astPackQryParam) { public BaseResult<String> get(@RequestBody AstPackQryParam astPackQryParam) {
return BaseResult.success(astPackService.get(astPackQryParam)); return BaseResult.success(astPackService.get(astPackQryParam));
} }
...@@ -57,12 +59,34 @@ public class PackController { ...@@ -57,12 +59,34 @@ public class PackController {
* @param astPackSealOprParam * @param astPackSealOprParam
* @return * @return
*/ */
@RequestMapping(value = "astPack/sealPack.json", method = RequestMethod.GET) @RequestMapping(value = "/astPack/sealPack.json", method = RequestMethod.GET)
public BaseResult<String> sealPack(@RequestBody AstPackSealOprParam astPackSealOprParam) { public BaseResult<String> sealPack(@RequestBody AstPackSealOprParam astPackSealOprParam) {
return BaseResult.success(astPackService.sealPack(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 * @param astPackQryParam
* @return * @return
......
drop table ABS_AST_PACK; drop table ABS_AST_PACK;
...@@ -18,11 +18,9 @@ CREATE TABLE ABS_AST_PACK ( ...@@ -18,11 +18,9 @@ CREATE TABLE ABS_AST_PACK (
) )
; ;
CREATE UNIQUE INDEX UK_ABS_PACK_PACK_NO CREATE UNIQUE INDEX UK_ABS_PACK_PACK_NO ON ABS_AST_PACK (PACK_NO);
ON ABS_AST_PACK (PACK_NO);
CREATE INDEX IDX_ABS_PACK_PLAN_NO CREATE INDEX IDX_ABS_PACK_PLAN_NO ON ABS_AST_PACK (PLAN_NO);
ON ABS_AST_PACK (PLAN_NO);
COMMENT ON COLUMN ABS_AST_PACK.PACK_NO IS '资产包编号'; 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