maven
7 小时以前 1ab612fa454477bfaec03b0fe9133f8881ce29cc
src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
@@ -4,6 +4,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.pojo.AccountIncome;
import com.ruoyi.account.service.AccountIncomeService;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.sales.dto.CustomerInteractionDto;
@@ -46,6 +48,9 @@
    @Autowired
    private InvoiceLedgerMapper invoiceLedgerMapper;
    @Autowired
    private AccountIncomeService accountIncomeService;
    /**
     * 回款登记新增
     * @param receiptPaymentList
@@ -59,7 +64,6 @@
            if (!ObjectUtils.isEmpty(receiptPayment.getId())){
                receiptPayment = this.getById(receiptPayment.getId());
            }
//        InvoiceLedger invoiceLedger = invoiceLedgerMapper.selectById(byId.getInvoiceLedgerId());
            SalesLedger salesLedger = salesLedgerMapper.selectById(receiptPayment.getSalesLedgerId());
            if(null==salesLedger) throw new RuntimeException("未找到销售单");
            // 已回款金额
@@ -72,11 +76,35 @@
                salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().add(receiptPayment.getReceiptPaymentAmount()));
                salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal()));
                receiptPaymentMapper.insert(receiptPayment);
                // 增加财务收入记录
                AccountIncome accountIncome = new AccountIncome();
                accountIncome.setIncomeDate(salesLedger.getEntryDate());
                accountIncome.setIncomeType("0");
                accountIncome.setCustomerName(salesLedger.getCustomerName());
                accountIncome.setIncomeMoney(salesLedger.getContractAmount());
                accountIncome.setIncomeMethod("0");
                accountIncome.setInputTime(new Date());
                accountIncome.setInputUser(salesLedger.getEntryPerson());
                accountIncome.setIncomeDescribed("回款收入");
                accountIncome.setBusinessId(Long.parseLong(receiptPayment.getId().toString()));
                accountIncome.setBusinessType(1);
                accountIncomeService.save(accountIncome);
            }else {
                BigDecimal subtract = receiptPayment.getReceiptPaymentAmount().subtract(byId.getReceiptPaymentAmount());
                salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().add(subtract));
                salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal()));
                receiptPayment.setReceiptPaymentAmount(byId.getReceiptPaymentAmount());
                receiptPayment.setReceiptPaymentType(byId.getReceiptPaymentType());
                receiptPaymentMapper.updateById(receiptPayment);
                // 修改财务收入记录
                LambdaQueryWrapper<AccountIncome> accountIncomeLambdaQueryWrapper = new LambdaQueryWrapper<>();
                accountIncomeLambdaQueryWrapper.eq(AccountIncome::getBusinessId, receiptPayment.getId())
                        .eq(AccountIncome::getBusinessType, 1);
                AccountIncome accountIncome = accountIncomeService.getOne(accountIncomeLambdaQueryWrapper);
                if(null!=accountIncome){
                    accountIncome.setIncomeMoney(receiptPayment.getReceiptPaymentAmount());
                    accountIncomeService.updateById(accountIncome);
                }
            }
            salesLedgerProductMapper.updateById(salesLedgerProduct);
        }
@@ -90,6 +118,33 @@
     */
    @Override
    public int receiptPaymentUpdate(ReceiptPayment receiptPayment) {
        ReceiptPayment byId = receiptPayment;
        if (!ObjectUtils.isEmpty(receiptPayment.getId())){
            receiptPayment = this.getById(receiptPayment.getId());
        }
        SalesLedger salesLedger = salesLedgerMapper.selectById(receiptPayment.getSalesLedgerId());
        if(null==salesLedger) throw new RuntimeException("未找到销售单");
        // 已回款金额
        SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(receiptPayment.getSalesLedgerProductId());
        if(null==salesLedgerProduct) throw new RuntimeException("未找到销售单产品");
        if (salesLedgerProduct.getPendingInvoiceTotal().compareTo(receiptPayment.getReceiptPaymentAmount())<0){
            throw new RuntimeException("本次回款金额不能大于待回款金额");
        }
        BigDecimal subtract = receiptPayment.getReceiptPaymentAmount().subtract(byId.getReceiptPaymentAmount());
        salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().add(subtract));
        salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal()));
        // 修改财务收入记录
        LambdaQueryWrapper<AccountIncome> accountIncomeLambdaQueryWrapper = new LambdaQueryWrapper<>();
        accountIncomeLambdaQueryWrapper.eq(AccountIncome::getBusinessId, receiptPayment.getId())
                .eq(AccountIncome::getBusinessType, 1);
        AccountIncome accountIncome = accountIncomeService.getOne(accountIncomeLambdaQueryWrapper);
        if(null!=accountIncome){
            accountIncome.setIncomeMoney(receiptPayment.getReceiptPaymentAmount());
            accountIncomeService.updateById(accountIncome);
        }
        salesLedgerProductMapper.updateById(salesLedgerProduct);
        receiptPayment.setReceiptPaymentAmount(byId.getReceiptPaymentAmount());
        receiptPayment.setReceiptPaymentType(byId.getReceiptPaymentType());
        return receiptPaymentMapper.updateById(receiptPayment);
    }
@@ -102,6 +157,20 @@
    public int receiptPaymentDel(List<Integer> ids) {
        LambdaQueryWrapper<ReceiptPayment> delQuery = new LambdaQueryWrapper<>();
        delQuery.in(ReceiptPayment::getId, ids);
        List<ReceiptPayment> receiptPayments = receiptPaymentMapper.selectList(delQuery);
        if(CollectionUtils.isEmpty(receiptPayments)) throw new RuntimeException("未找到回款登记");
        // 重新计算销售产品回款金额
        for (ReceiptPayment receiptPayment : receiptPayments) {
            SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(receiptPayment.getSalesLedgerProductId());
            salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().subtract(receiptPayment.getReceiptPaymentAmount()));
            salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal()));
            salesLedgerProductMapper.updateById(salesLedgerProduct);
        }
        // 删除财务收入记录
        LambdaQueryWrapper<AccountIncome> accountIncomeLambdaQueryWrapper = new LambdaQueryWrapper<>();
        accountIncomeLambdaQueryWrapper.in(AccountIncome::getBusinessId, ids)
                .eq(AccountIncome::getBusinessType, 1);
        accountIncomeService.remove(accountIncomeLambdaQueryWrapper);
        return receiptPaymentMapper.delete(delQuery);
    }