:fix: 特批附件校验值与业务字典对齐,变更提交补充强校验

- 提交校验判定值由「特批说明」改为「特批附件」,与业务字典 contract_attachment_type 实际选项一致,修复高风险/黑名单客商已上传特批附件仍报错的问题
- 报错文案同步与前端下拉框一致
- submitChange(变更提交/变更驳回重提交)补充同一校验,堵住变更绕过附件强校验的缺口
- 补充字典幂等脚本 blade_contract_attachment_type_dict_20261013.sql(本地为界面新增未沉淀脚本)
This commit is contained in:
刘泉佳
2026-10-13 18:36:07 +08:00
parent f13ee1f11b
commit ef09bfa9cd
2 changed files with 41 additions and 0 deletions
@@ -332,6 +332,8 @@ public class ContractManageServiceImpl extends BaseServiceImpl<ContractManageMap
source.setBillingPlanJson(request.getBillingPlanJson()); source.setSettlementRuleJson(request.getSettlementRuleJson()); source.setPreSettlementConfigJson(request.getPreSettlementConfigJson()); source.setFormalSettlementConfigJson(request.getFormalSettlementConfigJson()); source.setPaymentRatioJson(request.getPaymentRatioJson());
source.setContractFileJson(request.getContractFileJson()); source.setAttachmentsJson(request.getAttachmentsJson());
source.setChangeAttachmentsJson(TransportBusinessSupport.trimToNull(request.getChangeAttachmentsJson()));
// 高风险/黑名单客商管控:变更提交同样必须携带特批附件(与新增/暂存/转正式一致,外部客商,内部组织默认无风险)
validateSpecExplanationOnSubmit(source);
Map<String, Object> afterData = buildContractChangeSnapshot(source);
retainChangedSnapshotFields(beforeData, afterData);
source.setApprovalStatus(STATUS_CHANGE_REVIEWING);
@@ -0,0 +1,39 @@
-- 合同附件类型业务字典(contract_attachment_type):合同文件/双章归档文件/特批附件。
-- 后端高风险/黑名单客商提交校验按 fileType=特批附件 精确匹配(HcsSyncConstant#ATTACHMENT_TYPE_SPEC_EXPLANATION),缺字典会导致无法上传特批附件。
-- 本地环境曾走界面新增,未沉淀脚本;本脚本幂等可重复执行,已存在的项跳过。
-- ① 字典父项:合同附件类型
INSERT INTO blade_dict_biz (id, tenant_id, parent_id, code, dict_key, dict_value, sort, remark, is_sealed, status, is_deleted)
SELECT 2099691747182096386, '000000', 0, 'contract_attachment_type', '-1', '合同附件类型', 1, NULL, 0, 1, 0
WHERE NOT EXISTS (
SELECT 1 FROM blade_dict_biz
WHERE code = 'contract_attachment_type' AND dict_key = '-1' AND tenant_id = '000000' AND is_deleted = 0
);
-- ② 子项:parent_id 动态取父项ID,兼容各环境父项已单独创建的情况
INSERT INTO blade_dict_biz (id, tenant_id, parent_id, code, dict_key, dict_value, sort, remark, is_sealed, status, is_deleted)
SELECT 2099691808217608194, '000000',
(SELECT id FROM blade_dict_biz WHERE code = 'contract_attachment_type' AND dict_key = '-1' AND tenant_id = '000000' AND is_deleted = 0 LIMIT 1),
'contract_attachment_type', '合同文件', '合同文件', 1, NULL, 0, 1, 0
WHERE NOT EXISTS (
SELECT 1 FROM blade_dict_biz
WHERE code = 'contract_attachment_type' AND dict_key = '合同文件' AND tenant_id = '000000' AND is_deleted = 0
);
INSERT INTO blade_dict_biz (id, tenant_id, parent_id, code, dict_key, dict_value, sort, remark, is_sealed, status, is_deleted)
SELECT 2099691889775849473, '000000',
(SELECT id FROM blade_dict_biz WHERE code = 'contract_attachment_type' AND dict_key = '-1' AND tenant_id = '000000' AND is_deleted = 0 LIMIT 1),
'contract_attachment_type', '双章归档文件', '双章归档文件', 1, NULL, 0, 1, 0
WHERE NOT EXISTS (
SELECT 1 FROM blade_dict_biz
WHERE code = 'contract_attachment_type' AND dict_key = '双章归档文件' AND tenant_id = '000000' AND is_deleted = 0
);
INSERT INTO blade_dict_biz (id, tenant_id, parent_id, code, dict_key, dict_value, sort, remark, is_sealed, status, is_deleted)
SELECT 2099691980955824130, '000000',
(SELECT id FROM blade_dict_biz WHERE code = 'contract_attachment_type' AND dict_key = '-1' AND tenant_id = '000000' AND is_deleted = 0 LIMIT 1),
'contract_attachment_type', '特批附件', '特批附件', 1, NULL, 0, 1, 0
WHERE NOT EXISTS (
SELECT 1 FROM blade_dict_biz
WHERE code = 'contract_attachment_type' AND dict_key = '特批附件' AND tenant_id = '000000' AND is_deleted = 0
);