Commit 43a14b7b by 桂前礼

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

parent 6fbc54a3
...@@ -21,12 +21,14 @@ import com.pcloud.book.book.dto.RelateAdviserVO; ...@@ -21,12 +21,14 @@ import com.pcloud.book.book.dto.RelateAdviserVO;
import com.pcloud.book.book.entity.Book; import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.BookLabel; import com.pcloud.book.book.entity.BookLabel;
import com.pcloud.book.book.entity.SeriesBookRecord; 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.BookLabelVO;
import com.pcloud.book.book.vo.BookQualifyVO; import com.pcloud.book.book.vo.BookQualifyVO;
import com.pcloud.book.book.vo.BookSaleVO; import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.book.book.vo.ListNoAuthBookParam; import com.pcloud.book.book.vo.ListNoAuthBookParam;
import com.pcloud.book.book.vo.ListNoAuthGroupBookParam; import com.pcloud.book.book.vo.ListNoAuthGroupBookParam;
import com.pcloud.book.book.vo.SearchBookVO; 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.BookQualifyInfoVO;
import com.pcloud.book.book.vo.request.BookSearchParamVO; import com.pcloud.book.book.vo.request.BookSearchParamVO;
import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto; import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto;
...@@ -787,4 +789,6 @@ public interface BookBiz { ...@@ -787,4 +789,6 @@ public interface BookBiz {
PageBeanNew<BookDto> listPageBookMinimunSupport4Platform(Integer currentPage, Integer numPerPage, PageBeanNew<BookDto> listPageBookMinimunSupport4Platform(Integer currentPage, Integer numPerPage,
String isbn, String bookName, String publish, String serialNumber, Integer isCurrentMonth, Integer isOverdue, String isbn, String bookName, String publish, String serialNumber, Integer isCurrentMonth, Integer isOverdue,
Long agentId) throws BizException; Long agentId) throws BizException;
List<BookInfo4ScanCount> fetchBookListByScanCount(List<BookInfo4ScanCountRequestVO> requestVOS);
} }
...@@ -63,6 +63,7 @@ import com.pcloud.book.book.dto.BookUniqueNumberDTO; ...@@ -63,6 +63,7 @@ import com.pcloud.book.book.dto.BookUniqueNumberDTO;
import com.pcloud.book.book.dto.CreateBookResultVO; import com.pcloud.book.book.dto.CreateBookResultVO;
import com.pcloud.book.book.dto.CreateBookVO; import com.pcloud.book.book.dto.CreateBookVO;
import com.pcloud.book.book.dto.CreateQrcodeVO; 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.MapResourceTotalCountDTO;
import com.pcloud.book.book.dto.EditionAnalysisListVO; import com.pcloud.book.book.dto.EditionAnalysisListVO;
import com.pcloud.book.book.dto.EditionAnalysisResultVO; import com.pcloud.book.book.dto.EditionAnalysisResultVO;
...@@ -81,12 +82,14 @@ import com.pcloud.book.book.entity.SeriesBook; ...@@ -81,12 +82,14 @@ import com.pcloud.book.book.entity.SeriesBook;
import com.pcloud.book.book.entity.SeriesBookRecord; import com.pcloud.book.book.entity.SeriesBookRecord;
import com.pcloud.book.book.set.BookSet; import com.pcloud.book.book.set.BookSet;
import com.pcloud.book.book.tools.BookTools; 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.BookLabelVO;
import com.pcloud.book.book.vo.BookQualifyVO; import com.pcloud.book.book.vo.BookQualifyVO;
import com.pcloud.book.book.vo.BookSaleVO; import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.book.book.vo.ListNoAuthBookParam; import com.pcloud.book.book.vo.ListNoAuthBookParam;
import com.pcloud.book.book.vo.ListNoAuthGroupBookParam; import com.pcloud.book.book.vo.ListNoAuthGroupBookParam;
import com.pcloud.book.book.vo.SearchBookVO; 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.BookQualifyInfoVO;
import com.pcloud.book.book.vo.request.BookSearchParamVO; import com.pcloud.book.book.vo.request.BookSearchParamVO;
import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto; import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto;
...@@ -187,6 +190,7 @@ import java.util.concurrent.ExecutorService; ...@@ -187,6 +190,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
...@@ -3957,4 +3961,93 @@ public class BookBizImpl implements BookBiz { ...@@ -3957,4 +3961,93 @@ public class BookBizImpl implements BookBiz {
} }
return new PageBeanNew<>(currentPage, numPerPage, totalCount, bookList); 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; ...@@ -14,6 +14,7 @@ import com.pcloud.book.book.dto.ERPPublishNumDTO;
import com.pcloud.book.book.dto.ErpBookInfoDTO; import com.pcloud.book.book.dto.ErpBookInfoDTO;
import com.pcloud.book.book.entity.BookAdviser; import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO; 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.book.vo.ErpAdviserBookVO;
import com.pcloud.book.es.entity.ESBookAndAdviser; import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
...@@ -307,4 +308,6 @@ public interface BookAdviserDao extends BaseDao<BookAdviser> { ...@@ -307,4 +308,6 @@ public interface BookAdviserDao extends BaseDao<BookAdviser> {
void updateBookTempletAndLabel(BookAdviser bookAdviser); void updateBookTempletAndLabel(BookAdviser bookAdviser);
void syncTempletId4ES(ResultHandler<ESBookAndAdviser> resultHandler); 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; ...@@ -19,6 +19,7 @@ import com.pcloud.book.book.dto.ERPPublishNumDTO;
import com.pcloud.book.book.dto.ErpBookInfoDTO; import com.pcloud.book.book.dto.ErpBookInfoDTO;
import com.pcloud.book.book.entity.BookAdviser; import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO; 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.book.vo.ErpAdviserBookVO;
import com.pcloud.book.es.entity.ESBookAndAdviser; import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.common.core.dao.BaseDaoImpl; import com.pcloud.common.core.dao.BaseDaoImpl;
...@@ -369,4 +370,11 @@ public class BookAdviserDaoImpl extends BaseDaoImpl<BookAdviser> implements Book ...@@ -369,4 +370,11 @@ public class BookAdviserDaoImpl extends BaseDaoImpl<BookAdviser> implements Book
super.getSqlSession().select(getStatement("syncTempletId4ES"), resultHandler); 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 @@ ...@@ -3,6 +3,7 @@
*/ */
package com.pcloud.book.book.facade.impl; package com.pcloud.book.book.facade.impl;
import cn.hutool.core.collection.CollUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
...@@ -19,10 +20,12 @@ import com.pcloud.book.book.dto.RelateAdviserVO; ...@@ -19,10 +20,12 @@ import com.pcloud.book.book.dto.RelateAdviserVO;
import com.pcloud.book.book.entity.Book; import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.SeriesBookRecord; import com.pcloud.book.book.entity.SeriesBookRecord;
import com.pcloud.book.book.facade.BookFacade; 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.BookQualifyVO;
import com.pcloud.book.book.vo.ListNoAuthBookParam; import com.pcloud.book.book.vo.ListNoAuthBookParam;
import com.pcloud.book.book.vo.ListNoAuthGroupBookParam; import com.pcloud.book.book.vo.ListNoAuthGroupBookParam;
import com.pcloud.book.book.vo.SearchBookVO; 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.BookQualifyInfoVO;
import com.pcloud.book.book.vo.request.BookSearchParamVO; import com.pcloud.book.book.vo.request.BookSearchParamVO;
import com.pcloud.book.book.dto.BookUniqueNumberDTO; import com.pcloud.book.book.dto.BookUniqueNumberDTO;
...@@ -1328,4 +1331,10 @@ public class BookFacadeImpl implements BookFacade { ...@@ -1328,4 +1331,10 @@ public class BookFacadeImpl implements BookFacade {
} }
return new ResponseDto<>(bookBiz.listPageBookMinimunSupport4Platform(currentPage,numPerPage,isbn,bookName,publish,serialNumber,isCurrentMonth,isOverdue, agentId)); 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 @@ ...@@ -1014,4 +1014,37 @@
group by BOOK_ID group by BOOK_ID
</select> </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> </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