chenrui
2025-05-20 96eecc97de7fc863fc76b63294d4c12bd9683ae4
回款台账
已修改6个文件
已删除4个文件
339 ■■■■ 文件已修改
src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductRecordMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationRecordMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationProductRecord.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationRecord.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java
@@ -4,6 +4,7 @@
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.sales.dto.InvoiceRegistrationDto;
import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
import com.ruoyi.sales.dto.SalesLedgerDto;
import com.ruoyi.sales.service.InvoiceRegistrationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -19,13 +20,13 @@
    private InvoiceRegistrationService invoiceRegistrationService;
    /**
     * å¼€ç¥¨ç™»è®°æ–°å¢ž
     * @param invoiceRegistrationDto
     * å¼€ç¥¨ç™»è®°è®°å½•新增
     * @param salesLedgerDto
     * @return
     */
    @PostMapping("/saveOrUpdate")
    public AjaxResult invoiceRegistrationSaveOrUpdate(@RequestBody InvoiceRegistrationDto invoiceRegistrationDto) {
        invoiceRegistrationService.invoiceRegistrationSaveOrUpdate(invoiceRegistrationDto);
    @PostMapping("/save")
    public AjaxResult invoiceRegistrationSave(@RequestBody SalesLedgerDto salesLedgerDto) {
        invoiceRegistrationService.invoiceRegistrationSave(salesLedgerDto);
        return AjaxResult.success();
    }
src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -38,11 +38,10 @@
     * æŸ¥è¯¢äº§å“ä¿¡æ¯åˆ—表
     */
    @GetMapping("/list")
    public TableDataInfo list(SalesLedgerProduct salesLedgerProduct)
    public List<SalesLedgerProduct> list(SalesLedgerProduct salesLedgerProduct)
    {
        startPage();
        List<SalesLedgerProduct> list = salesLedgerProductService.selectSalesLedgerProductList(salesLedgerProduct);
        return getDataTable(list);
        return list;
    }
    /**
src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductRecordMapper.java
ÎļþÒÑɾ³ý
src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationRecordMapper.java
ÎļþÒÑɾ³ý
src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationProductRecord.java
ÎļþÒÑɾ³ý
src/main/java/com/ruoyi/sales/pojo/InvoiceRegistrationRecord.java
ÎļþÒÑɾ³ý
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -3,6 +3,7 @@
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
@@ -102,12 +103,12 @@
    private BigDecimal ticketsAmount;
    /**
     * æœªå¼€ç¥¨æ•°
     * æœªæ¥å¼€ç¥¨æ•°
     */
    private Long futureTickets;
    /**
     * æœªå¼€ç¥¨é‡‘额(元)
     * æœªæ¥å¼€ç¥¨é‡‘额(元)
     */
    private BigDecimal futureTicketsAmount;
@@ -122,4 +123,12 @@
    @ApiModelProperty(value = "未开票金额")
    private BigDecimal noInvoiceAmount;
    @ApiModelProperty(value = "本次开票数")
    @TableField(exist = false)
    private Integer currentInvoiceNum;
    @TableField(exist = false)
    @ApiModelProperty(value = "本次开票金额")
    private BigDecimal currentInvoiceAmount;
}
src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.sales.dto.InvoiceRegistrationDto;
import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
import com.ruoyi.sales.dto.SalesLedgerDto;
import org.springframework.web.bind.annotation.RequestBody;
import javax.servlet.http.HttpServletResponse;
@@ -12,11 +13,11 @@
public interface InvoiceRegistrationService {
    /**
     * å¼€ç¥¨ç™»è®°æ–°å¢ž
     * @param invoiceRegistrationDto
     * å¼€ç¥¨ç™»è®°è®°å½•新增
     * @param salesLedgerDto
     * @return
     */
    void invoiceRegistrationSaveOrUpdate(InvoiceRegistrationDto invoiceRegistrationDto);
    void invoiceRegistrationSave(SalesLedgerDto salesLedgerDto);
    /**
     * å¼€ç¥¨ç™»è®°åˆ é™¤
src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
@@ -5,19 +5,17 @@
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.dto.SalesLedgerDto;
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.mapper.SalesLedgerProductMapper;
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.pojo.SalesLedgerProduct;
import com.ruoyi.sales.service.InvoiceRegistrationService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
@@ -27,7 +25,6 @@
import org.springframework.util.ObjectUtils;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
@@ -41,85 +38,40 @@
    private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
    @Autowired
    private InvoiceRegistrationRecordMapper invoiceRegistrationRecordMapper;
    @Autowired
    private InvoiceRegistrationProductRecordMapper invoiceRegistrationProductRecordMapper;
    private SalesLedgerProductMapper salesLedgerProductMapper;
    /**
     * å¼€ç¥¨ç™»è®°æ–°å¢ž
     * @param invoiceRegistrationDto
     * å¼€ç¥¨ç™»è®°è®°å½•新增
     * @param salesLedgerDto
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    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);
                        }
                    }
    public void invoiceRegistrationSave(SalesLedgerDto salesLedgerDto) {
        InvoiceRegistration invoiceRegistration = new InvoiceRegistration();
        BeanUtils.copyProperties(salesLedgerDto, invoiceRegistration);
        invoiceRegistration.setId(null);
        invoiceRegistration.setCustomerId(salesLedgerDto.getCustomerId().intValue());
        invoiceRegistration.setSalesLedgerId(salesLedgerDto.getId().intValue());
        invoiceRegistrationMapper.insert(invoiceRegistration);
        List<SalesLedgerProduct> productData = salesLedgerDto.getProductData();
        if(CollectionUtils.isNotEmpty(productData)){
            for (SalesLedgerProduct productDatum : productData) {
                // å¦‚果开票数为0 è·³è¿‡
                Integer currentInvoiceNum = productDatum.getCurrentInvoiceNum();
                if(null == currentInvoiceNum || currentInvoiceNum == 0){
                    continue;
                }
            }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) {
                InvoiceRegistrationProductRecord invoiceRegistrationProductRecord = new InvoiceRegistrationProductRecord();
                BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProductRecord);
                invoiceRegistrationProductRecord.setInvoiceRegistrationRecordId(invoiceRegistrationRecord.getId());
                invoiceRegistrationProductRecord.setSalesLedgerProductId(invoiceRegistrationProductDto.getId());
                invoiceRegistrationProductRecord.setId(null);
                invoiceRegistrationProductRecordMapper.insert(invoiceRegistrationProductRecord);
                InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct();
                BeanUtils.copyProperties(productDatum, invoiceRegistrationProduct);
                invoiceRegistrationProduct.setId(null);
                invoiceRegistrationProduct.setSalesLedgerId(salesLedgerDto.getId().intValue());
                invoiceRegistrationProduct.setInvoiceRegistrationId(invoiceRegistration.getId());
                invoiceRegistrationProduct.setInvoiceAmount(productDatum.getCurrentInvoiceAmount());
                invoiceRegistrationProduct.setInvoiceNum(productDatum.getCurrentInvoiceNum());
                invoiceRegistrationProduct.setSalesLedgerProductId(productDatum.getId().intValue());
                invoiceRegistrationProductMapper.insert(invoiceRegistrationProduct);
                salesLedgerProductMapper.updateById(productDatum);
            }
        }
    }
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -103,30 +103,6 @@
        LambdaQueryWrapper<SalesLedgerProduct> productWrapper = new LambdaQueryWrapper<>();
        productWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedger.getId());
        List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(productWrapper);
        // æŸ¥è¯¢æœªå¼€ç¥¨é‡‘额/未开票数
        if (CollectionUtils.isNotEmpty(products)) {
            QueryWrapper<InvoiceRegistrationProduct> productQueryWrapper = new QueryWrapper<>();
            List<Long> productIds = products.stream().map(SalesLedgerProduct::getId).collect(Collectors.toList());
            productQueryWrapper.in("sales_ledger_product_id", productIds);
            List<InvoiceRegistrationProduct> invoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(productQueryWrapper);
            if(CollectionUtils.isNotEmpty(invoiceRegistrationProductList)){
                for (SalesLedgerProduct product : products) {
                    for (InvoiceRegistrationProduct invoiceRegistrationProduct : invoiceRegistrationProductList) {
                        Integer salesLedgerProductId = invoiceRegistrationProduct.getSalesLedgerProductId();
                        Long id = product.getId();
                        if( null !=  id && null != salesLedgerProductId && id == salesLedgerProductId.longValue()){
                            product.setFutureTickets(Long.valueOf(invoiceRegistrationProduct.getNoInvoiceNum()));
                            product.setFutureTicketsAmount(invoiceRegistrationProduct.getNoInvoiceAmount());
                        }
                    }
                }
            }else {
                for (SalesLedgerProduct product : products) {
                    product.setFutureTickets(product.getQuantity().longValue());
                    product.setFutureTicketsAmount(product.getTaxInclusiveTotalPrice());
                }
            }
        }
        // 3.查询上传文件
        LambdaQueryWrapper<CommonFile> salesLedgerFileWrapper = new LambdaQueryWrapper<>();
@@ -369,6 +345,8 @@
        if (!insertList.isEmpty()) {
            for (SalesLedgerProduct salesLedgerProduct : insertList) {
                salesLedgerProduct.setType(type);
                salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity().intValue());
                salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
                salesLedgerProductMapper.insert(salesLedgerProduct);
            }
        }