| | |
| | | package com.ruoyi.purchase.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.mapper.SupplierManageMapper; |
| | | import com.ruoyi.basic.pojo.SupplierManage; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.framework.security.LoginUser; |
| | | import com.ruoyi.purchase.dto.PaymentLedgerDto; |
| | | import com.ruoyi.purchase.dto.PaymentRegistrationDto; |
| | | import com.ruoyi.purchase.mapper.InvoicePurchaseMapper; |
| | | import com.ruoyi.purchase.mapper.PaymentRegistrationMapper; |
| | |
| | | import com.ruoyi.purchase.pojo.PurchaseLedger; |
| | | import com.ruoyi.purchase.service.IPaymentRegistrationService; |
| | | import com.ruoyi.sales.mapper.SalesLedgerMapper; |
| | | import com.ruoyi.sales.mapper.SalesLedgerProductMapper; |
| | | import com.ruoyi.sales.pojo.SalesLedger; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 付款登记Service业务层处理 |
| | |
| | | |
| | | @Autowired |
| | | private SupplierManageMapper supplierManageMapper; |
| | | |
| | | @Autowired |
| | | private SalesLedgerProductMapper salesLedgerProductMapper; |
| | | |
| | | /** |
| | | * 查询付款登记 |
| | |
| | | } |
| | | return paymentRegistrationDto; |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> selectPaymentLedgerList(PaymentLedgerDto paymentLedgerDto) { |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | LambdaQueryWrapper<SupplierManage> queryWrapper = new LambdaQueryWrapper<>(); |
| | | Optional.ofNullable(paymentLedgerDto) |
| | | .ifPresent(dto -> { |
| | | if (StringUtils.hasText(dto.getSupplierName())) { |
| | | queryWrapper.like(SupplierManage::getSupplierName, dto.getSupplierName()); |
| | | } |
| | | }); |
| | | |
| | | List<SupplierManage> supplierManages = supplierManageMapper.selectList(queryWrapper); |
| | | |
| | | for (SupplierManage supplierManage : supplierManages) { |
| | | Map<String, Object> res = new HashMap<>(); |
| | | res.put("supplierName", supplierManage.getSupplierName()); |
| | | |
| | | // 应付金额 |
| | | BigDecimal payableAmount = BigDecimal.ZERO; |
| | | List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(new QueryWrapper<SalesLedger>().eq("customer_id", supplierManage.getId())); |
| | | if (salesLedgers != null && salesLedgers.size() > 0) { |
| | | List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new QueryWrapper<SalesLedgerProduct>() |
| | | .in("sales_ledger_id", salesLedgers.stream().map(SalesLedger::getId).collect(Collectors.toList()))); |
| | | // 应付金额 |
| | | payableAmount = salesLedgerProducts.stream().map(SalesLedgerProduct::getTaxInclusiveTotalPrice).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | |
| | | } |
| | | |
| | | // 开票金额 |
| | | BigDecimal invoiceAmount = salesLedgers.stream().map(SalesLedger::getContractAmount).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | |
| | | // 付款金额 |
| | | List<PaymentRegistration> paymentRegistrations = paymentRegistrationMapper.selectList(new QueryWrapper<PaymentRegistration>() |
| | | .eq("supplier_id", supplierManage.getId())); |
| | | |
| | | BigDecimal paymentAmount = BigDecimal.ZERO; |
| | | if (paymentRegistrations != null && paymentRegistrations.size() > 0) { |
| | | paymentAmount = paymentRegistrations.stream().map(PaymentRegistration::getCurrentPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | } |
| | | |
| | | res.put("invoiceAmount", invoiceAmount); |
| | | res.put("payableAmount", payableAmount); |
| | | res.put("paymentAmount", paymentAmount); |
| | | |
| | | // 详情 |
| | | List<Map<String, Object>> details = new ArrayList<>(); |
| | | for (PaymentRegistration paymentRegistration : paymentRegistrations) { |
| | | Map<String, Object> detail = new HashMap<>(); |
| | | detail.put("voteCount", 1); // 票数,未知数据源,暂时用1 |
| | | detail.put("paymentAmount", paymentRegistration.getCurrentPaymentAmount()); // 付款金额 |
| | | InvoicePurchase invoicePurchase = invoicePurchaseMapper.selectById(paymentRegistration.getInvoicePurchaseId()); |
| | | detail.put("payableAmount", invoicePurchase.getInvoiceAmount()); // 应付金额 |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | String formattedDate = sdf.format(paymentRegistration.getPaymentDate()); |
| | | detail.put("createTime", formattedDate); // 发生时间 |
| | | details.add(detail); |
| | | } |
| | | |
| | | res.put("details", paymentRegistrations); |
| | | |
| | | result.add(res); |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | } |