|
@@ -1,15 +1,16 @@
|
|
|
package com.qmth.sop.business.service.impl;
|
|
|
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.alibaba.excel.ExcelWriter;
|
|
|
+import com.alibaba.excel.write.metadata.WriteSheet;
|
|
|
+import com.alibaba.excel.write.metadata.fill.FillConfig;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
|
-import com.qmth.sop.business.bean.dto.DataPermissionDto;
|
|
|
-import com.qmth.sop.business.bean.dto.RoleDto;
|
|
|
-import com.qmth.sop.business.bean.dto.SopCrmInfo;
|
|
|
-import com.qmth.sop.business.bean.dto.UserArchivesDto;
|
|
|
+import com.qmth.sop.business.bean.dto.*;
|
|
|
import com.qmth.sop.business.bean.params.ServiceScopeParam;
|
|
|
import com.qmth.sop.business.bean.params.TBCrmDetailParam;
|
|
|
import com.qmth.sop.business.bean.params.TBCrmParam;
|
|
@@ -23,6 +24,7 @@ import com.qmth.sop.business.util.SmsSendUtil;
|
|
|
import com.qmth.sop.common.contant.SpringContextHolder;
|
|
|
import com.qmth.sop.common.contant.SystemConstant;
|
|
|
import com.qmth.sop.common.enums.*;
|
|
|
+import com.qmth.sop.common.util.FileUtil;
|
|
|
import com.qmth.sop.common.util.ResultUtil;
|
|
|
import com.qmth.sop.common.util.ServletUtil;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
@@ -33,7 +35,12 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
@@ -900,6 +907,55 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
|
|
|
return crmBindResult;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void export(Long serviceUnitId) {
|
|
|
+ File fileTemp = null;
|
|
|
+ try {
|
|
|
+ fileTemp = SystemConstant.getFileTempVar(SystemConstant.XLSX_PREFIX);
|
|
|
+ InputStream inputStream = this.getClass().getResourceAsStream("/" + SystemConstant.STATIC + "/" +
|
|
|
+ ImportTemplateEnum.TEMPLATE_CRM_CUSTOM_RECEIVER.getTemplateName());
|
|
|
+ ExcelWriter writer = EasyExcel.write(fileTemp).withTemplate(inputStream).build();
|
|
|
+ WriteSheet sheet = EasyExcel.writerSheet().build();
|
|
|
+ FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
|
|
|
+
|
|
|
+ List<CrmCustomImportDto> dataList = baseMapper.listCrmCustomByServiceId(serviceUnitId);
|
|
|
+
|
|
|
+ //过滤一个客户对应多个收件人的数据
|
|
|
+ Function<CrmCustomImportDto,List<Object>> compositeKey = crmCustom -> Arrays.asList(crmCustom.getCrmNo(),crmCustom.getCustomName());
|
|
|
+ Map<List<Object>, List<CrmCustomImportDto>> customGroupByList = dataList.stream().collect(Collectors.groupingBy(compositeKey, Collectors.toList()));
|
|
|
+ List<CrmCustomImportDto> customDtoList = filterCrmCustom(customGroupByList);
|
|
|
+
|
|
|
+ writer.fill(customDtoList, fillConfig, sheet);
|
|
|
+ writer.finish();
|
|
|
+ HttpServletResponse response = ServletUtil.getResponse();
|
|
|
+ FileUtil.outputFile(response, fileTemp, ImportTemplateEnum.TEMPLATE_CRM_CUSTOM_RECEIVER.getFileName());
|
|
|
+ } catch (IOException e) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception(e.getMessage());
|
|
|
+ } finally {
|
|
|
+ if (Objects.nonNull(fileTemp)) {
|
|
|
+ fileTemp.delete();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<CrmCustomImportDto> filterCrmCustom(Map<List<Object>, List<CrmCustomImportDto>> customGroupByList) {
|
|
|
+ List<CrmCustomImportDto> customDtoList = new ArrayList<>();
|
|
|
+ Set<Map.Entry<List<Object>, List<CrmCustomImportDto>>> entries = customGroupByList.entrySet();
|
|
|
+ for (Map.Entry<List<Object>, List<CrmCustomImportDto>> entry : entries) {
|
|
|
+ List<CrmCustomImportDto> crmCustomList = entry.getValue();
|
|
|
+ if (CollectionUtils.isEmpty(crmCustomList))
|
|
|
+ continue;
|
|
|
+ if (crmCustomList.size() == 1) {
|
|
|
+ customDtoList.addAll(crmCustomList);
|
|
|
+ } else if (crmCustomList.size() > 1) {
|
|
|
+ CrmCustomImportDto dto = new CrmCustomImportDto();
|
|
|
+ dto.setCrmNo(crmCustomList.get(0).getCrmNo());
|
|
|
+ customDtoList.add(dto);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return customDtoList;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 根据sop用户身份类型构建用户档案信息
|
|
|
*
|