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

+ 1 - 1
src/main/java/com/template/controller/SmartEvaluateStudentController.java

@@ -200,7 +200,7 @@ public class SmartEvaluateStudentController implements SmartEvaluateStudentContr
             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());
+                        && e.getTermId().equals(student.getTermId())).collect(Collectors.toList());
                 if (ownerRules != null && ownerRules.size() > 0) {
                     for (TemplateRuleVo ownerRule : ownerRules) {
                         Integer minValue = 0;

+ 62 - 13
src/main/java/com/template/controller/SmartEvaluateStudentController2.java

@@ -17,6 +17,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -58,8 +59,8 @@ public class SmartEvaluateStudentController2 implements SmartEvaluateStudentCont
         SmartSubjectTemplate smartSubjectTemplate = smartTemplateRuleList.getSmartSubjectTemplate();
         QueryWrapper<SmartSubjectTemplate> queryWrapper1 = new QueryWrapper<>();
         queryWrapper1.eq("deleted", 0);
-        queryWrapper1.eq("grade", smartSubjectTemplate.getGrade());
-        queryWrapper1.eq("term", smartSubjectTemplate.getTerm());
+        queryWrapper1.eq("grade_id", smartSubjectTemplate.getGradeId());
+        queryWrapper1.eq("term_id", smartSubjectTemplate.getTermId());
         // queryWrapper1.eq("exam_type", smartSubjectTemplate.getExamType());
         List<SmartSubjectTemplate> listc = smartSubjectTemplateService.list(queryWrapper1);
         if (!listc.isEmpty()) {
@@ -71,14 +72,62 @@ public class SmartEvaluateStudentController2 implements SmartEvaluateStudentCont
         if (levels.size() != levelSet.size()) {
             return CommonResult.fail("存在重复等级");
         }
-        smartSubjectTemplate.setDeleted(0);
-        smartSubjectTemplateService.insertSmartSubjectTemplate(smartSubjectTemplate);
+        int insertTemplate = smartSubjectTemplateService.insertSmartSubjectTemplate(smartSubjectTemplate);
+        if (insertTemplate <= 0) {
+            return CommonResult.fail("操作失败");
+        }
+
+        List<SmartTemplateRule> rules = new ArrayList<>();
         for (int i = 0; i < ruleList.size(); i++) {
             SmartTemplateRule rule = ruleList.get(i);
-            rule.setTemplateId(smartSubjectTemplate.getId());
-            rule.setDeleted(0);
-            smartTemplateRuleService.insertSmartTemplateRule(rule);
+            rule.setTemplateId(insertTemplate);
+            rules.add(rule);
+        }
+        boolean insertRuleBatch = smartTemplateRuleService.saveBatch(rules);
+        if (!insertRuleBatch) {
+            return CommonResult.fail("操作失败");
         }
+
+        List<Integer> examTypes = new ArrayList<>();
+        for (SmartTermTemplate stt : smartSubjectTemplate.getExamTypes()) {
+            examTypes.add(stt.getId());
+        }
+        List<SmartScore> scores = smartScoreService.querySmartScoresByex(smartSubjectTemplate.getTermId(), smartSubjectTemplate.getGradeId(), examTypes);
+        List<Integer> userIds = scores.stream().map(SmartScore::getUserId).distinct().collect(Collectors.toList());
+        List<SmartEvaluateStudent> insertStudents = new ArrayList<>();
+        for (Integer userId : userIds) {
+            SmartEvaluateStudent ses = new SmartEvaluateStudent();
+            ses.setTermId(smartSubjectTemplate.getTermId());
+            ses.setTerm(smartSubjectTemplate.getTerm());
+            ses.setUserId(userId);
+
+            List<SmartScore> userScores = scores.stream().filter(e -> e.getUserId().equals(userId)).collect(Collectors.toList());
+            if (userScores != null && userScores.size() > 0) {
+                ses.setGradeName(userScores.get(0).getGrade());
+                ses.setGradeId(userScores.get(0).getGradeId());
+                ses.setClassId(userScores.get(0).getSchoolClassId());
+                ses.setClassName(userScores.get(0).getSchoolClass());
+                ses.setCardNo(userScores.get(0).getCardNo());
+                ses.setName(userScores.get(0).getName());
+                BigDecimal totalScoreNum = new BigDecimal(0.0);
+                Integer scoreNum = 0;
+                for (SmartScore us : userScores) {
+                    totalScoreNum = totalScoreNum.add(new BigDecimal(us.getScore()));
+                    scoreNum++;
+
+                }
+                ses.setScoreNum(totalScoreNum.doubleValue());
+                ses.setSubjectNum(scoreNum);
+            }
+            insertStudents.add(ses);
+        }
+        if(insertStudents != null && insertStudents.size() > 0){
+            boolean insertBatch = smartEvaluateStudentService.saveBatch(insertStudents);
+            if(!insertBatch){
+                return CommonResult.fail("操作失败");
+            }
+        }
+
         return CommonResult.ok("操作成功");
     }
 
@@ -133,7 +182,7 @@ public class SmartEvaluateStudentController2 implements SmartEvaluateStudentCont
                 smartTemplateRuleService.updateSmartTemplateRule(rule);
             }
         }
-        smartSubjectTemplate.setDeleted(0);
+
         smartSubjectTemplateService.updateSmartSubjectTemplate(smartSubjectTemplate);
         return CommonResult.ok("操作成功");
     }
@@ -149,8 +198,8 @@ public class SmartEvaluateStudentController2 implements SmartEvaluateStudentCont
         }
         QueryWrapper<SmartEvaluateStudent> queryWrapper1 = new QueryWrapper<>();
         queryWrapper1.eq("deleted", 0);
-        queryWrapper1.eq("grade_name", smartSubjectTemplate.getGrade());
-        queryWrapper1.eq("term", smartSubjectTemplate.getTerm());
+        queryWrapper1.eq("grade_id", smartSubjectTemplate.getGradeId());
+        queryWrapper1.eq("term_id", smartSubjectTemplate.getTermId());
         // queryWrapper1.eq("exam_type", smartSubjectTemplate.getExamType());
         queryWrapper1.isNotNull("score_level");
         List<SmartEvaluateStudent> evaluateData = smartEvaluateStudentService.getSmartEvaluateStudentByKey(queryWrapper1);
@@ -186,7 +235,7 @@ public class SmartEvaluateStudentController2 implements SmartEvaluateStudentCont
                 if (examtypes != null && examtypes.size() > 0) {
                     for (String examType : examTypes) {
                         Optional<SmartExamtype> oExamtype = examtypes.stream().filter(e -> String.valueOf(e.getId()).equals(examType)).findFirst();
-                        if(oExamtype != null && oExamtype.isPresent()){
+                        if (oExamtype != null && oExamtype.isPresent()) {
                             names.add(oExamtype.get().getName());
                             SmartTermTemplate examTypeData = new SmartTermTemplate();
                             examTypeData.setId(oExamtype.get().getId());
@@ -195,8 +244,8 @@ public class SmartEvaluateStudentController2 implements SmartEvaluateStudentCont
                         }
                     }
                 }
-                if(names != null && names.size() > 0){
-                    data.setExamType(StringUtils.join(names,","));
+                if (names != null && names.size() > 0) {
+                    data.setExamType(StringUtils.join(names, ","));
                 }
                 data.setExamTypes(examTypeDatas);
             }

+ 194 - 185
src/main/java/com/template/controller/SmartScoreController.java

@@ -10,6 +10,7 @@ import com.template.common.utils.ExcelUtils;
 import com.template.common.utils.paramUtils;
 import com.template.model.enumModel.*;
 import com.template.model.evaluate.student.SmartEvaluateStudent;
+import com.template.model.evaluate.student.SmartSubjectTemplate;
 import com.template.model.pojo.*;
 import com.template.model.request.deleteSmartScoreRequest;
 import com.template.model.request.insertScoreRequest;
@@ -81,7 +82,10 @@ public class SmartScoreController implements SmartScoreControllerAPI {
     private SmartAuthorGroupService smartAuthorGroupService;
 
     @Autowired
-    public SmartEvaluateStudentService smartEvaluateStudentService;
+    private SmartEvaluateStudentService smartEvaluateStudentService;
+
+    @Autowired
+    private SmartSubjectTemplateService smartSubjectTemplateService;
 
     @Override
     @DESRespondSecret(validated = true)
@@ -316,58 +320,58 @@ public class SmartScoreController implements SmartScoreControllerAPI {
             return CommonResult.fail("考试类型数据为空,添加失败");
         }
 
-        //学生综合评价中是否存在历史数据
-        //更新综合素质评价
-        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("添加失败");
-            }
-        } else {
-            //region 添加到学生综合素质评价表中
-            SmartEvaluateStudent ses = new SmartEvaluateStudent();
-            ses.setTermId(isr.getSemesterId());
-            ses.setTerm(isr.getSemester());
-            ses.setGradeName(isr.getGrade());
-            ses.setGradeId(isr.getGradeId());
-            ses.setExamType(examType == null ? "" : examType.getName());
-            ses.setExamTypeId(isr.getExamType());
-            ses.setClassId(isr.getSchoolClassId());
-            ses.setClassName(isr.getSchoolClass());
-            ses.setCardNo(isr.getCardNo());
-            ses.setName(user.getName());
-            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);
-
-            if (insertStudent <= 0) {
-                return CommonResult.fail("添加失败");
-            }
-            //endregion
-        }
-
         int result = smartScoreService.insertSmartScore(ss);
         if (result <= 0) {
             return CommonResult.fail("添加失败");
         }
 
+        //region 学生综合素质评价
+        SmartEvaluateStudent evaStudent = smartEvaluateStudentService.getEvaluateStudent(isr.getUserId(), isr.getSemesterId());
+        SmartSubjectTemplate subjectTemplate = smartSubjectTemplateService.queryTemplateByTermId(isr.getSemesterId(), isr.getGradeId());
+        if (subjectTemplate != null) {
+            List<String> examTypes = Arrays.asList(subjectTemplate.getExamType().split(","));
+            List<SmartScore> userScores = smartScoreService.getScores(isr.getUserId(), isr.getSemesterId(), examTypes);
+            BigDecimal totalScoreNum = new BigDecimal(0.0);
+            Integer scoreNum = 0;
+            if (userScores != null && userScores.size() > 0) {
+                for (SmartScore userScore : userScores) {
+                    totalScoreNum = totalScoreNum.add(new BigDecimal(userScore.getScore()));
+                    scoreNum++;
+                }
+            }
+
+            if (evaStudent != null) {
+                evaStudent.setScoreNum(totalScoreNum.doubleValue());
+                evaStudent.setSubjectNum(scoreNum);
+                int updateEva = smartEvaluateStudentService.updateSmartEvaluateStudent(evaStudent);
+                if (updateEva <= 0) {
+                    return CommonResult.fail("添加失败");
+                }
+            } else {
+                //region 添加到学生综合素质评价表中
+                SmartEvaluateStudent ses = new SmartEvaluateStudent();
+                ses.setTermId(isr.getSemesterId());
+                ses.setTerm(isr.getSemester());
+                ses.setGradeName(isr.getGrade());
+                ses.setGradeId(isr.getGradeId());
+                ses.setClassId(isr.getSchoolClassId());
+                ses.setClassName(isr.getSchoolClass());
+                ses.setCardNo(isr.getCardNo());
+                ses.setName(user.getName());
+                ses.setUserId(isr.getUserId());
+                ses.setScoreNum(totalScoreNum.doubleValue());
+                ses.setSubjectNum(scoreNum);
+
+                Integer insertStudent = smartEvaluateStudentService.insertSmartEvaluateStudent(ses);
+
+                if (insertStudent <= 0) {
+                    return CommonResult.fail("添加失败");
+                }
+                //endregion
+            }
+        }
+        //endregion
+
         return CommonResult.ok("添加成功");
     }
 
@@ -384,63 +388,6 @@ public class SmartScoreController implements SmartScoreControllerAPI {
             return CommonResult.fail("成绩数据无效,无法编辑");
         }
 
-        //更新综合素质评价
-        SmartEvaluateStudent evaStudent = smartEvaluateStudentService.getEvaluateStudent(usr.getUserId(), usr.getSemesterId(), usr.getExamType());
-        if (evaStudent != null) {
-            BigDecimal scoreNum = new BigDecimal(evaStudent.getScoreNum());
-            scoreNum = scoreNum.subtract(scoreNum);
-            scoreNum = scoreNum.add(new BigDecimal(usr.getScore()));
-
-            evaStudent.setScoreNum(scoreNum.doubleValue());
-
-            int updateStudent = smartEvaluateStudentService.updateSmartEvaluateStudent(evaStudent);
-            if (updateStudent <= 0) {
-                return CommonResult.fail("编辑失败");
-            }
-        } else {
-            //判断学生是否有效
-            SmartUser user = smartUserService.getSmartById(usr.getUserId());
-            if (user == null) {
-                return CommonResult.fail("学生信息无效,无法编辑学生成绩");
-            }
-
-            SmartExamtype examType = smartExamtypeService.getSmartById(usr.getExamType());
-            if (examType == null) {
-                return CommonResult.fail("考试类型数据为空,编辑失败");
-            }
-
-            //region 添加到学生综合素质评价表中
-            SmartEvaluateStudent ses = new SmartEvaluateStudent();
-            ses.setTermId(usr.getSemesterId());
-            ses.setTerm(usr.getSemester());
-            ses.setGradeName(usr.getGrade());
-            ses.setGradeId(usr.getGradeId());
-            ses.setExamType(examType == null ? "" : examType.getName());
-            ses.setExamTypeId(usr.getExamType());
-            ses.setClassId(usr.getSchoolClassId());
-            ses.setClassName(usr.getSchoolClass());
-            ses.setCardNo(usr.getCardNo());
-            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);
-
-            if (insertStudent <= 0) {
-                return CommonResult.fail("添加失败");
-            }
-            //endregion
-        }
-
         //判断学生是否有效
         SmartUser user = smartUserService.getSmartById(usr.getUserId());
         if (user == null) {
@@ -465,9 +412,58 @@ public class SmartScoreController implements SmartScoreControllerAPI {
         score.setScore(usr.getScore());
 
         int result = smartScoreService.updateSmartScore(score);
+        if (result <= 0) {
+            return CommonResult.fail("编辑失败");
+        }
 
+        //region 学生综合素质评价
+        SmartEvaluateStudent evaStudent = smartEvaluateStudentService.getEvaluateStudent(usr.getUserId(), usr.getSemesterId());
+        SmartSubjectTemplate subjectTemplate = smartSubjectTemplateService.queryTemplateByTermId(usr.getSemesterId(), usr.getGradeId());
+        if (subjectTemplate != null) {
+            List<String> examTypes = Arrays.asList(subjectTemplate.getExamType().split(","));
+            List<SmartScore> userScores = smartScoreService.getScores(usr.getUserId(), usr.getSemesterId(), examTypes);
+            BigDecimal totalScoreNum = new BigDecimal(0.0);
+            Integer scoreNum = 0;
+            if (userScores != null && userScores.size() > 0) {
+                for (SmartScore userScore : userScores) {
+                    totalScoreNum = totalScoreNum.add(new BigDecimal(userScore.getScore()));
+                    scoreNum++;
+                }
+            }
+
+            if (evaStudent != null) {
+                evaStudent.setScoreNum(totalScoreNum.doubleValue());
+                evaStudent.setSubjectNum(scoreNum);
+                int updateEva = smartEvaluateStudentService.updateSmartEvaluateStudent(evaStudent);
+                if (updateEva <= 0) {
+                    return CommonResult.fail("添加失败");
+                }
+            } else {
+                //region 添加到学生综合素质评价表中
+                SmartEvaluateStudent ses = new SmartEvaluateStudent();
+                ses.setTermId(usr.getSemesterId());
+                ses.setTerm(usr.getSemester());
+                ses.setGradeName(usr.getGrade());
+                ses.setGradeId(usr.getGradeId());
+                ses.setClassId(usr.getSchoolClassId());
+                ses.setClassName(usr.getSchoolClass());
+                ses.setCardNo(usr.getCardNo());
+                ses.setName(user.getName());
+                ses.setUserId(usr.getUserId());
+                ses.setScoreNum(totalScoreNum.doubleValue());
+                ses.setSubjectNum(scoreNum);
+
+                Integer insertStudent = smartEvaluateStudentService.insertSmartEvaluateStudent(ses);
+
+                if (insertStudent <= 0) {
+                    return CommonResult.fail("添加失败");
+                }
+                //endregion
+            }
+        }
+        //endregion
 
-        return result > 0 ? CommonResult.ok("编辑成功") : CommonResult.fail("编辑失败");
+        return CommonResult.ok("编辑成功");
     }
 
     @Override
@@ -492,36 +488,45 @@ public class SmartScoreController implements SmartScoreControllerAPI {
     @DESRespondSecret(validated = true)
     public CommonResult deleteSmartScoresByIds(deleteSmartScoreRequest dssr, BindingResult bindingResult) {
         List<SmartScore> scores = smartScoreService.querySmartScoreByIds(dssr.getIds());
+
         if (scores != null && scores.size() > 0) {
+
+            int result = smartScoreService.deleteSmartScoreByIds(dssr.getIds());
+            if (result <= 0) {
+                return CommonResult.fail("删除失败");
+            }
+
             //用户 学期 考试类型
             List<Integer> userIds = scores.stream().map(SmartScore::getUserId).collect(Collectors.toList());
             List<Integer> semesterIds = scores.stream().map(SmartScore::getSemesterId).collect(Collectors.toList());
-            List<Integer> examTypes = scores.stream().map(SmartScore::getExamType).collect(Collectors.toList());
-            List<SmartEvaluateStudent> students = smartEvaluateStudentService.getEvaluateStudents(userIds, semesterIds, examTypes);
-
+            List<Integer> gradeIds = scores.stream().map(SmartScore::getGradeId).collect(Collectors.toList());
+            List<SmartEvaluateStudent> students = smartEvaluateStudentService.getEvaluateStudents(userIds, semesterIds);
+            List<SmartSubjectTemplate> subjectTemplates = smartSubjectTemplateService.queryTemplateByTermIds(semesterIds, gradeIds);
             List<Integer> deleteStudents = new ArrayList<>();
-            for (SmartEvaluateStudent student : students) {
-                Optional<SmartScore> scoreData = scores.stream().filter(e -> e.getUserId().equals(student.getUserId()) && e.getSemesterId().equals(student.getTermId())
-                        && e.getExamType().equals(student.getExamTypeId())).findFirst();
-                if (scoreData != null && scoreData.isPresent()) {
-                    BigDecimal restScore = new BigDecimal(0.0);
-                    restScore = new BigDecimal(student.getScoreNum()).subtract(new BigDecimal(scoreData.get().getScore()));
-
-                    if (restScore.doubleValue() > 0) {
-                        student.setScoreNum(restScore.doubleValue());
-                        student.setSubjectNum(student.getSubjectNum() - 1);
-                    } else {
-                        // 删除成绩的时候如果减掉的分数小于等于零
-                        // 则把综合评价里的学生的成绩总分数数据删掉
-                        deleteStudents.add(student.getId());
+            List<SmartEvaluateStudent> updateStudents = new ArrayList<>();
+            for (SmartScore score : scores) {
+                Optional<SmartSubjectTemplate> oSubject = subjectTemplates.stream().filter(e -> e.getTermId().equals(score.getSemesterId()) && e.getGradeId().equals(score.getGradeId())).findFirst();
+                if (oSubject != null && oSubject.isPresent()) {//有设置规则
+                    List<String> examTypes = Arrays.asList(oSubject.get().getExamType().split(","));
+                    if (examTypes.contains(score.getExamType())) {
+                        Optional<SmartEvaluateStudent> oEStudent = students.stream().filter(e -> e.getUserId().equals(score.getUserId()) && e.getTermId().equals(score.getSemesterId())).findFirst();
+                        BigDecimal restScore = new BigDecimal(0.0);
+                        restScore = new BigDecimal(oEStudent.get().getScoreNum()).subtract(new BigDecimal(score.getScore()));
+                        if (restScore.doubleValue() > 0) {
+                            oEStudent.get().setScoreNum(restScore.doubleValue());
+                            oEStudent.get().setSubjectNum(oEStudent.get().getSubjectNum() - 1);
+                            updateStudents.add(oEStudent.get());
+                        } else {
+                            deleteStudents.add(oEStudent.get().getId());
+                        }
                     }
                 }
             }
 
             //删除和更新已有的综合评价数据
-            if (students != null && students.size() > 0) {
-                boolean updateStudents = smartEvaluateStudentService.updateBatchById(students);
-                if (!updateStudents) {
+            if (updateStudents != null && updateStudents.size() > 0) {
+                boolean updateResult = smartEvaluateStudentService.updateBatchById(students);
+                if (!updateResult) {
                     return CommonResult.fail("删除失败");
                 }
             }
@@ -535,9 +540,7 @@ public class SmartScoreController implements SmartScoreControllerAPI {
 
         }
 
-        int result = smartScoreService.deleteSmartScoreByIds(dssr.getIds());
-
-        return result > 0 ? CommonResult.ok("删除成功") : CommonResult.fail("删除失败");
+        return CommonResult.ok("删除成功");
     }
 
     @Override
@@ -800,73 +803,79 @@ public class SmartScoreController implements SmartScoreControllerAPI {
             return CommonResult.fail("耗材数据导入只支持Xls、Xlsx");
         }
 
+        boolean resultBool = smartScoreService.saveBatch(result);
+        if (!resultBool) {
+            CommonResult.fail("导入失败");
+        }
+
         //region 循环成绩加进综合评价学生里
-        List<SmartEvaluateStudent> addSess = new ArrayList<>();
-        List<SmartEvaluateStudent> sess = new ArrayList<>();
-        List<SmartScore> allUserScores = new ArrayList<>();
-        List<SmartExamtype> examtypes = new ArrayList<>();
+        List<SmartEvaluateStudent> updateStudents = new ArrayList<>();
+        List<SmartEvaluateStudent> insertStudents = new ArrayList<>();
         if (result != null && result.size() > 0) {
-            List<Integer> userIds = result.stream().map(SmartScore::getUserId).collect(Collectors.toList());
-            List<Integer> semesterIds = result.stream().map(SmartScore::getSemesterId).collect(Collectors.toList());
-            List<Integer> examTypes = result.stream().map(SmartScore::getExamType).collect(Collectors.toList());
-            allUserScores = smartScoreService.getScores(userIds, semesterIds, examTypes);
-            sess = smartEvaluateStudentService.getEvaluateStudents(userIds, semesterIds, examTypes);
-            examtypes = smartExamtypeService.getSmartByIdes(examTypes);
-        }
-        for (SmartScore score : result) {
-            List<SmartScore> userScores = allUserScores == null ? new ArrayList<>() : allUserScores.stream().filter(e -> e.getUserId().equals(score.getUserId())
-                    && e.getSemesterId().equals(score.getSemesterId()) && e.getExamType().equals(score.getExamType())).collect(Collectors.toList());
-            Optional<SmartEvaluateStudent> userSes = sess.stream().filter(e -> e.getUserId().equals(score.getUserId())
-                    && e.getTermId().equals(score.getSemesterId()) && e.getExamTypeId().equals(score.getExamType())).findFirst();
-            //region 添加到学生综合素质评价表中
-            SmartEvaluateStudent ses = new SmartEvaluateStudent();
-            if (userSes != null && userSes.isPresent()) {
-                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());
-                ses.setTerm(score.getSemester());
-                ses.setGradeName(score.getGrade());
-                ses.setGradeId(score.getGradeId());
-                ses.setExamType(examType != null && examType.isPresent() ? examType.get().getName() : "");
-                ses.setExamTypeId(score.getExamType());
-                ses.setClassId(score.getSchoolClassId());
-                ses.setClassName(score.getSchoolClass());
-                ses.setCardNo(score.getCardNo());
-                ses.setName(score.getName());
-                ses.setUserId(score.getUserId());
-
-                Integer subjectNum = 0;
-                BigDecimal totalScore = new BigDecimal(0.0);
+            List<Integer> userIds = result.stream().map(SmartScore::getUserId).distinct().collect(Collectors.toList());
+            List<Integer> semesterIds = result.stream().map(SmartScore::getSemesterId).distinct().collect(Collectors.toList());
+            List<Integer> gradeIds = result.stream().map(SmartScore::getGradeId).distinct().collect(Collectors.toList());
+            List<SmartEvaluateStudent> students = smartEvaluateStudentService.getEvaluateStudents(userIds, semesterIds);
+            List<SmartSubjectTemplate> subjectTemplates = smartSubjectTemplateService.queryTemplateByTermIds(semesterIds, gradeIds);
+            List<SmartScore> scores = smartScoreService.getScores(userIds, semesterIds);
+            for (SmartSubjectTemplate sst : subjectTemplates) {
+                List<String> examTypes = Arrays.asList(sst.getExamType().split(","));
+                for (Integer userId : userIds) {
+                    List<SmartScore> userScores = scores.stream().filter(e -> e.getUserId().equals(userId) && examTypes.contains(String.valueOf(e.getExamType()))).collect(Collectors.toList());
+                    BigDecimal totalScoreNum = new BigDecimal(0.0);
+                    Integer scoreNum = 0;
+                    if (userScores != null && userScores.size() > 0) {
+                        Optional<SmartEvaluateStudent> oStudent = students.stream().filter(e -> e.getTermId().equals(sst.getTermId()) && e.getUserId().equals(userId)).findFirst();
+                        for (SmartScore userScore : userScores) {
+                            totalScoreNum = totalScoreNum.add(new BigDecimal(userScore.getScore()));
+                            scoreNum++;
+                        }
 
-                for (SmartScore userScore : userScores) {
-                    totalScore.add(new BigDecimal(userScore.getScore()));
-                    subjectNum++;
+                        if (oStudent != null && oStudent.isPresent()) {
+                            oStudent.get().setScoreNum(totalScoreNum.doubleValue());
+                            oStudent.get().setSubjectNum(scoreNum);
+                            updateStudents.add(oStudent.get());
+                        } else {
+                            Optional<SmartScore> oSmartScore = result.stream().filter(e -> e.getSemesterId().equals(sst.getTermId()) && e.getUserId().equals(userId)).findFirst();
+                            SmartEvaluateStudent ses = new SmartEvaluateStudent();
+                            ses.setTermId(sst.getTermId());
+                            ses.setUserId(userId);
+                            if (oSmartScore != null && oSmartScore.isPresent()) {
+                                ses.setTerm(oSmartScore.get().getSemester());
+                                ses.setGradeName(oSmartScore.get().getGrade());
+                                ses.setGradeId(oSmartScore.get().getGradeId());
+                                ses.setClassId(oSmartScore.get().getSchoolClassId());
+                                ses.setClassName(oSmartScore.get().getSchoolClass());
+                                ses.setCardNo(oSmartScore.get().getCardNo());
+                                ses.setName(oSmartScore.get().getName());
+                            }
+                            ses.setScoreNum(totalScoreNum.doubleValue());
+                            ses.setSubjectNum(scoreNum);
+                            insertStudents.add(ses);
+                        }
+                    }
                 }
-
-                totalScore = totalScore.add(new BigDecimal(score.getScore()));
-                ses.setScoreNum(totalScore.doubleValue());//分数要计算 已经加进去的成绩的
-                ses.setSubjectNum(subjectNum + 1);
             }
 
-            addSess.add(ses);
-            //endregion
-        }
+            if (insertStudents != null && insertStudents.size() > 0) {
+                boolean insertBatch = smartEvaluateStudentService.saveBatch(insertStudents);
+                if (!insertBatch) {
+                    return CommonResult.fail("导入失败");
+                }
+            }
 
-        if (addSess != null && addSess.size() > 0) {
-            boolean insertEvaluate = smartEvaluateStudentService.saveBatch(addSess);
-            if (!insertEvaluate) {
-                return CommonResult.fail("导入失败");
+            if (updateStudents != null && updateStudents.size() > 0) {
+                boolean updateBatch = smartEvaluateStudentService.updateBatchById(updateStudents);
+                if (!updateBatch) {
+                    return CommonResult.fail("导入失败");
+                }
             }
         }
+
         //endregion
 
-        boolean resultBool = smartScoreService.saveBatch(result);
 
-        return resultBool ? CommonResult.ok("导入成功") : CommonResult.fail("导入失败");
+        return CommonResult.ok("导入成功");
     }
 
     @Override
@@ -877,7 +886,7 @@ public class SmartScoreController implements SmartScoreControllerAPI {
 
     @Override
     @DESRespondSecret(validated = true)
-    public CommonResult averageScore(int userId,int semesterId) {
+    public CommonResult averageScore(int userId, int semesterId) {
 //        LocalDateTime now = LocalDateTime.now();
 //        SmartSemester smartSemester = smartSemesterService.getSemester(now);
 //        if (ObjectUtils.isEmpty(smartSemester)) {

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

@@ -30,12 +30,6 @@ public class SmartEvaluateStudent {
     @ApiModelProperty(value = "年级Id")
     public Integer gradeId;
 
-    @ApiModelProperty(value = "考试类型")
-    public String examType;
-
-    @ApiModelProperty(value = "考试类型Id")
-    public Integer examTypeId;
-
     @ApiModelProperty(value = "班级")
     public String className;
 

+ 2 - 0
src/main/java/com/template/model/evaluate/student/SmartSubjectTemplate.java

@@ -73,6 +73,8 @@ public class SmartSubjectTemplate implements Serializable {
     private String updateUser;
 
     @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
     private Integer deleted;
 
 

+ 1 - 1
src/main/java/com/template/model/pojo/SmartSchool.java

@@ -92,7 +92,7 @@ public class SmartSchool implements Serializable {
 
     @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
     @TableField(fill = FieldFill.INSERT)
-        @TableLogic
+    @TableLogic
     private Integer deleted;
 
 

+ 2 - 2
src/main/java/com/template/services/SmartEvaluateStudentService.java

@@ -43,10 +43,10 @@ public interface SmartEvaluateStudentService extends IService<SmartEvaluateStude
 
     List<HistoricalEvaluationVo> getHistoricalEvaluation(String cardNo);
 
-    List<SmartEvaluateStudent> getEvaluateStudents(List<Integer> userIds, List<Integer> semesterIds, List<Integer> examTypes);
+    List<SmartEvaluateStudent> getEvaluateStudents(List<Integer> userIds, List<Integer> semesterIds);
 
     int deleteEvaluateStudents(List<Integer> ids);
 
-    SmartEvaluateStudent getEvaluateStudent(Integer userId, Integer semesterId, Integer examType);
+    SmartEvaluateStudent getEvaluateStudent(Integer userId, Integer semesterId);
 
 }

+ 6 - 0
src/main/java/com/template/services/SmartScoreService.java

@@ -56,7 +56,13 @@ public interface SmartScoreService extends IService<SmartScore> {
 
     List<SmartScore> getScores(Integer userId, Integer semesterId, Integer examType);
 
+    List<SmartScore> getScores(Integer userId, Integer semesterId, List<String> examTypes);
+
     List<SmartScore> getScores(List<Integer> userIds, List<Integer> semesterIds, List<Integer> examTypes);
 
+    List<SmartScore> getScores(List<Integer> userIds, List<Integer> semesterIds);
+
     List<SmartScore> querySmartScoreByIds(List<Integer> ids);
+
+    List<SmartScore> querySmartScoresByex(Integer semesterId,Integer gradeId, List<Integer> examTypes);
 }

+ 11 - 7
src/main/java/com/template/services/SmartSubjectTemplateService.java

@@ -17,18 +17,22 @@ import java.util.List;
  */
 public interface SmartSubjectTemplateService extends IService<SmartSubjectTemplate> {
 
-    public int insertSmartSubjectTemplate(SmartSubjectTemplate sa);
+    int insertSmartSubjectTemplate(SmartSubjectTemplate sa);
 
-    public int updateSmartSubjectTemplate(SmartSubjectTemplate sa);
+    int updateSmartSubjectTemplate(SmartSubjectTemplate sa);
 
-    public PageUtils<SmartSubjectTemplate> queryPageSmartSubjectTemplate(int currentPage, int pageCount, QueryWrapper<SmartSubjectTemplate> queryWrapper);
+    PageUtils<SmartSubjectTemplate> queryPageSmartSubjectTemplate(int currentPage, int pageCount, QueryWrapper<SmartSubjectTemplate> queryWrapper);
 
-    public int deleteSmartSubjectTemplateById(int id);
+    int deleteSmartSubjectTemplateById(int id);
 
-    public SmartSubjectTemplate getSmartSubjectTemplateById(int id);
+    SmartSubjectTemplate getSmartSubjectTemplateById(int id);
 
-    public List<SmartSubjectTemplate> getSmartSubjectTemplateList();
+    List<SmartSubjectTemplate> getSmartSubjectTemplateList();
 
-    public List<SmartSubjectTemplate> getSmartSubjectTemplateByKey(QueryWrapper<SmartSubjectTemplate> queryWrapper);
+    List<SmartSubjectTemplate> getSmartSubjectTemplateByKey(QueryWrapper<SmartSubjectTemplate> queryWrapper);
+
+    SmartSubjectTemplate queryTemplateByTermId(Integer termId, Integer gradeId);
+
+    List<SmartSubjectTemplate> queryTemplateByTermIds(List<Integer> termId, List<Integer> gradeIds);
 
 }

+ 2 - 4
src/main/java/com/template/services/impl/SmartEvaluateStudentServiceImpl.java

@@ -90,11 +90,10 @@ public class SmartEvaluateStudentServiceImpl extends ServiceImpl<SmartEvaluateSt
     }
 
     @Override
-    public List<SmartEvaluateStudent> getEvaluateStudents(List<Integer> userIds, List<Integer> semesterIds, List<Integer> examTypes) {
+    public List<SmartEvaluateStudent> getEvaluateStudents(List<Integer> userIds, List<Integer> semesterIds) {
         QueryWrapper<SmartEvaluateStudent> queryWrapper = new QueryWrapper<>();
         queryWrapper.in("user_id",userIds);
         queryWrapper.in("term_id",semesterIds);
-        queryWrapper.in("exam_type_id",examTypes);
         List<SmartEvaluateStudent> evaluateStudents = smartEvaluateStudentMapper.selectList(queryWrapper);
         return evaluateStudents;
     }
@@ -106,11 +105,10 @@ public class SmartEvaluateStudentServiceImpl extends ServiceImpl<SmartEvaluateSt
     }
 
     @Override
-    public SmartEvaluateStudent getEvaluateStudent(Integer userId, Integer semesterId, Integer examType) {
+    public SmartEvaluateStudent getEvaluateStudent(Integer userId, Integer semesterId) {
         QueryWrapper<SmartEvaluateStudent> queryWrapper = new QueryWrapper<>();
         queryWrapper.in("user_id",userId);
         queryWrapper.in("term_id",semesterId);
-        queryWrapper.in("exam_type_id",examType);
         SmartEvaluateStudent result = smartEvaluateStudentMapper.selectOne(queryWrapper);
         return result;
     }

+ 29 - 0
src/main/java/com/template/services/impl/SmartScoreServiceImpl.java

@@ -129,6 +129,16 @@ public class SmartScoreServiceImpl extends ServiceImpl<SmartScoreMapper, SmartSc
     }
 
     @Override
+    public List<SmartScore> getScores(Integer userId, Integer semesterId, List<String> examTypes) {
+        QueryWrapper<SmartScore> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id", userId);
+        queryWrapper.eq("semester_id", semesterId);
+        queryWrapper.in("exam_type", examTypes);
+        List<SmartScore> scores = smartScoreMapper.selectList(queryWrapper);
+        return scores;
+    }
+
+    @Override
     public List<SmartScore> getScores(List<Integer> userIds, List<Integer> semesterIds, List<Integer> examTypes) {
         QueryWrapper<SmartScore> queryWrapper = new QueryWrapper<>();
         queryWrapper.in("user_id", userIds);
@@ -139,6 +149,15 @@ public class SmartScoreServiceImpl extends ServiceImpl<SmartScoreMapper, SmartSc
     }
 
     @Override
+    public List<SmartScore> getScores(List<Integer> userIds, List<Integer> semesterIds) {
+        QueryWrapper<SmartScore> queryWrapper = new QueryWrapper<>();
+        queryWrapper.in("user_id", userIds);
+        queryWrapper.in("semester_id", semesterIds);
+        List<SmartScore> scores = smartScoreMapper.selectList(queryWrapper);
+        return scores;
+    }
+
+    @Override
     public List<SmartScore> querySmartScoreByIds(List<Integer> ids) {
         QueryWrapper<SmartScore> queryWrapper = new QueryWrapper<>();
         queryWrapper.in("id",ids);
@@ -146,4 +165,14 @@ public class SmartScoreServiceImpl extends ServiceImpl<SmartScoreMapper, SmartSc
         return scores;
     }
 
+    @Override
+    public List<SmartScore> querySmartScoresByex(Integer semesterId,Integer gradeId, List<Integer> examTypes) {
+        QueryWrapper<SmartScore> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("semester_id",semesterId);
+        queryWrapper.eq("grade_id",gradeId);
+        queryWrapper.in("exam_type",examTypes);
+        List<SmartScore>  scores = smartScoreMapper.selectList(queryWrapper);
+        return scores;
+    }
+
 }

+ 20 - 2
src/main/java/com/template/services/impl/SmartSubjectTemplateServiceImpl.java

@@ -31,7 +31,7 @@ public class SmartSubjectTemplateServiceImpl extends ServiceImpl<SmartSubjectTem
     @Override
     public int insertSmartSubjectTemplate(SmartSubjectTemplate sa) {
         int result = smartSubjectTemplateMapper.insert(sa);
-        return result;
+        return sa.getId();
     }
 
     @Override
@@ -72,5 +72,23 @@ public class SmartSubjectTemplateServiceImpl extends ServiceImpl<SmartSubjectTem
         List<SmartSubjectTemplate> result = smartSubjectTemplateMapper.selectList(queryWrapper);
         return result;
     }
-    
+
+    @Override
+    public SmartSubjectTemplate queryTemplateByTermId(Integer termId, Integer gradeId) {
+        QueryWrapper<SmartSubjectTemplate> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("term_id", termId);
+        queryWrapper.eq("grade_id", gradeId);
+        SmartSubjectTemplate result = smartSubjectTemplateMapper.selectOne(queryWrapper);
+        return result;
+    }
+
+    @Override
+    public List<SmartSubjectTemplate> queryTemplateByTermIds(List<Integer> termId, List<Integer> gradeIds) {
+        QueryWrapper<SmartSubjectTemplate> queryWrapper = new QueryWrapper<>();
+        queryWrapper.in("term_id", termId);
+        queryWrapper.in("grade_id", gradeIds);
+        List<SmartSubjectTemplate> result = smartSubjectTemplateMapper.selectList(queryWrapper);
+        return result;
+    }
+
 }