From 487b30b77565d9b12f203a1234a93b80a8c59177 Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期二, 20 五月 2025 13:58:00 +0800 Subject: [PATCH] 回款台账 --- src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java | 129 +++++++++++++++++++++++++++++++++++++++--- 1 files changed, 119 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java index 012792a..baaeee9 100644 --- a/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java +++ b/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java @@ -1,22 +1,35 @@ package com.ruoyi.sales.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.basic.excel.SupplierManageExcelDto; +import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.sales.dto.InvoiceRegistrationDto; import com.ruoyi.sales.dto.InvoiceRegistrationProductDto; +import com.ruoyi.sales.excel.InvoiceRegisAndProductExcelDto; import com.ruoyi.sales.mapper.InvoiceRegistrationMapper; import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper; +import com.ruoyi.sales.mapper.InvoiceRegistrationProductRecordMapper; +import com.ruoyi.sales.mapper.InvoiceRegistrationRecordMapper; import com.ruoyi.sales.pojo.InvoiceRegistration; import com.ruoyi.sales.pojo.InvoiceRegistrationProduct; +import com.ruoyi.sales.pojo.InvoiceRegistrationProductRecord; +import com.ruoyi.sales.pojo.InvoiceRegistrationRecord; import com.ruoyi.sales.service.InvoiceRegistrationService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; + +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; import java.util.List; +import java.util.stream.Collectors; @Service public class InvoiceRegistrationServiceImpl extends ServiceImpl<InvoiceRegistrationMapper, InvoiceRegistration> implements InvoiceRegistrationService { @@ -27,6 +40,12 @@ @Autowired private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper; + @Autowired + private InvoiceRegistrationRecordMapper invoiceRegistrationRecordMapper; + + @Autowired + private InvoiceRegistrationProductRecordMapper invoiceRegistrationProductRecordMapper; + /** * 寮�绁ㄧ櫥璁版柊澧� @@ -35,19 +54,72 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public void invoiceRegistrationAdd(InvoiceRegistrationDto invoiceRegistrationDto) { - InvoiceRegistration invoiceRegistration = new InvoiceRegistration(); - BeanUtils.copyProperties(invoiceRegistrationDto, invoiceRegistration); - // 鏂板寮�绁ㄧ櫥璁� - invoiceRegistrationMapper.insert(invoiceRegistration); + public void invoiceRegistrationSaveOrUpdate(InvoiceRegistrationDto invoiceRegistrationDto) { List<InvoiceRegistrationProductDto> productDtoList = invoiceRegistrationDto.getProductDtoList(); - // 鏂板寮�绁ㄤ骇鍝佺櫥璁� + Integer salesLedgerId = invoiceRegistrationDto.getSalesLedgerId(); + if (null == salesLedgerId){ + throw new RuntimeException("鏈叧鑱旈攢鍞悎鍚�"); + } + QueryWrapper<InvoiceRegistration> inRegWrapper = new QueryWrapper<>(); + inRegWrapper.eq("sales_ledger_id", salesLedgerId); + InvoiceRegistration invoiceRegistration = invoiceRegistrationMapper.selectOne(inRegWrapper); + Integer invoiceRegistrationId = null; + // 鍒ゆ柇鏄惁宸茬粡鍋氳繃鐧昏锛屽鏋滄湁鍚堝苟锛屽鏋滄病鏈夋柊澧� + if(ObjectUtils.isEmpty(invoiceRegistration)){ + InvoiceRegistration insertInvocieReg = new InvoiceRegistration(); + BeanUtils.copyProperties(invoiceRegistrationDto, insertInvocieReg); + invoiceRegistrationMapper.insert(insertInvocieReg); + invoiceRegistrationId = insertInvocieReg.getId(); + }else { + invoiceRegistrationId = invoiceRegistration.getId(); + } + // 鏌ヨ浜у搧鏄惁宸茬粡鐧昏 + if(CollectionUtils.isNotEmpty(productDtoList)){ + QueryWrapper<InvoiceRegistrationProduct> inRegProductWrapper = new QueryWrapper<>(); + inRegProductWrapper.eq("invoice_registration_id", invoiceRegistrationId); + List<InvoiceRegistrationProduct> invoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(inRegProductWrapper); + if(CollectionUtils.isNotEmpty(invoiceRegistrationProductList)){ + // 鎵归噺鏇存柊 + for (InvoiceRegistrationProduct invoiceRegistrationProduct : invoiceRegistrationProductList) { + for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) { + if( null != invoiceRegistrationProductDto.getId() && null != invoiceRegistrationProduct.getSalesLedgerProductId() + && invoiceRegistrationProductDto.getId() == invoiceRegistrationProduct.getSalesLedgerProductId().longValue() ){ + // 璁$畻宸插紑绁ㄦ暟 + invoiceRegistrationProduct.setInvoiceNum(invoiceRegistrationProduct.getInvoiceNum() + invoiceRegistrationProductDto.getInvoiceNum()); + // 璁$畻宸插紑绁ㄩ噾棰� + invoiceRegistrationProduct.setInvoiceAmount(invoiceRegistrationProduct.getInvoiceAmount().add(invoiceRegistrationProductDto.getInvoiceAmount())); +// // 璁$畻鏈紑绁ㄦ暟 + invoiceRegistrationProduct.setNoInvoiceNum(invoiceRegistrationProductDto.getNoInvoiceNum()); +// // 璁$畻鏈紑绁ㄩ噾棰� 鍚◣鎬讳环-寮�绁ㄩ噾棰� + invoiceRegistrationProduct.setNoInvoiceAmount(invoiceRegistrationProductDto.getNoInvoiceAmount()); + invoiceRegistrationProductMapper.updateById(invoiceRegistrationProduct); + } + } + } + }else { + // 鎵归噺鎻掑叆 + for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) { + InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct(); + BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct); + invoiceRegistrationProduct.setInvoiceRegistrationId(invoiceRegistrationId); + invoiceRegistrationProduct.setSalesLedgerProductId(invoiceRegistrationProductDto.getId()); + invoiceRegistrationProduct.setId(null); + invoiceRegistrationProductMapper.insert(invoiceRegistrationProduct); + } + } + } + // 淇濆瓨鏈寮�绁ㄧ櫥璁拌褰� + InvoiceRegistrationRecord invoiceRegistrationRecord = new InvoiceRegistrationRecord(); + BeanUtils.copyProperties(invoiceRegistrationDto, invoiceRegistrationRecord); + invoiceRegistrationRecordMapper.insert(invoiceRegistrationRecord); if(CollectionUtils.isNotEmpty(productDtoList)){ for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) { - InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct(); - BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct); - invoiceRegistrationProduct.setInvoiceRegistrationId(invoiceRegistration.getId()); - invoiceRegistrationProductMapper.insert(invoiceRegistrationProduct); + InvoiceRegistrationProductRecord invoiceRegistrationProductRecord = new InvoiceRegistrationProductRecord(); + BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProductRecord); + invoiceRegistrationProductRecord.setInvoiceRegistrationRecordId(invoiceRegistrationRecord.getId()); + invoiceRegistrationProductRecord.setSalesLedgerProductId(invoiceRegistrationProductDto.getId()); + invoiceRegistrationProductRecord.setId(null); + invoiceRegistrationProductRecordMapper.insert(invoiceRegistrationProductRecord); } } } @@ -109,4 +181,41 @@ public List<InvoiceRegistrationProductDto> invoiceRegistrationProductList(InvoiceRegistrationProductDto invoiceRegistrationProductDto) { return invoiceRegistrationProductMapper.invoiceRegistrationProductList(invoiceRegistrationProductDto); } + + /** + * 寮�绁ㄧ櫥璁拌鎯� + * @param id + * @return + */ + @Override + public InvoiceRegistrationDto invoiceRegistrationDetail(Integer id) { + InvoiceRegistration invoiceRegistration = invoiceRegistrationMapper.selectById(id); + if(ObjectUtils.isEmpty(invoiceRegistration)){ + throw new RuntimeException("寮�绁ㄧ櫥璁颁俊鎭煡鎵惧け璐�"); + } + InvoiceRegistrationDto invoiceRegistrationDto = new InvoiceRegistrationDto(); + BeanUtils.copyProperties(invoiceRegistration, invoiceRegistrationDto); + QueryWrapper<InvoiceRegistrationProduct> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("invoice_registration_id", id); + List<InvoiceRegistrationProduct> invoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(queryWrapper); + List<InvoiceRegistrationProductDto> invoiceRegistrationProductDtoList = invoiceRegistrationProductList.stream().map(item -> { + InvoiceRegistrationProductDto invoiceRegistrationProductDto = new InvoiceRegistrationProductDto(); + BeanUtils.copyProperties(item, invoiceRegistrationProductDto); + return invoiceRegistrationProductDto; + }).collect(Collectors.toList()); + invoiceRegistrationDto.setProductDtoList(invoiceRegistrationProductDtoList); + return invoiceRegistrationDto; + } + + /** + * 寮�绁ㄧ櫥璁板鍑� + * @param response + * @param invoiceRegistrationDto + */ + @Override + public void invoiceRegistrationExport(HttpServletResponse response, InvoiceRegistrationDto invoiceRegistrationDto) { + List<InvoiceRegisAndProductExcelDto> invoiceRegisAndProductExcelDtoList = invoiceRegistrationMapper.invoiceRegisAndProductExcelDtoList(); + ExcelUtil<InvoiceRegisAndProductExcelDto> util = new ExcelUtil<InvoiceRegisAndProductExcelDto>(InvoiceRegisAndProductExcelDto.class); + util.exportExcel(response, invoiceRegisAndProductExcelDtoList, "寮�绁ㄧ櫥璁颁俊鎭�"); + } } -- Gitblit v1.9.3