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 | } |