Prechádzať zdrojové kódy

fix:课程支撑毕业要求达成矩阵优化

caozixuan 10 mesiacov pred
rodič
commit
b26d227875

+ 41 - 5
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/service/impl/ObeCourseRequirementMatrixServiceImpl.java

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.distributed.print.business.service.TeachCourseService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.entity.SysPrivilege;
@@ -46,17 +45,23 @@ public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourse
 
     @Resource
     private SysPrivilegeService sysPrivilegeService;
+
     @Resource
     private BasicCourseService basicCourseService;
+
     @Resource
     private ObeCultureProgramCourseService obeCultureProgramCourseService;
+
     @Resource
     private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
 
     @Override
     public List<CourseRequirementMatrixDto> getMatrix(Long cultureProgramId) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        long c1 = System.currentTimeMillis();
         List<CourseRequirementMatrixDto> tpMatrixList = this.baseMapper.listMatrix(cultureProgramId, null);
+        System.out.println("查询耗时:" + (System.currentTimeMillis() - c1));
+        long c3 = System.currentTimeMillis();
         List<CourseRequirementMatrixDto> matrixDtoList = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(tpMatrixList)) {
             List<SysPrivilege> sysPrivileges = sysPrivilegeService.getClientUrlByUserId(sysUser.getId());
@@ -68,8 +73,30 @@ public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourse
             for (CourseRequirementMatrixDto tpMatrix : tpMatrixList) {
                 courseMap.add(tpMatrix.getObeCourseId(), tpMatrix);
             }
+
+            List<ObeCultureProgramCourse> obeCultureProgramCourseDatasource = new ArrayList<>();
+            Set<Long> obeCultureProgramCourseIdSet = courseMap.keySet();
+            if (CollectionUtils.isNotEmpty(obeCultureProgramCourseIdSet)) {
+                obeCultureProgramCourseDatasource = obeCultureProgramCourseService.listByIds(
+                        obeCultureProgramCourseIdSet);
+            }
+
+            List<ObeCultureProgramRequirement> tpRequirementDatasource = new ArrayList<>();
+            Set<Long> obeRequirementIdSet = courseMap.values().stream().flatMap(l -> l.stream().map(ObeCourseRequirementMatrix::getObeRequirementId))
+                    .collect(Collectors.toSet());
+            if (CollectionUtils.isNotEmpty(obeRequirementIdSet)) {
+                tpRequirementDatasource = obeCultureProgramRequirementService.listByIds(obeRequirementIdSet);
+            }
+
+            List<ObeCultureProgramCourse> finalObeCultureProgramCourseDatasource = obeCultureProgramCourseDatasource;
+            List<ObeCultureProgramRequirement> finalTpRequirementDatasource = tpRequirementDatasource;
             courseMap.forEach((key, value) -> {
-                ObeCultureProgramCourse obeCultureProgramCourse = obeCultureProgramCourseService.getById(key);
+                List<ObeCultureProgramCourse> obeCultureProgramCourseList = finalObeCultureProgramCourseDatasource.stream()
+                        .filter(e -> Objects.equals(key, e.getId())).collect(Collectors.toList());
+                if (CollectionUtils.isEmpty(obeCultureProgramCourseList) || obeCultureProgramCourseList.size() != 1) {
+                    throw ExceptionResultEnum.ERROR.exception("查询数据异常");
+                }
+                ObeCultureProgramCourse obeCultureProgramCourse = obeCultureProgramCourseList.get(0);
                 BasicCourse basicCourse = basicCourseService.getById(obeCultureProgramCourse.getCourseId());
                 CourseRequirementMatrixDto matrixDto = new CourseRequirementMatrixDto();
                 matrixDto.setCourseId(basicCourse.getId());
@@ -84,7 +111,12 @@ public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourse
                     requirementMap.add(tpMatrix.getObeRequirementId(), tpMatrix);
                 }
                 requirementMap.forEach((key1, requirementList) -> {
-                    ObeCultureProgramRequirement tpRequirement = obeCultureProgramRequirementService.getById(key1);
+                    List<ObeCultureProgramRequirement> tpRequirementList = finalTpRequirementDatasource.stream()
+                            .filter(e -> Objects.equals(key1, e.getId())).collect(Collectors.toList());
+                    if (CollectionUtils.isEmpty(tpRequirementList) || tpRequirementList.size() != 1) {
+                        throw ExceptionResultEnum.ERROR.exception("查询数据异常");
+                    }
+                    ObeCultureProgramRequirement tpRequirement = tpRequirementList.get(0);
                     MatrixRequirementDto matrixRequirementDto = new MatrixRequirementDto();
                     matrixRequirementDto.setId(tpRequirement.getId());
                     matrixRequirementDto.setName(tpRequirement.getName());
@@ -117,6 +149,7 @@ public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourse
                 matrixDtoList.add(matrixDto);
             });
         }
+        System.out.println("其他耗时: " + (System.currentTimeMillis() - c3));
         return matrixDtoList;
     }
 
@@ -149,7 +182,9 @@ public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourse
         for (ObeCultureProgramRequirement obeCultureProgramRequirement : requirementList) {
             for (ObeCultureProgramRequirement cultureProgramRequirement : obeCultureProgramRequirement.getSubRequirementList()) {
                 for (ObeCultureProgramCourse obeCultureProgramCourse : courseList) {
-                    ObeCourseRequirementMatrix obeCourseRequirementMatrix = new ObeCourseRequirementMatrix(obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramCourse.getId(), cultureProgramRequirement.getParentId(), cultureProgramRequirement.getId());
+                    ObeCourseRequirementMatrix obeCourseRequirementMatrix = new ObeCourseRequirementMatrix(
+                            obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramCourse.getId(),
+                            cultureProgramRequirement.getParentId(), cultureProgramRequirement.getId());
                     obeCourseRequirementMatrix.insertInfo(sysUser.getId());
                     obeCourseRequirementMatrices.add(obeCourseRequirementMatrix);
                 }
@@ -181,7 +216,8 @@ public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourse
 
     @Override
     public void copyByCultureProgramId(Long id, Long obeCultureProgramNewId, Map<Long, Long> requirementIdMap, Map<Long, Long> courseIdMap) {
-        List<ObeCourseRequirementMatrix> obeCourseRequirementMatrixList = this.list(new QueryWrapper<ObeCourseRequirementMatrix>().lambda().eq(ObeCourseRequirementMatrix::getCultureProgramId, id));
+        List<ObeCourseRequirementMatrix> obeCourseRequirementMatrixList = this.list(
+                new QueryWrapper<ObeCourseRequirementMatrix>().lambda().eq(ObeCourseRequirementMatrix::getCultureProgramId, id));
         for (ObeCourseRequirementMatrix obeCourseRequirementMatrix : obeCourseRequirementMatrixList) {
             obeCourseRequirementMatrix.setId(SystemConstant.getDbUuid());
             obeCourseRequirementMatrix.setCultureProgramId(obeCultureProgramNewId);