Browse Source

导出优化

zouxuan 3 years ago
parent
commit
5b1fe1e099

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

@@ -69,6 +69,7 @@ public enum ExportEnum implements BaseEnum<String, ExportEnum> {
     MUSIC_ENLIGHTENMENT_QUESTIONNAIRES("MUSIC_ENLIGHTENMENT_QUESTIONNAIRES", "启蒙课问卷导出"),
     STUDENT_INSTRUMENT("STUDENT_INSTRUMENT", "乐保导出"),
     EXPORT_BILL("EXPORT_BILL", "对账单导出"),
+    QUESTIONNAIRE_USER_RESULT("QUESTIONNAIRE_USER_RESULT", "问卷调查导出"),
     EXERCISES_SITUATION("EXERCISES_SITUATION", "服务指标导出");
 
     private String code;

+ 0 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseSalaryQueryInfo4Web.java

@@ -13,8 +13,6 @@ public class CourseSalaryQueryInfo4Web extends QueryInfo {
 
     private String month;
 
-    private String organId;
-
     private String organIdList;
 
     private GroupType groupType;
@@ -60,16 +58,6 @@ public class CourseSalaryQueryInfo4Web extends QueryInfo {
     }
 
     public void setOrganIdList(String organIdList) {
-        this.organId = organIdList;
-        this.organIdList = organIdList;
-    }
-
-    public String getOrganId() {
-        return organId;
-    }
-
-    public void setOrganId(String organId) {
-        this.organId = organIdList;
         this.organIdList = organIdList;
     }
 

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/IndexErrRecordQueryInfo.java

@@ -8,6 +8,8 @@ import com.ym.mec.common.page.QueryInfo;
  */
 public class IndexErrRecordQueryInfo extends QueryInfo {
 
+    private String organId;
+
     private String organIds;
 
     private Integer educationUserId;
@@ -16,11 +18,21 @@ public class IndexErrRecordQueryInfo extends QueryInfo {
 
     private String endDate;
 
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organIds = organIds;
+        this.organId = organId;
+    }
+
     public String getOrganIds() {
         return organIds;
     }
 
     public void setOrganIds(String organIds) {
+        this.organId = organId;
         this.organIds = organIds;
     }
 

+ 0 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/ExportService.java

@@ -8,7 +8,6 @@ import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
 import com.ym.mec.common.entity.HttpResponseResult;
 import org.springframework.scheduling.annotation.Async;
 
-import javax.annotation.PostConstruct;
 import javax.servlet.http.HttpServletResponse;
 import java.io.FileNotFoundException;
 import java.io.IOException;

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

@@ -1,14 +1,28 @@
 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.ReplacementInstrumentActivityDto;
 import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
 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.common.exception.BizException;
 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;
+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;
 
 public interface QuestionnaireUserResultService extends BaseService<Long, QuestionnaireUserResult> {
 
@@ -41,4 +55,27 @@ public interface QuestionnaireUserResultService extends BaseService<Long, Questi
     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);
+
+    List<QuestionnaireQuestion> getQuestionnaireQuestions(Integer cooperationId, QuestionnaireActiveTypeEnum activeType);
+
+    //导出问卷调查
+    void questionnaireUserResultExport(HttpServletResponse response, ExportDto exportDto) throws Exception;
 }

+ 4 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -54,6 +54,8 @@ import org.springframework.web.bind.annotation.GetMapping;
 import javax.annotation.PostConstruct;
 import javax.servlet.http.HttpServletResponse;
 
+import static com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum.CLOUD_TEACHER_FEEDBACK;
+
 @Service
 public class ExportServiceImpl implements ExportService {
 
@@ -196,7 +198,7 @@ public class ExportServiceImpl implements ExportService {
         for (int i = 0; i < headColumns.size(); i++) {
             headMap.put(headColumns.get(i),fieldColumns.get(i));
         }
-        headMap.keySet().removeAll(org.apache.commons.collections.CollectionUtils.subtract(headColumns, exportDto.getHeadColumns()));
+        headMap.keySet().removeAll(org.apache.commons.collections.CollectionUtils.subtract(headColumns, paramColumns));
         return headMap;
     }
 
@@ -788,7 +790,7 @@ public class ExportServiceImpl implements ExportService {
     @Override
     public List isSettlementCourseSalarys(Map<String, Object> info){
         CourseSalaryQueryInfo4Web queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info),CourseSalaryQueryInfo4Web.class);
-        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
+        queryInfo.setOrganIdList(organizationService.getEmployeeOrgan(queryInfo.getOrganIdList()));
         List<TeacherCourseSalaryDetail4WebDto> rows = courseScheduleTeacherSalaryService.findIsSettlementCourseSalarys(queryInfo).getRows();
         if (CollectionUtils.isEmpty(rows)) {
             throw new BizException("没有可导出的记录");

+ 102 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/QuestionnaireUserResultServiceImpl.java

@@ -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();
+				}
+			}
+		}
+	}
 }

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -928,8 +928,8 @@
 			<if test="month!=null">
 				AND DATE_FORMAT(cs.class_date_, '%Y-%m') = #{month}
 			</if>
-			<if test="organId != null and organId != ''">
-				AND FIND_IN_SET(t.organ_id_,#{organId})
+			<if test="organIdList != null and organIdList != ''">
+				AND FIND_IN_SET(t.organ_id_,#{organIdList})
 			</if>
 			<if test="search!=null">
 				AND (csts.course_schedule_id_=#{search} OR cs.name_ LIKE CONCAT('%', #{search}, '%'))

+ 8 - 7
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -89,8 +89,6 @@ public class ExportController extends BaseController {
     @Autowired
     private CooperationOrganService cooperationOrganService;
     @Autowired
-    private StudentPaymentRouteOrderDao studentPaymentRouteOrderDao;
-    @Autowired
     private StudentPaymentOrderDao studentPaymentOrderDao;
     @Autowired
     private StudentDao studentDao;
@@ -113,10 +111,6 @@ public class ExportController extends BaseController {
     @Autowired
     private ExportService exportService;
     @Autowired
-    private ManagerDownloadDao managerDownloadDao;
-    @Autowired
-    private IdGeneratorService idGeneratorService;
-    @Autowired
     private MusicGroupQuitService musicGroupQuitService;
     @Autowired
     private IndexBaseMonthDataService indexService;
@@ -138,11 +132,16 @@ public class ExportController extends BaseController {
     private MusicEnlightenmentQuestionnaireService musicEnlightenmentQuestionnaireService;
     @Autowired
     private MusicGroupService musicGroupService;
+    @Autowired
+    private QuestionnaireUserResultService questionnaireUserResultService;
 
     @ApiOperation(value = "获取可导出字段")
     @RequestMapping("export/getFields")
     @PreAuthorize("@pcs.hasPermissions('export/getFields')")
-    public HttpResponseResult export(ExportEnum exportEnum) throws IOException {
+    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)));
+        }
         return succeed(exportService.getExportFields(exportEnum));
     }
 
@@ -154,6 +153,8 @@ public class ExportController extends BaseController {
             exportService.musicGroupRegister(response,exportDto);
         }else if(exportDto.getExportEnum() == ExportEnum.MUSIC_GROUP_NORMAL_STUDENT_NUM){
             exportService.musicGroupNormalStudentNum(response,exportDto);
+        }else if(exportDto.getExportEnum() == ExportEnum.QUESTIONNAIRE_USER_RESULT){
+            questionnaireUserResultService.questionnaireUserResultExport(response,exportDto);
         }else {
             Map<String, Object> queryInfo = exportDto.getQueryInfo();
             if(queryInfo == null){

+ 1 - 2
mec-web/src/main/java/com/ym/mec/web/controller/SysTenantConfigController.java

@@ -33,10 +33,9 @@ public class SysTenantConfigController extends BaseController {
 	@GetMapping(value = "queryAll")
     @PreAuthorize("@pcs.hasPermissions('sysTenantConfig/queryAll')")
 	public Object queryAll(String group) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		Map<String,Object> params = new HashMap<String, Object>(2);
 		params.put("group", group);
-		params.put("tenantId", sysUser.getTenantId());
+		params.put("tenantId", TenantContextHolder.getTenantId());
 		return succeed(sysTenantConfigService.queryAll(params));
 	}