Browse Source

Merge remote-tracking branch 'origin/dev' into dev

大数据与最优化研究所 11 tháng trước cách đây
mục cha
commit
aabe29a3de

+ 2 - 0
src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentPlanAnswerResultMapper.java

@@ -28,6 +28,8 @@ public interface AssessmentPlanAnswerResultMapper extends MPJBaseMapper<Assessme
 
     List<AssessmentPlanAnswerDetailVo> getScaleQuestionResult(Long id);
 
+    List<AssessmentPlanAnswerDetailVo> getTextQuestionResult(Long id);
+
     List<AssessmentPlanAnswerDetailVo> getStudentQuestionResultList(@Param("templatePlanId") Long templatePlanId, @Param("studentUserId") Long studentUserId);
 
     List<AssessmentPlanAnswerDetailVo> getPlanQuestionResultList(@Param("templatePlanId") Long templatePlanId);

+ 5 - 1
src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentPlanAnswerStudentMapper.java

@@ -31,7 +31,11 @@ public interface AssessmentPlanAnswerStudentMapper extends MPJBaseMapper<Assessm
     @Update("UPDATE assessment_plan_answer_student set submit_status = 1,modify_date = NOW() where assessment_template_plan_id = #{id} and student_user_id = #{loginId}")
     Boolean submitAnswer(Long id, Long loginId);
 
-    @Select("SELECT COUNT(*) FROM assessment_plan_answer_student WHERE delete_mark = 0 AND assessment_template_plan_id = #{id}")
+    @Select("SELECT COUNT(t1.id) FROM assessment_plan_answer_student t1" +
+            " INNER JOIN base_student_school_roll t2 ON t1.student_user_id = t2.user_id" +
+            " INNER JOIN assessment_template_plan t3 ON t1.assessment_template_plan_id = t3.id" +
+            " WHERE t1.delete_mark = 0 AND t1.assessment_template_plan_id = #{id}" +
+            " AND t3.stduy_status = t2.stduy_status")
     Integer getStudentCount(Long id);
 
     @Select("SELECT submit_status FROM assessment_plan_answer_student WHERE delete_mark = 0 AND assessment_template_plan_id = #{id} and student_user_id = #{loginId}")

+ 27 - 13
src/main/java/com/xjrsoft/module/assessment/service/impl/AssessmentTemplatePlanServiceImpl.java

@@ -85,6 +85,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Random;
 import java.util.stream.Collectors;
 
@@ -450,6 +451,7 @@ public class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<Assess
             .eq(AssessmentPlanQuestion::getDeleteMark, DeleteMark.NODELETE.getCode())
             .eq(AssessmentPlanQuestion::getAssessmentTemplatePlanId, id)
         );
+        Map<Long, String> questionTypeMap = questionList.stream().collect(Collectors.toMap(AssessmentPlanQuestion::getAssessmentTemplatePlanId, AssessmentPlanQuestion::getType));
 
         //循环大题
         List<OneQuestionVo> oneList = new ArrayList<>();
@@ -478,11 +480,14 @@ public class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<Assess
         //量表
         List<AssessmentPlanAnswerDetailVo> scaleQuestionResult = resultMapper.getScaleQuestionResult(id);
 
+        //填空
+        List<AssessmentPlanAnswerDetailVo> textQuestionResult = resultMapper.getTextQuestionResult(id);
+
         //循环选项
         for (OneQuestionVo oneQuestion : oneList) {
             for (TwoQuestionVo twoQuestion : oneQuestion.getChildren()) {
                 List<AssessmentQuestionOptionResultVo> optionList = new ArrayList<>();
-                if("radio_question".equals(twoQuestion.getType()) || "multi_question".equals(twoQuestion.getType())){
+                if(AssessQuestionTypeEnum.RADIO.getCode().equals(twoQuestion.getType()) || AssessQuestionTypeEnum.MULTI.getCode().equals(twoQuestion.getType())){
                     for (AssessmentPlanQuestion assessmentQuestion : questionList) {
                         if(assessmentQuestion.getCategory() == 3 && assessmentQuestion.getParentId().equals(twoQuestion.getId())){
                             AssessmentQuestionOptionResultVo questionVo = BeanUtil.toBean(assessmentQuestion, AssessmentQuestionOptionResultVo.class);
@@ -493,7 +498,7 @@ public class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<Assess
                             optionList.add(questionVo);
                         }
                     }
-                }else if("judge_question".equals(twoQuestion.getType())){
+                }else if(AssessQuestionTypeEnum.JUDGE.getCode().equals(twoQuestion.getType())){
                     optionList.add(new AssessmentQuestionOptionResultVo(){{
                         setName("是");
                         Integer count = answerCountMap.get(twoQuestion.getId().toString() + "1");
@@ -506,28 +511,37 @@ public class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<Assess
                         setPercentage(vo.getStudentCount());
                         setCount(count == null?0:count);
                     }});
-                }else if("scale_question".equals(twoQuestion.getType())) {
+                }else if(AssessQuestionTypeEnum.SCALE.getCode().equals(twoQuestion.getType())) {
                     for (AssessmentPlanAnswerDetailVo detailVo : scaleQuestionResult) {
                         if(detailVo.getQuestionId().equals(twoQuestion.getId())){
                             optionList.add(new AssessmentQuestionOptionResultVo(){{
-                                setName(detailVo.getAnswerId());
+                                setName(detailVo.getAnswerId() + "星");
                                 Integer count = detailVo.getChooseCount();
                                 setPercentage(vo.getStudentCount());
                                 setCount(count == null?0:count);
                             }});
                         }
                     }
-                }else if("text_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);
-
-                            questionVo.setPercentage(vo.getStudentCount());
-                            optionList.add(questionVo);
+                }else if(AssessQuestionTypeEnum.TEXT.getCode().equals(twoQuestion.getType())) {
+                    AssessmentQuestionOptionResultVo questionVo = new AssessmentQuestionOptionResultVo();
+                    int notNullCount = 0;
+                    int nullCount = 0;
+                    for (AssessmentPlanAnswerDetailVo detailVo : textQuestionResult) {
+                        if(!Objects.equals(detailVo.getQuestionId(), twoQuestion.getId())){
+                            continue;
+                        }
+                        if(StrUtil.isNotEmpty(detailVo.getAnswerId())){
+                            notNullCount ++;
+                        }else{
+                            nullCount ++;
                         }
                     }
+
+                    Integer count = answerCountMap.get(twoQuestion.getId().toString() + "null");
+                    questionVo.setCount(notNullCount);
+                    questionVo.setName("已答题");
+                    questionVo.setPercentage(vo.getStudentCount());
+                    optionList.add(questionVo);
                 }
                 twoQuestion.setResultList(optionList);
             }

+ 11 - 3
src/main/resources/mapper/assessment/AssessmentPlanAnswerResultMapper.xml

@@ -12,15 +12,17 @@
         SELECT t2.name AS class_name,
         (SELECT COUNT(a1.id) FROM assessment_plan_answer_student a1
         INNER JOIN base_student_school_roll a2 ON a1.student_user_id = a2.user_id WHERE a2.class_id = t1.class_id
-        AND a1.assessment_template_plan_id = t1.assessment_template_plan_id) AS student_count,
+        AND a1.assessment_template_plan_id = t1.assessment_template_plan_id and a2.stduy_status = t3.stduy_status) AS student_count,
         (SELECT COUNT(a1.id) FROM assessment_plan_answer_student a1
         INNER JOIN base_student_school_roll a2 ON a1.student_user_id = a2.user_id WHERE a2.class_id = t1.class_id AND a1.submit_status = 1
-        AND a1.assessment_template_plan_id = t1.assessment_template_plan_id) submitted_count,
+        AND a1.assessment_template_plan_id = t1.assessment_template_plan_id and a2.stduy_status = t3.stduy_status) submitted_count,
         (SELECT COUNT(a1.id) FROM assessment_plan_answer_student a1
         INNER JOIN base_student_school_roll a2 ON a1.student_user_id = a2.user_id WHERE a2.class_id = t1.class_id
-        AND a1.assessment_template_plan_id = t1.assessment_template_plan_id AND (a1.submit_status = 0 OR a1.submit_status IS NULL)) AS unsubmitted_count
+        AND a1.assessment_template_plan_id = t1.assessment_template_plan_id AND (a1.submit_status = 0 OR a1.submit_status IS NULL)
+        and a2.stduy_status = t3.stduy_status) AS unsubmitted_count
         FROM assessment_plan_answer_class t1
         LEFT JOIN base_class t2 ON t1.class_id = t2.id
+        left join assessment_template_plan t3 on t3.id = t1.assessment_template_plan_id
         WHERE t1.delete_mark = 0 AND t1.assessment_template_plan_id = #{id}
         order by t2.name
     </select>
@@ -29,6 +31,12 @@
         SELECT question_id,answer_id,COUNT(*) AS choose_count FROM assessment_plan_answer_result WHERE delete_mark = 0 AND assessment_template_plan_id = #{id}
         GROUP BY question_id,answer_id
     </select>
+    <select id="getTextQuestionResult" resultType="com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerDetailVo">
+        SELECT t1.* 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 = 'text_question'
+    </select>
     <select id="getScaleQuestionResult" resultType="com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerDetailVo">
         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