perf: scc流程不分发导入
This commit is contained in:
+44
-20
@@ -85,8 +85,10 @@ 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.CompletableFuture;
|
||||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
import static com.jero.modules.activiti.common.ActivitiCommon.*;
|
import static com.jero.modules.activiti.common.ActivitiCommon.*;
|
||||||
import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.UNALLOCATED_QUANTITY;
|
import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.UNALLOCATED_QUANTITY;
|
||||||
@@ -625,6 +627,9 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> importExcelWithData(MultipartFile file, String taskId) throws IOException {
|
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();
|
List<SysDictItemCore> listDict = commonAPI.getDictItemAll();
|
||||||
Map<String, Object> resultMap = new HashMap<>();
|
Map<String, Object> resultMap = new HashMap<>();
|
||||||
List<String> errorMsgs = new ArrayList<>();
|
List<String> errorMsgs = new ArrayList<>();
|
||||||
@@ -715,8 +720,9 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
|||||||
resultMap.put("flag", YesOrNoEnum.YES.getValue());
|
resultMap.put("flag", YesOrNoEnum.YES.getValue());
|
||||||
// 转换为字典值
|
// 转换为字典值
|
||||||
this.transToDictValue(list, listDict, fileMap);
|
this.transToDictValue(list, listDict, fileMap);
|
||||||
|
// 等待异步获取的数据返回
|
||||||
|
ProcessInfoVO<ProcessSccVO> handleData = handleDataFuture.join();
|
||||||
// 清洗
|
// 清洗
|
||||||
ProcessInfoVO<ProcessSccVO> handleData = this.getHandleData(taskId);
|
|
||||||
this.cleanData(list, handleData.getBusinessInfoDTO().getDetailInfoList());
|
this.cleanData(list, handleData.getBusinessInfoDTO().getDetailInfoList());
|
||||||
resultMap.put("dataList", list);
|
resultMap.put("dataList", list);
|
||||||
}
|
}
|
||||||
@@ -760,37 +766,55 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void cleanData(List<WithoutDistributeExcelTemplate> list, List<ProcessStandardComplianceCheckDetail> existDataList) {
|
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);
|
WithoutDistributeExcelTemplate item = list.get(i);
|
||||||
item.setId(existDataList.get(i).getId());
|
ProcessStandardComplianceCheckDetail existingData = existDataList.get(i);
|
||||||
item.setProcessInstanceId(existDataList.get(i).getProcessInstanceId());
|
|
||||||
item.setCheckId(existDataList.get(i).getCheckId());
|
// 设置基础属性
|
||||||
|
item.setId(existingData.getId());
|
||||||
|
item.setProcessInstanceId(existingData.getProcessInstanceId());
|
||||||
|
item.setCheckId(existingData.getCheckId());
|
||||||
|
|
||||||
|
// 根据 result 进行条件清理
|
||||||
String result = item.getResult();
|
String result = item.getResult();
|
||||||
if (StrUtil.isBlank(result)) {
|
if (StrUtil.isBlank(result)) {
|
||||||
item.setUnsatisfiedRequire(null);
|
clearFieldsForBlankResult(item);
|
||||||
item.setCorrectionSolution(null);
|
|
||||||
item.setCorrectionCost(null);
|
|
||||||
item.setCommonality(null);
|
|
||||||
item.setCommonalityCost(null);
|
|
||||||
item.setRemark(null);
|
|
||||||
item.setMaterial(null);
|
|
||||||
} else {
|
} else {
|
||||||
switch (result) {
|
switch (result) {
|
||||||
case CONFORM_TO:
|
case CONFORM_TO:
|
||||||
case NOT_INVOLVE:
|
case NOT_INVOLVE:
|
||||||
item.setUnsatisfiedRequire(null);
|
clearFieldsForConformOrNotInvolve(item);
|
||||||
item.setCorrectionSolution(null);
|
|
||||||
item.setCorrectionCost(null);
|
|
||||||
item.setCommonality(null);
|
|
||||||
item.setCommonalityCost(null);
|
|
||||||
break;
|
break;
|
||||||
case DISCREPANCY:
|
case DISCREPANCY:
|
||||||
case TO_BE_VERIFIED:
|
case TO_BE_VERIFIED:
|
||||||
item.setRemark(null);
|
clearFieldsForDiscrepancyOrToBeVerified(item);
|
||||||
item.setMaterial(null);
|
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) {
|
private void transToDictValue(List<WithoutDistributeExcelTemplate> list, List<SysDictItemCore> listDict, Map<String, File> fileMap) {
|
||||||
|
|||||||
Reference in New Issue
Block a user