| | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.lang.Assert; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.invoice.ErpPurchaseInvoicePageReqVO; |
| | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Collection; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getSumValue; |
| | |
| | | validateRelationDataExists(createReqVO); |
| | | // 1.2 校验可开票金额超过上限 |
| | | validatePurchaseInvoicePriceExceedsLimit(createReqVO); |
| | | // 1.3 生成来票编号 |
| | | String no = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_INVOICE_NO_PREFIX); |
| | | // 1.3 确定来票编号(前端填写则用自定义单号,留空则自动生成),并校验唯一性 |
| | | String customNo = StrUtil.trim(createReqVO.getNo()); |
| | | String no = StrUtil.isNotBlank(customNo) ? customNo |
| | | : noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_INVOICE_NO_PREFIX); |
| | | if (invoiceMapper.selectByNo(no) != null) { |
| | | throw exception(PURCHASE_INVOICE_NO_EXISTS); |
| | | } |
| | |
| | | return invoiceMapper.selectListBySupplierId(supplierId); |
| | | } |
| | | |
| | | @Override |
| | | public Map<Long, BigDecimal> getPurchaseInvoicePriceSumMapByOrderIds(Collection<Long> orderIds) { |
| | | if (CollUtil.isEmpty(orderIds)) { |
| | | return Collections.emptyMap(); |
| | | } |
| | | List<ErpPurchaseInvoiceDO> invoices = invoiceMapper.selectListByOrderIds(orderIds); |
| | | return invoices.stream().collect(Collectors.groupingBy(ErpPurchaseInvoiceDO::getPurchaseOrderId, |
| | | Collectors.mapping(ErpPurchaseInvoiceDO::getPrice, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)))); |
| | | } |
| | | |
| | | } |