From 53bdb26a0ae994418e92d93aab23d6f5e7225f37 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 19 五月 2025 16:20:56 +0800
Subject: [PATCH] 产品
---
src/main/java/com/ruoyi/basic/controller/ProductController.java | 85 ++++++++
src/main/java/com/ruoyi/basic/dto/ProductTreeDto.java | 14 +
src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java | 3
src/main/java/com/ruoyi/basic/dto/ProductDto.java | 13 +
src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java | 15 +
src/main/java/com/ruoyi/basic/service/IProductService.java | 18 +
src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java | 26 ++
src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java | 14 +
src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java | 52 +++++
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java | 9
src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java | 14 +
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java | 25 ++
src/main/java/com/ruoyi/basic/mapper/ProductMapper.java | 8
src/main/java/com/ruoyi/basic/pojo/Product.java | 29 ++
src/main/java/com/ruoyi/basic/dto/ProductModelDto.java | 8
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 37 +++
src/main/java/com/ruoyi/basic/controller/CustomerController.java | 18 -
src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java | 118 +++++++++++
src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java | 25 ++
src/main/java/com/ruoyi/basic/pojo/ProductModel.java | 29 ++
src/main/java/com/ruoyi/basic/service/IProductModelService.java | 24 ++
src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java | 4
22 files changed, 566 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/controller/CustomerController.java b/src/main/java/com/ruoyi/basic/controller/CustomerController.java
index cc94893..c1c66d9 100644
--- a/src/main/java/com/ruoyi/basic/controller/CustomerController.java
+++ b/src/main/java/com/ruoyi/basic/controller/CustomerController.java
@@ -1,24 +1,18 @@
package com.ruoyi.basic.controller;
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.basic.service.ICustomerService;
-import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.page.TableDataInfo;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
/**
* 瀹㈡埛妗fController
diff --git a/src/main/java/com/ruoyi/basic/controller/ProductController.java b/src/main/java/com/ruoyi/basic/controller/ProductController.java
new file mode 100644
index 0000000..d042cb6
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/controller/ProductController.java
@@ -0,0 +1,85 @@
+package com.ruoyi.basic.controller;
+
+import com.ruoyi.basic.dto.ProductDto;
+import com.ruoyi.basic.dto.ProductModelDto;
+import com.ruoyi.basic.dto.ProductTreeDto;
+import com.ruoyi.basic.pojo.ProductModel;
+import com.ruoyi.basic.service.IProductModelService;
+import com.ruoyi.basic.service.IProductService;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/basic/product")
+public class ProductController extends BaseController {
+
+ private IProductService productService;
+
+ private IProductModelService productModelService;
+
+
+ /**
+ * 鏌ヨ浜у搧
+ */
+ @GetMapping("/list")
+ public List<ProductTreeDto> selectProductList(ProductDto productDto) {
+ return productService.selectProductList(productDto);
+ }
+
+ /**
+ * 鏍规嵁id鏌ヨ浜у搧瑙勬牸
+ */
+ @GetMapping("/modelList")
+ public List<ProductModel> selectModelList(ProductDto productDto) {
+ return productModelService.selectModelList(productDto);
+ }
+
+ /**
+ * 鏂板鏇存柊浜у搧
+ */
+ @Log(title = "浜у搧", businessType = BusinessType.INSERT)
+ @PostMapping("/addOrEditProduct")
+ public AjaxResult addOrEditProduct(@RequestBody ProductDto productDto) {
+ return toAjax(productService.addOrEditProduct(productDto));
+ }
+
+ /**
+ * 鏂板鏇存柊浜у搧瑙勬牸鍨嬪彿
+ */
+ @Log(title = "浜у搧瑙勬牸鍨嬪彿", businessType = BusinessType.INSERT)
+ @PostMapping("/addOrEditProductModel")
+ public AjaxResult addOrEditProductModel(@RequestBody ProductModelDto productModelDto) {
+ return toAjax(productModelService.addOrEditProductModel(productModelDto));
+ }
+
+ /**
+ * 鍒犻櫎
+ */
+ @Log(title = "浜у搧", businessType = BusinessType.DELETE)
+ @DeleteMapping("/delProduct")
+ public AjaxResult remove(@RequestBody Long[] ids) {
+ if (ids == null || ids.length == 0) {
+ return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ }
+ return toAjax(productService.delProductByIds(ids));
+ }
+
+ /**
+ * 鍒犻櫎浜у搧瑙勬牸鍨嬪彿
+ */
+ @Log(title = "浜у搧瑙勬牸鍨嬪彿", businessType = BusinessType.DELETE)
+ @DeleteMapping("/delProductModel")
+ public AjaxResult delProductModel(@RequestBody Long[] ids) {
+ if (ids == null || ids.length == 0) {
+ return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ }
+ return toAjax(productModelService.delProductModel(ids));
+ }
+}
diff --git a/src/main/java/com/ruoyi/basic/dto/ProductDto.java b/src/main/java/com/ruoyi/basic/dto/ProductDto.java
new file mode 100644
index 0000000..7b38d99
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/dto/ProductDto.java
@@ -0,0 +1,13 @@
+package com.ruoyi.basic.dto;
+
+import com.ruoyi.basic.pojo.Product;
+import com.ruoyi.basic.pojo.ProductModel;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ProductDto extends Product {
+
+ private List<ProductModel> productModelList;
+}
diff --git a/src/main/java/com/ruoyi/basic/dto/ProductModelDto.java b/src/main/java/com/ruoyi/basic/dto/ProductModelDto.java
new file mode 100644
index 0000000..577d75d
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/dto/ProductModelDto.java
@@ -0,0 +1,8 @@
+package com.ruoyi.basic.dto;
+
+import com.ruoyi.basic.pojo.ProductModel;
+import lombok.Data;
+
+@Data
+public class ProductModelDto extends ProductModel {
+}
diff --git a/src/main/java/com/ruoyi/basic/dto/ProductTreeDto.java b/src/main/java/com/ruoyi/basic/dto/ProductTreeDto.java
new file mode 100644
index 0000000..1fd8c81
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/dto/ProductTreeDto.java
@@ -0,0 +1,14 @@
+package com.ruoyi.basic.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ProductTreeDto {
+ private Long id;
+ private Long parentId;
+ private String productName;
+ private String label; // 鐢ㄤ簬鏍戝舰缁撴瀯鐨勬樉绀哄悕绉�
+ private List<ProductTreeDto> children;
+}
diff --git a/src/main/java/com/ruoyi/basic/mapper/ProductMapper.java b/src/main/java/com/ruoyi/basic/mapper/ProductMapper.java
new file mode 100644
index 0000000..1d016fb
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/mapper/ProductMapper.java
@@ -0,0 +1,8 @@
+package com.ruoyi.basic.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.basic.pojo.Product;
+
+public interface ProductMapper extends BaseMapper<Product> {
+
+}
diff --git a/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java b/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
new file mode 100644
index 0000000..2248421
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.basic.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.basic.pojo.ProductModel;
+
+
+/**
+ * 銆愯濉啓鍔熻兘鍚嶇О銆慚apper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-05-19
+ */
+public interface ProductModelMapper extends BaseMapper<ProductModel> {
+
+}
diff --git a/src/main/java/com/ruoyi/basic/pojo/Product.java b/src/main/java/com/ruoyi/basic/pojo/Product.java
new file mode 100644
index 0000000..bd079d9
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/pojo/Product.java
@@ -0,0 +1,29 @@
+package com.ruoyi.basic.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("product")
+public class Product {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 搴忓彿
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 鐖禝D
+ */
+ private Long parentId;
+
+ /**
+ * 浜у搧鍚嶇О
+ */
+ private String productName;
+}
diff --git a/src/main/java/com/ruoyi/basic/pojo/ProductModel.java b/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
new file mode 100644
index 0000000..4d336b7
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
@@ -0,0 +1,29 @@
+package com.ruoyi.basic.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("product_model")
+public class ProductModel {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 搴忓彿
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 鍏宠仈浜у搧id
+ */
+ private Long productId;
+
+ /**
+ * 瑙勬牸鍨嬪彿
+ */
+ private String model;
+}
diff --git a/src/main/java/com/ruoyi/basic/service/IProductModelService.java b/src/main/java/com/ruoyi/basic/service/IProductModelService.java
new file mode 100644
index 0000000..d5103ee
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/service/IProductModelService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.basic.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.basic.dto.ProductDto;
+import com.ruoyi.basic.dto.ProductModelDto;
+import com.ruoyi.basic.pojo.ProductModel;
+
+import java.util.List;
+
+
+/**
+ * 銆愯濉啓鍔熻兘鍚嶇О銆慡ervice鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-05-19
+ */
+public interface IProductModelService extends IService<ProductModel> {
+
+ int addOrEditProductModel(ProductModelDto productModelDto);
+
+ int delProductModel(Long[] ids);
+
+ List<ProductModel> selectModelList(ProductDto productDto);
+}
diff --git a/src/main/java/com/ruoyi/basic/service/IProductService.java b/src/main/java/com/ruoyi/basic/service/IProductService.java
new file mode 100644
index 0000000..cd9bdff
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/service/IProductService.java
@@ -0,0 +1,18 @@
+package com.ruoyi.basic.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.basic.dto.ProductDto;
+import com.ruoyi.basic.dto.ProductTreeDto;
+import com.ruoyi.basic.pojo.Product;
+
+import java.util.List;
+
+public interface IProductService extends IService<Product> {
+
+ int addOrEditProduct(ProductDto productDto);
+
+ int delProductByIds(Long[] ids);
+
+ List<ProductTreeDto> selectProductList(ProductDto productDto);
+
+}
diff --git a/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
new file mode 100644
index 0000000..754d93f
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
@@ -0,0 +1,52 @@
+package com.ruoyi.basic.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.ProductDto;
+import com.ruoyi.basic.dto.ProductModelDto;
+import com.ruoyi.basic.mapper.ProductModelMapper;
+import com.ruoyi.basic.pojo.ProductModel;
+import com.ruoyi.basic.service.IProductModelService;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 銆愯濉啓鍔熻兘鍚嶇О銆慡ervice涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2025-05-19
+ */
+@Service
+@AllArgsConstructor
+public class ProductModelServiceImpl extends ServiceImpl<ProductModelMapper, ProductModel> implements IProductModelService {
+
+ private ProductModelMapper productModelMapper;
+
+ @Override
+ public int addOrEditProductModel(ProductModelDto productModelDto) {
+
+ if (productModelDto.getId() == null) {
+ ProductModel productModel = new ProductModel();
+ BeanUtils.copyProperties(productModelDto,productModel);
+ return productModelMapper.insert(productModel);
+ } else {
+ return productModelMapper.updateById(productModelDto);
+ }
+ }
+
+ @Override
+ public int delProductModel(Long[] ids) {
+ return productModelMapper.deleteBatchIds(Arrays.asList(ids));
+ }
+
+ @Override
+ public List<ProductModel> selectModelList(ProductDto productDto) {
+ LambdaQueryWrapper<ProductModel> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(ProductModel::getProductId, productDto.getId());
+ return productModelMapper.selectList(queryWrapper);
+ }
+}
diff --git a/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
new file mode 100644
index 0000000..9825b39
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
@@ -0,0 +1,118 @@
+package com.ruoyi.basic.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.ProductDto;
+import com.ruoyi.basic.dto.ProductTreeDto;
+import com.ruoyi.basic.mapper.ProductMapper;
+import com.ruoyi.basic.mapper.ProductModelMapper;
+import com.ruoyi.basic.pojo.Product;
+import com.ruoyi.basic.pojo.ProductModel;
+import com.ruoyi.basic.service.IProductService;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements IProductService {
+
+ private ProductMapper productMapper;
+
+ private ProductModelMapper productModelMapper;
+
+ @Override
+ public List<ProductTreeDto> selectProductList(ProductDto productDto) {
+ // 鏌ヨ鏍硅妭鐐癸紙parentId 涓� null锛�
+ LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.isNull(Product::getParentId);
+
+ // 濡傛灉鏈変骇鍝佸悕绉版潯浠讹紝娣诲姞鍒版煡璇腑
+ if (productDto.getProductName() != null && !productDto.getProductName().isEmpty()) {
+ queryWrapper.like(Product::getProductName, productDto.getProductName());
+ }
+
+ // 鏌ヨ鏍硅妭鐐瑰垪琛�
+ List<Product> rootProducts = productMapper.selectList(queryWrapper);
+
+ // 杞崲涓烘爲鑺傜偣骞堕�掑綊鏋勫缓瀛愭爲
+ List<ProductTreeDto> tree = new ArrayList<>();
+ for (Product product : rootProducts) {
+ ProductTreeDto node = convertToTreeDto(product);
+ node.setChildren(buildChildrenNodes(product.getId()));
+ tree.add(node);
+ }
+ return tree;
+ }
+
+ // 閫掑綊鏋勫缓瀛愯妭鐐�
+ private List<ProductTreeDto> buildChildrenNodes(Long parentId) {
+ // 鏌ヨ褰撳墠鐖惰妭鐐圭殑瀛愯妭鐐�
+ LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(Product::getParentId, parentId);
+ List<Product> childProducts = productMapper.selectList(queryWrapper);
+
+ // 杞崲瀛愯妭鐐瑰苟閫掑綊鏋勫缓瀹冧滑鐨勫瓙鏍�
+ List<ProductTreeDto> children = new ArrayList<>();
+ for (Product child : childProducts) {
+ ProductTreeDto childNode = convertToTreeDto(child);
+ childNode.setChildren(buildChildrenNodes(child.getId()));
+ children.add(childNode);
+ }
+
+ return children;
+ }
+
+ // 灏� Product 杞崲涓� ProductTreeDto
+ private ProductTreeDto convertToTreeDto(Product product) {
+ ProductTreeDto dto = new ProductTreeDto();
+ BeanUtils.copyProperties(product, dto);
+ dto.setLabel(product.getProductName()); // 璁剧疆 label 涓轰骇鍝佸悕绉�
+ dto.setChildren(new ArrayList<>());
+ return dto;
+ }
+
+ @Override
+ public int addOrEditProduct(ProductDto productDto) {
+ if (productDto.getId() == null) {
+ // 鏂板浜у搧閫昏緫
+ if (productDto.getParentId() == null) {
+ // 鑻ユ湭鎸囧畾鐖惰妭鐐癸紝榛樿涓烘牴鑺傜偣锛坧arentId 璁句负 null锛�
+ productDto.setParentId(null);
+ } else {
+ // 妫�鏌ョ埗鑺傜偣鏄惁瀛樺湪锛堝彲閫夛紝鏍规嵁涓氬姟闇�姹傦級
+ Product parent = productMapper.selectById(productDto.getParentId());
+ if (parent == null) {
+ throw new IllegalArgumentException("鐖惰妭鐐逛笉瀛樺湪锛屾棤娉曟坊鍔犲瓙浜у搧");
+ }
+ }
+ return productMapper.insert(productDto);
+ } else {
+ // 缂栬緫浜у搧閫昏緫
+ // 妫�鏌ヤ骇鍝佹槸鍚﹀瓨鍦紙鍙�夛紝鏍规嵁涓氬姟闇�姹傦級
+ Product existingProduct = productMapper.selectById(productDto.getId());
+ if (existingProduct == null) {
+ throw new IllegalArgumentException("瑕佺紪杈戠殑浜у搧涓嶅瓨鍦�");
+ }
+ return productMapper.updateById(productDto);
+ }
+ }
+
+ @Override
+ public int delProductByIds(Long[] ids) {
+ // 1. 鍒犻櫎瀛愯〃 product_model 涓叧鑱旂殑鏁版嵁
+ LambdaQueryWrapper<ProductModel> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.in(ProductModel::getProductId, ids);
+ productModelMapper.delete(queryWrapper);
+
+ // 2. 鍒犻櫎涓昏〃 product 鏁版嵁
+ int deleteCount = productMapper.deleteBatchIds(Arrays.asList(ids));
+
+ return deleteCount;
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java b/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java
index 99a3ea2..ae7c5e7 100644
--- a/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java
@@ -9,6 +9,7 @@
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
import java.util.List;
@RestController
@@ -132,4 +133,17 @@
return AjaxResult.success(invoiceLedgerService.invoiceLedgerSalesAccount(page,invoiceLedgerDto));
}
+ /**
+ * 鏈湀寮�绁ㄩ噾棰�
+ */
+ @GetMapping("/getInvoiceAmount")
+ public AjaxResult getInvoiceAmount() {
+ try {
+ BigDecimal amount = invoiceLedgerService.getInvoiceAmount();
+ return AjaxResult.success(amount != null ? amount : BigDecimal.ZERO);
+ } catch (Exception e) {
+ return AjaxResult.error("鑾峰彇寮�绁ㄩ噾棰濆け璐ワ細" + e.getMessage());
+ }
+ }
+
}
diff --git a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
index 5697f89..7279df7 100644
--- a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
@@ -8,6 +8,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import java.math.BigDecimal;
import java.util.List;
@RestController
@@ -69,5 +70,16 @@
return AjaxResult.success(receiptPaymentService.receiptPaymentInfo(id));
}
-
+ /**
+ * 鏈湀鍥炴閲戦
+ */
+ @GetMapping("/getReceiptAmount")
+ public AjaxResult getReceiptAmount() {
+ try {
+ BigDecimal amount = receiptPaymentService.getReceiptAmount();
+ return AjaxResult.success(amount != null ? amount : BigDecimal.ZERO);
+ } catch (Exception e) {
+ return AjaxResult.error("鑾峰彇鍚堝悓閲戦澶辫触锛�" + e.getMessage());
+ }
+ }
}
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index fae38e5..d21a2dd 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -14,6 +14,7 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
import java.util.List;
/**
@@ -83,11 +84,12 @@
/**
* 鏌ヨ閿�鍞彴璐︿笉鍒嗛〉
+ *
* @param salesLedgerDto
* @return
*/
@GetMapping("/listNoPage")
- public AjaxResult listNoPage(SalesLedgerDto salesLedgerDto){
+ public AjaxResult listNoPage(SalesLedgerDto salesLedgerDto) {
List<SalesLedger> list = salesLedgerService.selectSalesLedgerList(salesLedgerDto);
return AjaxResult.success(list);
}
@@ -103,4 +105,25 @@
}
return toAjax(commonFileService.deleteSalesLedgerByIds(ids));
}
+
+ /**
+ * 鏈湀閿�鍞悎鍚岄噾棰�
+ */
+ @GetMapping("/getContractAmount")
+ public AjaxResult getContractAmount() {
+ try {
+ BigDecimal amount = salesLedgerService.getContractAmount();
+ return AjaxResult.success(amount != null ? amount : BigDecimal.ZERO);
+ } catch (Exception e) {
+ return AjaxResult.error("鑾峰彇鍚堝悓閲戦澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 瀹㈡埛鍚堝悓閲戦TOP5缁熻
+ */
+ @GetMapping("/getTopFiveList")
+ public AjaxResult getTopFiveList() {
+ return AjaxResult.success(salesLedgerService.getTopFiveList());
+ }
}
diff --git a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
index 870db65..4f736c7 100644
--- a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
+++ b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -1,10 +1,11 @@
package com.ruoyi.sales.service;
-import java.util.List;
-
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.sales.dto.SalesLedgerDto;
import com.ruoyi.sales.pojo.SalesLedger;
+
+import java.math.BigDecimal;
+import java.util.List;
/**
* 閿�鍞彴璐ervice鎺ュ彛
@@ -23,4 +24,8 @@
SalesLedgerDto getSalesLedgerWithProducts(SalesLedgerDto salesLedgerDto);
List getSalesNo();
+
+ BigDecimal getContractAmount();
+
+ List getTopFiveList();
}
diff --git a/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java b/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java
index f159d89..7e69edc 100644
--- a/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java
+++ b/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java
@@ -2,13 +2,13 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.basic.dto.SupplierManageDto;
import com.ruoyi.common.vo.FileVo;
import com.ruoyi.sales.dto.InvoiceLedgerDto;
import com.ruoyi.sales.pojo.InvoiceLedgerFile;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
import java.util.List;
public interface InvoiceLedgerService {
@@ -85,4 +85,6 @@
* @return
*/
IPage<InvoiceLedgerDto> invoiceLedgerSalesAccount(Page page, InvoiceLedgerDto invoiceLedgerDto);
+
+ BigDecimal getInvoiceAmount();
}
diff --git a/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java b/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
index 57ff4c8..0689fcf 100644
--- a/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
+++ b/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
@@ -5,6 +5,7 @@
import com.ruoyi.sales.dto.ReceiptPaymentDto;
import com.ruoyi.sales.pojo.ReceiptPayment;
+import java.math.BigDecimal;
import java.util.List;
public interface ReceiptPaymentService {
@@ -44,4 +45,6 @@
* @return
*/
ReceiptPaymentDto receiptPaymentInfo(Integer id);
+
+ BigDecimal getReceiptAmount();
}
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 89520b4..2fc0eb7 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
@@ -5,7 +5,6 @@
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.dto.SupplierManageDto;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.vo.FileVo;
import com.ruoyi.sales.dto.InvoiceLedgerDto;
@@ -29,8 +28,10 @@
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.math.BigDecimal;
-import java.util.Collections;
+import java.time.LocalDate;
+import java.time.YearMonth;
import java.util.List;
+import java.util.Objects;
import java.util.UUID;
import java.util.stream.Collectors;
@@ -242,4 +243,25 @@
return invoiceLedgerDtoIPage;
}
+ @Override
+ public BigDecimal getInvoiceAmount() {
+ LocalDate now = LocalDate.now();
+ YearMonth currentMonth = YearMonth.from(now);
+
+ // 鍒涘缓LambdaQueryWrapper
+ LambdaQueryWrapper<InvoiceLedger> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.ge(InvoiceLedger::getInvoiceDate, currentMonth.atDay(1).atStartOfDay()) // 澶т簬绛変簬鏈湀绗竴澶�
+ .lt(InvoiceLedger::getInvoiceDate, currentMonth.plusMonths(1).atDay(1).atStartOfDay()); // 灏忎簬涓嬫湀绗竴澶�
+
+ // 鎵ц鏌ヨ骞惰绠楁�诲拰
+ List<InvoiceLedger> invoiceLedgers = invoiceLedgerMapper.selectList(queryWrapper);
+
+ BigDecimal totalContractAmount = invoiceLedgers.stream()
+ .map(InvoiceLedger::getInvoiceAmount)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+ return totalContractAmount;
+ }
+
}
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 661e1eb..93d3783 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
@@ -11,7 +11,11 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.YearMonth;
import java.util.List;
+import java.util.Objects;
@Service
public class ReceiptPaymentServiceImpl extends ServiceImpl<ReceiptPaymentMapper,ReceiptPayment> implements ReceiptPaymentService {
@@ -75,4 +79,25 @@
public ReceiptPaymentDto receiptPaymentInfo(Integer id) {
return receiptPaymentMapper.receiptPaymentInfo(id);
}
+
+ @Override
+ public BigDecimal getReceiptAmount() {
+ LocalDate now = LocalDate.now();
+ YearMonth currentMonth = YearMonth.from(now);
+
+ // 鍒涘缓LambdaQueryWrapper
+ LambdaQueryWrapper<ReceiptPayment> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.ge(ReceiptPayment::getReceiptPaymentDate, currentMonth.atDay(1).atStartOfDay()) // 澶т簬绛変簬鏈湀绗竴澶�
+ .lt(ReceiptPayment::getReceiptPaymentDate, currentMonth.plusMonths(1).atDay(1).atStartOfDay()); // 灏忎簬涓嬫湀绗竴澶�
+
+ // 鎵ц鏌ヨ骞惰绠楁�诲拰
+ List<ReceiptPayment> receiptPayments = receiptPaymentMapper.selectList(queryWrapper);
+
+ BigDecimal totalContractAmount = receiptPayments.stream()
+ .map(ReceiptPayment::getReceiptPaymentAmount)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+ return totalContractAmount;
+ }
}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 988410d..557b898 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -32,9 +32,13 @@
import java.io.IOException;
import java.lang.reflect.Field;
import java.math.BigDecimal;
-import java.nio.file.*;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.TimeUnit;
@@ -124,6 +128,33 @@
).collect(Collectors.toList());
}
+ @Override
+ public BigDecimal getContractAmount() {
+ LocalDate now = LocalDate.now();
+ YearMonth currentMonth = YearMonth.from(now);
+
+ // 鍒涘缓LambdaQueryWrapper
+ LambdaQueryWrapper<SalesLedger> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.ge(SalesLedger::getEntryDate, currentMonth.atDay(1).atStartOfDay()) // 澶т簬绛変簬鏈湀绗竴澶�
+ .lt(SalesLedger::getEntryDate, currentMonth.plusMonths(1).atDay(1).atStartOfDay()); // 灏忎簬涓嬫湀绗竴澶�
+
+ // 鎵ц鏌ヨ骞惰绠楁�诲拰
+ List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(queryWrapper);
+
+ BigDecimal totalContractAmount = salesLedgers.stream()
+ .map(SalesLedger::getContractAmount)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+ return totalContractAmount;
+ }
+
+ @Override
+ public List getTopFiveList() {
+
+ return null;
+ }
+
/**
* 涓嬪垝绾垮懡鍚嶈浆椹煎嘲鍛藉悕
*/
@@ -192,7 +223,7 @@
// 4. 澶勭悊瀛愯〃鏁版嵁
List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
if (productList != null && !productList.isEmpty()) {
- handleSalesLedgerProducts(salesLedger.getId(), productList,salesLedgerDto.getType());
+ handleSalesLedgerProducts(salesLedger.getId(), productList, salesLedgerDto.getType());
updateMainContractAmount(
salesLedger.getId(),
productList,
@@ -287,7 +318,7 @@
}
- private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products,Integer type) {
+ private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) {
// 鎸塈D鍒嗙粍锛屽尯鍒嗘柊澧炲拰鏇存柊鐨勮褰�
Map<Boolean, List<SalesLedgerProduct>> partitionedProducts = products.stream()
.peek(p -> p.setSalesLedgerId(salesLedgerId))
--
Gitblit v1.9.3