From 37b697351e8e0a9200eee1276c4081c07588dc10 Mon Sep 17 00:00:00 2001 From: liyong <18434998025@163.com> Date: 星期二, 17 六月 2025 20:39:48 +0800 Subject: [PATCH] 未回款金额(元)为NaN修复 --- src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml | 7 + src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java | 2 src/main/resources/mapper/sales/SalesLedgerMapper.xml | 6 + src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java | 2 src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationProductDto.java | 6 + src/main/resources/mapper/purchase/ProductRecordMapper.xml | 11 ++ src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java | 24 ++++ src/main/resources/mapper/sales/ReceiptPaymentMapper.xml | 6 + src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java | 6 + src/main/java/com/ruoyi/purchase/service/IProductRecordService.java | 4 src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java | 7 + src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java | 34 ++++++ src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java | 8 + src/main/java/com/ruoyi/purchase/mapper/InvoicePurchaseMapper.java | 7 + src/main/java/com/ruoyi/basic/controller/SupplierManageController.java | 6 + src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java | 8 + src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseReportDto.java | 32 ++++++ src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java | 4 src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java | 5 + src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java | 9 + src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java | 5 src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java | 4 src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java | 9 + src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java | 11 ++ src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java | 28 +++-- src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java | 6 + src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml | 32 ++++++ src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml | 6 + 28 files changed, 279 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/ruoyi/basic/controller/SupplierManageController.java b/src/main/java/com/ruoyi/basic/controller/SupplierManageController.java index d934e46..b50f88f 100644 --- a/src/main/java/com/ruoyi/basic/controller/SupplierManageController.java +++ b/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("瀵煎叆澶辫触"); } diff --git a/src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java b/src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java new file mode 100644 index 0000000..50367c9 --- /dev/null +++ b/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); + } +} diff --git a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java index eb917ec..8f991e3 100644 --- a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java +++ b/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(); + } } diff --git a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java index 93cb18a..7580833 100644 --- a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java +++ b/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") diff --git a/src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseReportDto.java b/src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseReportDto.java new file mode 100644 index 0000000..f9b8657 --- /dev/null +++ b/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; + +} diff --git a/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java b/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java index b34494d..0ba914a 100644 --- a/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java +++ b/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java @@ -39,4 +39,8 @@ // 宸蹭粯娆炬�婚噾棰� private BigDecimal paymentAmountTotal; + + private String paymentDateStart; + + private String paymentDateEnd; } diff --git a/src/main/java/com/ruoyi/purchase/mapper/InvoicePurchaseMapper.java b/src/main/java/com/ruoyi/purchase/mapper/InvoicePurchaseMapper.java index 39f245a..36ed16f 100644 --- a/src/main/java/com/ruoyi/purchase/mapper/InvoicePurchaseMapper.java +++ b/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); + } diff --git a/src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java b/src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java index d4570fb..0f81a0e 100644 --- a/src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java +++ b/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); } diff --git a/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java b/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java index d4b49c2..d742bc8 100644 --- a/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java +++ b/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; } diff --git a/src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java b/src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java index fe664f8..41e8198 100644 --- a/src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java +++ b/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); } diff --git a/src/main/java/com/ruoyi/purchase/service/IProductRecordService.java b/src/main/java/com/ruoyi/purchase/service/IProductRecordService.java index 0eee184..17805a2 100644 --- a/src/main/java/com/ruoyi/purchase/service/IProductRecordService.java +++ b/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); } diff --git a/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java b/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java index e1978f1..2190972 100644 --- a/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java +++ b/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(); } diff --git a/src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java index ee93b39..1c8f326 100644 --- a/src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java +++ b/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); + } } diff --git a/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java index 96f2ff0..b3959b9 100644 --- a/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java +++ b/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); + } + } diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java index ac9691b..ffe7f4f 100644 --- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java +++ b/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); + } + /** * 涓嬪垝绾垮懡鍚嶈浆椹煎嘲鍛藉悕 */ diff --git a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java index a1272c3..d154370 100644 --- a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java +++ b/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; } diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java index 79bde14..b5296d9 100644 --- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java +++ b/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; } } diff --git a/src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationProductDto.java b/src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationProductDto.java index 6edc5f0..8f3c175 100644 --- a/src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationProductDto.java +++ b/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 = "寮�绁ㄥ彴璐d") private Integer invoiceLedgerId; diff --git a/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java b/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java index f46e99d..eb16ede 100644 --- a/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java +++ b/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; + + } diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java index e873834..3f57720 100644 --- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java +++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java @@ -32,4 +32,6 @@ private Integer Type; @ApiModelProperty(value = "绛捐鏃ユ湡") private LocalDate executionDate; + + private Integer status; } 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 a67ec3a..125ed83 100644 --- a/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java +++ b/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); } diff --git a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java index c2b0619..e6f459a 100644 --- a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java +++ b/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; } /** diff --git a/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml b/src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml new file mode 100644 index 0000000..9a04b88 --- /dev/null +++ b/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> \ No newline at end of file diff --git a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml index 61bbdfc..88c8a85 100644 --- a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml +++ b/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> diff --git a/src/main/resources/mapper/purchase/ProductRecordMapper.xml b/src/main/resources/mapper/purchase/ProductRecordMapper.xml new file mode 100644 index 0000000..c135606 --- /dev/null +++ b/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> \ No newline at end of file diff --git a/src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml b/src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml index 9a68cb3..cab5382 100644 --- a/src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml +++ b/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 diff --git a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml index 3e288af..a73f338 100644 --- a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml +++ b/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> diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml index a9ad438..118d092 100644 --- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml +++ b/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> \ No newline at end of file -- Gitblit v1.9.3