实现上虞利率定价字段调整
This commit is contained in:
@@ -41,9 +41,9 @@ public class CorporateLoanPricingCreateDTO implements Serializable {
|
||||
@NotBlank(message = "申请金额不能为空")
|
||||
private String applyAmt;
|
||||
|
||||
@Schema(description = "业务种类", requiredMode = Schema.RequiredMode.REQUIRED, example = "存量转贷", allowableValues = {"新客", "存量新增", "存量转贷"})
|
||||
@Schema(description = "业务种类", requiredMode = Schema.RequiredMode.REQUIRED, example = "存量转贷", allowableValues = {"新增", "存量新增", "存量转贷"})
|
||||
@NotBlank(message = "业务种类不能为空")
|
||||
@Pattern(regexp = "^(新客|存量新增|存量转贷)$", message = "业务种类必须是:新客、存量新增、存量转贷之一")
|
||||
@Pattern(regexp = "^(新增|存量新增|存量转贷)$", message = "业务种类必须是:新增、存量新增、存量转贷之一")
|
||||
private String businessType;
|
||||
|
||||
@Schema(description = "历史贷款利率", example = "3.65")
|
||||
@@ -62,10 +62,13 @@ public class CorporateLoanPricingCreateDTO implements Serializable {
|
||||
@Schema(description = "贸易和建筑业企业标识", example = "0")
|
||||
private String isTradeBuildEnt;
|
||||
|
||||
@Schema(description = "抵质押类型", example = "一类", allowableValues = {"一类", "二类", "三类", "四类", "其他", "存单质押"})
|
||||
@Pattern(regexp = "^(一类|二类|三类|四类|其他|存单质押)$", message = "抵质押类型必须是:一类、二类、三类、四类、其他、存单质押之一")
|
||||
@Schema(description = "抵质押类型", example = "一类", allowableValues = {"一类", "二类", "三类", "四类", "排污权抵押", "设备等其他不动产抵押", "存单质押", "股权质押", "其他质押"})
|
||||
@Pattern(regexp = "^(一类|二类|三类|四类|排污权抵押|设备等其他不动产抵押|存单质押|股权质押|其他质押)$", message = "抵质押类型必须是:一类、二类、三类、四类、排污权抵押、设备等其他不动产抵押、存单质押、股权质押、其他质押之一")
|
||||
private String collType;
|
||||
|
||||
@Schema(description = "抵质押物是否三方所有", example = "0")
|
||||
private String collThirdParty;
|
||||
|
||||
@Schema(description = "存单票面利率", example = "2.15")
|
||||
private String couponRate;
|
||||
}
|
||||
|
||||
@@ -158,6 +158,11 @@ public class ModelInvokeDTO {
|
||||
*/
|
||||
private String loanRateHistory;
|
||||
|
||||
/**
|
||||
* 存单票面利率
|
||||
*/
|
||||
private String couponRate;
|
||||
|
||||
// /**
|
||||
// * 贷款利率(必填)
|
||||
// */
|
||||
|
||||
@@ -41,14 +41,9 @@ public class PersonalLoanPricingCreateDTO implements Serializable {
|
||||
@NotBlank(message = "申请金额不能为空")
|
||||
private String applyAmt;
|
||||
|
||||
@Schema(description = "贷款用途", requiredMode = Schema.RequiredMode.REQUIRED, example = "business", allowableValues = {"consumer", "business"})
|
||||
@NotBlank(message = "贷款用途不能为空")
|
||||
@Pattern(regexp = "^(consumer|business)$", message = "贷款用途必须是:consumer、business之一")
|
||||
private String loanPurpose;
|
||||
|
||||
@Schema(description = "业务种类", requiredMode = Schema.RequiredMode.REQUIRED, example = "存量转贷", allowableValues = {"新客", "存量新增", "存量转贷"})
|
||||
@Schema(description = "业务种类", requiredMode = Schema.RequiredMode.REQUIRED, example = "存量转贷", allowableValues = {"新增", "存量新增", "存量转贷"})
|
||||
@NotBlank(message = "业务种类不能为空")
|
||||
@Pattern(regexp = "^(新客|存量新增|存量转贷)$", message = "业务种类必须是:新客、存量新增、存量转贷之一")
|
||||
@Pattern(regexp = "^(新增|存量新增|存量转贷)$", message = "业务种类必须是:新增、存量新增、存量转贷之一")
|
||||
private String businessType;
|
||||
|
||||
@Schema(description = "历史贷款利率", example = "3.65")
|
||||
@@ -58,15 +53,15 @@ public class PersonalLoanPricingCreateDTO implements Serializable {
|
||||
@NotBlank(message = "借款期限不能为空")
|
||||
private String loanTerm;
|
||||
|
||||
@Schema(description = "是否有经营佐证", example = "1")
|
||||
private String bizProof;
|
||||
|
||||
@Schema(description = "循环功能", example = "0")
|
||||
private String loanLoop;
|
||||
|
||||
@Schema(description = "抵质押类型", example = "一类")
|
||||
@Schema(description = "抵质押类型", example = "一类", allowableValues = {"一线", "一类", "二类", "三类", "存单质押", "其他质押"})
|
||||
private String collType;
|
||||
|
||||
@Schema(description = "抵质押物是否三方所有", example = "0")
|
||||
private String collThirdParty;
|
||||
|
||||
@Schema(description = "存单票面利率", example = "2.15")
|
||||
private String couponRate;
|
||||
}
|
||||
|
||||
@@ -103,12 +103,15 @@ public class LoanPricingWorkflow implements Serializable
|
||||
/** 贷款用途: consumer-消费/business-经营 */
|
||||
private String loanPurpose;
|
||||
|
||||
/** 业务种类: 新客/存量新增/存量转贷 */
|
||||
/** 业务种类: 新增/存量新增/存量转贷 */
|
||||
private String businessType;
|
||||
|
||||
/** 历史贷款利率 */
|
||||
private String loanRateHistory;
|
||||
|
||||
/** 存单票面利率 */
|
||||
private String couponRate;
|
||||
|
||||
/** 是否有经营佐证: true/false */
|
||||
private String bizProof;
|
||||
|
||||
|
||||
@@ -67,6 +67,7 @@ public class LoanPricingWorkflowServiceImpl implements ILoanPricingWorkflowServi
|
||||
public LoanPricingWorkflow createLoanPricing(LoanPricingWorkflow loanPricingWorkflow)
|
||||
{
|
||||
validateBusinessTypeAndHistoryRate(loanPricingWorkflow);
|
||||
validateCollateralTypeAndCouponRate(loanPricingWorkflow);
|
||||
|
||||
// 自动生成业务方流水号(时间戳)
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
|
||||
@@ -95,10 +96,10 @@ public class LoanPricingWorkflowServiceImpl implements ILoanPricingWorkflowServi
|
||||
if (!StringUtils.hasText(workflow.getBusinessType())) {
|
||||
throw new ServiceException("业务种类不能为空");
|
||||
}
|
||||
if (!"新客".equals(workflow.getBusinessType())
|
||||
if (!"新增".equals(workflow.getBusinessType())
|
||||
&& !"存量新增".equals(workflow.getBusinessType())
|
||||
&& !"存量转贷".equals(workflow.getBusinessType())) {
|
||||
throw new ServiceException("业务种类必须是:新客、存量新增、存量转贷之一");
|
||||
throw new ServiceException("业务种类必须是:新增、存量新增、存量转贷之一");
|
||||
}
|
||||
if ("存量转贷".equals(workflow.getBusinessType())
|
||||
&& !StringUtils.hasText(workflow.getLoanRateHistory())) {
|
||||
@@ -106,6 +107,57 @@ public class LoanPricingWorkflowServiceImpl implements ILoanPricingWorkflowServi
|
||||
}
|
||||
}
|
||||
|
||||
private void validateCollateralTypeAndCouponRate(LoanPricingWorkflow workflow) {
|
||||
if (!"抵押".equals(workflow.getGuarType()) && !"质押".equals(workflow.getGuarType())) {
|
||||
return;
|
||||
}
|
||||
if (!StringUtils.hasText(workflow.getCollType())) {
|
||||
throw new ServiceException("请选择抵质押类型");
|
||||
}
|
||||
if ("个人".equals(workflow.getCustType())) {
|
||||
validatePersonalCollateralType(workflow);
|
||||
}
|
||||
if ("企业".equals(workflow.getCustType())) {
|
||||
validateCorporateCollateralType(workflow);
|
||||
}
|
||||
if ("质押".equals(workflow.getGuarType())
|
||||
&& "存单质押".equals(workflow.getCollType())
|
||||
&& !StringUtils.hasText(workflow.getCouponRate())) {
|
||||
throw new ServiceException("存单票面利率不能为空");
|
||||
}
|
||||
}
|
||||
|
||||
private void validatePersonalCollateralType(LoanPricingWorkflow workflow) {
|
||||
if ("抵押".equals(workflow.getGuarType())
|
||||
&& !isOneOf(workflow.getCollType(), "一线", "一类", "二类", "三类")) {
|
||||
throw new ServiceException("个人抵押抵质押类型必须是:一线、一类、二类、三类之一");
|
||||
}
|
||||
if ("质押".equals(workflow.getGuarType())
|
||||
&& !isOneOf(workflow.getCollType(), "存单质押", "其他质押")) {
|
||||
throw new ServiceException("个人质押抵质押类型必须是:存单质押、其他质押之一");
|
||||
}
|
||||
}
|
||||
|
||||
private void validateCorporateCollateralType(LoanPricingWorkflow workflow) {
|
||||
if ("抵押".equals(workflow.getGuarType())
|
||||
&& !isOneOf(workflow.getCollType(), "一类", "二类", "三类", "四类", "排污权抵押", "设备等其他不动产抵押")) {
|
||||
throw new ServiceException("企业抵押抵质押类型必须是:一类、二类、三类、四类、排污权抵押、设备等其他不动产抵押之一");
|
||||
}
|
||||
if ("质押".equals(workflow.getGuarType())
|
||||
&& !isOneOf(workflow.getCollType(), "存单质押", "股权质押", "其他质押")) {
|
||||
throw new ServiceException("企业质押抵质押类型必须是:存单质押、股权质押、其他质押之一");
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isOneOf(String value, String... allowedValues) {
|
||||
for (String allowedValue : allowedValues) {
|
||||
if (allowedValue.equals(value)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发起个人客户利率定价流程
|
||||
*
|
||||
|
||||
@@ -28,14 +28,13 @@ public class LoanPricingConverter {
|
||||
entity.setIdNum(dto.getIdNum());
|
||||
entity.setGuarType(dto.getGuarType());
|
||||
entity.setApplyAmt(dto.getApplyAmt());
|
||||
entity.setLoanPurpose(dto.getLoanPurpose());
|
||||
entity.setBusinessType(dto.getBusinessType());
|
||||
entity.setLoanRateHistory(dto.getLoanRateHistory());
|
||||
entity.setCouponRate(dto.getCouponRate());
|
||||
entity.setLoanTerm(dto.getLoanTerm());
|
||||
entity.setCollType(dto.getCollType());
|
||||
entity.setCollThirdParty(dto.getCollThirdParty());
|
||||
// 映射个人特有字段
|
||||
entity.setBizProof(dto.getBizProof());
|
||||
entity.setLoanLoop(dto.getLoanLoop());
|
||||
return entity;
|
||||
}
|
||||
@@ -58,6 +57,7 @@ public class LoanPricingConverter {
|
||||
entity.setApplyAmt(dto.getApplyAmt());
|
||||
entity.setBusinessType(dto.getBusinessType());
|
||||
entity.setLoanRateHistory(dto.getLoanRateHistory());
|
||||
entity.setCouponRate(dto.getCouponRate());
|
||||
entity.setRepayMethod(dto.getRepayMethod());
|
||||
entity.setCollType(dto.getCollType());
|
||||
entity.setCollThirdParty(dto.getCollThirdParty());
|
||||
|
||||
@@ -18,6 +18,7 @@ import java.util.Objects;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.argThat;
|
||||
@@ -46,24 +47,28 @@ class LoanPricingModelServicePersonalParamsTest {
|
||||
private LoanPricingModelService loanPricingModelService;
|
||||
|
||||
@Test
|
||||
void shouldContainLoanPurposeAndLoanTermInPersonalCreateDto() throws NoSuchFieldException {
|
||||
assertNotNull(PersonalLoanPricingCreateDTO.class.getDeclaredField("loanPurpose"));
|
||||
void shouldRemoveLoanPurposeAndKeepLoanTermInPersonalCreateDto() throws NoSuchFieldException {
|
||||
assertThrows(NoSuchFieldException.class,
|
||||
() -> PersonalLoanPricingCreateDTO.class.getDeclaredField("loanPurpose"));
|
||||
assertThrows(NoSuchFieldException.class,
|
||||
() -> PersonalLoanPricingCreateDTO.class.getDeclaredField("bizProof"));
|
||||
assertNotNull(PersonalLoanPricingCreateDTO.class.getDeclaredField("loanTerm"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldMapLoanPurposeAndLoanTermFromPersonalDto() {
|
||||
void shouldNotMapLoanPurposeAndBizProofFromPersonalDto() {
|
||||
PersonalLoanPricingCreateDTO dto = new PersonalLoanPricingCreateDTO();
|
||||
dto.setCustIsn("CUST001");
|
||||
dto.setCustName("张三");
|
||||
dto.setGuarType("信用");
|
||||
dto.setApplyAmt("100000");
|
||||
dto.setLoanPurpose("business");
|
||||
dto.setBusinessType("新增");
|
||||
dto.setLoanTerm("3");
|
||||
|
||||
LoanPricingWorkflow workflow = LoanPricingConverter.toEntity(dto);
|
||||
|
||||
assertEquals("business", workflow.getLoanPurpose());
|
||||
assertNull(workflow.getLoanPurpose());
|
||||
assertNull(workflow.getBizProof());
|
||||
assertEquals("3", workflow.getLoanTerm());
|
||||
}
|
||||
|
||||
@@ -87,9 +92,7 @@ class LoanPricingModelServicePersonalParamsTest {
|
||||
workflow.setIdNum("cipher-id");
|
||||
workflow.setGuarType("信用");
|
||||
workflow.setApplyAmt("100000");
|
||||
workflow.setLoanPurpose("business");
|
||||
workflow.setLoanTerm("3");
|
||||
workflow.setBizProof("true");
|
||||
workflow.setLoanLoop("false");
|
||||
workflow.setCollThirdParty("true");
|
||||
workflow.setCollType("一类");
|
||||
@@ -115,9 +118,7 @@ class LoanPricingModelServicePersonalParamsTest {
|
||||
&& Objects.equals("110101199001011234", dto.getIdNum())
|
||||
&& Objects.equals("信用", dto.getGuarType())
|
||||
&& Objects.equals("100000", dto.getApplyAmt())
|
||||
&& Objects.equals("business", dto.getLoanPurpose())
|
||||
&& Objects.equals("3", dto.getLoanTerm())
|
||||
&& Objects.equals("1", dto.getBizProof())
|
||||
&& Objects.equals("0", dto.getLoanLoop())
|
||||
&& Objects.equals("1", dto.getCollThirdParty())
|
||||
&& Objects.equals("一类", dto.getCollType())));
|
||||
|
||||
@@ -29,6 +29,7 @@ class LoanPricingModelServiceTest
|
||||
|
||||
assertEquals("张三", context.modelService.personalRequest.getCustName());
|
||||
assertEquals("110101199001011234", context.modelService.personalRequest.getIdNum());
|
||||
assertEquals("2.15", context.modelService.personalRequest.getCouponRate());
|
||||
assertEquals(1, context.modelService.personalCalls.get());
|
||||
assertEquals(0, context.modelService.corporateCalls.get());
|
||||
assertEquals(1, context.retailInsertCount.get());
|
||||
@@ -59,6 +60,7 @@ class LoanPricingModelServiceTest
|
||||
workflow.setIsGreenLoan("true");
|
||||
workflow.setIsTradeBuildEnt("false");
|
||||
workflow.setCollThirdParty("true");
|
||||
workflow.setCouponRate("2.35");
|
||||
TestContext context = createContext(workflow);
|
||||
|
||||
context.service.invokeModelAsync(3L);
|
||||
@@ -68,6 +70,7 @@ class LoanPricingModelServiceTest
|
||||
assertEquals("1", request.getIsGreenLoan());
|
||||
assertEquals("0", request.getIsTradeBuildEnt());
|
||||
assertEquals("1", request.getCollThirdParty());
|
||||
assertEquals("2.35", request.getCouponRate());
|
||||
assertEquals(0, context.modelService.personalCalls.get());
|
||||
assertEquals(1, context.modelService.corporateCalls.get());
|
||||
assertEquals(0, context.retailInsertCount.get());
|
||||
@@ -81,6 +84,7 @@ class LoanPricingModelServiceTest
|
||||
workflow.setCustType("个人");
|
||||
workflow.setCustName("cipher-name");
|
||||
workflow.setIdNum("cipher-id");
|
||||
workflow.setCouponRate("2.15");
|
||||
return workflow;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.ruoyi.loanpricing.service.impl;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.argThat;
|
||||
@@ -12,6 +13,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.loanpricing.domain.dto.CorporateLoanPricingCreateDTO;
|
||||
import com.ruoyi.loanpricing.domain.dto.PersonalLoanPricingCreateDTO;
|
||||
import com.ruoyi.loanpricing.domain.entity.LoanPricingWorkflow;
|
||||
import com.ruoyi.loanpricing.domain.entity.ModelCorpOutputFields;
|
||||
import com.ruoyi.loanpricing.domain.entity.ModelRetailOutputFields;
|
||||
@@ -65,6 +69,7 @@ class LoanPricingWorkflowServiceImplTest
|
||||
workflow.setCustName("张三");
|
||||
workflow.setIdNum("110101199001011234");
|
||||
workflow.setCustIsn("CUST001");
|
||||
workflow.setBusinessType("新增");
|
||||
|
||||
when(sensitiveFieldCryptoService.encrypt("张三")).thenReturn("cipher-name");
|
||||
when(sensitiveFieldCryptoService.encrypt("110101199001011234")).thenReturn("cipher-id");
|
||||
@@ -133,6 +138,134 @@ class LoanPricingWorkflowServiceImplTest
|
||||
assertTrue(!sqlSegment.contains("cust_name"), sqlSegment);
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldRejectOldBusinessType()
|
||||
{
|
||||
LoanPricingWorkflow workflow = validWorkflow();
|
||||
workflow.setBusinessType("新客");
|
||||
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
() -> loanPricingWorkflowService.createLoanPricing(workflow));
|
||||
|
||||
assertEquals("业务种类必须是:新增、存量新增、存量转贷之一", exception.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldRequireHistoryRateForStockTransfer()
|
||||
{
|
||||
LoanPricingWorkflow workflow = validWorkflow();
|
||||
workflow.setBusinessType("存量转贷");
|
||||
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
() -> loanPricingWorkflowService.createLoanPricing(workflow));
|
||||
|
||||
assertEquals("请选择历史贷款合同", exception.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldRequireCouponRateForCertificatePledge()
|
||||
{
|
||||
LoanPricingWorkflow workflow = validWorkflow();
|
||||
workflow.setCustType("企业");
|
||||
workflow.setGuarType("质押");
|
||||
workflow.setCollType("存单质押");
|
||||
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
() -> loanPricingWorkflowService.createLoanPricing(workflow));
|
||||
|
||||
assertEquals("存单票面利率不能为空", exception.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldAllowPersonalMortgageOneLineAndRejectOldOther()
|
||||
{
|
||||
LoanPricingWorkflow allowedWorkflow = validWorkflow();
|
||||
allowedWorkflow.setCustType("个人");
|
||||
allowedWorkflow.setGuarType("抵押");
|
||||
allowedWorkflow.setCollType("一线");
|
||||
|
||||
loanPricingWorkflowService.createLoanPricing(allowedWorkflow);
|
||||
|
||||
LoanPricingWorkflow rejectedWorkflow = validWorkflow();
|
||||
rejectedWorkflow.setCustType("个人");
|
||||
rejectedWorkflow.setGuarType("抵押");
|
||||
rejectedWorkflow.setCollType("其他");
|
||||
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
() -> loanPricingWorkflowService.createLoanPricing(rejectedWorkflow));
|
||||
|
||||
assertEquals("个人抵押抵质押类型必须是:一线、一类、二类、三类之一", exception.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldAllowCorporateMortgagePollutionRightAndPledgeEquity()
|
||||
{
|
||||
LoanPricingWorkflow mortgageWorkflow = validWorkflow();
|
||||
mortgageWorkflow.setCustType("企业");
|
||||
mortgageWorkflow.setGuarType("抵押");
|
||||
mortgageWorkflow.setCollType("排污权抵押");
|
||||
|
||||
loanPricingWorkflowService.createLoanPricing(mortgageWorkflow);
|
||||
|
||||
LoanPricingWorkflow pledgeWorkflow = validWorkflow();
|
||||
pledgeWorkflow.setCustType("企业");
|
||||
pledgeWorkflow.setGuarType("质押");
|
||||
pledgeWorkflow.setCollType("股权质押");
|
||||
|
||||
loanPricingWorkflowService.createLoanPricing(pledgeWorkflow);
|
||||
|
||||
LoanPricingWorkflow rejectedWorkflow = validWorkflow();
|
||||
rejectedWorkflow.setCustType("企业");
|
||||
rejectedWorkflow.setGuarType("质押");
|
||||
rejectedWorkflow.setCollType("其他");
|
||||
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
() -> loanPricingWorkflowService.createLoanPricing(rejectedWorkflow));
|
||||
|
||||
assertEquals("企业质押抵质押类型必须是:存单质押、股权质押、其他质押之一", exception.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldCreatePersonalWorkflowWithCouponRateAndWithoutRemovedFields()
|
||||
{
|
||||
PersonalLoanPricingCreateDTO dto = new PersonalLoanPricingCreateDTO();
|
||||
dto.setCustIsn("CUST001");
|
||||
dto.setGuarType("质押");
|
||||
dto.setApplyAmt("100000");
|
||||
dto.setBusinessType("新增");
|
||||
dto.setLoanTerm("3");
|
||||
dto.setCollType("存单质押");
|
||||
dto.setCouponRate("2.15");
|
||||
|
||||
loanPricingWorkflowService.createPersonalLoanPricing(dto);
|
||||
|
||||
verify(loanPricingWorkflowMapper).insert(argThat((LoanPricingWorkflow entity) ->
|
||||
Objects.equals("个人", entity.getCustType())
|
||||
&& Objects.equals("2.15", entity.getCouponRate())
|
||||
&& Objects.isNull(entity.getLoanPurpose())
|
||||
&& Objects.isNull(entity.getBizProof())));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldCreateCorporateWorkflowWithCouponRateAndBusinessType()
|
||||
{
|
||||
CorporateLoanPricingCreateDTO dto = new CorporateLoanPricingCreateDTO();
|
||||
dto.setCustIsn("CORP001");
|
||||
dto.setGuarType("质押");
|
||||
dto.setApplyAmt("1000000");
|
||||
dto.setBusinessType("新增");
|
||||
dto.setLoanTerm("3");
|
||||
dto.setCollType("存单质押");
|
||||
dto.setCouponRate("2.35");
|
||||
|
||||
loanPricingWorkflowService.createCorporateLoanPricing(dto);
|
||||
|
||||
verify(loanPricingWorkflowMapper).insert(argThat((LoanPricingWorkflow entity) ->
|
||||
Objects.equals("企业", entity.getCustType())
|
||||
&& Objects.equals("新增", entity.getBusinessType())
|
||||
&& Objects.equals("2.35", entity.getCouponRate())));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldUseRetailModelOutputFinalCalculateRateForWorkflowDetail()
|
||||
{
|
||||
@@ -255,4 +388,15 @@ class LoanPricingWorkflowServiceImplTest
|
||||
assertEquals("测试****公司", result.getModelCorpOutputFields().getCustName());
|
||||
assertEquals("91*************00X", result.getModelCorpOutputFields().getIdNum());
|
||||
}
|
||||
|
||||
private LoanPricingWorkflow validWorkflow()
|
||||
{
|
||||
LoanPricingWorkflow workflow = new LoanPricingWorkflow();
|
||||
workflow.setCustIsn("CUST001");
|
||||
workflow.setCustType("个人");
|
||||
workflow.setGuarType("信用");
|
||||
workflow.setApplyAmt("100000");
|
||||
workflow.setBusinessType("新增");
|
||||
return workflow;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user