diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/impl/CusImportServiceImpl.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/impl/CusImportServiceImpl.java index c483577..18940c4 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/impl/CusImportServiceImpl.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/impl/CusImportServiceImpl.java @@ -2,23 +2,38 @@ package com.ruoyi.cus.service.impl; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.cus.domain.*; import com.ruoyi.cus.dto.CusBankImportDTO; 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.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; @Service @Transactional(rollbackFor = Exception.class) 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(); // 重新获取输入流用于数据读取 InputStream inputStream = file.getInputStream(); - // 读取第二个sheet页数据(索引为1) ExcelUtil cusUtil = new ExcelUtil<>(CusImportDTO.class); List secondSheetList = cusUtil.importExcel("客户联系人", inputStream, 1); - - System.out.println("第二个sheet页数据条数: " + (secondSheetList != null ? secondSheetList.size() : 0)); - // 重新获取输入流用于读取第三个sheet页数据 InputStream thirdSheetInputStream = file.getInputStream(); - // 读取第三个sheet页数据(索引为2) ExcelUtil bankUtil = new ExcelUtil<>(CusBankImportDTO.class); List thirdSheetList = bankUtil.importExcel("银行资料", thirdSheetInputStream, 0); - System.out.println("第三个sheet页数据条数: " + (thirdSheetList != null ? thirdSheetList.size() : 0)); + saveCusAndBank(secondSheetList, thirdSheetList); return AjaxResult.success("导入成功"); } catch (Exception e) { return AjaxResult.error("导入失败:" + e.getMessage()); @@ -71,10 +81,105 @@ public class CusImportServiceImpl implements ICusImportService { * @date 15:30 2025/11/19 **/ private void saveCusAndBank(List cusList, List bankList) { + if (cusList == null || cusList.isEmpty()) { + return; + } + // 使用Map按客户代码分组,保留每个客户的所有联系人信息 + Map> customerGroupMap = cusList.stream() + .collect(Collectors.groupingBy(CusImportDTO::getCusCode)); + // 准备批量插入的集合 + List cusMainList = new ArrayList<>(); + List cusCompanyList = new ArrayList<>(); + List cusManagerList = new ArrayList<>(); + List cusContactsList = new ArrayList<>(); + // 遍历每个客户的联系人列表,只保存一次客户信息,但保存所有联系人 + for (Map.Entry> entry : customerGroupMap.entrySet()) { + List 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); + } + } } } -