소스 검색

fix: 用户批量导入可以对相同用户的角色数据做累加处理

caozixuan 3 년 전
부모
커밋
62c884237b

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

@@ -1227,9 +1227,8 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         InputStream inputStream = (InputStream) map.get("inputStream");
         List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(SysUserImportDto.class, DescribeImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
             List<ExcelError> excelErrorTemp = new ArrayList<>();
-//            Map<String, String> checkName = new HashMap<>();
-            Map<String, String> checkCode = new HashMap<>();
-            Map<String, String> checkPhoneMap = new HashMap<>();
+            Map<String,SysUserImportDto> checkDtoMap = new HashMap<>();
+
             for (int i = 0; i < finalExcelList.size(); i++) {
                 LinkedMultiValueMap<Integer, Object> excelMap = finalExcelList.get(i);
                 List<Object> sysUserImportDtoList = excelMap.get(i);
@@ -1245,24 +1244,28 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     String orgName = sysUserImportDto.getOrgName();
                     String roleName = sysUserImportDto.getRoleName();
 
-                    // 检验excel中
-//                    if (checkName.containsKey(name)) {
-//                        throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【姓名】:" + name);
-//                    } else {
-//                        checkName.put(name, code);
-//                    }
-                    if (checkCode.containsKey(code)) {
-                        throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【工号】:" + code);
-                    } else {
-                        checkCode.put(code, name);
-                    }
-                    // 如果电话有值则检验电话excel中唯一性
-                    if (SystemConstant.strNotNull(phoneNumber)) {
-                        if (checkPhoneMap.containsKey(phoneNumber)) {
-                            throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【电话号码】:" + phoneNumber);
-                        } else {
-                            checkPhoneMap.put(phoneNumber, code);
+                    if (checkDtoMap.containsKey(code)){
+                        SysUserImportDto primaryCell = checkDtoMap.get(code);
+                        String priName = primaryCell.getName();
+                        String priPhoneNumber = primaryCell.getPhoneNumber();
+                        String priOrgName = primaryCell.getOrgName();
+                        if (!Objects.equals(priName,name)){
+                            throw ExceptionResultEnum.ERROR.exception("【工号】 :" + code + ",的用户存在不同的用户名称异常");
+                        }
+                        if (!Objects.equals(priPhoneNumber,phoneNumber)){
+                            throw ExceptionResultEnum.ERROR.exception("【工号】 :" + code + ",的用户存在不同的手机号异常");
+                        }
+                        if (!Objects.equals(priOrgName,orgName)){
+                            throw ExceptionResultEnum.ERROR.exception("【工号】 :" + code + ",的用户存在不同的组织架构异常");
+                        }
+                        String priRoleName = primaryCell.getRoleName();
+                        if (SystemConstant.strNotNull(roleName)){
+                            priRoleName = priRoleName + "," + roleName;
+                            primaryCell.setRoleName(priRoleName);
                         }
+                        sysUserImportDtoList.remove(sysUserImportDto);
+                    }else {
+                        checkDtoMap.put(code,sysUserImportDto);
                     }
 
                     excelErrorTemp.addAll(ExcelUtil.checkExcelField(sysUserImportDto, y, i));

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

@@ -232,7 +232,7 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
                 }
                 Long teachingRoomId = sysOrg.getId();
                 String[] clazzList = clazz.split(clazzSplit);
-                Set<Long> clazzIdSet = new TreeSet<>();
+                LinkedHashSet<Long> clazzIdSet = new LinkedHashSet<>();
                 for (String clzName : clazzList) {
                     BasicClazz basicClazz = basicClazzService.getOne(new QueryWrapper<BasicClazz>().lambda()
                             .eq(BasicClazz::getEnable, true)

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

@@ -700,7 +700,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
                 UserSaveParams userSaveParams = new UserSaveParams();
                 Long orgId = this.analyzeOrgName(schoolId, orgName);
-                List<Long> roleIdList = this.analyzeRoleName(schoolId, roleName);
+                LinkedHashSet<Long> roleIdList = this.analyzeRoleName(schoolId, roleName);
 
                 SysUser oldUser = this.getOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getCode, code).eq(SysUser::getSchoolId, schoolId));
                 Long oldUserId = null;
@@ -1171,8 +1171,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      * @param roleName 角色名称组
      * @return 角色集合
      */
-    private List<Long> analyzeRoleName(Long schoolId, String roleName) {
-        List<Long> roleIdList = new ArrayList<>();
+    private LinkedHashSet<Long> analyzeRoleName(Long schoolId, String roleName) {
+        LinkedHashSet<Long> roleIdList = new LinkedHashSet<>();
         String[] arr = roleName.split(",");
         for (String cell : arr) {
             SysRole sysRole = sysRoleService.getOne(new QueryWrapper<SysRole>().lambda()