Browse Source

3.3.0 fix

xiaofei 1 year ago
parent
commit
8cb1f0c241

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

@@ -1174,6 +1174,8 @@ public class SystemConstant {
             if (!file.exists()) {
                 file.getParentFile().mkdirs();
                 file.createNewFile();
+            } else {
+                file.delete();
             }
             IOUtils.write(bytes, new FileOutputStream(file));
         } catch (Exception e) {

+ 1 - 1
teachcloud-common/src/main/resources/mapper/SysUserMapper.xml

@@ -529,7 +529,7 @@
         SELECT
             su.id userId,
             su.login_name loginName,
-            su.real_name name,
+            su.real_name realName,
             so.name orgName
         FROM
             sys_user su

+ 19 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/answercard/FillItem.java

@@ -2,6 +2,10 @@ package com.qmth.teachcloud.mark.bean.answercard;
 
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.JsonNode;
+
+import java.util.Collections;
+import java.util.List;
 
 @JsonIgnoreProperties(ignoreUnknown = true)
 public class FillItem {
@@ -12,7 +16,11 @@ public class FillItem {
     @JsonProperty("sub_number")
     private Integer subNumber;
 
-    private double[][] options;
+    @JsonProperty("options")
+    private List<double[]> options = Collections.emptyList();
+
+    @JsonProperty("recog_info")
+    private List<JsonNode> recogInfo = Collections.emptyList();
 
     public Integer getMainNumber() {
         return mainNumber;
@@ -30,11 +38,19 @@ public class FillItem {
         this.subNumber = subNumber;
     }
 
-    public double[][] getOptions() {
+    public List<double[]> getOptions() {
         return options;
     }
 
-    public void setOptions(double[][] options) {
+    public void setOptions(List<double[]> options) {
         this.options = options;
     }
+
+    public List<JsonNode> getRecogInfo() {
+        return recogInfo;
+    }
+
+    public void setRecogInfo(List<JsonNode> recogInfo) {
+        this.recogInfo = recogInfo;
+    }
 }

+ 2 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkGroup.java

@@ -301,7 +301,7 @@ public class MarkGroup implements Serializable {
             mainNumbers.add(question.getMainNumber());
             mainTitles.add(question.getMainTitle());
             questionTitles.add(question.getMainTitle() + '-' + question.getSubNumber());
-            groupQuestions.add(String.valueOf(question.getMainNumber() + '-' + question.getSubNumber()));
+            groupQuestions.add(String.valueOf(question.getMainNumber()) + '-' + question.getSubNumber());
         }
         this.mainNumber = StringUtils.join(mainNumbers, ",");
         this.title = StringUtils.join(mainTitles, ",");
@@ -309,7 +309,7 @@ public class MarkGroup implements Serializable {
         this.groupQuestions = StringUtils.join(groupQuestions, ",");
         this.scoreList = score.toString();
     }
-    
+
     public List<MarkConfigItem> getPictureConfigList() {
         return MarkConfigItem.parse(this.picList);
     }

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkTaskMapper.java

@@ -26,7 +26,7 @@ public interface MarkTaskMapper extends BaseMapper<MarkTask> {
 
     List<MarkerInfoDto> listUserMarkedCount(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
 
-    MarkTask getLastOneByUserIdAndStatus(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("groupNumber") Integer groupNumber, @Param("userId") Long userId, @Param("name") String name);
+    MarkTask getLastOneByUserIdAndStatus(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("groupNumber") Integer groupNumber, @Param("userId") Long userId, @Param("status") String status);
 
 	IPage<MarkTask> listPageHistory(@Param("page")Page<MarkTask> page,@Param("userId") Long userId,@Param("examId") Long examId, @Param("paperNumber")String paperNumber,
 			@Param("groupNumber")Integer groupNumber,@Param("secretNumber") String secretNumber,@Param("markerScore") Double markerScore);

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkUserGroupService.java

@@ -47,7 +47,7 @@ public interface MarkUserGroupService extends IService<MarkUserGroup> {
 
     List<MarkUserGroup> listByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber);
 
-    void updateQualityById(Long markUserGroupId, int finishCount, int validCount, double v, double avgScore, double stdevScore);
+    void updateQualityById(Long markUserGroupId, int finishCount, int validCount, double v, double avgScore, double stdevScore, double maxScore, double minScore);
 
     List<MarkQualityChartDto> listQualityChart(Long examId, String paperNumber, Integer groupNumber);
     

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkGroupServiceImpl.java

@@ -401,10 +401,10 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
     @Override
     public List<MarkGroupQuestionsDto> listGroupQuestions(Long examId, String paperNumber) {
         List<MarkGroup> markGroupList = this.listGroupByExamIdAndPaperNumber(examId, paperNumber);
-        List<MarkQuestion> markQuestionList = markQuestionService.listQuestionByExamIdAndPaperNumber(examId, paperNumber);
         List<MarkGroupQuestionsDto> markGroupQuestionsDtoList = new ArrayList<>();
         for (MarkGroup markGroup : markGroupList) {
             MarkGroupQuestionsDto markGroupQuestionsDto = new MarkGroupQuestionsDto();
+            List<MarkQuestion> markQuestionList = markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroup.getNumber(), false);
             markGroup.setQuestionList(markQuestionList);
             markGroupQuestionsDto.setGroupNumber(markGroup.getNumber());
             markGroupQuestionsDto.setGroupQuestions(markGroup.getGroupQuestions());

+ 12 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java

@@ -265,6 +265,8 @@ public class MarkServiceImpl implements MarkService {
 		double stdevScore = 0;
 		double sumSpent = 0;
 		double avgSpent = 0;
+		double maxScore = 0;
+		double minScore = 0;
 		for (MarkTask markTask : list) {
 			finishCount++;
 			if (markTask.getStatus() == MarkTaskStatus.MARKED) {
@@ -284,9 +286,17 @@ public class MarkServiceImpl implements MarkService {
 				// 递归法计算标准差
 				stdevScore = Math.sqrt(sumScore2 / finishCount - Math.pow(sumScore / finishCount, 2));
 			}
+
+			// 最高分
+			if(score > maxScore){
+				maxScore = score;
+			}
+			// 最低分
+			if(score < minScore){
+				minScore = score;
+			}
 		}
-		markUserGroupService.updateQualityById(markUserGroup.getId(), finishCount, validCount, avgSpent / 1000,
-				avgScore, stdevScore);
+		markUserGroupService.updateQualityById(markUserGroup.getId(), finishCount, validCount, avgSpent / 1000, avgScore, stdevScore, maxScore, minScore);
 		markerLastUpdateTime.put(markUserGroup.getId(), System.currentTimeMillis());
 	}
 

+ 6 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserGroupServiceImpl.java

@@ -202,6 +202,9 @@ public class MarkUserGroupServiceImpl extends ServiceImpl<MarkUserGroupMapper, M
         Page<MarkQualityDto> page = new Page<>(pageNumber, pageSize);
         IPage<MarkQualityDto> markQualityDtoIPage = this.baseMapper.pageQuality(page, examId, paperNumber, groupNumber, userId);
         for (MarkQualityDto qualityDto : markQualityDtoIPage.getRecords()) {
+            MarkGroup markGroup = markGroupService.getByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, qualityDto.getGroupNumber());
+            markGroup.setQuestionList(markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, qualityDto.getGroupNumber(), false));
+            qualityDto.setGroupQuestions(markGroup.getGroupQuestions());
             if (qualityDto.getUserId() != null) {
                 SysUser sysUser = sysUserService.getByUserId(qualityDto.getUserId());
                 qualityDto.setLoginName(sysUser.getLoginName());
@@ -239,13 +242,15 @@ public class MarkUserGroupServiceImpl extends ServiceImpl<MarkUserGroupMapper, M
     }
 
     @Override
-    public void updateQualityById(Long markUserGroupId, int finishCount, int validCount, double avgSpeed, double avgScore, double stdevScore) {
+    public void updateQualityById(Long markUserGroupId, int finishCount, int validCount, double avgSpeed, double avgScore, double stdevScore, double maxScore, double minScore) {
         UpdateWrapper<MarkUserGroup> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(MarkUserGroup::getFinishCount, finishCount)
                 .set(MarkUserGroup::getValidCount, validCount)
                 .set(MarkUserGroup::getAvgSpeed, avgSpeed)
                 .set(MarkUserGroup::getAvgScore, avgScore)
                 .set(MarkUserGroup::getStdevScore, stdevScore)
+                .set(MarkUserGroup::getMaxScore, maxScore)
+                .set(MarkUserGroup::getMinScore, minScore)
                 .eq(MarkUserGroup::getId, markUserGroupId);
         this.update(updateWrapper);
     }

+ 1 - 1
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/SubjectCalculateJob.java

@@ -21,7 +21,7 @@ public class SubjectCalculateJob extends QuartzJobBean {
     @Override
     protected void executeInternal(JobExecutionContext jobExecutionContext) {
         try {
-//            jobService.subjectCalculate();
+            jobService.updateMarkerQuality();
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
         }

+ 8 - 8
teachcloud-task/src/main/java/com/qmth/teachcloud/task/start/StartRunning.java

@@ -89,14 +89,14 @@ public class StartRunning implements CommandLineRunner {
         log.info("增加自动统分定时任务 end");
 
         // 每1分钟一次
-//        log.info("增加更新评卷员质量监控指标定时任务 start");
-//        Map qualityJobMap = new HashMap();
-//        qualityJobMap.computeIfAbsent("name", v -> SubjectCalculateJob.class.getName());
-//        quartzService.deleteJob(JobEnum.UPDATE_MARKER_QUALITY.name(), JobEnum.UPDATE_MARKER_QUALITY_GROUP.name());
-//        quartzService.addJob(SubjectCalculateJob.class, JobEnum.UPDATE_MARKER_QUALITY.name(), JobEnum.UPDATE_MARKER_QUALITY_GROUP.name(), "0 */1 * * * ?", qualityJobMap);
-//        log.info("增加更新评卷员质量监控指标定时任务 end");
-//
-//
+        log.info("增加更新评卷员质量监控指标定时任务 start");
+        Map qualityJobMap = new HashMap();
+        qualityJobMap.computeIfAbsent("name", v -> SubjectCalculateJob.class.getName());
+        quartzService.deleteJob(JobEnum.UPDATE_MARKER_QUALITY.name(), JobEnum.UPDATE_MARKER_QUALITY_GROUP.name());
+        quartzService.addJob(SubjectCalculateJob.class, JobEnum.UPDATE_MARKER_QUALITY.name(), JobEnum.UPDATE_MARKER_QUALITY_GROUP.name(), "0 */1 * * * ?", qualityJobMap);
+        log.info("增加更新评卷员质量监控指标定时任务 end");
+
+
 //        // 每1分钟一次
         log.info("增加评卷任务生成定时任务 start");
         Map buildMarkTaskJobMap = new HashMap();