夏文涛 2 лет назад
Родитель
Сommit
68e26447e3

+ 34 - 11
src/main/java/com/template/controller/SmartEvaluateStudentController.java

@@ -15,10 +15,8 @@ import com.template.model.evaluate.teacher.SmartEvaluateTeacher;
 import com.template.model.result.CommonResult;
 import com.template.model.result.PageUtils;
 import com.template.model.vo.HistoricalEvaluationVo;
-import com.template.services.SmartEvaluateSdetailService;
-import com.template.services.SmartEvaluateStudentService;
-import com.template.services.SmartSubjectManageService;
-import com.template.services.SmartSubjectRuleService;
+import com.template.model.vo.TemplateRuleVo;
+import com.template.services.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,13 +33,15 @@ public class SmartEvaluateStudentController implements SmartEvaluateStudentContr
     private static Logger logger = LoggerFactory.getLogger(SmartEvaluateStudentController.class);
 
     @Autowired
-    public SmartSubjectManageService smartSubjectManageService;
+    private SmartSubjectManageService smartSubjectManageService;
     @Autowired
-    public SmartSubjectRuleService smartSubjectRuleService;
+    private SmartSubjectRuleService smartSubjectRuleService;
     @Autowired
-    public SmartEvaluateStudentService smartEvaluateStudentService;
+    private SmartEvaluateStudentService smartEvaluateStudentService;
     @Autowired
-    public SmartEvaluateSdetailService smartEvaluateSdetailService;
+    private SmartEvaluateSdetailService smartEvaluateSdetailService;
+    @Autowired
+    private SmartTemplateRuleService smartTemplateRuleService;
 
     @PassToken
     public CommonResult operateSmartSubjectManage(JSONObject jsonObject) {
@@ -194,9 +194,32 @@ public class SmartEvaluateStudentController implements SmartEvaluateStudentContr
         }
         queryWrapper1.orderByDesc("id");
         PageUtils<SmartEvaluateStudent> list = smartEvaluateStudentService.queryPageSmartEvaluateStudent(currentPage, pageCount, queryWrapper1);
-        if(list.getList() != null && list.getList().size() > 0){
-            for (SmartEvaluateStudent student:list.getList()) {
+        if (list.getList() != null && list.getList().size() > 0) {
+            List<Integer> gradeIds = list.getList().stream().map(SmartEvaluateStudent::getGradeId).collect(Collectors.toList());
+            List<Integer> termIds = list.getList().stream().map(SmartEvaluateStudent::getTermId).collect(Collectors.toList());
+            List<TemplateRuleVo> templateRules = smartTemplateRuleService.queryTemplateRuleByIds(gradeIds, termIds);
+            for (SmartEvaluateStudent student : list.getList()) {
+                List<TemplateRuleVo> ownerRules = templateRules.stream().filter(e -> e.getGradeId().equals(student.getGradeId())
+                        && e.getTermId().equals(student.getTermId()) && ("," + e.getExamType() + ",").contains("," + student.getExamTypeId() + ",")).collect(Collectors.toList());
+                if (ownerRules != null && ownerRules.size() > 0) {
+                    for (TemplateRuleVo ownerRule : ownerRules) {
+                        Integer minValue = 0;
+                        Integer maxValue = 0;
+                        String[] levels = ownerRule.getLevel().split("-");
+                        if (Integer.valueOf(levels[0]).intValue() > Integer.valueOf(levels[1]).intValue()) {
+                            minValue = Integer.valueOf(levels[1]).intValue();
+                            maxValue = Integer.valueOf(levels[0]).intValue();
+                        }else{
+                            minValue = Integer.valueOf(levels[0]).intValue();
+                            maxValue = Integer.valueOf(levels[1]).intValue();
+                        }
 
+                        Double scoreNum = (double) student.getScoreNum() / student.getSubjectNum();
+                        if(scoreNum >= minValue && scoreNum <= maxValue){
+                            student.setScoreLevel(ownerRule.getLevel());
+                        }
+                    }
+                }
             }
         }
 
@@ -291,7 +314,7 @@ public class SmartEvaluateStudentController implements SmartEvaluateStudentContr
 
     @Override
     public CommonResult historicalEvaluation(String cardNo) {
-        List<HistoricalEvaluationVo> vos=smartEvaluateStudentService.getHistoricalEvaluation(cardNo);
+        List<HistoricalEvaluationVo> vos = smartEvaluateStudentService.getHistoricalEvaluation(cardNo);
         return CommonResult.ok(vos);
     }
 }

+ 6 - 1
src/main/java/com/template/controller/SmartEvaluateStudentController2.java

@@ -180,6 +180,7 @@ public class SmartEvaluateStudentController2 implements SmartEvaluateStudentCont
         List<SmartExamtype> examtypes = smartExamtypeService.list(null);
         if (list.getList() != null && list.getList().size() > 0) {
             for (SmartSubjectTemplate data : list.getList()) {
+                List<SmartTermTemplate> examTypeDatas = new ArrayList<>();
                 List<String> names = new ArrayList<>();
                 List<String> examTypes = Arrays.asList(data.getExamType().split(","));
                 if (examtypes != null && examtypes.size() > 0) {
@@ -187,13 +188,17 @@ public class SmartEvaluateStudentController2 implements SmartEvaluateStudentCont
                         Optional<SmartExamtype> oExamtype = examtypes.stream().filter(e -> String.valueOf(e.getId()).equals(examType)).findFirst();
                         if(oExamtype != null && oExamtype.isPresent()){
                             names.add(oExamtype.get().getName());
+                            SmartTermTemplate examTypeData = new SmartTermTemplate();
+                            examTypeData.setId(oExamtype.get().getId());
+                            examTypeData.setName(oExamtype.get().getName());
+                            examTypeDatas.add(examTypeData);
                         }
                     }
                 }
                 if(names != null && names.size() > 0){
                     data.setExamType(StringUtils.join(names,","));
                 }
-
+                data.setExamTypes(examTypeDatas);
             }
 
         }

+ 15 - 2
src/main/java/com/template/controller/SmartScoreController.java

@@ -321,7 +321,9 @@ public class SmartScoreController implements SmartScoreControllerAPI {
         SmartEvaluateStudent evaStudent = smartEvaluateStudentService.getEvaluateStudent(isr.getUserId(), isr.getSemesterId(), isr.getExamType());
         if (evaStudent != null) {
             BigDecimal scoreNum = new BigDecimal(evaStudent.getScoreNum()).add(new BigDecimal(isr.getScore()));
+            Integer subjectNum = evaStudent.getSubjectNum() + 1;
             evaStudent.setScoreNum(scoreNum.doubleValue());
+            evaStudent.setSubjectNum(subjectNum);
             int updateEva = smartEvaluateStudentService.updateSmartEvaluateStudent(evaStudent);
             if (updateEva <= 0) {
                 return CommonResult.fail("添加失败");
@@ -342,13 +344,16 @@ public class SmartScoreController implements SmartScoreControllerAPI {
             ses.setUserId(isr.getUserId());
 
             BigDecimal totalScore = new BigDecimal(0.0);
+            Integer subjectNum = 0;
             List<SmartScore> userScores = smartScoreService.getScores(isr.getUserId(), isr.getSemesterId(), isr.getExamType());
             for (SmartScore userScore : userScores) {
                 totalScore.add(new BigDecimal(userScore.getScore()));
+                subjectNum++;
             }
 
             totalScore = totalScore.add(new BigDecimal(isr.getScore()));
             ses.setScoreNum(totalScore.doubleValue());//分数要计算 已经加进去的成绩的
+            ses.setSubjectNum(++subjectNum);
 
             Integer insertStudent = smartEvaluateStudentService.insertSmartEvaluateStudent(ses);
 
@@ -418,12 +423,15 @@ public class SmartScoreController implements SmartScoreControllerAPI {
             ses.setName(user.getName());
             ses.setUserId(usr.getUserId());
 
+            Integer subjectNum = evaStudent.getSubjectNum() + 1;
             BigDecimal totalScore = new BigDecimal(0.0);
             List<SmartScore> userScores = smartScoreService.getScores(usr.getUserId(), usr.getSemesterId(), usr.getExamType());
             for (SmartScore userScore : userScores) {
                 totalScore.add(new BigDecimal(userScore.getScore()));
+                subjectNum++;
             }
             ses.setScoreNum(totalScore.doubleValue());//分数要计算 已经加进去的成绩的
+            ses.setSubjectNum(subjectNum);
 
             Integer insertStudent = smartEvaluateStudentService.insertSmartEvaluateStudent(ses);
 
@@ -501,6 +509,7 @@ public class SmartScoreController implements SmartScoreControllerAPI {
 
                     if (restScore.doubleValue() > 0) {
                         student.setScoreNum(restScore.doubleValue());
+                        student.setSubjectNum(student.getSubjectNum() - 1);
                     } else {
                         // 删除成绩的时候如果减掉的分数小于等于零
                         // 则把综合评价里的学生的成绩总分数数据删掉
@@ -815,6 +824,7 @@ public class SmartScoreController implements SmartScoreControllerAPI {
                 ses = userSes.get();
                 BigDecimal totalScore = new BigDecimal(ses.getScoreNum()).add(new BigDecimal(score.getScore()));
                 ses.setScoreNum(totalScore.doubleValue());//分数要计算 已经加进去的成绩的
+                ses.setSubjectNum(ses.getSubjectNum() + 1);
             } else {
                 Optional<SmartExamtype> examType = examtypes.stream().filter(e -> e.getId().equals(score.getExamType())).findFirst();
                 ses.setTermId(score.getSemesterId());
@@ -829,21 +839,24 @@ public class SmartScoreController implements SmartScoreControllerAPI {
                 ses.setName(score.getName());
                 ses.setUserId(score.getUserId());
 
+                Integer subjectNum = 0;
                 BigDecimal totalScore = new BigDecimal(0.0);
 
                 for (SmartScore userScore : userScores) {
                     totalScore.add(new BigDecimal(userScore.getScore()));
+                    subjectNum++;
                 }
 
                 totalScore = totalScore.add(new BigDecimal(score.getScore()));
                 ses.setScoreNum(totalScore.doubleValue());//分数要计算 已经加进去的成绩的
+                ses.setSubjectNum(subjectNum + 1);
             }
 
             addSess.add(ses);
             //endregion
         }
 
-        if(addSess != null && addSess.size() > 0){
+        if (addSess != null && addSess.size() > 0) {
             boolean insertEvaluate = smartEvaluateStudentService.saveBatch(addSess);
             if (!insertEvaluate) {
                 return CommonResult.fail("导入失败");
@@ -877,7 +890,7 @@ public class SmartScoreController implements SmartScoreControllerAPI {
         for (SmartSubject smartSubject : list) {
             AverageScoreVo averageScoreVo = new AverageScoreVo();
             Integer smartSemesterId = smartSubject.getId();
-            Double score =smartScoreService.getAverageScore(userId,semesterId,smartSemesterId);
+            Double score = smartScoreService.getAverageScore(userId, semesterId, smartSemesterId);
             averageScoreVo.setSubjectName(smartSubject.getName());
             if (ObjectUtils.isNotEmpty(score)) {
                 averageScoreVo.setScore(score);

+ 6 - 0
src/main/java/com/template/mapper/SmartSubjectRuleMapper.java

@@ -2,8 +2,13 @@ package com.template.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.template.model.evaluate.student.SmartSubjectRule;
+import com.template.model.pojo.SmartUser;
+import com.template.model.vo.TemplateRuleVo;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * <p>
  * 平分项管理 Mapper 接口
@@ -15,4 +20,5 @@ import org.springframework.stereotype.Repository;
 @Repository
 public interface SmartSubjectRuleMapper extends BaseMapper<SmartSubjectRule> {
 
+
 }

+ 5 - 1
src/main/java/com/template/mapper/SmartTemplateRuleMapper.java

@@ -2,8 +2,12 @@ package com.template.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.template.model.evaluate.student.SmartTemplateRule;
+import com.template.model.vo.TemplateRuleVo;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * <p>
  * 平分项管理 Mapper 接口
@@ -14,5 +18,5 @@ import org.springframework.stereotype.Repository;
  */
 @Repository
 public interface SmartTemplateRuleMapper extends BaseMapper<SmartTemplateRule> {
-
+    List<TemplateRuleVo> queryTemplateRuleByIds(@Param("gradeIds") List<Integer> gradeIds, @Param("termIds") List<Integer> termIds);
 }

+ 3 - 0
src/main/java/com/template/model/evaluate/student/SmartEvaluateStudent.java

@@ -60,6 +60,9 @@ public class SmartEvaluateStudent {
     @ApiModelProperty(value = "评语")
     public String scoreComment;
 
+    @ApiModelProperty(value = "科目数量")
+    public Integer subjectNum;
+
     @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
     @TableField(fill = FieldFill.INSERT)
     @TableLogic

+ 41 - 0
src/main/java/com/template/model/vo/TemplateRuleVo.java

@@ -0,0 +1,41 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-12-04
+ */
+@Data
+public class TemplateRuleVo {
+
+    /**
+     * 年级ID
+     */
+    private Integer gradeId;
+
+    /**
+     * 学期ID
+     */
+    private Integer termId;
+
+    /**
+     * 等级
+     */
+    private String level;
+
+    /**
+     * 评分区间
+     */
+    private String scoreRange;
+
+    /**
+     * 考试类型
+     */
+    private String examType;
+
+}

+ 10 - 7
src/main/java/com/template/services/SmartSubjectRuleService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.template.model.evaluate.student.SmartSubjectRule;
 import com.template.model.result.PageUtils;
+import com.template.model.vo.TemplateRuleVo;
 
 import java.util.List;
 
@@ -17,18 +18,20 @@ import java.util.List;
  */
 public interface SmartSubjectRuleService extends IService<SmartSubjectRule> {
 
-    public int insertSmartSubjectRule(SmartSubjectRule sa);
+    int insertSmartSubjectRule(SmartSubjectRule sa);
 
-    public int updateSmartSubjectRule(SmartSubjectRule sa);
+    int updateSmartSubjectRule(SmartSubjectRule sa);
 
-    public PageUtils<SmartSubjectRule> queryPageSmartSubjectRule(int currentPage, int pageCount, QueryWrapper<SmartSubjectRule> queryWrapper);
+    PageUtils<SmartSubjectRule> queryPageSmartSubjectRule(int currentPage, int pageCount, QueryWrapper<SmartSubjectRule> queryWrapper);
 
-    public int deleteSmartSubjectRuleById(int id);
+    int deleteSmartSubjectRuleById(int id);
 
-    public SmartSubjectRule getSmartSubjectRuleById(int id);
+    SmartSubjectRule getSmartSubjectRuleById(int id);
+
+    List<SmartSubjectRule> getSmartSubjectRuleList();
+
+    List<SmartSubjectRule> getSmartSubjectRuleByKey(QueryWrapper<SmartSubjectRule> queryWrapper);
 
-    public List<SmartSubjectRule> getSmartSubjectRuleList();
 
-    public List<SmartSubjectRule> getSmartSubjectRuleByKey(QueryWrapper<SmartSubjectRule> queryWrapper);
 
 }

+ 9 - 7
src/main/java/com/template/services/SmartTemplateRuleService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.template.model.evaluate.student.SmartTemplateRule;
 import com.template.model.result.PageUtils;
+import com.template.model.vo.TemplateRuleVo;
 
 import java.util.List;
 
@@ -17,18 +18,19 @@ import java.util.List;
  */
 public interface SmartTemplateRuleService extends IService<SmartTemplateRule> {
 
-    public int insertSmartTemplateRule(SmartTemplateRule sa);
+    int insertSmartTemplateRule(SmartTemplateRule sa);
 
-    public int updateSmartTemplateRule(SmartTemplateRule sa);
+    int updateSmartTemplateRule(SmartTemplateRule sa);
 
-    public PageUtils<SmartTemplateRule> queryPageSmartTemplateRule(int currentPage, int pageCount, QueryWrapper<SmartTemplateRule> queryWrapper);
+    PageUtils<SmartTemplateRule> queryPageSmartTemplateRule(int currentPage, int pageCount, QueryWrapper<SmartTemplateRule> queryWrapper);
 
-    public int deleteSmartTemplateRuleById(int id);
+    int deleteSmartTemplateRuleById(int id);
 
-    public SmartTemplateRule getSmartTemplateRuleById(int id);
+    SmartTemplateRule getSmartTemplateRuleById(int id);
 
-    public List<SmartTemplateRule> getSmartTemplateRuleList();
+    List<SmartTemplateRule> getSmartTemplateRuleList();
 
-    public List<SmartTemplateRule> getSmartTemplateRuleByKey(QueryWrapper<SmartTemplateRule> queryWrapper);
+    List<SmartTemplateRule> getSmartTemplateRuleByKey(QueryWrapper<SmartTemplateRule> queryWrapper);
 
+    List<TemplateRuleVo> queryTemplateRuleByIds(List<Integer> gradeIds, List<Integer> termIds);
 }

+ 8 - 1
src/main/java/com/template/services/impl/SmartTemplateRuleServiceImpl.java

@@ -8,6 +8,7 @@ import com.template.mapper.SmartTemplateRuleMapper;
 import com.template.model.evaluate.student.SmartTemplateRule;
 import com.template.model.evaluate.student.SmartTemplateRule;
 import com.template.model.result.PageUtils;
+import com.template.model.vo.TemplateRuleVo;
 import com.template.services.SmartTemplateRuleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -72,5 +73,11 @@ public class SmartTemplateRuleServiceImpl extends ServiceImpl<SmartTemplateRuleM
         List<SmartTemplateRule> result = smartTemplateRuleMapper.selectList(queryWrapper);
         return result;
     }
-    
+
+    @Override
+    public List<TemplateRuleVo> queryTemplateRuleByIds(List<Integer> gradeIds, List<Integer> termIds) {
+        List<TemplateRuleVo> result = smartTemplateRuleMapper.queryTemplateRuleByIds(gradeIds,termIds);
+        return result;
+    }
+
 }

+ 22 - 0
src/main/resources/mapper/template/SmartTemplateRuleMapper.xml

@@ -2,4 +2,26 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.template.mapper.SmartTemplateRuleMapper">
 
+    <resultMap type="com.template.model.vo.TemplateRuleVo" id="templateRuleMap">
+        <result property="gradeId" column="grade_id"/>
+        <result property="termId" column="term_id"/>
+        <result property="level" column="level"/>
+        <result property="scoreRange" column="score_range"/>
+        <result property="examType" column="exam_type"/>
+    </resultMap>
+
+    <select id="queryTemplateRuleByIds" resultType="com.template.model.vo.TemplateRuleVo" resultMap="templateRuleMap">
+        select sst.grade_id,sst.term_id,str.`level`,str.score_range,sst.exam_type from smart_template_rule str
+        inner join smart_subject_template sst on sst.grade_id in
+        <foreach collection="gradeIds" item="gradeId" index="index" open="(" close=")" separator=",">
+            ${gradeId}
+        </foreach>
+        and sst.term_id in
+        <foreach collection="termIds" item="termId" index="index" open="(" close=")" separator=",">
+            ${gradeId}
+        </foreach>
+        and sst.id = str.template_id and sst.deleted = 0
+        where sst.deleted = 0
+    </select>
+
 </mapper>