瀏覽代碼

Merge remote-tracking branch 'origin/dev_v3.3.4' into dev_v3.3.4

xiaofei 1 年之前
父節點
當前提交
358d1c6664

+ 22 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/ObeCourseOutlineResult.java

@@ -67,6 +67,12 @@ public class ObeCourseOutlineResult {
     @ApiModelProperty("专业名称")
     private String professionalName;
 
+    @ApiModelProperty("课程目标数量")
+    private Integer targetCount;
+
+    @ApiModelProperty("权重设置状态")
+    private Boolean weightSetting;
+
     public Long getId() {
         return id;
     }
@@ -194,4 +200,20 @@ public class ObeCourseOutlineResult {
     public void setProfessionalName(String professionalName) {
         this.professionalName = professionalName;
     }
+
+    public Integer getTargetCount() {
+        return targetCount;
+    }
+
+    public void setTargetCount(Integer targetCount) {
+        this.targetCount = targetCount;
+    }
+
+    public Boolean getWeightSetting() {
+        return weightSetting;
+    }
+
+    public void setWeightSetting(Boolean weightSetting) {
+        this.weightSetting = weightSetting;
+    }
 }

+ 15 - 1
distributed-print-business/src/main/resources/mapper/ObeCourseOutlineMapper.xml

@@ -19,7 +19,9 @@
             su.id AS userId,
             su.real_name AS userName,
             bp.id AS professionalId,
-            bp.name AS professionalName
+            bp.name AS professionalName,
+            IFNULL(oct.target_count, 0) AS targetCount,
+            IF(ocw.weight_count > 0, TRUE, FALSE) AS weightSetting
         FROM
             obe_course_outline oco
                 LEFT JOIN
@@ -32,6 +34,18 @@
             obe_culture_program ocp ON ocp.id = oco.culture_program_id
                 LEFT JOIN
             basic_professional bp ON ocp.professional_id = bp.id
+                LEFT JOIN
+            (SELECT
+                 obe_course_outline_id, COUNT(*) AS target_count
+             FROM
+                 obe_course_target
+             GROUP BY obe_course_outline_id) oct ON oct.obe_course_outline_id = oco.id
+                LEFT JOIN
+            (SELECT
+                 obe_course_outline_id, COUNT(*) AS weight_count
+             FROM
+                 obe_course_weight
+             GROUP BY obe_course_outline_id) ocw ON ocw.obe_course_outline_id = oco.id
         <where>
             <if test="schoolId != null">
                 AND oco.school_id = #{schoolId}

+ 29 - 13
distributed-print/src/main/java/com/qmth/distributed/print/api/ObeReportController.java

@@ -143,23 +143,39 @@ public class ObeReportController {
     @RequestMapping(value = "/requirements/detail/report", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "毕业要求达成度详情报表", response = ScoreResult.class)})
     public Result requirementsDetailReport(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId) {
-        ObeCourseRequirementReport obeCourseRequirementReport = obeCourseRequirementReportService.findByCultureProgramId(cultureProgramId);
+        String lockKey = SystemConstant.REDIS_OBE_RADAR_DETAIL_DATA_PREFIX + cultureProgramId;
+        boolean lock = redisUtil.lock(lockKey, SystemConstant.REDIS_LOCK_OBE_RADAR_DATA_TIME_OUT);
+        if (!lock) {
+            throw ExceptionResultEnum.ERROR.exception("正在计算数据,请稍候再试!");
+        }
         List<ObeCourseRequirementDto> obeCourseRequirementDtoList = new ArrayList<>();
-        if (Objects.nonNull(obeCourseRequirementReport) && Objects.nonNull(obeCourseRequirementReport.getRequirementDetail())) {
-            obeCourseRequirementDtoList = JSONArray.parseArray(obeCourseRequirementReport.getRequirementDetail(), ObeCourseRequirementDto.class);
-        } else {
-            List<CourseRequirementMatrixDto> courseRequirementMatrixDtoList = obeCourseRequirementMatrixService.getMatrix(cultureProgramId);
-            if (!CollectionUtils.isEmpty(courseRequirementMatrixDtoList)) {
-                log.info("courseRequirementMatrixDto:{}", JacksonUtil.parseJson(courseRequirementMatrixDtoList));
-                List<ObeCourseOutline> obeCourseOutlineList = obeCourseOutlineService.findByCultureProgramId(cultureProgramId);
-                if (!CollectionUtils.isEmpty(obeCourseOutlineList)) {
-                    Map<Long, List<ObeSubRequirementsDto>> obeSubRequirementsDtoMap = new LinkedHashMap<>();
-                    for (ObeCourseOutline obeCourseOutline : obeCourseOutlineList) {
-                        obeCourseRequirementReportService.matrixCourseReportInfo(courseRequirementMatrixDtoList, obeCourseOutline.getId(),
-                                null, obeCourseRequirementDtoList, obeSubRequirementsDtoMap);
+        try {
+            ObeCourseRequirementReport obeCourseRequirementReport = obeCourseRequirementReportService.findByCultureProgramId(cultureProgramId);
+            if (Objects.nonNull(obeCourseRequirementReport) && Objects.nonNull(obeCourseRequirementReport.getRequirementDetail())) {
+                obeCourseRequirementDtoList = JSONArray.parseArray(obeCourseRequirementReport.getRequirementDetail(), ObeCourseRequirementDto.class);
+            } else {
+                List<CourseRequirementMatrixDto> courseRequirementMatrixDtoList = obeCourseRequirementMatrixService.getMatrix(cultureProgramId);
+                if (!CollectionUtils.isEmpty(courseRequirementMatrixDtoList)) {
+                    log.info("courseRequirementMatrixDto:{}", JacksonUtil.parseJson(courseRequirementMatrixDtoList));
+                    List<ObeCourseOutline> obeCourseOutlineList = obeCourseOutlineService.findByCultureProgramId(cultureProgramId);
+                    if (!CollectionUtils.isEmpty(obeCourseOutlineList)) {
+                        Map<Long, List<ObeSubRequirementsDto>> obeSubRequirementsDtoMap = new LinkedHashMap<>();
+                        for (ObeCourseOutline obeCourseOutline : obeCourseOutlineList) {
+                            obeCourseRequirementReportService.matrixCourseReportInfo(courseRequirementMatrixDtoList, obeCourseOutline.getId(),
+                                    null, obeCourseRequirementDtoList, obeSubRequirementsDtoMap);
+                        }
                     }
                 }
             }
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        } finally {
+            redisUtil.releaseLock(lockKey);
         }
         return ResultUtil.ok(obeCourseRequirementDtoList);
     }

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

@@ -536,6 +536,7 @@ public class SystemConstant {
     public static final String REDIS_FINAL_SCORE_DATA_PREFIX = "redis:lock:final:score:data";//期末考试数据锁
     public static final String REDIS_PAPER_STRUCT_PREFIX = "redis:lock:final:score:paper:struct";//期末考试试卷结构锁
     public static final String REDIS_OBE_RADAR_DATA_PREFIX = "redis:lock:obe:radar:data";//obe雷达报表锁
+    public static final String REDIS_OBE_RADAR_DETAIL_DATA_PREFIX = "redis:lock:obe:radar:detail:data";//obe雷达详情报表锁
 
     public static final String REDIS_LOCK_IMPORT_EXAM_DATA = "redis:lock:import:exam:data:";//导入考务数据锁
     public static final long REDIS_LOCK_IMPORT_EXAM_DATA_TIME_OUT = 60L * 10;