perf: 88136 scc流程分发节点性能优化
This commit is contained in:
+4
-3
@@ -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));
|
||||||
|
|||||||
Reference in New Issue
Block a user