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