|
@@ -1,36 +1,47 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
|
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.ReplacementInstrumentActivityDto;
|
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
|
+import com.ym.mec.biz.dal.enums.ExportEnum;
|
|
|
import com.ym.mec.biz.dal.enums.MessageTypeEnum;
|
|
|
import com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum;
|
|
|
import com.ym.mec.biz.dal.enums.YesOrNoEnum;
|
|
|
import com.ym.mec.biz.dal.page.QuestionnaireUserResultQueryInfo;
|
|
|
import com.ym.mec.biz.dal.page.ReplacementInstrumentActivityQueryInfo;
|
|
|
import com.ym.mec.biz.service.CooperationOrganService;
|
|
|
+import com.ym.mec.biz.service.ExportService;
|
|
|
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.common.tenant.TenantContextHolder;
|
|
|
import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
+import com.ym.mec.util.excel.POIUtil;
|
|
|
import com.ym.mec.util.http.HttpUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.json.JSONObject;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
import com.ym.mec.biz.service.QuestionnaireUserResultService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+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;
|
|
|
+
|
|
|
@Service
|
|
|
public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, QuestionnaireUserResult> implements QuestionnaireUserResultService {
|
|
|
|
|
@@ -46,6 +57,10 @@ public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, Qu
|
|
|
private TeacherDao teacherDao;
|
|
|
@Autowired
|
|
|
private StudentDao studentDao;
|
|
|
+ @Autowired
|
|
|
+ private QuestionnaireQuestionDao questionnaireQuestionDao;
|
|
|
+ @Autowired
|
|
|
+ private ExportService exportService;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Long, QuestionnaireUserResult> getDAO() {
|
|
@@ -235,4 +250,90 @@ public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, Qu
|
|
|
pageInfo.setRows(dataList);
|
|
|
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
|
|
|
+ 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("暂无可导出数据");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @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());
|
|
|
+ }
|
|
|
+ questionList = questionnaireQuestionDao.findByActiveType(activeType.getCode(), TenantContextHolder.getTenantId());
|
|
|
+ }
|
|
|
+ questionList.removeAll(Collections.singleton(null));
|
|
|
+ return questionList;
|
|
|
+ }
|
|
|
+
|
|
|
+ @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();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|