From 602a2d4fd650ded48e8f4cd1a48f0e6de3b98053 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 08 五月 2025 17:42:09 +0800
Subject: [PATCH] 1.销售台账 2.关联产品

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 52 insertions(+), 8 deletions(-)

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 769cfe9..5048386 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -2,14 +2,23 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.mapper.CustomerMapper;
+import com.ruoyi.basic.pojo.Customer;
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.sales.dto.SalesLedgerDto;
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
+import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
 import com.ruoyi.sales.pojo.SalesLedger;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.sales.service.ISalesLedgerService;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 閿�鍞彴璐ervice涓氬姟灞傚鐞�
@@ -18,13 +27,38 @@
  * @date 2025-05-08
  */
 @Service
+@AllArgsConstructor
 public class SalesLedgerServiceImpl extends ServiceImpl<SalesLedgerMapper, SalesLedger> implements ISalesLedgerService {
-    @Autowired
+
     private SalesLedgerMapper salesLedgerMapper;
+
+    private CustomerMapper customerMapper;
+
+    private SalesLedgerProductMapper salesLedgerProductMapper;
 
     @Override
     public List<SalesLedger> selectSalesLedgerList(SalesLedger salesLedger) {
         return salesLedgerMapper.selectList(new LambdaQueryWrapper<>());
+    }
+
+    public List<SalesLedgerDto> getSalesLedgerWithProducts() {
+        List<SalesLedger> ledgers = salesLedgerMapper.selectList(new LambdaQueryWrapper<>());
+        List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(new LambdaQueryWrapper<>());
+
+        Map<Long, List<SalesLedgerProduct>> productMap = products.stream()
+                .collect(Collectors.groupingBy(SalesLedgerProduct::getSalesLedgerId));
+
+        return ledgers.stream().map(ledger -> {
+            SalesLedgerDto dto = new SalesLedgerDto();
+            org.springframework.beans.BeanUtils.copyProperties(ledger, dto);
+
+            List<SalesLedgerProduct> ledgerProducts = productMap.getOrDefault(ledger.getId(), Collections.emptyList());
+            if (!ledgerProducts.isEmpty()) {
+                dto.setHasChildren(true);
+                dto.setChildren(ledgerProducts);
+            }
+            return dto;
+        }).collect(Collectors.toList());
     }
 
     @Override
@@ -37,13 +71,23 @@
         return salesLedgerMapper.deleteBatchIds(Arrays.asList(ids));
     }
 
-    @Override
-    public int insertSalesLedger(SalesLedger salesLedger) {
-        return salesLedgerMapper.insert(salesLedger);
+    public int addOrUpdateSalesLedger(SalesLedger salesLedger) {
+        LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Customer::getId, salesLedger.getCustomerId());
+        Customer customer = customerMapper.selectOne(queryWrapper);
+        if (customer == null) {
+            throw new BaseException("鏈煡璇㈠埌瀵瑰簲鐨� Customer 淇℃伅");
+        }
+        salesLedger.setCustomerName(customer.getCustomerName());
+        salesLedger.setTenantId(customer.getTenantId());
+        return saveOrUpdates(salesLedger);
     }
 
-    @Override
-    public int updateSalesLedger(SalesLedger salesLedger) {
-        return salesLedgerMapper.updateById(salesLedger);
+    private int saveOrUpdates(SalesLedger salesLedger) {
+        if (salesLedger.getId() == null) {
+            return salesLedgerMapper.insert(salesLedger);
+        } else {
+            return salesLedgerMapper.updateById(salesLedger);
+        }
     }
 }

--
Gitblit v1.9.3