You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

576 lines
30 KiB

package jnpf.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.xuyanwu.spring.file.storage.FileInfo;
import cn.xuyanwu.spring.file.storage.MockMultipartFile;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jnpf.base.DictionaryDataApi;
import jnpf.base.UserInfo;
import jnpf.base.entity.DictionaryDataEntity;
import jnpf.constant.FileTypeConstant;
import jnpf.constant.PermissionConst;
import jnpf.entity.*;
import jnpf.enump.ReceiveGoodsMainEnum;
import jnpf.exception.DataException;
import jnpf.file.FileApi;
import jnpf.file.FileUploadApi;
import jnpf.mapper.TReceiveGoodsMainMapper;
import jnpf.model.dto.ReceiveGoodsMainDto;
import jnpf.permission.entity.OrganizeEntity;
import jnpf.permission.service.OrganizeService;
import jnpf.service.ILibraryService;
import jnpf.service.TBookGoWhereService;
import jnpf.service.TReceiveGoodsBooksService;
import jnpf.service.TReceiveGoodsMainService;
import jnpf.util.UserProvider;
import jnpf.utils.SnowFlake;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.transaction.annotation.Transactional;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
* 收货信息主表(TReceiveGoodsMain)表服务实现类
*
* @author common
* @since 2024-10-25 10:33:01
*/
@Service("tReceiveGoodsMainService")
@AllArgsConstructor
public class TReceiveGoodsMainServiceImpl extends ServiceImpl<TReceiveGoodsMainMapper, TReceiveGoodsMain> implements TReceiveGoodsMainService {
private final RedisSerialNumberUtils redisSerialNumberUtils;
private final ILibraryService libraryService;
private final OrganizeService organizeService;
private final TReceiveGoodsBooksService receiveGoodsBooksService;
private final TBookGoWhereService bookGoWhereService;
private final FileUploadApi fileUploadApi;
private final DictionaryDataApi dictionaryDataApi;
private final FileApi fileApi;
@Override
public IPage<TReceiveGoodsMain> selectPage(IPage<TReceiveGoodsMain> iPage, Map<String, Object> params) {
return this.baseMapper.selectPage(iPage, params);
}
@Override
@Transactional
public String newReceipt(ReceiveGoodsMainDto.NewReceiptParam param) {
if (StrUtil.isBlank(param.getSaveType())) {
throw new DataException("请选择保存类型");
}
ReceiveGoodsMainEnum.OrderTypeEnum orderTypeEnum = ReceiveGoodsMainEnum.OrderTypeEnum.getEnumByCode(param.getOrderType());
if (null == orderTypeEnum) {
throw new DataException("请选择签收类型");
}
ReceiveGoodsMainEnum.PackageSituationEnum packageSituationEnum = ReceiveGoodsMainEnum.PackageSituationEnum.getEnumByCode(param.getPackageSituation());
if (null == packageSituationEnum) {
throw new DataException("请选择包装情况");
}
//校验是否存在图书信息
if (CollUtil.isEmpty(param.getBunchingInfoList())) {
throw new DataException("请扫描/添加图书");
}
ReceiveGoodsMainEnum.MainStatusEnum mainStatusEnum;
//校验主状态
if (StrUtil.equals(param.getSaveType(), "1")) {
mainStatusEnum = ReceiveGoodsMainEnum.MainStatusEnum.TO_BE_SIGNED_FOR;
} else {
if (orderTypeEnum == ReceiveGoodsMainEnum.OrderTypeEnum.VERSION_LIBRARY) {
mainStatusEnum = ReceiveGoodsMainEnum.MainStatusEnum.LISTING;
} else {
mainStatusEnum = ReceiveGoodsMainEnum.MainStatusEnum.UNDIVIDED_REACTOR;
}
}
TReceiveGoodsMain receiveGoodsMain = new TReceiveGoodsMain();
UserInfo user = UserProvider.getUser();
//校验是否为新增
if (null == param.getId()) {
String idPrefix = "SH" + LocalDateTimeUtil.format(LocalDateTime.now(), "yyyyMMdd");
receiveGoodsMain.setId(SnowFlake.nextId() + "");
String receiptNumber = param.getReceiptNumber();
if (StrUtil.isBlank(receiptNumber)) {
receiptNumber = String.format("%s%03d", idPrefix, redisSerialNumberUtils.generateSerialNumber(idPrefix));
}
receiveGoodsMain.setReceiptNumber(receiptNumber);
receiveGoodsMain.setCreateId(user.getUserId());
receiveGoodsMain.setCreateTime(LocalDateTime.now());
receiveGoodsMain.setCreateName(user.getUserName());
} else {
receiveGoodsMain.setId(param.getId());
}
////构建实体类
receiveGoodsMain.setType(orderTypeEnum.getCode());
receiveGoodsMain.setMainStatus(mainStatusEnum.getCode());
receiveGoodsMain.setMainStatusName(mainStatusEnum.getDescribe());
receiveGoodsMain.setPackageSituation(packageSituationEnum.getCode());
receiveGoodsMain.setPackageSituationName(packageSituationEnum.getDescribe());
receiveGoodsMain.setPackageQuantity(param.getPackageQuantity());
receiveGoodsMain.setDeliveryParty(param.getDeliveryParty());
receiveGoodsMain.setReceiveTime(param.getReceiveTime());
receiveGoodsMain.setSignPersonTime(LocalDateTime.now());
receiveGoodsMain.setUpdateId(user.getUserId());
receiveGoodsMain.setUpdateTime(LocalDateTime.now());
receiveGoodsMain.setUpdateName(user.getUserName());
//查询创建人单位及部门
if (StrUtil.isNotBlank(user.getOrganizeId())) {
Optional<OrganizeEntity> deptOptional = organizeService.lambdaQuery()
.eq(OrganizeEntity::getId, user.getOrganizeId())
.eq(OrganizeEntity::getEnabledMark, "1").list().stream().findFirst();
if (deptOptional.isPresent()) {
OrganizeEntity dept = deptOptional.get();
OrganizeEntity corp = getCorp(dept);
receiveGoodsMain.setCreateDeptName(dept.getFullName());
receiveGoodsMain.setCreateCorpName(corp.getFullName());
receiveGoodsMain.setCreateDeptId(dept.getId());
receiveGoodsMain.setCreateCorpId(corp.getId());
}
}
this.saveOrUpdate(receiveGoodsMain);
//版本馆直接生成二维码
if (mainStatusEnum == ReceiveGoodsMainEnum.MainStatusEnum.LISTING) {
//生成二维码
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
DictionaryDataEntity data = dictionaryDataApi.getByTypeDataCode("SampleLibrary", "xtaddr").getData();
String systemUrl = "http://61.169.37.106:9172/api/file/Image/preview/";
if (null != data) {
systemUrl = data.getDescription();
}
QrCodeUtil.generate(systemUrl, 1000, 1000, "", byteArrayOutputStream);
MockMultipartFile mockMultipartFile = new MockMultipartFile("上架.png", "上架.png", "text/plain", byteArrayOutputStream.toByteArray());
FileInfo preview = fileUploadApi.uploadFile(mockMultipartFile, fileApi.getPath(FileTypeConstant.BIVISUALPATH), "preview", "上架.png");
this.lambdaUpdate()
.set(TReceiveGoodsMain::getListingQrCode, preview.getFilename())
.set(TReceiveGoodsMain::getMainStatus, mainStatusEnum.getCode())
.set(TReceiveGoodsMain::getMainStatusName, mainStatusEnum.getDescribe())
.set(TReceiveGoodsMain::getUpdateId, UserProvider.getLoginUserId())
.set(TReceiveGoodsMain::getUpdateTime, LocalDateTime.now())
.set(TReceiveGoodsMain::getUpdateName, UserProvider.getUser().getUserName())
.eq(TReceiveGoodsMain::getId, param.getId())
.update();
}
//todo 保存收货书籍信息
saveReceivingBookInformation(receiveGoodsMain, param);
return receiveGoodsMain.getId();
}
//保存收货书籍信息
private void saveReceivingBookInformation(TReceiveGoodsMain receiveGoodsMain, ReceiveGoodsMainDto.NewReceiptParam param) {
//当提交为更新时删除所有签收图书信息,防止有问题
if (null != param.getId()) {
receiveGoodsBooksService.lambdaUpdate()
.eq(TReceiveGoodsBooks::getRelationId, receiveGoodsMain.getId())
.remove();
}
List<ReceiveGoodsMainDto.BunchingInfo> bunchingInfoList = param.getBunchingInfoList();
Integer quantityReceived = receiveGoodsMain.getQuantityReceived();
if (null == quantityReceived) {
quantityReceived = 0;
}
final UserInfo user = UserProvider.getUser();
//计算签收数量
for (ReceiveGoodsMainDto.BunchingInfo bunchingInfo : bunchingInfoList) {
quantityReceived += bunchingInfo.getSignedQuantity();
//新增签收图书信息
//异步创建
CompletableFuture.runAsync(() -> {
TReceiveGoodsBooks tReceiveGoodsBooks = BeanUtil.copyProperties(bunchingInfo, TReceiveGoodsBooks.class);
tReceiveGoodsBooks.setId(SnowFlake.nextId());
tReceiveGoodsBooks.setRelationId(receiveGoodsMain.getId());
//查询该单位往某部门需要送出图书的数量
int sum = bookGoWhereService.lambdaQuery()
.eq(TBookGoWhere::getBookNumber, bunchingInfo.getBookNumber())
// .eq(TBookGoWhere::getTargetName, bunchingInfo.getBookName())
.eq(TBookGoWhere::getCreateCorpId, receiveGoodsMain.getCreateCorpId())
//todo 非样书室时根据所属类型及部门id去查询应送数量
//版本馆根据类型匹配
.eq(!StrUtil.equals(param.getOrderType(), "3"), TBookGoWhere::getOrderType, param.getOrderType())
//业务部根据部门id匹配
// .eq(StrUtil.equals(param.getOrderType(), "1"), TBookGoWhere::getCreateDeptId, receiveGoodsMain.getCreateDeptId())
.eq(TBookGoWhere::getWarehouseEntryFlag, "0")
.eq(TBookGoWhere::getType, "0")
.eq(TBookGoWhere::getDelFlag, "0")
.list()
.stream().mapToInt(TBookGoWhere::getShouldSend).sum();
//应发数量
tReceiveGoodsBooks.setShouldSend(sum);
//实发数量默认与应发数量相同
tReceiveGoodsBooks.setActualSend(sum);
tReceiveGoodsBooks.setCreateId(user.getUserId());
tReceiveGoodsBooks.setCreateName(user.getUserName());
tReceiveGoodsBooks.setCreateTime(LocalDateTime.now());
receiveGoodsBooksService.save(tReceiveGoodsBooks);
});
}
//修改收货数量
this.lambdaUpdate()
.set(TReceiveGoodsMain::getQuantityReceived, quantityReceived)
.eq(TReceiveGoodsMain::getId, receiveGoodsMain.getId())
.update();
}
//根据部门递归查询公司
private OrganizeEntity getCorp(OrganizeEntity dept) {
if (StrUtil.equals(dept.getCategory(), PermissionConst.COMPANY)) {
return dept;
}
OrganizeEntity info = organizeService.getInfo(dept.getParentId());
if (null == info) {
return dept;
}
return getCorp(info);
}
@Override
public ReceiveGoodsMainDto.BunchingInfo getBunchingInfoByBookNumber(String bookNumber) {
if (StrUtil.isBlank(bookNumber)) {
throw new DataException("请输入图书编号");
}
//todo 新增下印册书
//查询图书信息
return libraryService.getBunchingInfoByBookNumber(bookNumber);
}
@Override
public void delete(String id, boolean checkUser) {
//校验是否存在
TReceiveGoodsMain receiveGoodsMain = this.lambdaQuery()
.eq(TReceiveGoodsMain::getId, id)
.eq(TReceiveGoodsMain::getDelFlag, "0")
.one();
if (null == receiveGoodsMain) {
throw new DataException("该信息不存在");
}
//校验是否为自己创建
if (checkUser && !StrUtil.equals(UserProvider.getUser().getUserId(), receiveGoodsMain.getCreateId())) {
throw new DataException("不可删除[1r]");
}
//校验是否待签收状态
if (!StrUtil.equals(ReceiveGoodsMainEnum.MainStatusEnum.TO_BE_SIGNED_FOR.getCode(), receiveGoodsMain.getMainStatus())) {
throw new DataException("不可删除[2r]");
}
//删除收货单
this.lambdaUpdate()
.set(TReceiveGoodsMain::getDelFlag, "1")
.eq(TReceiveGoodsMain::getId, id)
.update();
//删除验收图书
receiveGoodsBooksService.lambdaUpdate()
.set(TReceiveGoodsBooks::getDelFlag, "1")
.eq(TReceiveGoodsBooks::getRelationId, receiveGoodsMain.getId())
.update();
}
@Override
public IPage<ReceiveGoodsMainDto.TReceiveGoodsMainEntity> getReceiveGoodsList(ReceiveGoodsMainDto.GetReceiveGoodsListParam param) {
ReceiveGoodsMainEnum.OrderTypeEnum orderTypeEnum = ReceiveGoodsMainEnum.OrderTypeEnum.getEnumByCode(param.getOrderType());
if (null == orderTypeEnum) {
throw new DataException("请选择签收类型");
}
//样书室根据userId查询
if (orderTypeEnum == ReceiveGoodsMainEnum.OrderTypeEnum.SAMPLE_BOOKSTORE) {
param.setUserId(UserProvider.getUser().getUserId());
} else {
if (StrUtil.isNotBlank(UserProvider.getUser().getOrganizeId())) {
Optional<OrganizeEntity> deptOptional = organizeService.lambdaQuery()
.eq(OrganizeEntity::getId, UserProvider.getUser().getOrganizeId())
.eq(OrganizeEntity::getEnabledMark, "1").list().stream().findFirst();
if (deptOptional.isPresent()) {
OrganizeEntity dept = deptOptional.get();
OrganizeEntity corp = getCorp(dept);
param.setCorpId(corp.getId());
}
}
}
try {
LocalDateTimeUtil.parse(param.getStartTime(), "yyyy-MM-dd HH:mm:ss");
LocalDateTimeUtil.parse(param.getEndTime(), "yyyy-MM-dd HH:mm:ss");
} catch (Exception e) {
throw new DataException("时间格式错误,应为yyyy-MM-dd HH:mm:ss");
}
return this.getBaseMapper().getReceiveGoodsList(new Page<>(param.getCurrent(), param.getSize()), param);
}
@Override
public ReceiveGoodsMainDto.TReceiveGoodsMainEntity getInfoById(String id) {
return this.baseMapper.getInfoById(id);
}
@Override
public List<ReceiveGoodsMainDto.TBookGoWhereEntity> getStackingInformation(Long id, String orderType) {
TReceiveGoodsBooks receiveGoodsBooks = receiveGoodsBooksService.getById(id);
if (null == receiveGoodsBooks) {
throw new DataException("该选书不存在");
}
//校验该选书是否进行过保存分堆信息
boolean exists = bookGoWhereService.lambdaQuery()
.eq(TBookGoWhere::getDelFlag, "0")
.eq(TBookGoWhere::getType, "1")
.eq(TBookGoWhere::getBookNumber, receiveGoodsBooks.getBookNumber())
.eq(TBookGoWhere::getRelationId, receiveGoodsBooks.getId())
.exists();
if (exists) {
//查询已有数据
return bookGoWhereService.getStackingInformationByRelationId(receiveGoodsBooks.getBookNumber(), receiveGoodsBooks.getId());
} else {
if (StrUtil.isNotBlank(UserProvider.getUser().getOrganizeId())) {
Optional<OrganizeEntity> deptOptional = organizeService.lambdaQuery()
.eq(OrganizeEntity::getId, UserProvider.getUser().getOrganizeId())
.eq(OrganizeEntity::getEnabledMark, "1").list().stream().findFirst();
if (deptOptional.isPresent()) {
OrganizeEntity dept = deptOptional.get();
OrganizeEntity corp = getCorp(dept);
//查询初始化去向数据
return bookGoWhereService.getStackingInformation(receiveGoodsBooks.getBookNumber(), corp.getId());
}
}
return null;
}
//todo 添加已发数
}
@Override
public IPage<ReceiveGoodsMainDto.TReceiveGoodsBooksEntity> getBookListById(ReceiveGoodsMainDto.GetBookListByIdParam param) {
return receiveGoodsBooksService.getBookListByRelationId(param);
}
@Override
@Transactional
public void saveStackingInformation(ReceiveGoodsMainDto.SaveStackingInformationParam param) {
ReceiveGoodsMainEnum.OrderTypeEnum orderTypeEnum = ReceiveGoodsMainEnum.OrderTypeEnum.getEnumByCode(param.getOrderType());
if (null == orderTypeEnum) {
throw new DataException("请选择签收类型");
}
if (CollUtil.isEmpty(param.getBookGoWhereList())) {
throw new DataException("请设置图书分堆信息");
}
TReceiveGoodsBooks receiveGoodsBooks = receiveGoodsBooksService.getById(param.getId());
if (null == receiveGoodsBooks) {
throw new DataException("该图书信息不存在");
}
//校验分堆设置是否已存在,已存在的话直接删除,防止多次提交
bookGoWhereService.lambdaUpdate()
.eq(TBookGoWhere::getDelFlag, "0")
.eq(TBookGoWhere::getType, "1")
.eq(TBookGoWhere::getBookNumber, receiveGoodsBooks.getBookNumber())
.eq(TBookGoWhere::getRelationId, receiveGoodsBooks.getId())
.remove();
for (TBookGoWhere bookGoWhere : param.getBookGoWhereList()) {
bookGoWhere.setId(SnowFlake.nextId());
bookGoWhere.setCreateTime(LocalDateTime.now());
bookGoWhere.setBookNumber(receiveGoodsBooks.getBookNumber());
bookGoWhere.setCreateBy(UserProvider.getUser().getUserId());
bookGoWhere.setCreateName(UserProvider.getUser().getUserName());
bookGoWhere.setUpdateTime(LocalDateTime.now());
bookGoWhere.setUpdateBy(UserProvider.getUser().getUserId());
bookGoWhere.setUpdateName(UserProvider.getUser().getUserName());
bookGoWhere.setOrderType(orderTypeEnum.getCode());
bookGoWhere.setWarehouseEntryFlag("0");
bookGoWhere.setType("1");
bookGoWhere.setRelationId(receiveGoodsBooks.getId() + "");
Optional<OrganizeEntity> deptOptional = organizeService.lambdaQuery()
.eq(OrganizeEntity::getId, UserProvider.getUser().getOrganizeId())
.eq(OrganizeEntity::getEnabledMark, "1").list().stream().findFirst();
if (deptOptional.isPresent()) {
OrganizeEntity dept = deptOptional.get();
OrganizeEntity corp = getCorp(dept);
bookGoWhere.setCreateDeptName(dept.getFullName());
bookGoWhere.setCreateCorpName(corp.getFullName());
bookGoWhere.setCreateDeptId(dept.getId());
bookGoWhere.setCreateCorpId(corp.getId());
}
bookGoWhereService.save(bookGoWhere);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void saveStackingInformationByReceiveId(ReceiveGoodsMainDto.SaveStackingInformationByReceiveIdParam param) {
if (StrUtil.isBlank(param.getSaveType())) {
throw new DataException("请选择保存类型");
}
ReceiveGoodsMainEnum.OrderTypeEnum orderTypeEnum = ReceiveGoodsMainEnum.OrderTypeEnum.getEnumByCode(param.getOrderType());
if (null == orderTypeEnum) {
throw new DataException("请选择签收类型");
}
if (StrUtil.isBlank(param.getId())) {
throw new DataException("请选择收货单");
}
TReceiveGoodsMain tReceiveGoodsMain = this.getById(param.getId());
if (null == tReceiveGoodsMain) {
throw new DataException("该收货单不存在");
}
//保存只是走个过场
if (StrUtil.equals(param.getSaveType(), "1")) {
this.lambdaUpdate()
.set(TReceiveGoodsMain::getUpdateId, UserProvider.getLoginUserId())
.set(TReceiveGoodsMain::getUpdateTime, LocalDateTime.now())
.set(TReceiveGoodsMain::getUpdateName, UserProvider.getUser().getUserName())
.eq(TReceiveGoodsMain::getId, param.getId())
.update();
return;
}
String corpId = "";
if (StrUtil.isNotBlank(UserProvider.getUser().getOrganizeId())) {
Optional<OrganizeEntity> deptOptional = organizeService.lambdaQuery()
.eq(OrganizeEntity::getId, UserProvider.getUser().getOrganizeId())
.eq(OrganizeEntity::getEnabledMark, "1").list().stream().findFirst();
if (deptOptional.isPresent()) {
OrganizeEntity dept = deptOptional.get();
OrganizeEntity corp = getCorp(dept);
//查询初始化去向数据
corpId = corp.getId();
}
}
//确定时对所有未保存的分堆信息进行保存(即无需分堆的图书)
//校验该选书是否进行过保存分堆信息
final String organizeId = corpId;
//先查询已保存的图书列表
// CompletableFuture.runAsync(() -> {
for (TReceiveGoodsBooks tReceiveGoodsBooks : receiveGoodsBooksService.lambdaQuery()
.eq(TReceiveGoodsBooks::getRelationId, tReceiveGoodsMain.getId())
.eq(TReceiveGoodsBooks::getDelFlag, "0")
.list()) {
boolean exists = bookGoWhereService.lambdaQuery()
.eq(TBookGoWhere::getDelFlag, "0")
.eq(TBookGoWhere::getType, "1")
.eq(TBookGoWhere::getBookNumber, tReceiveGoodsBooks.getBookNumber())
.eq(TBookGoWhere::getRelationId, tReceiveGoodsBooks.getId())
.exists();
if (exists) {
continue;
}
List<ReceiveGoodsMainDto.TBookGoWhereEntity> stackingInformation = bookGoWhereService.getStackingInformation(tReceiveGoodsBooks.getBookNumber(), organizeId);
ReceiveGoodsMainDto.SaveStackingInformationParam saveParam = new ReceiveGoodsMainDto.SaveStackingInformationParam();
saveParam.setOrderType(param.getOrderType());
saveParam.setId(tReceiveGoodsBooks.getId().toString());
List<TBookGoWhere> stackingList = new ArrayList<>();
for (ReceiveGoodsMainDto.TBookGoWhereEntity tBookGoWhereEntity : stackingInformation) {
stackingList.add(BeanUtil.copyProperties(tBookGoWhereEntity, TBookGoWhere.class));
}
saveParam.setBookGoWhereList(stackingList);
this.saveStackingInformation(saveParam);
}
// });
//以下逻辑全是确定
ReceiveGoodsMainEnum.MainStatusEnum mainStatusEnum = ReceiveGoodsMainEnum.MainStatusEnum.LISTING;
//查询图书编号列表
Set<String> bookNumberList = receiveGoodsBooksService.lambdaQuery()
.eq(TReceiveGoodsBooks::getRelationId, tReceiveGoodsMain.getId())
.eq(TReceiveGoodsBooks::getDelFlag, "0")
.list()
.stream().map(TReceiveGoodsBooks::getBookNumber).collect(Collectors.toSet());
if (CollUtil.isNotEmpty(bookNumberList)) {
//修改图书去向 即之后样书室新建后进行分堆不会再查到老数据
bookGoWhereService.lambdaUpdate()
//签收后保存的需要手机端上架后才能修改上架状态,初始化数据可以修改
.set(TBookGoWhere::getWarehouseEntryFlag, "1")
.eq(TBookGoWhere::getType, "0")
.eq(TBookGoWhere::getDelFlag, "0")
.eq(TBookGoWhere::getWarehouseEntryFlag, "0")
.eq(TBookGoWhere::getCreateCorpId, corpId)
.in(TBookGoWhere::getBookNumber, bookNumberList)
.eq(TBookGoWhere::getOrderType, orderTypeEnum.getCode())
.update();
}
//查询是否具有送往版本馆及业务部的数据,有的话就创建收货单
Set<String> otherSH = bookGoWhereService.lambdaQuery()
.eq(TBookGoWhere::getType, "0")
.eq(TBookGoWhere::getDelFlag, "0")
.eq(TBookGoWhere::getWarehouseEntryFlag, "0")
.in(TBookGoWhere::getTargetName, Arrays.asList(ReceiveGoodsMainEnum.OrderTypeEnum.BUSINESS_DEPARTMENT.getDescribe(), ReceiveGoodsMainEnum.OrderTypeEnum.VERSION_LIBRARY.getDescribe()))
.in(TBookGoWhere::getBookNumber, bookNumberList)
.eq(TBookGoWhere::getCreateCorpId, corpId)
.list().stream().map(TBookGoWhere::getTargetName).collect(Collectors.toSet());
if (CollUtil.isNotEmpty(otherSH)) {
for (String sh : otherSH) {
String orderType ="";
if (StrUtil.equals(ReceiveGoodsMainEnum.OrderTypeEnum.BUSINESS_DEPARTMENT.getDescribe(),sh)){
orderType=ReceiveGoodsMainEnum.OrderTypeEnum.BUSINESS_DEPARTMENT.getCode();
}
if (StrUtil.equals(ReceiveGoodsMainEnum.OrderTypeEnum.VERSION_LIBRARY.getDescribe(),sh)){
orderType=ReceiveGoodsMainEnum.OrderTypeEnum.VERSION_LIBRARY.getCode();
}
if (StrUtil.isBlank(orderType)){
continue;
}
//生成版本馆/业务部收货单
ReceiveGoodsMainDto.NewReceiptParam newReceiptParam = new ReceiveGoodsMainDto.NewReceiptParam();
newReceiptParam.setOrderType(orderType);
newReceiptParam.setReceiptNumber(tReceiveGoodsMain.getReceiptNumber());
newReceiptParam.setPackageQuantity(tReceiveGoodsMain.getPackageQuantity());
newReceiptParam.setDeliveryParty(tReceiveGoodsMain.getDeliveryParty());
newReceiptParam.setReceiveTime(tReceiveGoodsMain.getReceiveTime());
newReceiptParam.setSaveType("1");
newReceiptParam.setPackageSituation(tReceiveGoodsMain.getPackageSituation());
List<ReceiveGoodsMainDto.BunchingInfo> bunchingInfoList = new ArrayList<>();
//查询图书编号
Set<String> queryBookInfoNumberList = bookGoWhereService.lambdaQuery()
.eq(TBookGoWhere::getType, "0")
.eq(TBookGoWhere::getDelFlag, "0")
.eq(TBookGoWhere::getWarehouseEntryFlag, "0")
// .in(TBookGoWhere::getTargetName, Arrays.asList(ReceiveGoodsMainEnum.OrderTypeEnum.BUSINESS_DEPARTMENT.getDescribe(), ReceiveGoodsMainEnum.OrderTypeEnum.VERSION_LIBRARY.getDescribe()))
.in(TBookGoWhere::getBookNumber, bookNumberList)
.eq(TBookGoWhere::getCreateCorpId, corpId)
.eq(TBookGoWhere::getOrderType, orderType)
.list().stream().map(TBookGoWhere::getBookNumber).collect(Collectors.toSet());
List<TLibrary> libraryList = libraryService.getListByBookNumberList(queryBookInfoNumberList);
//创建收货单
if (CollUtil.isNotEmpty(libraryList)) {
for (TLibrary tLibrary : libraryList) {
bunchingInfoList.add(BeanUtil.copyProperties(tLibrary, ReceiveGoodsMainDto.BunchingInfo.class));
}
newReceiptParam.setBunchingInfoList(bunchingInfoList);
this.newReceipt(newReceiptParam);
}
}
}
//生成二维码
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
DictionaryDataEntity data = dictionaryDataApi.getByTypeDataCode("SampleLibrary", "xtaddr").getData();
String systemUrl = "http://61.169.37.106:9172/api/file/Image/preview/";
if (null != data) {
systemUrl = data.getDescription();
}
QrCodeUtil.generate(systemUrl, 1000, 1000, "", byteArrayOutputStream);
MockMultipartFile mockMultipartFile = new MockMultipartFile("上架.png", "上架.png", "text/plain", byteArrayOutputStream.toByteArray());
FileInfo preview = fileUploadApi.uploadFile(mockMultipartFile, fileApi.getPath(FileTypeConstant.BIVISUALPATH), "preview", "上架.png");
//修改状态为上架中
this.lambdaUpdate()
.set(TReceiveGoodsMain::getListingQrCode, preview.getFilename())
.set(TReceiveGoodsMain::getMainStatus, mainStatusEnum.getCode())
.set(TReceiveGoodsMain::getMainStatusName, mainStatusEnum.getDescribe())
.set(TReceiveGoodsMain::getUpdateId, UserProvider.getLoginUserId())
.set(TReceiveGoodsMain::getUpdateTime, LocalDateTime.now())
.set(TReceiveGoodsMain::getUpdateName, UserProvider.getUser().getUserName())
.eq(TReceiveGoodsMain::getId, param.getId())
.update();
}
}