caozixuan 4 年 前
コミット
f36cb072e5

+ 4 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/enums/PublishStatusEnum.java

@@ -13,6 +13,10 @@ public enum PublishStatusEnum {
 
     UN_COMPUTE("未计算"),
 
+    WILL_COMPUTE("待计算"),
+
+    COMPUTING("计算中"),
+
     UN_PUBLISH("未发布"),
 
     PUBLISH("已发布");

+ 29 - 4
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/AnalyzeForReportService.java

@@ -1,5 +1,7 @@
 package com.qmth.teachcloud.report.business.service;
 
+import com.qmth.teachcloud.report.business.enums.PublishStatusEnum;
+
 /**
  * @Description: 对个人看板的分析
  * @Author: CaoZixuan
@@ -140,11 +142,34 @@ public interface AnalyzeForReportService {
     String buildAnalyzeExamCourseTeacher(Long examId, String courseCode);
 
     /**
-     * 完成计算,更新表 't_b_exam_course'表 已计算
-     *
-     * @param examId     考试id
+     * 更新表 't_b_exam_course'表 状态
+     * @param examId 考试id
      * @param courseCode 课程编号
+     * @param publishStatusEnum 发布状态
      * @return 结果
      */
-    String finishCalculate(Long examId, String courseCode);
+    String updateCoursePublishStatus(Long examId, String courseCode, PublishStatusEnum publishStatusEnum);
+
+
+    /**
+     * 按照初始表及赋分系数进行系统计算,计算结果为待计算
+     * @param examId 考试id
+     * @param courseCode 课程代码
+     */
+    void dataCalculateForSystem(Long examId, String courseCode) throws Exception;
+
+    /**
+     * 按照院长给定的赋分系数进行系统计算
+     * @param examId 考试id
+     * @param courseCode 课程代码
+     */
+    void dataCalculateForDean(Long examId, String courseCode) throws Exception;
+
+    /**
+     * 发布/撤回、报告
+     * @param examId 考试id
+     * @param courseCode 课程编号
+     * @param publishStatusEnum 发布状态
+     */
+    void publishReport(Long examId,String courseCode,PublishStatusEnum publishStatusEnum);
 }

+ 70 - 2
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeForReportServiceImpl.java

@@ -1391,7 +1391,7 @@ public class AnalyzeForReportServiceImpl implements AnalyzeForReportService {
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public String finishCalculate(Long examId, String courseCode) {
+    public String updateCoursePublishStatus(Long examId, String courseCode,PublishStatusEnum publishStatusEnum ) {
         // 可分析有效课程信息
         List<String> effectiveCourseCodeList = tbExamCourseService.findEffectiveByExamId(examId, courseCode);
         List<TBExamCourse> tbExamCourseList = new ArrayList<>();
@@ -1399,13 +1399,81 @@ public class AnalyzeForReportServiceImpl implements AnalyzeForReportService {
             TBExamCourse tbExamCourse = tbExamCourseService.getOne(new QueryWrapper<TBExamCourse>().lambda()
                     .eq(TBExamCourse::getExamId, examId)
                     .eq(TBExamCourse::getCourseCode, effectiveCourseCode));
-            tbExamCourse.setPublishStatus(PublishStatusEnum.UN_PUBLISH);
+            tbExamCourse.setPublishStatus(publishStatusEnum);
             tbExamCourseList.add(tbExamCourse);
         }
         tbExamCourseService.updateBatchById(tbExamCourseList);
         return " 't_b_exam_course' 表状态更新完成";
     }
 
+    @Override
+    public void dataCalculateForSystem(Long examId, String courseCode) throws Exception {
+        this.verifyComputing(examId, courseCode);
+        this.updateCoursePublishStatus(examId, courseCode,PublishStatusEnum.COMPUTING);
+        this.dataCalculate(examId, courseCode);
+        this.updateCoursePublishStatus(examId, courseCode,PublishStatusEnum.WILL_COMPUTE);
+    }
+
+    @Override
+    public void dataCalculateForDean(Long examId, String courseCode) throws Exception {
+        this.verifyComputing(examId, courseCode);
+        this.updateCoursePublishStatus(examId, courseCode,PublishStatusEnum.COMPUTING);
+        this.dataCalculate(examId, courseCode);
+        this.updateCoursePublishStatus(examId, courseCode,PublishStatusEnum.UN_PUBLISH);
+    }
+
+    @Override
+    public void publishReport(Long examId, String courseCode, PublishStatusEnum publishStatusEnum) {
+        TBExamCourse tbExamCourse = tbExamCourseService.getOne(new QueryWrapper<TBExamCourse>().lambda()
+                .eq(TBExamCourse::getExamId,examId)
+                .eq(TBExamCourse::getCourseCode,courseCode));
+        PublishStatusEnum status = tbExamCourse.getPublishStatus();
+        if (publishStatusEnum.equals(PublishStatusEnum.PUBLISH) && status.equals(PublishStatusEnum.UN_PUBLISH)){
+            // 待发布状态 -》 发布
+            tbExamCourse.setPublishStatus(publishStatusEnum);
+        }else if (publishStatusEnum.equals(PublishStatusEnum.UN_PUBLISH) && status.equals(PublishStatusEnum.PUBLISH)){
+            // 发布状态 -》 撤回
+            tbExamCourse.setPublishStatus(publishStatusEnum);
+        }else {
+            String statusDesc = "未明确的操作";
+            if (publishStatusEnum.equals(PublishStatusEnum.PUBLISH)){
+                statusDesc = "发布";
+            }else if (publishStatusEnum.equals(PublishStatusEnum.UN_PUBLISH)){
+                statusDesc = "撤回";
+            }
+            throw ExceptionResultEnum.ERROR.exception("【" + status + "】状态的课程无法进行" + "【" + statusDesc + "】" );
+        }
+    }
+
+    private void dataCalculate(Long examId,String courseCode) throws Exception {
+        this.buildAnalyzeExamCourse(examId,courseCode);
+        this.buildAnalyzeExamCourseRecord(examId, courseCode);
+        this.buildAnalyzeExamCourseCollegeInspect(examId, courseCode);
+        this.buildAnalyzeExamCourseClazz(examId, courseCode);
+        this.AnalyzePointScoreRate(examId, courseCode);
+        this.buildAnalyzeExamCourseCollegeInspectDio(examId, courseCode);
+        this.buildAnalyzeExamCourseTeacherDio(examId, courseCode);
+        this.buildAnalyzePaperStruct(examId, courseCode);
+        this.buildExamPaperDifficult(examId, courseCode);
+        this.buildExamPaperTeacherDifficult(examId, courseCode);
+        this.buildAnalyzeExamTotal(examId);
+        this.buildAnalyzeExamCourseCollegeTeacher(examId, courseCode);
+        this.buildAnalyzeExamCourseTeacher(examId, courseCode);
+    }
+
+    private void verifyComputing(Long examId,String courseCode){
+        List<String> effectiveCourseCodeList = tbExamCourseService.findEffectiveByExamId(examId, courseCode);
+        for (String effectiveCourseCode : effectiveCourseCodeList) {
+            TBExamCourse tbExamCourse = tbExamCourseService.getOne(new QueryWrapper<TBExamCourse>().lambda()
+                    .eq(TBExamCourse::getExamId, examId)
+                    .eq(TBExamCourse::getCourseCode, effectiveCourseCode));
+            PublishStatusEnum publishStatusEnum = tbExamCourse.getPublishStatus();
+            if (publishStatusEnum.equals(PublishStatusEnum.COMPUTING)){
+                throw ExceptionResultEnum.ERROR.exception("计算中的课程无法再计算 课程【" +tbExamCourse.getCourseName() + "】");
+            }
+        }
+    }
+
     /**
      * 计算百分位等级
      *

+ 4 - 1
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TBExamCourseServiceImpl.java

@@ -59,13 +59,16 @@ public class TBExamCourseServiceImpl extends ServiceImpl<TBExamCourseMapper, TBE
         TBExamCourse tbExamCourse = tbExamCourseList.get(0);
         TestStatusEnum testStatusEnum = tbExamCourse.getTestStatus();
         PublishStatusEnum publishStatusEnum = tbExamCourse.getPublishStatus();
-        return testStatusEnum.equals(TestStatusEnum.TEST) || testStatusEnum.equals(TestStatusEnum.CHECKED) || publishStatusEnum.equals(PublishStatusEnum.PUBLISH);
+        return testStatusEnum.equals(TestStatusEnum.TEST) || testStatusEnum.equals(TestStatusEnum.CHECKED) ||
+                publishStatusEnum.equals(PublishStatusEnum.PUBLISH) || publishStatusEnum.equals(PublishStatusEnum.COMPUTING);
     }
 
     @Override
     public List<String> findEffectiveByExamId(Long examId, String courseCode) {
         List<PublishStatusEnum> publishStatusEnumList = new ArrayList<>();
         publishStatusEnumList.add(PublishStatusEnum.UN_COMPUTE);
+        publishStatusEnumList.add(PublishStatusEnum.WILL_COMPUTE);
+        publishStatusEnumList.add(PublishStatusEnum.COMPUTING);
         publishStatusEnumList.add(PublishStatusEnum.UN_PUBLISH);
 
         List<TBExamCourse> effectiveCourseList = this.list(new QueryWrapper<TBExamCourse>().lambda()

+ 3 - 3
teachcloud-report-business/src/main/resources/mapper/TAExamCourseCollegeTeacherMapper.xml

@@ -12,7 +12,7 @@
             a.teach_college_name teachCollegeName,
             round(a.avg_score, 1) avgScore,
             round(a.avg_score_assign, 1) avgScoreAssign,
-            a.teacher_rank rank
+            a.teacher_rank `rank`
         FROM
             t_a_exam_course_college_teacher a
                 LEFT JOIN
@@ -44,7 +44,7 @@
             a.teach_college_name teachCollegeName,
             round(a.avg_score, 1) avgScore,
             a.teacher_count teacherCount,
-            a.teacher_rank rank
+            a.teacher_rank `rank`
         FROM
             t_a_exam_course_college_teacher a
                 LEFT JOIN
@@ -76,7 +76,7 @@
             a.course_name courseName,
             a.teacher_name teacherName,
             round(a.avg_score_assign, 1) avgScoreAssign,
-            a.teacher_rank rank
+            a.teacher_rank `rank`
         FROM
             t_a_exam_course_college_teacher a
                 LEFT JOIN

+ 17 - 3
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/CourseController.java

@@ -12,6 +12,7 @@ import com.qmth.teachcloud.report.business.bean.result.*;
 import com.qmth.teachcloud.report.business.bean.result.inspectCourseExamTotal.InspectCourseTotalReportResult;
 import com.qmth.teachcloud.report.business.enums.PublishStatusEnum;
 import com.qmth.teachcloud.report.business.enums.SemesterEnum;
+import com.qmth.teachcloud.report.business.service.AnalyzeForReportService;
 import com.qmth.teachcloud.report.business.service.CourseReportService;
 import com.qmth.teachcloud.report.business.service.TAExamCourseService;
 import io.swagger.annotations.*;
@@ -35,6 +36,9 @@ public class CourseController {
     @Resource
     CourseReportService courseReportService;
 
+    @Resource
+    AnalyzeForReportService analyzeForReportService;
+
     @ApiOperation(value = "开课课程考试总览列表接口")
     @RequestMapping(value = "/survey_teacher/list", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "考试科目信息", response = TAExamCourseResult.class)})
@@ -71,7 +75,7 @@ public class CourseController {
         if (Objects.isNull(sysUser)) {
             throw ExceptionResultEnum.NOT_LOGIN.exception();
         }
-        return ResultUtil.ok(taExamCourseService.surveyTeacherQuestionView(Objects.isNull(schoolId) ? (Long) ServletUtil.getRequestHeaderSchoolId() : SystemConstant.convertIdToLong(schoolId), semester, SystemConstant.convertIdToLong(examId), courseCode, Objects.nonNull(collegeId) ? SystemConstant.convertIdToLong(collegeId) : sysUser.getOrgId(), Objects.nonNull(teacherId) ? SystemConstant.convertIdToLong(teacherId) : null));
+        return ResultUtil.ok(taExamCourseService.surveyTeacherQuestionView(Objects.isNull(schoolId) ? SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()))  : SystemConstant.convertIdToLong(schoolId), semester, SystemConstant.convertIdToLong(examId), courseCode, Objects.nonNull(collegeId) ? SystemConstant.convertIdToLong(collegeId) : sysUser.getOrgId(), Objects.nonNull(teacherId) ? SystemConstant.convertIdToLong(teacherId) : null));
     }
 
     @ApiOperation(value = "开课课程考试总览-各难度水平题目上的作答分析接口")
@@ -87,7 +91,7 @@ public class CourseController {
         if (Objects.isNull(sysUser)) {
             throw ExceptionResultEnum.NOT_LOGIN.exception();
         }
-        return ResultUtil.ok(taExamCourseService.surveyTeacherQuestionAnswerView(Objects.isNull(schoolId) ? (Long) ServletUtil.getRequestHeaderSchoolId() : SystemConstant.convertIdToLong(schoolId), semester, SystemConstant.convertIdToLong(examId), courseCode, Objects.nonNull(collegeId) ? SystemConstant.convertIdToLong(collegeId) : sysUser.getOrgId(), Objects.nonNull(teacherId) ? SystemConstant.convertIdToLong(teacherId) : null));
+        return ResultUtil.ok(taExamCourseService.surveyTeacherQuestionAnswerView(Objects.isNull(schoolId) ? SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()))  : SystemConstant.convertIdToLong(schoolId), semester, SystemConstant.convertIdToLong(examId), courseCode, Objects.nonNull(collegeId) ? SystemConstant.convertIdToLong(collegeId) : sysUser.getOrgId(), Objects.nonNull(teacherId) ? SystemConstant.convertIdToLong(teacherId) : null));
     }
 
     @ApiOperation(value = "开课课程考试总览图表接口")
@@ -97,7 +101,7 @@ public class CourseController {
                                     @ApiParam(value = "学期", required = true) @RequestParam SemesterEnum semester,
                                     @ApiParam(value = "学校id", required = false) @RequestParam(required = false) String schoolId,
                                     @ApiParam(value = "科目编码", required = true) @RequestParam String courseCode) {
-        return ResultUtil.ok(taExamCourseService.surveyTeacherView(Objects.isNull(schoolId) ? (Long) ServletUtil.getRequestHeaderSchoolId() : SystemConstant.convertIdToLong(schoolId), semester, SystemConstant.convertIdToLong(examId), courseCode));
+        return ResultUtil.ok(taExamCourseService.surveyTeacherView(Objects.isNull(schoolId) ? SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()))  : SystemConstant.convertIdToLong(schoolId), semester, SystemConstant.convertIdToLong(examId), courseCode));
     }
 
     @ApiOperation(value = "考查课程考试总览-公共课概况接口")
@@ -144,6 +148,16 @@ public class CourseController {
         return ResultUtil.ok(taExamCourseService.trialCalculate(SystemConstant.convertIdToLong(examId),courseCode,coefficient));
     }
 
+    @ApiOperation(value = "赋分管理-发布&撤回接口")
+    @RequestMapping(value = "/survey_aspoints/publish", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "赋分管理-发布&撤回接口", response = Result.class)})
+    public Result surveyAspointsCalculation(
+            @ApiParam(value = "考试id", required = true) @RequestParam String examId,
+            @ApiParam(value = "科目编码", required = true) @RequestParam String courseCode,
+            @ApiParam(value = "发布状态", required = true) @RequestParam PublishStatusEnum publishStatus) {
 
+        analyzeForReportService.publishReport(SystemConstant.convertIdToLong(examId),courseCode,publishStatus);
+        return ResultUtil.ok();
+    }
 
 }

+ 1 - 14
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/DataAnalyzeController.java

@@ -35,20 +35,7 @@ public class DataAnalyzeController {
     @Transactional(rollbackFor = Exception.class)
     @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
     public Result dataCalculate(@RequestParam Long schoolId, @RequestParam Long examId, @RequestParam(required = false) String courseCode) throws Exception {
-        analyzeForReportService.buildAnalyzeExamCourse(examId,courseCode);
-        analyzeForReportService.buildAnalyzeExamCourseRecord(examId, courseCode);
-        analyzeForReportService.buildAnalyzeExamCourseCollegeInspect(examId, courseCode);
-        analyzeForReportService.buildAnalyzeExamCourseClazz(examId, courseCode);
-        analyzeForReportService.AnalyzePointScoreRate(examId, courseCode);
-        analyzeForReportService.buildAnalyzeExamCourseCollegeInspectDio(examId, courseCode);
-        analyzeForReportService.buildAnalyzeExamCourseTeacherDio(examId, courseCode);
-        analyzeForReportService.buildAnalyzePaperStruct(examId, courseCode);
-        analyzeForReportService.buildExamPaperDifficult(examId, courseCode);
-        analyzeForReportService.buildExamPaperTeacherDifficult(examId, courseCode);
-        analyzeForReportService.buildAnalyzeExamTotal(examId);
-        analyzeForReportService.buildAnalyzeExamCourseCollegeTeacher(examId, courseCode);
-        analyzeForReportService.buildAnalyzeExamCourseTeacher(examId, courseCode);
-        analyzeForReportService.finishCalculate(examId, courseCode);
+        analyzeForReportService.dataCalculateForSystem(examId,courseCode);
         return ResultUtil.ok(Collections.singletonMap(SystemConstant.SUCCESS, true));
     }
 }

+ 2 - 1
teachcloud-report/src/test/java/com/qmth/teachcloud/report/AnalyzeForStudentServiceTest.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.report;
 
+import com.qmth.teachcloud.report.business.enums.PublishStatusEnum;
 import com.qmth.teachcloud.report.business.service.AnalyzeForReportService;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -108,6 +109,6 @@ public class AnalyzeForStudentServiceTest {
     public void finishCalculate(){
         Long examId = 1L;
         String courseCode = "1013";
-        System.out.println(analyzeForReportService.finishCalculate(examId,courseCode));
+        System.out.println(analyzeForReportService.updateCoursePublishStatus(examId,courseCode, PublishStatusEnum.WILL_COMPUTE));
     }
 }