Browse Source

食堂评价人数统计调整

dzx 11 months ago
parent
commit
3153e37940

+ 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}")

+ 18 - 1
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;
 
@@ -479,6 +480,9 @@ 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()) {
@@ -520,8 +524,21 @@ public class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<Assess
                     }
                 }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(count == null?0:count);
+                    questionVo.setCount(notNullCount);
                     questionVo.setName("已答题");
                     questionVo.setPercentage(vo.getStudentCount());
                     optionList.add(questionVo);

+ 6 - 0
src/main/resources/mapper/assessment/AssessmentPlanAnswerResultMapper.xml

@@ -31,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