移除liquidbase 需求20260817

This commit is contained in:
wkc
2026-08-24 12:31:08 +08:00
parent 9552e2acb8
commit cb29c38bf1
24 changed files with 245 additions and 847 deletions

View File

@@ -65,6 +65,14 @@ public class CorporateLoanPricingCreateDTO implements Serializable {
@Schema(description = "贸易和建筑业企业标识", example = "0")
private String isTradeBuildEnt;
@Schema(description = "抵押物性质", example = "普通住宅、土地、厂房", allowableValues = {"普通住宅、土地、厂房", "商业性质不动产", "排污权", "其他不动产"})
@Pattern(regexp = "^(普通住宅、土地、厂房|商业性质不动产|排污权|其他不动产)$", message = "抵押物性质必须是:普通住宅、土地、厂房、商业性质不动产、排污权、其他不动产之一")
private String collateralNature;
@Schema(description = "是否属于九地", example = "", allowableValues = {"", ""})
@Pattern(regexp = "^(是|否)$", message = "是否属于九地必须是:是、否之一")
private String isNineArea;
@Schema(description = "抵质押类型", example = "一类", allowableValues = {"一类", "二类", "三类", "排污权抵押", "其他不动产抵押", "存单质押", "股权质押", "其他质押"})
@Pattern(regexp = "^(一类|二类|三类|排污权抵押|其他不动产抵押|存单质押|股权质押|其他质押)$", message = "抵质押类型必须是:一类、二类、三类、排污权抵押、其他不动产抵押、存单质押、股权质押、其他质押之一")
private String collType;

View File

@@ -60,6 +60,14 @@ public class PersonalLoanPricingCreateDTO implements Serializable {
@Schema(description = "循环功能", example = "0")
private String loanLoop;
@Schema(description = "抵押物性质", example = "普通住宅、土地、厂房", allowableValues = {"普通住宅、土地、厂房", "商业性质不动产", "其他抵押财产"})
@Pattern(regexp = "^(普通住宅、土地、厂房|商业性质不动产|其他抵押财产)$", message = "抵押物性质必须是:普通住宅、土地、厂房、商业性质不动产、其他抵押财产之一")
private String collateralNature;
@Schema(description = "是否属于九地", example = "", allowableValues = {"", ""})
@Pattern(regexp = "^(是|否)$", message = "是否属于九地必须是:是、否之一")
private String isNineArea;
@Schema(description = "抵质押类型", example = "一类", allowableValues = {"一类", "二类", "三类", "四类", "存单质押", "其他质押"})
private String collType;

View File

@@ -125,6 +125,12 @@ public class LoanPricingWorkflow implements Serializable
/** 抵质押类型: 一类/二类/三类/四类 */
private String collType;
/** 抵押物性质 */
private String collateralNature;
/** 是否属于九地: 是/否 */
private String isNineArea;
/** 抵质押物是否三方所有: true/false */
private String collThirdParty;

View File

@@ -246,6 +246,8 @@ public class LoanPricingWorkflowServiceImpl implements ILoanPricingWorkflowServi
.set(LoanPricingWorkflow::getLoanRateHistory, editingWorkflow.getLoanRateHistory())
.set(LoanPricingWorkflow::getCouponRate, editingWorkflow.getCouponRate())
.set(LoanPricingWorkflow::getLoanTerm, editingWorkflow.getLoanTerm())
.set(LoanPricingWorkflow::getCollateralNature, editingWorkflow.getCollateralNature())
.set(LoanPricingWorkflow::getIsNineArea, editingWorkflow.getIsNineArea())
.set(LoanPricingWorkflow::getCollType, editingWorkflow.getCollType())
.set(LoanPricingWorkflow::getCollThirdParty, editingWorkflow.getCollThirdParty())
.set(LoanPricingWorkflow::getBizProof, editingWorkflow.getBizProof())

View File

@@ -32,6 +32,8 @@ public class LoanPricingConverter {
entity.setLoanRateHistory(dto.getLoanRateHistory());
entity.setCouponRate(dto.getCouponRate());
entity.setLoanTerm(dto.getLoanTerm());
entity.setCollateralNature(dto.getCollateralNature());
entity.setIsNineArea(dto.getIsNineArea());
entity.setCollType(dto.getCollType());
entity.setCollThirdParty(dto.getCollThirdParty());
// 映射个人特有字段
@@ -61,6 +63,8 @@ public class LoanPricingConverter {
entity.setCouponRate(dto.getCouponRate());
entity.setResCover(dto.getResCover());
entity.setRepayMethod(dto.getRepayMethod());
entity.setCollateralNature(dto.getCollateralNature());
entity.setIsNineArea(dto.getIsNineArea());
entity.setCollType(dto.getCollType());
entity.setCollThirdParty(dto.getCollThirdParty());
entity.setIsGreenLoan(dto.getIsGreenLoan());

View File

@@ -23,5 +23,7 @@ class ModelRetailOutputFieldsTest
assertTrue(fieldNames.contains("finalCalculateRate"), "缺少字段 finalCalculateRate");
assertTrue(fieldNames.contains("referenceRate"), "缺少字段 referenceRate");
assertTrue(fieldNames.contains("greyBlackCust"), "缺少字段 greyBlackCust");
assertTrue(fieldNames.contains("blackCust"), "缺少字段 blackCust");
assertTrue(fieldNames.contains("branchBp"), "缺少字段 branchBp");
}
}

View File

@@ -44,16 +44,15 @@ class LoanPricingModelServicePersonalParamsTest {
private LoanPricingModelService loanPricingModelService;
@Test
void shouldRemoveLoanPurposeAndKeepLoanTermInPersonalCreateDto() throws NoSuchFieldException {
void shouldRemoveLoanPurposeAndKeepPersonalModelFieldsInCreateDto() throws NoSuchFieldException {
assertThrows(NoSuchFieldException.class,
() -> PersonalLoanPricingCreateDTO.class.getDeclaredField("loanPurpose"));
assertThrows(NoSuchFieldException.class,
() -> PersonalLoanPricingCreateDTO.class.getDeclaredField("bizProof"));
assertNotNull(PersonalLoanPricingCreateDTO.class.getDeclaredField("bizProof"));
assertNotNull(PersonalLoanPricingCreateDTO.class.getDeclaredField("loanTerm"));
}
@Test
void shouldNotMapLoanPurposeAndBizProofFromPersonalDto() {
void shouldMapBizProofButNotLoanPurposeFromPersonalDto() {
PersonalLoanPricingCreateDTO dto = new PersonalLoanPricingCreateDTO();
dto.setCustIsn("CUST001");
dto.setCustName("张三");
@@ -61,11 +60,12 @@ class LoanPricingModelServicePersonalParamsTest {
dto.setApplyAmt("100000");
dto.setBusinessType("新增");
dto.setLoanTerm("3");
dto.setBizProof("1");
LoanPricingWorkflow workflow = LoanPricingConverter.toEntity(dto);
assertNull(workflow.getLoanPurpose());
assertNull(workflow.getBizProof());
assertEquals("1", workflow.getBizProof());
assertEquals("3", workflow.getLoanTerm());
}
@@ -90,6 +90,7 @@ class LoanPricingModelServicePersonalParamsTest {
workflow.setGuarType("信用");
workflow.setApplyAmt("100000");
workflow.setLoanTerm("3");
workflow.setBizProof("true");
workflow.setLoanLoop("false");
workflow.setCollThirdParty("true");
workflow.setCollType("一类");
@@ -114,6 +115,7 @@ class LoanPricingModelServicePersonalParamsTest {
&& Objects.equals("信用", dto.getGuarType())
&& Objects.equals("100000", dto.getApplyAmt())
&& Objects.equals("3", dto.getLoanTerm())
&& Objects.equals("1", dto.getBizProof())
&& Objects.equals("0", dto.getLoanLoop())
&& Objects.equals("1", dto.getCollThirdParty())
&& Objects.equals("一类", dto.getCollType())));

View File

@@ -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.personalRequest.getBizProof());
assertEquals(1, context.modelService.personalCalls.get());
assertEquals(0, context.modelService.corporateCalls.get());
assertEquals(1, context.retailInsertCount.get());
@@ -105,6 +106,7 @@ class LoanPricingModelServiceTest
workflow.setCustName("张三");
workflow.setIdNum("110101199001011234");
workflow.setCouponRate("2.15");
workflow.setBizProof("true");
return workflow;
}

View File

@@ -370,7 +370,7 @@ class LoanPricingWorkflowServiceImplTest
}
@Test
void shouldCreatePersonalWorkflowWithCouponRateAndWithoutRemovedFields()
void shouldCreatePersonalWorkflowWithCouponRateAndBizProof()
{
PersonalLoanPricingCreateDTO dto = new PersonalLoanPricingCreateDTO();
dto.setCustIsn("CUST001");
@@ -380,6 +380,7 @@ class LoanPricingWorkflowServiceImplTest
dto.setLoanTerm("3");
dto.setCollType("存单质押");
dto.setCouponRate("2.15");
dto.setBizProof("1");
loanPricingWorkflowService.createPersonalLoanPricing(dto);
@@ -387,7 +388,7 @@ class LoanPricingWorkflowServiceImplTest
Objects.equals("个人", entity.getCustType())
&& Objects.equals("2.15", entity.getCouponRate())
&& Objects.isNull(entity.getLoanPurpose())
&& Objects.isNull(entity.getBizProof())));
&& Objects.equals("1", entity.getBizProof())));
}
@Test
@@ -412,6 +413,48 @@ class LoanPricingWorkflowServiceImplTest
&& Objects.equals("2.35", entity.getCouponRate())));
}
@Test
void shouldCreatePersonalWorkflowWithMortgageSourceFields()
{
PersonalLoanPricingCreateDTO dto = new PersonalLoanPricingCreateDTO();
dto.setCustIsn("CUST001");
dto.setGuarType("抵押");
dto.setApplyAmt("100000");
dto.setBusinessType("新增");
dto.setLoanTerm("3");
dto.setCollateralNature("普通住宅、土地、厂房");
dto.setIsNineArea("");
dto.setCollType("一类");
loanPricingWorkflowService.createPersonalLoanPricing(dto);
verify(loanPricingWorkflowMapper).insert(argThat((LoanPricingWorkflow entity) ->
Objects.equals("普通住宅、土地、厂房", entity.getCollateralNature())
&& Objects.equals("", entity.getIsNineArea())
&& Objects.equals("一类", entity.getCollType())));
}
@Test
void shouldCreateCorporateWorkflowWithMortgageSourceFields()
{
CorporateLoanPricingCreateDTO dto = new CorporateLoanPricingCreateDTO();
dto.setCustIsn("CORP001");
dto.setGuarType("抵押");
dto.setApplyAmt("1000000");
dto.setBusinessType("新增");
dto.setLoanTerm("5");
dto.setCollateralNature("商业性质不动产");
dto.setIsNineArea("");
dto.setCollType("三类");
loanPricingWorkflowService.createCorporateLoanPricing(dto);
verify(loanPricingWorkflowMapper).insert(argThat((LoanPricingWorkflow entity) ->
Objects.equals("商业性质不动产", entity.getCollateralNature())
&& Objects.equals("", entity.getIsNineArea())
&& Objects.equals("三类", entity.getCollType())));
}
@Test
void shouldReturnEditableWorkflowWithPlainSensitiveFieldsForCreator()
{
@@ -451,11 +494,15 @@ class LoanPricingWorkflowServiceImplTest
dto.setCustName("张三");
dto.setIdType("身份证");
dto.setIdNum("110101199001019999");
dto.setGuarType("信用");
dto.setGuarType("抵押");
dto.setApplyAmt("200000");
dto.setBusinessType("新增");
dto.setLoanTerm("3");
dto.setLoanLoop("1");
dto.setBizProof("1");
dto.setCollateralNature("普通住宅、土地、厂房");
dto.setIsNineArea("");
dto.setCollType("一类");
loanPricingWorkflowService.updatePersonalLoanPricing("P20260525001", dto);
@@ -465,8 +512,14 @@ class LoanPricingWorkflowServiceImplTest
assertTrue(sqlSet.contains("apply_amt"));
assertTrue(sqlSet.contains("cust_name"));
assertTrue(sqlSet.contains("id_num"));
assertTrue(sqlSet.contains("biz_proof"));
assertTrue(sqlSet.contains("collateral_nature"));
assertTrue(sqlSet.contains("is_nine_area"));
assertTrue(updateWrapperCaptor.getValue().getParamNameValuePairs().containsValue("张三"));
assertTrue(updateWrapperCaptor.getValue().getParamNameValuePairs().containsValue("110101199001019999"));
assertTrue(updateWrapperCaptor.getValue().getParamNameValuePairs().containsValue("普通住宅、土地、厂房"));
assertTrue(updateWrapperCaptor.getValue().getParamNameValuePairs().containsValue(""));
assertTrue(updateWrapperCaptor.getValue().getParamNameValuePairs().containsValue("1"));
verify(sensitiveFieldCryptoService, never()).encrypt(any());
verify(loanPricingModelService).reinvokeModelAndOverwrite(101L);
}