|
@@ -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];
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|