Merge #43 into master from cc_20251208_visit
拜访记录和铺位导出
* cc_20251208_visit: (37 commits squashed)
- feat:拜访记录
- fix:拜访详情接口新增字段
- fix:新增状态转义字段
- fix:惩处单查询提供惩处待处理、惩处已处理状态筛选
- fix
- fix:管理员能查看所有加盟商
- fix:去掉部分字段非空校验
- fix:空校验
- Merge branch 'master' into cc_20251208_visit
# Conflicts:
#	coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java
#	coolstore-partner-dao/src/main/java/com/cool/store/dao/store/StoreMasterSignerInfoDAO.java
#	coolstore-partner-service/src/main/java/com/cool/store/service/impl/UserAuthMappingServiceImpl.java
- fix
- fix:拜访记录失效延时消息
- fix:拜访记录统计
- fix:拜访记录统计新增筛选条件
- fix:字段转义
- feat:拜访调整
- feat:拜访调整_过滤我的
- feat:拜访调整_过滤我的
- feat:拜访字段调整
- feat:拜访字段调整
- Merge branch 'master' into cc_20251208_visit
- fix:拜访我的加盟商取消管辖权限过滤
- Merge branch 'master' into cc_20251208_visit
- fix:新增已分配招商经理的线索查询接口;拜访记录列表接口新增字段
- fix:新增字段
- fix:新老加盟商判断逻辑修复;统计接口新增筛选条件
- fix:过滤未分配招商经理的线索
- Merge branch 'master' into cc_20251208_visit
# Conflicts:
#	coolstore-partner-dao/src/main/resources/mapper/LineInfoMapper.xml
- Merge branch 'master' into cc_20251208_visit
- Merge branch 'master' into cc_20251208_visit
- fix:拜访记录导出
- fix:拜访记录导出限制
- fix:拜访记录导出限制
- fix:铺位导出
- fix:铺位及拜访记录导出加锁时机修改
- fix:铺位导出新增字段
- fix:铺位导出新增字段
- fix
Signed-off-by: 王非凡 <accounts_67eba0c5fee9c49c80c8e2b4@mail.teambition.com>
Merged-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com>
CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/43
This commit is contained in:
@@ -5,7 +5,9 @@ import com.cool.store.dto.pre.fry.ApplyManagementDTO;
|
||||
import com.cool.store.entity.ImportTaskDO;
|
||||
import com.cool.store.entity.LineInfoDO;
|
||||
import com.cool.store.entity.PointInfoDO;
|
||||
import com.cool.store.request.AllPointPageRequest;
|
||||
import com.cool.store.request.FranchiseReportRequest;
|
||||
import com.cool.store.request.visit.VisitRecordQueryRequest;
|
||||
import com.cool.store.response.BranchShopResponse;
|
||||
import com.cool.store.response.FranchiseReportResponse;
|
||||
import com.cool.store.response.ShopReportResponse;
|
||||
@@ -33,4 +35,11 @@ public interface ExportRealizeService {
|
||||
|
||||
void exportZxjpOpenShopReportPage(List<ShopReportResponse> list, ImportTaskDO importTaskDO, FranchiseReportRequest request);
|
||||
void exportPreFryQualificationApply(List<ApplyManagementDTO> list, ImportTaskDO importTaskDO);
|
||||
|
||||
/**
|
||||
* 拜访记录导出
|
||||
*/
|
||||
void exportVisitRecord(VisitRecordQueryRequest request, ImportTaskDO importTaskDO);
|
||||
|
||||
void exportPoint(AllPointPageRequest request, ImportTaskDO importTaskDO);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.dto.pre.fry.ApplyManagementQueryDTO;
|
||||
import com.cool.store.enums.FileTypeEnum;
|
||||
import com.cool.store.request.*;
|
||||
import com.cool.store.request.visit.VisitRecordQueryRequest;
|
||||
|
||||
/**
|
||||
* @Author: WangShuo
|
||||
@@ -44,4 +45,19 @@ public interface ExportService {
|
||||
*/
|
||||
Long exportPreFryQualificationApply(ApplyManagementQueryDTO request, LoginUserInfo user);
|
||||
|
||||
/**
|
||||
* 拜访记录导出
|
||||
* @param request 拜访记录查询Request
|
||||
* @param user 当前用户
|
||||
* @return 记录总数
|
||||
*/
|
||||
Long exportVisitRecord(VisitRecordQueryRequest request, LoginUserInfo user);
|
||||
|
||||
/**
|
||||
* 全部铺位导出
|
||||
* @param request 查询Request
|
||||
* @param user 当前用户
|
||||
* @return 记录总数
|
||||
*/
|
||||
Long pointExport(AllPointPageRequest request, LoginUserInfo user);
|
||||
}
|
||||
|
||||
@@ -169,6 +169,13 @@ public interface PointService {
|
||||
*/
|
||||
PageInfo<PointPageVO> getTeamPointPage(AllPointPageRequest request);
|
||||
|
||||
/**
|
||||
* 获取团队铺位数量
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
Long getTeamPointCount(AllPointPageRequest request);
|
||||
|
||||
/**
|
||||
* 地图功能 查询所有的铺位
|
||||
* @param request
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
import cn.hutool.core.collection.CollStreamUtil;
|
||||
import com.cool.store.constants.RedisConstant;
|
||||
import com.cool.store.dao.*;
|
||||
|
||||
import com.cool.store.dto.*;
|
||||
import com.cool.store.dto.Preparation.PreparationDTO;
|
||||
import com.cool.store.dto.Preparation.ScheduleDTO;
|
||||
|
||||
import com.cool.store.dto.pre.fry.ApplyManagementDTO;
|
||||
import com.cool.store.entity.*;
|
||||
@@ -15,26 +12,27 @@ import com.cool.store.enums.*;
|
||||
import com.cool.store.enums.point.*;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.*;
|
||||
import com.cool.store.request.AllPointPageRequest;
|
||||
import com.cool.store.request.FranchiseReportRequest;
|
||||
import com.cool.store.request.InitiatingRequest;
|
||||
import com.cool.store.request.visit.VisitRecordQueryRequest;
|
||||
import com.cool.store.response.BranchShopResponse;
|
||||
import com.cool.store.response.FranchiseReportResponse;
|
||||
import com.cool.store.response.ShopReportResponse;
|
||||
import com.cool.store.service.*;
|
||||
import com.cool.store.service.visit.VisitRecordService;
|
||||
import com.cool.store.utils.BeanUtil;
|
||||
import com.cool.store.utils.JSONUtils;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import com.cool.store.utils.StringUtil;
|
||||
import com.cool.store.utils.easyExcel.EasyExcelUtil;
|
||||
import com.cool.store.utils.poi.DateUtils;
|
||||
import com.cool.store.utils.poi.StringUtils;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.cool.store.vo.point.PointExportVO;
|
||||
import com.cool.store.vo.point.PointPageVO;
|
||||
import com.cool.store.vo.visit.VisitRecordListVO;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
@@ -45,10 +43,6 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.text.MessageFormat;
|
||||
import java.text.ParseException;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -117,6 +111,12 @@ public class ExportRealizeServiceImpl implements ExportRealizeService {
|
||||
|
||||
@Resource
|
||||
private InvoicingDAO invoicingDAO;
|
||||
@Resource
|
||||
private VisitRecordService visitRecordService;
|
||||
@Resource
|
||||
private PointService pointService;
|
||||
@Resource
|
||||
private PointFinancialDataDAO pointFinancialDataDAO;
|
||||
|
||||
@Override
|
||||
@Async
|
||||
@@ -733,6 +733,59 @@ public class ExportRealizeServiceImpl implements ExportRealizeService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Async("generalThreadPool")
|
||||
public void exportVisitRecord(VisitRecordQueryRequest request, ImportTaskDO importTaskDO) {
|
||||
String url = "";
|
||||
try {
|
||||
url = easyExcelUtil.exportExcelInBatches(VisitRecordListVO.class,
|
||||
(pageNum, pageSize) -> {
|
||||
request.setPageNum(pageNum);
|
||||
request.setPageSize(pageSize);
|
||||
return visitRecordService.recordList(request).getList();
|
||||
},
|
||||
FileTypeEnum.VISIT_RECORD_EXPORT.getDesc(),
|
||||
FileTypeEnum.VISIT_RECORD_EXPORT.getDesc());
|
||||
importTaskDO.setStatus(ImportStatusEnum.success.getCode());
|
||||
} catch (Exception e) {
|
||||
log.error("拜访记录导出失败", e);
|
||||
importTaskDO.setStatus(ImportStatusEnum.fail.getCode());
|
||||
} finally {
|
||||
importTaskDO.setFileUrl(url);
|
||||
importTaskMapper.update(eid, importTaskDO);
|
||||
redisUtilPool.delKey(RedisConstant.VISIT_RECORD_EXPORT_LOCK);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Async("generalThreadPool")
|
||||
public void exportPoint(AllPointPageRequest request, ImportTaskDO importTaskDO) {
|
||||
String url = "";
|
||||
try {
|
||||
url = easyExcelUtil.exportExcelInBatches(PointExportVO.class,
|
||||
(pageNum, pageSize) -> {
|
||||
request.setPageNum(pageNum);
|
||||
request.setPageSize(pageSize);
|
||||
List<PointPageVO> list = pointService.getTeamPointPage(request).getList();
|
||||
List<Long> pointIds = CollStreamUtil.toList(list, PointPageVO::getPointId);
|
||||
Map<Long, PointFinancialDataDO> pointMap = pointFinancialDataDAO.getMapByPointIds(pointIds);
|
||||
List<PointExportVO> result = BeanUtil.toList(list, PointExportVO.class);
|
||||
result.forEach(v -> BeanUtil.copyPropertiesIgnoreId(pointMap.get(v.getPointId()), v));
|
||||
return result;
|
||||
},
|
||||
FileTypeEnum.POINT_EXPORT.getDesc(),
|
||||
FileTypeEnum.POINT_EXPORT.getDesc());
|
||||
importTaskDO.setStatus(ImportStatusEnum.success.getCode());
|
||||
} catch (Exception e) {
|
||||
log.error("拜访记录导出失败", e);
|
||||
importTaskDO.setStatus(ImportStatusEnum.fail.getCode());
|
||||
} finally {
|
||||
importTaskDO.setFileUrl(url);
|
||||
importTaskMapper.update(eid, importTaskDO);
|
||||
redisUtilPool.delKey(RedisConstant.POINT_EXPORT_LOCK);
|
||||
}
|
||||
}
|
||||
|
||||
private String toString(Object o) {
|
||||
if (o == null) {
|
||||
return "";
|
||||
|
||||
@@ -2,34 +2,31 @@ package com.cool.store.service.impl;
|
||||
|
||||
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.context.CurrentUserHolder;
|
||||
import com.cool.store.constants.RedisConstant;
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.dao.HyOpenAreaInfoDAO;
|
||||
import com.cool.store.dao.LineInfoDAO;
|
||||
import com.cool.store.dao.PreFryQualificationApplyDAO;
|
||||
import com.cool.store.dao.ShopInfoDAO;
|
||||
import com.cool.store.dto.Preparation.PreparationDTO;
|
||||
import com.cool.store.dto.Preparation.ScheduleDTO;
|
||||
import com.cool.store.dao.visit.VisitRecordDAO;
|
||||
import com.cool.store.dto.pre.fry.ApplyManagementDTO;
|
||||
import com.cool.store.dto.pre.fry.ApplyManagementQueryDTO;
|
||||
import com.cool.store.entity.*;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.FileTypeEnum;
|
||||
import com.cool.store.enums.ImportStatusEnum;
|
||||
import com.cool.store.enums.point.PointStatusEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.ImportTaskMapper;
|
||||
import com.cool.store.mapper.PointInfoMapper;
|
||||
import com.cool.store.request.*;
|
||||
import com.cool.store.request.visit.VisitRecordQueryRequest;
|
||||
import com.cool.store.response.BranchShopResponse;
|
||||
import com.cool.store.response.FranchiseReportResponse;
|
||||
import com.cool.store.response.ShopReportResponse;
|
||||
import com.cool.store.service.*;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import com.cool.store.utils.easyExcel.EasyExcelUtil;
|
||||
import com.cool.store.utils.poi.DateUtils;
|
||||
import com.cool.store.utils.poi.StringUtils;
|
||||
import com.cool.store.vo.Preparation.PreparationScheduleVO;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.slf4j.Logger;
|
||||
@@ -40,7 +37,6 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author: WangShuo
|
||||
@@ -80,6 +76,12 @@ public class ExportServiceImpl implements ExportService {
|
||||
private FranchiseReportService franchiseReportService;
|
||||
@Resource
|
||||
private PreFryQualificationApplyDAO preFryQualificationApplyDAO;
|
||||
@Resource
|
||||
private VisitRecordDAO visitRecordDAO;
|
||||
@Resource
|
||||
private RedisUtilPool redisUtilPool;
|
||||
@Resource
|
||||
private PointService pointService;
|
||||
|
||||
|
||||
|
||||
@@ -210,5 +212,60 @@ public class ExportServiceImpl implements ExportService {
|
||||
return (long) list.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long exportVisitRecord(VisitRecordQueryRequest request, LoginUserInfo user) {
|
||||
Long count = visitRecordDAO.getVisitRecordCount(request);
|
||||
if (count.intValue() > CommonConstants.MAX_EXPORT_SIZE_PRO) {
|
||||
throw new ServiceException(ErrorCodeEnum.EXPORT_LIMIT_100000);
|
||||
}
|
||||
if (Long.valueOf(0).equals(count)) {
|
||||
log.error("导出数据为空");
|
||||
return 0L;
|
||||
}
|
||||
boolean lock = redisUtilPool.setNxExpire(RedisConstant.VISIT_RECORD_EXPORT_LOCK, RedisConstant.VISIT_RECORD_EXPORT_LOCK, 30 * 60 * 1000);
|
||||
if (!lock) {
|
||||
throw new ServiceException(ErrorCodeEnum.EXPORT_TASK_LIMIT);
|
||||
}
|
||||
ImportTaskDO importTaskDO = new ImportTaskDO();
|
||||
importTaskDO.setStatus(ImportStatusEnum.Ongoing.getCode());
|
||||
importTaskDO.setFileName(FileTypeEnum.VISIT_RECORD_EXPORT.getDesc() + DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START_1, new Date()));
|
||||
importTaskDO.setIsImport(Boolean.FALSE);
|
||||
importTaskDO.setFileType(FileTypeEnum.VISIT_RECORD_EXPORT.getFileType());
|
||||
importTaskDO.setCreateUserId(user.getUserId());
|
||||
importTaskDO.setCreateTime(new Date().getTime());
|
||||
importTaskDO.setCreateName(user.getName());
|
||||
importTaskMapper.insert(eid, importTaskDO);
|
||||
exportRealizeService.exportVisitRecord(request, importTaskDO);
|
||||
return count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long pointExport(AllPointPageRequest request, LoginUserInfo user) {
|
||||
request.setCurUserId(user.getUserId());
|
||||
Long count = pointService.getTeamPointCount(request);
|
||||
if (count.intValue() > CommonConstants.MAX_EXPORT_SIZE_PRO) {
|
||||
throw new ServiceException(ErrorCodeEnum.EXPORT_LIMIT_100000);
|
||||
}
|
||||
if (Long.valueOf(0).equals(count)) {
|
||||
log.error("导出数据为空");
|
||||
return 0L;
|
||||
}
|
||||
boolean lock = redisUtilPool.setNxExpire(RedisConstant.POINT_EXPORT_LOCK, RedisConstant.POINT_EXPORT_LOCK, 30 * 60 * 1000);
|
||||
if (!lock) {
|
||||
throw new ServiceException(ErrorCodeEnum.EXPORT_TASK_LIMIT);
|
||||
}
|
||||
ImportTaskDO importTaskDO = new ImportTaskDO();
|
||||
importTaskDO.setStatus(ImportStatusEnum.Ongoing.getCode());
|
||||
importTaskDO.setFileName(FileTypeEnum.POINT_EXPORT.getDesc() + DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START_1, new Date()));
|
||||
importTaskDO.setIsImport(Boolean.FALSE);
|
||||
importTaskDO.setFileType(FileTypeEnum.POINT_EXPORT.getFileType());
|
||||
importTaskDO.setCreateUserId(user.getUserId());
|
||||
importTaskDO.setCreateTime(new Date().getTime());
|
||||
importTaskDO.setCreateName(user.getName());
|
||||
importTaskMapper.insert(eid, importTaskDO);
|
||||
exportRealizeService.exportPoint(request, importTaskDO);
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -710,6 +710,21 @@ public class PointServiceImpl implements PointService {
|
||||
return resultPage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getTeamPointCount(AllPointPageRequest request) {
|
||||
if (!sysRoleService.checkIsAdmin(request.getCurUserId())) {
|
||||
request.setAuthRegionIds(userAuthMappingService.getAuthRegionIdAndSubRegionIdByUserId(request.getCurUserId()));
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(request.getRegionIds())) {
|
||||
if (request.getRegionIds().contains(CommonConstants.ROOT_DEPT_ID_STR)) {
|
||||
request.setRegionIds(null);
|
||||
} else {
|
||||
request.setRegionIds(regionService.getSubRegionIdsByRegionIds(request.getRegionIds()));
|
||||
}
|
||||
}
|
||||
return pointInfoDAO.getTeamPointCount(enterpriseId, request);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PointMapVO> getAllPointList(PointMapRequest request) {
|
||||
if (!sysRoleService.checkIsAdmin(request.getCurrentUserId())) {
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.cool.store.utils.easyExcel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 批量数据提供接口
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2026/2/7
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface BatchDataProvider<T> {
|
||||
|
||||
/**
|
||||
* 获取下一批次数据
|
||||
* @param pageNo 当前页码(从1开始)
|
||||
* @param pageSize 每页大小
|
||||
* @return 数据列表,返回空列表或 null 表示结束
|
||||
*/
|
||||
List<T> nextBatch(int pageNo, int pageSize);
|
||||
}
|
||||
@@ -2,8 +2,12 @@ package com.cool.store.utils.easyExcel;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.excel.ExcelWriter;
|
||||
import com.alibaba.excel.util.CollectionUtils;
|
||||
import com.alibaba.excel.write.metadata.WriteSheet;
|
||||
import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy;
|
||||
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.handler.CenterAlignHandler;
|
||||
import com.cool.store.handler.ImplProgressReportSheetWriteHandler;
|
||||
import com.cool.store.mapper.ImportTaskMapper;
|
||||
@@ -21,6 +25,7 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
@Slf4j
|
||||
@@ -98,5 +103,57 @@ public class EasyExcelUtil {
|
||||
String time = DateUtil.format(new Date(), "yyMM");
|
||||
return "eid" + "/" + eid + "/" + time + "/";
|
||||
}
|
||||
|
||||
/**
|
||||
* 分批次导出并上传 OSS
|
||||
*
|
||||
* @param head 数据模型类
|
||||
* @param provider 数据提供者回调
|
||||
* @param sheetName Sheet名称
|
||||
* @param fileName 文件名称
|
||||
* @return OSS URL
|
||||
*/
|
||||
public <T> String exportExcelInBatches(Class<T> head, BatchDataProvider<T> provider, String sheetName, String fileName) throws Exception {
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
InputStream is = null;
|
||||
ExcelWriter excelWriter;
|
||||
try {
|
||||
excelWriter = EasyExcel.write(outputStream, head)
|
||||
.autoCloseStream(false) // 手动控制流
|
||||
.registerWriteHandler(new SimpleRowHeightStyleStrategy((short) 25, (short) 25))
|
||||
.build();
|
||||
|
||||
WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).build();
|
||||
|
||||
int pageNum = 1, pageSize = CommonConstants.BATCH_SIZE;
|
||||
boolean hasNext = true;
|
||||
while (hasNext) {
|
||||
List<T> data = provider.nextBatch(pageNum, pageSize);
|
||||
if (CollectionUtils.isEmpty(data)) {
|
||||
break;
|
||||
}
|
||||
hasNext = data.size() == pageSize;
|
||||
excelWriter.write(data, writeSheet);
|
||||
log.info("Excel批次导出:已写入第 {} 页,本页 {} 条数据", pageNum, data.size());
|
||||
|
||||
pageNum++;
|
||||
}
|
||||
excelWriter.finish();
|
||||
|
||||
byte[] bytes = outputStream.toByteArray();
|
||||
is = new ByteArrayInputStream(bytes);
|
||||
|
||||
if (StringUtils.isNotBlank(fileName) && fileName.contains(".")) {
|
||||
fileName = fileName.substring(0, fileName.lastIndexOf("."));
|
||||
}
|
||||
String file = getUploadPath(eid) + fileName + "_" + UUIDUtils.get32UUID() + EXCEL_SUFFIX;
|
||||
return ossClientService.putObject(file, is, (long) bytes.length, CONTENT_TYPE);
|
||||
} finally {
|
||||
outputStream.close();
|
||||
if (Objects.nonNull(is)) {
|
||||
is.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user