|
@@ -35,6 +35,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -167,11 +168,57 @@ public class TBCrmDetailServiceImpl extends ServiceImpl<TBCrmDetailMapper, TBCrm
|
|
|
throw ExceptionResultEnum.ERROR.exception("一次最多支持导入1000条");
|
|
|
}
|
|
|
List<TBCrmDetail> tbCrmDetailList = new ArrayList<>(crmDetailImportDtoList.size());
|
|
|
+ Set<String> courseNameSet = new LinkedHashSet<>();
|
|
|
+ List<String> duplicateCourseNameList = new ArrayList<>();
|
|
|
for (int i = 0; i < crmDetailImportDtoList.size(); i++) {
|
|
|
CrmDetailImportDto c = crmDetailImportDtoList.get(i);
|
|
|
+ if (!courseNameSet.add(c.getCourseName())) { // 如果set.add返回false,表示已经添加过该元素,即有重复
|
|
|
+ duplicateCourseNameList.add(c.getCourseName());
|
|
|
+ }
|
|
|
tbCrmDetailList.add(new TBCrmDetail(crmNo, tfCustomFlow.getFlowDeploymentId(), c, sysUser.getId()));
|
|
|
}
|
|
|
+ if (CollectionUtils.isNotEmpty(duplicateCourseNameList)) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception(
|
|
|
+ "导入数据里有重复的科目:" + StringUtils.join(duplicateCourseNameList, ","));
|
|
|
+ }
|
|
|
if (!CollectionUtils.isEmpty(tbCrmDetailList)) {
|
|
|
+ if (CollectionUtils.isNotEmpty(courseNameSet)) {
|
|
|
+ List<TBCrmDetail> tbCrmDetailListAll = new ArrayList<>();
|
|
|
+ int size = courseNameSet.size();
|
|
|
+ if (size > 500) {
|
|
|
+ List<String> courseNameList = new ArrayList<>(courseNameSet);
|
|
|
+ int max = 500, min = 0;
|
|
|
+ while (max <= size) {
|
|
|
+ List<TBCrmDetail> tbCrmDetailTempList = tbCrmDetailService.list(
|
|
|
+ new QueryWrapper<TBCrmDetail>().lambda().eq(TBCrmDetail::getCrmNo, crmNo)
|
|
|
+ .in(TBCrmDetail::getCourseName, courseNameList.subList(min, max)));
|
|
|
+ if (CollectionUtils.isNotEmpty(tbCrmDetailTempList)) {
|
|
|
+ tbCrmDetailListAll.addAll(tbCrmDetailTempList);
|
|
|
+ }
|
|
|
+ if (max == size) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ min = max;
|
|
|
+ max += max;
|
|
|
+ if (max >= size) {
|
|
|
+ max = size;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ List<TBCrmDetail> tbCrmDetailTempList = tbCrmDetailService.list(
|
|
|
+ new QueryWrapper<TBCrmDetail>().lambda().eq(TBCrmDetail::getCrmNo, crmNo)
|
|
|
+ .in(TBCrmDetail::getCourseName, courseNameSet));
|
|
|
+ if (CollectionUtils.isNotEmpty(tbCrmDetailTempList)) {
|
|
|
+ tbCrmDetailListAll.addAll(tbCrmDetailTempList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(tbCrmDetailListAll)) {
|
|
|
+ List<String> courseNameDuplicateList = tbCrmDetailListAll.stream()
|
|
|
+ .map(s -> s.getCourseName()).collect(Collectors.toList());
|
|
|
+ throw ExceptionResultEnum.ERROR.exception(
|
|
|
+ "已有重复的科目:" + StringUtils.join(courseNameDuplicateList, ","));
|
|
|
+ }
|
|
|
+ }
|
|
|
successData.add("共导入").add(crmDetailImportDtoList.size() + "").add("条数据");
|
|
|
tbCrmDetailService.saveBatch(tbCrmDetailList);
|
|
|
}
|