Browse Source

问卷调查

zouxuan 3 years ago
parent
commit
090695d1ab

+ 4 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/QuestionnaireUserResultDao.java

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.dto.QuestionnaireResultDto;
 import com.ym.mec.biz.dal.dto.QuestionnaireUserResultDto;
 import com.ym.mec.biz.dal.dto.QuestionnaireUserResultDto;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
+import io.swagger.models.auth.In;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
 import java.util.List;
@@ -37,9 +38,11 @@ public interface QuestionnaireUserResultDao extends BaseDAO<Long, QuestionnaireU
      */
      */
     List<QuestionnaireResultDto> getQuestionResult(@Param("activeId") Integer activeId, @Param("activeType") String activeType);
     List<QuestionnaireResultDto> getQuestionResult(@Param("activeId") Integer activeId, @Param("activeType") String activeType);
 
 
-    List<Map<Integer, String>> queryUserName(String activeType);
+    List<Map<Integer, String>> queryUserName(Integer topicId);
 
 
     List<QuestionnaireUserResultDto> findResultCount(Map<String, Object> params);
     List<QuestionnaireUserResultDto> findResultCount(Map<String, Object> params);
 
 
     int countResultCount(Map<String, Object> params);
     int countResultCount(Map<String, Object> params);
+
+    List<QuestionnaireUserResultDto> queryUserResult(@Param("topicId") Integer topicId, @Param("userId") Integer userId);
 }
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportEnum.java

@@ -69,7 +69,7 @@ public enum ExportEnum implements BaseEnum<String, ExportEnum> {
     MUSIC_ENLIGHTENMENT_QUESTIONNAIRES("MUSIC_ENLIGHTENMENT_QUESTIONNAIRES", "启蒙课问卷导出"),
     MUSIC_ENLIGHTENMENT_QUESTIONNAIRES("MUSIC_ENLIGHTENMENT_QUESTIONNAIRES", "启蒙课问卷导出"),
     STUDENT_INSTRUMENT("STUDENT_INSTRUMENT", "乐保导出"),
     STUDENT_INSTRUMENT("STUDENT_INSTRUMENT", "乐保导出"),
     EXPORT_BILL("EXPORT_BILL", "对账单导出"),
     EXPORT_BILL("EXPORT_BILL", "对账单导出"),
-    QUESTIONNAIRE_USER_RESULT("QUESTIONNAIRE_USER_RESULT", "问卷调查导出"),
+//    QUESTIONNAIRE_USER_RESULT("QUESTIONNAIRE_USER_RESULT", "问卷调查导出"),
     STUDENT_VIP_COURSE_INFO("STUDENT_VIP_COURSE_INFO", "VIP课学员课程信息导出"),
     STUDENT_VIP_COURSE_INFO("STUDENT_VIP_COURSE_INFO", "VIP课学员课程信息导出"),
     STUDENT_MUSIC_THEORY_COURSE_INFO("STUDENT_MUSIC_THEORY_COURSE_INFO", "乐理课学员课程信息导出"),
     STUDENT_MUSIC_THEORY_COURSE_INFO("STUDENT_MUSIC_THEORY_COURSE_INFO", "乐理课学员课程信息导出"),
     EXERCISES_SITUATION("EXERCISES_SITUATION", "服务指标导出");
     EXERCISES_SITUATION("EXERCISES_SITUATION", "服务指标导出");

+ 10 - 40
mec-biz/src/main/java/com/ym/mec/biz/service/QuestionnaireUserResultService.java

@@ -1,28 +1,17 @@
 package com.ym.mec.biz.service;
 package com.ym.mec.biz.service;
 
 
-import com.alibaba.fastjson.JSONObject;
-import com.ym.mec.biz.dal.dto.ExportDto;
+import com.ym.mec.biz.dal.dto.QuestionnaireUserResultDto;
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityDto;
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityDto;
 import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
 import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
+import com.ym.mec.biz.dal.entity.QuestionnaireTopic;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
-import com.ym.mec.biz.dal.enums.ExportEnum;
-import com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum;
 import com.ym.mec.biz.dal.page.QuestionnaireUserResultQueryInfo;
 import com.ym.mec.biz.dal.page.QuestionnaireUserResultQueryInfo;
-import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 import com.ym.mec.common.service.BaseService;
-import com.ym.mec.common.tenant.TenantContextHolder;
-import com.ym.mec.util.date.DateUtil;
-import com.ym.mec.util.excel.POIUtil;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
 
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum.CLOUD_TEACHER_FEEDBACK;
+import java.util.List;
+import java.util.Map;
 
 
 public interface QuestionnaireUserResultService extends BaseService<Long, QuestionnaireUserResult> {
 public interface QuestionnaireUserResultService extends BaseService<Long, QuestionnaireUserResult> {
 
 
@@ -32,11 +21,11 @@ public interface QuestionnaireUserResultService extends BaseService<Long, Questi
 
 
     /**
     /**
      *
      *
-     * @param cooperationId
+     * @param topic
      * @param questionList
      * @param questionList
      * @return
      * @return
      */
      */
-    Map<String,Object> questionnaireUserResultExport(String activeType,Integer cooperationId, List<QuestionnaireQuestion> questionList);
+    Map<String,Object> getExportBody(QuestionnaireTopic topic,List<QuestionnaireQuestion> questionList);
 
 
     /**
     /**
      * 提交调查问卷
      * 提交调查问卷
@@ -54,28 +43,9 @@ public interface QuestionnaireUserResultService extends BaseService<Long, Questi
     */
     */
     void addResult(ReplacementInstrumentActivityDto replacementInstrumentActivity);
     void addResult(ReplacementInstrumentActivityDto replacementInstrumentActivity);
 
 
-    Object queryResultPage(QuestionnaireUserResultQueryInfo queryInfo);
-
-    /**
-    * @description: 获取问卷导出字段
-     * @param
-    * @return java.util.List<java.lang.String>
-    * @author zx
-    * @date 2022/2/14 11:18
-    */
-    List<String> getExportFields(Integer cooperationId, QuestionnaireActiveTypeEnum activeType,List<QuestionnaireQuestion> questionList);
-
-    /**
-    * @description: 获取问卷导出字段
-     * @param
-    * @return java.util.List<java.lang.String>
-    * @author zx
-    * @date 2022/2/14 11:18
-    */
-    Set<String> getExportBody(Integer cooperationId, QuestionnaireActiveTypeEnum activeType,List<QuestionnaireQuestion> questionList);
+    PageInfo<QuestionnaireUserResultDto> queryResultPage(QuestionnaireUserResultQueryInfo queryInfo);
 
 
-    List<QuestionnaireQuestion> getQuestionnaireQuestions(Integer cooperationId, QuestionnaireActiveTypeEnum activeType);
+    String[] getExportHeader(QuestionnaireTopic topic, List<QuestionnaireQuestion> questionList);
 
 
-    //导出问卷调查
-    void questionnaireUserResultExport(HttpServletResponse response, ExportDto exportDto) throws Exception;
+    List<QuestionnaireUserResultDto> queryUserResult(Integer topicId);
 }
 }

+ 38 - 111
mec-biz/src/main/java/com/ym/mec/biz/service/impl/QuestionnaireUserResultServiceImpl.java

@@ -3,7 +3,6 @@ package com.ym.mec.biz.service.impl;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.ExportDto;
 import com.ym.mec.biz.dal.dto.QuestionnaireUserResultDto;
 import com.ym.mec.biz.dal.dto.QuestionnaireUserResultDto;
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityDto;
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityDto;
 import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
 import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
@@ -12,7 +11,6 @@ import com.ym.mec.biz.dal.entity.QuestionnaireTopic;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
 import com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum;
 import com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum;
 import com.ym.mec.biz.dal.page.QuestionnaireUserResultQueryInfo;
 import com.ym.mec.biz.dal.page.QuestionnaireUserResultQueryInfo;
-import com.ym.mec.biz.service.ExportService;
 import com.ym.mec.biz.service.QuestionnaireUserResultService;
 import com.ym.mec.biz.service.QuestionnaireUserResultService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.exception.BizException;
@@ -21,17 +19,11 @@ import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.collection.MapUtil;
-import com.ym.mec.util.date.DateUtil;
-import com.ym.mec.util.excel.POIUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.OutputStream;
 import java.time.Instant;
 import java.time.Instant;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -55,8 +47,6 @@ public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, Qu
 	private StudentDao studentDao;
 	private StudentDao studentDao;
 	@Autowired
 	@Autowired
 	private QuestionnaireQuestionDao questionnaireQuestionDao;
 	private QuestionnaireQuestionDao questionnaireQuestionDao;
-	@Autowired
-	private ExportService exportService;
 
 
 	@Override
 	@Override
 	public BaseDAO<Long, QuestionnaireUserResult> getDAO() {
 	public BaseDAO<Long, QuestionnaireUserResult> getDAO() {
@@ -89,10 +79,10 @@ public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, Qu
 	}
 	}
 
 
 	@Override
 	@Override
-	public Map<String,Object> questionnaireUserResultExport(String activeType,Integer cooperationId,List<QuestionnaireQuestion> questionList) {
+	public Map<String,Object> getExportBody(QuestionnaireTopic topic,List<QuestionnaireQuestion> questionList) {
 		HashMap<String, Object> paramMap = new HashMap<>(2);
 		HashMap<String, Object> paramMap = new HashMap<>(2);
-		paramMap.put("activeId",cooperationId);
-		paramMap.put("activeType",activeType);
+		paramMap.put("topicId",topic.getId());
+		paramMap.put("tenantId",topic.getTenantId());
 		List<QuestionnaireUserResult> userResults = questionnaireUserResultDao.findAll(paramMap);
 		List<QuestionnaireUserResult> userResults = questionnaireUserResultDao.findAll(paramMap);
 
 
 		Map<String,Object> resultMap = new HashMap<>(2);
 		Map<String,Object> resultMap = new HashMap<>(2);
@@ -114,35 +104,33 @@ public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, Qu
 				userIdSet.add(userResult.getUserId());
 				userIdSet.add(userResult.getUserId());
 			}
 			}
 			List<Integer> userIdList = new ArrayList<>(userIdSet);
 			List<Integer> userIdList = new ArrayList<>(userIdSet);
+			Map<Integer, String> nameList = null;
 			Map<Integer, List<QuestionnaireUserResult>> userIdMap = userResults.parallelStream().collect(Collectors.groupingBy(QuestionnaireUserResult::getUserId));
 			Map<Integer, List<QuestionnaireUserResult>> userIdMap = userResults.parallelStream().collect(Collectors.groupingBy(QuestionnaireUserResult::getUserId));
-//			List<Integer> userIdList = new ArrayList<>(userIdMap.keySet());
-//			Collections.sort(userIdList);
-			Map<Integer, String> nameList;
-			if(cooperationId != null){
-				nameList = MapUtil.convertMybatisMap(questionnaireQuestionItemDao.queryUserName(cooperationId));
-			}else {
-				nameList = MapUtil.convertMybatisMap(questionnaireUserResultDao.queryUserName(activeType));
+			Map<Integer, String> phoneList = null;
+			Map<Integer, String> organNameMap = null;
+			Boolean isLogin = topic.getLoginFlag() == 1;
+			if(isLogin){
+				nameList = MapUtil.convertMybatisMap(questionnaireUserResultDao.queryUserName(topic.getId()));
+				phoneList = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(userIdList,",")));
+				organNameMap = MapUtil.convertMybatisMap(studentDao.queryStudentOrganNameMap(userIdList));
 			}
 			}
-			Map<Integer, String> phoneList = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(userIdList,",")));
-
-			Map<Integer, String> organNameMap = MapUtil.convertMybatisMap(studentDao.queryStudentOrganNameMap(userIdList));
 			for (Integer userId : userIdList) {
 			for (Integer userId : userIdList) {
 				List<QuestionnaireUserResult> userResultList = userIdMap.get(userId);
 				List<QuestionnaireUserResult> userResultList = userIdMap.get(userId);
 				if(userResultList != null && userResultList.size() > 0){
 				if(userResultList != null && userResultList.size() > 0){
 					QuestionnaireUserResult result1 = userResultList.get(0);
 					QuestionnaireUserResult result1 = userResultList.get(0);
 					Map<String,Object> jsonObject = new LinkedHashMap<>();
 					Map<String,Object> jsonObject = new LinkedHashMap<>();
-					body.add("cooperationId");
-					body.add("organName");
+					if(isLogin){
+						body.add("organName");
+						jsonObject.put("organName",organNameMap.get(userId));
+						body.add("userId");
+						jsonObject.put("userId",userId);
+						body.add("userName");
+						jsonObject.put("userName",nameList.get(userId));
+						body.add("phone");
+						jsonObject.put("phone",phoneList.get(userId));
+					}
 					body.add("createTime");
 					body.add("createTime");
-					body.add("userId");
-					body.add("userName");
-					body.add("phone");
-					jsonObject.put("cooperationId",cooperationId);
-					jsonObject.put("organName",organNameMap.get(userId));
 					jsonObject.put("createTime",result1.getCreateTime());
 					jsonObject.put("createTime",result1.getCreateTime());
-					jsonObject.put("userId",userId);
-					jsonObject.put("userName",nameList.get(userId));
-					jsonObject.put("phone",phoneList.get(userId));
 					//分解当前学员答案
 					//分解当前学员答案
 					for (QuestionnaireUserResult result : userResultList) {
 					for (QuestionnaireUserResult result : userResultList) {
 						//获取问题列表
 						//获取问题列表
@@ -234,7 +222,7 @@ public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, Qu
     }
     }
 
 
 	@Override
 	@Override
-	public Object queryResultPage(QuestionnaireUserResultQueryInfo queryInfo) {
+	public PageInfo<QuestionnaireUserResultDto> queryResultPage(QuestionnaireUserResultQueryInfo queryInfo) {
 		PageInfo<QuestionnaireUserResultDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		PageInfo<QuestionnaireUserResultDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<String, Object>();
 		Map<String, Object> params = new HashMap<String, Object>();
 		MapUtil.populateMap(params, queryInfo);
 		MapUtil.populateMap(params, queryInfo);
@@ -253,89 +241,28 @@ public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, Qu
 		return pageInfo;
 		return pageInfo;
 	}
 	}
 
 
-    @Override
-    public List<String> getExportFields(Integer cooperationId,QuestionnaireActiveTypeEnum activeType,List<QuestionnaireQuestion> questionList) {
-		List<String> column = new ArrayList<>();
-		if(questionList != null && questionList.size() > 0) {
-			column.add("活动编号");
-			column.add("分部");
-			column.add("提交时间");
-			column.add("学员编号");
-			column.add("学员姓名");
-			column.add("手机号");
-			List<String> collect = questionList.stream().map(e -> e.getContent()).collect(Collectors.toList());
-			column.addAll(collect);
-		}
-		return column;
-    }
-
 	@Override
 	@Override
-	public Set<String> getExportBody(Integer cooperationId, QuestionnaireActiveTypeEnum activeType,List<QuestionnaireQuestion> questionList) {
-		if(questionList != null && questionList.size() > 0) {
-			Map<String,Object> resultMap = this.questionnaireUserResultExport(activeType.getCode(),cooperationId,questionList);
-			return (Set<String>)resultMap.get("body");
-		}else {
-			throw new BizException("暂无可导出数据");
-		}
+	public List<QuestionnaireUserResultDto> queryUserResult(Integer topicId) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		return questionnaireUserResultDao.queryUserResult(topicId,sysUser.getId());
 	}
 	}
 
 
 	@Override
 	@Override
-	public List<QuestionnaireQuestion> getQuestionnaireQuestions(Integer cooperationId, QuestionnaireActiveTypeEnum activeType){
-		List<QuestionnaireQuestion> questionList;
-		if(cooperationId != null){
-			questionList = questionnaireQuestionDao.queryQuestionList(cooperationId);
-		}else {
-			if(activeType != CLOUD_TEACHER_FEEDBACK){
-				throw new BizException("报表中心暂不支持 {} 导出",CLOUD_TEACHER_FEEDBACK.getDesc());
+	public String[] getExportHeader(QuestionnaireTopic topic,List<QuestionnaireQuestion> questionList) {
+		if(questionList != null && questionList.size() > 0) {
+			List<String> column = new ArrayList<>();
+			if (topic.getLoginFlag() == 1) {
+				column.add("分部");
+				column.add("学员编号");
+				column.add("学员姓名");
+				column.add("手机号");
 			}
 			}
-			questionList = questionnaireQuestionDao.findByActiveType(activeType.getCode(), TenantContextHolder.getTenantId());
-		}
-		questionList.removeAll(Collections.singleton(null));
-		return questionList;
-	}
+			column.add("提交时间");
 
 
-	@Override
-	public void questionnaireUserResultExport(HttpServletResponse response, ExportDto exportDto) throws Exception {
-		Map<String, Object> info = exportDto.getQueryInfo();
-		Integer cooperationId = exportService.getParam(info, "cooperationId", Integer.class);
-		QuestionnaireActiveTypeEnum activeType = QuestionnaireActiveTypeEnum.valueOf(exportService.getParam(info, "activeType", String.class));
-		List<QuestionnaireQuestion> questionList = getQuestionnaireQuestions(cooperationId,activeType);
-		List<String> exportFields = getExportFields(cooperationId, activeType,questionList);
-		List<String> exportBody = new ArrayList<>(getExportBody(cooperationId, activeType,questionList));
-		if(exportBody.size() == 0){
-			throw new BizException("暂无可导出数据");
-		}
-		Map<String,String> headMap = new LinkedHashMap<>(exportDto.getHeadColumns().size());
-		for (int i = 0; i < exportFields.size(); i++) {
-			headMap.put(exportFields.get(i),exportBody.get(i));
-		}
-		headMap.keySet().removeAll(org.apache.commons.collections.CollectionUtils.subtract(exportFields, exportDto.getHeadColumns()));
-		String[] header = headMap.keySet().toArray(new String[headMap.keySet().size()]);
-		String[] body = headMap.values().toArray(new String[headMap.keySet().size()]);
-		Map<String,Object> resultMap = this.questionnaireUserResultExport(activeType.getCode(),cooperationId,questionList);
-		List<Map<String,Object>> jsonObjectList = (List<Map<String,Object>>)resultMap.get("jsonObjectList");
-		OutputStream outputStream = response.getOutputStream();
-		HSSFWorkbook workbook = null;
-		try {
-			workbook = POIUtil.exportExcel(header, body, jsonObjectList);
-			response.setContentType("application/octet-stream");
-			response.setHeader("Content-Disposition", "attachment;filename=replacement-" + DateUtil.getDate(new Date()) + ".xls");
-			response.flushBuffer();
-			outputStream = response.getOutputStream();
-			workbook.write(outputStream);
-			outputStream.flush();
-			workbook.close();
-		} catch (Exception e) {
-			e.printStackTrace();
-		} finally {
-			if (outputStream != null) {
-				try {
-					workbook.close();
-					outputStream.close();
-				} catch (IOException e) {
-					e.printStackTrace();
-				}
-			}
+			List<String> collect = questionList.stream().map(e -> e.getContent()).collect(Collectors.toList());
+			column.addAll(collect);
+			return column.toArray(new String[column.size()]);
 		}
 		}
+		return new String[0];
 	}
 	}
 }
 }

+ 19 - 1
mec-biz/src/main/resources/config/mybatis/QuestionnaireUserResultMapper.xml

@@ -33,6 +33,9 @@
 		LEFT JOIN sys_user su ON su.id_ = qur.user_id_
 		LEFT JOIN sys_user su ON su.id_ = qur.user_id_
 		<where>
 		<where>
             qur.tenant_id_ = #{tenantId}
             qur.tenant_id_ = #{tenantId}
+			<if test="topicId != null">
+				AND qur.questionnaire_topic_id_ = #{topicId}
+			</if>
 			<if test="userId != null">
 			<if test="userId != null">
 				AND qur.user_id_ = #{userId}
 				AND qur.user_id_ = #{userId}
 			</if>
 			</if>
@@ -212,6 +215,21 @@
 		ORDER BY qu1.user_id_,qq.sort_
 		ORDER BY qu1.user_id_,qq.sort_
 	</select>
 	</select>
 
 
+	<select id="queryUserResult" resultMap="QuestionnaireUserResultDto">
+		SELECT qu1.*, qur.username_, qur.phone_, qq.content_,GROUP_CONCAT( qqi.answer_value_ ORDER BY qqi.sort_ ) answer_value_
+		FROM (SELECT qu.user_id_,su.username_,su.phone_
+		FROM questionnaire_user_result qu
+		LEFT JOIN sys_user su ON su.id_ = qu.user_id_
+		WHERE qu.questionnaire_topic_id_ = #{topicId} AND qu.user_id_ = #{userId}
+		GROUP BY qu.user_id_ ) qur
+		LEFT JOIN questionnaire_user_result qu1 ON qur.user_id_ = qu1.user_id_
+		LEFT JOIN questionnaire_question qq ON qq.id_ = qu1.questionnaire_question_id_
+		LEFT JOIN questionnaire_question_item qqi ON FIND_IN_SET( qqi.id_, qu1.questionnaire_question_item_id_list_ )
+		WHERE qu1.questionnaire_topic_id_ = #{topicId}
+		GROUP BY qu1.user_id_,qq.id_
+		ORDER BY qu1.user_id_,qq.sort_
+	</select>
+
 	<resultMap id="QuestionnaireResultDto" type="com.ym.mec.biz.dal.dto.QuestionnaireResultDto">
 	<resultMap id="QuestionnaireResultDto" type="com.ym.mec.biz.dal.dto.QuestionnaireResultDto">
 		<result column="id_" property="userResultId" />
 		<result column="id_" property="userResultId" />
 		<result property="content" column="content_"/>
 		<result property="content" column="content_"/>
@@ -231,7 +249,7 @@
 	<select id="queryUserName" resultType="java.util.Map">
 	<select id="queryUserName" resultType="java.util.Map">
 		SELECT qur.user_id_ `key`,su.username_ `value` FROM questionnaire_user_result qur
 		SELECT qur.user_id_ `key`,su.username_ `value` FROM questionnaire_user_result qur
 		LEFT JOIN sys_user su ON su.id_ = qur.user_id_
 		LEFT JOIN sys_user su ON su.id_ = qur.user_id_
-		WHERE qur.user_id_ IS NOT NULL AND qur.active_type_ = #{activeType} AND su.username_ IS NOT NULL
+		WHERE qur.user_id_ IS NOT NULL AND qur.questionnaire_topic_id_ = #{topicId} AND su.username_ IS NOT NULL
 		GROUP BY qur.user_id_
 		GROUP BY qur.user_id_
 	</select>
 	</select>
 </mapper>
 </mapper>

+ 7 - 3
mec-student/src/main/java/com/ym/mec/student/controller/QuestionnaireUserResultController.java

@@ -6,18 +6,16 @@ import com.ym.mec.biz.dal.dao.QuestionnaireTopicDao;
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityDto;
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityDto;
 import com.ym.mec.biz.dal.entity.QuestionnaireTopic;
 import com.ym.mec.biz.dal.entity.QuestionnaireTopic;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
-import com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity;
 import com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum;
 import com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum;
+import com.ym.mec.biz.dal.page.QuestionnaireUserResultQueryInfo;
 import com.ym.mec.biz.service.QuestionnaireUserResultService;
 import com.ym.mec.biz.service.QuestionnaireUserResultService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.exception.BizException;
-import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 
 
@@ -40,6 +38,12 @@ public class QuestionnaireUserResultController extends BaseController {
         return succeed();
         return succeed();
     }
     }
 
 
+    @ApiOperation(value = "获取用户答题详情")
+    @RequestMapping("/queryUserResult")
+    public Object queryUserResult(Integer topicId) {
+        return succeed(questionnaireUserResultService.queryUserResult(topicId));
+    }
+
     @ApiOperation(value = "是否可以提交问卷")
     @ApiOperation(value = "是否可以提交问卷")
     @GetMapping("/commitFlag")
     @GetMapping("/commitFlag")
     public Object commitFlag(Integer cooperationId, QuestionnaireActiveTypeEnum activeType) {
     public Object commitFlag(Integer cooperationId, QuestionnaireActiveTypeEnum activeType) {

+ 1 - 21
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -132,16 +132,11 @@ public class ExportController extends BaseController {
     private MusicEnlightenmentQuestionnaireService musicEnlightenmentQuestionnaireService;
     private MusicEnlightenmentQuestionnaireService musicEnlightenmentQuestionnaireService;
     @Autowired
     @Autowired
     private MusicGroupService musicGroupService;
     private MusicGroupService musicGroupService;
-    @Autowired
-    private QuestionnaireUserResultService questionnaireUserResultService;
 
 
     @ApiOperation(value = "获取可导出字段")
     @ApiOperation(value = "获取可导出字段")
     @RequestMapping("export/getFields")
     @RequestMapping("export/getFields")
     @PreAuthorize("@pcs.hasPermissions('export/getFields')")
     @PreAuthorize("@pcs.hasPermissions('export/getFields')")
-    public HttpResponseResult export(ExportEnum exportEnum,Integer cooperationId, QuestionnaireActiveTypeEnum activeType) throws IOException {
-        if(exportEnum == ExportEnum.QUESTIONNAIRE_USER_RESULT){
-            return succeed(questionnaireUserResultService.getExportFields(cooperationId,activeType,questionnaireUserResultService.getQuestionnaireQuestions(cooperationId,activeType)));
-        }
+    public HttpResponseResult export(ExportEnum exportEnum) throws IOException {
         return succeed(exportService.getExportFields(exportEnum));
         return succeed(exportService.getExportFields(exportEnum));
     }
     }
 
 
@@ -153,8 +148,6 @@ public class ExportController extends BaseController {
             exportService.musicGroupRegister(response,exportDto);
             exportService.musicGroupRegister(response,exportDto);
         }else if(exportDto.getExportEnum() == ExportEnum.MUSIC_GROUP_NORMAL_STUDENT_NUM){
         }else if(exportDto.getExportEnum() == ExportEnum.MUSIC_GROUP_NORMAL_STUDENT_NUM){
             exportService.musicGroupNormalStudentNum(response,exportDto);
             exportService.musicGroupNormalStudentNum(response,exportDto);
-        }else if(exportDto.getExportEnum() == ExportEnum.QUESTIONNAIRE_USER_RESULT){
-            questionnaireUserResultService.questionnaireUserResultExport(response,exportDto);
         }else {
         }else {
             Map<String, Object> queryInfo = exportDto.getQueryInfo();
             Map<String, Object> queryInfo = exportDto.getQueryInfo();
             if(queryInfo == null){
             if(queryInfo == null){
@@ -1770,19 +1763,6 @@ public class ExportController extends BaseController {
         }
         }
         OutputStream outputStream = response.getOutputStream();
         OutputStream outputStream = response.getOutputStream();
         try {
         try {
-//            for (DegreeRegistration row : pageList.getRows()) {
-//                if (row.getGender().equals("1")) {
-//                    row.setGender("男");
-//                } else {
-//                    row.setGender("女");
-//                }
-//                if (row.getStatus().equals(2)) {
-//                    row.setStatusStr("已缴费");
-//                } else {
-//                    row.setStatusStr("未缴费");
-//                }
-//            }
-
             String[] header = {"姓名", "性别", "身份证号", "城市", "学校", "报考乐器", "报考级别", "乐理级别", "乐理级别证书", "家长联系电话", "考级费用", "乐理费用", "备注", "缴费状态", "订单编号", "商户订单号", "报名时间"};
             String[] header = {"姓名", "性别", "身份证号", "城市", "学校", "报考乐器", "报考级别", "乐理级别", "乐理级别证书", "家长联系电话", "考级费用", "乐理费用", "备注", "缴费状态", "订单编号", "商户订单号", "报名时间"};
             String[] body = {"name", "gender == 1?'男':'女'", "idcard", "city", "school", "subject", "level", "theoryLevel",
             String[] body = {"name", "gender == 1?'男':'女'", "idcard", "city", "school", "subject", "level", "theoryLevel",
                     "theoryCert", "mobile", "money", "theoryMoney", "memo", "status == 2?'已缴费':'未缴费'", "orderNo", "transNo", "createTime"};
                     "theoryCert", "mobile", "money", "theoryMoney", "memo", "status == 2?'已缴费':'未缴费'", "orderNo", "transNo", "createTime"};

+ 35 - 55
mec-web/src/main/java/com/ym/mec/web/controller/QuestionnaireUserResultController.java

@@ -1,14 +1,14 @@
 package com.ym.mec.web.controller;
 package com.ym.mec.web.controller;
 
 
 import com.ym.mec.biz.dal.dao.QuestionnaireQuestionDao;
 import com.ym.mec.biz.dal.dao.QuestionnaireQuestionDao;
+import com.ym.mec.biz.dal.dao.QuestionnaireTopicDao;
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityDto;
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityDto;
 import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
 import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
-import com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum;
+import com.ym.mec.biz.dal.entity.QuestionnaireTopic;
 import com.ym.mec.biz.dal.page.QuestionnaireUserResultQueryInfo;
 import com.ym.mec.biz.dal.page.QuestionnaireUserResultQueryInfo;
 import com.ym.mec.biz.service.QuestionnaireUserResultService;
 import com.ym.mec.biz.service.QuestionnaireUserResultService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.exception.BizException;
-import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.excel.POIUtil;
 import com.ym.mec.util.excel.POIUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
@@ -23,8 +23,6 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.OutputStream;
 import java.util.*;
 import java.util.*;
-import java.util.stream.Collectors;
-import static com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum.CLOUD_TEACHER_FEEDBACK;
 
 
 @RequestMapping("questionnaireUserResult")
 @RequestMapping("questionnaireUserResult")
 @Api(tags = "问题答案")
 @Api(tags = "问题答案")
@@ -35,6 +33,8 @@ public class QuestionnaireUserResultController extends BaseController {
     private QuestionnaireUserResultService questionnaireUserResultService;
     private QuestionnaireUserResultService questionnaireUserResultService;
     @Autowired
     @Autowired
     private QuestionnaireQuestionDao questionnaireQuestionDao;
     private QuestionnaireQuestionDao questionnaireQuestionDao;
+    @Autowired
+    private QuestionnaireTopicDao questionnaireTopicDao;
 
 
     @ApiOperation(value = "添加调查问卷(非活动)")
     @ApiOperation(value = "添加调查问卷(非活动)")
     @RequestMapping("/add")
     @RequestMapping("/add")
@@ -60,60 +60,40 @@ public class QuestionnaireUserResultController extends BaseController {
     @ApiOperation(value = "导出")
     @ApiOperation(value = "导出")
     @RequestMapping("/export")
     @RequestMapping("/export")
     @PreAuthorize("@pcs.hasPermissions('questionnaireUserResult/export')")
     @PreAuthorize("@pcs.hasPermissions('questionnaireUserResult/export')")
-    public void questionnaireUserResultExport(QuestionnaireActiveTypeEnum activeType, Integer cooperationId, HttpServletResponse response) throws Exception {
-        List<QuestionnaireQuestion> questionList;
-        if(cooperationId != null){
-            questionList = questionnaireQuestionDao.queryQuestionList(cooperationId);
-        }else {
-            if(activeType != CLOUD_TEACHER_FEEDBACK){
-                throw new BizException("报表中心暂不支持 {} 导出",CLOUD_TEACHER_FEEDBACK.getDesc());
-            }
-            questionList = questionnaireQuestionDao.findByActiveType(activeType.getCode(), TenantContextHolder.getTenantId());
-        }
+    public void questionnaireUserResultExport(Integer topicId, HttpServletResponse response) throws Exception {
+        QuestionnaireTopic topic = questionnaireTopicDao.get(topicId);
+        List<QuestionnaireQuestion> questionList = questionnaireQuestionDao.findByTopicId(topicId);
         questionList.removeAll(Collections.singleton(null));
         questionList.removeAll(Collections.singleton(null));
-        if(questionList != null && questionList.size() > 0){
-            List<String> column = new ArrayList<>();
-            column.add("活动编号");
-            column.add("分部");
-            column.add("提交时间");
-            column.add("学员编号");
-            column.add("学员姓名");
-            column.add("手机号");
-            List<String> collect = questionList.stream().map(e -> e.getContent()).collect(Collectors.toList());
-            column.addAll(collect);
-            String[] header = column.toArray(new String[column.size()]);
-            Map<String,Object> resultMap = questionnaireUserResultService.questionnaireUserResultExport(activeType.getCode(),cooperationId,questionList);
-            List<Map<String,Object>> jsonObjectList = (List<Map<String,Object>>)resultMap.get("jsonObjectList");
-            if(jsonObjectList.size() == 0){
-                throw new BizException("暂无可导出数据");
-            }
-            OutputStream outputStream = response.getOutputStream();
-            HSSFWorkbook workbook = null;
-            try {
-                Set<String> body1 = (Set<String>)resultMap.get("body");
-                String[] body = body1.toArray(new String[body1.size()]);
-                workbook = POIUtil.exportExcel(header, body, jsonObjectList);
-                response.setContentType("application/octet-stream");
-                response.setHeader("Content-Disposition", "attachment;filename=replacement-" + DateUtil.getDate(new Date()) + ".xls");
-                response.flushBuffer();
-                outputStream = response.getOutputStream();
-                workbook.write(outputStream);
-                outputStream.flush();
-                workbook.close();
-            } catch (Exception e) {
-                e.printStackTrace();
-            } finally {
-                if (outputStream != null) {
-                    try {
-                        workbook.close();
-                        outputStream.close();
-                    } catch (IOException e) {
-                        e.printStackTrace();
-                    }
+        String[] header = questionnaireUserResultService.getExportHeader(topic,questionList);
+        Map<String,Object> resultMap = questionnaireUserResultService.getExportBody(topic,questionList);
+        List<Map<String,Object>> jsonObjectList = (List<Map<String,Object>>)resultMap.get("jsonObjectList");
+        if(jsonObjectList.size() == 0){
+            throw new BizException("暂无可导出数据");
+        }
+        OutputStream outputStream = response.getOutputStream();
+        HSSFWorkbook workbook = null;
+        try {
+            Set<String> body1 = (Set<String>)resultMap.get("body");
+            String[] body = body1.toArray(new String[body1.size()]);
+            workbook = POIUtil.exportExcel(header, body, jsonObjectList);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=replacement-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+            workbook.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    workbook.close();
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
                 }
                 }
             }
             }
-        }else {
-            throw new BizException("暂无可导出数据");
         }
         }
     }
     }
 }
 }