Commit b1e6d025 by 田超

Merge branch 'feature/4erp' into 'master'

bug: [none] 优化erp用的接口

See merge request rays/pcloud-book!1348
parents ae95e994 2ed0030a
...@@ -70,6 +70,7 @@ import com.pcloud.book.consumer.user.BookcaseConsr; ...@@ -70,6 +70,7 @@ import com.pcloud.book.consumer.user.BookcaseConsr;
import com.pcloud.book.consumer.user.ChannelConsr; import com.pcloud.book.consumer.user.ChannelConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr; import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.es.biz.ESBookAndAdviserBiz; import com.pcloud.book.es.biz.ESBookAndAdviserBiz;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.book.group.biz.BookGroupBiz; import com.pcloud.book.group.biz.BookGroupBiz;
import com.pcloud.book.group.biz.ResourcePageBiz; import com.pcloud.book.group.biz.ResourcePageBiz;
import com.pcloud.book.group.dao.BookAppletSceneDao; import com.pcloud.book.group.dao.BookAppletSceneDao;
...@@ -139,9 +140,11 @@ import org.slf4j.LoggerFactory; ...@@ -139,9 +140,11 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.w3c.dom.NameList;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -1025,18 +1028,22 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -1025,18 +1028,22 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
@ParamLog("获取编辑书刊列表(ERP项目用)") @ParamLog("获取编辑书刊列表(ERP项目用)")
public PageBeanNew<ErpAdviserBookVO> listAdviserBook4Erp(String isbn, String uniqueNumber, String adviserName, Long agentId, Integer currentPage, Integer numPerPage) { public PageBeanNew<ErpAdviserBookVO> listAdviserBook4Erp(String isbn, String uniqueNumber, String adviserName, Long agentId, Integer currentPage, Integer numPerPage) {
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
List<String> listName=new ArrayList<>();
if(!StringUtil.isEmpty(isbn)){ if(!StringUtil.isEmpty(isbn)){
String [] nameList = isbn.trim().split("[\u00A0|\u3000|\u0020]"); String [] nameList = isbn.trim().split("[\u00A0|\u3000|\u0020]");
listName=Lists.newArrayList(nameList);
paramMap.put("nameList", Lists.newArrayList(nameList)); paramMap.put("nameList", Lists.newArrayList(nameList));
} }
paramMap.put("isbn", isbn); paramMap.put("isbn", isbn);
paramMap.put("uniqueNumber", uniqueNumber); paramMap.put("uniqueNumber", uniqueNumber);
List<Long> adviserIdList=new ArrayList<>();
if(!StringUtil.isEmpty(adviserName)) { if(!StringUtil.isEmpty(adviserName)) {
List<Long> adviserIds = adviserConsr.getAdviserIdsByName(adviserName); List<Long> adviserIds = adviserConsr.getAdviserIdsByName(adviserName);
if(CollectionUtils.isEmpty(adviserIds)) { if(CollectionUtils.isEmpty(adviserIds)) {
return new PageBeanNew<>(currentPage, numPerPage, new ArrayList<>()); return new PageBeanNew<>(currentPage, numPerPage, new ArrayList<>());
} }
paramMap.put("adviserIds", adviserIds); paramMap.put("adviserIds", adviserIds);
adviserIdList=adviserIds;
} }
if(agentId != null && agentId > 0){ if(agentId != null && agentId > 0){
...@@ -1047,20 +1054,61 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -1047,20 +1054,61 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
if(paramMap.containsKey("adviserIds")){ if(paramMap.containsKey("adviserIds")){
List<Long> adviserIds = (List<Long>)paramMap.get("adviserIds"); List<Long> adviserIds = (List<Long>)paramMap.get("adviserIds");
adviserIds.retainAll(allAdvisers4Agent); adviserIds.retainAll(allAdvisers4Agent);
adviserIdList=adviserIds;
} else { } else {
paramMap.put("adviserIds", allAdvisers4Agent); paramMap.put("adviserIds", allAdvisers4Agent);
adviserIdList=allAdvisers4Agent;
} }
} }
PageBeanNew<ErpAdviserBookVO> pageBeanNew = bookAdviserDao.listPageNew(new PageParam(currentPage, numPerPage), paramMap, "listAdviserBook4Erp"); //PageBeanNew<ErpAdviserBookVO> pageBeanNew = bookAdviserDao.listPageNew(new PageParam(currentPage, numPerPage), paramMap, "listAdviserBook4Erp");
List<ErpAdviserBookVO> bookVOS = pageBeanNew.getRecordList(); Page<ESBookAndAdviser> page= esBookAndAdviserBiz.getESBooks4Erp(isbn,uniqueNumber, listName,adviserIdList,currentPage,numPerPage);
if(null==page){
return new PageBeanNew<>(currentPage, numPerPage,0, new ArrayList<>());
}
if(CollUtil.isEmpty(page.getContent())){
return new PageBeanNew<>(currentPage, numPerPage,Long.valueOf(page.getTotalElements()).intValue(), new ArrayList<>());
}
List<ESBookAndAdviser> esBookAndAdvisers = page.getContent();
List<ErpAdviserBookVO> bookVOS = changeToErpBookVO(esBookAndAdvisers);
if(!CollectionUtils.isEmpty(bookVOS)) { if(!CollectionUtils.isEmpty(bookVOS)) {
List<Long> adviserIds = bookVOS.stream().filter(s -> s.getAdviserId() != null).map(ErpAdviserBookVO::getAdviserId).distinct().collect(Collectors.toList()); Set<Long> setAdviserIds=new HashSet<>();
List<Long> channelIds = bookVOS.stream().filter(s -> s.getChannelId() != null).map(ErpAdviserBookVO::getChannelId).distinct().collect(Collectors.toList()); Set<Long> setChannelIds=new HashSet<>();
List<Long> bookIds = bookVOS.stream().filter(s -> s.getBookId() != null).map(ErpAdviserBookVO::getBookId).distinct().collect(Collectors.toList()); Set<Long> setBookIds=new HashSet<>();
Map<Long, UserLogin> userLoginInfoMap= adviserConsr.getUserLoginInfoList(adviserIds); for (ErpAdviserBookVO bookVO : bookVOS) {
Map<Long, AdviserBaseInfoDto> adviserAgentMap = adviserConsr.getAdviserId2AdviserInfoDtoMap(adviserIds); addIfNonNull(setAdviserIds,bookVO.getAdviserId());
Map<Long, String> channelNameMap = channelConsr.getNamesByIdList(channelIds); addIfNonNull(setChannelIds,bookVO.getChannelId());
List<Long> list = bookFundBiz.listHaveFundBooks(bookIds); addIfNonNull(setBookIds,bookVO.getBookId());
}
List<Long> adviserIds = Lists.newArrayList(setAdviserIds);
List<Long> channelIds = Lists.newArrayList(setChannelIds);
List<Long> bookIds = Lists.newArrayList(setBookIds);
Map<Long, UserLogin> userLoginInfoMap= new HashMap<>();
Map<Long, AdviserBaseInfoDto> adviserAgentMap = new HashMap<>();
Map<Long, String> channelNameMap = new HashMap<>();
Map<Long, BookDto> bookDtoMapMap = new HashMap<>();
CompletableFuture<Map<Long, UserLogin>> userLoginInfoMapFuture=CompletableFuture.supplyAsync(()->{
return adviserConsr.getUserLoginInfoList(adviserIds);
},ThreadPoolUtils.OTHER_THREAD_POOL);
CompletableFuture<Map<Long, AdviserBaseInfoDto>> adviserAgentMapFuture=CompletableFuture.supplyAsync(()->{
return adviserConsr.getAdviserId2AdviserInfoDtoMap(adviserIds);
},ThreadPoolUtils.OTHER_THREAD_POOL);
CompletableFuture<Map<Long, String>> channelNameMapFuture=CompletableFuture.supplyAsync(()->{
return channelConsr.getNamesByIdList(channelIds);
},ThreadPoolUtils.OTHER_THREAD_POOL);
CompletableFuture<Map<Long, BookDto>> bookDtoMapFuture=CompletableFuture.supplyAsync(()->{
return bookBiz.listBaseByIds(bookIds);
},ThreadPoolUtils.OTHER_THREAD_POOL);
CompletableFuture.allOf(userLoginInfoMapFuture, adviserAgentMapFuture,channelNameMapFuture,bookDtoMapFuture);
try{
userLoginInfoMap=userLoginInfoMapFuture.get(10,TimeUnit.SECONDS);
adviserAgentMap=adviserAgentMapFuture.get(10,TimeUnit.SECONDS);
channelNameMap=channelNameMapFuture.get(10,TimeUnit.SECONDS);
bookDtoMapMap=bookDtoMapFuture.get(10,TimeUnit.SECONDS);
} catch (InterruptedException | TimeoutException | ExecutionException e) {
LOGGER.error("[exportMonthReport] 并行导出word失败! err:{}", e.getMessage(), e);
}
//List<Long> list = bookFundBiz.listHaveFundBooks(bookIds);
for (ErpAdviserBookVO bookVO : bookVOS) { for (ErpAdviserBookVO bookVO : bookVOS) {
Long adviserId = bookVO.getAdviserId(); Long adviserId = bookVO.getAdviserId();
if(adviserId != null && MapUtils.isNotEmpty(userLoginInfoMap) && userLoginInfoMap.containsKey(adviserId)) { if(adviserId != null && MapUtils.isNotEmpty(userLoginInfoMap) && userLoginInfoMap.containsKey(adviserId)) {
...@@ -1077,15 +1125,47 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -1077,15 +1125,47 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
if(bookVO.getChannelId() != null && MapUtils.isNotEmpty(channelNameMap) && channelNameMap.containsKey(bookVO.getChannelId())) { if(bookVO.getChannelId() != null && MapUtils.isNotEmpty(channelNameMap) && channelNameMap.containsKey(bookVO.getChannelId())) {
bookVO.setChannelName(channelNameMap.get(bookVO.getChannelId())); bookVO.setChannelName(channelNameMap.get(bookVO.getChannelId()));
} }
bookVO.setIsFundSupport(false); if(bookVO.getBookId() != null && MapUtils.isNotEmpty(bookDtoMapMap) && bookDtoMapMap.containsKey(bookVO.getBookId())) {
BookDto bookDto = bookDtoMapMap.get(bookVO.getBookId());
bookVO.setCoverImg(Optional.ofNullable(bookDto).map(a->a.getCoverImg()).orElse(null));
}
/*bookVO.setIsFundSupport(false);
if(!ListUtils.isEmpty(list) && list.contains(bookVO.getBookId())) { if(!ListUtils.isEmpty(list) && list.contains(bookVO.getBookId())) {
bookVO.setIsFundSupport(true); bookVO.setIsFundSupport(true);
} }*/
} }
} }
return pageBeanNew; return new PageBeanNew<>(currentPage, numPerPage, (int) page.getTotalElements(), bookVOS);
} }
private <E> void addIfNonNull(Collection<E> s, E v) {
if (v != null) {
s.add(v);
}
}
private List<ErpAdviserBookVO> changeToErpBookVO(List<ESBookAndAdviser> esBookAndAdvisers) {
List<ErpAdviserBookVO> bookDtos=new ArrayList<>();
for (ESBookAndAdviser esBookAndAdviser:esBookAndAdvisers){
ErpAdviserBookVO bookDto=new ErpAdviserBookVO();
BeanUtils.copyProperties(esBookAndAdviser, bookDto);
bookDto.setBookId(esBookAndAdviser.getBookId()==null?null:new Long(esBookAndAdviser.getBookId()));
bookDto.setBookAdviserId(esBookAndAdviser.getBookAdviserId()==null?null:new Long(esBookAndAdviser.getBookAdviserId()));
bookDto.setAdviserId(esBookAndAdviser.getAdviserId()==null?null:new Long(esBookAndAdviser.getAdviserId()));
bookDto.setChannelId(esBookAndAdviser.getChannelId()==null?null:new Long(esBookAndAdviser.getChannelId()));
bookDto.setIsbn(esBookAndAdviser.getIsbn());
bookDto.setBookName(esBookAndAdviser.getBookName());
bookDto.setUniqueNumber(null==bookDto.getBookId() ? null : StrUtil.concat(true,"BK",bookDto.getBookId().toString()));
if (null != esBookAndAdviser.getIsFundSupport() && esBookAndAdviser.getIsFundSupport()==1) {
bookDto.setIsFundSupport(true);
} else {
bookDto.setIsFundSupport(false);
}
bookDtos.add(bookDto);
}
return bookDtos;
}
/** /**
* 设置书刊是否已下印状态 * 设置书刊是否已下印状态
*/ */
......
...@@ -55,4 +55,9 @@ public interface ESBookAndAdviserBiz { ...@@ -55,4 +55,9 @@ public interface ESBookAndAdviserBiz {
* * @param null * * @param null
*/ */
Page<ESBookAndAdviser> getESBooksOrderByChose(String keyword, List<Long> choseBookIdList, Integer currentPage, Integer numPerPage); Page<ESBookAndAdviser> getESBooksOrderByChose(String keyword, List<Long> choseBookIdList, Integer currentPage, Integer numPerPage);
/**
* 获取编辑书刊列表(ERP项目用)
*/
Page<ESBookAndAdviser> getESBooks4Erp(String isbn, String uniqueNumber, List<String> listName, List<Long> adviserIdList, Integer currentPage, Integer numPerPage);
} }
...@@ -36,6 +36,8 @@ import com.pcloud.common.utils.robot.WeWorkWebHookRobotUtils; ...@@ -36,6 +36,8 @@ import com.pcloud.common.utils.robot.WeWorkWebHookRobotUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.facade.tradecenter.dto.BookIncomeQueryVo; import com.pcloud.facade.tradecenter.dto.BookIncomeQueryVo;
import com.pcloud.facade.tradecenter.dto.IncomeBackDto; import com.pcloud.facade.tradecenter.dto.IncomeBackDto;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
...@@ -43,6 +45,8 @@ import org.apache.commons.lang3.StringUtils; ...@@ -43,6 +45,8 @@ import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.MatchQueryBuilder; import org.elasticsearch.index.query.MatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.WildcardQueryBuilder;
import org.elasticsearch.search.sort.FieldSortBuilder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -669,4 +673,40 @@ public class ESBookAndAdviserBizImpl implements ESBookAndAdviserBiz { ...@@ -669,4 +673,40 @@ public class ESBookAndAdviserBizImpl implements ESBookAndAdviserBiz {
Page<ESBookAndAdviser> search = bookAndAdviserRepository.search(boolQueryBuilder, pageRequest); Page<ESBookAndAdviser> search = bookAndAdviserRepository.search(boolQueryBuilder, pageRequest);
return search; return search;
} }
@Override
public Page<ESBookAndAdviser> getESBooks4Erp(String isbn, String uniqueNumber, List<String> listName, List<Long> adviserIdList, Integer currentPage, Integer numPerPage) {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("isBookDelete", 0))
.filter(QueryBuilders.termQuery("isBookAdviserDelete",0))
.mustNot(QueryBuilders.termQuery("bookAdviserId",0));
if(StrUtil.isNotBlank(uniqueNumber)){
boolQueryBuilder.filter(wildcardQuery("bookId",StrUtil.replace(uniqueNumber,"BK","")));
}
if(StrUtil.isNotBlank(isbn)){
BoolQueryBuilder contentCondition = QueryBuilders.boolQuery();
contentCondition.should(QueryBuilders.termQuery("isbn",isbn));
contentCondition.should(wildcardQuery("bookName",isbn));
if(CollUtil.isNotEmpty(listName)){
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
for (String name : listName) {
queryBuilder.filter(wildcardQuery("bookName",name));
}
contentCondition.should(queryBuilder);
}
boolQueryBuilder.filter(contentCondition);
}
if(CollUtil.isNotEmpty(adviserIdList)){
boolQueryBuilder.filter(QueryBuilders.termsQuery("adviserId", adviserIdList));
}
Sort sort = new Sort(Sort.Direction.DESC, "createdDate", "bookId");
PageRequest pageRequest = new PageRequest(currentPage, numPerPage, sort);
Page<ESBookAndAdviser> search = bookAndAdviserRepository.search(boolQueryBuilder, pageRequest);
return search;
}
public static WildcardQueryBuilder wildcardQuery(String key, String value) {
return QueryBuilders.wildcardQuery(key, '*' + StringUtils.trim(value) + '*');
}
} }
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