From 97857de7bc536e459f8d5de78494c03cebc3171e Mon Sep 17 00:00:00 2001 From: liyong <18434998025@163.com> Date: 星期四, 19 六月 2025 11:37:12 +0800 Subject: [PATCH] 2025-06-19修改 --- src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java | 92 +++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 86 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java index 2d1bdf7..f8bbc22 100644 --- a/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java +++ b/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java @@ -5,6 +5,7 @@ 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.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.vo.FileVo; import com.ruoyi.sales.dto.InvoiceLedgerDto; @@ -92,7 +93,7 @@ BigDecimal currentNoInvoiceNum = invoiceRegistrationProduct.getNoInvoiceNum().add(invoiceRegistrationProduct.getInvoiceNum()).subtract(invoiceNum); BigDecimal currentNoInvoiceAmount = invoiceRegistrationProduct.getNoInvoiceAmount().add(invoiceRegistrationProduct.getInvoiceAmount()).subtract(productDto.getInvoiceTotal()); invoiceRegistrationProduct.setInvoiceNum(invoiceNum); - invoiceRegistrationProduct.setInvoiceAmount(productDto.getInvoiceAmount()); + invoiceRegistrationProduct.setInvoiceAmount(productDto.getInvoiceTotal()); invoiceRegistrationProduct.setNoInvoiceNum(currentNoInvoiceNum); invoiceRegistrationProduct.setNoInvoiceAmount(currentNoInvoiceAmount); invoiceRegistrationProductMapper.updateById(invoiceRegistrationProduct); @@ -301,7 +302,11 @@ */ @Override public IPage<InvoiceRegistrationProductDto> registrationProductPage(Page page, InvoiceRegistrationProductDto registrationProductDto) { - return invoiceRegistrationProductMapper.invoiceRegistrationProductPage(page,registrationProductDto); + IPage<InvoiceRegistrationProductDto> invoiceRegistrationProductDtoIPage = invoiceRegistrationProductMapper.invoiceRegistrationProductPage(page, registrationProductDto); + if (registrationProductDto.getStatus()) { + invoiceRegistrationProductDtoIPage.getRecords().removeIf(invoiceRegistrationProduct -> StringUtils.isEmpty(invoiceRegistrationProduct.getInvoiceNo())); + } + return invoiceRegistrationProductDtoIPage; } /** @@ -341,13 +346,39 @@ if(!CollectionUtils.isEmpty(receiptPaymentList)){ throw new RuntimeException("璇峰厛鍒犻櫎鍥炴璁板綍"); } - // 鍒ゆ柇鏄惁鏈夊紑绁ㄥ彴璐� + // 鍒ゆ柇鏄惁鏈夊紑绁ㄧ櫥璁拌褰� InvoiceRegistrationProduct invoiceRegistrationProduct = invoiceRegistrationProductMapper.selectById(invoiceRegistrationProductId); if(ObjectUtils.isEmpty(invoiceRegistrationProduct)){ - throw new RuntimeException("寮�绁ㄥ彴璐︽煡鎵惧け璐�"); + throw new RuntimeException("寮�绁ㄧ櫥璁拌褰曟煡鎵惧け璐�"); } // 鍒ゆ柇璇ュ紑绁ㄥ彴璐︽槸鍚︽湭褰撴湀锛屽鏋滀负褰撴湀鐩存帴鍒犻櫎鍚﹀垯鏂板涓�鏉$浉鍙嶈礋鏁版暟鎹� + QueryWrapper<InvoiceLedger> ledgerQueryWrapper = new QueryWrapper<>(); + ledgerQueryWrapper.eq("invoice_registration_product_id", invoiceRegistrationProductId); + InvoiceLedger invoiceLedger = invoiceLedgerMapper.selectOne(ledgerQueryWrapper); + if(ObjectUtils.isEmpty(invoiceLedger)){ + throw new RuntimeException("寮�绁ㄥ彴璐︽煡鎵惧け璐�"); + } + if( invoiceLedger.getInvoiceDate() == null){ + dealCurrentMonthDel(invoiceRegistrationProductId,invoiceRegistrationProduct); + return; + } + // 鑾峰彇褰撳墠鏃ユ湡 + LocalDate today = LocalDate.now(); + // 浣跨敤YearMonth姣旇緝骞翠唤鍜屾湀浠芥槸鍚︾浉鍚� + boolean equalsFlag = YearMonth.from(invoiceLedger.getInvoiceDate()).equals(YearMonth.from(today)); + if(equalsFlag){ + dealCurrentMonthDel(invoiceRegistrationProductId,invoiceRegistrationProduct); + }else { + dealOtherMonthDel(invoiceRegistrationProduct,invoiceLedger); + } + } + /** + * 澶勭悊褰撴湀寮�绁ㄥ彴璐﹀垹闄� + * @param invoiceRegistrationProductId + * @param invoiceRegistrationProduct + */ + private void dealCurrentMonthDel(Integer invoiceRegistrationProductId,InvoiceRegistrationProduct invoiceRegistrationProduct){ // 鍒犻櫎寮�绁ㄥ彴璐� QueryWrapper<InvoiceLedger> delMapper = new QueryWrapper<>(); delMapper.eq("invoice_registration_product_id", invoiceRegistrationProductId); @@ -358,6 +389,7 @@ queryWrapper.eq("sales_ledger_product_id", invoiceRegistrationProduct.getSalesLedgerProductId()); queryWrapper.orderByAsc("create_time"); List<InvoiceRegistrationProduct> invoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(queryWrapper); +// InvoiceRegistrationProduct invoiceRegistrationProduct = invoiceRegistrationProductMapper.selectById(invoiceRegistrationProductId); int index = -1; for (int i = 0; i < invoiceRegistrationProductList.size(); i++) { InvoiceRegistrationProduct currentInvoiceRegProduct = invoiceRegistrationProductList.get(i); @@ -389,9 +421,57 @@ salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity()); salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice()); }else { - salesLedgerProduct.setNoInvoiceNum(newInvoiceRegistrationProductList.get(newInvoiceRegistrationProductList.size()-1).getNoInvoiceNum()); - salesLedgerProduct.setNoInvoiceAmount(newInvoiceRegistrationProductList.get(newInvoiceRegistrationProductList.size()-1).getNoInvoiceAmount()); + salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getNoInvoiceNum().add(invoiceRegistrationProduct.getInvoiceNum())); + salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getNoInvoiceAmount().add(invoiceRegistrationProduct.getInvoiceAmount())); } salesLedgerProductMapper.updateById(salesLedgerProduct); } + + /** + * 澶勭悊鍏朵粬鏈堜唤寮�绁ㄥ彴璐﹀垹闄� + * @param invoiceRegistrationProduct + * @param invoiceLedger + */ + private void dealOtherMonthDel(InvoiceRegistrationProduct invoiceRegistrationProduct,InvoiceLedger invoiceLedger ){ + InvoiceRegistrationProduct copyRegProduct = new InvoiceRegistrationProduct(); + BeanUtils.copyProperties(invoiceRegistrationProduct, copyRegProduct); + BigDecimal invoiceNum = copyRegProduct.getInvoiceNum().negate(); + BigDecimal invoiceAmount = copyRegProduct.getInvoiceAmount().negate(); + // invoice_registration_product + // 鍒犻櫎寮�绁ㄧ櫥璁板苟鍥炴粴 + QueryWrapper<InvoiceRegistrationProduct> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("sales_ledger_id", invoiceRegistrationProduct.getSalesLedgerId()); + queryWrapper.eq("sales_ledger_product_id", invoiceRegistrationProduct.getSalesLedgerProductId()); + queryWrapper.orderByAsc("create_time"); + List<InvoiceRegistrationProduct> invoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(queryWrapper); + InvoiceRegistrationProduct lastInvoiceRegistrationProduct = invoiceRegistrationProductList.get(invoiceRegistrationProductList.size() - 1); + BigDecimal noInvoiceNum = lastInvoiceRegistrationProduct.getNoInvoiceNum().subtract(invoiceNum); + BigDecimal noInvoiceAmount = lastInvoiceRegistrationProduct.getNoInvoiceAmount().subtract(invoiceAmount); + copyRegProduct.setInvoiceNum(invoiceNum); + copyRegProduct.setInvoiceAmount(invoiceAmount); + copyRegProduct.setNoInvoiceNum(noInvoiceNum); + copyRegProduct.setNoInvoiceAmount(noInvoiceAmount); + copyRegProduct.setId(null); + invoiceRegistrationProductMapper.insert(copyRegProduct); + // 澶嶅埗寮�绁ㄥ彴璐� + InvoiceLedger invoiceLedgerCopy = new InvoiceLedger(); + BeanUtils.copyProperties(invoiceLedger, invoiceLedgerCopy); + invoiceLedgerCopy.setInvoiceRegistrationProductId(copyRegProduct.getId()); + BigDecimal invoiceTotal = invoiceLedgerCopy.getInvoiceTotal().negate(); + invoiceLedgerCopy.setInvoiceTotal(invoiceTotal); + invoiceLedgerCopy.setId(null); + invoiceLedgerCopy.setInvoiceDate(LocalDate.now()); + invoiceLedgerMapper.insert(invoiceLedgerCopy); + // 鏇存柊sales_leger_product + QueryWrapper<SalesLedgerProduct> salesLedgerProductQueryWrapper = new QueryWrapper<>(); + salesLedgerProductQueryWrapper.eq("id", invoiceRegistrationProduct.getSalesLedgerProductId()); + SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectOne(salesLedgerProductQueryWrapper); + salesLedgerProduct.setNoInvoiceNum(noInvoiceNum); + salesLedgerProduct.setNoInvoiceAmount(noInvoiceAmount); + BigDecimal newInvoiceNum = salesLedgerProduct.getInvoiceNum().add(invoiceNum); + BigDecimal newInvocieAmount = salesLedgerProduct.getInvoiceAmount().add(invoiceAmount); + salesLedgerProduct.setInvoiceNum(newInvoiceNum); + salesLedgerProduct.setInvoiceAmount(newInvocieAmount); + salesLedgerProductMapper.updateById(salesLedgerProduct); + } } -- Gitblit v1.9.3