diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/QuestionnaireMapper.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/QuestionnaireMapper.java index 2126ba5..3dccea4 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/QuestionnaireMapper.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/QuestionnaireMapper.java @@ -10,4 +10,6 @@ public interface QuestionnaireMapper { void update(QuestionnaireEntity factorProject); int queryQuestionnaireCount(QuestionnaireQuery questionnaireQuery); + List getListByName( QuestionnaireQuery questionnaireQuery); + } diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/model/QuestionnaireQuery.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/model/QuestionnaireQuery.java index 90d3b17..eb955f0 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/model/QuestionnaireQuery.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/model/QuestionnaireQuery.java @@ -6,6 +6,16 @@ public class QuestionnaireQuery extends BaseQuery { //调查问卷状态 1为正常 0为异常 private Integer status; + private String queryName; + + public String getQueryName() { + return queryName; + } + + public void setQueryName(String queryName) { + this.queryName = queryName; + } + public Integer getStatus() { return status; diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/QuestionnaireService.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/QuestionnaireService.java index 7925bb7..6d4b76e 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/QuestionnaireService.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/QuestionnaireService.java @@ -10,4 +10,6 @@ public interface QuestionnaireService { void update(QuestionnaireEntity factorProject); int queryQuestionnaireCount(QuestionnaireQuery questionnaireQuery); + List getListByName(QuestionnaireQuery questionnaireQuery); + } diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/QuestionnaireOptionServiceImpl.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/QuestionnaireOptionServiceImpl.java index 1c91668..1e4970a 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/QuestionnaireOptionServiceImpl.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/QuestionnaireOptionServiceImpl.java @@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; + @Service("questionnaireOptionService") public class QuestionnaireOptionServiceImpl implements QuestionnaireOptionService { @Autowired diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/QuestionnaireServiceImpl.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/QuestionnaireServiceImpl.java index 4add481..37c792c 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/QuestionnaireServiceImpl.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/QuestionnaireServiceImpl.java @@ -29,4 +29,9 @@ public class QuestionnaireServiceImpl implements QuestionnaireService { public int queryQuestionnaireCount(QuestionnaireQuery questionnaireQuery) { return questionnaireMapper.queryQuestionnaireCount(questionnaireQuery); } + + @Override + public List getListByName(QuestionnaireQuery questionnaireQuery) { + return questionnaireMapper.getListByName(questionnaireQuery); + } } diff --git a/platform-biz-service/src/main/resources/mainOrm/master/QuestionnaireMapper.xml b/platform-biz-service/src/main/resources/mainOrm/master/QuestionnaireMapper.xml index 2f022f0..2730d1e 100644 --- a/platform-biz-service/src/main/resources/mainOrm/master/QuestionnaireMapper.xml +++ b/platform-biz-service/src/main/resources/mainOrm/master/QuestionnaireMapper.xml @@ -31,6 +31,20 @@ + + update questionnaire diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/QuestionnaireController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/QuestionnaireController.java index 82def39..007ea84 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/QuestionnaireController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/QuestionnaireController.java @@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.List; +import java.util.Map; /** * 大同调查问卷 @@ -75,4 +76,11 @@ public class QuestionnaireController { List list= questionnaireFacade.getList(questionnaireQuery); ResultUtils.buildSuccessResultAndWrite(response,list); } + + //问卷调查统计 + @RequestMapping(method = RequestMethod.GET, value = "/questionnaire/getCount") + public void getCount(HttpServletResponse response,@RequestParam(required = true) String queryName){ + Map resMap = questionnaireFacade.getCount(queryName); + ResultUtils.buildSuccessResultAndWrite(response,resMap); + } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/QuestionnaireFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/QuestionnaireFacade.java index e15a05e..fed9dca 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/QuestionnaireFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/QuestionnaireFacade.java @@ -1,15 +1,23 @@ package com.lyms.platform.operate.web.facade; -import com.lyms.platform.permission.model.QuestionnaireEntity; -import com.lyms.platform.permission.model.QuestionnaireOptionEntity; -import com.lyms.platform.permission.model.QuestionnaireQuery; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.operate.web.utils.CollectionUtils; +import com.lyms.platform.permission.model.*; import com.lyms.platform.permission.service.QuestionnaireOptionService; +import com.lyms.platform.permission.service.QuestionnaireRecordDetailsService; +import com.lyms.platform.permission.service.QuestionnaireRecordService; import com.lyms.platform.permission.service.QuestionnaireService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.NumberFormat; +import java.util.HashMap; import java.util.List; +import java.util.Locale; +import java.util.Map; @Component public class QuestionnaireFacade { @@ -20,6 +28,14 @@ public class QuestionnaireFacade { @Qualifier("questionnaireOptionService") private QuestionnaireOptionService questionnaireOptionService; + @Autowired + @Qualifier("questionnaireRecordService") + private QuestionnaireRecordService questionnaireRecordService; + + @Autowired + @Qualifier("questionnaireRecordDetailsService") + private QuestionnaireRecordDetailsService questionnaireRecordDetailsService; + public List getList(QuestionnaireQuery questionnaireQuery){ return questionnaireService.getList(questionnaireQuery); } @@ -37,4 +53,75 @@ public class QuestionnaireFacade { return questionnaireOptionService.getInfo(id); } + public Map getCount(String queryName){ + QuestionnaireQuery questionnaireQuery = new QuestionnaireQuery(); + questionnaireQuery.setQueryName(queryName); + Map map = new HashMap<>(); + // 先找题目id + List list = questionnaireService.getListByName(questionnaireQuery); + if(CollectionUtils.isNotEmpty(list)){ + // 用题目id查题目总数 + QuestionnaireEntity questionnaireEntity = list.get(0); + List queryList = questionnaireOptionService.getList(questionnaireEntity.getId()); + if(CollectionUtils.isNotEmpty(queryList)){ + // 用题目id查答题人数 + QuestionnaireRecordQuery questionnaireRecordQuery = new QuestionnaireRecordQuery(); + questionnaireRecordQuery.setQuestionnaireId(questionnaireEntity.getId()); + List questionnaireRecordEntities = questionnaireRecordService.getList(questionnaireRecordQuery); + if(CollectionUtils.isNotEmpty(questionnaireRecordEntities)){ + // 答题人数 + int sum = questionnaireRecordEntities.size(); + map.put("answerCount",sum); + // 题目总数 + int topicCount = 0; + // 得分 + BigDecimal point = new BigDecimal(0); + // 总分 + BigDecimal sumPoint = new BigDecimal(0); + // 答对题目 + int trueCount = 0; + for (QuestionnaireRecordEntity temp : questionnaireRecordEntities) { + List DetailsList = questionnaireRecordDetailsService.getList(temp.getId()); + if(CollectionUtils.isNotEmpty(DetailsList)){ + for (QuestionnaireRecordDetailsEntity temp2 : DetailsList) { + // 有数据就计入总分 + sumPoint = sumPoint.add(new BigDecimal(temp2.getPoint())); + topicCount++; + // 答案为空或者答案和选择一直计入得分 + if (StringUtils.isEmpty(temp2.getAnswer()) || + (StringUtils.isNotEmpty(temp2.getAnswer()) && temp2.getAnswer().equals(temp2.getChoice()))){ + BigDecimal bigDecimal = new BigDecimal(temp2.getPoint()); + point = point.add(bigDecimal); + trueCount++; + } + } + } + } + // 题目总数 + map.put("topicCount",topicCount); + // 正确数量 + map.put("trueCount",trueCount); + // 错误数量 + map.put("falseCount",topicCount-trueCount); + + // 计算百分比值 + BigDecimal percentageValue =point + .divide(sumPoint, 4, RoundingMode.CEILING); + + // 格式化为百分比字符串(自动处理%和小数位数) + NumberFormat nf = NumberFormat.getPercentInstance(Locale.getDefault()); + nf.setMinimumFractionDigits(2); // 最小保留2位小数 + nf.setMaximumFractionDigits(2); // 最大保留2位小数 + + // 正确率 + String accuracyRate = nf.format(percentageValue); + map.put("accuracyRate",accuracyRate); + + } + } + } + + return map; + } + }