Pārlūkot izejas kodu

Merge branch 'dev' of https://git.yingcaibx.com/tl/api into dev

brealinxx 1 gadu atpakaļ
vecāks
revīzija
0779a7cb7a

+ 38 - 32
src/main/java/com/xjrsoft/module/assessment/service/impl/AssessmentTemplatePlanServiceImpl.java

@@ -145,7 +145,7 @@ class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<AssessmentTem
                 classIds.add(classList.get(i).getId());
             }
         }
-
+        dto.setClassIds(classIds);
         //存入班级,并根据选人方式存入答题学生
         for (Long classId : dto.getClassIds()) {
             AssessmentPlanAnswerClass answerClass = new AssessmentPlanAnswerClass();
@@ -222,7 +222,7 @@ class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<AssessmentTem
                 classIds.add(classList.get(i).getId());
             }
         }
-
+        dto.setClassIds(classIds);
         //存入班级,并根据选人方式存入答题学生
         for (Long classId : dto.getClassIds()) {
             AssessmentPlanAnswerClass answerClass = new AssessmentPlanAnswerClass();
@@ -456,48 +456,54 @@ class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<AssessmentTem
         for (OneQuestionVo oneQuestion : oneList) {
             for (TwoQuestionVo twoQuestion : oneQuestion.getChildren()) {
                 List<AssessmentQuestionOptionResultVo> optionList = new ArrayList<>();
-                for (AssessmentPlanQuestion assessmentQuestion : questionList) {
-                    if(assessmentQuestion.getCategory() == 3 && assessmentQuestion.getParentId().equals(twoQuestion.getId())){
-                        AssessmentQuestionOptionResultVo questionVo = BeanUtil.toBean(assessmentQuestion, AssessmentQuestionOptionResultVo.class);
-                        questionVo.setCount(answerCountMap.get(assessmentQuestion.getParentId().toString() + assessmentQuestion.getId().toString()));
-                        BigDecimal bigDecimal = BigDecimal.valueOf(questionVo.getCount())
-                                .divide(BigDecimal.valueOf(vo.getStudentCount()))
-                                .multiply(BigDecimal.valueOf(100))
-                                .setScale(2, RoundingMode.HALF_UP);
-                        questionVo.setPercentage(bigDecimal.floatValue());
-                        optionList.add(questionVo);
-                    }
-                    if(assessmentQuestion.getCategory() == 2 && "judge_question".equals(assessmentQuestion.getType())){
-                        optionList.add(new AssessmentQuestionOptionResultVo(){{
-                            setName("是");
-                            BigDecimal bigDecimal = BigDecimal.valueOf(answerCountMap.get(assessmentQuestion.getId().toString() + "1"))
-                                    .divide(BigDecimal.valueOf(vo.getStudentCount()))
-                                    .multiply(BigDecimal.valueOf(100))
-                                    .setScale(2, RoundingMode.HALF_UP);
-                            setPercentage(bigDecimal.floatValue());
-                            setCount(answerCountMap.get(assessmentQuestion.getId().toString() + "1"));
-                        }});
-                        optionList.add(new AssessmentQuestionOptionResultVo(){{
-                            setName("否");
-                            BigDecimal bigDecimal = BigDecimal.valueOf(answerCountMap.get(assessmentQuestion.getId().toString() + "2"))
+                if("radio_question".equals(twoQuestion.getType()) || "multi_question".equals(twoQuestion.getType())){
+                    for (AssessmentPlanQuestion assessmentQuestion : questionList) {
+                        if(assessmentQuestion.getCategory() == 3 && assessmentQuestion.getParentId().equals(twoQuestion.getId())){
+                            AssessmentQuestionOptionResultVo questionVo = BeanUtil.toBean(assessmentQuestion, AssessmentQuestionOptionResultVo.class);
+                            Integer count = answerCountMap.get(assessmentQuestion.getParentId().toString() + assessmentQuestion.getId().toString());
+                            questionVo.setCount(count == null?0:count);
+
+                            BigDecimal bigDecimal = BigDecimal.valueOf(questionVo.getCount())
                                     .divide(BigDecimal.valueOf(vo.getStudentCount()))
                                     .multiply(BigDecimal.valueOf(100))
                                     .setScale(2, RoundingMode.HALF_UP);
-                            setPercentage(bigDecimal.floatValue());
-                            setCount(answerCountMap.get(assessmentQuestion.getId().toString() + "2"));
-                        }});
+                            questionVo.setPercentage(bigDecimal.floatValue());
+                            optionList.add(questionVo);
+                        }
                     }
                 }
-                if("scale_question".equals(twoQuestion.getType())) {
+                if("judge_question".equals(twoQuestion.getType())){
+                    optionList.add(new AssessmentQuestionOptionResultVo(){{
+                        setName("是");
+                        Integer count = answerCountMap.get(twoQuestion.getId().toString() + "1");
+                        BigDecimal bigDecimal = BigDecimal.valueOf(count == null?0:count)
+                                .divide(BigDecimal.valueOf(vo.getStudentCount()))
+                                .multiply(BigDecimal.valueOf(100))
+                                .setScale(2, RoundingMode.HALF_UP);
+                        setPercentage(bigDecimal.floatValue());
+                        setCount(count);
+                    }});
+                    optionList.add(new AssessmentQuestionOptionResultVo(){{
+                        setName("否");
+                        Integer count = answerCountMap.get(twoQuestion.getId().toString() + "2");
+                        BigDecimal bigDecimal = BigDecimal.valueOf(count == null?0:count)
+                                .divide(BigDecimal.valueOf(vo.getStudentCount()))
+                                .multiply(BigDecimal.valueOf(100))
+                                .setScale(2, RoundingMode.HALF_UP);
+                        setPercentage(bigDecimal.floatValue());
+                        setCount(count);
+                    }});
+                }else if("scale_question".equals(twoQuestion.getType())) {
                     for (AssessmentPlanAnswerDetailVo detailVo : scaleQuestionResult) {
                         if(detailVo.getQuestionId().equals(twoQuestion.getId())){
                             optionList.add(new AssessmentQuestionOptionResultVo(){{
                                 setName(detailVo.getAnswerId());
-                                BigDecimal bigDecimal = BigDecimal.valueOf(detailVo.getChooseCount())
+                                Integer count = detailVo.getChooseCount();
+                                BigDecimal bigDecimal = BigDecimal.valueOf(count == null?0:count)
                                         .divide(BigDecimal.valueOf(vo.getStudentCount())).multiply(BigDecimal.valueOf(100))
                                         .setScale(2, RoundingMode.HALF_UP);
                                 setPercentage(bigDecimal.floatValue());
-                                setCount(detailVo.getChooseCount());
+                                setCount(count);
                             }});
                         }
                     }

+ 1 - 1
src/main/java/com/xjrsoft/module/assessment/vo/AssessmentQuestionOptionResultVo.java

@@ -19,7 +19,7 @@ public class AssessmentQuestionOptionResultVo implements Serializable {
     private String name;
 
     @ApiModelProperty("选择数量")
-    private Integer count;
+    private Integer count = 0;
 
     @ApiModelProperty("占比")
     private Float percentage;

+ 1 - 1
src/main/resources/mapper/assessment/AssessmentPlanAnswerResultMapper.xml

@@ -30,7 +30,7 @@
         GROUP BY question_id,answer_id
     </select>
     <select id="getScaleQuestionResult" resultType="com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerDetailVo">
-        SELECT t1.question_id,t1.answer_id,COUNT(t1.*) AS choose_count FROM assessment_plan_answer_result t1
+        SELECT t1.question_id,t1.answer_id,COUNT(t1.id) AS choose_count FROM assessment_plan_answer_result t1
         INNER JOIN assessment_plan_question t2 ON t1.question_id = t2.id
         WHERE t1.delete_mark = 0 AND t1.assessment_template_plan_id = #{id}
         AND t2.type = 'scale_question'