caozixuan 4 anos atrás
pai
commit
d43c168e74
14 arquivos alterados com 258 adições e 43 exclusões
  1. 3 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/TaskTypeEnum.java
  2. 7 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TBTaskService.java
  3. 17 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TBTaskServiceImpl.java
  4. 6 7
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/AnalyzeForReportService.java
  5. 18 23
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeForReportServiceImpl.java
  6. 7 1
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TAExamCourseServiceImpl.java
  7. 24 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/calculate/AsyncCalculateTaskTemplete.java
  8. 64 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/execute/AsyncDataCalculateTempleteService.java
  9. 20 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/service/TaskCalculateService.java
  10. 30 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/service/impl/TaskCalculateServiceImpl.java
  11. 9 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/test.java
  12. 3 5
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/BasicDatasourceController.java
  13. 47 5
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/CourseController.java
  14. 3 1
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/DataAnalyzeController.java

+ 3 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/TaskTypeEnum.java

@@ -23,7 +23,9 @@ public enum TaskTypeEnum {
 
     PAPER_AND_CARD_PDF_DOWNLOAD("卷库查询管理试卷、空白题卡批量下载pdf"),
 
-    CREATE_PDF("生成pdf");
+    CREATE_PDF("生成pdf"),
+
+    DATA_CALCULATE("数据计算");
 
     private String title;
 

+ 7 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TBTaskService.java

@@ -87,6 +87,13 @@ public interface TBTaskService extends IService<TBTask> {
      */
     public Map<String, Object> saveTask(TaskTypeEnum taskTypeEnum, ArraysParams arraysParams, SysUser sysUser);
 
+    /**
+     * 保存任务
+     * @param taskTypeEnum 任务类型
+     * @return 结果
+     */
+    public Map<String,Object> saveTask(TaskTypeEnum taskTypeEnum);
+
     /**
      * 查询任务列表
      *

+ 17 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TBTaskServiceImpl.java

@@ -169,6 +169,23 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
         return map;
     }
 
+    @Override
+    public Map<String, Object> saveTask(TaskTypeEnum taskTypeEnum) {
+        Map<String, Object> map = new HashMap<>();
+        try {
+            TBTask tbTask = saveTaskCommon(null, taskTypeEnum, map, null);
+            this.save(tbTask);
+        } catch (Exception e) {
+            log.error("请求出错", e);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        }
+        return map;
+    }
+
     /**
      * 查询任务列表
      *

+ 6 - 7
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/AnalyzeForReportService.java

@@ -150,20 +150,19 @@ public interface AnalyzeForReportService {
      */
     String updateCoursePublishStatus(Long examId, String courseCode, PublishStatusEnum publishStatusEnum);
 
-
     /**
-     * 按照初始表及赋分系数进行系统计算,计算结果为待计算
+     * 数据计算总控
      * @param examId 考试id
      * @param courseCode 课程代码
      */
-    void dataCalculateForSystem(Long examId, String courseCode) throws Exception;
+    void dataCalculate(Long examId, String courseCode) throws Exception;
 
     /**
-     * 按照院长给定的赋分系数进行系统计算
-     * @param examId 考试id
-     * @param courseCode 课程代码
+     * 计算前的准备工作 1.计算中状态报错 2.把其他状态改为计算中
+     * @param examId
+     * @param courseCode
      */
-    void dataCalculateForDean(Long examId, String courseCode) throws Exception;
+    void realityForCalculate(Long examId, String courseCode);
 
     /**
      * 发布/撤回、报告

+ 18 - 23
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeForReportServiceImpl.java

@@ -1406,20 +1406,28 @@ public class AnalyzeForReportServiceImpl implements AnalyzeForReportService {
         return " 't_b_exam_course' 表状态更新完成";
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @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);
+    public 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);
     }
 
     @Override
-    public void dataCalculateForDean(Long examId, String courseCode) throws Exception {
+    public void realityForCalculate(Long examId, String courseCode) {
         this.verifyComputing(examId, courseCode);
         this.updateCoursePublishStatus(examId, courseCode,PublishStatusEnum.COMPUTING);
-        this.dataCalculate(examId, courseCode);
-        this.updateCoursePublishStatus(examId, courseCode,PublishStatusEnum.UN_PUBLISH);
     }
 
     @Override
@@ -1443,23 +1451,10 @@ public class AnalyzeForReportServiceImpl implements AnalyzeForReportService {
             }
             throw ExceptionResultEnum.ERROR.exception("【" + status + "】状态的课程无法进行" + "【" + statusDesc + "】" );
         }
+        tbExamCourseService.updateById(tbExamCourse);
     }
 
-    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);

+ 7 - 1
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TAExamCourseServiceImpl.java

@@ -235,7 +235,13 @@ public class TAExamCourseServiceImpl extends ServiceImpl<TAExamCourseMapper, TAE
                 .eq(TAExamCourseRecord::getAbsent, false));
         for (TAExamCourseRecord taExamCourseRecord : taExamCourseRecordList) {
             BigDecimal paperScore = taExamCourseRecord.getTotalScore();
-            BigDecimal assignScore = paperScore.add((fullScore.subtract(paperScore)).divide(coefficient, 4, BigDecimal.ROUND_HALF_UP));
+            BigDecimal assignScore;
+            if (coefficient.compareTo(BigDecimal.ZERO) != 0){
+                 assignScore = paperScore.add((fullScore.subtract(paperScore)).divide(coefficient, 4, BigDecimal.ROUND_HALF_UP));
+            }else {
+                assignScore = paperScore;
+            }
+
             assignScore = assignScore.setScale(0, BigDecimal.ROUND_HALF_UP);
             taExamCourseRecord.setAssignedScore(assignScore);
         }

+ 24 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/calculate/AsyncCalculateTaskTemplete.java

@@ -0,0 +1,24 @@
+package com.qmth.teachcloud.report.business.templete.calculate;
+
+import com.qmth.teachcloud.common.util.Result;
+import org.springframework.scheduling.annotation.Async;
+
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author: CaoZixuan
+ * @Date:
+ */
+public abstract class AsyncCalculateTaskTemplete {
+    /**
+     * 异步计算任务
+     *
+     * @param map
+     * @return
+     * @throws IOException
+     */
+    @Async
+    public abstract Result calculateTask(Map<String, Object> map) throws IOException, Exception;
+}

+ 64 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/execute/AsyncDataCalculateTempleteService.java

@@ -0,0 +1,64 @@
+package com.qmth.teachcloud.report.business.templete.execute;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.teachcloud.common.contant.SpringContextHolder;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.TBTask;
+import com.qmth.teachcloud.common.enums.TaskStatusEnum;
+import com.qmth.teachcloud.common.service.TBTaskService;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.report.business.entity.TBExamCourse;
+import com.qmth.teachcloud.report.business.enums.PublishStatusEnum;
+import com.qmth.teachcloud.report.business.service.AnalyzeForReportService;
+import com.qmth.teachcloud.report.business.service.TBExamCourseService;
+import com.qmth.teachcloud.report.business.templete.calculate.AsyncCalculateTaskTemplete;
+import com.qmth.teachcloud.report.business.templete.service.TaskCalculateService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author: CaoZixuan
+ * @Date:
+ */
+@Service
+public class AsyncDataCalculateTempleteService extends AsyncCalculateTaskTemplete {
+    private final static Logger log = LoggerFactory.getLogger(AsyncDataCalculateTempleteService.class);
+    @Override
+    public Result calculateTask(Map<String, Object> map) {
+        TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
+        tbTask.setStatus(TaskStatusEnum.RUNNING);
+
+        TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
+        tbTaskService.updateById(tbTask);
+
+        AnalyzeForReportService analyzeForReportService = SpringContextHolder.getBean(AnalyzeForReportService.class);
+        Long examId = SystemConstant.convertIdToLong(String.valueOf(map.get("examId")));
+        String courseCode = String.valueOf(map.get("courseCode"));
+
+        TBExamCourseService tbExamCourseService = SpringContextHolder.getBean(TBExamCourseService.class);
+        TBExamCourse tbExamCourse = tbExamCourseService.getOne(new QueryWrapper<TBExamCourse>().lambda()
+                .eq(TBExamCourse::getExamId,examId)
+                .eq(TBExamCourse::getCourseCode,courseCode));
+        PublishStatusEnum oldStatus =  tbExamCourse.getPublishStatus();
+
+        analyzeForReportService.realityForCalculate(examId,courseCode);
+        try {
+            TaskCalculateService taskCalculateService = SpringContextHolder.getBean(TaskCalculateService.class);
+            taskCalculateService.dataCalculate(map);
+            tbExamCourse.setPublishStatus(PublishStatusEnum.UN_PUBLISH);
+        }catch (Exception e){
+            log.error("请求出错", e);
+            tbTask.setRemark(e.getMessage());
+            tbExamCourse.setPublishStatus(oldStatus);
+        }finally {
+            tbExamCourseService.updateById(tbExamCourse);
+        }
+        return ResultUtil.ok(map);
+    }
+}

+ 20 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/service/TaskCalculateService.java

@@ -0,0 +1,20 @@
+package com.qmth.teachcloud.report.business.templete.service;
+
+import java.util.Map;
+
+/**
+ * @Description: 任务实现逻辑
+ * @Author: CaoZixuan
+ * @Date: 2021-06-18
+ */
+public interface TaskCalculateService {
+
+    /**
+     * 创建pdf前置条件
+     *
+     * @param map
+     * @return
+     */
+    public Map<String, Object> dataCalculate(Map<String, Object> map) throws Exception;
+
+}

+ 30 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/service/impl/TaskCalculateServiceImpl.java

@@ -0,0 +1,30 @@
+package com.qmth.teachcloud.report.business.templete.service.impl;
+
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.report.business.service.AnalyzeForReportService;
+import com.qmth.teachcloud.report.business.templete.service.TaskCalculateService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * @Description: 任务实现逻辑实现类
+ * @Author: CaoZixuan
+ * @Date: 2021-06-18
+ */
+@Service
+public class TaskCalculateServiceImpl implements TaskCalculateService {
+    @Resource
+    private AnalyzeForReportService analyzeForReportService;
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Map<String, Object> dataCalculate(Map<String, Object> map) throws Exception {
+        Long examId = SystemConstant.convertIdToLong(String.valueOf(map.get("examId")));
+        String courseCode = String.valueOf(map.get("courseCode"));
+        analyzeForReportService.dataCalculate(examId,courseCode);
+        return map;
+    }
+}

+ 9 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/test.java

@@ -0,0 +1,9 @@
+package com.qmth.teachcloud.report.business.templete;
+
+/**
+ * @Description:
+ * @Author: CaoZixuan
+ * @Date:
+ */
+public class test {
+}

+ 3 - 5
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/BasicDatasourceController.java

@@ -138,7 +138,7 @@ public class BasicDatasourceController {
                         }
                         BigDecimal coefficient = BigDecimal.ZERO;
                         if (Objects.nonNull(paperConfigDto.getCoefficient())) {
-                            coefficient = BigDecimal.valueOf(Long.parseLong(String.valueOf(paperConfigDto.getCoefficient())));
+                            coefficient = BigDecimal.valueOf(Double.parseDouble(String.valueOf(paperConfigDto.getCoefficient())));
                         }
                         String paperType = paperConfigDto.getPaperType();
                         List<TBPaper> oldList = tbPaperService.list(new QueryWrapper<TBPaper>().lambda()
@@ -728,11 +728,10 @@ public class BasicDatasourceController {
                     BigDecimal assignScore;
                     // 当该试卷的赋分系数不为0时赋分
                     if (coefficient != null && coefficient.compareTo(BigDecimal.ZERO) > 0 && !absent) {
-                        assignScore = myScore.add((fullScore.subtract(myScore)).divide(coefficient, 4, BigDecimal.ROUND_HALF_UP));
+                        assignScore = myScore.add((fullScore.subtract(myScore)).divide(coefficient, 4, BigDecimal.ROUND_HALF_UP)).setScale(0,BigDecimal.ROUND_HALF_UP);
                     } else {
                         assignScore = myScore;
                     }
-                    assignScore = assignScore.setScale(0,BigDecimal.ROUND_HALF_UP);
                     TAExamCourseRecord taExamCourseRecord = new TAExamCourseRecord();
                     taExamCourseRecord.setId(SystemConstant.getDbUuid());
                     taExamCourseRecord.setExamRecordId(basicExamRecordDto.getTbExamRecordId());
@@ -797,11 +796,10 @@ public class BasicDatasourceController {
                     BigDecimal coefficient = tbPaper.getCoefficient();
                     BigDecimal assignScore;
                     if (coefficient != null && coefficient.compareTo(BigDecimal.ZERO) > 0 && !basicExamRecordDto.getAbsent()) {
-                        assignScore = myScore.add(fullScore.subtract(myScore).divide(coefficient, 4, BigDecimal.ROUND_HALF_UP));
+                        assignScore = myScore.add(fullScore.subtract(myScore).divide(coefficient, 4, BigDecimal.ROUND_HALF_UP)).setScale(0,BigDecimal.ROUND_HALF_UP);
                     } else {
                         assignScore = myScore;
                     }
-                    assignScore = assignScore.setScale(0,BigDecimal.ROUND_HALF_UP);
                     TAExamCourseRecord taExamCourseRecord = new TAExamCourseRecord();
                     taExamCourseRecord.setId(SystemConstant.getDbUuid());
                     taExamCourseRecord.setExamRecordId(basicExamRecordDto.getTbExamRecordId());

+ 47 - 5
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/CourseController.java

@@ -1,20 +1,24 @@
 package com.qmth.teachcloud.report.api;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.TaskTypeEnum;
+import com.qmth.teachcloud.common.service.TBTaskService;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.report.business.bean.result.*;
 import com.qmth.teachcloud.report.business.bean.result.inspectCourseExamTotal.InspectCourseTotalReportResult;
+import com.qmth.teachcloud.report.business.entity.TBExamCourse;
+import com.qmth.teachcloud.report.business.entity.TBPaper;
 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 com.qmth.teachcloud.report.business.service.*;
+import com.qmth.teachcloud.report.business.templete.execute.AsyncDataCalculateTempleteService;
 import io.swagger.annotations.*;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -23,6 +27,8 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 @Api(tags = "课程Controller")
@@ -39,6 +45,18 @@ public class CourseController {
     @Resource
     AnalyzeForReportService analyzeForReportService;
 
+    @Resource
+    TBTaskService tbTaskService;
+
+    @Resource
+    AsyncDataCalculateTempleteService asyncDataCalculateTempleteService;
+
+    @Resource
+    TBExamCourseService tbExamCourseService;
+
+    @Resource
+    TBPaperService tbPaperService;
+
     @ApiOperation(value = "开课课程考试总览列表接口")
     @RequestMapping(value = "/survey_teacher/list", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "考试科目信息", response = TAExamCourseResult.class)})
@@ -122,7 +140,7 @@ public class CourseController {
                                            @ApiParam(value = "学期", required = true) @RequestParam SemesterEnum semester,
                                            @ApiParam(value = "科目编码", required = true) @RequestParam String courseCode,
                                            @ApiParam(value = "学校id", required = false) @RequestParam(required = false) String schoolId) {
-        return ResultUtil.ok(taExamCourseService.surveyInspectAnalyseView(Objects.isNull(schoolId) ? (Long) ServletUtil.getRequestHeaderSchoolId() : SystemConstant.convertIdToLong(schoolId), semester, SystemConstant.convertIdToLong(examId), courseCode));
+        return ResultUtil.ok(taExamCourseService.surveyInspectAnalyseView(Objects.isNull(schoolId) ? SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()))  : SystemConstant.convertIdToLong(schoolId), semester, SystemConstant.convertIdToLong(examId), courseCode));
     }
 
     @ApiOperation(value = "赋分管理列表接口")
@@ -135,7 +153,7 @@ public class CourseController {
                                      @ApiParam(value = "发布状态", required = false) @RequestParam(required = false) PublishStatusEnum publishStatus,
                                      @ApiParam(value = "分页页码", required = true) @RequestParam int pageNumber,
                                      @ApiParam(value = "分页数", required = true) @RequestParam int pageSize) {
-        return ResultUtil.ok(taExamCourseService.surveyAspointsList(new Page<>(pageNumber, pageSize), Objects.isNull(schoolId) ? (Long) ServletUtil.getRequestHeaderSchoolId() : SystemConstant.convertIdToLong(schoolId), SystemConstant.convertIdToLong(examId), courseCode, publishStatus, semester));
+        return ResultUtil.ok(taExamCourseService.surveyAspointsList(new Page<>(pageNumber, pageSize), Objects.isNull(schoolId) ? SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()))  : SystemConstant.convertIdToLong(schoolId), SystemConstant.convertIdToLong(examId), courseCode, publishStatus, semester));
     }
 
     @ApiOperation(value = "赋分试算接口")
@@ -160,4 +178,28 @@ public class CourseController {
         return ResultUtil.ok();
     }
 
+    @ApiOperation(value = "赋分管理-保存")
+    @RequestMapping(value = "/survey_aspoints/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "赋分管理-保存", response = Result.class)})
+    public Result surveyAspointsSave(
+            @ApiParam(value = "考试id", required = true) @RequestParam String examId,
+            @ApiParam(value = "科目编码", required = true) @RequestParam String courseCode,
+            @ApiParam(value = "赋分系数", required = true) @RequestParam BigDecimal coefficient) {
+        if (coefficient.compareTo(BigDecimal.ZERO) != 0){
+            List<TBPaper> tbPaperList = tbPaperService.list(new QueryWrapper<TBPaper>().lambda()
+                    .eq(TBPaper::getExamId,examId).eq(TBPaper::getCourseCode,courseCode));
+
+            for (TBPaper tbPaper : tbPaperList) {
+                tbPaper.setCoefficient(coefficient);
+            }
+            tbPaperService.updateBatchById(tbPaperList);
+
+            Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.DATA_CALCULATE);
+            map.put("examId",examId);
+            map.put("courseCode",courseCode);
+            asyncDataCalculateTempleteService.calculateTask(map);
+        }
+        return ResultUtil.ok();
+    }
+
 }

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

@@ -4,6 +4,7 @@ import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.report.business.enums.PublishStatusEnum;
 import com.qmth.teachcloud.report.business.service.AnalyzeForReportService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -35,7 +36,8 @@ 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.dataCalculateForSystem(examId,courseCode);
+        analyzeForReportService.dataCalculate(examId,courseCode);
+        analyzeForReportService.updateCoursePublishStatus(examId,courseCode, PublishStatusEnum.WILL_COMPUTE);
         return ResultUtil.ok(Collections.singletonMap(SystemConstant.SUCCESS, true));
     }
 }