perf: scc流程不分发导入

This commit is contained in:
2024-08-14 10:42:57 +08:00
parent b2b21194c6
commit c72bb590d4
@@ -85,8 +85,10 @@ import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import static com.jero.modules.activiti.common.ActivitiCommon.*;
import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.UNALLOCATED_QUANTITY;
@@ -625,6 +627,9 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
@Override
public Map<String, Object> importExcelWithData(MultipartFile file, String taskId) throws IOException {
// 异步获取 handleData
CompletableFuture<ProcessInfoVO<ProcessSccVO>> handleDataFuture = CompletableFuture.supplyAsync(() -> this.getHandleData(taskId));
List<SysDictItemCore> listDict = commonAPI.getDictItemAll();
Map<String, Object> resultMap = new HashMap<>();
List<String> errorMsgs = new ArrayList<>();
@@ -715,8 +720,9 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
resultMap.put("flag", YesOrNoEnum.YES.getValue());
// 转换为字典值
this.transToDictValue(list, listDict, fileMap);
// 等待异步获取的数据返回
ProcessInfoVO<ProcessSccVO> handleData = handleDataFuture.join();
// 清洗
ProcessInfoVO<ProcessSccVO> handleData = this.getHandleData(taskId);
this.cleanData(list, handleData.getBusinessInfoDTO().getDetailInfoList());
resultMap.put("dataList", list);
}
@@ -760,37 +766,55 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
}
private void cleanData(List<WithoutDistributeExcelTemplate> list, List<ProcessStandardComplianceCheckDetail> existDataList) {
for (int i = 0; i < list.size(); i++) {
IntStream.range(0, list.size()).parallel().forEach(i -> {
WithoutDistributeExcelTemplate item = list.get(i);
item.setId(existDataList.get(i).getId());
item.setProcessInstanceId(existDataList.get(i).getProcessInstanceId());
item.setCheckId(existDataList.get(i).getCheckId());
ProcessStandardComplianceCheckDetail existingData = existDataList.get(i);
// 设置基础属性
item.setId(existingData.getId());
item.setProcessInstanceId(existingData.getProcessInstanceId());
item.setCheckId(existingData.getCheckId());
// 根据 result 进行条件清理
String result = item.getResult();
if (StrUtil.isBlank(result)) {
item.setUnsatisfiedRequire(null);
item.setCorrectionSolution(null);
item.setCorrectionCost(null);
item.setCommonality(null);
item.setCommonalityCost(null);
item.setRemark(null);
item.setMaterial(null);
clearFieldsForBlankResult(item);
} else {
switch (result) {
case CONFORM_TO:
case NOT_INVOLVE:
item.setUnsatisfiedRequire(null);
item.setCorrectionSolution(null);
item.setCorrectionCost(null);
item.setCommonality(null);
item.setCommonalityCost(null);
clearFieldsForConformOrNotInvolve(item);
break;
case DISCREPANCY:
case TO_BE_VERIFIED:
item.setRemark(null);
item.setMaterial(null);
clearFieldsForDiscrepancyOrToBeVerified(item);
break;
}
}
}
});
}
private void clearFieldsForBlankResult(WithoutDistributeExcelTemplate item) {
item.setUnsatisfiedRequire(null);
item.setCorrectionSolution(null);
item.setCorrectionCost(null);
item.setCommonality(null);
item.setCommonalityCost(null);
item.setRemark(null);
item.setMaterial(null);
}
private void clearFieldsForConformOrNotInvolve(WithoutDistributeExcelTemplate item) {
item.setUnsatisfiedRequire(null);
item.setCorrectionSolution(null);
item.setCorrectionCost(null);
item.setCommonality(null);
item.setCommonalityCost(null);
}
private void clearFieldsForDiscrepancyOrToBeVerified(WithoutDistributeExcelTemplate item) {
item.setRemark(null);
item.setMaterial(null);
}
private void transToDictValue(List<WithoutDistributeExcelTemplate> list, List<SysDictItemCore> listDict, Map<String, File> fileMap) {