Commit 42a85258 by 郑勇

faet: [1003514] 1003514 转同意立项时,取消自动创建书刊信息录入操作、自动创建RAYS书刊最多只能批量处理5个

parent 8a7413a2
......@@ -301,4 +301,14 @@ public class BookApplication {
public Binding tipBind() {
return RabbitMQFactory.bindingExchange(tipQueue(), MQTopicProducer.TIP_FOR_WECHAT_USER);
}
@Bean
public Queue erpCreateBookQueue() {
return RabbitMQFactory.queueBuilder(MQTopicConumer.ERP_AUTO_CREATE_BOOK);
}
@Bean
public Binding erpCreateBookBind() {
return RabbitMQFactory.bindingExchange(erpCreateBookQueue(), MQTopicProducer.ERP_AUTO_CREATE_BOOK);
}
}
......@@ -675,4 +675,8 @@ public interface BookBiz {
void relateBookAdviser4Erp(RelateAdviserVO relateAdviserVO);
List<CreateBookResultVO> batchCreateBook4Erp(List<CreateBookVO> createBookVOList);
void addCreateInfoToMq(List<CreateBookVO> createBookVOList);
List<CreateBookResultVO> batchCreateBook4ErpNew(List<CreateBookVO> createBookVOList);
}
......@@ -7,6 +7,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.alibaba.fastjson.JSONObject;
import com.netflix.discovery.converters.Auto;
import com.pcloud.analysisengine.qrcode.dto.BookTimeSourceDto;
import com.pcloud.appcenter.assist.dto.AssistTempletDTO;
import com.pcloud.appcenter.base.exception.AppBizException;
......@@ -71,6 +72,7 @@ import com.pcloud.book.consumer.analysisengine.SceneRecordConsr;
import com.pcloud.book.consumer.app.AssistTempletConsr;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.common.ExportConsr;
import com.pcloud.book.consumer.erp.ErpConsr;
import com.pcloud.book.consumer.isbn.IsbnConsr;
import com.pcloud.book.consumer.message.MessageConsr;
import com.pcloud.book.consumer.raystask.MainLineConsr;
......@@ -236,6 +238,9 @@ public class BookBizImpl implements BookBiz {
@Autowired
private QrcodeSceneErpDao qrcodeSceneErpDao;
@Autowired
private ErpConsr erpConsr;
/**
......@@ -2547,6 +2552,7 @@ public class BookBizImpl implements BookBiz {
createBookResultVO.setChannelId(createBookVO.getChannelId());
resultList.add(createBookResultVO);
}
erpConsr.batchUpdateRelateInfo(resultList);
return resultList;
}
......@@ -2666,6 +2672,36 @@ public class BookBizImpl implements BookBiz {
return bookDto;
}
@Transactional(rollbackFor = Exception.class)
public BookDto create4ErpNew(Book book) {
LOGGER.info("Erp自动创建图书book=" + book);
BookDto bookDto;
while (true){
bookDto = bookDao.getByIsbnAndSnum(book.getIsbn(), book.getSerialNumber());
if (bookDto == null) {
break;
}
// 图书已存在,重新生成序号
book.setSerialNumber(this.builderSerialNumber(book.getIsbn()));
}
// 新增图书
bookDao.insert(book);
esBookAndAdviserBiz.updateBookAndAdviserToES(Collections.singletonList(book.getBookId()));
// 查看现代纸书是否存在
BookGroupDTO dtoByBookId = null;
// 如果没有编辑id,暂时将数据存放到临时表,后续关联编辑时再建立关系
createBookAdviserErpRelation(book);
// 书籍总数缓存加1
bookCache.incrObject(BookConstant.BOOK_CACHE + "PLATFORM_BOOK_COUNT");
bookDto = bookDao.getByIsbnAndSnum(book.getIsbn(), book.getSerialNumber());
if(null==bookDto){
return new BookDto();
}
bookDto.setChannelId(book.getChannelId());
bookDto.setIsDelete(null == dtoByBookId ? 1 : dtoByBookId.getIsDelete() ? 1 : 0);
return bookDto;
}
/**
* 新增图书与编辑关联关系
* @param book
......@@ -2720,4 +2756,41 @@ public class BookBizImpl implements BookBiz {
String year = String.valueOf(date.get(Calendar.YEAR));
return year + bookSerialNumber.getSerialNumber();
}
@Override
public void addCreateInfoToMq(List<CreateBookVO> createBookVOList) {
if(ListUtils.isEmpty(createBookVOList)){
return;
}
bookMQProducer.addCreateInfoToMq(createBookVOList);
}
@Override
@Transactional(rollbackFor = Exception.class)
public List<CreateBookResultVO> batchCreateBook4ErpNew(List<CreateBookVO> createBookVOList) {
List<CreateBookResultVO> resultList = Lists.newArrayList();
if(CollectionUtils.isEmpty(createBookVOList)){
return resultList;
}
Book book;
CreateBookResultVO createBookResultVO;
for (CreateBookVO createBookVO : createBookVOList) {
book = new Book();
BeanUtils.copyProperties(createBookVO, book);
book.setCreatedUser(createBookVO.getAdviserId());
book.setLastModifiedUser(createBookVO.getAdviserId());
book.setFromErp(1);
// 创建现代纸书或者小睿书
this.create4ErpNew(book);
// 构建返回值
createBookResultVO = new CreateBookResultVO();
createBookResultVO.setProjectId(createBookVO.getProjectId());
createBookResultVO.setBookId(book.getBookId());
createBookResultVO.setAdviserId(createBookVO.getAdviserId());
createBookResultVO.setChannelId(createBookVO.getChannelId());
resultList.add(createBookResultVO);
}
erpConsr.batchUpdateRelateInfo(resultList);
return resultList;
}
}
......@@ -787,4 +787,8 @@ public interface BookFacade {
@ApiOperation("erp自动创建RAYS书刊")
@RequestMapping(value = "/batchCreateBook4Erp", method = RequestMethod.POST)
ResponseDto<?> batchCreateBook4Erp(@RequestBody List<CreateBookVO> createBookVOList) throws BizException;
@ApiOperation("erp创建书刊插入数据到mq")
@RequestMapping(value = "/addCreateInfoToMq", method = RequestMethod.POST)
ResponseDto<?> addCreateInfoToMq(@RequestBody List<CreateBookVO> createBookVOList) throws BizException;
}
......@@ -1134,4 +1134,11 @@ public class BookFacadeImpl implements BookFacade {
public ResponseDto<?> batchCreateBook4Erp(@RequestBody List<CreateBookVO> createBookVOList) throws BizException {
return new ResponseDto<>(bookBiz.batchCreateBook4Erp(createBookVOList));
}
@Override
@RequestMapping(value = "/addCreateInfoToMq", method = RequestMethod.POST)
public ResponseDto<?> addCreateInfoToMq(@RequestBody List<CreateBookVO> createBookVOList) throws BizException {
bookBiz.addCreateInfoToMq(createBookVOList);
return new ResponseDto<>();
}
}
......@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.dto.CreateBookResultVO;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
......@@ -140,4 +141,24 @@ public class ErpConsr {
return null;
}
}
@ParamLog("创建书刊之后同步去更新erp信息")
public void batchUpdateRelateInfo(List<CreateBookResultVO> createBookResultVOS){
if(ListUtils.isEmpty(createBookResultVOS)){
return ;
}
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
try {
HttpResponse response = HttpUtils.doPost(domain, "/erp/project/batchUpdateRelateInfo", "POST", headers, new HashMap<>(), JSONObject.toJSONString(createBookResultVOS));
String entityString = EntityUtils.toString(response.getEntity());
JSONObject jsonObject = JSONObject.parseObject(entityString);
if(jsonObject.getInteger("errCode") != 0){
throw new BizException(jsonObject.getString("message"));
}
} catch (Exception e){
LOGGER.error("创建书刊之后同步去更新erp信息[projectService.batchUpdateRelateInfo]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_CONTENT_ERROR, "创建书刊之后同步去更新erp信息~!");
}
}
}
......@@ -104,4 +104,9 @@ public class MQTopicConumer {
* 个人号发送文本消息
*/
public static final String TIP_FOR_WECHAT_USER = PREFIX + MQTopicProducer.TIP_FOR_WECHAT_USER;
/**
* erp端创建书刊
*/
public static final String ERP_AUTO_CREATE_BOOK = PREFIX + MQTopicProducer.ERP_AUTO_CREATE_BOOK;
}
......@@ -2,8 +2,11 @@ package com.pcloud.book.mq.producer;
import com.pcloud.book.book.dto.BookCoverImgUpdateDTO;
import com.pcloud.book.book.dto.BookNameUpdateDTO;
import com.pcloud.book.book.dto.CreateBookVO;
import com.pcloud.book.clock.dto.PushBookClockKeywordDTO;
import java.util.List;
public interface BookMQProducer {
void sendUpdateBookCoverImgTopic(BookCoverImgUpdateDTO bookCoverImgUpdateDTO);
......@@ -11,4 +14,6 @@ public interface BookMQProducer {
void sendUpdateBookNameTopic(BookNameUpdateDTO bookNameUpdateDTO);
void pushBookClockKeyword(PushBookClockKeywordDTO pushBookClockKeywordDTO);
void addCreateInfoToMq(List<CreateBookVO> createBookVOList);
}
......@@ -2,6 +2,7 @@ package com.pcloud.book.mq.producer.impl;
import com.pcloud.book.book.dto.BookCoverImgUpdateDTO;
import com.pcloud.book.book.dto.BookNameUpdateDTO;
import com.pcloud.book.book.dto.CreateBookVO;
import com.pcloud.book.clock.dto.PushBookClockKeywordDTO;
import com.pcloud.book.mq.producer.BookMQProducer;
import com.pcloud.common.core.constant.MQTopicProducer;
......@@ -9,6 +10,8 @@ import com.pcloud.common.core.constant.MQTopicProducer;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.stereotype.Component;
import java.util.List;
import javax.annotation.Resource;
@Component("bookMQProducer")
......@@ -31,4 +34,9 @@ public class BookProducerImpl implements BookMQProducer {
public void pushBookClockKeyword(PushBookClockKeywordDTO pushBookClockKeywordDTO) {
amqpTemplate.convertAndSend(MQTopicProducer.EXCHAGE, MQTopicProducer.PUSH_BOOK_CLOCK_KEYWORD, pushBookClockKeywordDTO);
}
@Override
public void addCreateInfoToMq(List<CreateBookVO> createBookVOList) {
amqpTemplate.convertAndSend(MQTopicProducer.EXCHAGE, MQTopicProducer.ERP_AUTO_CREATE_BOOK, createBookVOList);
}
}
package com.pcloud.book.mq.topic;
import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.dto.CreateBookVO;
import com.pcloud.book.mq.config.MQTopicConumer;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@RabbitListener(queues = MQTopicConumer.ERP_AUTO_CREATE_BOOK)
public class ErpCreateBookListener {
private static final Logger LOGGER = LoggerFactory.getLogger(ErpCreateBookListener.class);
@Autowired
private BookBiz bookBiz;
/**
* 接收erp自动创建书刊
*/
@ParamLog("接收erp自动创建书刊")
@RabbitHandler
public void onMessage(List<CreateBookVO> createBookVOList) throws BizException {
try {
LOGGER.error("接收erp自动创建书刊信息" + createBookVOList);
if (ListUtils.isEmpty(createBookVOList))
return;
bookBiz.batchCreateBook4ErpNew(createBookVOList);
} catch (Exception e) {
LOGGER.error("接收erp自动创建书刊失败" + e.getMessage(), e);
}
}
}
......@@ -80,7 +80,7 @@
INSERT INTO `BOOK` (
ISBN, TYPE_CODE, BOOK_NAME,BOOK_PRICE, REMARK, AUTHOR, PUBLISH, PUBLISH_DATE, COVER_IMG, DETAIL,
SPONSOR, ORGANIZER, CN, RELEASE_CYCLE, BOOK_NUM, PROGRAMA, MAIL_CODE, ADDRESS, TELEPHONE, MAIL, PURPOSE, ORIGIN_NAME,
CREATED_USER, CREATED_DATE, LAST_MODIFIED_USER, LAST_MODIFIED_DATE, ISSN, SERIAL_NUMBER, AD_IMG
CREATED_USER, CREATED_DATE, LAST_MODIFIED_USER, LAST_MODIFIED_DATE, ISSN, SERIAL_NUMBER, AD_IMG,unique_number
<if test="fromErp != null">
,FROM_ERP
</if>
......@@ -92,7 +92,7 @@
#{cn, jdbcType=VARCHAR}, #{releaseCycle, jdbcType=VARCHAR}, #{bookNum, jdbcType=VARCHAR}, #{programa, jdbcType=VARCHAR},
#{mailCode, jdbcType=VARCHAR}, #{address, jdbcType=VARCHAR}, #{telephone, jdbcType=VARCHAR}, #{mail, jdbcType=VARCHAR},
#{purpose, jdbcType=VARCHAR}, #{originName, jdbcType=VARCHAR}, #{createdUser, jdbcType=BIGINT}, NOW(),
#{createdUser, jdbcType=BIGINT}, NOW(),#{issn, jdbcType=VARCHAR},#{serialNumber, jdbcType=VARCHAR},#{adImg, jdbcType=VARCHAR}
#{createdUser, jdbcType=BIGINT}, NOW(),#{issn, jdbcType=VARCHAR},#{serialNumber, jdbcType=VARCHAR},#{adImg, jdbcType=VARCHAR},#{uniqueNumber}
<if test="fromErp != null">
, #{fromErp}
</if>
......
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