src/main/java/com/ruoyi/basic/controller/SupplierManageController.java
@@ -95,7 +95,11 @@ @PostMapping("/import") @Log(title = "ä¾åºåå¯¼å ¥", businessType = BusinessType.IMPORT) public AjaxResult importData(MultipartFile file) { return AjaxResult.success(supplierService.importData(file)); Boolean b = supplierService.importData(file); if (b) { return AjaxResult.success("å¯¼å ¥æå"); } return AjaxResult.error("å¯¼å ¥å¤±è´¥"); } src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ package com.ruoyi.purchase.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.purchase.dto.InvoicePurchaseDto; import com.ruoyi.purchase.dto.InvoicePurchaseReportDto; import com.ruoyi.purchase.pojo.InvoicePurchase; import com.ruoyi.purchase.service.IInvoicePurchaseService; import io.swagger.annotations.Api; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @Api(tags = "éè´æ¥è¡¨") @RequestMapping("/purchase/report") @AllArgsConstructor public class AccountingReportController { @Autowired private IInvoicePurchaseService invoicePurchaseService; @GetMapping("/list") @Log(title = "éè´æ¥è¡¨", businessType = BusinessType.OTHER) public AjaxResult list(Page page, InvoicePurchaseReportDto invoicePurchaseReportDto) { IPage<InvoicePurchaseReportDto> result =invoicePurchaseService.listPurchaseReport(page, invoicePurchaseReportDto); return AjaxResult.success(result); } } src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
@@ -12,6 +12,7 @@ import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.purchase.service.IPurchaseLedgerService; import com.ruoyi.sales.service.ISalesLedgerService; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -136,4 +137,11 @@ public IPage<PurchaseLedger> listPage(Page page, PurchaseLedger purchaseLedger) { return purchaseLedgerService.selectPurchaseLedgerListPage(page ,purchaseLedger); } @ApiOperation("çæéè´åºåå·") @GetMapping("/createPurchaseNo") @Log(title = "çæéè´åºåå·", businessType = BusinessType.OTHER) public String createPurchaseNo() { return purchaseLedgerService.getPurchaseNo(); } } src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
@@ -105,6 +105,15 @@ } /** * å页æ¥è¯¢äº§åä¿¡æ¯å¼ç¥¨è®°å½å表 */ @GetMapping("/productRecordPage") public AjaxResult productRecordPage(Page page, TicketRegistrationDto ticketRegistrationDto) { IPage<ProductRecord> list = productRecordService.productRecordPage(page,ticketRegistrationDto); return AjaxResult.success(list); } /** * æ¥è¯¢åç¥¨å· */ @GetMapping("/getTicketNo") src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseReportDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package com.ruoyi.purchase.dto; import lombok.Data; /** * æ¥è¡¨åæ---项ç®å©æ¶¦ */ @Data public class InvoicePurchaseReportDto { //éå®ååå· private String customerContractNo; // 客æ·åç§° private String customerName; // 项ç®åç§° private String projectName; // ååéé¢ private String contractAmount; // éè´éé¢ private String purchaseAmount; private String saleTaxExclusiveTotalPrice; private String taxExclusiveTotalPrice; // 婿¶¦ private String balance; // 婿¶¦ç private String balanceRatio; // å¢å¼ç¨ private String balanceAmount; } src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java
@@ -39,4 +39,8 @@ // 已仿¬¾æ»éé¢ private BigDecimal paymentAmountTotal; private String paymentDateStart; private String paymentDateEnd; } src/main/java/com/ruoyi/purchase/mapper/InvoicePurchaseMapper.java
@@ -2,7 +2,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ruoyi.purchase.dto.InvoicePurchaseReportDto; import com.ruoyi.purchase.pojo.InvoicePurchase; import org.apache.ibatis.annotations.Param; /** * å票信æ¯Mapperæ¥å£ @@ -11,4 +14,8 @@ * @date 2025-05-14 */ public interface InvoicePurchaseMapper extends BaseMapper<InvoicePurchase> { IPage<InvoicePurchaseReportDto> selectPurchaseReport(IPage page, @Param("c") InvoicePurchaseReportDto invoicePurchaseReportDto); } src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java
@@ -1,6 +1,9 @@ package com.ruoyi.purchase.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.purchase.dto.TicketRegistrationDto; import com.ruoyi.purchase.pojo.ProductRecord; /** @@ -11,4 +14,5 @@ */ public interface ProductRecordMapper extends BaseMapper<ProductRecord> { IPage<ProductRecord> productRecordPage(Page page, TicketRegistrationDto ticketRegistrationDto); } src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java
@@ -140,4 +140,10 @@ @ApiModelProperty(value = "æªä»æ¬¾æ»éé¢") @TableField(exist = false) private BigDecimal unPaymentAmountTotal; @TableField(exist = false) private Boolean status; private String issueDateStart; private String issueDateEnd; } src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java
@@ -1,8 +1,11 @@ package com.ruoyi.purchase.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.purchase.dto.InvoicePurchaseDto; import com.ruoyi.purchase.dto.InvoicePurchaseReportDto; import com.ruoyi.purchase.pojo.InvoicePurchase; import java.io.IOException; @@ -24,4 +27,6 @@ InvoicePurchaseDto getInvoiceById(InvoicePurchaseDto invoicePurchaseDto); List<InvoicePurchase> selectInvoicePurchaseLists(InvoicePurchase invoicePurchase); IPage<InvoicePurchaseReportDto> listPurchaseReport(Page page, InvoicePurchaseReportDto invoicePurchaseReportDto); } src/main/java/com/ruoyi/purchase/service/IProductRecordService.java
@@ -1,5 +1,7 @@ package com.ruoyi.purchase.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.purchase.dto.TicketRegistrationDto; import com.ruoyi.purchase.pojo.ProductRecord; @@ -15,4 +17,6 @@ public interface IProductRecordService extends IService<ProductRecord> { List<ProductRecord> selectProductRecordList(TicketRegistrationDto ticketRegistrationDto); IPage<ProductRecord> productRecordPage(Page page, TicketRegistrationDto ticketRegistrationDto); } src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
@@ -37,4 +37,6 @@ IPage<PurchaseLedger> selectPurchaseLedgerListPage(IPage ipage, PurchaseLedger purchaseLedger); List<InvoiceRegistrationProduct> getProductBySalesNo(Long id); String getPurchaseNo(); } src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java
@@ -2,13 +2,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.other.mapper.TempFileMapper; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.purchase.dto.InvoicePurchaseDto; import com.ruoyi.purchase.dto.InvoicePurchaseReportDto; import com.ruoyi.purchase.mapper.InvoicePurchaseMapper; import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; import com.ruoyi.purchase.pojo.InvoicePurchase; @@ -158,4 +161,10 @@ public List<InvoicePurchase> selectInvoicePurchaseLists(InvoicePurchase invoicePurchase) { return invoicePurchaseMapper.selectList(new LambdaQueryWrapper<>()); } @Override public IPage<InvoicePurchaseReportDto> listPurchaseReport(Page page, InvoicePurchaseReportDto invoicePurchaseReportDto) { return invoicePurchaseMapper.selectPurchaseReport(page, invoicePurchaseReportDto); } } src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
@@ -1,6 +1,8 @@ package com.ruoyi.purchase.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.purchase.dto.TicketRegistrationDto; import com.ruoyi.purchase.mapper.ProductRecordMapper; @@ -36,4 +38,10 @@ .eq(ProductRecord::getType, "2")); } @Override public IPage<ProductRecord> productRecordPage(Page page, TicketRegistrationDto ticketRegistrationDto) { return productRecordMapper.productRecordPage(page, ticketRegistrationDto); } } src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -38,6 +38,7 @@ import org.apache.commons.io.FilenameUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import java.io.IOException; @@ -50,6 +51,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -85,6 +87,8 @@ private final ProductRecordMapper productRecordMapper; private final InvoiceRegistrationProductMapper invoiceRegistrationProductMapper; private final StringRedisTemplate redisTemplate; @Value("${file.upload-dir}") private String uploadDir; @@ -440,6 +444,26 @@ return invoiceRegistrationProducts; } @Override public String getPurchaseNo() { // çææ¥æåç¼ï¼ä¾å¦ï¼CG20250405ï¼ String purchaseNo = "CG" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); // æå»º Redis Keyï¼æå¤©åéï¼ String redisKey = "purchase_no:" + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE); // è·åå½ååºå·å¹¶éå¢ï¼ååæä½ï¼ Long sequence = redisTemplate.opsForValue().increment(redisKey); // è®¾ç½®è¿ææ¶é´ï¼æ¬¡æ¥å¤±æï¼é²æ¢å使°æ®ï¼ if (sequence == 1) { redisTemplate.expire(redisKey, 1, TimeUnit.DAYS); } // è¿å宿´ç¼å·ï¼å¦ CG202504050001ï¼ return purchaseNo + String.format("%03d", sequence); } /** * ä¸å线å½å转驼峰å½å */ src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.exception.base.BaseException; @@ -88,13 +89,13 @@ } List<TicketRegistration> ticketRegistrationList = ticketRegistrationMapper.selectList(queryWrapper); // 计ç®å·²ä»æ¬¾éé¢ if(CollectionUtils.isNotEmpty(ticketRegistrationList)){ if (CollectionUtils.isNotEmpty(ticketRegistrationList)) { List<Long> ids = ticketRegistrationList.stream().map(TicketRegistration::getId).collect(Collectors.toList()); List<PaymentRegistrationDto> paymentRegistrationDtoList = paymentRegistrationMapper.countPaymentTotalByTicketRegId(ids); for (TicketRegistration registration : ticketRegistrationList) { BigDecimal paymentAmountTotal = BigDecimal.ZERO; for (PaymentRegistrationDto paymentRegistrationDto : paymentRegistrationDtoList) { if(registration.getId().equals(paymentRegistrationDto.getTicketRegistrationId())){ if (registration.getId().equals(paymentRegistrationDto.getTicketRegistrationId())) { paymentAmountTotal = paymentRegistrationDto.getPaymentAmountTotal(); break; } @@ -138,13 +139,13 @@ // 6. å¢å éè´å°è´¦äº§åå¼ç¥¨è®°å½ List<SalesLedgerProduct> salesLedgerProducts = ticketRegistrationDto.getProductData(); if (CollectionUtils.isNotEmpty(salesLedgerProducts)){ if (CollectionUtils.isNotEmpty(salesLedgerProducts)) { for (SalesLedgerProduct salesLedgerProduct : salesLedgerProducts) { ProductRecord productRecord = new ProductRecord(); productRecord.setTicketRegistrationId(ticketRegistration.getId()); productRecord.setPurchaseLedgerId(ticketRegistrationDto.getPurchaseLedgerId()); productRecord.setCreatedAt(DateUtils.getNowDate()); BeanUtils.copyProperties(salesLedgerProduct,productRecord); BeanUtils.copyProperties(salesLedgerProduct, productRecord); productRecord.setId(null); productRecord.setType("2"); productRecordMapper.insert(productRecord); @@ -257,8 +258,8 @@ @Override public List getTicketNo(TicketRegistrationDto ticketRegistrationDto) { LambdaQueryWrapper<TicketRegistration> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.select(TicketRegistration::getId,TicketRegistration::getInvoiceNumber,TicketRegistration::getInvoiceAmount) .eq(TicketRegistration::getPurchaseLedgerId,ticketRegistrationDto.getId()); queryWrapper.select(TicketRegistration::getId, TicketRegistration::getInvoiceNumber, TicketRegistration::getInvoiceAmount) .eq(TicketRegistration::getPurchaseLedgerId, ticketRegistrationDto.getId()); List<Map<String, Object>> result = ticketRegistrationMapper.selectMaps(queryWrapper); // å°ä¸å线å½å转æ¢ä¸ºé©¼å³°å½å return result.stream().map(map -> map.entrySet().stream() @@ -273,18 +274,20 @@ LambdaQueryWrapper<TicketRegistration> queryWrapper = new LambdaQueryWrapper<>(); if (StringUtils.isNotBlank(ticketRegistration.getPurchaseContractNumber())) { queryWrapper.like(TicketRegistration::getPurchaseContractNumber, ticketRegistration.getPurchaseContractNumber()) .like(TicketRegistration::getSupplierName, ticketRegistration.getSupplierName()) .eq(TicketRegistration::getIssueDate, ticketRegistration.getIssueDate()); .like(TicketRegistration::getSupplierName, ticketRegistration.getSupplierName()); } if (ObjectUtils.isEmpty(ticketRegistration.getIssueDateStart())&&ObjectUtils.isEmpty(ticketRegistration.getIssueDateEnd())) { queryWrapper.between(TicketRegistration::getIssueDate,LocalDate.parse(ticketRegistration.getIssueDateStart(), DateTimeFormatter.ofPattern("yyyy-MM-dd")), LocalDate.parse(ticketRegistration.getIssueDateEnd(), DateTimeFormatter.ofPattern("yyyy-MM-dd"))); } IPage<TicketRegistration> ticketRegistrationIPage = ticketRegistrationMapper.selectPage(page, queryWrapper); // 计ç®å·²ä»æ¬¾éé¢ if(CollectionUtils.isNotEmpty(ticketRegistrationIPage.getRecords())){ if (CollectionUtils.isNotEmpty(ticketRegistrationIPage.getRecords())) { List<Long> ids = ticketRegistrationIPage.getRecords().stream().map(TicketRegistration::getId).collect(Collectors.toList()); List<PaymentRegistrationDto> paymentRegistrationDtoList = paymentRegistrationMapper.countPaymentTotalByTicketRegId(ids); for (TicketRegistration registration : ticketRegistrationIPage.getRecords()) { BigDecimal paymentAmountTotal = BigDecimal.ZERO; for (PaymentRegistrationDto paymentRegistrationDto : paymentRegistrationDtoList) { if(registration.getId().equals(paymentRegistrationDto.getTicketRegistrationId())){ if (registration.getId().equals(paymentRegistrationDto.getTicketRegistrationId())) { paymentAmountTotal = paymentRegistrationDto.getPaymentAmountTotal(); break; } @@ -295,7 +298,12 @@ registration.setUnPaymentAmountTotal(subtractAmount); } } if (!ObjectUtils.isEmpty(ticketRegistration.getStatus())) { if (ticketRegistration.getStatus()) { ticketRegistrationIPage.getRecords().removeIf(receiptPaymentDto1 -> new BigDecimal("0.00").equals(receiptPaymentDto1.getUnPaymentAmountTotal())); } } return ticketRegistrationIPage; } src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -1,6 +1,7 @@ package com.ruoyi.sales.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; @@ -22,6 +23,7 @@ import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** @@ -196,6 +198,11 @@ } salesLedger.setInvoiceTotal(invoiceTotal); } if (ObjectUtils.isNotEmpty(salesLedgerDto.getStatus())) { if (salesLedgerDto.getStatus()==1) { iPage.getRecords().removeIf(salesLedger -> !Objects.equals(salesLedger.getNoInvoiceAmountTotal(), new BigDecimal("0.00"))); } } return iPage; } } src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationProductDto.java
@@ -1,5 +1,6 @@ package com.ruoyi.sales.dto; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.vo.FileVo; import com.ruoyi.sales.pojo.InvoiceRegistrationProduct; @@ -40,6 +41,11 @@ @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate invoiceDate; @TableField(exist = false) private String invoiceDateStart; @TableField(exist = false) private String invoiceDateEnd; @ApiModelProperty(value = "å¼ç¥¨å°è´¦id") private Integer invoiceLedgerId; src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java
@@ -1,10 +1,12 @@ package com.ruoyi.sales.dto; import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.sales.pojo.ReceiptPayment; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDate; @Data public class ReceiptPaymentDto extends ReceiptPayment { @@ -45,4 +47,13 @@ @ApiModelProperty(value = "å¾ åæ¬¾éé¢") private BigDecimal noReceiptAmount; @TableField(exist = false) private Boolean status; @TableField(exist = false) private String receiptPaymentDateStart; @TableField(exist = false) private String receiptPaymentDateEnd; } src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -32,4 +32,6 @@ private Integer Type; @ApiModelProperty(value = "ç¾è®¢æ¥æ") private LocalDate executionDate; private Integer status; } src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
@@ -384,6 +384,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); @@ -415,8 +416,8 @@ 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); } src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
@@ -134,7 +134,11 @@ */ @Override public IPage<ReceiptPaymentDto> bindInvoiceNoRegPage(Page page, ReceiptPaymentDto receiptPaymentDto) { return receiptPaymentMapper.bindInvoiceNoRegPage(page, receiptPaymentDto); IPage<ReceiptPaymentDto> receiptPaymentDtoIPage = receiptPaymentMapper.bindInvoiceNoRegPage(page, receiptPaymentDto); if (receiptPaymentDto.getStatus()) { receiptPaymentDtoIPage.getRecords().removeIf(receiptPaymentDto1 -> new BigDecimal("0.00").equals(receiptPaymentDto1.getNoReceiptAmount())); } return receiptPaymentDtoIPage; } /** src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.purchase.mapper.InvoicePurchaseMapper"> <select id="selectPurchaseReport" resultType="com.ruoyi.purchase.dto.InvoicePurchaseReportDto"> select sl.customer_contract_no, sl.customer_name, sl.project_name, sl.contract_amount, pl.contract_amount as purchase_amount, sum(slp.tax_exclusive_total_price) as sale_tax_exclusive_total_price, sum(pr.tax_exclusive_total_price) as tax_exclusive_total_price, (sl.contract_amount-pl.contract_amount) as balance, CONCAT(FORMAT((sl.contract_amount - pl.contract_amount) / sl.contract_amount * 100, 2), '%') AS balance_ratio, sl.contract_amount-sum(slp.tax_exclusive_total_price)-(pl.contract_amount-sum(pr.tax_exclusive_total_price)) as balance_amount from purchase_ledger pl left join sales_ledger sl on pl.sales_ledger_id = sl.id left join product_record pr on pr.purchase_ledger_id = pl.id left join sales_ledger_product slp on slp.sales_ledger_id = sl.id group by sl.customer_contract_no, sl.customer_name, sl.project_name, sl.contract_amount, pl.contract_amount having sl.customer_contract_no is not null <where> <if test="c.customerName != null and c.customerName != ''"> and sl.customer_name like concat('%',#{c.customerName},'%') </if> </where> </select> </mapper> src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
@@ -167,6 +167,12 @@ <if test="params.searchText != null and params.searchText != '' "> AND T2.supplier_name LIKE CONCAT('%',#{params.searchText},'%') </if> <if test="params.paymentDateStart != null and params.paymentDateStart !='' "> AND T1.payment_date >= STR_TO_DATE(#{params.paymentDateStart},'yyyy-MM-dd') </if> <if test="params.paymentDateEnd != null and params.paymentDateEnd !='' "> AND T1.payment_date >= STR_TO_DATE(#{params.paymentDateEnd},'yyyy-MM-dd') </if> </where> ORDER BY T1.payment_date,T1.create_time DESC </select> src/main/resources/mapper/purchase/ProductRecordMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.purchase.mapper.ProductRecordMapper"> <select id="productRecordPage" resultType="com.ruoyi.purchase.pojo.ProductRecord"> </select> </mapper> src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml
@@ -107,8 +107,11 @@ T2.customer_name LIKE CONCAT('%',#{invoiceRegistrationProductDto.searchText},'%') ) </if> <if test="invoiceRegistrationProductDto.invoiceDate != null"> AND T3.invoice_date = #{invoiceRegistrationProductDto.invoiceDate} <if test="invoiceRegistrationProductDto.invoiceDateStart != null and invoiceRegistrationProductDto.invoiceDateStart != ''"> AND T3.invoice_date >= STR_TO_DATE(#{invoiceRegistrationProductDto.invoiceDateStart}, '%Y-%m-%d') </if> <if test="invoiceRegistrationProductDto.invoiceDateEnd != null and invoiceRegistrationProductDto.invoiceDateEnd != ''"> AND T3.invoice_date < STR_TO_DATE(#{invoiceRegistrationProductDto.invoiceDateEnd}, '%Y-%m-%d') </if> </where> ORDER BY T1.create_time DESC src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
@@ -184,6 +184,12 @@ <if test="params.searchText != null and params.searchText != '' "> T5.customer_name LIKE CONCAT('%',#{params.searchText},'%') </if> <if test="params.receiptPaymentDateStart != null and params.receiptPaymentDateStart != '' "> AND T1.receipt_payment_date >= STR_TO_DATE(#{params.receiptPaymentDateStart},'yyyy-mm-dd') </if> <if test="params.receiptPaymentDateEnd != null and params.receiptPaymentDateEnd != '' "> AND T1.receipt_payment_date < STR_TO_DATE(#{params.receiptPaymentDateEnd}, '%Y-%m-%d') </if> </where> ORDER BY T1.receipt_payment_date DESC </select> src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -64,6 +64,12 @@ <if test="salesLedgerDto.customerName != null and salesLedgerDto.customerName != '' "> T1.customer_name LIKE CONCAT('%',#{salesLedgerDto.customerName},'%') </if> <if test="salesLedgerDto.customerContractNo != null and salesLedgerDto.customerContractNo != '' "> T1.sales_contract_no LIKE CONCAT('%',#{salesLedgerDto.customerContractNo},'%') </if> <if test="salesLedgerDto.projectName != null and salesLedgerDto.projectName != '' "> T1.project_name LIKE CONCAT('%',#{salesLedgerDto.projectName},'%') </if> </where> </select> </mapper>