From 9f7fd9ba49b2ad983e57987b9d9c14190244e158 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 20 五月 2026 15:35:20 +0800
Subject: [PATCH] 导入销售台账,校验产品以及客户是否存在

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java |   58 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 35 insertions(+), 23 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 31cc19a..05b1ea7 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.sales.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -147,14 +148,14 @@
         List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(productWrapper);
         if (type.equals(SaleEnum.PURCHASE)) {
             // 鏌ヨ閫�璐т俊鎭�
-            List<Long> productIds = salesLedgerProducts.stream().map(SalesLedgerProduct::getId).collect(Collectors.toList());
+            List<Long> productIds = salesLedgerProducts.stream().map(SalesLedgerProduct::getProductModelId).collect(Collectors.toList());
             List<SimpleReturnOrderGroupDto> groupListByProductIds = new ArrayList<>();
             if(CollectionUtils.isNotEmpty(productIds)){
                 groupListByProductIds = purchaseReturnOrderProductsMapper.getReturnOrderGroupListByProductIds(productIds);
             }
-            Map<Long, BigDecimal> returnOrderGroupDtoMap = groupListByProductIds.stream().collect(Collectors.toMap(SimpleReturnOrderGroupDto::getSalesLedgerProductId, SimpleReturnOrderGroupDto::getSumReturnQuantity));
+            Map<Long, BigDecimal> returnOrderGroupDtoMap = groupListByProductIds.stream().collect(Collectors.toMap(SimpleReturnOrderGroupDto::getProductModelId, SimpleReturnOrderGroupDto::getSumReturnQuantity));
             salesLedgerProducts.forEach(item -> {
-                BigDecimal returnQuality = returnOrderGroupDtoMap.getOrDefault(item.getId(), BigDecimal.ZERO);
+                BigDecimal returnQuality = returnOrderGroupDtoMap.getOrDefault(item.getProductModelId(), BigDecimal.ZERO);
                 item.setReturnQuality(returnQuality);
                 item.setAvailableQuality(item.getQuantity().subtract(returnQuality));
             });
@@ -347,9 +348,17 @@
             if (CollectionUtils.isEmpty(salesLedgerImportDtoList)) return AjaxResult.error("閿�鍞彴璐︽暟鎹负绌猴紒");
             List<SalesLedgerImportDto> salesLedgerProductImportDtoList = stringListMap.get("閿�鍞骇鍝佹暟鎹�");
             if (CollectionUtils.isEmpty(salesLedgerProductImportDtoList)) return AjaxResult.error("閿�鍞骇鍝佹暟鎹负绌猴紒");
-            // 瀹㈡埛鏁版嵁
-            List<Customer> customers = customerMapper.selectList(new LambdaQueryWrapper<Customer>().in(Customer::getCustomerName,
-                    salesLedgerImportDtoList.stream().map(SalesLedgerImportDto::getCustomerName).collect(Collectors.toList())));
+            // 瀹㈡埛鏁版嵁 - 鍙傝�� listPage 鏌ヨ绉佹捣瀹㈡埛锛坱ype = 0锛�
+            // type = 0锛堢娴峰鎴凤級鎴栬�� type = 1锛堝叕娴峰鎴凤級涓斿凡琚垎閰嶏紝骞朵笖鏄嚜宸遍鐢ㄣ�佽嚜宸卞垱寤烘垨鑰呭叡浜粰鑷繁鐨勫鎴�
+            Long loginUserId = loginUser.getUser().getUserId();
+            List<Customer> customers = customerMapper.selectList(new QueryWrapper<Customer>()
+                    .in("customer_name", salesLedgerImportDtoList.stream()
+                            .map(SalesLedgerImportDto::getCustomerName).collect(Collectors.toList()))
+                    .and(wrapper -> wrapper.eq("type", 0)
+                            .or(wrapper2 -> wrapper2.eq("type", 1).eq("is_assigned", 1)))
+                    .and(wrapper -> wrapper.eq("usage_user", loginUserId)
+                            .or(wrapper2 -> wrapper2.eq("create_user", loginUserId)
+                                    .or(wrapper3 -> wrapper3.exists("select 1 from customer_user cu where cu.customer_id = customer.id and cu.user_id = " + loginUserId)))));
 //            // 瑙勬牸鍨嬪彿鏁版嵁
 //            List<ProductModel> productModels = productModelMapper.selectList(new LambdaQueryWrapper<ProductModel>().in(ProductModel::getModel,
 //                    salesLedgerProductImportDtoList.stream().map(SalesLedgerImportDto::getSpecificationModel).collect(Collectors.toList())));
@@ -370,17 +379,16 @@
                 SalesLedger salesLedger = new SalesLedger();
                 BeanUtils.copyProperties(salesLedgerImportDto, salesLedger);
                 salesLedger.setExecutionDate(DateUtils.toLocalDate(salesLedgerImportDto.getExecutionDate()));
+                salesLedger.setDeliveryDate(DateUtils.toLocalDate(salesLedgerImportDto.getDeliveryDate()));
                 // 閫氳繃瀹㈡埛鍚嶇О鏌ヨ瀹㈡埛ID锛屽鎴峰悎鍚屽彿
-                salesLedger.setCustomerId(customers.stream()
+                Optional<Customer> customerOptional = customers.stream()
                         .filter(customer -> customer.getCustomerName().equals(salesLedger.getCustomerName()))
-                        .findFirst()
-                        .map(Customer::getId)
-                        .orElse(null));
-                salesLedger.setCustomerContractNo(customers.stream()
-                        .filter(customer -> customer.getCustomerName().equals(salesLedger.getCustomerName()))
-                        .findFirst()
-                        .map(Customer::getTaxpayerIdentificationNumber)
-                        .orElse(null));
+                        .findFirst();
+                if (customerOptional.isEmpty()) {
+                    throw new RuntimeException("瀹㈡埛:" + salesLedger.getCustomerName() + "涓嶅瓨鍦紒鎴栬�呴潪绉佹捣鐢ㄦ埛");
+                }
+                salesLedger.setCustomerId(customerOptional.get().getId());
+                salesLedger.setCustomerContractNo(customerOptional.get().getTaxpayerIdentificationNumber());
                 Long aLong = sysUsers.stream()
                         .filter(sysUser -> sysUser.getNickName().equals(salesLedger.getEntryPerson()))
                         .findFirst()
@@ -410,13 +418,16 @@
                     salesLedgerProduct.setTaxExclusiveTotalPrice(salesLedgerProduct.getTaxInclusiveTotalPrice().divide(new BigDecimal(1).add(salesLedgerProduct.getTaxRate().divide(new BigDecimal(100))), 2, RoundingMode.HALF_UP));
                     salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity());
                     salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxExclusiveTotalPrice());
-                    list.stream()
-                            .filter(map -> map.get("productName").equals(salesLedgerProduct.getProductCategory()) && map.get("model").equals(salesLedgerProduct.getSpecificationModel()))
-                            .findFirst()
-                            .ifPresent(map -> {
-                                salesLedgerProduct.setProductModelId(Long.parseLong(map.get("modelId").toString()));
-                                salesLedgerProduct.setProductId(Long.parseLong(map.get("id").toString()));
-                            });
+                    // 鏍¢獙浜у搧瑙勬牸鏄惁瀛樺湪
+                    Optional<Map<String, Object>> productModelOptional = list.stream()
+                            .filter(map -> Objects.equals(map.get("productName"), salesLedgerProduct.getProductCategory()) && Objects.equals(map.get("model"), salesLedgerProduct.getSpecificationModel()))
+                            .findFirst();
+                    if (productModelOptional.isEmpty()) {
+                        throw new RuntimeException("浜у搧澶х被:" + salesLedgerProduct.getProductCategory() + ",瑙勬牸鍨嬪彿:" + salesLedgerProduct.getSpecificationModel() + "涓嶅瓨鍦紒");
+                    }
+                    Map<String, Object> productModelMap = productModelOptional.get();
+                    salesLedgerProduct.setProductModelId(Long.parseLong(productModelMap.get("modelId").toString()));
+                    salesLedgerProduct.setProductId(Long.parseLong(productModelMap.get("id").toString()));
 //                    salesLedgerProduct.setProductId(productList.stream()
 //                            .filter(product -> product.getProductName().equals(salesLedgerProduct.getProductCategory()))
 //                            .findFirst()
@@ -431,6 +442,7 @@
                     salesLedgerProduct.setRegisterDate(LocalDateTime.now());
                     salesLedgerProduct.setApproveStatus(0);
                     salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProductImportDto.getTaxInclusiveTotalPrice());
+                    salesLedgerProduct.setIsProduction(salesLedgerProductImportDto.getIsProduction() == 1);
                     salesLedgerProductMapper.insert(salesLedgerProduct);
                     // 娣诲姞鐢熶骇鏁版嵁
                     salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
@@ -440,8 +452,8 @@
             return AjaxResult.success("瀵煎叆鎴愬姛");
         } catch (Exception e) {
             e.printStackTrace();
+            return AjaxResult.error("瀵煎叆澶辫触锛�" + e.getMessage());
         }
-        return AjaxResult.success("瀵煎叆澶辫触");
     }
 
     @Override

--
Gitblit v1.9.3