Commit ab400b29 by 郑永强

feat: [1003483] ERP自动创建RAYS书刊和二维码

parent 06fe9eeb
package com.pcloud.book.book.dto;
import lombok.Data;
@Data
public class CreateBookResultVO {
private Long projectId;
private Long bookId;
private Long adviserId;
private Long channelId;
}
package com.pcloud.book.book.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class CreateBookVO {
@ApiModelProperty("类型编码")
private String typeCode;
@ApiModelProperty("书籍ISBN码")
private String isbn;
@ApiModelProperty("书籍名称")
private String bookName;
@ApiModelProperty("图书价格")
private String bookPrice;
@ApiModelProperty("作者")
private String author;
@ApiModelProperty("出版社")
private String publish;
@ApiModelProperty("封面图")
private String coverImg;
@ApiModelProperty("渠道。运营平台")
private Long channelId;
@ApiModelProperty("期刊序号")
private String serialNumber;
@ApiModelProperty("图书类型")
private Long templetId;
@ApiModelProperty("代理标识")
private Long agentId;
@ApiModelProperty("是否社群书")
private Boolean isBookGroup;
@ApiModelProperty("社群码ID")
private Long bookGroupId;
@ApiModelProperty("第二级类型")
private Long secondTempletId;
@ApiModelProperty("年级标签id")
private Long graLabelId;
@ApiModelProperty("科目标签id")
private Long subLabelId;
@ApiModelProperty("版本标签id")
private Long verLabelId;
@ApiModelProperty("地域标签id")
private Long areaLabelId;
@ApiModelProperty("专业标签ID")
private Long proLabelId;
@ApiModelProperty("深度标签ID")
private Long depLabelId;
@ApiModelProperty("目的标签ID")
private Long purLabelId;
@ApiModelProperty("上下册标签id")
private Long volLabelId;
@ApiModelProperty("全局唯一id")
private String uniqueNumber;
@ApiModelProperty("创建二维码实体")
private CreateQrcodeVO createQrcodeVO;
@ApiModelProperty("项目id")
private Long projectId;
@ApiModelProperty("编辑id")
private Long adviserId;
}
package com.pcloud.book.book.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class CreateQrcodeVO {
@ApiModelProperty(value = "场景标识", dataType = "String")
private String qrcodeType;
@ApiModelProperty(value = "场景名称", dataType = "String")
private String sceneName;
/**
* 描述
*/
@ApiModelProperty(value = "描述", dataType = "String")
private String description;
/**
* 渠道当事人标识
*/
@ApiModelProperty(value = "渠道当事人标识", dataType = "Long")
private Long channelPartyId;
@ApiModelProperty(value = "专业标签标识", dataType = "Long")
private Long proLabelId;
@ApiModelProperty(value = "深度标签标识", dataType = "Long")
private Long depLabelId;
@ApiModelProperty(value = "目的标签标识", dataType = "Long")
private Long purLabelId;
@ApiModelProperty(value = "顾问书籍", dataType = "Long")
private Long adviserBookId;
@ApiModelProperty(value = "模板标识", dataType = "Long")
private Long templetId;
@ApiModelProperty(value = "印码位置标识", dataType = "Long")
private Long locationId;
private String pageNumLocationId;
@ApiModelProperty(value = "位置页码", dataType = "String")
private Integer locationPageNum;
@ApiModelProperty(value = "印码位置", dataType = "String")
private String codePosition;
}
package com.pcloud.book.book.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @ClassName: UpdateProjectVO
* @Description:
* @Author: xp_sh
* @Date: 2020/6/28 17:04
* @Version: 1.0
**/
@Data
public class RelateAdviserVO {
@ApiModelProperty("项目ID")
private Long projectId;
@ApiModelProperty("RAYS编辑ID")
private Integer raysAdviserId;
@ApiModelProperty("关联RAYS书刊ID")
private Integer raysBookId;
@ApiModelProperty("关联RAYS渠道ID")
private Integer raysChannelId;
}
......@@ -246,6 +246,16 @@ public class Book extends BaseEntity {
*/
private String uniqueNumber;
/**
* 书籍标识
*/
private Long bookAdviserId;
/**
* 来自ERP的自动创建书刊
*/
private Integer fromErp;
public String getUniqueNumber() {
return uniqueNumber;
}
......@@ -614,6 +624,22 @@ public class Book extends BaseEntity {
this.purLabelId = purLabelId;
}
public Long getBookAdviserId() {
return bookAdviserId;
}
public void setBookAdviserId(Long bookAdviserId) {
this.bookAdviserId = bookAdviserId;
}
public Integer getFromErp() {
return fromErp;
}
public void setFromErp(Integer fromErp) {
this.fromErp = fromErp;
}
@Override
public String toString() {
return "Book{" +
......
/**
*
*/
package com.pcloud.book.book.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import lombok.Data;
import java.util.Date;
/**
* @描述:
*
* @作者:songx
* @创建时间:2016年12月30日,上午11:44:11 @版本:1.0
*/
@Data
public class BookAdviserErp extends BaseEntity {
/**
* 书籍编辑标识
*/
private Long bookAdviserErpId;
/**
* 书籍标识
*/
private Long bookId;
/**
* 编辑标识
*/
private Long adviserId;
/**
* 渠道标识
*/
private Long channelId;
/**
* 模板标识
*/
private Long templetId;
/**
* 创建人标识
*/
private Long createdUser;
/**
* 刊物序号
*/
private String serialNumber;
/**
* 是否是主编辑
*/
private Boolean isMainEditor;
/**
* 是否已经被删除 1是 0否
*/
private Integer isDelete;
/**
* 第二级类型
*/
private Long secondTempletId;
/**
* 年级标签id
*/
private Long graLabelId;
/**
* 科目标签id
*/
private Long subLabelId;
/**
* 版本标签id
*/
private Long verLabelId;
/**
* 地域标签id
*/
private Long areaLabelId;
/**
* 是否已下印
*/
private Boolean isPrint;
/**
* 专业标签ID
*/
private Long proLabelId;
/**
* 深度标签ID
*/
private Long depLabelId;
/**
* 目的标签ID
*/
private Long purLabelId;
private Integer isOpenRobotProcess;
/**
* 上下册标签id
*/
private Long volLabelId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createdDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date lastModifiedDate;
}
package com.pcloud.book.book.entity;
import java.util.Date;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 序号自动生成表(BookSerialNumber)实体类
*
* @author makejava
* @since 2020-08-26 13:58:55
*/
@Data
public class BookSerialNumber extends BaseEntity {
private static final long serialVersionUID = -95051806019576407L;
private Long id;
@ApiModelProperty("isbn")
private String isbn;
@ApiModelProperty("序号")
private Long serialNumber;
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
}
package com.pcloud.book.book.entity;
import java.util.Date;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* ERP自动创建二维码临时表,由于没有 adviserId,所以无法创建二维码,将数据暂存,关联时再创建(QrcodeSceneErp)实体类
*
* @author makejava
* @since 2020-08-26 21:01:47
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class QrcodeSceneErp extends BaseEntity {
private static final long serialVersionUID = 462217150676961069L;
@ApiModelProperty("场景标识")
private Long sceneErpId;
@ApiModelProperty("场景编码")
private String sceneCode;
@ApiModelProperty("书籍标识")
private Long bookId;
private Long adviserBookId;
@ApiModelProperty("图书名称")
private String bookName;
@ApiModelProperty("是否有省份配置数据")
private Boolean haveProvinceMessage;
@ApiModelProperty("素材标识")
private Long materialLibId;
@ApiModelProperty("场景名称")
private String sceneName;
@ApiModelProperty("二维码图片url")
private String qrcodeUrl;
@ApiModelProperty("场景说明")
private String description;
@ApiModelProperty("渠道标识")
private Long channelPartyId;
@ApiModelProperty("公众号标识")
private Long accountSettingId;
@ApiModelProperty("0未删除 1已删除")
private String isDelete;
@ApiModelProperty("是否已被从回收站中删除,“0”未删除,“1”已删除")
private String isDeleteRecycleBin;
@ApiModelProperty("图书是否删除 1 已删除 0 未删除")
private Boolean isBookDelete;
@ApiModelProperty("二维码图片解析后的地址")
private String url;
@ApiModelProperty("创建人角色")
private String createdUserRole;
@ApiModelProperty("顾问标识")
private Long adviserId;
@ApiModelProperty("用途类型")
private String purposeType;
@ApiModelProperty("二维码类型(wechat:微信码 ali:支付宝码)")
private String qrcodeType;
@ApiModelProperty("模板标识")
private Long templetId;
@ApiModelProperty("来源(1 PC 2 wechat 3 app 4 小程序)")
private Integer clientCode;
@ApiModelProperty("创建人")
private Long createdByUserLogin;
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createdDate;
@ApiModelProperty("修改人")
private Long lastModifiedByUserLogin;
@ApiModelProperty("修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date lastModifiedDate;
@ApiModelProperty("版本")
private Integer version;
@ApiModelProperty("审核状态")
private String auditState;
@ApiModelProperty("审核人")
private Long auditUser;
@ApiModelProperty("审核时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date auditDate;
@ApiModelProperty("审核原因")
private String auditReason;
@ApiModelProperty("审核提交时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date auditSubmitDate;
@ApiModelProperty("二维码推送封面图")
private String coverImg;
@ApiModelProperty("公众号二维码")
private Boolean isOpenApp;
private Integer locationPageNum;
@ApiModelProperty(value = "专业标签标识", dataType = "Long")
private Long proLabelId;
@ApiModelProperty(value = "深度标签标识", dataType = "Long")
private Long depLabelId;
@ApiModelProperty(value = "目的标签标识", dataType = "Long")
private Long purLabelId;
@ApiModelProperty(value = "印码位置标识", dataType = "Long")
private Long locationId;
}
package com.pcloud.book.book.biz;
import com.pcloud.book.book.entity.BookAdviserErp;
import com.pcloud.common.page.PageBeanNew;
import java.util.List;
/**
* 书与编辑临时关联表,供ERP自动创建书刊时使用,由于没有adviserId,所以暂存(BookAdviserErp)表服务接口
*
* @author makejava
* @since 2020-08-26 15:41:12
*/
public interface BookAdviserErpBiz {
/**
* 通过ID查询单条数据
*
* @param bookAdviserErpId 主键
* @return 实例对象
*/
BookAdviserErp getById(Long bookAdviserErpId);
/**
* 新增数据
*
* @param bookAdviserErp 实例对象
* @return 主键
*/
Long create(BookAdviserErp bookAdviserErp);
/**
* 修改数据
*
* @param bookAdviserErp 实例对象
*/
void update(BookAdviserErp bookAdviserErp);
BookAdviserErp getByBookId(Long bookId);
}
......@@ -11,6 +11,9 @@ import com.pcloud.book.book.dto.BookDto;
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.CreateBookResultVO;
import com.pcloud.book.book.dto.CreateBookVO;
import com.pcloud.book.book.dto.RelateAdviserVO;
import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.entity.BookLabel;
import com.pcloud.book.book.vo.BookQualifyVO;
......@@ -668,4 +671,8 @@ public interface BookBiz {
Map<Integer,List<BookLabel>> getBookLabels4Erp();
void relateUniqueNumber4Erp(List<BookUniqueNumberDTO> bookUniqueNumberVos);
void relateBookAdviser4Erp(RelateAdviserVO relateAdviserVO);
List<CreateBookResultVO> batchCreateBook4Erp(List<CreateBookVO> createBookVOList);
}
package com.pcloud.book.book.biz;
import com.pcloud.book.book.entity.BookSerialNumber;
import com.pcloud.common.page.PageBeanNew;
/**
* 序号自动生成表(BookSerialNumber)表服务接口
*
* @author makejava
* @since 2020-08-26 14:04:04
*/
public interface BookSerialNumberBiz {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
BookSerialNumber getById(Long id);
/**
* 分页查询
*/
PageBeanNew getList(Integer currentPage, Integer numPerPage);
/**
* 新增数据
*
* @return 主键
*/
void insert(BookSerialNumber bookSerialNumber);
/**
* 修改数据
*
* @param bookSerialNumber 实例对象
*/
void update(BookSerialNumber bookSerialNumber);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
void deleteById(Long id);
BookSerialNumber getByIsbn(String isbn);
}
package com.pcloud.book.book.biz;
import com.pcloud.book.book.entity.QrcodeSceneErp;
import com.pcloud.common.page.PageBeanNew;
import java.util.List;
/**
* ERP自动创建二维码临时表,由于没有 adviserId,所以无法创建二维码,将数据暂存,关联时再创建(QrcodeSceneErp)表服务接口
*
* @author makejava
* @since 2020-08-26 21:00:12
*/
public interface QrcodeSceneErpBiz {
/**
* 通过ID查询单条数据
*
* @param sceneErpId 主键
* @return 实例对象
*/
QrcodeSceneErp getById(Long sceneErpId);
/**
* 分页查询
*/
PageBeanNew getList(Integer currentPage, Integer numPerPage);
/**
* 新增数据
*
* @param qrcodeSceneErp 实例对象
* @return 主键
*/
Long insert(QrcodeSceneErp qrcodeSceneErp);
/**
* 修改数据
*
* @param qrcodeSceneErp 实例对象
*/
void update(QrcodeSceneErp qrcodeSceneErp);
/**
* 通过主键删除数据
*
* @param sceneErpId 主键
* @return 是否成功
*/
void deleteById(Long sceneErpId);
}
\ No newline at end of file
......@@ -187,6 +187,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
if(dtoByBookId!=null){
bookGroupBiz.createBookGroupAppletUrl(dtoByBookId.getId(),bookAdviser.getBookId(),bookAdviser.getChannelId(), bookAdviser.getAdviserId());
}
bookAdviser.setBookAdviserId(bookAdviserDto.getBookAdviserId());
return;
}
......@@ -196,6 +197,7 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
bookAdviser.getTempletId(), bookAdviser.getSecondTempletId(),
bookAdviser.getGraLabelId(), bookAdviser.getSubLabelId(), bookAdviser.getVerLabelId(), bookAdviser.getAreaLabelId(),
false);
bookAdviser.setBookAdviserId(bookAdviserDto.getBookAdviserId());
} else {
// 判断是否配置过该书籍推广信息
checkIsHaveOtherAdviser(bookAdviser.getBookId(), bookAdviser.getChannelId(), bookAdviser.getAdviserId());
......
package com.pcloud.book.book.biz.impl;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.constant.BookConstant;
import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.entity.BookAdviserErp;
import com.pcloud.book.book.dao.BookAdviserErpDao;
import com.pcloud.book.book.biz.BookAdviserErpBiz;
import com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.NumberUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.List;
/**
* 书与编辑临时关联表,供ERP自动创建书刊时使用,由于没有adviserId,所以暂存(BookAdviserErp)表服务实现类
*
* @author makejava
* @since 2020-08-26 15:41:12
*/
@Service("bookAdviserErpBiz")
public class BookAdviserErpBizImpl implements BookAdviserErpBiz {
private static final Logger LOGGER = LoggerFactory.getLogger(BookAdviserErpBizImpl.class);
@Autowired
private BookAdviserErpDao bookAdviserErpDao;
@Override
@ParamLog("通过ID查询单条数据")
public BookAdviserErp getById(Long bookAdviserErpId) {
return bookAdviserErpDao.getById(bookAdviserErpId);
}
/**
* 创建编辑管理书籍关系
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Long create(BookAdviserErp bookAdviserErp) {
LOGGER.info("创建编辑与书籍关联关系【START】bookAdviserErp=" + bookAdviserErp);
checkParam(bookAdviserErp);
try {
// 默认是主编辑
bookAdviserErp.setIsMainEditor(true);
bookAdviserErpDao.insert(bookAdviserErp);
return bookAdviserErp.getBookAdviserErpId();
// BookGroupDTO dtoByBookId = bookGroupBiz.getDTOByBookId(bookAdviserErp.getBookId(), bookAdviserErp.getChannelId(), bookAdviserErp.getAdviserId());
// if(dtoByBookId != null){
// bookGroupBiz.createBookGroupAppletUrl(dtoByBookId.getId(),bookAdviserErp.getBookId(),bookAdviserErp.getChannelId(), bookAdviserErp.getAdviserId());
// }
} catch (DataIntegrityViolationException e) {
throw new BookBizException(BookBizException.DB_DML_FAIL, "该书刊已经被别的编辑添加过");
} catch (Exception e) {
LOGGER.error("【书籍-编辑】编辑设置书籍推广信息,<ERROR>.[bookAdviserErpDao.insert]" + e.getMessage(), e);
throw new BookBizException(BookBizException.DB_DML_FAIL, "设置书刊推广信息失败");
}
}
/**
* 校验参数
* @param bookAdviserErp
*/
private void checkParam(BookAdviserErp bookAdviserErp) {
if (bookAdviserErp.getBookId() == null) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "请选择书刊");
}
// if (bookAdviserErp.getChannelId() == null) {
// throw new BookBizException(BookBizException.PARAM_IS_NULL, "请选择运营平台");
// }
}
@Override
@ParamLog("修改")
public void update(BookAdviserErp bookAdviserErp) {
if(bookAdviserErp == null || !NumberUtil.isNumber(bookAdviserErp.getBookAdviserErpId())){
throw BizException.PARAM_IS_NULL;
}
bookAdviserErpDao.update(bookAdviserErp);
}
@Override
public BookAdviserErp getByBookId(Long bookId) {
return bookAdviserErpDao.getByBookId(bookId);
}
}
......@@ -18,18 +18,21 @@ import com.pcloud.book.base.enums.BookStatusEnum;
import com.pcloud.book.base.enums.BookTypeEnum;
import com.pcloud.book.base.exception.BookBizException;
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.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.constant.BookConstant;
import com.pcloud.book.book.dao.BookAdviserDao;
import com.pcloud.book.book.dao.BookDao;
import com.pcloud.book.book.dao.BookLabelDao;
import com.pcloud.book.book.dao.BookRaysClassifyDao;
import com.pcloud.book.book.dao.QrcodeSceneErpDao;
import com.pcloud.book.book.dto.AdviserBookInfoDTO;
import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookAdviserUpdateTimeDTO;
......@@ -43,9 +46,16 @@ 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.BookNameUpdateDTO;
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.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.BookLabel;
import com.pcloud.book.book.entity.BookSerialNumber;
import com.pcloud.book.book.entity.QrcodeSceneErp;
import com.pcloud.book.book.set.BookSet;
import com.pcloud.book.book.tools.BookTools;
import com.pcloud.book.book.vo.BookQualifyVO;
......@@ -78,10 +88,14 @@ import com.pcloud.book.group.dao.BookAppletSceneDao;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.entity.BookAppletScene;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.enums.JoinGroupTypeEnum;
import com.pcloud.book.mq.producer.BookMQProducer;
import com.pcloud.book.rightsSetting.mapper.RightsSettingBookRelationMapper;
import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.channelcenter.qrcode.entity.QrcodeLabel;
import com.pcloud.channelcenter.qrcode.entity.QrcodeScene;
import com.pcloud.channelcenter.qrcode.entity.QrcodeStyle;
import com.pcloud.channelcenter.wechat.dto.BookServeParamVO;
import com.pcloud.channelcenter.wechat.vo.BookServeVO;
import com.pcloud.common.core.aspect.ParamLog;
......@@ -94,6 +108,7 @@ import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.NumberUtil;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.commoncenter.export.service.ExportService;
......@@ -105,6 +120,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -113,6 +129,7 @@ import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
......@@ -121,6 +138,7 @@ import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Random;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
......@@ -211,9 +229,12 @@ public class BookBizImpl implements BookBiz {
@Autowired
private AppletBookClassifyBiz appletBookClassifyBiz;
@Autowired
private BookSerialNumberBiz bookSerialNumberBiz;
@Autowired
private BookAdviserErpBiz bookAdviserErpBiz;
@Autowired
private QrcodeSceneErpDao qrcodeSceneErpDao;
......@@ -1627,6 +1648,7 @@ public class BookBizImpl implements BookBiz {
bookAdviser.setIsOpenRobotProcess(0);
}
bookAdviserBiz.create(bookAdviser);
book.setBookAdviserId(bookAdviser.getBookAdviserId());
}
@Override
......@@ -2436,4 +2458,266 @@ public class BookBizImpl implements BookBiz {
}
bookDao.relateUniqueNumber4Erp(bookUniqueNumberVos);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void relateBookAdviser4Erp(RelateAdviserVO relateAdviserVO){
if(null==relateAdviserVO || null==relateAdviserVO.getProjectId() || null==relateAdviserVO.getRaysAdviserId() || null==relateAdviserVO.getRaysBookId() || null == relateAdviserVO.getRaysChannelId()){
throw new BizException(BizException.PARAM_IS_NULL.getCode(), "参数缺失");
}
Long bookId = relateAdviserVO.getRaysBookId().longValue();
BookAdviserErp bookAdviserErp = bookAdviserErpBiz.getByBookId(bookId.longValue());
QrcodeSceneErp qrcodeSceneErp = qrcodeSceneErpDao.getByBookId(bookId.longValue());
if(bookAdviserErp == null || qrcodeSceneErp == null){
throw new BizException(BizException.PARAM_IS_NULL.getCode(), "未找到与 bookId 匹配的相关信息,无法进行关联");
}
// 更新创建人
Book updateBook = new Book();
updateBook.setCreatedUser(relateAdviserVO.getRaysAdviserId().longValue());
updateBook.setLastModifiedUser(relateAdviserVO.getRaysAdviserId().longValue());
bookDao.updateByPrimaryKeySelective(updateBook);
// 创建书和编辑关系
Book book = new Book();
BeanUtils.copyProperties(bookAdviserErp, book);
book.setBookAdviserId(relateAdviserVO.getRaysAdviserId().longValue());
book.setCreatedUser(relateAdviserVO.getRaysAdviserId().longValue());
book.setChannelId(relateAdviserVO.getRaysChannelId().longValue());
book.setIsBookGroup(bookAdviserErp.getIsOpenRobotProcess() == 1);
createBookAdviserRelation(book);
if(null != bookAdviserErp.getIsOpenRobotProcess() && bookAdviserErp.getIsOpenRobotProcess() == 1){
// 小睿书
BookGroupDTO bookGroupDTO = bookGroupBiz.getBookGroupInfoByBookId(book.getBookId(), book.getChannelId(), book.getCreatedUser(), null, null, 4);
BookGroup bookGroup = new BookGroup();
bookGroup.setId(bookGroupDTO.getId());
bookGroup.setAddFriendGuide("嗨,你好!我是您的专属学习助手。我会根据您的需求量身定制学习计划与学习内容,提高您的学习效率,提升您的语文学习能力");
bookGroup.setGroupQrcodeName(qrcodeSceneErp.getSceneName());
bookGroup.setGroupQrcodeLocationId(qrcodeSceneErp.getLocationId().intValue());
bookGroup.setJoinGroupType(4);
bookGroupBiz.updateBookGroup(bookGroup);
} else {
ThreadPoolUtils.OTHER_THREAD_POOL.execute(()-> {
// 现代纸书创建二维码
QrcodeScene qrcodeScene = new QrcodeScene();
BeanUtils.copyProperties(qrcodeSceneErp, qrcodeScene);
qrcodeScene.setAdviserBookId(bookId);
qrcodeScene.setCreatedByUserLogin(relateAdviserVO.getRaysAdviserId().longValue());
qrcodeScene.setLastModifiedByUserLogin(relateAdviserVO.getRaysAdviserId().longValue());
qrcodeScene.setChannelPartyId(relateAdviserVO.getRaysChannelId().longValue());
QrcodeLabel qrcodeLabel = new QrcodeLabel();
qrcodeLabel.setProLabelId(qrcodeSceneErp.getProLabelId());
qrcodeLabel.setDepLabelId(qrcodeSceneErp.getDepLabelId());
qrcodeLabel.setPurLabelId(qrcodeSceneErp.getPurLabelId());
qrcodeScene.setQrcodeLabel(qrcodeLabel);
QrcodeStyle qrcodeStyle = new QrcodeStyle();
qrcodeStyle.setStyleType(0);
qrcodeScene.setQrcodeStyle(qrcodeStyle);
qrcodeSceneConsr.createQrcodeScene4Erp(qrcodeScene);
});
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public List<CreateBookResultVO> batchCreateBook4Erp(List<CreateBookVO> createBookVOList){
List<CreateBookResultVO> resultList = Lists.newArrayList();
if(CollectionUtils.isEmpty(createBookVOList)){
return resultList;
}
this.checkLabel(createBookVOList);
this.fillDefaultChannel(createBookVOList);
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.create4Erp(book);
// 创建二维码
this.createQrcode4Erp(createBookVO, book);
// 构建返回值
createBookResultVO = new CreateBookResultVO();
createBookResultVO.setProjectId(createBookVO.getProjectId());
createBookResultVO.setBookId(book.getBookId());
createBookResultVO.setAdviserId(createBookVO.getAdviserId());
createBookResultVO.setChannelId(createBookVO.getChannelId());
resultList.add(createBookResultVO);
}
return resultList;
}
private void checkLabel(List<CreateBookVO> createBookVOList) {
for (CreateBookVO createBookVO : createBookVOList) {
if(!createBookVO.getIsBookGroup()
&& (!NumberUtil.isNumber(createBookVO.getCreateQrcodeVO().getProLabelId()) || !NumberUtil.isNumber(createBookVO.getCreateQrcodeVO().getDepLabelId()) || !NumberUtil.isNumber(createBookVO.getCreateQrcodeVO().getPurLabelId()))) {
throw new BizException(BizException.PARAM_IS_NULL.getCode(), "二维码标签不能为空!");
}
}
}
private void fillDefaultChannel(List<CreateBookVO> createBookVOList) {
CreateBookVO createBookVOFirst = createBookVOList.stream().findFirst().get();
// 如果是小睿书,并且 channelId 为空,且 adviserId 有值,则获取编辑的默认渠道
if(null != createBookVOFirst.getIsBookGroup() && createBookVOFirst.getIsBookGroup() && !NumberUtil.isNumber(createBookVOFirst.getChannelId()) && NumberUtil.isNumber(createBookVOFirst.getAdviserId())){
Long defaultChannelId = channelConsr.getDefaultChannelId(createBookVOFirst.getAdviserId());
// 因为是批量创建,所以所有的编辑是同一个,渠道也是同一个
for (CreateBookVO createBookVO : createBookVOList) {
createBookVO.setChannelId(defaultChannelId);
}
}
}
@Transactional(rollbackFor = Exception.class)
public void createQrcode4Erp(CreateBookVO createBookVO, Book book) {
if(NumberUtil.isNumber(book.getBookAdviserId())){
// 正常创建二维码
if(book.getIsBookGroup()){
// 小睿二维码
BookGroupDTO bookGroupDTO = bookGroupBiz.getBookGroupInfoByBookId(book.getBookId(), book.getChannelId(), book.getCreatedUser(), null, null, 4);
BookGroup bookGroup = new BookGroup();
bookGroup.setId(bookGroupDTO.getId());
bookGroup.setAddFriendGuide("嗨,你好!我是您的专属学习助手。我会根据您的需求量身定制学习计划与学习内容,提高您的学习效率,提升您的语文学习能力");
bookGroup.setGroupQrcodeName(createBookVO.getCreateQrcodeVO().getSceneName());
bookGroup.setGroupQrcodeLocationId(createBookVO.getCreateQrcodeVO().getLocationId().intValue());
bookGroup.setJoinGroupType(4);
bookGroupBiz.updateBookGroup(bookGroup);
} else {
ThreadPoolUtils.OTHER_THREAD_POOL.execute(()->{
// 现代纸书二维码
QrcodeScene qrcodeScene = new QrcodeScene();
CreateQrcodeVO createQrcodeVO = createBookVO.getCreateQrcodeVO();
BeanUtils.copyProperties(createQrcodeVO, qrcodeScene);
qrcodeScene.setAdviserBookId(book.getBookId());
qrcodeScene.setCreatedByUserLogin(book.getCreatedUser());
qrcodeScene.setLastModifiedByUserLogin(book.getCreatedUser());
qrcodeScene.setChannelPartyId(book.getChannelId());
qrcodeScene.setClientCode(1);
QrcodeLabel qrcodeLabel = new QrcodeLabel();
qrcodeLabel.setProLabelId(createQrcodeVO.getProLabelId());
qrcodeLabel.setDepLabelId(createQrcodeVO.getDepLabelId());
qrcodeLabel.setPurLabelId(createQrcodeVO.getPurLabelId());
qrcodeScene.setQrcodeLabel(qrcodeLabel);
QrcodeStyle qrcodeStyle = new QrcodeStyle();
qrcodeStyle.setStyleType(0);
qrcodeScene.setQrcodeStyle(qrcodeStyle);
qrcodeSceneConsr.createQrcodeScene4Erp(qrcodeScene);
});
}
} else {
// 小睿码
// 存储qrcode创建参数,待关联时创建二维码
QrcodeSceneErp qrcodeSceneErp = new QrcodeSceneErp();
BeanUtils.copyProperties(createBookVO.getCreateQrcodeVO(), qrcodeSceneErp);
qrcodeSceneErp.setClientCode(1);
qrcodeSceneErp.setBookId(book.getBookId());
qrcodeSceneErpDao.insert(qrcodeSceneErp);
}
}
@Transactional(rollbackFor = Exception.class)
public BookDto create4Erp(Book book) {
LOGGER.info("Erp自动创建图书book=" + book);
this.checkAddParam(book);
// if (book.getChannelId() == null) {
// throw new BookBizException(BookBizException.PARAM_IS_NULL, "请选择运营平台");
// }
if (Objects.isNull(book.getTempletId()) || Objects.isNull(book.getSecondTempletId())) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "请选择书刊分类");
}
// 校验书号
bookSet.checkISBN(book.getTypeCode(), book.getIsbn());
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;
if(NumberUtil.isNumber(book.getChannelId()) && book.getChannelId() > 0
&& NumberUtil.isNumber(book.getCreatedUser()) && book.getCreatedUser() > 0){
dtoByBookId = bookGroupBiz.getDTOByBookId(book.getBookId(), book.getChannelId(), book.getCreatedUser());
// 新增图书与编辑关联关系
createBookAdviserRelation(book);
} else {
// 如果没有编辑id,暂时将数据存放到临时表,后续关联编辑时再建立关系
createBookAdviserErpRelation(book);
}
// 书籍总数缓存加1
bookCache.incrObject(BookConstant.BOOK_CACHE + "PLATFORM_BOOK_COUNT");
bookDto = bookDao.getByIsbnAndSnum(book.getIsbn(), book.getSerialNumber());
bookDto.setChannelId(book.getChannelId());
// 关联社群码和社群书信息
if (null != book.getIsBookGroup() && book.getIsBookGroup() && null != book.getBookGroupId()) {
bookGroupBiz.linkBookGroup(book.getBookId(), book.getBookGroupId(), book.getCreatedUser());
}
bookDto.setIsDelete(null == dtoByBookId ? 1 : dtoByBookId.getIsDelete() ? 1 : 0);
return bookDto;
}
/**
* 新增图书与编辑关联关系
* @param book
*/
void createBookAdviserErpRelation(Book book) {
BookAdviserErp bookAdviserErp = new BookAdviserErp();
bookAdviserErp.setBookId(book.getBookId());
bookAdviserErp.setAdviserId(book.getCreatedUser());
bookAdviserErp.setChannelId(book.getChannelId());
bookAdviserErp.setCreatedUser(book.getCreatedUser());
bookAdviserErp.setTempletId(book.getTempletId());
bookAdviserErp.setSecondTempletId(book.getSecondTempletId());
bookAdviserErp.setSubLabelId(book.getSubLabelId());
bookAdviserErp.setGraLabelId(book.getGraLabelId());
bookAdviserErp.setAreaLabelId(book.getAreaLabelId());
bookAdviserErp.setVerLabelId(book.getVerLabelId());
bookAdviserErp.setProLabelId(book.getProLabelId());
bookAdviserErp.setDepLabelId(book.getDepLabelId());
bookAdviserErp.setPurLabelId(book.getPurLabelId());
bookAdviserErp.setVolLabelId(book.getVolLabelId());
if(book.getIsBookGroup()!=null&&book.getIsBookGroup()){
bookAdviserErp.setIsOpenRobotProcess(1);
}else{
bookAdviserErp.setIsOpenRobotProcess(0);
}
bookAdviserErpBiz.create(bookAdviserErp);
}
/**
* 生成书刊序号
* @return
*/
private String builderSerialNumber(String isbn) {
BookSerialNumber bookSerialNumber = bookSerialNumberBiz.getByIsbn(isbn);
if(bookSerialNumber == null){
bookSerialNumber = new BookSerialNumber();
bookSerialNumber.setIsbn(isbn);
bookSerialNumber.setSerialNumber(1L);
try {
bookSerialNumberBiz.insert(bookSerialNumber);
} catch (DuplicateKeyException e){
bookSerialNumber = new BookSerialNumber();
bookSerialNumber.setIsbn(isbn);
bookSerialNumberBiz.update(bookSerialNumber);
}
} else {
bookSerialNumber = new BookSerialNumber();
bookSerialNumber.setIsbn(isbn);
bookSerialNumberBiz.update(bookSerialNumber);
}
Calendar date = Calendar.getInstance();
String year = String.valueOf(date.get(Calendar.YEAR));
return year + bookSerialNumber.getSerialNumber();
}
}
package com.pcloud.book.book.biz.impl;
import com.pcloud.book.book.dao.BookSerialNumberDao;
import com.pcloud.book.book.biz.BookSerialNumberBiz;
import com.pcloud.book.book.entity.BookSerialNumber;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.NumberUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 序号自动生成表(BookSerialNumber)表服务实现类
*
* @author makejava
* @since 2020-08-26 14:04:04
*/
@Service("bookSerialNumberBiz")
public class BookSerialNumberBizImpl implements BookSerialNumberBiz {
private static final Logger LOGGER = LoggerFactory.getLogger(BookSerialNumberBizImpl.class);
@Autowired
private BookSerialNumberDao bookSerialNumberDao;
@Override
@ParamLog("通过ID查询单条数据")
public BookSerialNumber getById(Long id) {
return bookSerialNumberDao.getById(id);
}
@Override
@ParamLog("查询多条数据")
public PageBeanNew getList(Integer currentPage, Integer numPerPage) {
PageBeanNew pageBeanNew = bookSerialNumberDao.listPageNew(new PageParam(currentPage, numPerPage), null, "getList");
List recordList = pageBeanNew.getRecordList();
if (ListUtils.isEmpty(recordList)){
return pageBeanNew;
}
// 加载其它数据
return pageBeanNew;
}
@Override
@ParamLog("新增")
public void insert(BookSerialNumber bookSerialNumber) {
bookSerialNumberDao.insert(bookSerialNumber);
}
@Override
@ParamLog("修改")
public void update(BookSerialNumber bookSerialNumber) {
if(bookSerialNumber == null){
throw BizException.PARAM_IS_NULL;
}
bookSerialNumberDao.update(bookSerialNumber);
}
@Override
@ParamLog("删除")
public void deleteById(Long id) {
bookSerialNumberDao.deleteById(id);
}
@Override
public BookSerialNumber getByIsbn(String isbn) {
return bookSerialNumberDao.getByIsbn(isbn);
}
}
package com.pcloud.book.book.biz.impl;
import com.pcloud.book.book.entity.QrcodeSceneErp;
import com.pcloud.book.book.dao.QrcodeSceneErpDao;
import com.pcloud.book.book.biz.QrcodeSceneErpBiz;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.NumberUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* ERP自动创建二维码临时表,由于没有 adviserId,所以无法创建二维码,将数据暂存,关联时再创建(QrcodeSceneErp)表服务实现类
*
* @author makejava
* @since 2020-08-26 21:00:12
*/
@Service("qrcodeSceneErpBiz")
public class QrcodeSceneErpBizImpl implements QrcodeSceneErpBiz {
private static final Logger LOGGER = LoggerFactory.getLogger(QrcodeSceneErpBizImpl.class);
@Autowired
private QrcodeSceneErpDao qrcodeSceneErpDao;
@Override
@ParamLog("通过ID查询单条数据")
public QrcodeSceneErp getById(Long sceneErpId) {
return qrcodeSceneErpDao.getById(sceneErpId);
}
@Override
@ParamLog("查询多条数据")
public PageBeanNew getList(Integer currentPage, Integer numPerPage) {
PageBeanNew pageBeanNew = qrcodeSceneErpDao.listPageNew(new PageParam(currentPage, numPerPage), null, "getList");
List recordList = pageBeanNew.getRecordList();
if (ListUtils.isEmpty(recordList)){
return pageBeanNew;
}
// 加载其它数据
return pageBeanNew;
}
@Override
@ParamLog("新增")
public Long insert(QrcodeSceneErp qrcodeSceneErp) {
qrcodeSceneErpDao.insert(qrcodeSceneErp);
return qrcodeSceneErp.getSceneErpId();
}
@Override
@ParamLog("修改")
public void update(QrcodeSceneErp qrcodeSceneErp) {
if(qrcodeSceneErp == null || !NumberUtil.isNumber(qrcodeSceneErp.getSceneErpId())){
throw BizException.PARAM_IS_NULL;
}
qrcodeSceneErpDao.update(qrcodeSceneErp);
}
@Override
@ParamLog("删除")
public void deleteById(Long sceneErpId) {
qrcodeSceneErpDao.deleteById(sceneErpId);
}
}
\ No newline at end of file
/**
*
*/
package com.pcloud.book.book.dao;
import com.pcloud.book.book.entity.BookAdviserErp;
import com.pcloud.common.core.dao.BaseDao;
/**
* @描述:编辑管理书籍数据访问层接口类
* @作者:songx
* @创建时间:2016年12月30日,下午5:15:22 @版本:1.0
*/
public interface BookAdviserErpDao extends BaseDao<BookAdviserErp> {
BookAdviserErp getByBookId(Long bookId);
}
......@@ -356,4 +356,6 @@ public interface BookDao extends BaseDao<Book> {
List<AdviserBookInfoDTO> getBookAdviserInfos(List<Long> bookIds);
void relateUniqueNumber4Erp(List<BookUniqueNumberDTO> bookUniqueNumberVos);
void updateByPrimaryKeySelective(Book book);
}
package com.pcloud.book.book.dao;
import com.pcloud.book.book.entity.BookSerialNumber;
import com.pcloud.common.core.dao.BaseDao;
/**
* 序号自动生成表(BookSerialNumber)表数据库访问层
*
* @author makejava
* @since 2020-08-26 14:00:12
*/
public interface BookSerialNumberDao extends BaseDao<BookSerialNumber> {
BookSerialNumber getByIsbn(String isbn);
}
package com.pcloud.book.book.dao;
import com.pcloud.book.book.entity.QrcodeSceneErp;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/**
* ERP自动创建二维码临时表,由于没有 adviserId,所以无法创建二维码,将数据暂存,关联时再创建(QrcodeSceneErp)表数据库访问层
*
* @author makejava
* @since 2020-08-26 21:00:12
*/
public interface QrcodeSceneErpDao extends BaseDao<QrcodeSceneErp> {
QrcodeSceneErp getByBookId(Long bookId);
}
/**
*
*/
package com.pcloud.book.book.dao.impl;
import com.pcloud.book.book.dao.BookAdviserErpDao;
import com.pcloud.book.book.entity.BookAdviserErp;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @描述:编辑管理书籍数据访问层接口实现类
* @作者:songx
* @创建时间:2016年12月30日,下午5:15:37 @版本:1.0
*/
@Repository("bookAdviserErpDao")
public class BookAdviserErpDaoImpl extends BaseDaoImpl<BookAdviserErp> implements BookAdviserErpDao {
@Override
public BookAdviserErp getByBookId(Long bookId) {
return this.sqlSessionTemplate.selectOne(getStatement("getByBookId"), bookId);
}
}
......@@ -399,4 +399,9 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
paramMap.put("bookUniqueNumberVos", bookUniqueNumberVos);
super.getSqlSession().update(getStatement("relateUniqueNumber4Erp"),paramMap);
}
@Override
public void updateByPrimaryKeySelective(Book book){
super.getSqlSession().update(getStatement("updateByPrimaryKeySelective"), book);
}
}
package com.pcloud.book.book.dao.impl;
import com.pcloud.book.book.dao.BookSerialNumberDao;
import com.pcloud.book.book.entity.BookSerialNumber;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* 序号自动生成表(BookSerialNumber)表数据库访问层
*
* @author makejava
* @since 2020-08-26 14:00:12
*/
@Repository("bookSerialNumberDaoImpl")
public class BookSerialNumberDaoImpl extends BaseDaoImpl<BookSerialNumber> implements BookSerialNumberDao {
@Override
public BookSerialNumber getByIsbn(String isbn) {
return this.sqlSessionTemplate.selectOne(getStatement("getByIsbn"), isbn);
}
}
package com.pcloud.book.book.dao.impl;
import com.pcloud.book.book.entity.QrcodeSceneErp;
import com.pcloud.book.book.dao.QrcodeSceneErpDao;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* ERP自动创建二维码临时表,由于没有 adviserId,所以无法创建二维码,将数据暂存,关联时再创建(QrcodeSceneErp)表数据库访问层
*
* @author makejava
* @since 2020-08-26 21:00:12
*/
@Repository("qrcodeSceneErpDaoImpl")
public class QrcodeSceneErpDaoImpl extends BaseDaoImpl<QrcodeSceneErp> implements QrcodeSceneErpDao {
@Override
public QrcodeSceneErp getByBookId(Long bookId) {
return this.sqlSessionTemplate.selectOne(getStatement("getByBookId"), bookId);
}
}
......@@ -6,6 +6,8 @@ package com.pcloud.book.book.facade;
import com.pcloud.book.book.dto.AdviserBookInfoDTO;
import com.pcloud.book.book.dto.BookAssocCount;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.CreateBookVO;
import com.pcloud.book.book.dto.RelateAdviserVO;
import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.vo.ListNoAuthBookParam;
import com.pcloud.book.book.vo.ListNoAuthGroupBookParam;
......@@ -777,4 +779,12 @@ public interface BookFacade {
public ResponseDto<?> relateUniqueNumber4Erp(
@RequestBody List<BookUniqueNumberDTO> bookUniqueNumberVos
) throws BizException;
@ApiOperation("erp关联自动创建书刊")
@RequestMapping(value = "/relateBookAdviser4Erp", method = RequestMethod.POST)
ResponseDto<?> relateBookAdviser4Erp(@RequestBody RelateAdviserVO relateAdviserVO) throws BizException;
@ApiOperation("erp自动创建RAYS书刊")
@RequestMapping(value = "/batchCreateBook4Erp", method = RequestMethod.POST)
ResponseDto<?> batchCreateBook4Erp(@RequestBody List<CreateBookVO> createBookVOList) throws BizException;
}
......@@ -11,6 +11,8 @@ import com.pcloud.book.book.biz.BookLabelBiz;
import com.pcloud.book.book.dto.AdviserBookInfoDTO;
import com.pcloud.book.book.dto.BookAssocCount;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.CreateBookVO;
import com.pcloud.book.book.dto.RelateAdviserVO;
import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.facade.BookFacade;
import com.pcloud.book.book.vo.BookQualifyVO;
......@@ -1119,4 +1121,17 @@ public class BookFacadeImpl implements BookFacade {
bookBiz.relateUniqueNumber4Erp(bookUniqueNumberVos);
return new ResponseDto<>();
}
}
\ No newline at end of file
@Override
@RequestMapping(value = "/relateBookAdviser4Erp", method = RequestMethod.POST)
public ResponseDto<?> relateBookAdviser4Erp(@RequestBody RelateAdviserVO relateAdviserVO) throws BizException {
bookBiz.relateBookAdviser4Erp(relateAdviserVO);
return new ResponseDto<>();
}
@Override
@RequestMapping(value = "/batchCreateBook4Erp", method = RequestMethod.POST)
public ResponseDto<?> batchCreateBook4Erp(@RequestBody List<CreateBookVO> createBookVOList) throws BizException {
return new ResponseDto<>(bookBiz.batchCreateBook4Erp(createBookVOList));
}
}
......@@ -7,6 +7,7 @@ import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.channelcenter.qrcode.dto.BookDto;
import com.pcloud.channelcenter.qrcode.dto.GroupQrcodeVO;
import com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto;
import com.pcloud.channelcenter.qrcode.entity.QrcodeScene;
import com.pcloud.channelcenter.qrcode.service.QrcodeSceneService;
import com.pcloud.channelcenter.qrcode.vo.BookAssocLastQrAskVO;
import com.pcloud.channelcenter.qrcode.vo.BookAssocLastQrVO;
......@@ -433,4 +434,8 @@ public class QrcodeSceneConsr {
return accountSettingId;
}
@ParamLog("小程序书刊资源数量")
public Long createQrcodeScene4Erp(QrcodeScene qrcodeScene) {
return ResponseHandleUtil.parseResponse(qrcodeSceneService.createQrcodeScene4Erp(qrcodeScene), Long.class);
}
}
......@@ -201,4 +201,19 @@ public class ChannelConsr {
}
public Long getDefaultChannelId(Long adviserId) {
Long channelId = null;
LOGGER.info("根据 adviserId 获取 channelId,<START>.[adviserId]=" + adviserId);
try {
channelId = ResponseHandleUtil.parseResponse(channelService.getDefaultChannelId(adviserId), Long.class);
if (null == channelId) {
throw new ChannelBizException(ChannelBizException.PARAM_IS_NULL, "channelId 为空");
}
return channelId;
} catch (Exception e) {
LOGGER.error("根据 adviserId 获取 channelId" + e.getMessage(), e);
throw new ChannelBizException(ChannelBizException.PARAM_IS_NULL, "channelId 为空");
}
}
}
......@@ -81,6 +81,9 @@
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
<if test="fromErp != null">
,FROM_ERP
</if>
)
VALUES (
#{isbn, jdbcType=VARCHAR}, #{typeCode, jdbcType=VARCHAR}, #{bookName, jdbcType=VARCHAR}, #{bookPrice, jdbcType=VARCHAR},
......@@ -90,6 +93,9 @@
#{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}
<if test="fromErp != null">
, #{fromErp}
</if>
) ON
DUPLICATE KEY UPDATE IS_DELETE = 0
</insert>
......@@ -2510,4 +2516,18 @@
G.UPDATE_TIME DESC
</select>
</mapper>
\ No newline at end of file
<update id="updateByPrimaryKeySelective" parameterType="Book">
update book
<set>
LAST_MODIFIED_DATE = NOW(),
<if test="createdUser != null">
created_user = #{createdUser},
</if>
<if test="lastModifiedUser != null">
last_modified_user = #{lastModifiedUser},
</if>
</set>
where book_id = #{bookId}
</update>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pcloud.book.book.dao.impl.BookAdviserErpDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.book.entity.BookAdviserErp">
<result column="BOOK_ADVISER_ERP_ID" property="bookAdviserErpId" jdbcType="BIGINT"/>
<result column="BOOK_ID" property="bookId" jdbcType="BIGINT"/>
<result column="ADVISER_ID" property="adviserId" jdbcType="BIGINT"/>
<result column="CHANNEL_ID" property="channelId" jdbcType="BIGINT"/>
<result column="TEMPLET_ID" property="templetId" jdbcType="BIGINT"/>
<result column="CREATED_USER" property="createdUser" jdbcType="BIGINT"/>
<result column="CREATED_DATE" property="createdDate" jdbcType="TIMESTAMP"/>
<result column="LAST_MODIFIED_DATE" property="lastModifiedDate" jdbcType="TIMESTAMP"/>
<result column="VERSION" property="version" jdbcType="BIGINT"/>
<result column="IS_MAIN_EDITOR" property="isMainEditor" jdbcType="BOOLEAN"/>
<result column="IS_DELETE" property="isDelete" jdbcType="BOOLEAN"/>
<result column="SECOND_TEMPLET_ID" property="secondTempletId" jdbcType="BIGINT"/>
<result column="GRA_LABEL_ID" property="graLabelId" jdbcType="INTEGER"/>
<result column="SUB_LABEL_ID" property="subLabelId" jdbcType="INTEGER"/>
<result column="VER_LABEL_ID" property="verLabelId" jdbcType="INTEGER"/>
<result column="AREA_LABEL_ID" property="areaLabelId" jdbcType="INTEGER"/>
<result column="IS_PRINT" property="isPrint" jdbcType="BOOLEAN"/>
<result column="pro_label_id" property="proLabelId" jdbcType="INTEGER"/>
<result column="dep_label_id" property="depLabelId" jdbcType="INTEGER"/>
<result column="pur_label_id" property="purLabelId" jdbcType="INTEGER"/>
<result column="is_open_robot_process" property="isOpenRobotProcess" jdbcType="INTEGER"/>
<result column="vol_label_id" property="volLabelId" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
BOOK_ADVISER_ERP_ID, BOOK_ID, ADVISER_ID, CHANNEL_ID, TEMPLET_ID, CREATED_USER, CREATED_DATE, LAST_MODIFIED_DATE,
VERSION, IS_MAIN_EDITOR, IS_DELETE, SECOND_TEMPLET_ID, GRA_LABEL_ID, SUB_LABEL_ID, VER_LABEL_ID, AREA_LABEL_ID,
IS_PRINT, pro_label_id, dep_label_id, pur_label_id, is_open_robot_process, vol_label_id
</sql>
<select id="getByBookId" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM book_adviser_erp
WHERE BOOK_ID = #{bookId}
</select>
<!-- 新增书籍和编辑关联信息-->
<insert id="insert" parameterType="com.pcloud.book.book.entity.BookAdviserErp" useGeneratedKeys="true" keyProperty="bookAdviserErpId" flushCache="true">
INSERT INTO BOOK_ADVISER_ERP (
BOOK_ID, ADVISER_ID, CHANNEL_ID, CREATED_USER, CREATED_DATE,IS_MAIN_EDITOR, TEMPLET_ID, SECOND_TEMPLET_ID,
GRA_LABEL_ID,SUB_LABEL_ID,VER_LABEL_ID,AREA_LABEL_ID,pro_label_id, dep_label_id,pur_label_id,is_open_robot_process,
vol_label_id
)
VALUES (
#{bookId, jdbcType=VARCHAR}, #{adviserId, jdbcType=VARCHAR}, #{channelId, jdbcType=VARCHAR},
#{adviserId, jdbcType=BIGINT}, NOW(),#{isMainEditor, jdbcType=BIT},#{templetId, jdbcType=BIGINT},
#{secondTempletId, jdbcType=BIGINT},#{graLabelId, jdbcType=BIGINT},#{subLabelId, jdbcType=BIGINT},
#{verLabelId, jdbcType=BIGINT},#{areaLabelId, jdbcType=BIGINT},#{proLabelId,jdbcType=BIGINT},
#{depLabelId,jdbcType=BIGINT},#{purLabelId,jdbcType=BIGINT},#{isOpenRobotProcess,jdbcType=INTEGER},
#{volLabelId}
)
</insert>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pcloud.book.book.dao.impl.BookSerialNumberDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.book.entity.BookSerialNumber">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="isbn" property="isbn" jdbcType="VARCHAR"/>
<result column="serial_number" property="serialNumber" jdbcType="BIGINT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id, isbn, serial_number, create_time
</sql>
<select id="getById" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM book_serial_number
WHERE id = #{id}
</select>
<select id="getByIsbn" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM book_serial_number
WHERE isbn = #{isbn}
</select>
<select id="getList" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM book_serial_number
</select>
<insert id="insert" parameterType="com.pcloud.book.book.entity.BookSerialNumber">
INSERT INTO book_serial_number
(isbn, serial_number, create_time)
VALUES
(#{isbn, jdbcType=VARCHAR}, #{serialNumber, jdbcType=BIGINT},NOW())
</insert>
<insert id="batchInsert">
INSERT INTO book_serial_number (
isbn,
serial_number,
create_time
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.isbn, jdbcType=VARCHAR},
#{item.serialNumber, jdbcType=BIGINT},
#{item.markId, jdbcType=VARCHAR},
NOW()
)
</foreach>
</insert>
<!--通过主键修改数据-->
<update id="update" parameterType="com.pcloud.book.book.entity.BookSerialNumber">
UPDATE book_serial_number SET serial_number = serial_number + 1 WHERE isbn = #{isbn}
<selectKey resultType="Long" keyProperty="serialNumber" order="AFTER">
SELECT serial_number FROM book_serial_number WHERE isbn = #{isbn}
</selectKey>
</update>
<!--通过主键删除-->
<delete id="deleteById">
DELETE FROM book_serial_number where id = #{id}
</delete>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.book.dao.impl.QrcodeSceneErpDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.book.entity.QrcodeSceneErp">
<id column="SCENE_ERP_ID" property="sceneErpId" jdbcType="BIGINT" />
<result column="MATERIAL_LIB_ID" property="materialLibId" jdbcType="BIGINT" />
<result column="ADVISER_BOOK_ID" property="adviserBookId" jdbcType="BIGINT" />
<result column="SCENE_NAME" property="sceneName" jdbcType="VARCHAR" />
<result column="DESCRIPTION" property="description" jdbcType="VARCHAR" />
<result column="QRCODE_URL" property="qrcodeUrl" jdbcType="VARCHAR" />
<result column="QRCODE_TYPE" property="qrcodeType" jdbcType="VARCHAR" />
<result column="SCENE_CODE" property="sceneCode" jdbcType="VARCHAR" />
<result column="IS_HAVE_PROVINCE" property="haveProvinceMessage" jdbcType="BIGINT" />
<result column="CHANNEL_PARTY_ID" property="channelPartyId" jdbcType="BIGINT" />
<result column="IS_DELETE" property="isDelete" jdbcType="VARCHAR" />
<result column="IS_DELETE_RECYCLE_BIN" property="isDeleteRecycleBin" jdbcType="VARCHAR"/>
<result column="ACCOUNT_SETTING_ID" property="accountSettingId" jdbcType="BIGINT" />
<result column="PURPOSE_TYPE" property="purposeType" jdbcType="VARCHAR" />
<result column="CREATED_BY_USER_LOGIN" property="createdByUserLogin" jdbcType="BIGINT" />
<result column="CREATED_USER_ROLE" property="createdUserRole" jdbcType="VARCHAR" />
<result column="CREATED_DATE" property="createdDate" jdbcType="TIMESTAMP" />
<result column="LAST_MODIFIED_BY_USER_LOGIN" property="lastModifiedByUserLogin" jdbcType="BIGINT" />
<result column="LAST_MODIFIED_DATE" property="lastModifiedDate" jdbcType="TIMESTAMP" />
<result column="VERSION" property="version" jdbcType="INTEGER" />
<result column="CLIENT_CODE" property="clientCode" jdbcType="BIGINT" />
<result column="AUDIT_STATE" property="auditState" jdbcType="VARCHAR" />
<result column="AUDIT_USER" property="auditUser" jdbcType="VARCHAR" />
<result column="AUDIT_DATE" property="auditDate" jdbcType="TIMESTAMP" />
<result column="AUDIT_REASON" property="auditReason" jdbcType="VARCHAR" />
<!--<result column="COVER_IMG" property="coverImg" jdbcType="VARCHAR"/>-->
<result column="BOOK_NAME" property="bookName" jdbcType="VARCHAR" />
<result column="AUDIT_SUBMIT_DATE" property="auditSubmitDate" jdbcType="TIMESTAMP" />
<result column="location_page_num" property="locationPageNum" jdbcType="INTEGER" />
<result column="LOCATION_ID" property="locationId" jdbcType="BIGINT"/>
<result column="pro_label_id" property="proLabelId" jdbcType="BIGINT"/>
<result column="dep_label_id" property="depLabelId" jdbcType="BIGINT"/>
<result column="pur_label_id" property="purLabelId" jdbcType="BIGINT"/>
</resultMap>
<sql id="Base_Column_List">
SCENE_ERP_ID, MATERIAL_LIB_ID, SCENE_NAME, DESCRIPTION,SCENE_CODE,ADVISER_BOOK_ID,QRCODE_URL,IS_DELETE,
IS_DELETE_RECYCLE_BIN,PURPOSE_TYPE,CHANNEL_PARTY_ID,ACCOUNT_SETTING_ID,CREATED_BY_USER_LOGIN,
CREATED_USER_ROLE,VERSION,IS_HAVE_PROVINCE,CLIENT_CODE,AUDIT_STATE, location_page_num, LOCATION_ID,
pro_label_id, dep_label_id, pur_label_id
</sql>
<!-- 根据场景id查询二维码场景基本信息 -->
<select id="getByBookId" resultMap="BaseResultMap" parameterType="java.lang.Long">
SELECT
<include refid="Base_Column_List" />
FROM QRCODE_SCENE_ERP
WHERE book_id = #{bookId}
</select>
<!-- 插入二维码场景信息 -->
<insert id="insert" parameterType="com.pcloud.book.book.entity.QrcodeSceneErp" useGeneratedKeys="true" keyProperty="sceneErpId">
INSERT INTO qrcode_scene_erp(
SCENE_CODE, BOOK_ID,ADVISER_BOOK_ID,BOOK_NAME,SCENE_NAME,QRCODE_URL,DESCRIPTION,
CHANNEL_PARTY_ID, ACCOUNT_SETTING_ID, URL, ADVISER_ID, PURPOSE_TYPE, QRCODE_TYPE,
TEMPLET_ID, CLIENT_CODE, CREATED_BY_USER_LOGIN, CREATED_DATE, VERSION, is_open_app,
location_page_num, LOCATION_ID, pro_label_id, dep_label_id, pur_label_id
) VALUES (
#{sceneCode, jdbcType=VARCHAR}, #{bookId, jdbcType=BIGINT}, #{adviserBookId, jdbcType=BIGINT},#{bookName, jdbcType=VARCHAR},#{sceneName, jdbcType=VARCHAR}, #{qrcodeUrl, jdbcType=VARCHAR}, #{description, jdbcType=VARCHAR},
#{channelPartyId, jdbcType=BIGINT}, #{accountSettingId, jdbcType=BIGINT},#{url, jdbcType=VARCHAR},#{adviserId, jdbcType=BIGINT},#{purposeType, jdbcType=VARCHAR},#{qrcodeType, jdbcType=VARCHAR},
#{templetId, jdbcType=BIGINT}, #{clientCode, jdbcType=BOOLEAN}, #{createdByUserLogin, jdbcType=BIGINT},NOW(),1, #{isOpenApp, jdbcType=BOOLEAN},
#{locationPageNum}, #{locationId}, #{proLabelId}, #{depLabelId}, #{purLabelId}
)
</insert>
</mapper>
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