maven
8 小时以前 5a5df7b6529a62233bd2541a9abbb7bd588e9a4d
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -10,15 +10,15 @@
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.production.mapper.SalesLedgerWorkMapper;
import com.ruoyi.production.pojo.SalesLedgerWork;
import com.ruoyi.sales.dto.InvoiceLedgerDto;
import com.ruoyi.sales.dto.SalesLedgerDto;
import com.ruoyi.sales.mapper.InvoiceLedgerMapper;
import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
import com.ruoyi.sales.mapper.ReceiptPaymentMapper;
import com.ruoyi.sales.pojo.InvoiceLedger;
import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
import com.ruoyi.sales.pojo.ReceiptPayment;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.pojo.*;
import com.ruoyi.sales.service.ICommonFileService;
import com.ruoyi.sales.service.ISalesLedgerService;
import lombok.AllArgsConstructor;
@@ -28,9 +28,7 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -56,6 +54,12 @@
    @Autowired
    private ReceiptPaymentMapper receiptPaymentMapper;
    @Autowired
    private SalesLedgerProductMapper salesLedgerProductMapper;
    @Autowired
    private SalesLedgerWorkMapper salesLedgerWorkMapper;
    /**
     * 查询销售台账列表
@@ -102,6 +106,20 @@
        List<SalesLedger> list = salesLedgerService.selectSalesLedgerList(salesLedgerDto);
        ExcelUtil<SalesLedger> util = new ExcelUtil<SalesLedger>(SalesLedger.class);
        util.exportExcel(response, list, "销售台账数据");
    }
    /**
     * 导出开票登记列表
     */
    @Log(title = "导出开票登记列表", businessType = BusinessType.EXPORT)
    @PostMapping("/exportOne")
    public void exportOne(HttpServletResponse response, SalesLedgerDto salesLedgerDto) {
        Page page = new Page();
        page.setCurrent(-1);
        page.setSize(-1);
        IPage<SalesLedger> salesLedgerIPage = listPage(page, salesLedgerDto);
        ExcelUtil<SalesLedger> util = new ExcelUtil<SalesLedger>(SalesLedger.class);
        util.exportExcel(response, salesLedgerIPage == null ? new ArrayList<>() : salesLedgerIPage.getRecords(), "导出开票登记列表");
    }
    /**
@@ -190,20 +208,54 @@
        }
        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;
        }
        // 计算回款金额,待回款金额
        List<InvoiceRegistrationProduct> invoiceRegistrationProducts = invoiceRegistrationProductMapper.selectList(new LambdaQueryWrapper<InvoiceRegistrationProduct>()
                .in(InvoiceRegistrationProduct::getSalesLedgerId, salesLedgerIds));
        List<InvoiceLedger> invoiceLedgers = invoiceLedgerMapper.selectList(new LambdaQueryWrapper<InvoiceLedger>()
                .in(InvoiceLedger::getInvoiceRegistrationProductId, invoiceRegistrationProducts.stream().map(InvoiceRegistrationProduct::getId).collect(Collectors.toList())));
        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<ReceiptPayment> receiptPayments = new ArrayList<>();
        if(!CollectionUtils.isEmpty(invoiceLedgers)){
            receiptPayments = receiptPaymentMapper.selectList(new LambdaQueryWrapper<ReceiptPayment>()
                    .in(ReceiptPayment::getInvoiceLedgerId, invoiceLedgers.stream().map(InvoiceLedger::getId).collect(Collectors.toList())));
        }
        // 获取销售产品数量
        List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper
                .selectList(new LambdaQueryWrapper<SalesLedgerProduct>()
                        .eq(SalesLedgerProduct::getType, 1)
                        .in(SalesLedgerProduct::getSalesLedgerId, salesLedgerIds));
        Map<Long, BigDecimal> salesLedgerProductCountMap = new HashMap<>();
        if (!CollectionUtils.isEmpty(salesLedgerProducts)) {
            salesLedgerProductCountMap = salesLedgerProducts
                    .stream()
                    .filter(Objects::nonNull)
                    .collect(Collectors.groupingBy(
                            SalesLedgerProduct::getSalesLedgerId,
                            Collectors.reducing(
                                    BigDecimal.ZERO,
                                    SalesLedgerProduct::getQuantity,
                                    BigDecimal::add
                            )
                    ));
        }
        // 获取销售产品生产报工数量
        List<SalesLedgerWork> salesLedgerWorks = salesLedgerWorkMapper.selectList(new LambdaQueryWrapper<SalesLedgerWork>()
                .in(SalesLedgerWork::getSalesLedgerId, salesLedgerIds));
        Map<Long, BigDecimal> salesLedgerWorkCountMap = new HashMap<>();
        if (!CollectionUtils.isEmpty(salesLedgerWorks)) {
            salesLedgerWorkCountMap = salesLedgerWorks
                    .stream()
                    .filter(Objects::nonNull)
                    .collect(Collectors.groupingBy(
                            SalesLedgerWork::getSalesLedgerId,
                            Collectors.reducing(
                                    BigDecimal.ZERO,
                                    SalesLedgerWork::getFinishedNum,
                                    BigDecimal::add
                            )
                    ));
        }
        for (SalesLedger salesLedger : iPage.getRecords()) {
            boolean existFlag = false;
@@ -243,13 +295,16 @@
                salesLedger.setNoInvoiceAmountTotal(salesLedger.getContractAmount());
            }
            salesLedger.setInvoiceTotal(invoiceTotal);
            // 判断是否是生产完成
            salesLedger.setProductionStatus(salesLedgerProductCountMap.get(salesLedger.getId()) == null ? "未开始" : salesLedgerProductCountMap.get(salesLedger.getId()).compareTo(salesLedgerWorkCountMap.get(salesLedger.getId())) > 0 ? "生产中" : "已完成");
        }
        if (ObjectUtils.isNotEmpty(salesLedgerDto.getStatus())) {
            if (salesLedgerDto.getStatus()) {
                iPage.getRecords().removeIf(salesLedger -> Objects.equals(salesLedger.getNoInvoiceAmountTotal(), new BigDecimal("0.00")));
                iPage.setTotal(iPage.getRecords().size());
            }
        }
        iPage.setTotal(iPage.getRecords().size());
        return iPage;
    }
}