1111
This commit is contained in:
parent
21464905de
commit
33aa5a4302
@ -2,23 +2,38 @@ package com.ruoyi.cus.service.impl;
|
|||||||
|
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
|
import com.ruoyi.cus.domain.*;
|
||||||
import com.ruoyi.cus.dto.CusBankImportDTO;
|
import com.ruoyi.cus.dto.CusBankImportDTO;
|
||||||
import com.ruoyi.cus.dto.CusImportDTO;
|
import com.ruoyi.cus.dto.CusImportDTO;
|
||||||
import com.ruoyi.cus.service.ICusImportService;
|
import com.ruoyi.cus.service.*;
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public class CusImportServiceImpl implements ICusImportService {
|
public class CusImportServiceImpl implements ICusImportService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ICusMainService cusMainService;
|
||||||
|
@Autowired
|
||||||
|
private ICusCompanyService cusCompanyService;
|
||||||
|
@Autowired
|
||||||
|
private ICusManagerService cusManagerService;
|
||||||
|
@Autowired
|
||||||
|
private ICusContactsService cusContactsService;
|
||||||
|
@Autowired
|
||||||
|
private ICusBankService cusBankService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入客户及联系人信息
|
* 导入客户及联系人信息
|
||||||
*
|
*
|
||||||
@ -42,20 +57,15 @@ public class CusImportServiceImpl implements ICusImportService {
|
|||||||
workbook.close();
|
workbook.close();
|
||||||
// 重新获取输入流用于数据读取
|
// 重新获取输入流用于数据读取
|
||||||
InputStream inputStream = file.getInputStream();
|
InputStream inputStream = file.getInputStream();
|
||||||
|
|
||||||
// 读取第二个sheet页数据(索引为1)
|
// 读取第二个sheet页数据(索引为1)
|
||||||
ExcelUtil<CusImportDTO> cusUtil = new ExcelUtil<>(CusImportDTO.class);
|
ExcelUtil<CusImportDTO> cusUtil = new ExcelUtil<>(CusImportDTO.class);
|
||||||
List<CusImportDTO> secondSheetList = cusUtil.importExcel("客户联系人", inputStream, 1);
|
List<CusImportDTO> secondSheetList = cusUtil.importExcel("客户联系人", inputStream, 1);
|
||||||
|
|
||||||
System.out.println("第二个sheet页数据条数: " + (secondSheetList != null ? secondSheetList.size() : 0));
|
|
||||||
|
|
||||||
// 重新获取输入流用于读取第三个sheet页数据
|
// 重新获取输入流用于读取第三个sheet页数据
|
||||||
InputStream thirdSheetInputStream = file.getInputStream();
|
InputStream thirdSheetInputStream = file.getInputStream();
|
||||||
|
|
||||||
// 读取第三个sheet页数据(索引为2)
|
// 读取第三个sheet页数据(索引为2)
|
||||||
ExcelUtil<CusBankImportDTO> bankUtil = new ExcelUtil<>(CusBankImportDTO.class);
|
ExcelUtil<CusBankImportDTO> bankUtil = new ExcelUtil<>(CusBankImportDTO.class);
|
||||||
List<CusBankImportDTO> thirdSheetList = bankUtil.importExcel("银行资料", thirdSheetInputStream, 0);
|
List<CusBankImportDTO> thirdSheetList = bankUtil.importExcel("银行资料", thirdSheetInputStream, 0);
|
||||||
System.out.println("第三个sheet页数据条数: " + (thirdSheetList != null ? thirdSheetList.size() : 0));
|
saveCusAndBank(secondSheetList, thirdSheetList);
|
||||||
return AjaxResult.success("导入成功");
|
return AjaxResult.success("导入成功");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return AjaxResult.error("导入失败:" + e.getMessage());
|
return AjaxResult.error("导入失败:" + e.getMessage());
|
||||||
@ -71,10 +81,105 @@ public class CusImportServiceImpl implements ICusImportService {
|
|||||||
* @date 15:30 2025/11/19
|
* @date 15:30 2025/11/19
|
||||||
**/
|
**/
|
||||||
private void saveCusAndBank(List<CusImportDTO> cusList, List<CusBankImportDTO> bankList) {
|
private void saveCusAndBank(List<CusImportDTO> cusList, List<CusBankImportDTO> bankList) {
|
||||||
|
if (cusList == null || cusList.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 使用Map按客户代码分组,保留每个客户的所有联系人信息
|
||||||
|
Map<String, List<CusImportDTO>> customerGroupMap = cusList.stream()
|
||||||
|
.collect(Collectors.groupingBy(CusImportDTO::getCusCode));
|
||||||
|
|
||||||
|
// 准备批量插入的集合
|
||||||
|
List<CusMain> cusMainList = new ArrayList<>();
|
||||||
|
List<CusCompany> cusCompanyList = new ArrayList<>();
|
||||||
|
List<CusManager> cusManagerList = new ArrayList<>();
|
||||||
|
List<CusContacts> cusContactsList = new ArrayList<>();
|
||||||
|
// 遍历每个客户的联系人列表,只保存一次客户信息,但保存所有联系人
|
||||||
|
for (Map.Entry<String, List<CusImportDTO>> entry : customerGroupMap.entrySet()) {
|
||||||
|
List<CusImportDTO> customerContacts = entry.getValue();
|
||||||
|
if (customerContacts.isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 取第一个联系人记录作为客户基本信息(因为同一客户的基本信息是重复的)
|
||||||
|
CusImportDTO customerInfo = customerContacts.get(0);
|
||||||
|
// 为客户提供UUID
|
||||||
|
String customerId = UUID.randomUUID().toString();
|
||||||
|
// 保存客户主表信息 CusMain
|
||||||
|
CusMain customer = new CusMain();
|
||||||
|
customer.setId(customerId);
|
||||||
|
customer.setCusCode(customerInfo.getCusCode());
|
||||||
|
customer.setFullName(customerInfo.getFullName());
|
||||||
|
customer.setShortName(customerInfo.getShortName());
|
||||||
|
customer.setCusType(customerInfo.getCusType());
|
||||||
|
customer.setCountry(customerInfo.getCountry());
|
||||||
|
customer.setZoneName(customerInfo.getZoneName());
|
||||||
|
customer.setMainProds(customerInfo.getMainProds());
|
||||||
|
customer.setSiteUrl(customerInfo.getSiteUrl());
|
||||||
|
customer.setCreator(customerInfo.getCreateBy());
|
||||||
|
customer.setCreateTime(new Date());
|
||||||
|
customer.setUpdateTime(new Date());
|
||||||
|
customer.setRemark(customerInfo.getCusRemark());
|
||||||
|
cusMainList.add(customer);
|
||||||
|
|
||||||
|
// 保存客户公司信息表 CusCompany
|
||||||
|
CusCompany companyInfo = new CusCompany();
|
||||||
|
companyInfo.setCusId(customerId);
|
||||||
|
companyInfo.setCusFrom(customerInfo.getCusSource());
|
||||||
|
companyInfo.setCusLevel(customerInfo.getCusLevel());
|
||||||
|
companyInfo.setBusiType(customerInfo.getBusinessType());
|
||||||
|
companyInfo.setContactAddress(customerInfo.getContactAddress());
|
||||||
|
companyInfo.setCreator(customerInfo.getCreateBy());
|
||||||
|
companyInfo.setCreateTime(new Date());
|
||||||
|
cusCompanyList.add(companyInfo);
|
||||||
|
|
||||||
|
// 保存客户管理信息表 CusManager
|
||||||
|
CusManager managementInfo = new CusManager();
|
||||||
|
managementInfo.setCusId(customerId);
|
||||||
|
managementInfo.setUserName(customerInfo.getUserName());
|
||||||
|
managementInfo.setFollowStep(customerInfo.getFollowStep());
|
||||||
|
managementInfo.setSeasReason(customerInfo.getSeasReason());
|
||||||
|
managementInfo.setSeasGroup(customerInfo.getSeasGroup());
|
||||||
|
managementInfo.setOldDept(customerInfo.getOldDept());
|
||||||
|
managementInfo.setCreator(customerInfo.getCreateBy());
|
||||||
|
managementInfo.setCreateTime(new Date());
|
||||||
|
cusManagerList.add(managementInfo);
|
||||||
|
|
||||||
|
// 收集该客户的所有联系人信息 CusContacts
|
||||||
|
for (CusImportDTO contact : customerContacts) {
|
||||||
|
CusContacts customerContact = new CusContacts();
|
||||||
|
customerContact.setCusId(customerId);
|
||||||
|
customerContact.setName(contact.getName());
|
||||||
|
customerContact.setNickName(contact.getNickName());
|
||||||
|
customerContact.setEmail(contact.getEmail());
|
||||||
|
customerContact.setTelephone(contact.getTelephone());
|
||||||
|
customerContact.setSex(contact.getSex());
|
||||||
|
customerContact.setBirthday(new Date());
|
||||||
|
customerContact.setWhatsApp(contact.getWhatsApp());
|
||||||
|
customerContact.setCreator(contact.getCreateBy());
|
||||||
|
customerContact.setCreateTime(new Date());
|
||||||
|
cusContactsList.add(customerContact);
|
||||||
|
}
|
||||||
|
// 批量保存客户主表信息
|
||||||
|
if (!cusMainList.isEmpty()) {
|
||||||
|
cusMainService.saveBatch(cusMainList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量保存客户公司信息表
|
||||||
|
if (!cusCompanyList.isEmpty()) {
|
||||||
|
cusCompanyService.saveBatch(cusCompanyList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量保存客户管理信息表
|
||||||
|
if (!cusManagerList.isEmpty()) {
|
||||||
|
cusManagerService.saveBatch(cusManagerList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量保存客户联系人信息
|
||||||
|
if (!cusContactsList.isEmpty()) {
|
||||||
|
cusContactsService.saveBatch(cusContactsList);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user