Commit 9b4ba10b by 吴博

feat: [1007887] 【新增】平台端-数据分析-做书数据分析 + 1007911】【优化】出版端书刊管理数据导出优化

parent 0f0cb089
package com.pcloud.book.book.biz.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
......@@ -102,7 +103,10 @@ import com.pcloud.common.utils.NumberUtil;
import com.pcloud.common.utils.ServeLinkUtils;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.data.domain.dto.AdsAgentAnalysebookTotalDTO;
import com.pcloud.data.domain.dto.AdsPlatformAnalyseagentbookTotalDTO;
import com.pcloud.data.domain.dto.BookScanCountParamDTO;
import com.pcloud.data.domain.enums.QuarterEnum;
import com.pcloud.data.domain.vo.BookScanCountVO;
import com.pcloud.facade.tradecenter.dto.Amount4BookAdviserDto;
import com.pcloud.raystask.entity.AdviserDefault;
......@@ -2339,11 +2343,19 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
});
// 分析引擎获取非社群书统计结果
List<BookBrowseAndScanStatsDTO> browseAndScanStats = browseRecordConsr.getBookBrowseAndScanStats(requestDtos);
//List<BookBrowseAndScanStatsDTO> browseAndScanStats = browseRecordConsr.getBookBrowseAndScanStats(requestDtos);
//从数据获取书刊统计结果 包括社群书及非社群书
List<AdsAgentAnalysebookTotalDTO> adsAgentAnalysebookTotalDTOS = new ArrayList<>();
if (CollUtil.isNotEmpty(requestDtos)) {
adsAgentAnalysebookTotalDTOS = BeanUtil.copyToList(requestDtos, AdsAgentAnalysebookTotalDTO.class);
}
List<AdsAgentAnalysebookTotalDTO> analysebookTotalDTOS = dataConsr.getBookBrowseAndScanStats(adsAgentAnalysebookTotalDTOS);
List<BookBrowseAndScanStatsDTO> browseAndScanStats = convertToBrowseAndScanStats(analysebookTotalDTOS);
// 微信群获取社群书统计结果
List<Long> bookGroupIds = pageBeanNew.getRecordList().stream().filter(x -> Objects.nonNull(x.getBookGroupId())).map(AgentBookStatsDetailVO::getBookGroupId).distinct().collect(Collectors.toList());
List<GroupScanUserStatsDTO> bookGroupScanStats = wechatGroupConsr.getAdviserBookGroupScanStats(bookGroupIds);
//List<GroupScanUserStatsDTO> bookGroupScanStats = wechatGroupConsr.getAdviserBookGroupScanStats(bookGroupIds);
//书刊扫码数据已全部从data查询,此处社群书不单独查询
List<GroupScanUserStatsDTO> bookGroupScanStats = new ArrayList<>();
// 查询交易信息
List<Amount4BookAdviserDto> amount4BookAdviser = tradeConsr.getAmount4BookAdviser(amountRequestDtos);
......@@ -2473,6 +2485,25 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
return pageBeanNew;
}
private List<BookBrowseAndScanStatsDTO> convertToBrowseAndScanStats(List<AdsAgentAnalysebookTotalDTO> adsAgentAnalysebookTotalDTOS) {
List<BookBrowseAndScanStatsDTO> bookBrowseAndScanStatsDTOS = new ArrayList<>();
if (CollUtil.isEmpty(adsAgentAnalysebookTotalDTOS)) {
return bookBrowseAndScanStatsDTOS;
}
adsAgentAnalysebookTotalDTOS.stream().forEach(e -> {
BookBrowseAndScanStatsDTO bookBrowseAndScanStatsDTO = new BookBrowseAndScanStatsDTO();
bookBrowseAndScanStatsDTO.setBookId(e.getBookId());
bookBrowseAndScanStatsDTO.setAdviserId(e.getAdviserId());
bookBrowseAndScanStatsDTO.setChannelId(e.getChannelId());
bookBrowseAndScanStatsDTO.setBookBrowseTotal(e.getBrowseAmount().intValue());
bookBrowseAndScanStatsDTO.setBookBrowseUserTotal(e.getBrowseuserAmount().intValue());
bookBrowseAndScanStatsDTO.setBookScanTotal(e.getScanAmount().intValue());
bookBrowseAndScanStatsDTO.setBookScanUserTotal(e.getScannerAmount().intValue());
bookBrowseAndScanStatsDTOS.add(bookBrowseAndScanStatsDTO);
});
return bookBrowseAndScanStatsDTOS;
}
@Override
public void exportAgentBookStatsDetail(Long agentId, String name, Date startDate, Date endDate, Integer isRay) {
......
......@@ -1475,21 +1475,24 @@ public class BookBizImpl implements BookBiz {
if(list.size()>1500){
throw new ExportException(ExportException.OPERATE_ERROR, "数量超过限制,请添加条件再导出!");
}
// 设置编辑名称
bookSet.setAdviserName4BookDtoNew(list);
ThreadPoolUtils.EXPORT_THREAD_POOL.execute(() -> {
try{
List<Object[]> dataList = new ArrayList<>();
for (int i = 0, size = list.size(); i < size; i++) {
BookDto bookDto = list.get(i);
Object[] obj = new Object[5];
Object[] obj = new Object[6];
obj[0] = i + 1;
obj[1] = bookDto.getBookName();
obj[2] = bookDto.getIsbn();
obj[3] = bookDto.getBookId();
obj[4] = null!=bookDto.getCreatedDate() ? DateUtils.getStrFormTime("yyyy-MM-dd HH:mm:ss", bookDto.getCreatedDate()) : null;
obj[2] = bookDto.getAdviserName();
obj[3] = bookDto.getIsbn();
obj[4] = bookDto.getBookId();
obj[5] = null!=bookDto.getCreatedDate() ? DateUtils.getStrFormTime("yyyy-MM-dd HH:mm:ss", bookDto.getCreatedDate()) : null;
dataList.add(obj);
}
Date date = new Date();
String[] rowsName = {"序号", "书刊名称", "书刊号", "书刊ID", "创建时间"};
String[] rowsName = {"序号", "书刊名称", "编辑","书刊号", "书刊ID", "创建时间"};
String fileName = "书刊管理书刊列表--" + DateUtils.getStrFormTime("yyyyMMdd", date);
String fileUrl = exportConsr.exportExcel(fileName, rowsName, dataList);
String letterType = "book_download";
......
......@@ -1656,7 +1656,6 @@ public class BookSet {
/**
* 设置图书是否关联二维码和个数
*
* @param recordList (List<BookDto>)
*/
/* public void setIsRelationQrcodeAndCount(List<Object> recordList) {
LOGGER.info("设置图书关联二维码个数【START】");
......@@ -2199,4 +2198,26 @@ public class BookSet {
}
}
}
public void setAdviserName4BookDtoNew(List<BookDto> list) {
if (CollUtil.isEmpty(list)) {
return;
}
// 组装编辑标识(去重)
List<Long> adviserIds = list.stream().map(e -> e.getAdviserId()).filter(f -> null != f).distinct().collect(Collectors.toList());
// 从用户中心批量获取编辑名称
Map<Long, String> adviserNameMap = adviserConsr.getNames(adviserIds);
if (MapUtils.isEmpty(adviserNameMap)) {
return;
}
// 批量填充编辑名称
for (BookDto bookDto : list) {
Long adviserId = bookDto.getAdviserId();
if (adviserNameMap.containsKey(adviserId)) {
bookDto.setAdviserName(adviserNameMap.get(adviserId));
} else {
bookDto.setAdviserName("");
}
}
}
}
......@@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.data.domain.dto.AdsAgentAnalysebookTotalDTO;
import com.pcloud.data.domain.dto.AdsPlatformAnalyseagentbookTotalDTO;
import com.pcloud.data.domain.dto.BookScanCountParamDTO;
import com.pcloud.data.domain.dto.BookStatisParamDTO;
import com.pcloud.data.domain.dto.QrcodeStatisParamDTO;
......@@ -20,6 +22,7 @@ import com.pcloud.data.domain.vo.CalUserInfoProvinceVO;
import com.pcloud.data.domain.vo.CalUserInfoSexVO;
import com.pcloud.data.domain.vo.DailyQrcodeSummaryVO;
import com.pcloud.data.domain.vo.MidUserInfoMergeVO;
import com.pcloud.data.provider.AdsAgentAnalysebookTotalService;
import com.pcloud.data.provider.BookScanCountService;
import com.pcloud.data.provider.BookStatisService;
import com.pcloud.data.provider.CalGroupTrackTargetService;
......@@ -29,8 +32,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -54,6 +57,8 @@ public class DataConsr {
private CalGroupTrackTargetService calGroupTrackTargetService;
@Autowired
private BookScanCountService bookScanCountService;
@Autowired
private AdsAgentAnalysebookTotalService adsAgentAnalysebookTotalService;
/**
* 获取书刊统计信息(书刊总收益、二维码数量、扫码量、扫码人、浏览量)
......@@ -277,4 +282,16 @@ public class DataConsr {
return new HashMap<>();
}
public List<AdsAgentAnalysebookTotalDTO> getBookBrowseAndScanStats(List<AdsAgentAnalysebookTotalDTO> requestDtos) {
List<AdsAgentAnalysebookTotalDTO> adsAgentAnalysebookTotalDTOS = new ArrayList<>();
if (CollUtil.isEmpty(requestDtos)) {
return adsAgentAnalysebookTotalDTOS;
}
try {
adsAgentAnalysebookTotalDTOS = ResponseHandleUtil.parseList(adsAgentAnalysebookTotalService.getBookBrowseAndScanStats(requestDtos), AdsAgentAnalysebookTotalDTO.class);
} catch (Exception e) {
LOGGER.warn("调用数据统计接口 [adsAgentAnalysebookTotalService.getBookBrowseAndScanStats] 失败", e);
}
return adsAgentAnalysebookTotalDTOS;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment