Commit 54a02094 by 阮思源

Merge branch 'feat-1002168' into 'master'

1002168出版收益

See merge request rays/pcloud-book!310
parents 1fe6ae72 3ae4c87e
...@@ -603,6 +603,16 @@ public class BookDto extends BaseDto { ...@@ -603,6 +603,16 @@ public class BookDto extends BaseDto {
*/ */
private Long areaLabelId; private Long areaLabelId;
/**
* 出版社收益
*/
private BigDecimal agentIncome;
/**
* 编辑收益
*/
private BigDecimal adviserIncome;
public String getQrRemark() { public String getQrRemark() {
return qrRemark; return qrRemark;
} }
...@@ -1607,6 +1617,22 @@ public class BookDto extends BaseDto { ...@@ -1607,6 +1617,22 @@ public class BookDto extends BaseDto {
this.areaLabelId = areaLabelId; this.areaLabelId = areaLabelId;
} }
public BigDecimal getAgentIncome() {
return agentIncome;
}
public void setAgentIncome(BigDecimal agentIncome) {
this.agentIncome = agentIncome;
}
public BigDecimal getAdviserIncome() {
return adviserIncome;
}
public void setAdviserIncome(BigDecimal adviserIncome) {
this.adviserIncome = adviserIncome;
}
@Override @Override
public String toString() { public String toString() {
return "BookDto{" + return "BookDto{" +
...@@ -1728,6 +1754,8 @@ public class BookDto extends BaseDto { ...@@ -1728,6 +1754,8 @@ public class BookDto extends BaseDto {
", subLabelId=" + subLabelId + ", subLabelId=" + subLabelId +
", verLabelId=" + verLabelId + ", verLabelId=" + verLabelId +
", areaLabelId=" + areaLabelId + ", areaLabelId=" + areaLabelId +
", agentIncome=" + agentIncome +
", adviserIncome=" + adviserIncome +
"} " + super.toString(); "} " + super.toString();
} }
} }
...@@ -13,6 +13,7 @@ import com.pcloud.book.book.dto.BookInfoAnalysicsDTO; ...@@ -13,6 +13,7 @@ import com.pcloud.book.book.dto.BookInfoAnalysicsDTO;
import com.pcloud.book.book.dto.BookInfoAndAuthStatusDTO; import com.pcloud.book.book.dto.BookInfoAndAuthStatusDTO;
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.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.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
...@@ -591,4 +592,14 @@ public interface BookBiz { ...@@ -591,4 +592,14 @@ public interface BookBiz {
*/ */
Map<Integer,List<BookLabel>> getBookLabels(); Map<Integer,List<BookLabel>> getBookLabels();
/**
* 书刊收益列表-出版端
*/
PageBeanNew<BookSaleVO> listPageIncomeDetail(PageParam pageParam, Map<String, Object> paramMap, Long agentId);
/**
* 导出书刊收益--出版端
*/
void exportBookIncomeDetail(Map<String, Object> paramMap, Long agentId, Long partyId, String systemCode);
} }
...@@ -41,12 +41,15 @@ import com.pcloud.book.book.entity.BookAdviser; ...@@ -41,12 +41,15 @@ import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.entity.BookLabel; import com.pcloud.book.book.entity.BookLabel;
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.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.consumer.analysisengine.SceneRecordConsr; import com.pcloud.book.consumer.analysisengine.SceneRecordConsr;
import com.pcloud.book.consumer.app.AssistTempletConsr; import com.pcloud.book.consumer.app.AssistTempletConsr;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr; import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.common.ExportConsr;
import com.pcloud.book.consumer.isbn.IsbnConsr; import com.pcloud.book.consumer.isbn.IsbnConsr;
import com.pcloud.book.consumer.message.MessageConsr;
import com.pcloud.book.consumer.raystask.MainLineConsr; import com.pcloud.book.consumer.raystask.MainLineConsr;
import com.pcloud.book.consumer.user.AdviserConsr; import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.AgentConsr; import com.pcloud.book.consumer.user.AgentConsr;
...@@ -62,20 +65,28 @@ import com.pcloud.book.util.common.ThreadPoolUtils; ...@@ -62,20 +65,28 @@ import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.constant.AgentTypeEnum; import com.pcloud.common.core.constant.AgentTypeEnum;
import com.pcloud.common.core.constant.SystemCode; import com.pcloud.common.core.constant.SystemCode;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.exceptions.ExportException;
import com.pcloud.common.page.PageBean; import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.DateUtils; import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
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.commoncenter.export.dto.ExportDto;
import com.pcloud.commoncenter.export.service.ExportService;
import com.pcloud.settlementcenter.record.exceptions.RecordException;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; 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.http.ResponseEntity;
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;
...@@ -152,6 +163,12 @@ public class BookBizImpl implements BookBiz { ...@@ -152,6 +163,12 @@ public class BookBizImpl implements BookBiz {
@Autowired @Autowired
private BookLabelDao bookLabelDao; private BookLabelDao bookLabelDao;
@Autowired
private ExportService exportService;
@Autowired
private ExportConsr exportConsr;
@Autowired
private MessageConsr messageConsr;
/** /**
* 创建书籍,同时建立与编辑的推广关系 * 创建书籍,同时建立与编辑的推广关系
...@@ -1798,4 +1815,79 @@ public class BookBizImpl implements BookBiz { ...@@ -1798,4 +1815,79 @@ public class BookBizImpl implements BookBiz {
} }
return map; return map;
} }
@ParamLog("书刊收益列表--出版端")
@Override
public PageBeanNew<BookSaleVO> listPageIncomeDetail(PageParam pageParam, Map<String, Object> paramMap, Long agentId) {
List<Long> adviserIds = adviserConsr.getIdsByNameAndAgentId(agentId, (String) paramMap.get("keyWord"));
List<Long> agent4AdviserIds = adviserConsr.getIdsByNameAndAgentId(agentId, null);
paramMap.put("adviserIds", adviserIds);
paramMap.put("agent4AdviserIds", agent4AdviserIds);
if (ListUtils.isEmpty(agent4AdviserIds)) {
return new PageBeanNew<>(0, 0, new ArrayList<>());
}
PageBeanNew<BookSaleVO> pageNew = bookDao.listPageNew(pageParam, paramMap, "listIncomePage4Agent");
//填充收益
bookSet.setAgentSalesInfo(pageNew.getRecordList(),agentId);
return pageNew;
}
@ParamLog("导出书刊收益导出--出版端")
@Override
public void exportBookIncomeDetail(Map<String, Object> paramMap, Long agentId, Long partyId, String systemCode) {
//导出数据
if (paramMap == null) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数错误!");
}
List<Long> adviserIds = adviserConsr.getIdsByNameAndAgentId(agentId, (String) paramMap.get("keyWord"));
List<Long> agent4AdviserIds = adviserConsr.getIdsByNameAndAgentId(agentId, null);
paramMap.put("adviserIds", adviserIds);
paramMap.put("agent4AdviserIds", agent4AdviserIds);
Long count = bookDao.countIncomePage4Agent(paramMap);
if(count>1500){
throw new ExportException(ExportException.OPERATE_ERROR, "数量超过限制,请添加条件再导出!");
}
ThreadPoolUtils.EXPORT_THREAD_POOL.execute(() -> {
try{
List<BookSaleVO> list = new ArrayList<>();
Integer cu = 100;
Integer p = (count.intValue() / cu) + 1;
for (int i = 0; i < p; i++) {
PageBeanNew<BookSaleVO> pageBeanNew=listPageIncomeDetail(new PageParam(i,cu), paramMap, agentId);
List<BookSaleVO> bookSaleVOS=pageBeanNew.getRecordList();
list.addAll(bookSaleVOS);
}
List<Object[]> dataList = new ArrayList<>();
for (int i = 0, size = list.size(); i < size; i++) {
BookSaleVO bookSaleVO = list.get(i);
Object[] obj = new Object[9];
obj[0] = i + 1;
obj[1] = bookSaleVO.getBookName();
obj[2] = bookSaleVO.getIsbn();
if (bookSaleVO.getIsFundSupport()==true){
obj[3] = "是";
}else{
obj[3] = "否";
}
obj[4] = bookSaleVO.getAdviserName();
obj[5] = bookSaleVO.getChannelName();
if (bookSaleVO.getAgentBookIncomeDTO()!=null){
obj[6] = bookSaleVO.getAgentBookIncomeDTO().getBookIncome();
obj[7] = bookSaleVO.getAgentBookIncomeDTO().getAdviserIncome();
obj[8] = bookSaleVO.getAgentBookIncomeDTO().getAgentIncome();
}
dataList.add(obj);
}
Date date = new Date();
String[] rowsName = {"序号", "书刊名称", "书刊号", "是否基金书", "主编辑", "运营平台", "销售总额", "编辑收益", "出版社收益"};
String fileName = "书刊收益统计--" + DateUtils.getStrFormTime("yyyyMMdd", date);
String fileUrl = exportConsr.exportExcel(fileName, rowsName, dataList);
String letterType = "book_download";
String content = String.format("{\"commitTime\":\"%s\",\"type\":\"%s\"}", DateUtils.formatDate(date), fileName);
messageConsr.sendLetter(partyId, partyId, content, systemCode, letterType, fileUrl, fileName);
}catch (Exception e) {
LOGGER.error("exportBookIncomeDetail+++paramMap=" + paramMap.toString() + "systemCode=" + systemCode + "partyId=" + partyId);
}
});
}
} }
...@@ -9,6 +9,7 @@ import com.pcloud.book.book.dto.BookDto; ...@@ -9,6 +9,7 @@ import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.BookInfo4AnlysicsDTO; import com.pcloud.book.book.dto.BookInfo4AnlysicsDTO;
import com.pcloud.book.book.dto.BookInfoAnalysicsDTO; import com.pcloud.book.book.dto.BookInfoAnalysicsDTO;
import com.pcloud.book.book.entity.Book; import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
/** /**
...@@ -316,4 +317,7 @@ public interface BookDao extends BaseDao<Book> { ...@@ -316,4 +317,7 @@ public interface BookDao extends BaseDao<Book> {
*/ */
Long listBookClassifyCount(Map<String,Object> paramMap); Long listBookClassifyCount(Map<String,Object> paramMap);
List<BookSaleVO> listIncomePage4Agent(Map<String,Object> paramMap);
Long countIncomePage4Agent(Map<String, Object> paramMap);
} }
...@@ -6,6 +6,10 @@ package com.pcloud.book.book.dao.impl; ...@@ -6,6 +6,10 @@ package com.pcloud.book.book.dao.impl;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import com.google.common.collect.Lists;
import com.pcloud.book.book.vo.BookSaleVO;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.pcloud.book.book.dao.BookDao; import com.pcloud.book.book.dao.BookDao;
...@@ -300,4 +304,14 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao { ...@@ -300,4 +304,14 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
public Long listBookClassifyCount(Map<String, Object> paramMap) { public Long listBookClassifyCount(Map<String, Object> paramMap) {
return super.getSqlSession().selectOne(super.getStatement("listBookClassifyCount"), paramMap); return super.getSqlSession().selectOne(super.getStatement("listBookClassifyCount"), paramMap);
} }
@Override
public List<BookSaleVO> listIncomePage4Agent(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(super.getStatement("listIncomePage4Agent"), paramMap);
}
@Override
public Long countIncomePage4Agent(Map<String, Object> paramMap) {
return super.getSqlSession().selectOne(super.getStatement("countIncomePage4Agent"), paramMap);
}
} }
...@@ -19,6 +19,7 @@ import org.codehaus.jackson.JsonParseException; ...@@ -19,6 +19,7 @@ import org.codehaus.jackson.JsonParseException;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -26,6 +27,7 @@ import org.springframework.web.bind.annotation.RequestMethod; ...@@ -26,6 +27,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.List; import java.util.List;
import java.util.Map;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
...@@ -605,4 +607,48 @@ public interface BookFacade { ...@@ -605,4 +607,48 @@ public interface BookFacade {
ResponseDto<?> getBookLabels( ResponseDto<?> getBookLabels(
@RequestHeader("token") String token @RequestHeader("token") String token
) throws BizException, PermissionException; ) throws BizException, PermissionException;
/**
* 书刊收益列表-出版端
*/
@ApiOperation(value = "书刊收益列表-出版端", httpMethod = "GET")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "keyWord", value = "关键词", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "channelId", value = "渠道标识", dataType = "long", paramType = "query"),
@ApiImplicitParam(name = "typeCode", value = "书刊类型", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "currentPage", value = "当前页数", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "每页条数", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "isFundSupport", value = "基金支持", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "templetId", value = "图书类型标识", dataType = "long", paramType = "query"),
@ApiImplicitParam(name = "secondTempletId", value = "图书类型二级标识", dataType = "long", paramType = "query")})
@RequestMapping(value = "listPageIncomeDetail", method = RequestMethod.GET)
ResponseDto<PageBeanNew> listPageIncomeDetail(@RequestHeader("token") String token,
@RequestParam(value = "keyWord", required = false) String keyWord,
@RequestParam(value = "channelId", required = false) Long channelId,
@RequestParam(value = "typeCode", required = false) String typeCode,
@RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "numPerPage", required = false) Integer numPerPage,
@RequestParam(value = "isFundSupport", required = false) Integer isFundSupport,
@RequestParam(value = "templetId", required = false) Long templetId,
@RequestParam(value = "secondTempletId", required = false) Long secondTempletId)
throws BizException, PermissionException, JsonParseException;
@ApiOperation("导出书刊收益")
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "keyWord", value = "关键词", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "channelId", value = "渠道标识", dataType = "long", paramType = "query"),
@ApiImplicitParam(name = "typeCode", value = "书刊类型", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "isFundSupport", value = "基金支持", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "templetId", value = "图书类型标识", dataType = "long", paramType = "query"),
@ApiImplicitParam(name = "secondTempletId", value = "图书类型二级标识", dataType = "long", paramType = "query")})
@GetMapping("exportBookIncomeDetail")
ResponseDto<?> exportBookIncomeDetail(
@RequestHeader("token") String token,
@RequestParam(value = "keyWord", required = false) String keyWord,
@RequestParam(value = "channelId", required = false) Long channelId,
@RequestParam(value = "typeCode", required = false) String typeCode,
@RequestParam(value = "isFundSupport", required = false) Integer isFundSupport,
@RequestParam(value = "templetId", required = false) Long templetId,
@RequestParam(value = "secondTempletId", required = false) Long secondTempletId)
throws PermissionException, BizException;
} }
...@@ -13,6 +13,7 @@ import com.pcloud.book.book.entity.Book; ...@@ -13,6 +13,7 @@ import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.facade.BookFacade; import com.pcloud.book.book.facade.BookFacade;
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.common.core.constant.SystemCode;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean; import com.pcloud.common.page.PageBean;
...@@ -26,9 +27,12 @@ import com.pcloud.common.utils.SessionUtil; ...@@ -26,9 +27,12 @@ import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.cookie.Cookie; import com.pcloud.common.utils.cookie.Cookie;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.wechatgroup.message.enums.IsSystem;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -833,4 +837,67 @@ public class BookFacadeImpl implements BookFacade { ...@@ -833,4 +837,67 @@ public class BookFacadeImpl implements BookFacade {
return new ResponseDto<>(bookBiz.getBookLabels()); return new ResponseDto<>(bookBiz.getBookLabels());
} }
/**
* 书刊收益列表-出版端
*/
@Override
@RequestMapping(value = "listPageIncomeDetail", method = RequestMethod.GET)
public ResponseDto<PageBeanNew> listPageIncomeDetail(@RequestHeader("token") String token,
@RequestParam(value = "keyWord", required = false) String keyWord,
@RequestParam(value = "channelId", required = false) Long channelId,
@RequestParam(value = "typeCode", required = false) String typeCode,
@RequestParam(value = "currentPage") Integer currentPage,
@RequestParam(value = "numPerPage") Integer numPerPage,
@RequestParam(value = "isFundSupport", required = false) Integer isFundSupport,
@RequestParam(value = "templetId", required = false) Long templetId,
@RequestParam(value = "secondTempletId", required = false) Long secondTempletId)
throws BizException, PermissionException {
Long agentId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
if (currentPage == null || numPerPage == null || currentPage < 0 || numPerPage < 0) {
throw BookBizException.PAGE_PARAM_DELETION;
}
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("keyWord", keyWord != null && "".equals(keyWord.trim()) ? null : keyWord);
paramMap.put("channelId", channelId);
paramMap.put("typeCode", typeCode != null && "".equals(typeCode.trim()) ? null : typeCode);
paramMap.put("isFundSupport", isFundSupport);
paramMap.put("templetId", templetId);
paramMap.put("secondTempletId",secondTempletId);
paramMap.put("secondTempletIds",Optional.ofNullable(paramMap.get("secondTempletId")).map(Lists::newArrayList).orElse(Lists.newArrayList()));
return new ResponseDto<>(bookBiz.listPageIncomeDetail(new PageParam(currentPage, numPerPage), paramMap, agentId));
}
@ApiOperation("导出书刊收益")
@GetMapping("exportBookIncomeDetail")
public ResponseDto<?> exportBookIncomeDetail(
@RequestHeader("token") String token,
@RequestParam(value = "keyWord", required = false) String keyWord,
@RequestParam(value = "channelId", required = false) Long channelId,
@RequestParam(value = "typeCode", required = false) String typeCode,
@RequestParam(value = "isFundSupport", required = false) Integer isFundSupport,
@RequestParam(value = "templetId", required = false) Long templetId,
@RequestParam(value = "secondTempletId", required = false) Long secondTempletId) throws PermissionException {
Long agentId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
String systemCode = (String) SessionUtil.getVlaue(token, SessionUtil.SYSTEM_CODE);
if (!SystemCode.agent.code.equalsIgnoreCase(systemCode)) {
throw new PermissionException(PermissionException.PERMISSION_NOT_FOUND);
}
Map<String,Object> map = SessionUtil.getToken4Redis(token);
String isSystem = (String)map.get(SessionUtil.IS_SYSTEM);
Long partyId = (Long) map.get(SessionUtil.PARTY_ID);
if (IsSystem.NOT_SYSTEM.code.equals(isSystem)){
partyId = (Long) map.get(SessionUtil.MEMBER_ID);
}
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("keyWord", keyWord != null && "".equals(keyWord.trim()) ? null : keyWord);
paramMap.put("channelId", channelId);
paramMap.put("typeCode", typeCode != null && "".equals(typeCode.trim()) ? null : typeCode);
paramMap.put("isFundSupport", isFundSupport);
paramMap.put("templetId", templetId);
paramMap.put("secondTempletId",secondTempletId);
paramMap.put("secondTempletIds",Optional.ofNullable(paramMap.get("secondTempletId")).map(Lists::newArrayList).orElse(Lists.newArrayList()));
bookBiz.exportBookIncomeDetail(paramMap, agentId, partyId, systemCode);
return new ResponseDto<>();
}
} }
\ No newline at end of file
...@@ -30,6 +30,7 @@ import com.pcloud.book.book.dto.BookResourceDto; ...@@ -30,6 +30,7 @@ import com.pcloud.book.book.dto.BookResourceDto;
import com.pcloud.book.book.dto.BookTypeDto; import com.pcloud.book.book.dto.BookTypeDto;
import com.pcloud.book.book.entity.BookDefendant; import com.pcloud.book.book.entity.BookDefendant;
import com.pcloud.book.book.tools.BookTools; import com.pcloud.book.book.tools.BookTools;
import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.book.book.vo.NoAuthBookVO; import com.pcloud.book.book.vo.NoAuthBookVO;
import com.pcloud.book.consumer.analysisengine.BookScanCountConsr; import com.pcloud.book.consumer.analysisengine.BookScanCountConsr;
import com.pcloud.book.consumer.analysisengine.BrowseRecordConsr; import com.pcloud.book.consumer.analysisengine.BrowseRecordConsr;
...@@ -41,6 +42,7 @@ import com.pcloud.book.consumer.content.ResourceConsr; ...@@ -41,6 +42,7 @@ import com.pcloud.book.consumer.content.ResourceConsr;
import com.pcloud.book.consumer.message.MessageConsr; import com.pcloud.book.consumer.message.MessageConsr;
import com.pcloud.book.consumer.resource.ProductConsr; import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.settlement.BookConsr; import com.pcloud.book.consumer.settlement.BookConsr;
import com.pcloud.book.consumer.settlement.SettlementConsr;
import com.pcloud.book.consumer.user.AdviserConsr; import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.AgentConsr; import com.pcloud.book.consumer.user.AgentConsr;
import com.pcloud.book.consumer.user.BookcaseConsr; import com.pcloud.book.consumer.user.BookcaseConsr;
...@@ -73,6 +75,9 @@ import com.pcloud.contentcenter.resource.dto.ResourceDTO; ...@@ -73,6 +75,9 @@ import com.pcloud.contentcenter.resource.dto.ResourceDTO;
import com.pcloud.resourcecenter.product.dto.ProductDto; import com.pcloud.resourcecenter.product.dto.ProductDto;
import com.pcloud.resourcecenter.product.dto.ProductTypeDto; import com.pcloud.resourcecenter.product.dto.ProductTypeDto;
import com.pcloud.resourcecenter.product.dto.SpecificationDto; import com.pcloud.resourcecenter.product.dto.SpecificationDto;
import com.pcloud.settlementcenter.pay.constants.PayConstant;
import com.pcloud.settlementcenter.record.dto.AgentBookIncomeDTO;
import com.pcloud.settlementcenter.record.dto.AgentBookIncomeParamDTO;
import com.pcloud.settlementcenter.record.dto.BookIncomeDto; import com.pcloud.settlementcenter.record.dto.BookIncomeDto;
import com.pcloud.usercenter.common.dto.BookCaseParamDto; import com.pcloud.usercenter.common.dto.BookCaseParamDto;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto; import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
...@@ -164,6 +169,8 @@ public class BookSet { ...@@ -164,6 +169,8 @@ public class BookSet {
private BookGroupClassifyBiz bookGroupClassifyBiz; private BookGroupClassifyBiz bookGroupClassifyBiz;
@Autowired @Autowired
private BookGroupClassifyDao bookGroupClassifyDao; private BookGroupClassifyDao bookGroupClassifyDao;
@Autowired
private SettlementConsr settlementConsr;
/** /**
* 检验书号是否合法,包括ISSN,ISBN,CSSN * 检验书号是否合法,包括ISSN,ISBN,CSSN
...@@ -1642,4 +1649,34 @@ public class BookSet { ...@@ -1642,4 +1649,34 @@ public class BookSet {
} }
} }
} }
@ParamLog("填充书刊总销售额")
public void setAgentSalesInfo(List<BookSaleVO> bookSaleVOS, Long agentId) {
if (ListUtils.isEmpty(bookSaleVOS)) {
return;
}
List<Long> adviserIdList = new ArrayList<>();
List<Long> channelIdList = new ArrayList<>();
for (BookSaleVO bookSaleVO : bookSaleVOS) {
if (!adviserIdList.contains(bookSaleVO.getAdviserId())) {
adviserIdList.add(bookSaleVO.getAdviserId());
}
if (!channelIdList.contains(bookSaleVO.getChannelId())) {
channelIdList.add(bookSaleVO.getChannelId());
}
}
Map<Long, String> adviserNameMap = adviserConsr.getNames(adviserIdList);
Map<Long, String> channelNameMap = channelConsr.getNamesByIdList(channelIdList);
for (BookSaleVO bookSaleVO : bookSaleVOS) {
AgentBookIncomeParamDTO agentBookIncomeParamDTO = new AgentBookIncomeParamDTO();
agentBookIncomeParamDTO.setBookId(bookSaleVO.getBookId());
agentBookIncomeParamDTO.setAgentId(agentId);
agentBookIncomeParamDTO.setAdviserId(bookSaleVO.getAdviserId());
agentBookIncomeParamDTO.setChannelId(bookSaleVO.getChannelId());
AgentBookIncomeDTO agentBookIncomeDTO = settlementConsr.getAgentAndAdviserIncome(agentBookIncomeParamDTO);
bookSaleVO.setChannelName(channelNameMap.get(bookSaleVO.getChannelId()));
bookSaleVO.setAdviserName(adviserNameMap.get(bookSaleVO.getAdviserId()));
bookSaleVO.setAgentBookIncomeDTO(agentBookIncomeDTO);
}
}
} }
package com.pcloud.book.book.vo;
import com.pcloud.settlementcenter.record.dto.AgentBookIncomeDTO;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@ApiModel("出版社书籍收益")
@Data
public class BookSaleVO {
private Long bookId;
private String bookName;
private Long channelId;
private String isbn;
private Long adviserId;
private Boolean isFundSupport;
private String channelName;
private String adviserName;
private AgentBookIncomeDTO agentBookIncomeDTO;
}
...@@ -6,6 +6,8 @@ import com.pcloud.common.exceptions.BizException; ...@@ -6,6 +6,8 @@ import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.DateUtils; import com.pcloud.common.utils.DateUtils;
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.settlementcenter.record.dto.AgentBookIncomeDTO;
import com.pcloud.settlementcenter.record.dto.AgentBookIncomeParamDTO;
import com.pcloud.settlementcenter.record.dto.ProductStaticUnderAppMapDTO; import com.pcloud.settlementcenter.record.dto.ProductStaticUnderAppMapDTO;
import com.pcloud.settlementcenter.record.dto.ResourcesStatisticVO; import com.pcloud.settlementcenter.record.dto.ResourcesStatisticVO;
import com.pcloud.settlementcenter.record.service.BookService; import com.pcloud.settlementcenter.record.service.BookService;
...@@ -94,4 +96,18 @@ public class SettlementConsr { ...@@ -94,4 +96,18 @@ public class SettlementConsr {
} }
return resourcesStatisticVOS; return resourcesStatisticVOS;
} }
@ParamLog(value = "获取书刊编辑收益和出版收益", isBefore = false, isAfterReturn = false)
public AgentBookIncomeDTO getAgentAndAdviserIncome(AgentBookIncomeParamDTO agentBookIncomeParamDTO) throws BizException {
AgentBookIncomeDTO agentBookIncomeDTO=new AgentBookIncomeDTO();
if (agentBookIncomeParamDTO==null) {
return agentBookIncomeDTO;
}
try {
agentBookIncomeDTO= ResponseHandleUtil.parseResponse(settlementService.getAgentAndAdviserIncome(agentBookIncomeParamDTO), AgentBookIncomeDTO.class);
} catch (Exception e) {
LOGGER.error("获取书刊编辑收益和出版收益.[getAgentAndAdviserIncome]:" + e.getMessage(), e);
}
return agentBookIncomeDTO;
}
} }
...@@ -1841,4 +1841,137 @@ ...@@ -1841,4 +1841,137 @@
g.create_time DESC g.create_time DESC
</select> </select>
<!-- 书刊列表-出版端 -->
<select id="listIncomePage4Agent" parameterType="map" resultType="com.pcloud.book.book.vo.BookSaleVO">
SELECT
A.BOOK_ID bookId,
B.BOOK_NAME bookName,
A.CHANNEL_ID channelId,
B.ISBN isbn,
A.ADVISER_ID adviserId,
IF(ISNULL(BF.BOOK_FUND_ID),0,1) isFundSupport
FROM
BOOK_ADVISER A
INNER JOIN
BOOK B
ON
A.BOOK_ID = B.BOOK_ID AND A.IS_DELETE = 0 AND B.IS_DELETE = 0
AND
A.ADVISER_ID IN
<foreach collection="agent4AdviserIds" index="i" item="item" open="(" separator="," close=")">
${item}
</foreach>
AND A.IS_MAIN_EDITOR = 1
LEFT JOIN
BOOK_TYPE T
ON
B.TYPE_CODE = T.TYPE_CODE
LEFT JOIN
BOOK_FUND BF
ON
BF.BOOK_ID = A.BOOK_ID AND BF.END_TIME <![CDATA[ > ]]> NOW() AND BF.START_TIME <![CDATA[ < ]]> NOW()
WHERE
1=1
<if test="typeCode!=null">
AND
B.TYPE_CODE = #{typeCode}
</if>
<if test="channelId!=null">
AND
A.CHANNEL_ID = #{channelId}
</if>
<if test="keyWord!=null">
AND (B.BOOK_NAME LIKE CONCAT('%',#{keyWord},'%')
OR B.ISBN LIKE CONCAT(#{keyWord},'%')
<if test="adviserIds!=null and adviserIds.size()>0">
OR
A.ADVISER_ID in
<foreach collection="adviserIds" item="item" open="(" separator="," close=")">
${item}
</foreach>
</if>
)
</if>
<if test="templetId!=null">
AND
A.TEMPLET_ID = #{templetId}
</if>
<if test="secondTempletIds!=null and secondTempletIds.size()>0">
AND
A.SECOND_TEMPLET_ID in
<foreach collection="secondTempletIds" item="item" open="(" separator="," close=")">
${item}
</foreach>
</if>
<if test="isFundSupport != null">
AND
BF.BOOK_FUND_ID IS NOT NULL
</if>
GROUP BY A.BOOK_ID, A.CHANNEL_ID
ORDER BY
A.CREATED_DATE DESC
</select>
<!-- 书刊列表数量-出版端 -->
<select id="countIncomePage4Agent" parameterType="map" resultType="long">
SELECT
count(1)
FROM
BOOK_ADVISER A
INNER JOIN
BOOK B
ON
A.BOOK_ID = B.BOOK_ID AND A.IS_DELETE = 0 AND B.IS_DELETE = 0
AND
A.ADVISER_ID IN
<foreach collection="agent4AdviserIds" index="i" item="item" open="(" separator="," close=")">
${item}
</foreach>
AND A.IS_MAIN_EDITOR = 1
LEFT JOIN
BOOK_TYPE T
ON
B.TYPE_CODE = T.TYPE_CODE
LEFT JOIN
BOOK_FUND BF
ON
BF.BOOK_ID = A.BOOK_ID AND BF.END_TIME <![CDATA[ > ]]> NOW() AND BF.START_TIME <![CDATA[ < ]]> NOW()
WHERE
1=1
<if test="typeCode!=null">
AND
B.TYPE_CODE = #{typeCode}
</if>
<if test="channelId!=null">
AND
A.CHANNEL_ID = #{channelId}
</if>
<if test="keyWord!=null">
AND (B.BOOK_NAME LIKE CONCAT('%',#{keyWord},'%')
OR B.ISBN LIKE CONCAT(#{keyWord},'%')
<if test="adviserIds!=null and adviserIds.size()>0">
OR
A.ADVISER_ID in
<foreach collection="adviserIds" item="item" open="(" separator="," close=")">
${item}
</foreach>
</if>
)
</if>
<if test="templetId!=null">
AND
A.TEMPLET_ID = #{templetId}
</if>
<if test="secondTempletIds!=null and secondTempletIds.size()>0">
AND
A.SECOND_TEMPLET_ID in
<foreach collection="secondTempletIds" item="item" open="(" separator="," close=")">
${item}
</foreach>
</if>
<if test="isFundSupport != null">
AND
BF.BOOK_FUND_ID IS NOT NULL
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
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