Commit e95b742f by 田超

Merge branch 'fixbug/getAdviserBook' into 'master'

bug: [none] 接口性能优化 book/getAdviserBook

See merge request rays/pcloud-book!1507
parents 09f12b15 501c5c64
...@@ -7,7 +7,6 @@ import cn.hutool.core.bean.BeanUtil; ...@@ -7,7 +7,6 @@ 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;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
...@@ -30,16 +29,90 @@ import com.pcloud.book.applet.enums.LabelTypeEnum; ...@@ -30,16 +29,90 @@ import com.pcloud.book.applet.enums.LabelTypeEnum;
import com.pcloud.book.base.enums.BookStatusEnum; import com.pcloud.book.base.enums.BookStatusEnum;
import com.pcloud.book.base.enums.BookTypeEnum; import com.pcloud.book.base.enums.BookTypeEnum;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.*; import com.pcloud.book.book.biz.BookAdviserBiz;
import com.pcloud.book.book.biz.BookAdviserErpBiz;
import com.pcloud.book.book.biz.BookAppBiz;
import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.biz.BookFreezeBiz;
import com.pcloud.book.book.biz.BookFundBiz;
import com.pcloud.book.book.biz.BookLabelBiz;
import com.pcloud.book.book.biz.BookProductBiz;
import com.pcloud.book.book.biz.BookResourceBiz;
import com.pcloud.book.book.biz.BookSerialNumberBiz;
import com.pcloud.book.book.cache.BookCache; import com.pcloud.book.book.cache.BookCache;
import com.pcloud.book.book.constant.BookConstant; import com.pcloud.book.book.constant.BookConstant;
import com.pcloud.book.book.dao.*; import com.pcloud.book.book.dao.BookAdviserDao;
import com.pcloud.book.book.dto.*; import com.pcloud.book.book.dao.BookDao;
import com.pcloud.book.book.entity.*; import com.pcloud.book.book.dao.BookEdtionDao;
import com.pcloud.book.book.dao.BookLabelDao;
import com.pcloud.book.book.dao.BookLinkDao;
import com.pcloud.book.book.dao.BookRaysClassifyDao;
import com.pcloud.book.book.dao.BookTypeDao;
import com.pcloud.book.book.dao.EdtionRecordDao;
import com.pcloud.book.book.dao.NoviceGuideDeleteDao;
import com.pcloud.book.book.dao.QrcodeSceneErpDao;
import com.pcloud.book.book.dao.SeriesBookDao;
import com.pcloud.book.book.dao.SeriesBookRecordDao;
import com.pcloud.book.book.dto.AdviserBookInfoDTO;
import com.pcloud.book.book.dto.AviserBookInfoParam;
import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookAdviserUpdateTimeDTO;
import com.pcloud.book.book.dto.BookAssocCount;
import com.pcloud.book.book.dto.BookCoverImgUpdateDTO;
import com.pcloud.book.book.dto.BookDetialDTO;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.BookFreezeDto;
import com.pcloud.book.book.dto.BookFundDto;
import com.pcloud.book.book.dto.BookInfo4AnlysicsDTO;
import com.pcloud.book.book.dto.BookInfoAnalysicsDTO;
import com.pcloud.book.book.dto.BookInfoAndAuthStatusDTO;
import com.pcloud.book.book.dto.BookMinimumSupportDTO;
import com.pcloud.book.book.dto.BookNameUpdateDTO;
import com.pcloud.book.book.dto.BookTypeDto;
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.ERPPublishNumDTO;
import com.pcloud.book.book.dto.EditionAnalysisListVO;
import com.pcloud.book.book.dto.EditionAnalysisResultVO;
import com.pcloud.book.book.dto.EditionAnalysisVO;
import com.pcloud.book.book.dto.ErpBookApprovalDTO;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.book.dto.ProjectOrderSheetDTO;
import com.pcloud.book.book.dto.ProjectRelateVO;
import com.pcloud.book.book.dto.ProjectUploaderDTO;
import com.pcloud.book.book.dto.QrcodeServeDto;
import com.pcloud.book.book.dto.RelateAdviserVO;
import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.entity.BookAdviserErp;
import com.pcloud.book.book.entity.BookEdition;
import com.pcloud.book.book.entity.BookLabel;
import com.pcloud.book.book.entity.BookLink;
import com.pcloud.book.book.entity.BookSerialNumber;
import com.pcloud.book.book.entity.EditionRecord;
import com.pcloud.book.book.entity.NoviceGuideDelete;
import com.pcloud.book.book.entity.QrcodeSceneErp;
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.set.BookSet;
import com.pcloud.book.book.tools.BookTools; import com.pcloud.book.book.tools.BookTools;
import com.pcloud.book.book.vo.*; import com.pcloud.book.book.vo.BookCountsVO;
import com.pcloud.book.book.vo.request.*; import com.pcloud.book.book.vo.BookInfo4ScanCount;
import com.pcloud.book.book.vo.BookLabelVO;
import com.pcloud.book.book.vo.BookLinkVO;
import com.pcloud.book.book.vo.BookQualifyVO;
import com.pcloud.book.book.vo.BookResourceNumDTO;
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.SyncRelateDataToRaysVO;
import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto;
import com.pcloud.book.consumer.analysisengine.SceneRecordConsr; import com.pcloud.book.consumer.analysisengine.SceneRecordConsr;
import com.pcloud.book.consumer.app.AppConsr; import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.app.AssistTempletConsr; import com.pcloud.book.consumer.app.AssistTempletConsr;
...@@ -54,7 +127,11 @@ import com.pcloud.book.consumer.raystask.AdviserTaskConsr; ...@@ -54,7 +127,11 @@ import com.pcloud.book.consumer.raystask.AdviserTaskConsr;
import com.pcloud.book.consumer.raystask.MainLineConsr; import com.pcloud.book.consumer.raystask.MainLineConsr;
import com.pcloud.book.consumer.resource.ProductConsr; import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.trade.TradeConsr; import com.pcloud.book.consumer.trade.TradeConsr;
import com.pcloud.book.consumer.user.*; import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.AgentConsr;
import com.pcloud.book.consumer.user.ChannelConsr;
import com.pcloud.book.consumer.user.MerchantConsr;
import com.pcloud.book.consumer.user.PartyConsr;
import com.pcloud.book.consumer.wechat.WechatConsr; import com.pcloud.book.consumer.wechat.WechatConsr;
import com.pcloud.book.copyright.biz.BookAuthInfoBiz; import com.pcloud.book.copyright.biz.BookAuthInfoBiz;
import com.pcloud.book.copyright.vo.BookAuthInfoVO; import com.pcloud.book.copyright.vo.BookAuthInfoVO;
...@@ -131,8 +208,22 @@ import org.springframework.util.CollectionUtils; ...@@ -131,8 +208,22 @@ import org.springframework.util.CollectionUtils;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService; 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;
...@@ -140,6 +231,8 @@ import java.util.function.Function; ...@@ -140,6 +231,8 @@ import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.pcloud.book.util.common.ThreadPoolUtils.REMOTE_CALL_POOL;
/** /**
* @描述:书籍业务层接口实现类 * @描述:书籍业务层接口实现类
* @作者:songx * @作者:songx
...@@ -2505,42 +2598,43 @@ public class BookBizImpl implements BookBiz { ...@@ -2505,42 +2598,43 @@ public class BookBizImpl implements BookBiz {
return new BookDto(); return new BookDto();
} }
Integer joinGroupType = bookGroupDao.getJoinGroupType(paramMap); Integer joinGroupType = bookGroupDao.getJoinGroupType(paramMap);
if(null!=joinGroupType && JoinGroupTypeEnum.XIAORUI.getCode().equals(joinGroupType)){ if (JoinGroupTypeEnum.XIAORUI.getCode().equals(joinGroupType)) {
Long classifyId = bookRaysClassifyDao.getClassifyIdByBookTemplateId(bookDto.getTempletId()); Long classifyId = bookRaysClassifyDao.getClassifyIdByBookTemplateId(bookDto.getTempletId());
bookDto.setClassifyId(null!=classifyId ? classifyId.intValue():null); bookDto.setClassifyId(null != classifyId ? classifyId.intValue() : null);
} }
// 填充分类
CompletableFuture<Void> fillClassifyFuture = CompletableFuture.runAsync(() -> {
if (JoinGroupTypeEnum.XIAORUI.getCode().equals(bookGroupDao.getJoinGroupType(paramMap))) {
bookDto.setClassifyId(Optional.ofNullable(bookRaysClassifyDao.getClassifyIdByBookTemplateId(bookDto.getTempletId())).map(Long::intValue).orElse(null));
}
}, REMOTE_CALL_POOL);
// 设置模板名字 // 设置模板名字
List<Long> templetIds = new ArrayList<>(); CompletableFuture<Void> fillTempletNameFuture = CompletableFuture.runAsync(() -> {
if(bookDto.getTempletId()!=null) { Map<Long, AssistTempletDTO> assistTempletDTOMap = assistTempletConsr.mapByIds(Stream.of(bookDto.getTempletId(), bookDto.getSecondTempletId(), bookDto.getThirdTempletId())
templetIds.add(bookDto.getTempletId()); .filter(Objects::nonNull).collect(Collectors.toList()));
} if (org.apache.commons.collections4.MapUtils.isNotEmpty(assistTempletDTOMap)) {
if(bookDto.getSecondTempletId()!=null) { bookDto.setTempletName(Optional.ofNullable(assistTempletDTOMap.get(bookDto.getTempletId())).map(AssistTempletDTO::getTempletName).orElse(null));
templetIds.add(bookDto.getSecondTempletId()); bookDto.setSecondTempletName(Optional.ofNullable(assistTempletDTOMap.get(bookDto.getSecondTempletId())).map(AssistTempletDTO::getTempletName).orElse(null));
} bookDto.setThirdTempletName(Optional.ofNullable(assistTempletDTOMap.get(bookDto.getThirdTempletId())).map(AssistTempletDTO::getTempletName).orElse(null));
if(bookDto.getThirdTempletId()!=null) { }
templetIds.add(bookDto.getThirdTempletId()); }, REMOTE_CALL_POOL);
}
Map<Long, AssistTempletDTO> assistTempletDTOMap = assistTempletConsr.mapByIds(templetIds); // 填充出版社
Long thirdTempletId = bookDto.getThirdTempletId(); Long finalAdviserId = adviserId;
Long secondTempletId = bookDto.getSecondTempletId(); CompletableFuture<Void> fillAgentFuture = CompletableFuture.runAsync(() -> {
Long templetId = bookDto.getTempletId(); Map<Long, AdviserBaseInfoDto> adviserInfoDtoMap = adviserConsr.getAdviserId2AdviserInfoDtoMap(Collections.singletonList(finalAdviserId));
if (thirdTempletId != null && assistTempletDTOMap != null) { if (org.apache.commons.collections4.MapUtils.isNotEmpty(adviserInfoDtoMap)) {
AssistTempletDTO templetDTO = assistTempletDTOMap.get(thirdTempletId); bookDto.setAgentId(Optional.ofNullable(adviserInfoDtoMap.get(finalAdviserId)).map(AdviserBaseInfoDto::getAgentId).orElse(null));
bookDto.setThirdTempletName(Optional.ofNullable(templetDTO).map(AssistTempletDTO::getTempletName).orElse(null)); bookDto.setAgentName(Optional.ofNullable(adviserInfoDtoMap.get(finalAdviserId)).map(AdviserBaseInfoDto::getAgentName).orElse(null));
} }
if (secondTempletId!=null&&assistTempletDTOMap!=null) { }, REMOTE_CALL_POOL);
AssistTempletDTO templetDTO = assistTempletDTOMap.get(secondTempletId);
bookDto.setSecondTempletName(Optional.ofNullable(templetDTO).map(AssistTempletDTO::getTempletName).orElse(null)); try {
} CompletableFuture.allOf(fillAgentFuture, fillClassifyFuture, fillTempletNameFuture).get();
if (templetId!=null&&assistTempletDTOMap!=null) { } catch (InterruptedException | ExecutionException e) {
AssistTempletDTO templetDTO = assistTempletDTOMap.get(templetId); LOGGER.warn("获取书刊信息失败 [BookBizImpl.getAdviserBook] ERR:{}", e.getMessage(), e);
bookDto.setTempletName(Optional.ofNullable(templetDTO).map(AssistTempletDTO::getTempletName).orElse(null));
}
Map<Long, AdviserBaseInfoDto> adviserInfoDtoMap = adviserConsr.getAdviserId2AdviserInfoDtoMap(Arrays.asList(adviserId));
if (adviserInfoDtoMap != null) {
AdviserBaseInfoDto adviserBaseInfoDto = adviserInfoDtoMap.get(adviserId);
bookDto.setAgentId(adviserBaseInfoDto==null?null:adviserBaseInfoDto.getAgentId());
bookDto.setAgentName(adviserBaseInfoDto==null?null:adviserBaseInfoDto.getAgentName());
} }
return bookDto; return bookDto;
} }
......
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