Forráskód Böngészése

Merge branch 'dev_v2.2.0' of http://git.qmth.com.cn/wangliang/distributed-print-service into dev_v2.2.0

xiaof 3 éve
szülő
commit
c2c281b9d5

+ 8 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -427,28 +427,25 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     @Override
     @Override
     public List<Long> disposeExamDetailByExaminationExcel(List<ExaminationImportDto> dataList, Long userId, SerialNumberParams serialNumberParams, SysUser sysUser) {
     public List<Long> disposeExamDetailByExaminationExcel(List<ExaminationImportDto> dataList, Long userId, SerialNumberParams serialNumberParams, SysUser sysUser) {
         List<Map<String, Object>> examDetailKeyList = dataList.stream().flatMap(e -> {
         List<Map<String, Object>> examDetailKeyList = dataList.stream().flatMap(e -> {
+            String campusName = e.getCampusName();
+            Long schoolIdId = e.getSchoolId();
+            Long printHouseId = basicCampusService.getPrintHouseIdBySchoolIdAndCampusName(schoolIdId, campusName);
             Map<String, Object> map = new HashMap<>();
             Map<String, Object> map = new HashMap<>();
-            map.put("schoolId", e.getSchoolId());
+            map.put("schoolId", schoolIdId);
             map.put("printPlanId", e.getPrintPlanId());
             map.put("printPlanId", e.getPrintPlanId());
             map.put("printPlanName", e.getPrintPlanName());
             map.put("printPlanName", e.getPrintPlanName());
             map.put("examPlace", e.getExamPlace());
             map.put("examPlace", e.getExamPlace());
             map.put("examRoom", e.getExamRoom());
             map.put("examRoom", e.getExamRoom());
             map.put("examStartTime", e.getExamStartTime());
             map.put("examStartTime", e.getExamStartTime());
             map.put("examEndTime", e.getExamEndTime());
             map.put("examEndTime", e.getExamEndTime());
-            map.put("campusName", e.getCampusName());
+            map.put("printHouseId", printHouseId);
             return Stream.of(map);
             return Stream.of(map);
         }).distinct().collect(Collectors.toList());
         }).distinct().collect(Collectors.toList());
 
 
         // 同一任务是否有多个校区
         // 同一任务是否有多个校区
         Map<String, List<Map<String, Object>>> stringListMap = examDetailKeyList.stream().collect(Collectors.groupingBy(m -> m.get("schoolId") + "#" + m.get("printPlanId") + "#" + m.get("printPlanName") + "#" + m.get("examPlace") + "#" + m.get("examRoom") + "#" + m.get("examStartTime") + "#" + m.get("examEndTime")));
         Map<String, List<Map<String, Object>>> stringListMap = examDetailKeyList.stream().collect(Collectors.groupingBy(m -> m.get("schoolId") + "#" + m.get("printPlanId") + "#" + m.get("printPlanName") + "#" + m.get("examPlace") + "#" + m.get("examRoom") + "#" + m.get("examStartTime") + "#" + m.get("examEndTime")));
         for (Map.Entry<String, List<Map<String, Object>>> entry : stringListMap.entrySet()) {
         for (Map.Entry<String, List<Map<String, Object>>> entry : stringListMap.entrySet()) {
-            Set<Long> printHouseIds = new HashSet<>();
-            for (Map<String, Object> objectMap : entry.getValue()) {
-                Long schoolId = Long.valueOf(String.valueOf(objectMap.get("schoolId")));
-                String campusName = String.valueOf(objectMap.get("campusName"));
-                printHouseIds.add(basicCampusService.getPrintHouseIdBySchoolIdAndCampusName(schoolId, campusName));
-            }
-            if(printHouseIds.size() > 1){
+            if(entry.getValue().size() > 1){
                 throw ExceptionResultEnum.ERROR.exception("同一考场对应校区指派的印刷室只能为一个");
                 throw ExceptionResultEnum.ERROR.exception("同一考场对应校区指派的印刷室只能为一个");
             }
             }
         }
         }
@@ -460,7 +457,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             String examRoom = String.valueOf(map.get("examRoom"));
             String examRoom = String.valueOf(map.get("examRoom"));
             String examStartTime = String.valueOf(map.get("examStartTime"));
             String examStartTime = String.valueOf(map.get("examStartTime"));
             String examEndTime = String.valueOf(map.get("examEndTime"));
             String examEndTime = String.valueOf(map.get("examEndTime"));
-            String campusName = String.valueOf(map.get("campusName"));
+            Long printHouseId = Long.valueOf(String.valueOf(map.get("printHouseId")));
 
 
             long totalSubjects = dataList.stream()
             long totalSubjects = dataList.stream()
                     .filter(e -> e.getExamPlace().equals(examPlace) &&
                     .filter(e -> e.getExamPlace().equals(examPlace) &&
@@ -483,7 +480,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             examDetail.setExamEndTime(SystemConstant.convertIdToLong(examEndTime));
             examDetail.setExamEndTime(SystemConstant.convertIdToLong(examEndTime));
             examDetail.setExamDataSource(ExamDataSourceEnum.FILE_IMPORT);
             examDetail.setExamDataSource(ExamDataSourceEnum.FILE_IMPORT);
             examDetail.setNormal(true);
             examDetail.setNormal(true);
-            examDetail.setPrintHouseId(basicCampusService.getPrintHouseIdBySchoolIdAndCampusName(schoolId, campusName));
+            examDetail.setPrintHouseId(printHouseId);
             examDetail.setCreateId(userId);
             examDetail.setCreateId(userId);
             examDetail.setUpdateId(userId);
             examDetail.setUpdateId(userId);
             examDetailList.add(examDetail);
             examDetailList.add(examDetail);

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java

@@ -229,7 +229,7 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
         Long id = printPlanParams.getId();
         Long id = printPlanParams.getId();
         Long schoolId = printPlanParams.getSchoolId();
         Long schoolId = printPlanParams.getSchoolId();
         if (basicSchoolService.list(new QueryWrapper<BasicSchool>().lambda().eq(BasicSchool::getId, schoolId).eq(BasicSchool::getEnable, true)).size() != 1) {
         if (basicSchoolService.list(new QueryWrapper<BasicSchool>().lambda().eq(BasicSchool::getId, schoolId).eq(BasicSchool::getEnable, true)).size() != 1) {
-            throw ExceptionResultEnum.ERROR.exception("输入的学校id不满足条件");
+            throw ExceptionResultEnum.ERROR.exception("学校被禁用或不存在");
         }
         }
 
 
         // 校验是否印试卷和题卡
         // 校验是否印试卷和题卡

+ 3 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -1107,7 +1107,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         } else if (examTaskList.size() == 1) {
         } else if (examTaskList.size() == 1) {
             ExamTask examTask = examTaskList.get(0);
             ExamTask examTask = examTaskList.get(0);
             if (!courseCode.equals(examTask.getCourseCode())) {
             if (!courseCode.equals(examTask.getCourseCode())) {
-                throw ExceptionResultEnum.ERROR.exception("要导入的考务数据的试卷编号在命题任务中已存在,但该试卷编号对应的考务数据课程代码和命题任务中的课程代码不匹配  [试卷编号] : " + paperNumber);
+                throw ExceptionResultEnum.ERROR.exception("要导入的考务数据的试卷编号在命题任务中已存在,但该试卷编号对应的考务数据课程代码和命题任务中的课程代码不匹配  \n【试卷编号】 : " + paperNumber
+                        + "\n【考务导入的课程编码】 : " + courseCode
+                        + "\n【命题任务的课程编码】 : " + examTask.getCourseCode());
             }
             }
         }
         }
     }
     }

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

@@ -1242,14 +1242,13 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                         checkCode.put(code, name);
                         checkCode.put(code, name);
                     }
                     }
                     // 如果电话有值则检验电话excel中唯一性
                     // 如果电话有值则检验电话excel中唯一性
-                    if (SystemConstant.strNotNull(phoneNumber)){
-                        if (checkPhoneMap.containsKey(phoneNumber)) {
-                            throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【电话号码】:" + phoneNumber);
-                        } else {
-                            checkPhoneMap.put(phoneNumber, code);
-                        }
+                    if (checkPhoneMap.containsKey(phoneNumber)) {
+                        throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【电话号码】:" + phoneNumber);
+                    } else {
+                        checkPhoneMap.put(phoneNumber, code);
                     }
                     }
 
 
+
                     excelErrorTemp.addAll(ExcelUtil.checkExcelField(sysUserImportDto, y, i));
                     excelErrorTemp.addAll(ExcelUtil.checkExcelField(sysUserImportDto, y, i));
                     if (Objects.isNull(code) || code.length() > 30 || !code.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
                     if (Objects.isNull(code) || code.length() > 30 || !code.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
                         excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程编号]不符合输入规范"));
                         excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程编号]不符合输入规范"));

+ 19 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/UserBatchDisposeResult.java

@@ -4,6 +4,7 @@ import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUserRole;
 import com.qmth.teachcloud.common.entity.SysUserRole;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Set;
 
 
 /**
 /**
  * @Description: 用户批量处理
  * @Description: 用户批量处理
@@ -13,6 +14,8 @@ import java.util.List;
 public class UserBatchDisposeResult {
 public class UserBatchDisposeResult {
     private List<SysUser> userList;
     private List<SysUser> userList;
     private List<SysUserRole> userRoleList;
     private List<SysUserRole> userRoleList;
+    private Set<Long> removeIdSet;
+    private Set<Long> updateIdSet;
 
 
     public List<SysUser> getUserList() {
     public List<SysUser> getUserList() {
         return userList;
         return userList;
@@ -29,4 +32,20 @@ public class UserBatchDisposeResult {
     public void setUserRoleList(List<SysUserRole> userRoleList) {
     public void setUserRoleList(List<SysUserRole> userRoleList) {
         this.userRoleList = userRoleList;
         this.userRoleList = userRoleList;
     }
     }
+
+    public Set<Long> getRemoveIdSet() {
+        return removeIdSet;
+    }
+
+    public void setRemoveIdSet(Set<Long> removeIdSet) {
+        this.removeIdSet = removeIdSet;
+    }
+
+    public Set<Long> getUpdateIdSet() {
+        return updateIdSet;
+    }
+
+    public void setUpdateIdSet(Set<Long> updateIdSet) {
+        this.updateIdSet = updateIdSet;
+    }
 }
 }

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

@@ -48,6 +48,8 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
     private BasicUserCourseService basicUserCourseService;
     private BasicUserCourseService basicUserCourseService;
     @Resource
     @Resource
     private BasicClazzService basicClazzService;
     private BasicClazzService basicClazzService;
+    @Resource
+    private SysUserService sysUserService;
 
 
 
 
     @Override
     @Override
@@ -74,6 +76,7 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
             basicCourse.setSchoolId(schoolId);
             basicCourse.setSchoolId(schoolId);
             basicCourse.setId(SystemConstant.getDbUuid());
             basicCourse.setId(SystemConstant.getDbUuid());
             basicCourse.setCreateId(userId);
             basicCourse.setCreateId(userId);
+            basicCourse.setOrgId(sysUserService.getById(userId).getOrgId());
             basicCourse.setCreateTime(System.currentTimeMillis());
             basicCourse.setCreateTime(System.currentTimeMillis());
             this.saveOrUpdate(basicCourse);
             this.saveOrUpdate(basicCourse);
         }
         }

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

@@ -542,8 +542,29 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         UserBatchDisposeResult userBatchDisposeResult = this.disposeUserInfoHelp(userSaveParamsList, sysUser);
         UserBatchDisposeResult userBatchDisposeResult = this.disposeUserInfoHelp(userSaveParamsList, sysUser);
         List<SysUser> sysUserList = userBatchDisposeResult.getUserList();
         List<SysUser> sysUserList = userBatchDisposeResult.getUserList();
         List<SysUserRole> sysUserRoleList = userBatchDisposeResult.getUserRoleList();
         List<SysUserRole> sysUserRoleList = userBatchDisposeResult.getUserRoleList();
+        Set<Long> removeUserIdSet = userBatchDisposeResult.getRemoveIdSet();
+        Set<Long> updateUserIdSet = userBatchDisposeResult.getUpdateIdSet();
+        // TODO: 2021/9/1 可以优化 或者直接批量导入变成单个导入 循环调用 
+        // 保存用户
         this.saveOrUpdateBatch(sysUserList);
         this.saveOrUpdateBatch(sysUserList);
+        // 要更新的用户删除原先的权限
+        for (Long id : removeUserIdSet) {
+            QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
+            sysUserRoleQueryWrapper.lambda().eq(SysUserRole::getUserId, id);
+            sysUserRoleService.remove(sysUserRoleQueryWrapper);
+            commonCacheService.removeUserRolePrivilegeCache(id);
+        }
+        // 更新用户角色权限
         sysUserRoleService.saveOrUpdateBatch(sysUserRoleList);
         sysUserRoleService.saveOrUpdateBatch(sysUserRoleList);
+        // 要更新的角色删除缓存
+        for (Long id : removeUserIdSet) {
+            commonService.removeUserInfo(id, true);
+        }
+        // 基础数据变更更新缓存
+        for (Long id : updateUserIdSet) {
+            commonCacheService.updateUserCache(id);
+            commonCacheService.updateUserAuthCache(id);
+        }
         return map;
         return map;
     }
     }
 
 
@@ -644,6 +665,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         Long schoolId = master.getSchoolId();
         Long schoolId = master.getSchoolId();
         List<SysUser> userList = new ArrayList<>();
         List<SysUser> userList = new ArrayList<>();
         List<SysUserRole> sysUserRoleList = new ArrayList<>();
         List<SysUserRole> sysUserRoleList = new ArrayList<>();
+        // 用户角色更新 - 对用户角色权限的各种清除操作
+        Set<Long> willRemoveUserPri = new HashSet<>();
+        // 用户基础信息更新 - 对用户权限缓存的更新
+        Set<Long> willUpdateUserPri = new HashSet<>();
         for (UserSaveParams userSaveParams : userSaveParamsList) {
         for (UserSaveParams userSaveParams : userSaveParamsList) {
             String code = userSaveParams.getCode();
             String code = userSaveParams.getCode();
             String mobileNumber = userSaveParams.getMobileNumber();
             String mobileNumber = userSaveParams.getMobileNumber();
@@ -681,21 +706,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 userList.add(userCell);
                 userList.add(userCell);
                 //如果修改了角色,需要重新登录
                 //如果修改了角色,需要重新登录
                 if (count == 0 || dbUserRolesList.size() != newRoleList.size()) {
                 if (count == 0 || dbUserRolesList.size() != newRoleList.size()) {
-                    QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
-                    sysUserRoleQueryWrapper.lambda().eq(SysUserRole::getUserId, userCell.getId());
-                    sysUserRoleService.remove(sysUserRoleQueryWrapper);
-
-                    commonCacheService.removeUserRolePrivilegeCache(userCell.getId());
                     List<SysUserRole> sysUserRoleCell = commonService.disposeUserPrivilege(userCell, userSaveParams.getRoleIds());
                     List<SysUserRole> sysUserRoleCell = commonService.disposeUserPrivilege(userCell, userSaveParams.getRoleIds());
                     sysUserRoleList.addAll(sysUserRoleCell);
                     sysUserRoleList.addAll(sysUserRoleCell);
-                    commonService.removeUserInfo(userCell.getId(), true);
+                    willRemoveUserPri.add(userCell.getId());
                 }
                 }
                 //如果修改了机构或手机号,需更新用户缓存
                 //如果修改了机构或手机号,需更新用户缓存
                 if (Objects.nonNull(dbUser.getOrgId())) {
                 if (Objects.nonNull(dbUser.getOrgId())) {
                     if (dbUser.getOrgId().longValue() != userCell.getOrgId().longValue()
                     if (dbUser.getOrgId().longValue() != userCell.getOrgId().longValue()
                             || !Objects.equals(dbUser.getMobileNumber(), userCell.getMobileNumber())) {
                             || !Objects.equals(dbUser.getMobileNumber(), userCell.getMobileNumber())) {
-                        commonCacheService.updateUserCache(userCell.getId());
-                        commonCacheService.updateUserAuthCache(userCell.getId());
+                        willUpdateUserPri.add(userCell.getId());
                     }
                     }
                 }
                 }
             }
             }
@@ -703,6 +722,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         UserBatchDisposeResult userBatchDisposeResult = new UserBatchDisposeResult();
         UserBatchDisposeResult userBatchDisposeResult = new UserBatchDisposeResult();
         userBatchDisposeResult.setUserList(userList);
         userBatchDisposeResult.setUserList(userList);
         userBatchDisposeResult.setUserRoleList(sysUserRoleList);
         userBatchDisposeResult.setUserRoleList(sysUserRoleList);
+        userBatchDisposeResult.setRemoveIdSet(willRemoveUserPri);
+
+        userBatchDisposeResult.setUpdateIdSet(willUpdateUserPri);
+
         return userBatchDisposeResult;
         return userBatchDisposeResult;
     }
     }