From d697e4fa4468a803d97905164da5cbdded859858 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期一, 20 四月 2026 10:46:11 +0800
Subject: [PATCH] Merge branch 'refs/heads/dev_New' into dev_西宁_湟水峡

---
 src/main/java/com/ruoyi/basic/service/impl/CustomerPrivateServiceImpl.java |  132 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 132 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/service/impl/CustomerPrivateServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/CustomerPrivateServiceImpl.java
new file mode 100644
index 0000000..95f6193
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/service/impl/CustomerPrivateServiceImpl.java
@@ -0,0 +1,132 @@
+package com.ruoyi.basic.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.CustomerPrivateDto;
+import com.ruoyi.basic.dto.CustomerPrivatePoolDto;
+import com.ruoyi.basic.mapper.CustomerMapper;
+import com.ruoyi.basic.mapper.CustomerPrivatePoolMapper;
+import com.ruoyi.basic.pojo.*;
+import com.ruoyi.basic.mapper.CustomerPrivateMapper;
+import com.ruoyi.basic.service.CustomerFollowUpService;
+import com.ruoyi.basic.service.CustomerPrivateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.service.CustomerReturnVisitService;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.security.LoginUser;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.sales.mapper.SalesLedgerMapper;
+import com.ruoyi.sales.pojo.SalesLedger;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 瀹㈡埛妗f 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-17 10:39:09
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class CustomerPrivateServiceImpl extends ServiceImpl<CustomerPrivateMapper, CustomerPrivate> implements CustomerPrivateService {
+
+
+    @Autowired
+    private CustomerPrivatePoolMapper customerPrivatePoolMapper;
+
+    @Autowired
+    private CustomerFollowUpService customerFollowUpService;
+
+    @Autowired
+    private CustomerReturnVisitService customerReturnVisitService;
+    @Autowired
+    private SalesLedgerMapper salesLedgerMapper;
+
+    @Autowired
+    private  CustomerPrivateMapper customerPrivateMapper;
+    @Autowired
+    private CustomerPrivateService customerPrivateService;
+
+
+    @Override
+    public Boolean add(CustomerPrivateDto customerPrivateDto) {
+        //鏂板绉佹捣 瀹㈡埛
+        this.save(customerPrivateDto);
+        //鏂板绉佹捣璁板綍
+        CustomerPrivatePool customerPrivatePool = new CustomerPrivatePool();
+        customerPrivatePool.setCustomerId(customerPrivateDto.getId());
+        customerPrivatePool.setType(0L);
+        customerPrivatePool.setBoundId(SecurityUtils.getLoginUser().getUserId());
+        customerPrivatePoolMapper.insert(customerPrivatePool);
+        return true;
+    }
+
+
+    @Override
+    public Integer delete(List<Long> ids) {
+        List<CustomerPrivatePool> customerPrivatePools = customerPrivatePoolMapper.selectList(new QueryWrapper<CustomerPrivatePool>().lambda().in(CustomerPrivatePool::getId, ids));
+        List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(new QueryWrapper<SalesLedger>().lambda().in(SalesLedger::getCustomerId, customerPrivatePools.stream().map(CustomerPrivatePool::getCustomerId).collect(Collectors.toList())));
+        if (!CollectionUtils.isEmpty(salesLedgers)) {
+            throw new RuntimeException("瀹㈡埛鏈夐攢鍞悎鍚岋紝璇峰厛鍒犻櫎閿�鍞悎鍚�");
+        }
+        if (CollectionUtils.isEmpty(customerPrivatePools)) {
+            throw new RuntimeException("瀹㈡埛涓嶅瓨鍦�");
+        }
+        customerFollowUpService.remove(new QueryWrapper<CustomerFollowUp>().lambda().in(CustomerFollowUp::getCustomerPrivatePoolId, customerPrivatePools.stream().map(CustomerPrivatePool::getCustomerId).collect(Collectors.toList())));
+        customerReturnVisitService.remove(new QueryWrapper<CustomerReturnVisit>().lambda().in(CustomerReturnVisit::getCustomerPrivatePoolId, customerPrivatePools.stream().map(CustomerPrivatePool::getCustomerId).collect(Collectors.toList())));
+        customerPrivatePools.stream().forEach(customerPrivatePool -> {
+            customerPrivatePool.setDeleteFlag(1);
+            customerPrivatePoolMapper.updateById(customerPrivatePool);
+        });
+        return 1;
+
+    }
+
+    @Override
+    public R importData(MultipartFile file) {
+        try {
+            List<CustomerPrivate> existingList = customerPrivateService.list();
+            java.util.Set<String> existingCustomerNames = existingList.stream()
+                    .map(CustomerPrivate::getCustomerName)
+                    .collect(Collectors.toSet());
+
+            ExcelUtil<CustomerPrivate> util = new ExcelUtil<CustomerPrivate>(CustomerPrivate.class);
+            List<CustomerPrivate> userList = util.importExcel(file.getInputStream());
+            if (CollectionUtils.isEmpty(userList)) {
+                return R.fail("妯℃澘閿欒鎴栧鍏ユ暟鎹负绌�");
+            }
+
+            int successCount = 0;
+            int skipCount = 0;
+            for (CustomerPrivate user : userList) {
+                if (existingCustomerNames.contains(user.getCustomerName())) {
+                    skipCount++;
+                    continue;
+                }
+                CustomerPrivateDto customerPrivateDto = new CustomerPrivateDto();
+                BeanUtils.copyProperties(user, customerPrivateDto);
+                this.add(customerPrivateDto);
+                existingCustomerNames.add(user.getCustomerName());
+                successCount++;
+            }
+            return R.ok("瀵煎叆瀹屾垚锛屾垚鍔�" + successCount + "鏉★紝璺宠繃閲嶅" + skipCount + "鏉�");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.fail("瀵煎叆澶辫触锛�" + e.getMessage());
+        }
+    }
+}

--
Gitblit v1.9.3