Explorar o código

refactor:字典管理批量导入含','字段支持多行累加优化

caozixuan %!s(int64=3) %!d(string=hai) anos
pai
achega
93efcf51a7

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncCourseDataImportService.java

@@ -48,7 +48,7 @@ public class AsyncCourseDataImportService extends AsyncImportTaskTemplete {
         try {
             TaskLogicService taskLogicService = SpringContextHolder.getBean(TaskLogicService.class);
 
-            // 执行导入基础学生数据
+            // 执行导入基础课程数据
             Map<String, Object> result = taskLogicService.executeImportBasicCourseLogic(map);
 
 

+ 29 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -1182,7 +1182,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         InputStream inputStream = (InputStream) map.get("inputStream");
         List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(BasicCourseImportDto.class, DescribeImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
             List<ExcelError> excelErrorTemp = new ArrayList<>();
-//            Map<String, String> checkMap = new HashMap<>();
+            Map<String, BasicCourseImportDto> courseDtoMap = new HashMap<>();
             for (int i = 0; i < finalExcelList.size(); i++) {
                 LinkedMultiValueMap<Integer, Object> excelMap = finalExcelList.get(i);
                 List<Object> basicCourseImportDtoList = excelMap.get(i);
@@ -1190,6 +1190,8 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 if (basicCourseImportDtoList.get(0) instanceof DescribeImportDto) {
                     continue;
                 }
+                map.put("dataCount", basicCourseImportDtoList.size());
+                List<BasicCourseImportDto> duplicateData = new ArrayList<>();
                 for (int y = 0; y < Objects.requireNonNull(basicCourseImportDtoList).size(); y++) {
                     BasicCourseImportDto basicCourseImportDto = (BasicCourseImportDto) basicCourseImportDtoList.get(y);
                     String courseName = basicCourseImportDto.getCourseName();
@@ -1197,12 +1199,25 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     String teachingRoomName = basicCourseImportDto.getTeachingRoomName();
                     String clazz = basicCourseImportDto.getClazz();
 
-                    // 检验excel中
-//                    if (checkMap.containsKey(courseCode)) {
-//                        throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【课程编号】:" + courseCode);
-//                    } else {
-//                        checkMap.put(courseCode, courseName);
-//                    }
+                    if (courseDtoMap.containsKey(courseCode)){
+                        BasicCourseImportDto primaryCell = courseDtoMap.get(courseCode);
+                        String primaryName = primaryCell.getCourseName();
+                        String primaryTeachingRoomName = primaryCell.getTeachingRoomName();
+                        if (!Objects.equals(primaryName,courseName)){
+                            throw ExceptionResultEnum.ERROR.exception("【课程编号】 : " + courseCode + ",存在不同的【课程名称】");
+                        }
+                        if (!Objects.equals(primaryTeachingRoomName,teachingRoomName)){
+                            throw ExceptionResultEnum.ERROR.exception("【课程编号】 : " + courseCode + ",存在不同的【所属教研室】");
+                        }
+                        String primaryClazz = primaryCell.getClazz();
+                        if (SystemConstant.strNotNull(clazz)){
+                            primaryClazz = primaryClazz + SystemConstant.COMMA + clazz;
+                            primaryCell.setClazz(primaryClazz);
+                        }
+                        duplicateData.add(basicCourseImportDto);
+                    }else {
+                        courseDtoMap.put(courseCode, basicCourseImportDto);
+                    }
 
                     excelErrorTemp.addAll(ExcelUtil.checkExcelField(basicCourseImportDto, y, i));
                     if (Objects.isNull(courseCode) || courseCode.length() > 30 || !courseCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
@@ -1212,6 +1227,8 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                         excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程名称]不符合输入规范"));
                     }
                 }
+                // 删除重复的(需要累加的)excel数据
+                basicCourseImportDtoList.removeAll(duplicateData);
             }
             if (excelErrorTemp.size() > 0) {
                 throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(excelErrorTemp));
@@ -1236,6 +1253,8 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 if (sysUserImportDtoList.get(0) instanceof DescribeImportDto) {
                     continue;
                 }
+                map.put("dataCount", sysUserImportDtoList.size());
+                List<SysUserImportDto> duplicateData = new ArrayList<>();
                 for (int y = 0; y < Objects.requireNonNull(sysUserImportDtoList).size(); y++) {
                     SysUserImportDto sysUserImportDto = (SysUserImportDto) sysUserImportDtoList.get(y);
                     String name = sysUserImportDto.getName();
@@ -1260,10 +1279,10 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                         }
                         String priRoleName = primaryCell.getRoleName();
                         if (SystemConstant.strNotNull(roleName)){
-                            priRoleName = priRoleName + "," + roleName;
+                            priRoleName = priRoleName + SystemConstant.COMMA + roleName;
                             primaryCell.setRoleName(priRoleName);
                         }
-                        sysUserImportDtoList.remove(sysUserImportDto);
+                        duplicateData.add(sysUserImportDto);
                     }else {
                         checkDtoMap.put(code,sysUserImportDto);
                     }
@@ -1279,6 +1298,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                         excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[电话号码]不符合输入规范"));
                     }
                 }
+                sysUserImportDtoList.removeAll(duplicateData);
             }
             if (excelErrorTemp.size() > 0) {
                 throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(excelErrorTemp));

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -70,6 +70,7 @@ public class SystemConstant {
     public static final int ALL_CARD = -1;
     public static final String MANUAL = "manual";
     public static final String DELIMITER = ":";
+    public static final String COMMA = ",";
     public static final int FINAL_SCALE = 1;
     public static final int CALCULATE_SCALE = 4;
     public static final int OPER_SCALE = 8;

+ 22 - 40
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicCourseServiceImpl.java

@@ -129,15 +129,17 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
             List<BasicUserCourse> basicUserCourseList = basicUserCourseService.list(new QueryWrapper<BasicUserCourse>().lambda().eq(BasicUserCourse::getCourseId,courseId));
             Set<Long> clazzIdSet = basicUserCourseList.stream().map(BasicUserCourse::getClazzId).collect(Collectors.toSet());
             List<ClazzDatasourceResult> clazzDatasourceResultList = new ArrayList<>();
-            for (Long id : clazzIdSet) {
-                ClazzDatasourceResult clazzDatasourceResult = new ClazzDatasourceResult();
-                BasicClazz clazz = basicClazzService.getById(id);
-                clazzDatasourceResult.setId(clazz.getId());
-                clazzDatasourceResult.setCode(clazz.getClazzCode());
-                clazzDatasourceResult.setName(clazz.getClazzName());
-                clazzDatasourceResultList.add(clazzDatasourceResult);
+            if (clazzIdSet.size() > 0){
+                List<BasicClazz> clazzList = basicClazzService.list(new QueryWrapper<BasicClazz>().lambda().in(BasicClazz::getId,clazzIdSet).orderByAsc(BasicClazz::getCreateTime));
+                for (BasicClazz clazz : clazzList) {
+                    ClazzDatasourceResult clazzDatasourceResult = new ClazzDatasourceResult();
+                    clazzDatasourceResult.setId(clazz.getId());
+                    clazzDatasourceResult.setCode(clazz.getClazzCode());
+                    clazzDatasourceResult.setName(clazz.getClazzName());
+                    clazzDatasourceResultList.add(clazzDatasourceResult);
+                }
+                basicCourseResult.setClazzList(clazzDatasourceResultList);
             }
-            basicCourseResult.setClazzList(clazzDatasourceResultList);
         }
         return iPage;
     }
@@ -198,15 +200,9 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Map<String, Object> executeBasicCourseImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) {
-        // 班级分割标志
-        final String clazzSplit = ",";
-
         SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
         Long schoolId = sysUser.getSchoolId();
         List<BasicCourseParams> addBasicCourseParamsList = new ArrayList<>();
-        Map<String,BasicCourseParams> courseMap = new HashMap<>();
-
-
         for (int i = 0; i < finalList.size(); i++) {
             LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
             List<Object> basicCourseImportDtoList = excelMap.get(i);
@@ -214,7 +210,6 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
             if (basicCourseImportDtoList.get(0) instanceof DescribeImportDto) {
                 continue;
             }
-            map.put("dataCount", basicCourseImportDtoList.size());
             for (int y = 0; y < Objects.requireNonNull(basicCourseImportDtoList).size(); y++) {
                 BasicCourseImportDto basicCourseImportDto = (BasicCourseImportDto) basicCourseImportDtoList.get(y);
                 String courseName = basicCourseImportDto.getCourseName();
@@ -231,7 +226,7 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
                     throw ExceptionResultEnum.ERROR.exception("输入的教研室【" + teachingRoomName + "】不存在");
                 }
                 Long teachingRoomId = sysOrg.getId();
-                String[] clazzList = clazz.split(clazzSplit);
+                String[] clazzList = clazz.split(SystemConstant.COMMA);
                 LinkedHashSet<Long> clazzIdSet = new LinkedHashSet<>();
                 for (String clzName : clazzList) {
                     BasicClazz basicClazz = basicClazzService.getOne(new QueryWrapper<BasicClazz>().lambda()
@@ -245,31 +240,18 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
                 }
 
                 BasicCourseParams basicCourseParams = new BasicCourseParams();
-                if (courseMap.containsKey(courseCode)){
-                    basicCourseParams = courseMap.get(courseCode);
-                    if (!courseName.equals(basicCourseParams.getCourseName())){
-                        throw ExceptionResultEnum.ERROR.exception("excel中相同【课程编号】:" + courseCode + ",存在不同的【课程名称】异常");
-                    }
-                    if (!teachingRoomId.equals(basicCourseParams.getTeachingRoomId())){
-                        throw ExceptionResultEnum.ERROR.exception("excel中相同【课程编号】:" + courseCode + ",存在不同的【所属教研室】异常");
-                    }
-                    Set<Long> oldClazzIdSet = basicCourseParams.getClazzIdSet();
-                    oldClazzIdSet.addAll(clazzIdSet);
-                } else {
-                    basicCourseParams.setCourseCode(courseCode);
-                    basicCourseParams.setCourseName(courseName);
-                    basicCourseParams.setTeachingRoomId(teachingRoomId);
-                    basicCourseParams.setClazzIdSet(clazzIdSet);
-                    BasicCourse old = this.getOne(new QueryWrapper<BasicCourse>().lambda()
-                            .eq(BasicCourse::getSchoolId, schoolId)
-                            .eq(BasicCourse::getEnable, true)
-                            .eq(BasicCourse::getCode, courseCode));
-                    if (Objects.nonNull(old)) {
-                        basicCourseParams.setId(old.getId());
-                    }
-                    courseMap.put(courseCode,basicCourseParams);
-                    addBasicCourseParamsList.add(basicCourseParams);
+                basicCourseParams.setCourseCode(courseCode);
+                basicCourseParams.setCourseName(courseName);
+                basicCourseParams.setTeachingRoomId(teachingRoomId);
+                basicCourseParams.setClazzIdSet(clazzIdSet);
+                BasicCourse old = this.getOne(new QueryWrapper<BasicCourse>().lambda()
+                        .eq(BasicCourse::getSchoolId, schoolId)
+                        .eq(BasicCourse::getEnable, true)
+                        .eq(BasicCourse::getCode, courseCode));
+                if (Objects.nonNull(old)) {
+                    basicCourseParams.setId(old.getId());
                 }
+                addBasicCourseParamsList.add(basicCourseParams);
             }
             List<BasicCourse> editBasicCourse = this.editEntityHelp(addBasicCourseParamsList, sysUser);
             this.saveOrUpdateBatch(editBasicCourse);

+ 1 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -689,7 +689,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             if (sysUserImportDtoList.get(0) instanceof DescribeImportDto) {
                 continue;
             }
-            map.put("dataCount", sysUserImportDtoList.size());
             for (int y = 0; y < Objects.requireNonNull(sysUserImportDtoList).size(); y++) {
                 SysUserImportDto sysUserImportDto = (SysUserImportDto) sysUserImportDtoList.get(y);
                 String name = sysUserImportDto.getName();
@@ -1173,7 +1172,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      */
     private LinkedHashSet<Long> analyzeRoleName(Long schoolId, String roleName) {
         LinkedHashSet<Long> roleIdList = new LinkedHashSet<>();
-        String[] arr = roleName.split(",");
+        String[] arr = roleName.split(SystemConstant.COMMA);
         for (String cell : arr) {
             SysRole sysRole = sysRoleService.getOne(new QueryWrapper<SysRole>().lambda()
                     .eq(SysRole::getEnable, true)