|
|
@@ -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);
|