完善流程部门权限并补充余值覆盖字段

This commit is contained in:
wkc
2026-06-08 17:15:01 +08:00
parent eef36ff0ec
commit f11d20abc7
22 changed files with 538 additions and 120 deletions

View File

@@ -56,6 +56,9 @@ public class CorporateLoanPricingCreateDTO implements Serializable {
@NotBlank(message = "贷款期限不能为空")
private String loanTerm;
@Schema(description = "余值覆盖", example = "0")
private String resCover;
@Schema(description = "绿色贷款", example = "0")
private String isGreenLoan;

View File

@@ -163,6 +163,12 @@ public class ModelInvokeDTO {
*/
private String couponRate;
/**
* 余值覆盖(非必填)
* 可选值0/1
*/
private String resCover;
// /**
// * 贷款利率(必填)
// */

View File

@@ -112,6 +112,9 @@ public class LoanPricingWorkflow implements Serializable
/** 存单票面利率 */
private String couponRate;
/** 余值覆盖: 0/1 */
private String resCover;
/** 是否有经营佐证: true/false */
private String bizProof;
@@ -146,6 +149,9 @@ public class LoanPricingWorkflow implements Serializable
/** 是否普惠小微借款人: true/false */
private String isInclusiveFinance;
/** 创建人部门ID */
private Long deptId;
/** 创建者 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
@@ -154,6 +160,10 @@ public class LoanPricingWorkflow implements Serializable
@TableField(exist = false)
private String dataScopeCreateBy;
/** 列表数据权限部门过滤条件 */
@TableField(exist = false)
private Long dataScopeDeptId;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)

View File

@@ -1,46 +0,0 @@
package com.ruoyi.loanpricing.service;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@Service
public class LoanPricingSensitiveDisplayService
{
public String maskCustName(String custName)
{
if (!StringUtils.hasText(custName))
{
return custName;
}
if (custName.contains("公司") && custName.length() > 4)
{
return custName.substring(0, 2) + "*".repeat(custName.length() - 4) + custName.substring(custName.length() - 2);
}
if (custName.length() == 1)
{
return custName;
}
return custName.substring(0, 1) + "*".repeat(custName.length() - 1);
}
public String maskIdNum(String idNum)
{
if (!StringUtils.hasText(idNum))
{
return idNum;
}
if (idNum.startsWith("91") && idNum.length() == 18)
{
return idNum.substring(0, 2) + "*".repeat(13) + idNum.substring(idNum.length() - 3);
}
if (idNum.matches("\\d{17}[\\dXx]"))
{
return idNum.substring(0, 4) + "*".repeat(8) + idNum.substring(idNum.length() - 4);
}
if (idNum.length() > 5)
{
return idNum.substring(0, 2) + "*".repeat(idNum.length() - 5) + idNum.substring(idNum.length() - 3);
}
return "*".repeat(idNum.length());
}
}

View File

@@ -21,7 +21,6 @@ import com.ruoyi.loanpricing.mapper.LoanPricingWorkflowMapper;
import com.ruoyi.loanpricing.mapper.ModelCorpOutputFieldsMapper;
import com.ruoyi.loanpricing.mapper.ModelRetailOutputFieldsMapper;
import com.ruoyi.loanpricing.service.ILoanPricingWorkflowService;
import com.ruoyi.loanpricing.service.LoanPricingSensitiveDisplayService;
import com.ruoyi.loanpricing.service.LoanPricingModelService;
import com.ruoyi.loanpricing.service.SensitiveFieldCryptoService;
import com.ruoyi.loanpricing.util.LoanPricingConverter;
@@ -67,10 +66,6 @@ public class LoanPricingWorkflowServiceImpl implements ILoanPricingWorkflowServi
@Resource
private SensitiveFieldCryptoService sensitiveFieldCryptoService;
@Resource
private LoanPricingSensitiveDisplayService loanPricingSensitiveDisplayService;
/**
* 发起利率定价流程
*
@@ -317,9 +312,7 @@ public class LoanPricingWorkflowServiceImpl implements ILoanPricingWorkflowServi
{
LoanPricingWorkflow scopedQuery = applyWorkflowListDataScope(loanPricingWorkflow);
IPage<LoanPricingWorkflowListVO> pageResult = loanPricingWorkflowMapper.selectWorkflowPageWithRates(page, scopedQuery);
pageResult.getRecords().forEach(row -> row.setCustName(
loanPricingSensitiveDisplayService.maskCustName(
sensitiveFieldCryptoService.decrypt(row.getCustName()))));
pageResult.getRecords().forEach(row -> row.setCustName(sensitiveFieldCryptoService.decrypt(row.getCustName())));
return pageResult;
}
@@ -339,8 +332,8 @@ public class LoanPricingWorkflowServiceImpl implements ILoanPricingWorkflowServi
LoanPricingWorkflow loanPricingWorkflow = loanPricingWorkflowMapper.selectOne(wrapper);
String plainCustName = sensitiveFieldCryptoService.decrypt(loanPricingWorkflow.getCustName());
String plainIdNum = sensitiveFieldCryptoService.decrypt(loanPricingWorkflow.getIdNum());
loanPricingWorkflow.setCustName(loanPricingSensitiveDisplayService.maskCustName(plainCustName));
loanPricingWorkflow.setIdNum(loanPricingSensitiveDisplayService.maskIdNum(plainIdNum));
loanPricingWorkflow.setCustName(plainCustName);
loanPricingWorkflow.setIdNum(plainIdNum);
loanPricingWorkflowVO.setLoanPricingWorkflow(loanPricingWorkflow);
if (Objects.nonNull(loanPricingWorkflow.getModelOutputId())){
@@ -348,7 +341,6 @@ public class LoanPricingWorkflowServiceImpl implements ILoanPricingWorkflowServi
ModelRetailOutputFields modelRetailOutputFields = modelRetailOutputFieldsMapper.selectById(loanPricingWorkflow.getModelOutputId());
if (Objects.nonNull(modelRetailOutputFields))
{
maskModelRetailOutputBasicInfo(modelRetailOutputFields);
loanPricingWorkflow.setLoanRate(modelRetailOutputFields.getFinalCalculateRate());
}
loanPricingWorkflowVO.setModelRetailOutputFields(modelRetailOutputFields);
@@ -357,7 +349,6 @@ public class LoanPricingWorkflowServiceImpl implements ILoanPricingWorkflowServi
ModelCorpOutputFields modelCorpOutputFields = modelCorpOutputFieldsMapper.selectById(loanPricingWorkflow.getModelOutputId());
if (Objects.nonNull(modelCorpOutputFields))
{
maskModelCorpOutputBasicInfo(modelCorpOutputFields);
loanPricingWorkflow.setLoanRate(modelCorpOutputFields.getFinalCalculateRate());
}
loanPricingWorkflowVO.setModelCorpOutputFields(modelCorpOutputFields);
@@ -455,22 +446,6 @@ public class LoanPricingWorkflowServiceImpl implements ILoanPricingWorkflowServi
return user.getNickName() + "-" + loginUser.getUsername();
}
private void maskModelRetailOutputBasicInfo(ModelRetailOutputFields modelRetailOutputFields)
{
modelRetailOutputFields.setCustName(
loanPricingSensitiveDisplayService.maskCustName(modelRetailOutputFields.getCustName()));
modelRetailOutputFields.setIdNum(
loanPricingSensitiveDisplayService.maskIdNum(modelRetailOutputFields.getIdNum()));
}
private void maskModelCorpOutputBasicInfo(ModelCorpOutputFields modelCorpOutputFields)
{
modelCorpOutputFields.setCustName(
loanPricingSensitiveDisplayService.maskCustName(modelCorpOutputFields.getCustName()));
modelCorpOutputFields.setIdNum(
loanPricingSensitiveDisplayService.maskIdNum(modelCorpOutputFields.getIdNum()));
}
/**
* 设定执行利率
*

View File

@@ -58,6 +58,7 @@ public class LoanPricingConverter {
entity.setBusinessType(dto.getBusinessType());
entity.setLoanRateHistory(dto.getLoanRateHistory());
entity.setCouponRate(dto.getCouponRate());
entity.setResCover(dto.getResCover());
entity.setRepayMethod(dto.getRepayMethod());
entity.setCollType(dto.getCollType());
entity.setCollThirdParty(dto.getCollThirdParty());

View File

@@ -27,6 +27,15 @@
<if test="query != null and query.dataScopeCreateBy != null and query.dataScopeCreateBy != ''">
AND lpw.create_by = #{query.dataScopeCreateBy}
</if>
<if test="query != null and query.dataScopeDeptId != null">
AND lpw.dept_id IN (
SELECT dept_id
FROM sys_dept
WHERE del_flag = '0'
AND (dept_id = #{query.dataScopeDeptId}
OR find_in_set(#{query.dataScopeDeptId}, ancestors))
)
</if>
<if test="query != null and query.createBy != null and query.createBy != ''">
AND SUBSTRING_INDEX(lpw.create_by, '-', -1) LIKE CONCAT('%', #{query.createBy}, '%')
</if>