Commit b3939ee4 by 李传峰

Merge branch 'feature/1007887' into 'release'

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

See merge request rays/pcloud-book!1656
parents e58689dc 9b4ba10b
package com.pcloud.book.book.biz.impl; package com.pcloud.book.book.biz.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
...@@ -102,7 +103,10 @@ import com.pcloud.common.utils.NumberUtil; ...@@ -102,7 +103,10 @@ import com.pcloud.common.utils.NumberUtil;
import com.pcloud.common.utils.ServeLinkUtils; import com.pcloud.common.utils.ServeLinkUtils;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils; import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.string.StringUtil; 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.dto.BookScanCountParamDTO;
import com.pcloud.data.domain.enums.QuarterEnum;
import com.pcloud.data.domain.vo.BookScanCountVO; import com.pcloud.data.domain.vo.BookScanCountVO;
import com.pcloud.facade.tradecenter.dto.Amount4BookAdviserDto; import com.pcloud.facade.tradecenter.dto.Amount4BookAdviserDto;
import com.pcloud.raystask.entity.AdviserDefault; import com.pcloud.raystask.entity.AdviserDefault;
...@@ -2339,11 +2343,19 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -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<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); List<Amount4BookAdviserDto> amount4BookAdviser = tradeConsr.getAmount4BookAdviser(amountRequestDtos);
...@@ -2473,6 +2485,25 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -2473,6 +2485,25 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
return pageBeanNew; 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 @Override
public void exportAgentBookStatsDetail(Long agentId, String name, Date startDate, Date endDate, Integer isRay) { public void exportAgentBookStatsDetail(Long agentId, String name, Date startDate, Date endDate, Integer isRay) {
......
...@@ -1475,21 +1475,24 @@ public class BookBizImpl implements BookBiz { ...@@ -1475,21 +1475,24 @@ public class BookBizImpl implements BookBiz {
if(list.size()>1500){ if(list.size()>1500){
throw new ExportException(ExportException.OPERATE_ERROR, "数量超过限制,请添加条件再导出!"); throw new ExportException(ExportException.OPERATE_ERROR, "数量超过限制,请添加条件再导出!");
} }
// 设置编辑名称
bookSet.setAdviserName4BookDtoNew(list);
ThreadPoolUtils.EXPORT_THREAD_POOL.execute(() -> { ThreadPoolUtils.EXPORT_THREAD_POOL.execute(() -> {
try{ try{
List<Object[]> dataList = new ArrayList<>(); List<Object[]> dataList = new ArrayList<>();
for (int i = 0, size = list.size(); i < size; i++) { for (int i = 0, size = list.size(); i < size; i++) {
BookDto bookDto = list.get(i); BookDto bookDto = list.get(i);
Object[] obj = new Object[5]; Object[] obj = new Object[6];
obj[0] = i + 1; obj[0] = i + 1;
obj[1] = bookDto.getBookName(); obj[1] = bookDto.getBookName();
obj[2] = bookDto.getIsbn(); obj[2] = bookDto.getAdviserName();
obj[3] = bookDto.getBookId(); obj[3] = bookDto.getIsbn();
obj[4] = null!=bookDto.getCreatedDate() ? DateUtils.getStrFormTime("yyyy-MM-dd HH:mm:ss", bookDto.getCreatedDate()) : null; obj[4] = bookDto.getBookId();
obj[5] = null!=bookDto.getCreatedDate() ? DateUtils.getStrFormTime("yyyy-MM-dd HH:mm:ss", bookDto.getCreatedDate()) : null;
dataList.add(obj); dataList.add(obj);
} }
Date date = new Date(); Date date = new Date();
String[] rowsName = {"序号", "书刊名称", "书刊号", "书刊ID", "创建时间"}; String[] rowsName = {"序号", "书刊名称", "编辑","书刊号", "书刊ID", "创建时间"};
String fileName = "书刊管理书刊列表--" + DateUtils.getStrFormTime("yyyyMMdd", date); String fileName = "书刊管理书刊列表--" + DateUtils.getStrFormTime("yyyyMMdd", date);
String fileUrl = exportConsr.exportExcel(fileName, rowsName, dataList); String fileUrl = exportConsr.exportExcel(fileName, rowsName, dataList);
String letterType = "book_download"; String letterType = "book_download";
......
...@@ -1656,7 +1656,6 @@ public class BookSet { ...@@ -1656,7 +1656,6 @@ public class BookSet {
/** /**
* 设置图书是否关联二维码和个数 * 设置图书是否关联二维码和个数
* *
* @param recordList (List<BookDto>)
*/ */
/* public void setIsRelationQrcodeAndCount(List<Object> recordList) { /* public void setIsRelationQrcodeAndCount(List<Object> recordList) {
LOGGER.info("设置图书关联二维码个数【START】"); LOGGER.info("设置图书关联二维码个数【START】");
...@@ -2199,4 +2198,26 @@ public class BookSet { ...@@ -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; ...@@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil; 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.BookScanCountParamDTO;
import com.pcloud.data.domain.dto.BookStatisParamDTO; import com.pcloud.data.domain.dto.BookStatisParamDTO;
import com.pcloud.data.domain.dto.QrcodeStatisParamDTO; import com.pcloud.data.domain.dto.QrcodeStatisParamDTO;
...@@ -20,6 +22,7 @@ import com.pcloud.data.domain.vo.CalUserInfoProvinceVO; ...@@ -20,6 +22,7 @@ import com.pcloud.data.domain.vo.CalUserInfoProvinceVO;
import com.pcloud.data.domain.vo.CalUserInfoSexVO; import com.pcloud.data.domain.vo.CalUserInfoSexVO;
import com.pcloud.data.domain.vo.DailyQrcodeSummaryVO; import com.pcloud.data.domain.vo.DailyQrcodeSummaryVO;
import com.pcloud.data.domain.vo.MidUserInfoMergeVO; import com.pcloud.data.domain.vo.MidUserInfoMergeVO;
import com.pcloud.data.provider.AdsAgentAnalysebookTotalService;
import com.pcloud.data.provider.BookScanCountService; import com.pcloud.data.provider.BookScanCountService;
import com.pcloud.data.provider.BookStatisService; import com.pcloud.data.provider.BookStatisService;
import com.pcloud.data.provider.CalGroupTrackTargetService; import com.pcloud.data.provider.CalGroupTrackTargetService;
...@@ -29,8 +32,8 @@ import org.slf4j.LoggerFactory; ...@@ -29,8 +32,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -54,6 +57,8 @@ public class DataConsr { ...@@ -54,6 +57,8 @@ public class DataConsr {
private CalGroupTrackTargetService calGroupTrackTargetService; private CalGroupTrackTargetService calGroupTrackTargetService;
@Autowired @Autowired
private BookScanCountService bookScanCountService; private BookScanCountService bookScanCountService;
@Autowired
private AdsAgentAnalysebookTotalService adsAgentAnalysebookTotalService;
/** /**
* 获取书刊统计信息(书刊总收益、二维码数量、扫码量、扫码人、浏览量) * 获取书刊统计信息(书刊总收益、二维码数量、扫码量、扫码人、浏览量)
...@@ -277,4 +282,16 @@ public class DataConsr { ...@@ -277,4 +282,16 @@ public class DataConsr {
return new HashMap<>(); 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