Commit 43a14b7b by 桂前礼

feat: [none] 获取图书相关信息

parent 6fbc54a3
......@@ -21,12 +21,14 @@ import com.pcloud.book.book.dto.RelateAdviserVO;
import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.BookLabel;
import com.pcloud.book.book.entity.SeriesBookRecord;
import com.pcloud.book.book.vo.BookInfo4ScanCount;
import com.pcloud.book.book.vo.BookLabelVO;
import com.pcloud.book.book.vo.BookQualifyVO;
import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.book.book.vo.ListNoAuthBookParam;
import com.pcloud.book.book.vo.ListNoAuthGroupBookParam;
import com.pcloud.book.book.vo.SearchBookVO;
import com.pcloud.book.book.vo.request.BookInfo4ScanCountRequestVO;
import com.pcloud.book.book.vo.request.BookQualifyInfoVO;
import com.pcloud.book.book.vo.request.BookSearchParamVO;
import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto;
......@@ -787,4 +789,6 @@ public interface BookBiz {
PageBeanNew<BookDto> listPageBookMinimunSupport4Platform(Integer currentPage, Integer numPerPage,
String isbn, String bookName, String publish, String serialNumber, Integer isCurrentMonth, Integer isOverdue,
Long agentId) throws BizException;
List<BookInfo4ScanCount> fetchBookListByScanCount(List<BookInfo4ScanCountRequestVO> requestVOS);
}
......@@ -63,6 +63,7 @@ import com.pcloud.book.book.dto.BookUniqueNumberDTO;
import com.pcloud.book.book.dto.CreateBookResultVO;
import com.pcloud.book.book.dto.CreateBookVO;
import com.pcloud.book.book.dto.CreateQrcodeVO;
import com.pcloud.book.book.dto.ErpBookApprovalDTO;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.dto.EditionAnalysisListVO;
import com.pcloud.book.book.dto.EditionAnalysisResultVO;
......@@ -81,12 +82,14 @@ import com.pcloud.book.book.entity.SeriesBook;
import com.pcloud.book.book.entity.SeriesBookRecord;
import com.pcloud.book.book.set.BookSet;
import com.pcloud.book.book.tools.BookTools;
import com.pcloud.book.book.vo.BookInfo4ScanCount;
import com.pcloud.book.book.vo.BookLabelVO;
import com.pcloud.book.book.vo.BookQualifyVO;
import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.book.book.vo.ListNoAuthBookParam;
import com.pcloud.book.book.vo.ListNoAuthGroupBookParam;
import com.pcloud.book.book.vo.SearchBookVO;
import com.pcloud.book.book.vo.request.BookInfo4ScanCountRequestVO;
import com.pcloud.book.book.vo.request.BookQualifyInfoVO;
import com.pcloud.book.book.vo.request.BookSearchParamVO;
import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto;
......@@ -187,6 +190,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
......@@ -3957,4 +3961,93 @@ public class BookBizImpl implements BookBiz {
}
return new PageBeanNew<>(currentPage, numPerPage, totalCount, bookList);
}
@Override
public List<BookInfo4ScanCount> fetchBookListByScanCount(List<BookInfo4ScanCountRequestVO> requestVOS) {
List<Long> adviserIds = requestVOS.stream().filter(Objects::nonNull).map(BookInfo4ScanCountRequestVO::getAdviserId).collect(Collectors.toList());
List<Long> bookIds = requestVOS.stream().filter(Objects::nonNull).map(BookInfo4ScanCountRequestVO::getBookId).collect(Collectors.toList());
List<Long> channelIds = requestVOS.stream().filter(Objects::nonNull).map(BookInfo4ScanCountRequestVO::getChannelId).collect(Collectors.toList());
// ERP查询是否立项
CompletableFuture<Map<String, ErpBookApprovalDTO>> isApprovalFuture = CompletableFuture.supplyAsync(() -> Optional.ofNullable(erpConsr.getIsApproval(adviserIds, channelIds, bookIds)).orElse(new HashMap<>()));
// 查询图书信息
CompletableFuture<List<BookInfo4ScanCount>> bookInfoFuture = CompletableFuture.supplyAsync(() -> Optional.ofNullable(bookAdviserDao.listBookInfo4ScanCount(adviserIds, channelIds, bookIds)).orElse(new ArrayList<>()));
// 等待结果返回
try {
List<BookInfo4ScanCount> bookInfo4ScanCounts = bookInfoFuture.get();
Map<Long, String> bookLabelMap = new HashMap<>();
Map<Long, String> centerLabelMap = new HashMap<>();
Map<Long, AssistTempletDTO> templetIdMap = new HashMap<>();
// 聚合所有的 bookLabelId
CompletableFuture<Void> bookLabelIdFuture = CompletableFuture.runAsync(() -> {
List<Long> bookLabelIds = Stream.of(
bookInfo4ScanCounts.stream().map(BookInfo4ScanCount::getGraLabelId),
bookInfo4ScanCounts.stream().map(BookInfo4ScanCount::getSubLabelId),
bookInfo4ScanCounts.stream().map(BookInfo4ScanCount::getVerLabelId),
bookInfo4ScanCounts.stream().map(BookInfo4ScanCount::getAreaLabelId),
bookInfo4ScanCounts.stream().map(BookInfo4ScanCount::getVolLabelId)
).flatMap(stream -> stream).filter(Objects::nonNull).collect(Collectors.toList());
// 查询标签信息
bookLabelMap.putAll(Optional.ofNullable(bookLabelBiz.getLabelMapByIds(bookLabelIds)).orElse(new HashMap<>()));
});
// 聚合所有的 centerLabelId
CompletableFuture<Void> centerLabelIdFuture = CompletableFuture.runAsync(() -> {
List<Long> labelCenterIds = Stream.of(
bookInfo4ScanCounts.stream().map(BookInfo4ScanCount::getProLabelId),
bookInfo4ScanCounts.stream().map(BookInfo4ScanCount::getDepLabelId),
bookInfo4ScanCounts.stream().map(BookInfo4ScanCount::getPurLabelId)
).flatMap(stream -> stream).filter(Objects::nonNull).collect(Collectors.toList());
centerLabelMap.putAll(Optional.ofNullable(labelConsr.getLabelName(labelCenterIds)).orElse(new HashMap<>()));
});
CompletableFuture<Void> templateFuture = CompletableFuture.runAsync(() -> {
List<Long> templetIds = Stream.of(
bookInfo4ScanCounts.stream().map(BookInfo4ScanCount::getTempletId),
bookInfo4ScanCounts.stream().map(BookInfo4ScanCount::getSecondTempletId),
bookInfo4ScanCounts.stream().map(BookInfo4ScanCount::getThirdTempletId)
).flatMap(stream -> stream).filter(Objects::nonNull).collect(Collectors.toList());
templetIdMap.putAll(Optional.ofNullable(assistTempletConsr.mapByIds4Classify(templetIds)).orElse(new HashMap<>()));
});
// 等待所有任务完成
CompletableFuture.allOf(isApprovalFuture, bookLabelIdFuture, centerLabelIdFuture, templateFuture).get();
Map<String, ErpBookApprovalDTO> isApprovalDTOMap = isApprovalFuture.get();
// 填充所有信息
for (BookInfo4ScanCount book : bookInfo4ScanCounts) {
// 填充 book_label
book.setGraLabelName(bookLabelMap.get(book.getGraLabelId()));
book.setSubLabelName(bookLabelMap.get(book.getSubLabelId()));
book.setVerLabelName(bookLabelMap.get(book.getVerLabelId()));
book.setAreaLabelName(bookLabelMap.get(book.getAreaLabelId()));
book.setVolLabelName(bookLabelMap.get(book.getVolLabelId()));
// 填充 专业 目的 深度 标签
book.setProLabelName(centerLabelMap.get(book.getProLabelId()));
book.setDepLabelName(centerLabelMap.get(book.getDepLabelId()));
book.setPurLabelName(centerLabelMap.get(book.getPurLabelId()));
// 填充书刊分类
book.setTempletName(Objects.nonNull(templetIdMap.get(book.getTempletId()))?templetIdMap.get(book.getTempletId()).getTempletName():null);
book.setSecondTempletName(Objects.nonNull(templetIdMap.get(book.getSecondTempletId()))?templetIdMap.get(book.getSecondTempletId()).getTempletName():null);
book.setThirdTempletName(Objects.nonNull(templetIdMap.get(book.getThirdTempletId()))?templetIdMap.get(book.getThirdTempletId()).getTempletName():null);
// 填充 是否立项
book.setIsApproval(0);
ErpBookApprovalDTO erpBookApprovalDTO = isApprovalDTOMap.get(book.getBookId() + "-" + book.getAdviserId() + "-" + book.getChannelId());
if (Objects.isNull(erpBookApprovalDTO) || Objects.isNull(erpBookApprovalDTO.getIsApproval())) {
book.setIsApproval(1);
}
}
return bookInfo4ScanCounts;
} catch (Exception e) {
LOGGER.warn("fetchBookListByScanCount 失败 requestVOS:{}", requestVOS, e);
}
return new ArrayList<>();
}
}
......@@ -14,6 +14,7 @@ import com.pcloud.book.book.dto.ERPPublishNumDTO;
import com.pcloud.book.book.dto.ErpBookInfoDTO;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.book.book.vo.BookInfo4ScanCount;
import com.pcloud.book.book.vo.ErpAdviserBookVO;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.common.core.dao.BaseDao;
......@@ -307,4 +308,6 @@ public interface BookAdviserDao extends BaseDao<BookAdviser> {
void updateBookTempletAndLabel(BookAdviser bookAdviser);
void syncTempletId4ES(ResultHandler<ESBookAndAdviser> resultHandler);
List<BookInfo4ScanCount> listBookInfo4ScanCount(List<Long> adviserIds, List<Long> channelIds, List<Long> bookIds);
}
......@@ -19,6 +19,7 @@ import com.pcloud.book.book.dto.ERPPublishNumDTO;
import com.pcloud.book.book.dto.ErpBookInfoDTO;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.book.book.vo.BookInfo4ScanCount;
import com.pcloud.book.book.vo.ErpAdviserBookVO;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.common.core.dao.BaseDaoImpl;
......@@ -369,4 +370,11 @@ public class BookAdviserDaoImpl extends BaseDaoImpl<BookAdviser> implements Book
super.getSqlSession().select(getStatement("syncTempletId4ES"), resultHandler);
}
@Override
public List<BookInfo4ScanCount> listBookInfo4ScanCount(List<Long> adviserIds, List<Long> channelIds, List<Long> bookIds) {
HashMap<String, List<Long>> param = MapUtil.of("adviserIds", adviserIds);
param.put("channelIds",channelIds);
param.put("bookIds",bookIds);
return getSessionTemplate().selectList(getStatement("listBookInfo4ScanCount"), param);
}
}
......@@ -3,6 +3,7 @@
*/
package com.pcloud.book.book.facade.impl;
import cn.hutool.core.collection.CollUtil;
import com.google.common.collect.Lists;
import com.pcloud.book.base.exception.BookBizException;
......@@ -19,10 +20,12 @@ import com.pcloud.book.book.dto.RelateAdviserVO;
import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.SeriesBookRecord;
import com.pcloud.book.book.facade.BookFacade;
import com.pcloud.book.book.vo.BookInfo4ScanCount;
import com.pcloud.book.book.vo.BookQualifyVO;
import com.pcloud.book.book.vo.ListNoAuthBookParam;
import com.pcloud.book.book.vo.ListNoAuthGroupBookParam;
import com.pcloud.book.book.vo.SearchBookVO;
import com.pcloud.book.book.vo.request.BookInfo4ScanCountRequestVO;
import com.pcloud.book.book.vo.request.BookQualifyInfoVO;
import com.pcloud.book.book.vo.request.BookSearchParamVO;
import com.pcloud.book.book.dto.BookUniqueNumberDTO;
......@@ -1328,4 +1331,10 @@ public class BookFacadeImpl implements BookFacade {
}
return new ResponseDto<>(bookBiz.listPageBookMinimunSupport4Platform(currentPage,numPerPage,isbn,bookName,publish,serialNumber,isCurrentMonth,isOverdue, agentId));
}
@PostMapping("fetchBookListByScanCount")
public ResponseDto<List<BookInfo4ScanCount>> fetchBookListByScanCount(@RequestBody List<BookInfo4ScanCountRequestVO> requestVOS) {
if (CollUtil.isEmpty(requestVOS)) return new ResponseDto<>();
return new ResponseDto<>(bookBiz.fetchBookListByScanCount(requestVOS));
}
}
package com.pcloud.book.book.vo;
import lombok.Data;
@Data
public class BookInfo4ScanCount {
private Long bookId;
private Long bookAdviserId;
private Long adviserId;
private Long channelId;
private Long templetId;
private String templetName;
private Long secondTempletId;
private String secondTempletName;
private Long thirdTempletId;
private String thirdTempletName;
private Long proLabelId;
private String proLabelName;
private Long depLabelId;
private String depLabelName;
private Long purLabelId;
private String purLabelName;
private Long graLabelId;
private String graLabelName;
private Long subLabelId;
private String subLabelName;
private Long verLabelId;
private String verLabelName;
private Long areaLabelId;
private String areaLabelName;
private Long volLabelId;
private String volLabelName;
private Integer isApproval;
}
package com.pcloud.book.book.vo.request;
import lombok.Data;
@Data
public class BookInfo4ScanCountRequestVO {
private Long bookId;
private Long adviserId;
private Long channelId;
}
......@@ -1014,4 +1014,37 @@
group by BOOK_ID
</select>
<select id="listBookInfo4ScanCount" parameterType="map" resultType="com.pcloud.book.book.vo.BookInfo4ScanCount">
select BOOK_ADVISER_ID AS bookAdviserId,
BOOK_ID AS bookId,
ADVISER_ID AS adviserId,
CHANNEL_ID AS channelId,
TEMPLET_ID AS templetId,
SECOND_TEMPLET_ID AS secondTempletId,
third_templet_id AS thirdTempletId,
pro_label_id AS proLabelId,
dep_label_id AS depLabelId,
pur_label_id AS purLabelId,
GRA_LABEL_ID AS graLabelId,
SUB_LABEL_ID AS subLabelId,
VER_LABEL_ID AS verLabelId,
AREA_LABEL_ID AS areaLabelId,
vol_label_id AS volLabelId
from book_adviser
where
BOOK_ID IN
<foreach collection="bookIds" index="index" item="item" open="(" separator="," close=")">
${item}
</foreach>
AND ADVISER_ID IN
<foreach collection="adviserIds" index="index" item="item" open="(" separator="," close=")">
${item}
</foreach>
AND CHANNEL_ID IN
<foreach collection="channelIds" index="index" item="item" open="(" separator="," close=")">
${item}
</foreach>
</select>
</mapper>
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