Commit ae5d926ef4ac2280869020ebda8eb2af78657b1d
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
- platform-biz-service/src/main/java/com/lyms/platform/permission/model/QuestionnaireQuery.java
- platform-biz-service/src/main/java/com/lyms/platform/permission/service/QuestionnaireService.java
- platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/QuestionnaireOptionServiceImpl.java
- platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/QuestionnaireServiceImpl.java
- platform-biz-service/src/main/resources/mainOrm/master/QuestionnaireMapper.xml
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/QuestionnaireController.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/QuestionnaireFacade.java
platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/QuestionnaireMapper.java
View file @
ae5d926
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
platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/QuestionnaireOptionServiceImpl.java
View file @
ae5d926
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 | } |