浏览代码

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

大数据与最优化研究所 1 年之前
父节点
当前提交
1a9cd51d87

+ 17 - 0
src/main/java/com/xjrsoft/module/assessment/controller/AssessmentPlanAnswerController.java

@@ -12,6 +12,7 @@ import com.xjrsoft.module.assessment.dto.AssessmentPlanSubmitDto;
 import com.xjrsoft.module.assessment.dto.AssessmentTemplatePlanPageDto;
 import com.xjrsoft.module.assessment.dto.AssessmentTemplatePlanSureDto;
 import com.xjrsoft.module.assessment.service.IAssessmentTemplatePlanService;
+import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerClassResultVo;
 import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerStudentPageVo;
 import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerStudentVo;
 import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerTeacherPageVo;
@@ -127,4 +128,20 @@ public class AssessmentPlanAnswerController {
         boolean isSuccess = planService.saveAnswer(dto);
         return RT.ok(isSuccess);
     }
+
+    @GetMapping(value="class-result")
+    @ApiOperation(value = "班级答题情况")
+    @SaCheckPermission("assessmenttemplateplan:class-result")
+    public RT<List<AssessmentPlanAnswerClassResultVo>> classResult(@RequestParam Long id){
+        List<AssessmentPlanAnswerClassResultVo> resultList = planService.getClassResult(id);
+        return RT.ok(resultList);
+    }
+
+    @GetMapping(value="question-result")
+    @ApiOperation(value = "每道题的答题情况")
+    @SaCheckPermission("assessmenttemplateplan:question-result")
+    public RT<AssessmentTemplatePlanQuestionVo> questionResult(@RequestParam Long id){
+        AssessmentTemplatePlanQuestionVo resultList = planService.getQuestionResult(id);
+        return RT.ok(resultList);
+    }
 }

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

@@ -3,6 +3,8 @@ package com.xjrsoft.module.assessment.mapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.assessment.dto.AssessmentQuestionResultDto;
 import com.xjrsoft.module.assessment.entity.AssessmentPlanAnswerResult;
+import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerClassResultVo;
+import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerDetailVo;
 import com.xjrsoft.module.assessment.vo.AssessmentQuestionResultVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -19,4 +21,8 @@ import java.util.List;
 public interface AssessmentPlanAnswerResultMapper extends MPJBaseMapper<AssessmentPlanAnswerResult> {
 
     List<AssessmentQuestionResultVo> getResultList(@Param("dto") AssessmentQuestionResultDto dto);
+
+    List<AssessmentPlanAnswerClassResultVo> getClassResult(Long id);
+
+    List<AssessmentPlanAnswerDetailVo> getQuestionResult(Long id);
 }

+ 4 - 0
src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentPlanAnswerStudentMapper.java

@@ -5,6 +5,7 @@ import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.assessment.dto.AssessmentTemplatePlanSureDto;
 import com.xjrsoft.module.assessment.entity.AssessmentPlanAnswerStudent;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
 /**
@@ -30,4 +31,7 @@ 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}")
+    Integer getStudentCount(Long id);
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/assessment/service/IAssessmentTemplatePlanService.java

@@ -11,6 +11,8 @@ import com.xjrsoft.module.assessment.dto.AssessmentTemplatePlanSureDto;
 import com.xjrsoft.module.assessment.dto.UpdateAssessmentTemplatePlanDto;
 import com.xjrsoft.module.assessment.dto.UpdateAssessmentTemplatePlanTimeDto;
 import com.xjrsoft.module.assessment.entity.AssessmentTemplatePlan;
+import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerClassResultVo;
+import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerDetailVo;
 import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerStudentPageVo;
 import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerStudentVo;
 import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerTeacherPageVo;
@@ -80,4 +82,8 @@ public interface IAssessmentTemplatePlanService extends MPJBaseService<Assessmen
     List<AssessmentPlanAnswerStudentVo> getAnswerStudent(AssessmentPlanAnswerStudentDto dto);
 
     List<Long> getSemesterClass(Long id);
+
+    List<AssessmentPlanAnswerClassResultVo> getClassResult(Long id);
+
+    AssessmentTemplatePlanQuestionVo getQuestionResult(Long id);
 }

+ 71 - 0
src/main/java/com/xjrsoft/module/assessment/service/impl/AssessmentTemplatePlanServiceImpl.java

@@ -34,6 +34,8 @@ import com.xjrsoft.module.assessment.mapper.AssessmentQuestionMapper;
 import com.xjrsoft.module.assessment.mapper.AssessmentTemplateMapper;
 import com.xjrsoft.module.assessment.mapper.AssessmentTemplatePlanMapper;
 import com.xjrsoft.module.assessment.service.IAssessmentTemplatePlanService;
+import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerClassResultVo;
+import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerDetailVo;
 import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerStudentPageVo;
 import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerStudentVo;
 import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerTeacherPageVo;
@@ -350,4 +352,73 @@ public class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<Assess
     public List<Long> getSemesterClass(Long id) {
         return templatePlanMapper.getSemesterClass(id);
     }
+
+    @Override
+    public List<AssessmentPlanAnswerClassResultVo> getClassResult(Long id) {
+        return resultMapper.getClassResult(id);
+    }
+
+    @Override
+    public AssessmentTemplatePlanQuestionVo getQuestionResult(Long id) {
+        AssessmentTemplatePlan templatePlan = templatePlanMapper.selectById(id);
+        AssessmentTemplatePlanQuestionVo vo = BeanUtil.toBean(templatePlan, AssessmentTemplatePlanQuestionVo.class);
+        vo.setStudentCount(studentMapper.getStudentCount(id));
+        List<AssessmentPlanQuestion> questionList = planQuestionMapper.selectList(
+            new QueryWrapper<AssessmentPlanQuestion>().lambda()
+            .eq(AssessmentPlanQuestion::getDeleteMark, DeleteMark.NODELETE.getCode())
+            .eq(AssessmentPlanQuestion::getAssessmentTemplatePlanId, id)
+        );
+        List<AssessmentPlanAnswerDetailVo> questionResult = resultMapper.getQuestionResult(id);
+        Map<String, Integer> answerCountMap = new HashMap<>();
+        for (AssessmentPlanAnswerDetailVo countVo : questionResult) {
+            answerCountMap.put(countVo.getQuestionId().toString() + countVo.getAnswerId(), countVo.getChooseCount());
+        }
+        //循环大题
+        List<AssessmentQuestionVo> oneList = new ArrayList<>();
+        for (AssessmentPlanQuestion assessmentQuestion : questionList) {
+            if(assessmentQuestion.getCategory() == 1){
+                oneList.add(BeanUtil.toBean(assessmentQuestion, AssessmentQuestionVo.class));
+            }
+        }
+
+        //循环小题
+        for (AssessmentQuestionVo oneQuestion : oneList) {
+            List<AssessmentQuestionVo> twoList = new ArrayList<>();
+            for (AssessmentPlanQuestion assessmentQuestion : questionList) {
+                if(assessmentQuestion.getCategory() == 2 && assessmentQuestion.getParentId().equals(oneQuestion.getId())){
+                    AssessmentQuestionVo questionVo = BeanUtil.toBean(assessmentQuestion, AssessmentQuestionVo.class);
+                    twoList.add(questionVo);
+                }
+            }
+            oneQuestion.setChildren(twoList);
+        }
+
+        //循环选项
+        for (AssessmentQuestionVo oneQuestion : oneList) {
+            for (AssessmentQuestionVo twoQuestion : oneQuestion.getChildren()) {
+                List<AssessmentQuestionVo> optionList = new ArrayList<>();
+                for (AssessmentPlanQuestion assessmentQuestion : questionList) {
+                    if(assessmentQuestion.getCategory() == 3 && assessmentQuestion.getParentId().equals(twoQuestion.getId())){
+                        AssessmentQuestionVo questionVo = BeanUtil.toBean(assessmentQuestion, AssessmentQuestionVo.class);
+                        questionVo.setChooseCount(answerCountMap.get(assessmentQuestion.getParentId().toString() + assessmentQuestion.getId().toString()));
+                        optionList.add(questionVo);
+                    }
+                    if(assessmentQuestion.getCategory() == 2 && "judge_question".equals(assessmentQuestion.getType())){
+                        optionList.add(new AssessmentQuestionVo(){{
+                            setId(1L);
+                            setChooseCount(answerCountMap.get(assessmentQuestion.getId().toString() + "1"));
+                        }});
+                        optionList.add(new AssessmentQuestionVo(){{
+                            setId(2L);
+                            setChooseCount(answerCountMap.get(assessmentQuestion.getId().toString() + "2"));
+                        }});
+                    }
+                }
+                twoQuestion.setOptions(optionList);
+            }
+        }
+
+        vo.setChildren(oneList);
+        return vo;
+    }
 }

+ 29 - 0
src/main/java/com/xjrsoft/module/assessment/vo/AssessmentPlanAnswerClassResultVo.java

@@ -0,0 +1,29 @@
+package com.xjrsoft.module.assessment.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 考核计划答题参与班级表单出参
+* @Author dzx
+* @Date: 2024-04-01
+* @Version 1.0
+*/
+@Data
+public class AssessmentPlanAnswerClassResultVo {
+
+    @ApiModelProperty("班级名称")
+    private String className;
+
+    @ApiModelProperty("总人数")
+    private Integer studentCount;
+
+    @ApiModelProperty("已提交数量")
+    private Integer submittedCount;
+
+    @ApiModelProperty("未提交数量")
+    private Integer unsubmittedCount;
+
+
+
+}

+ 24 - 0
src/main/java/com/xjrsoft/module/assessment/vo/AssessmentPlanAnswerDetailVo.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.assessment.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 考核题目选项数量统计
+* @Author dzx
+* @Date: 2024-04-01
+* @Version 1.0
+*/
+@Data
+public class AssessmentPlanAnswerDetailVo {
+
+    @ApiModelProperty("问题id")
+    private Long questionId;
+
+    @ApiModelProperty("答案")
+    private String answerId;
+
+    @ApiModelProperty("数量")
+    private Integer chooseCount;
+
+}

+ 4 - 0
src/main/java/com/xjrsoft/module/assessment/vo/AssessmentQuestionVo.java

@@ -71,4 +71,8 @@ public class AssessmentQuestionVo implements ITreeNode<AssessmentQuestionVo, Lon
     @ApiModelProperty("答案")
     private String value;
 
+    @ApiModelProperty("选择数量")
+    private Integer chooseCount;
+
+
 }

+ 3 - 0
src/main/java/com/xjrsoft/module/assessment/vo/AssessmentTemplatePlanQuestionVo.java

@@ -44,4 +44,7 @@ public class AssessmentTemplatePlanQuestionVo {
     @ApiModelProperty("assessmentQuestion子表")
     private List<AssessmentQuestionVo> children;
 
+    @ApiModelProperty("学生人数")
+    private Integer studentCount;
+
 }

+ 2 - 2
src/main/resources/application-dev.yml

@@ -124,8 +124,8 @@ xjrsoft:
     secret1: z3R17Od4ROW1zPisguiQmTfx0NvcYKmoIu19-82vdtU
     agentid: 1000003
   mpWeChat:
-    appKey: wx93175d7fe68cd170
-    appSecret: 4bab1c5ccd9d4d1d7854464d7251becf
+    appKey: wx628ac080912b2a98
+    appSecret: f05692a5d71a9568d01a461928dd2b8f
   appletWeChat:
     appKey: wx72e974483a9174e4
     appSecret: 3bbe99f6964c9f4fc11a8aa1224ac4b3

+ 2 - 2
src/main/resources/application-pre.yml

@@ -108,8 +108,8 @@ xjrsoft:
     secret1: z3R17Od4ROW1zPisguiQmTfx0NvcYKmoIu19-82vdtU
     agentid: 1000003
   mpWeChat:
-    appKey: wx93175d7fe68cd170
-    appSecret: 4bab1c5ccd9d4d1d7854464d7251becf
+    appKey: wx628ac080912b2a98
+    appSecret: f05692a5d71a9568d01a461928dd2b8f
   appletWeChat:
     appKey: wx72e974483a9174e4
     appSecret: 3bbe99f6964c9f4fc11a8aa1224ac4b3

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

@@ -7,4 +7,22 @@
         SELECT question_id,GROUP_CONCAT(answer_id) as answer FROM assessment_plan_answer_result
         WHERE assessment_template_plan_id = #{dto.assessmentTemplatePlanId} AND student_user_id = #{dto.userId} GROUP BY question_id
     </select>
+
+    <select id="getClassResult" resultType="com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerClassResultVo">
+        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) 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) 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.submit_status = 0 OR a1.submit_status IS NULL)) AS unsubmitted_count
+        FROM assessment_plan_answer_class t1
+        LEFT JOIN base_class t2 ON t1.class_id = t2.id
+        WHERE t1.delete_mark = 0 AND t1.assessment_template_plan_id = #{id}
+    </select>
+
+    <select id="getQuestionResult" resultType="com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerDetailVo">
+        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>
 </mapper>

+ 6 - 0
src/main/resources/sqlScript/20210328_sql.sql → src/main/resources/sqlScript/20240328_sql.sql

@@ -56,6 +56,11 @@ CREATE TABLE `wf_asset_manage` (
   `user_id` BIGINT DEFAULT NULL COMMENT '使用人id[xjr_user]',
   `amount` DECIMAL(8,2) DEFAULT NULL COMMENT '金额',
   `status` SMALLINT DEFAULT 0 COMMENT '状态(0:未结束 1:结束)',
+  `area_type` VARCHAR(50) DEFAULT NULL COMMENT '区域类型',
+  `folder_id` BIGINT DEFAULT NULL COMMENT '附件id',
+  `base_office_build_id` BIGINT DEFAULT NULL COMMENT '楼栋id',
+  `floor_number` INT DEFAULT NULL COMMENT '楼层',
+  `room_number` VARCHAR(50) DEFAULT NULL COMMENT '门牌号',
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='资产管理';
 
@@ -156,6 +161,7 @@ CREATE TABLE `assessment_template_plan` (
   `type` VARCHAR(30) DEFAULT 0 COMMENT '选人方式(全部:all 随机:random)',
   `random_number` INT DEFAULT NULL COMMENT '随机人数',
   `assessment_template_id` BIGINT DEFAULT NULL COMMENT '考核模板id(assessment_template)',
+  base_semester_id BIGINT DEFAULT NULL COMMENT '学期id(base_semester)',
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='考核计划';