wangliang 1 år sedan
förälder
incheckning
6dbbfc99de

+ 37 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/TCUsualScoreDto.java

@@ -0,0 +1,37 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 平时作业成绩dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/3/15
+ */
+public class TCUsualScoreDto implements Serializable {
+
+    @ApiModelProperty(value = "分数")
+    private String score;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    public String getScore() {
+        return score;
+    }
+
+    public void setScore(String score) {
+        this.score = score;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

+ 13 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TCUsualScore.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.base.BaseEntity;
@@ -50,6 +51,10 @@ public class TCUsualScore extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "是否启用,0:停用,1:启用")
     private Boolean enable;
 
+    @ApiModelProperty(value = "评价方式是否发生变化")
+    @TableField(exist = false)
+    private boolean change;
+
     public TCUsualScore() {
 
     }
@@ -69,6 +74,14 @@ public class TCUsualScore extends BaseEntity implements Serializable {
         this.score = tcUsualScore.getScore();
     }
 
+    public boolean isChange() {
+        return change;
+    }
+
+    public void setChange(boolean change) {
+        this.change = change;
+    }
+
     public Long getExamId() {
         return examId;
     }

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TRBasicInfoService.java

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.business.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.deepoove.poi.data.TableRenderData;
+import com.qmth.distributed.print.business.bean.dto.CourseWeightDto;
 import com.qmth.distributed.print.business.bean.dto.report.CourseTargetWordDto;
 import com.qmth.distributed.print.business.bean.dto.report.ReportCourseEvaluationResultDto;
 import com.qmth.distributed.print.business.bean.dto.report.ReportScoreViewDto;
@@ -121,6 +122,15 @@ public interface TRBasicInfoService extends IService<TRBasicInfo> {
      */
     public CourseWeightResult findCourseWeightResultRmi(Long examId, String courseCode);
 
+    /**
+     * 查找课程评价值
+     *
+     * @param examId
+     * @param courseCode
+     * @return
+     */
+    public List<CourseWeightDto> findCourseWeightDtoRmi(Long examId, String courseCode);
+
     /**
      * 清除报告数据
      *

+ 17 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRBasicInfoServiceImpl.java

@@ -795,6 +795,23 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         return courseWeightResult;
     }
 
+    /**
+     * 查找课程评价值
+     *
+     * @param examId
+     * @param courseCode
+     * @return
+     */
+    @Override
+    public List<CourseWeightDto> findCourseWeightDtoRmi(Long examId, String courseCode) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        CourseWeightResult courseWeightResult = courseWeightService.findCourseWeight(examId, courseCode, sysUser.getId());
+        if (Objects.nonNull(courseWeightResult) && !CollectionUtils.isEmpty(courseWeightResult.getSubmitForm())) {
+            return courseWeightResult.getSubmitForm();
+        }
+        return null;
+    }
+
     /**
      * 清除报告数据
      *

+ 37 - 6
distributed-print/src/main/java/com/qmth/distributed/print/api/TCUsualScoreController.java

@@ -1,9 +1,12 @@
 package com.qmth.distributed.print.api;
 
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.dto.CourseWeightDetailDto;
 import com.qmth.distributed.print.business.bean.dto.CourseWeightDto;
+import com.qmth.distributed.print.business.bean.dto.TCUsualScoreDto;
 import com.qmth.distributed.print.business.bean.excel.ExcelField;
 import com.qmth.distributed.print.business.bean.result.CourseWeightResult;
 import com.qmth.distributed.print.business.bean.result.EditResult;
@@ -12,7 +15,6 @@ import com.qmth.distributed.print.business.entity.TCUsualScore;
 import com.qmth.distributed.print.business.service.PrintCommonService;
 import com.qmth.distributed.print.business.service.TCUsualScoreService;
 import com.qmth.distributed.print.business.service.TRBasicInfoService;
-import com.qmth.distributed.print.business.service.TRExamStudentService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
@@ -20,6 +22,7 @@ import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import io.swagger.annotations.*;
+import org.apache.commons.collections4.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -33,10 +36,7 @@ import javax.validation.Valid;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -119,7 +119,38 @@ public class TCUsualScoreController {
                                  @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber,
                                  @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                                  @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) throws IOException {
-        return ResultUtil.ok(tcUsualScoreService.usualScoreList(new Page<>(pageNumber, pageSize), examId, courseCode, paperNumber));
+        IPage<TCUsualScore> tcUsualScoreIPage = tcUsualScoreService.usualScoreList(new Page<>(pageNumber, pageSize), examId, courseCode, paperNumber);
+        if (Objects.nonNull(tcUsualScoreIPage) && CollectionUtils.isNotEmpty(tcUsualScoreIPage.getRecords())) {
+            Set<String> usualScoreSet = new LinkedHashSet<>();
+            Set<String> usualScoreCourseSet = new LinkedHashSet<>();
+            tcUsualScoreIPage.getRecords().stream().peek(e -> {
+                List<TCUsualScoreDto> tcUsualScoreDtoList = JSONArray.parseArray(e.getScore(), TCUsualScoreDto.class);
+                usualScoreSet.addAll(tcUsualScoreDtoList.stream().map(s -> s.getName()).collect(Collectors.toList()));
+            }).collect(Collectors.toSet());
+
+            List<CourseWeightDto> courseWeightDtoList = trBasicInfoService.findCourseWeightDtoRmi(examId, courseCode);
+            if (CollectionUtils.isNotEmpty(courseWeightDtoList)) {
+                courseWeightDtoList.stream().peek(e -> {
+                    List<CourseWeightDetailDto> courseWeightDetailDtoList = e.getEvaluationList();
+                    courseWeightDetailDtoList.stream().peek(s -> {
+                        if (!Objects.equals(s.getEvaluationName(), "期末考试")) {
+                            usualScoreCourseSet.add(s.getEvaluationName());
+                        }
+                    }).collect(Collectors.toList());
+                }).collect(Collectors.toList());
+            }
+
+            if (CollectionUtils.isNotEmpty(usualScoreSet) && CollectionUtils.isNotEmpty(usualScoreCourseSet)) {
+                List<String> usualScoreList = new ArrayList<>(usualScoreSet);
+                List<String> usualScoreCourseList = new ArrayList<>(usualScoreCourseSet);
+                Collections.sort(usualScoreList);
+                Collections.sort(usualScoreCourseList);
+                if (!CollectionUtils.isEqualCollection(usualScoreList, usualScoreCourseList)) {
+                    tcUsualScoreIPage.getRecords().get(0).setChange(true);
+                }
+            }
+        }
+        return ResultUtil.ok(tcUsualScoreIPage);
     }
 
     @ApiOperation(value = "平时成绩编辑")