zoujiajian před 3 roky
rodič
revize
56d7dde68a

+ 44 - 0
netflix-dao/src/main/java/com/cyksj/model/views/FormSubmitDataView.java

@@ -0,0 +1,44 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/*
+ *项目名: netflix
+ *文件名: FormSubmitDataView
+ *创建者: JavaZou
+ *创建时间:2023/6/15 11:55
+ */
+@Getter
+@Setter
+@SearchBean(tables = "form_fields_data fd left join form_fields ff on ff.id = fd.fields_id",
+		where = "fd.deleted is true")
+public class FormSubmitDataView {
+	@DbField("fd.id")
+	private Long id;
+
+	@DbField("fd.groups_id")
+	private Long groupsId;
+
+	@DbField("fd.fields_id")
+	private Long fieldsId;
+
+	@DbField("fd.fields_name")
+	private String fieldsName;
+
+	@DbField("fd.promotion_id")
+	private Long promotionId;
+
+	@DbField("fd.content")
+	private String content;
+
+	@DbField("ff.sorted")
+	private Integer sorted;
+
+	@DbField("fd.created_time")
+	private Date createdTime;
+}

+ 21 - 7
netflix-service/src/main/java/com/cyksj/service/mange/form/impl/FormServiceImpl.java

@@ -1,6 +1,8 @@
 package com.cyksj.service.mange.form.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.support.ExcelTypeEnum;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -9,7 +11,10 @@ import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.mapper.manage.form.*;
 import com.cyksj.model.dto.FormTemplateDataDto;
 import com.cyksj.model.entity.*;
+import com.cyksj.model.views.FormSubmitDataView;
 import com.cyksj.service.mange.form.FormService;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.util.MapUtils;
 import com.google.common.collect.Lists;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -42,6 +47,8 @@ public class FormServiceImpl implements FormService {
 
 	private final QuestionnairePromotionMapper questionnairePromotionMapper;
 
+	private final BeanSearcher beanSearcher;
+
 	@Override
 	@Transactional(rollbackFor = Throwable.class)
 	public void saveOrUpdateTemplateAndRelationFields(FormTemplateDataDto dataDto) {
@@ -65,7 +72,7 @@ public class FormServiceImpl implements FormService {
 				// 这里放入动态头
 				.head(head(formFields)).sheet("问卷信息")
 				// 当然这里数据也可以用 List<List<String>> 去传入
-				.doWrite(data(promotionId));
+				.doWrite(data(promotionId, formFields));
 	}
 
 	@Override
@@ -126,17 +133,24 @@ public class FormServiceImpl implements FormService {
 		return headTitles;
 	}
 
-	private List<List<String>> data(Long promotionId) {
-		List<FormFieldsData> fieldsDataList = formFieldsDataMapper.selectList(new LambdaQueryWrapper<FormFieldsData>().eq(FormFieldsData::getPromotionId, promotionId).eq(FormFieldsData::getDeleted, true).orderByAsc(FormFieldsData::getSorted));
-		if (fieldsDataList.isEmpty()) {
+	private List<List<String>> data(Long promotionId, List<FormFields> formFields) {
+//		List<FormFieldsData> fieldsDataList = formFieldsDataMapper.selectList(new LambdaQueryWrapper<FormFieldsData>().eq(FormFieldsData::getPromotionId, promotionId).eq(FormFieldsData::getDeleted, true).orderByAsc(FormFieldsData::getSorted));
+		List<FormSubmitDataView> formSubmitDataViews = beanSearcher.searchAll(FormSubmitDataView.class, MapUtils.builder().field(FormSubmitDataView::getPromotionId, promotionId).orderBy(FormSubmitDataView::getSorted).asc().build());
+		if (formSubmitDataViews.isEmpty()) {
 			throw BusinessRuntimeException.getInstance("暂无数据");
 		}
 		List<List<String>> contentList = Lists.newArrayList();
-		Map<Long, List<FormFieldsData>> collect = fieldsDataList.stream().collect(Collectors.groupingBy(FormFieldsData::getGroupsId));
+		Map<Long, List<FormSubmitDataView>> collect = formSubmitDataViews.stream().collect(Collectors.groupingBy(FormSubmitDataView::getGroupsId));
 		collect.forEach((groupsId, answers) -> {
+			Map<Long, List<FormSubmitDataView>> fieldsValueMap = answers.stream().collect(Collectors.groupingBy(FormSubmitDataView::getFieldsId));
 			ArrayList<String> dataList = new ArrayList<>();
-			answers.forEach(answer -> {
-				dataList.add(answer.getContent());
+			formFields.forEach(fields -> {
+				List<FormSubmitDataView> values = fieldsValueMap.get(fields.getId());
+				if (CollUtil.isEmpty(values)) {
+					dataList.add(StrUtil.EMPTY);
+					return;
+				}
+				dataList.add(values.get(0).getContent());
 			});
 			dataList.add(DateUtil.format(answers.get(answers.size() - 1).getCreatedTime(), "yyyy-MM-dd HH:mm:ss"));
 			contentList.add(dataList);