feat(REQ-5965) - 调整业务自定义文档在存入 process_sign 表时,丢失属性的情况

This commit is contained in:
wangli 2025-12-20 02:24:39 +08:00
parent 6bf313d78a
commit 1e4d9dcca5

View File

@ -67,7 +67,7 @@ public class WpsUtil {
String jsonStr = "[{\"desc\":\"审批编号\",\"key\":\"processInstanceId\",\"type\":\"text\",\"value\":\"202512200123200000000\"},{\"desc\":\"发起时间\",\"key\":\"startTime\",\"type\":\"text\",\"value\":\"2025.12.20 01:23:56\"},{\"desc\":\"审批结束时间\",\"key\":\"endTime\",\"type\":\"text\"},{\"desc\":\"业务名称\",\"key\":\"processDefinitionKey\",\"type\":\"text\",\"value\":\"安全教育签字(anquanjiaoyu)\"},{\"desc\":\"业务变量主讲人单位\",\"key\":\"speakerUnit\",\"type\":\"text\",\"value\":\"四川星腾贸易有限公司\"},{\"desc\":\"业务变量主讲人部门\",\"key\":\"speakerNode\",\"type\":\"text\",\"value\":\"四川星腾贸易有限公司\"},{\"desc\":\"业务变量项目名称\",\"key\":\"workspaceName\",\"type\":\"text\",\"value\":\"test-0925项目服务部\"},{\"desc\":\"业务变量签署发起时间\",\"key\":\"signingInitiationTime\",\"type\":\"text\",\"value\":\"20251219\"},{\"desc\":\"业务变量主讲人姓名\",\"key\":\"speakerName\",\"type\":\"text\",\"value\":\"罗福\"},{\"desc\":\"发起者\",\"key\":\"initiator\",\"type\":\"obj\",\"value\":\"{\\\"assignerName\\\":\\\"罗福\\\",\\\"avatar\\\":\\\"https://axzo-app.oss-cn-chengdu.aliyuncs.com/face/8c29d036-5db3-431d-b537-9d6d5c8019da.jpg\\\",\\\"nodeId\\\":\\\"7399\\\",\\\"ouId\\\":\\\"6158\\\",\\\"personId\\\":\\\"9000399522\\\",\\\"tenantId\\\":\\\"399\\\"}\"},{\"desc\":\"主讲人审批\",\"key\":\"node_330665593249_axv0\",\"type\":\"signatureAndAdvice\",\"value\":[{\"advice\":\"123\",\"approverName\":\"罗福\",\"operationTime\":1766165056926,\"result\":\"已同意\"}]},{\"desc\":\"教育日期\",\"key\":\"educationDate\",\"type\":\"text\",\"value\":\"2025-12-02\"},{\"desc\":\"教育时长\",\"key\":\"educationDuration\",\"type\":\"text\",\"value\":\"11小时\"},{\"desc\":\"图片\",\"key\":\"picture\",\"type\":\"img\",\"value\":\"[{\\\"fileName\\\":\\\"1738899982734-97oknewbe77.png\\\",\\\"fileUrl\\\":\\\"https://axzo-public.oss-cn-chengdu.aliyuncs.com/cms/cms_test/4c7875246b9049188a055fb1c80effa4.png\\\",\\\"fileKey\\\":\\\"4c7875246b9049188a055fb1c80effa4\\\"}]\"},{\"desc\":\"签字工人\",\"key\":\"worker\",\"type\":\"text\",\"value\":\"母春田\"},{\"desc\":\"主讲人审批姓名\",\"key\":\"node_330665593249_axv0_approverName\",\"type\":\"text\",\"value\":\"罗福\"},{\"desc\":\"主讲人审批审批结果\",\"key\":\"node_330665593249_axv0_activityResult\",\"type\":\"text\",\"value\":\"已同意\"},{\"desc\":\"主讲人审批电子签名\",\"key\":\"node_330665593249_axv0_signature\",\"type\":\"img\",\"value\":[{}]},{\"desc\":\"主讲人审批审批意见\",\"key\":\"node_330665593249_axv0_advice\",\"type\":\"text\",\"value\":\"123\"},{\"desc\":\"主讲人审批日期\",\"key\":\"node_330665593249_axv0_activityOperationTime\",\"type\":\"text\",\"value\":\"2025.12.20\"},{\"desc\":\"发起人姓名\",\"key\":\"initiatorName\",\"type\":\"text\",\"value\":\"罗福\"},{\"desc\":\"发起人岗位\",\"key\":\"initiatorPosition\",\"type\":\"text\",\"value\":\"测试岗位003\"},{\"desc\":\"发起人联系方式\",\"key\":\"initiatorPhone\",\"type\":\"text\",\"value\":\"18080995942\"}]";
List<VariableObjectDTO> wpsVariables = JSON.parseArray(jsonStr, VariableObjectDTO.class);
List<FileReplaceContent> fileReplaceContents = BeanMapper.copyList(wpsVariables.stream()
.filter(i -> Objects.nonNull(i.getValue()))
.filter(i -> Objects.nonNull(i.getValue()) && checkNotEmptyColl(i))
.filter(i -> !(Objects.equals(i.getType().name(), "img") && !StringUtils.hasText(i.getValue().toString())))
.filter(i -> Objects.equals(i.getType().name(), "img") || Objects.equals(i.getType().name(), "text"))
.collect(Collectors.toList()), FileReplaceContent.class, (s, t) -> {
@ -100,7 +100,7 @@ public class WpsUtil {
String fileCode, String fileKey, String fileName) {
List<FileReplaceContent> fileReplaceContents = BeanMapper.copyList(wpsVariables.stream()
.filter(i -> Objects.nonNull(i.getValue()) && checkEmptyColl(i))
.filter(i -> Objects.nonNull(i.getValue()) && checkNotEmptyColl(i))
.filter(i -> !(Objects.equals(i.getType().name(), "img") && !StringUtils.hasText(i.getValue().toString())))
.filter(i -> Objects.equals(i.getType().name(), "img") || Objects.equals(i.getType().name(), "text"))
.collect(Collectors.toList()), FileReplaceContent.class, (s, t) -> {
@ -133,12 +133,13 @@ public class WpsUtil {
}
}
private boolean checkEmptyColl(VariableObjectDTO i) {
if (i.getValue() instanceof Collection && CollectionUtils.isEmpty((Collection<?>) i.getValue())) {
return false;
}
private static boolean checkNotEmptyColl(VariableObjectDTO i) {
if (!(i.getValue() instanceof Collection)) {
return true;
}
return !CollectionUtils.isEmpty((Collection<?>) i.getValue());
}
public List<VariableObjectDTO> getWpsReplaceVariables(ProcessEngineConfigurationImpl processEngineConfiguration, String processInstanceId) {
CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutor();
@ -169,7 +170,7 @@ public class WpsUtil {
signatureAndAdvices.add(VariableObjectDTO.builder()
.key(variableObjectDTO.getKey() + "_signature")
.desc(variableObjectDTO.getDesc() + "电子签名")
.value(Lists.newArrayList(UploadFieldDTO.builder().fileKey(signDetail.getSignature()).fileUrl(CollectionUtils.isEmpty(signUrl) ? null : signUrl.get(0).getSignUrl()).build()))
.value(CollectionUtils.isEmpty(signUrl) ? Lists.newArrayList() : Lists.newArrayList(UploadFieldDTO.builder().fileKey(signDetail.getSignature()).fileUrl(CollectionUtils.isEmpty(signUrl) ? null : signUrl.get(0).getSignUrl()).build()))
.type(VariableObjectDTO.Type.img)
.build());
signatureAndAdvices.add(VariableObjectDTO.builder()