perf: 88136 scc流程分发节点性能优化

This commit is contained in:
2024-08-13 17:42:34 +08:00
parent bf9fb8a071
commit 2ccb4fd908
@@ -85,6 +85,7 @@ import java.io.InputStream;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.jero.modules.activiti.common.ActivitiCommon.*; import static com.jero.modules.activiti.common.ActivitiCommon.*;
@@ -378,7 +379,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
// 分发给多个人的需要复制数据并保存 // 分发给多个人的需要复制数据并保存
List<ProcessStandardComplianceCheckDetail> needAddDetailInfoList = new ArrayList<>(); Queue<ProcessStandardComplianceCheckDetail> needAddDetailInfoQueue = new ConcurrentLinkedQueue<>();
distributeDetailList.parallelStream().forEach(detail -> { distributeDetailList.parallelStream().forEach(detail -> {
String[] engineers = detail.getDesignEngineer().split(","); String[] engineers = detail.getDesignEngineer().split(",");
for (String engineer : engineers) { for (String engineer : engineers) {
@@ -387,12 +388,12 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
newDetail.setId(null); newDetail.setId(null);
newDetail.setDesignEngineer(engineer); newDetail.setDesignEngineer(engineer);
newDetail.setBatchId(batchId); newDetail.setBatchId(batchId);
needAddDetailInfoList.add(newDetail); needAddDetailInfoQueue.add(newDetail);
} }
}); });
// 先删后增 // 先删后增
sccDetailService.removeByIds(ids); sccDetailService.removeByIds(ids);
sccDetailService.saveBatch(needAddDetailInfoList); sccDetailService.saveBatch(needAddDetailInfoQueue, needAddDetailInfoQueue.size());
runtimeService.setVariable(processInstanceId, DESIGNER_LIST, designEngineerList); runtimeService.setVariable(processInstanceId, DESIGNER_LIST, designEngineerList);
runtimeService.setVariable(processInstanceId, BATCH_ID, batchId); runtimeService.setVariable(processInstanceId, BATCH_ID, batchId);
userMap.put(DESIGNER_LIST, String.join(",", designEngineerList)); userMap.put(DESIGNER_LIST, String.join(",", designEngineerList));