【物料变更】大批量导入

This commit is contained in:
10001392 2024-09-11 11:34:23 +08:00
parent 842b9b48ff
commit bc1a959489
1 changed files with 284 additions and 249 deletions

View File

@ -52,6 +52,7 @@ import java.io.IOException;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
@ -372,7 +373,6 @@ public class MaterialUpdateBillService extends ServiceImpl<MaterialUpdateBillMap
}
int lastColIndex = ExcelReader.read(file.getInputStream()).sheet(0).getHeader().getLastColumnIndex();
List<MaterialUpdateBillEntity> ents = new ArrayList<>();
AuthorityDepartmentEntity deptEnt = departmentService.getById(SessionUtil.getPartRowId());
if (Objects.isNull(deptEnt)) {
@ -394,6 +394,38 @@ public class MaterialUpdateBillService extends ServiceImpl<MaterialUpdateBillMap
if (lastColIndex == 4) {
List<MaterialStateUpExcelDTO> excelContext = EecExcelUtil.getExcelContext(file.getInputStream(), MaterialStateUpExcelDTO.class);
if (CollectionUtil.isNotEmpty(excelContext) && excelContext.size() > 1000) {
// 大数据量子线程分批次提交OA每批1000条主线程提前返回结果给前端
CompletableFuture<Void> task1 = CompletableFuture.runAsync(() -> {
List<List<MaterialStateUpExcelDTO>> lists = Lists.partition(excelContext, 1000);
lists.forEach(items -> this.handleImportDataForState(items, applyDeptName, deptEnt));
});
task1.join();
} else {
this.handleImportDataForState(excelContext, applyDeptName, deptEnt);
}
} else {
// 制作物料
List<TwentyMaterialTemplateExcelDTO> excelContext = EecExcelUtil.getExcelContext(file.getInputStream(), TwentyMaterialTemplateExcelDTO.class);
if (CollectionUtil.isNotEmpty(excelContext) && excelContext.size() > 1000) {
// 大数据量子线程分批次提交OA每批1000条主线程提前返回结果给前端
CompletableFuture<Void> task1 = CompletableFuture.runAsync(() -> {
List<List<TwentyMaterialTemplateExcelDTO>> lists = Lists.partition(excelContext, 1000);
lists.forEach(items -> this.handleImportDataForSummary(items, applyDeptName, deptEnt));
});
task1.join();
} else {
this.handleImportDataForSummary(excelContext, applyDeptName, deptEnt);
}
}
return ResultVO.success(Boolean.TRUE);
}
/**
* 状态变更
*/
private ResultVO<Boolean> handleImportDataForState(List<MaterialStateUpExcelDTO> excelContext, String applyDeptName, AuthorityDepartmentEntity deptEnt) {
List<MaterialUpdateBillEntity> ents = new ArrayList<>();
excelContext = excelContext.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).collect(Collectors.toList());
if (excelContext.size() <= 0) {
return ResultVO.error("导入内容不允许为空");
@ -501,9 +533,14 @@ public class MaterialUpdateBillService extends ServiceImpl<MaterialUpdateBillMap
materialMainService.updateBatchById(updateList);
}
}
} else {
// 制作物料
List<TwentyMaterialTemplateExcelDTO> excelContext = EecExcelUtil.getExcelContext(file.getInputStream(), TwentyMaterialTemplateExcelDTO.class);
return ResultVO.success(Boolean.TRUE);
}
/**
* 制作物料综合变更
*/
private ResultVO<Boolean> handleImportDataForSummary(List<TwentyMaterialTemplateExcelDTO> excelContext, String applyDeptName, AuthorityDepartmentEntity deptEnt) {
List<MaterialUpdateBillEntity> ents = new ArrayList<>();
excelContext = excelContext.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).collect(Collectors.toList());
if (excelContext.size() <= 0) {
return ResultVO.error("导入内容不允许为空");
@ -648,8 +685,6 @@ public class MaterialUpdateBillService extends ServiceImpl<MaterialUpdateBillMap
//同步OA
materialUpdateToOAService.sysnToOa(ents);
}
return ResultVO.success(Boolean.TRUE);
}
// 申请部门是 营销中心11,21变更由冻结改成其他状态不允许改成激活
private void validateFreezeStateChangeOther(List<MaterialUpdateBillEntity> updateList, String applyDeptCode) {