Commit 42a85258 by 郑勇

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

parent 8a7413a2
...@@ -301,4 +301,14 @@ public class BookApplication { ...@@ -301,4 +301,14 @@ public class BookApplication {
public Binding tipBind() { public Binding tipBind() {
return RabbitMQFactory.bindingExchange(tipQueue(), MQTopicProducer.TIP_FOR_WECHAT_USER); 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 { ...@@ -675,4 +675,8 @@ public interface BookBiz {
void relateBookAdviser4Erp(RelateAdviserVO relateAdviserVO); void relateBookAdviser4Erp(RelateAdviserVO relateAdviserVO);
List<CreateBookResultVO> batchCreateBook4Erp(List<CreateBookVO> createBookVOList); 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; ...@@ -7,6 +7,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.netflix.discovery.converters.Auto;
import com.pcloud.analysisengine.qrcode.dto.BookTimeSourceDto; import com.pcloud.analysisengine.qrcode.dto.BookTimeSourceDto;
import com.pcloud.appcenter.assist.dto.AssistTempletDTO; import com.pcloud.appcenter.assist.dto.AssistTempletDTO;
import com.pcloud.appcenter.base.exception.AppBizException; import com.pcloud.appcenter.base.exception.AppBizException;
...@@ -71,6 +72,7 @@ import com.pcloud.book.consumer.analysisengine.SceneRecordConsr; ...@@ -71,6 +72,7 @@ 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.common.ExportConsr;
import com.pcloud.book.consumer.erp.ErpConsr;
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.message.MessageConsr;
import com.pcloud.book.consumer.raystask.MainLineConsr; import com.pcloud.book.consumer.raystask.MainLineConsr;
...@@ -236,6 +238,9 @@ public class BookBizImpl implements BookBiz { ...@@ -236,6 +238,9 @@ public class BookBizImpl implements BookBiz {
@Autowired @Autowired
private QrcodeSceneErpDao qrcodeSceneErpDao; private QrcodeSceneErpDao qrcodeSceneErpDao;
@Autowired
private ErpConsr erpConsr;
/** /**
...@@ -2547,6 +2552,7 @@ public class BookBizImpl implements BookBiz { ...@@ -2547,6 +2552,7 @@ public class BookBizImpl implements BookBiz {
createBookResultVO.setChannelId(createBookVO.getChannelId()); createBookResultVO.setChannelId(createBookVO.getChannelId());
resultList.add(createBookResultVO); resultList.add(createBookResultVO);
} }
erpConsr.batchUpdateRelateInfo(resultList);
return resultList; return resultList;
} }
...@@ -2666,6 +2672,36 @@ public class BookBizImpl implements BookBiz { ...@@ -2666,6 +2672,36 @@ public class BookBizImpl implements BookBiz {
return bookDto; 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 * @param book
...@@ -2720,4 +2756,41 @@ public class BookBizImpl implements BookBiz { ...@@ -2720,4 +2756,41 @@ public class BookBizImpl implements BookBiz {
String year = String.valueOf(date.get(Calendar.YEAR)); String year = String.valueOf(date.get(Calendar.YEAR));
return year + bookSerialNumber.getSerialNumber(); 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 { ...@@ -787,4 +787,8 @@ public interface BookFacade {
@ApiOperation("erp自动创建RAYS书刊") @ApiOperation("erp自动创建RAYS书刊")
@RequestMapping(value = "/batchCreateBook4Erp", method = RequestMethod.POST) @RequestMapping(value = "/batchCreateBook4Erp", method = RequestMethod.POST)
ResponseDto<?> batchCreateBook4Erp(@RequestBody List<CreateBookVO> createBookVOList) throws BizException; 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 { ...@@ -1134,4 +1134,11 @@ public class BookFacadeImpl implements BookFacade {
public ResponseDto<?> batchCreateBook4Erp(@RequestBody List<CreateBookVO> createBookVOList) throws BizException { public ResponseDto<?> batchCreateBook4Erp(@RequestBody List<CreateBookVO> createBookVOList) throws BizException {
return new ResponseDto<>(bookBiz.batchCreateBook4Erp(createBookVOList)); 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; ...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.pcloud.book.base.exception.BookBizException; 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.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
...@@ -140,4 +141,24 @@ public class ErpConsr { ...@@ -140,4 +141,24 @@ public class ErpConsr {
return null; 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 { ...@@ -104,4 +104,9 @@ public class MQTopicConumer {
* 个人号发送文本消息 * 个人号发送文本消息
*/ */
public static final String TIP_FOR_WECHAT_USER = PREFIX + MQTopicProducer.TIP_FOR_WECHAT_USER; 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; ...@@ -2,8 +2,11 @@ package com.pcloud.book.mq.producer;
import com.pcloud.book.book.dto.BookCoverImgUpdateDTO; import com.pcloud.book.book.dto.BookCoverImgUpdateDTO;
import com.pcloud.book.book.dto.BookNameUpdateDTO; 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.clock.dto.PushBookClockKeywordDTO;
import java.util.List;
public interface BookMQProducer { public interface BookMQProducer {
void sendUpdateBookCoverImgTopic(BookCoverImgUpdateDTO bookCoverImgUpdateDTO); void sendUpdateBookCoverImgTopic(BookCoverImgUpdateDTO bookCoverImgUpdateDTO);
...@@ -11,4 +14,6 @@ public interface BookMQProducer { ...@@ -11,4 +14,6 @@ public interface BookMQProducer {
void sendUpdateBookNameTopic(BookNameUpdateDTO bookNameUpdateDTO); void sendUpdateBookNameTopic(BookNameUpdateDTO bookNameUpdateDTO);
void pushBookClockKeyword(PushBookClockKeywordDTO pushBookClockKeywordDTO); void pushBookClockKeyword(PushBookClockKeywordDTO pushBookClockKeywordDTO);
void addCreateInfoToMq(List<CreateBookVO> createBookVOList);
} }
...@@ -2,6 +2,7 @@ package com.pcloud.book.mq.producer.impl; ...@@ -2,6 +2,7 @@ package com.pcloud.book.mq.producer.impl;
import com.pcloud.book.book.dto.BookCoverImgUpdateDTO; import com.pcloud.book.book.dto.BookCoverImgUpdateDTO;
import com.pcloud.book.book.dto.BookNameUpdateDTO; 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.clock.dto.PushBookClockKeywordDTO;
import com.pcloud.book.mq.producer.BookMQProducer; import com.pcloud.book.mq.producer.BookMQProducer;
import com.pcloud.common.core.constant.MQTopicProducer; import com.pcloud.common.core.constant.MQTopicProducer;
...@@ -9,6 +10,8 @@ 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.amqp.core.AmqpTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
@Component("bookMQProducer") @Component("bookMQProducer")
...@@ -31,4 +34,9 @@ public class BookProducerImpl implements BookMQProducer { ...@@ -31,4 +34,9 @@ public class BookProducerImpl implements BookMQProducer {
public void pushBookClockKeyword(PushBookClockKeywordDTO pushBookClockKeywordDTO) { public void pushBookClockKeyword(PushBookClockKeywordDTO pushBookClockKeywordDTO) {
amqpTemplate.convertAndSend(MQTopicProducer.EXCHAGE, MQTopicProducer.PUSH_BOOK_CLOCK_KEYWORD, 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 @@ ...@@ -80,7 +80,7 @@
INSERT INTO `BOOK` ( INSERT INTO `BOOK` (
ISBN, TYPE_CODE, BOOK_NAME,BOOK_PRICE, REMARK, AUTHOR, PUBLISH, PUBLISH_DATE, COVER_IMG, DETAIL, 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, 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"> <if test="fromErp != null">
,FROM_ERP ,FROM_ERP
</if> </if>
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
#{cn, jdbcType=VARCHAR}, #{releaseCycle, jdbcType=VARCHAR}, #{bookNum, jdbcType=VARCHAR}, #{programa, jdbcType=VARCHAR}, #{cn, jdbcType=VARCHAR}, #{releaseCycle, jdbcType=VARCHAR}, #{bookNum, jdbcType=VARCHAR}, #{programa, jdbcType=VARCHAR},
#{mailCode, jdbcType=VARCHAR}, #{address, jdbcType=VARCHAR}, #{telephone, jdbcType=VARCHAR}, #{mail, jdbcType=VARCHAR}, #{mailCode, jdbcType=VARCHAR}, #{address, jdbcType=VARCHAR}, #{telephone, jdbcType=VARCHAR}, #{mail, jdbcType=VARCHAR},
#{purpose, jdbcType=VARCHAR}, #{originName, jdbcType=VARCHAR}, #{createdUser, jdbcType=BIGINT}, NOW(), #{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"> <if test="fromErp != null">
, #{fromErp} , #{fromErp}
</if> </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