Commit ae5d926ef4ac2280869020ebda8eb2af78657b1d

Authored by haorp
1 parent b133768f0c
Exists in dev

孕妇学校-调查问卷统计

Showing 8 changed files with 132 additions and 3 deletions

platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/QuestionnaireMapper.java View file @ ae5d926
... ... @@ -10,5 +10,7 @@
10 10 void update(QuestionnaireEntity factorProject);
11 11 int queryQuestionnaireCount(QuestionnaireQuery questionnaireQuery);
12 12  
  13 + List<QuestionnaireEntity> getListByName( QuestionnaireQuery questionnaireQuery);
  14 +
13 15 }
platform-biz-service/src/main/java/com/lyms/platform/permission/model/QuestionnaireQuery.java View file @ ae5d926
... ... @@ -6,6 +6,16 @@
6 6 //调查问卷状态 1为正常 0为异常
7 7 private Integer status;
8 8  
  9 + private String queryName;
  10 +
  11 + public String getQueryName() {
  12 + return queryName;
  13 + }
  14 +
  15 + public void setQueryName(String queryName) {
  16 + this.queryName = queryName;
  17 + }
  18 +
9 19  
10 20 public Integer getStatus() {
11 21 return status;
platform-biz-service/src/main/java/com/lyms/platform/permission/service/QuestionnaireService.java View file @ ae5d926
... ... @@ -10,5 +10,7 @@
10 10 void update(QuestionnaireEntity factorProject);
11 11 int queryQuestionnaireCount(QuestionnaireQuery questionnaireQuery);
12 12  
  13 + List<QuestionnaireEntity> getListByName(QuestionnaireQuery questionnaireQuery);
  14 +
13 15 }
platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/QuestionnaireOptionServiceImpl.java View file @ ae5d926
... ... @@ -7,6 +7,7 @@
7 7 import org.springframework.stereotype.Service;
8 8  
9 9 import java.util.List;
  10 +
10 11 @Service("questionnaireOptionService")
11 12 public class QuestionnaireOptionServiceImpl implements QuestionnaireOptionService {
12 13 @Autowired
platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/QuestionnaireServiceImpl.java View file @ ae5d926
... ... @@ -29,5 +29,10 @@
29 29 public int queryQuestionnaireCount(QuestionnaireQuery questionnaireQuery) {
30 30 return questionnaireMapper.queryQuestionnaireCount(questionnaireQuery);
31 31 }
  32 +
  33 + @Override
  34 + public List<QuestionnaireEntity> getListByName(QuestionnaireQuery questionnaireQuery) {
  35 + return questionnaireMapper.getListByName(questionnaireQuery);
  36 + }
32 37 }
platform-biz-service/src/main/resources/mainOrm/master/QuestionnaireMapper.xml View file @ ae5d926
... ... @@ -31,6 +31,20 @@
31 31 <include refid="orderAndLimit"/>
32 32 </select>
33 33  
  34 + <select id="getListByName" resultMap="QuestionnaireMap"
  35 + parameterType="com.lyms.platform.permission.model.QuestionnaireQuery">
  36 + SELECT id,
  37 + name,
  38 + status,hospital_id,created
  39 + FROM questionnaire
  40 + where
  41 + hospital_id = '2100002419'
  42 + <if test="queryName != null and queryName != ''">
  43 + and name like CONCAT('%' #{queryName}, '%')
  44 + </if>
  45 + <include refid="orderAndLimit"/>
  46 + </select>
  47 +
34 48 <update id="update" parameterType="com.lyms.platform.permission.model.QuestionnaireEntity">
35 49 update questionnaire
36 50 <set>
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/QuestionnaireController.java View file @ ae5d926
... ... @@ -12,6 +12,7 @@
12 12  
13 13 import javax.servlet.http.HttpServletResponse;
14 14 import java.util.List;
  15 +import java.util.Map;
15 16  
16 17 /**
17 18 * 大同调查问卷
... ... @@ -74,6 +75,13 @@
74 75 questionnaireQuery.setStatus(1);
75 76 List<QuestionnaireEntity> list= questionnaireFacade.getList(questionnaireQuery);
76 77 ResultUtils.buildSuccessResultAndWrite(response,list);
  78 + }
  79 +
  80 + //问卷调查统计
  81 + @RequestMapping(method = RequestMethod.GET, value = "/questionnaire/getCount")
  82 + public void getCount(HttpServletResponse response,@RequestParam(required = true) String queryName){
  83 + Map<String,Object> resMap = questionnaireFacade.getCount(queryName);
  84 + ResultUtils.buildSuccessResultAndWrite(response,resMap);
77 85 }
78 86 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/QuestionnaireFacade.java View file @ ae5d926
1 1 package com.lyms.platform.operate.web.facade;
2 2  
3   -import com.lyms.platform.permission.model.QuestionnaireEntity;
4   -import com.lyms.platform.permission.model.QuestionnaireOptionEntity;
5   -import com.lyms.platform.permission.model.QuestionnaireQuery;
  3 +import com.lyms.platform.common.utils.StringUtils;
  4 +import com.lyms.platform.operate.web.utils.CollectionUtils;
  5 +import com.lyms.platform.permission.model.*;
6 6 import com.lyms.platform.permission.service.QuestionnaireOptionService;
  7 +import com.lyms.platform.permission.service.QuestionnaireRecordDetailsService;
  8 +import com.lyms.platform.permission.service.QuestionnaireRecordService;
7 9 import com.lyms.platform.permission.service.QuestionnaireService;
8 10 import org.springframework.beans.factory.annotation.Autowired;
9 11 import org.springframework.beans.factory.annotation.Qualifier;
10 12 import org.springframework.stereotype.Component;
11 13  
  14 +import java.math.BigDecimal;
  15 +import java.math.RoundingMode;
  16 +import java.text.NumberFormat;
  17 +import java.util.HashMap;
12 18 import java.util.List;
  19 +import java.util.Locale;
  20 +import java.util.Map;
13 21  
14 22 @Component
15 23 public class QuestionnaireFacade {
... ... @@ -20,6 +28,14 @@
20 28 @Qualifier("questionnaireOptionService")
21 29 private QuestionnaireOptionService questionnaireOptionService;
22 30  
  31 + @Autowired
  32 + @Qualifier("questionnaireRecordService")
  33 + private QuestionnaireRecordService questionnaireRecordService;
  34 +
  35 + @Autowired
  36 + @Qualifier("questionnaireRecordDetailsService")
  37 + private QuestionnaireRecordDetailsService questionnaireRecordDetailsService;
  38 +
23 39 public List<QuestionnaireEntity> getList(QuestionnaireQuery questionnaireQuery){
24 40 return questionnaireService.getList(questionnaireQuery);
25 41 }
... ... @@ -35,6 +51,77 @@
35 51 public QuestionnaireOptionEntity getOptionInfo(Integer id){
36 52  
37 53 return questionnaireOptionService.getInfo(id);
  54 + }
  55 +
  56 + public Map<String,Object> getCount(String queryName){
  57 + QuestionnaireQuery questionnaireQuery = new QuestionnaireQuery();
  58 + questionnaireQuery.setQueryName(queryName);
  59 + Map<String,Object> map = new HashMap<>();
  60 + // 先找题目id
  61 + List<QuestionnaireEntity> list = questionnaireService.getListByName(questionnaireQuery);
  62 + if(CollectionUtils.isNotEmpty(list)){
  63 + // 用题目id查题目总数
  64 + QuestionnaireEntity questionnaireEntity = list.get(0);
  65 + List<QuestionnaireOptionEntity> queryList = questionnaireOptionService.getList(questionnaireEntity.getId());
  66 + if(CollectionUtils.isNotEmpty(queryList)){
  67 + // 用题目id查答题人数
  68 + QuestionnaireRecordQuery questionnaireRecordQuery = new QuestionnaireRecordQuery();
  69 + questionnaireRecordQuery.setQuestionnaireId(questionnaireEntity.getId());
  70 + List<QuestionnaireRecordEntity> questionnaireRecordEntities = questionnaireRecordService.getList(questionnaireRecordQuery);
  71 + if(CollectionUtils.isNotEmpty(questionnaireRecordEntities)){
  72 + // 答题人数
  73 + int sum = questionnaireRecordEntities.size();
  74 + map.put("answerCount",sum);
  75 + // 题目总数
  76 + int topicCount = 0;
  77 + // 得分
  78 + BigDecimal point = new BigDecimal(0);
  79 + // 总分
  80 + BigDecimal sumPoint = new BigDecimal(0);
  81 + // 答对题目
  82 + int trueCount = 0;
  83 + for (QuestionnaireRecordEntity temp : questionnaireRecordEntities) {
  84 + List<QuestionnaireRecordDetailsEntity> DetailsList = questionnaireRecordDetailsService.getList(temp.getId());
  85 + if(CollectionUtils.isNotEmpty(DetailsList)){
  86 + for (QuestionnaireRecordDetailsEntity temp2 : DetailsList) {
  87 + // 有数据就计入总分
  88 + sumPoint = sumPoint.add(new BigDecimal(temp2.getPoint()));
  89 + topicCount++;
  90 + // 答案为空或者答案和选择一直计入得分
  91 + if (StringUtils.isEmpty(temp2.getAnswer()) ||
  92 + (StringUtils.isNotEmpty(temp2.getAnswer()) && temp2.getAnswer().equals(temp2.getChoice()))){
  93 + BigDecimal bigDecimal = new BigDecimal(temp2.getPoint());
  94 + point = point.add(bigDecimal);
  95 + trueCount++;
  96 + }
  97 + }
  98 + }
  99 + }
  100 + // 题目总数
  101 + map.put("topicCount",topicCount);
  102 + // 正确数量
  103 + map.put("trueCount",trueCount);
  104 + // 错误数量
  105 + map.put("falseCount",topicCount-trueCount);
  106 +
  107 + // 计算百分比值
  108 + BigDecimal percentageValue =point
  109 + .divide(sumPoint, 4, RoundingMode.CEILING);
  110 +
  111 + // 格式化为百分比字符串(自动处理%和小数位数)
  112 + NumberFormat nf = NumberFormat.getPercentInstance(Locale.getDefault());
  113 + nf.setMinimumFractionDigits(2); // 最小保留2位小数
  114 + nf.setMaximumFractionDigits(2); // 最大保留2位小数
  115 +
  116 + // 正确率
  117 + String accuracyRate = nf.format(percentageValue);
  118 + map.put("accuracyRate",accuracyRate);
  119 +
  120 + }
  121 + }
  122 + }
  123 +
  124 + return map;
38 125 }
39 126  
40 127 }