:fix: 合同特批附件归口佐证材料区校验并更新特批附件文案
This commit is contained in:
+20
-8
@@ -161,7 +161,7 @@ public class ContractManageServiceImpl extends BaseServiceImpl<ContractManageMap
|
||||
prepare(contractManage);
|
||||
validateDraft(contractManage);
|
||||
validateTemporary(contractManage);
|
||||
// 高风险/黑名单客商管控:必须上传特批说明附件(外部客商,内部组织默认无风险)
|
||||
// 高风险/黑名单客商管控:必须上传特批附件(外部客商,内部组织默认无风险)
|
||||
validateSpecExplanationOnSubmit(contractManage);
|
||||
if (Func.isNotEmpty(contractManage.getId())) {
|
||||
validateContractPartyCombinationUnique(contractManage);
|
||||
@@ -185,7 +185,7 @@ public class ContractManageServiceImpl extends BaseServiceImpl<ContractManageMap
|
||||
throw new ServiceException("仅草稿或已撤回/已驳回的临时合同允许提交临时合同审批");
|
||||
}
|
||||
validateTemporary(contractManage);
|
||||
// 高风险/黑名单客商管控:必须上传特批说明附件(外部客商,内部组织默认无风险)
|
||||
// 高风险/黑名单客商管控:必须上传特批附件(外部客商,内部组织默认无风险)
|
||||
validateSpecExplanationOnSubmit(contractManage);
|
||||
// 临时放开新增合同从草稿转临时合同时的组合重复校验。
|
||||
// validateContractPartyCombinationUnique(contractManage);
|
||||
@@ -205,7 +205,7 @@ public class ContractManageServiceImpl extends BaseServiceImpl<ContractManageMap
|
||||
throw new ServiceException("仅临时合同或已撤回/已驳回的正式合同允许提交正式合同审批");
|
||||
}
|
||||
validateFormal(contractManage);
|
||||
// 高风险/黑名单客商管控:必须上传特批说明附件(外部客商,内部组织默认无风险)
|
||||
// 高风险/黑名单客商管控:必须上传特批附件(外部客商,内部组织默认无风险)
|
||||
validateSpecExplanationOnSubmit(contractManage);
|
||||
// 临时放开新增合同从临时转正式合同时的组合重复校验。
|
||||
// validateContractPartyCombinationUnique(contractManage);
|
||||
@@ -1118,7 +1118,8 @@ public class ContractManageServiceImpl extends BaseServiceImpl<ContractManageMap
|
||||
|
||||
/**
|
||||
* 高风险/黑名单客商提交校验:甲/乙方为外部客商且高风险(C101-1 风险等级=2)或黑名单时,
|
||||
* 必须已上传「特批说明」类型附件(fileType=特批说明,业务字典 contract_attachment_type);内部组织类型客商默认无风险
|
||||
* 必须已上传「特批附件」类型附件(fileType=特批附件,业务字典 contract_supporting_attachment_type),
|
||||
* 归口「附件(佐证材料等)」(attachmentsJson)区上传;用印材料(contractFileJson)历史已传行兼容放行;内部组织类型客商默认无风险
|
||||
*
|
||||
* @param contractManage 合同单
|
||||
*/
|
||||
@@ -1127,14 +1128,25 @@ public class ContractManageServiceImpl extends BaseServiceImpl<ContractManageMap
|
||||
if (!risky) {
|
||||
return;
|
||||
}
|
||||
boolean hasSpecExplanation = parseJsonArray(contractManage.getAttachmentsJson()).stream()
|
||||
boolean hasSpecExplanation = this.hasSpecAttachment(contractManage.getAttachmentsJson())
|
||||
|| this.hasSpecAttachment(contractManage.getContractFileJson());
|
||||
if (!hasSpecExplanation) {
|
||||
throw new ServiceException("合同相对方存在高风险/黑名单客商,必须上传「特批附件」类型附件后再提交审批");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 附件 JSON 中是否已存在特批附件(fileType=特批附件)
|
||||
*
|
||||
* @param attachmentsJson 附件元数据 JSON 数组
|
||||
* @return 是否存在特批附件
|
||||
*/
|
||||
private boolean hasSpecAttachment(String attachmentsJson) {
|
||||
return parseJsonArray(attachmentsJson).stream()
|
||||
.filter(Map.class::isInstance)
|
||||
.map(Map.class::cast)
|
||||
.anyMatch(attachment -> HcsSyncConstant.ATTACHMENT_TYPE_SPEC_EXPLANATION
|
||||
.equals(Objects.toString(attachment.get(HcsSyncConstant.ATTACHMENT_TYPE_FIELD), null)));
|
||||
if (!hasSpecExplanation) {
|
||||
throw new ServiceException("合同相对方存在高风险/黑名单客商,必须上传「特批说明」类型附件后再提交审批");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user