src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
@@ -18,6 +18,8 @@ private Integer id; private String ids; private Long createUser; /** src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java
@@ -18,6 +18,8 @@ @Data public class CustomStorage { @TableField(exist = false) private String ids; private static final long serialVersionUID = 1L; src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -532,34 +532,21 @@ public IPage<ProcurementPageDtoCopy> listPageCopyByProduction(Page page, ProcurementPageDto procurementDto) { IPage<ProcurementPageDtoCopy> procurementPageDtoCopyIPage = procurementRecordMapper.listPageCopyByProduction(page, procurementDto); List<ProcurementPageDtoCopy> procurementPageDtoCopyList = procurementPageDtoCopyIPage.getRecords(); // 计算待入库数量 // 查询采购记录已入库数量 List<Integer> collect = procurementPageDtoCopyList.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList()); if(CollectionUtils.isEmpty( collect)){ return procurementPageDtoCopyIPage; } LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 2); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty( procurementRecords)){ return procurementPageDtoCopyIPage; } for (ProcurementPageDtoCopy dto : procurementPageDtoCopyList) { // 根据采购台账ID筛选对应的出库记录 List<ProcurementRecordOut> collect1 = procurementRecords.stream() .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId())) .collect(Collectors.toList()); // 如果没有相关的出库记录,跳过该条数据 if(CollectionUtils.isEmpty(collect1)){ for (ProcurementPageDtoCopy dto : procurementPageDtoCopyList) { List<Long> longs = listCopyIds(dto.getIds()); LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, longs); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 2); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty(procurementRecords)){ dto.setInboundNum0(dto.getInboundNum()); dto.setTotalInboundNum(BigDecimal.ZERO); continue; return procurementPageDtoCopyIPage; } // 计算已出库数量总和,并设置待出库数量 BigDecimal totalInboundNum = collect1.stream() BigDecimal totalInboundNum = procurementRecords.stream() .map(ProcurementRecordOut::getInboundNum) .reduce(BigDecimal.ZERO, BigDecimal::add); // 出库数量 = 总数量 - 待出库数量 @@ -577,36 +564,23 @@ @Override public IPage<CustomStorage> listPageCopyByCustom(Page page, CustomStorage customStorage) { IPage<CustomStorage> pageList = customStorageMapper.listPageCopyByCustom(page, customStorage); List<CustomStorage> procurementPageDtoCopyList = pageList.getRecords(); // 计算待入库数量 // 查询采购记录已入库数量 List<Integer> collect = procurementPageDtoCopyList.stream().map(CustomStorage::getId).collect(Collectors.toList()); if(CollectionUtils.isEmpty( collect)){ return pageList; } LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 3); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty( procurementRecords)){ return pageList; } for (CustomStorage dto : procurementPageDtoCopyList) { // 根据采购台账ID筛选对应的出库记录 List<ProcurementRecordOut> collect1 = procurementRecords.stream() .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId())) .collect(Collectors.toList()); // 如果没有相关的出库记录,跳过该条数据 if(CollectionUtils.isEmpty(collect1)){ List<Long> longs = listCopyIds(dto.getIds()); LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, longs); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 3); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty(procurementRecords)){ dto.setInboundNum0(dto.getInboundNum()); dto.setTotalInboundNum(BigDecimal.ZERO); continue; return pageList; } // 计算已出库数量总和,并设置待出库数量 BigDecimal totalInboundNum = collect1.stream() BigDecimal totalInboundNum = procurementRecords.stream() .map(ProcurementRecordOut::getInboundNum) .reduce(BigDecimal.ZERO, BigDecimal::add); // 出库数量 = 总数量 - 待出库数量 @@ -742,38 +716,32 @@ return procurementPageDtoIPage; } public List<Long> listCopyIds(String ids) { List<Long> idsSet = new ArrayList<>(); String[] split = ids.split(","); for (String s : split) { idsSet.add(Long.valueOf(s)); } return idsSet; } @Override public IPage<ProcurementPageDtoCopy> listPageCopy(Page page, ProcurementPageDto procurementDto) { IPage<ProcurementPageDtoCopy> procurementPageDtoCopyIPage = procurementRecordMapper.listPageCopy(page, procurementDto); List<ProcurementPageDtoCopy> procurementPageDtoCopyList = procurementPageDtoCopyIPage.getRecords(); // 计算待入库数量 // 查询采购记录已入库数量 List<Integer> collect = procurementPageDtoCopyList.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList()); if(CollectionUtils.isEmpty( collect)){ return procurementPageDtoCopyIPage; } LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType,1); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty( procurementRecords)){ return procurementPageDtoCopyIPage; } for (ProcurementPageDtoCopy dto : procurementPageDtoCopyList) { // 根据采购台账ID筛选对应的出库记录 List<ProcurementRecordOut> collect1 = procurementRecords.stream() .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId()) && ProcurementRecordOut.getType().equals(1)) .collect(Collectors.toList()); // 如果没有相关的出库记录,跳过该条数据 if(CollectionUtils.isEmpty(collect1)){ List<Long> longs = listCopyIds(dto.getIds()); LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, longs); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType,1); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty(procurementRecords)){ dto.setInboundNum0(dto.getInboundNum()); dto.setTotalInboundNum(BigDecimal.ZERO); continue; return procurementPageDtoCopyIPage; } // 计算已出库数量总和,并设置待出库数量 BigDecimal totalInboundNum = collect1.stream() BigDecimal totalInboundNum = procurementRecords.stream() .map(ProcurementRecordOut::getInboundNum) .reduce(BigDecimal.ZERO, BigDecimal::add); // 出库数量 = 总数量 - 待出库数量 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -482,7 +482,7 @@ public IPage<PurchaseLedgerDto> selectPurchaseLedgerListPage(IPage ipage, PurchaseLedgerDto purchaseLedger) { IPage<PurchaseLedgerDto> purchaseLedgerDtoIPage = purchaseLedgerMapper.selectPurchaseLedgerListPage(ipage, purchaseLedger); purchaseLedgerDtoIPage.getRecords().forEach(purchaseLedgerDto -> { List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>().eq(CommonFile::getCommonId, purchaseLedgerDto.getId()).eq(CommonFile::getType, FileNameType.PURCHASELEDGER.getValue())); List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>().eq(CommonFile::getCommonId, purchaseLedgerDto.getId()).eq(CommonFile::getType, FileNameType.PURCHASE.getValue())); purchaseLedgerDto.setSalesLedgerFiles(commonFiles); }); return purchaseLedgerDtoIPage; src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -392,7 +392,7 @@ List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductService.selectSalesLedgerProductList(salesLedgerProduct); purchaseLedgerDto.setProductData(salesLedgerProducts); List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>() .eq(CommonFile::getType, FileNameType.PURCHASELEDGER.getValue()) .eq(CommonFile::getType, FileNameType.PURCHASE.getValue()) .eq(CommonFile::getCommonId, id)); purchaseLedgerDto.setSalesLedgerFiles(commonFiles); return purchaseLedgerDto; src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
@@ -18,12 +18,17 @@ import com.ruoyi.sales.service.ReceiptPaymentService; import io.swagger.annotations.ApiModelProperty; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -160,6 +165,7 @@ return receiptPaymentService.receiptPaymentHistoryListPage(page,receiptPaymentDto); } private static final ZoneId DEFAULT_ZONE_ID = ZoneId.systemDefault(); /** * 导出回款流水列表 */ @@ -174,10 +180,12 @@ List<ReceiptPaymentRecordDto> receiptPaymentRecordDtos = new ArrayList<>(); salesLedgerIPage.getRecords().forEach(receiptPaymentRecordDto -> { ReceiptPaymentRecordDto receiptPaymentRecordDto1 = new ReceiptPaymentRecordDto(); BeanUtils.copyBeanProp(receiptPaymentRecordDto, receiptPaymentRecordDto1); BeanUtils.copyProperties(receiptPaymentRecordDto, receiptPaymentRecordDto1); receiptPaymentRecordDto1.setInvoiceDate(Date.from(receiptPaymentRecordDto.getCreateTime().atZone(DEFAULT_ZONE_ID).toInstant())); receiptPaymentRecordDto1.setReceiptPaymentAmountTotal(receiptPaymentRecordDto.getReceiptPaymentAmount()); receiptPaymentRecordDtos.add(receiptPaymentRecordDto1); }); util.exportExcel(response, receiptPaymentRecordDtos, "导出开票登记列表"); util.exportExcel(response, receiptPaymentRecordDtos, "导出回款流水列表"); } /** src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -206,15 +206,17 @@ List<Long> salesLedgerIds = iPage.getRecords().stream().map(SalesLedger::getId).collect(Collectors.toList()); List<InvoiceLedgerDto> invoiceLedgerDtoList = invoiceLedgerMapper.invoicedTotal(salesLedgerIds); if(CollectionUtils.isEmpty(invoiceLedgerDtoList)){ iPage.setTotal(iPage.getRecords().size()); return iPage; invoiceLedgerDtoList = new ArrayList<>(); } // 计算回款金额,待回款金额 List<InvoiceRegistrationProduct> invoiceRegistrationProducts = invoiceRegistrationProductMapper.selectList(new LambdaQueryWrapper<InvoiceRegistrationProduct>() .in(InvoiceRegistrationProduct::getSalesLedgerId, salesLedgerIds)); List<InvoiceLedger> invoiceLedgers = new ArrayList<>(); if(!CollectionUtils.isEmpty(invoiceRegistrationProducts)){ invoiceLedgers = invoiceLedgerMapper.selectList(new LambdaQueryWrapper<InvoiceLedger>() .in(InvoiceLedger::getInvoiceRegistrationProductId, invoiceRegistrationProducts.stream().map(InvoiceRegistrationProduct::getId).collect(Collectors.toList()))); } List<InvoiceLedger> invoiceLedgers = invoiceLedgerMapper.selectList(new LambdaQueryWrapper<InvoiceLedger>() .in(InvoiceLedger::getInvoiceRegistrationProductId, invoiceRegistrationProducts.stream().map(InvoiceRegistrationProduct::getId).collect(Collectors.toList()))); List<ReceiptPayment> receiptPayments = new ArrayList<>(); if(!CollectionUtils.isEmpty(invoiceLedgers)){ receiptPayments = receiptPaymentMapper.selectList(new LambdaQueryWrapper<ReceiptPayment>() src/main/java/com/ruoyi/sales/dto/ReceiptPaymentRecordDto.java
@@ -55,7 +55,7 @@ @ApiModelProperty(value = "来款日期") @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @Excel(name = "来款日期",width = 30,dateFormat = "yyyy-MM-dd") @Excel(name = "回款日期",width = 30,dateFormat = "yyyy-MM-dd") private LocalDate receiptPaymentDate; } src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationProduct.java
@@ -1,6 +1,7 @@ package com.ruoyi.sales.pojo; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -67,6 +68,7 @@ @ApiModelProperty(value = "创建时间") @TableField(fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd") private LocalDateTime createTime; @ApiModelProperty(value = "创建用户") src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -22,6 +22,7 @@ import java.lang.reflect.Field; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -129,6 +130,7 @@ int result; Long salesLedgerId = salesLedgerProduct.getSalesLedgerId(); if (salesLedgerProduct.getId() == null) { salesLedgerProduct.setRegisterDate(LocalDateTime.now()); result = salesLedgerProductMapper.insert(salesLedgerProduct); } else { salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity()); src/main/resources/mapper/procurementrecord/CustomStorageMapper.xml
@@ -4,6 +4,7 @@ <select id="listPageCopyByCustom" resultType="com.ruoyi.procurementrecord.pojo.CustomStorage"> select t1.*, group_concat(t1.id) as ids, sum(t1.inbound_num) as inboundNum, sum(t1.inbound_num) as inboundNum0, sum(t1.tax_inclusive_total_price) as taxInclusiveTotalPrice, src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -126,6 +126,7 @@ t3.purchase_contract_number, t2.product_category, t1.id, GROUP_CONCAT(t1.id) as ids, t1.sales_ledger_product_id, t1.create_user, t2.specification_model, @@ -288,6 +289,7 @@ t3.customer_name, t2.product_category, t1.id, group_concat(t1.id) as ids, t1.sales_ledger_product_id, t1.create_user, t2.specification_model, src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml
@@ -116,10 +116,7 @@ AND T3.invoice_date <= date_format(#{invoiceRegistrationProductDto.invoiceDateEnd}, '%Y-%m-%d') </if> <if test="invoiceRegistrationProductDto.createTimeStart != null "> AND T1.create_time >= date_format(#{invoiceRegistrationProductDto.createTimeStart}, '%Y-%m-%d %H:%i:%s') </if> <if test="invoiceRegistrationProductDto.createTimeEnd != null "> AND T1.create_time <= date_format(#{invoiceRegistrationProductDto.createTimeStart}, '%Y-%m-%d %H:%i:%s')+interval 1 day AND T1.create_time like CONCAT(#{invoiceRegistrationProductDto.createTimeStart}, '%') </if> </where> ORDER BY T1.create_time DESC