浏览代码

调查问卷

zouxuan 4 年之前
父节点
当前提交
56985cdd64

+ 1 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/QuestionnaireQuestionDao.java

@@ -13,6 +13,5 @@ public interface QuestionnaireQuestionDao extends BaseDAO<Long, QuestionnaireQue
 
     List<QuestionnaireQuestion> findByTopicId(int topicId);
 
-    //获取导出字段
-    List<String> findQuestionColumnList(Integer cooperationId);
+    List<QuestionnaireQuestion> queryQuestionList(Integer cooperationId);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/QuestionnaireUserResultService.java

@@ -1,13 +1,24 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
+import org.json.JSONObject;
 import java.util.List;
+import java.util.Map;
 
 public interface QuestionnaireUserResultService extends BaseService<Long, QuestionnaireUserResult> {
 
     void batchInsert(List<QuestionnaireUserResult> questionnaireUserResultList);
 
     Object queryDetailPage(QueryInfo queryInfo);
+
+    /**
+     *
+     * @param cooperationId
+     * @param questionList
+     * @return
+     */
+    Map<String,Object> questionnaireUserResultExport(Integer cooperationId, List<QuestionnaireQuestion> questionList);
 }

+ 82 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/QuestionnaireUserResultServiceImpl.java

@@ -1,26 +1,38 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.QuestionnaireUserResultDto;
+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
+import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
+import com.ym.mec.biz.dal.entity.QuestionnaireQuestionItem;
+import com.ym.mec.biz.dal.page.ReplacementInstrumentActivityQueryInfo;
 import com.ym.mec.common.dal.BaseDAO;
+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.util.collection.MapUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
 import com.ym.mec.biz.service.QuestionnaireUserResultService;
-import com.ym.mec.biz.dal.dao.QuestionnaireUserResultDao;
 import org.springframework.stereotype.Service;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, QuestionnaireUserResult>  implements QuestionnaireUserResultService {
 	
 	@Autowired
 	private QuestionnaireUserResultDao questionnaireUserResultDao;
+	@Autowired
+	private QuestionnaireQuestionItemDao questionnaireQuestionItemDao;
+	@Autowired
+	private QuestionnaireQuestionDao questionnaireQuestionDao;
+	@Autowired
+	private TeacherDao teacherDao;
 
 	@Override
 	public BaseDAO<Long, QuestionnaireUserResult> getDAO() {
@@ -51,4 +63,69 @@ public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, Qu
 		pageInfo.setRows(dataList);
 		return pageInfo;
 	}
+
+	@Override
+	public Map<String,Object> questionnaireUserResultExport(Integer cooperationId,List<QuestionnaireQuestion> questionList) {
+		HashMap<String, Object> paramMap = new HashMap<>(2);
+		paramMap.put("activeId",cooperationId);
+		List<QuestionnaireUserResult> userResults = questionnaireUserResultDao.findAll(paramMap);
+
+		Map<String,Object> resultMap = new HashMap<>(2);
+		//导出列表数据
+		List<Map<String,Object>> jsonObjectList = new ArrayList<>();
+		Set<String> body = new LinkedHashSet<>();
+
+		if(userResults != null && userResults.size() > 0){
+			//获取所有的问题列表
+			List<Long> questionIdList = questionList.stream().map(e -> e.getId()).collect(Collectors.toList());
+			Map<Long, List<QuestionnaireQuestion>> questionMap = questionList.stream().collect(Collectors.groupingBy(QuestionnaireQuestion::getId));
+			//获取所有答案列表
+			paramMap.put("questionIdList",questionIdList);
+			List<QuestionnaireQuestionItem> questionItemList = questionnaireQuestionItemDao.findAll(paramMap);
+			Map<Long, List<QuestionnaireQuestionItem>> questionItemMap = questionItemList.stream().collect(Collectors.groupingBy(QuestionnaireQuestionItem::getId));
+			//按学员分组
+			Map<Integer, List<QuestionnaireUserResult>> userIdMap = userResults.stream().collect(Collectors.groupingBy(QuestionnaireUserResult::getUserId));
+			Set<Integer> userIdList = userIdMap.keySet();
+			Map<Integer, String> nameList = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(userIdList)));
+			Map<Integer, String> phoneList = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(userIdList,",")));
+			for (Integer userId : userIdList) {
+				List<QuestionnaireUserResult> userResultList = userIdMap.get(userId);
+				if(userResultList != null && userResultList.size() > 0){
+					Map<String,Object> jsonObject = new LinkedHashMap<>();
+					body.add("cooperationId");
+					body.add("userId");
+					body.add("userName");
+					body.add("phone");
+					jsonObject.put("cooperationId",cooperationId);
+					jsonObject.put("userId",userId);
+					jsonObject.put("userName",nameList.get(userId));
+					jsonObject.put("phone",phoneList.get(userId));
+					//分解当前学员答案
+					for (QuestionnaireUserResult result : userResultList) {
+						//获取问题列表
+						QuestionnaireQuestion question = questionMap.get(result.getQuestionnaireQuestionId()).get(0);
+						String questionnaireQuestionItemIdList = result.getQuestionnaireQuestionItemIdList();
+						StringBuffer userResult = new StringBuffer("");
+						if(StringUtils.isNotEmpty(questionnaireQuestionItemIdList)){
+							String[] split = questionnaireQuestionItemIdList.split(",");
+							for (String s : split) {
+								List<QuestionnaireQuestionItem> items = questionItemMap.get(Long.parseLong(s));
+								userResult.append(items.get(0).getAnswerValue()).append("\n");
+							}
+						}
+						String additionalValue = result.getAdditionalValue();
+						if(StringUtils.isNotEmpty(additionalValue)){
+							userResult.append(additionalValue);
+						}
+						body.add(question.getContent());
+						jsonObject.put(question.getContent(),userResult.toString());
+					}
+					jsonObjectList.add(jsonObject);
+				}
+			}
+		}
+		resultMap.put("jsonObjectList",jsonObjectList);
+		resultMap.put("body",body);
+		return resultMap;
+	}
 }

+ 10 - 1
mec-biz/src/main/resources/config/mybatis/QuestionnaireQuestionItemMapper.xml

@@ -24,7 +24,16 @@
 	
 	<!-- 全查询 -->
 	<select id="findAll" resultMap="QuestionnaireQuestionItem">
-		SELECT * FROM questionnaire_question_item ORDER BY id_
+		SELECT * FROM questionnaire_question_item 
+		<where>
+			<if test="questionIdList != null and questionIdList.size > 0">
+				AND questionnaire_question_id_ IN
+				<foreach collection="questionIdList" open="(" close=")" separator="," item="item">
+					#{item}
+				</foreach>
+			</if>
+		</where>
+		ORDER BY id_
 	</select>
 	
 	<!-- 向数据库增加一条记录 -->

+ 4 - 3
mec-biz/src/main/resources/config/mybatis/QuestionnaireQuestionMapper.xml

@@ -113,9 +113,10 @@
     <select id="findByTopicId" resultMap="QuestionnaireQuestion">
 		SELECT * FROM questionnaire_question WHERE questionnaire_topic_id_ = #{topicId}
 	</select>
-    <select id="findQuestionColumnList" resultType="java.lang.String">
-		SELECT qq.content_ FROM replacement_instrument_cooperation ric
+
+	<select id="queryQuestionList" resultMap="QuestionnaireQuestion">
+		SELECT qq.* FROM replacement_instrument_cooperation ric
 		LEFT JOIN questionnaire_question qq ON qq.questionnaire_topic_id_ = ric.topic_id_
-		WHERE ric.id_ = #{cooperationId}
+		WHERE ric.id_ = #{cooperationId} ORDER BY sort_
 	</select>
 </mapper>

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

@@ -28,7 +28,13 @@
 	
 	<!-- 全查询 -->
 	<select id="findAll" resultMap="QuestionnaireUserResult">
-		SELECT * FROM questionnaire_user_result ORDER BY id_
+		SELECT * FROM questionnaire_user_result
+		<where>
+			<if test="activeId != null">
+				active_id_ = #{activeId}
+			</if>
+		</where>
+		ORDER BY user_id_,id_
 	</select>
 	
 	<!-- 向数据库增加一条记录 -->

+ 65 - 0
mec-web/src/main/java/com/ym/mec/web/controller/QuestionnaireUserResultController.java

@@ -1,15 +1,28 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.dao.QuestionnaireQuestionDao;
+import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
 import com.ym.mec.biz.dal.page.QuestionnaireUserResultQueryInfo;
 import com.ym.mec.biz.service.QuestionnaireUserResultService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.QueryInfo;
+import com.ym.mec.util.date.DateUtil;
+import com.ym.mec.util.excel.POIUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.*;
+import java.util.stream.Collectors;
+
 @RequestMapping("questionnaireUserResult")
 @Api(tags = "问题答案")
 @RestController
@@ -17,6 +30,8 @@ public class QuestionnaireUserResultController extends BaseController {
 
     @Autowired
     private QuestionnaireUserResultService questionnaireUserResultService;
+    @Autowired
+    private QuestionnaireQuestionDao questionnaireQuestionDao;
 
     @ApiOperation(value = "分页查询")
     @GetMapping("/queryPage")
@@ -24,4 +39,54 @@ public class QuestionnaireUserResultController extends BaseController {
     public Object queryPage(QuestionnaireUserResultQueryInfo queryInfo) {
         return succeed(questionnaireUserResultService.queryDetailPage(queryInfo));
     }
+
+    @ApiOperation(value = "导出")
+    @RequestMapping("/export")
+    @PreAuthorize("@pcs.hasPermissions('questionnaireUserResult/export')")
+    public void questionnaireUserResultExport(Integer cooperationId, HttpServletResponse response) throws Exception {
+        List<QuestionnaireQuestion> questionList = questionnaireQuestionDao.queryQuestionList(cooperationId);
+        questionList.removeAll(Collections.singleton(null));
+        if(questionList != null && questionList.size() > 0){
+            List<String> column = new ArrayList<>();
+            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(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();
+                    }
+                }
+            }
+        }else {
+            throw new BizException("暂无可导出数据");
+        }
+    }
 }

+ 6 - 25
mec-web/src/main/java/com/ym/mec/web/controller/ReplacementInstrumentActivityController.java

@@ -9,10 +9,7 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.ReplacementInstrumentActivityQueryInfo;
-import com.ym.mec.biz.service.GoodsService;
-import com.ym.mec.biz.service.ReplacementInstrumentActivityService;
-import com.ym.mec.biz.service.ReplacementInstrumentCooperationService;
-import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
@@ -25,6 +22,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -36,6 +34,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @RequestMapping("replacementInstrumentActivity")
 @Api(tags = "乐器置换-调查问卷服务")
@@ -55,7 +54,7 @@ public class ReplacementInstrumentActivityController extends BaseController {
     @Autowired
     private QuestionnaireQuestionDao questionnaireQuestionDao;
     @Autowired
-    private QuestionnaireUserResultDao questionnaireUserResultDao;
+    private QuestionnaireUserResultService questionnaireUserResultService;
     @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
@@ -133,24 +132,6 @@ public class ReplacementInstrumentActivityController extends BaseController {
         return succeed(replacementInstrumentActivity);
     }
 
-//    @ApiOperation(value = "导出")
-//    @RequestMapping("/export")
-//    @PreAuthorize("@pcs.hasPermissions('questionnaireUserResult/export')")
-//    public void questionnaireUserResultExport(ReplacementInstrumentActivityQueryInfo queryInfo, HttpServletResponse response) throws Exception {
-//        List<String> questionColumn = questionnaireQuestionDao.findQuestionColumnList(queryInfo.getCooperationId());
-//        if(questionColumn != null && questionColumn.size() > 0){
-//            List<String> column = new ArrayList<>();
-//            column.add("学员编号");
-//            column.add("学员姓名");
-//            column.add("手机号");
-//            column.addAll(questionColumn);
-//            String[] header = column.toArray(new String[column.size()]);
-////            questionnaireUserResultDao.queryDetailPage()
-//        }else {
-//            throw new BizException("暂无可导出数据");
-//        }
-//    }
-
     @ApiOperation(value = "导出")
     @RequestMapping("/export")
     @PreAuthorize("@pcs.hasPermissions('replacementInstrumentActivity/export')")
@@ -187,8 +168,8 @@ public class ReplacementInstrumentActivityController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         HSSFWorkbook workbook = null;
         try {
-            String[] header = {"分部", "合作单位编号", "合作单位", "学员编号", "学员姓名", "联系电话", "声部", "品牌", "型号", "是否置换乐器"};
-            String[] body = {"organName", "cooperationOrganId", "cooperationOrganName", "userId", "userName", "mobileNo", "subjectName", "brand", "specification","hasInstrumentsId"};
+            String[] header = {"活动编号","分部", "合作单位编号", "合作单位", "缴费状态", "学员编号", "学员姓名", "联系电话", "声部", "品牌", "型号", "是否置换乐器"};
+            String[] body = {"replacementInstrumentCooperationId","organName", "cooperationOrganId", "cooperationOrganName","payStatus==NULL || payStatus==0?'未缴费':payStatus==1?'缴费中':'已缴费'", "userId", "userName", "mobileNo", "subjectName", "brand", "specification","hasInstrumentsId"};
             workbook = POIUtil.exportExcel(header, body, pageList.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=replacement-" + DateUtil.getDate(new Date()) + ".xls");