实体更新
This commit is contained in:
parent
33aa5a4302
commit
308248fbc4
@ -34,6 +34,10 @@ public class CusBank extends DlBaseEntity
|
||||
@Excel(name = "客户ID")
|
||||
private String cusId;
|
||||
|
||||
/** 客户名称 */
|
||||
@Excel(name = "客户名称")
|
||||
private String cusName;
|
||||
|
||||
/** 银行账号 */
|
||||
@Excel(name = "银行账号")
|
||||
private String bankAccount;
|
||||
|
||||
@ -30,6 +30,10 @@ public class CusCompany extends DlBaseEntity
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
/** 客户名称 */
|
||||
@Excel(name = "客户名称")
|
||||
private String cusName;
|
||||
|
||||
/** 客户ID */
|
||||
@Excel(name = "客户ID")
|
||||
private String cusId;
|
||||
|
||||
@ -36,6 +36,10 @@ public class CusContacts extends DlBaseEntity
|
||||
@Excel(name = "客户ID")
|
||||
private String cusId;
|
||||
|
||||
/** 客户名称 */
|
||||
@Excel(name = "客户名称")
|
||||
private String cusName;
|
||||
|
||||
/** 姓名 */
|
||||
@Excel(name = "姓名")
|
||||
private String name;
|
||||
|
||||
@ -34,6 +34,10 @@ public class CusManager extends DlBaseEntity
|
||||
@Excel(name = "客户ID")
|
||||
private String cusId;
|
||||
|
||||
/** 客户名称 */
|
||||
@Excel(name = "客户名称")
|
||||
private String cusName;
|
||||
|
||||
/** 业务员ID */
|
||||
@Excel(name = "业务员ID")
|
||||
private Long userId;
|
||||
|
||||
@ -7,22 +7,31 @@ import lombok.NoArgsConstructor;
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class CusBankImportDTO {
|
||||
@Excel(name = "客户代码")
|
||||
private String cusCode;
|
||||
@Excel(name = "银行账号")
|
||||
private String bankAccount;
|
||||
@Excel(name = "客户名称")
|
||||
private String cusName;
|
||||
@Excel(name = "税号")
|
||||
private String taxId;
|
||||
@Excel(name = "银行名称")
|
||||
private String bankName;
|
||||
@Excel(name = "币种")
|
||||
private String currency;
|
||||
@Excel(name = "银行账号")
|
||||
private String bankAccount;
|
||||
@Excel(name = "分支机构代码")
|
||||
private String branchCode;
|
||||
@Excel(name = "银行代码")
|
||||
private String bankCode;
|
||||
@Excel(name = "币种")
|
||||
private String currency;
|
||||
@Excel(name = "银行swift代码")
|
||||
private String swiftCode;
|
||||
@Excel(name = "银行地址")
|
||||
private String bankAddress;
|
||||
@Excel(name = "分支机构代码")
|
||||
private String branchCode;
|
||||
@Excel(name = "税号")
|
||||
private String taxId;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package com.ruoyi.cus.service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
@ -18,44 +19,58 @@ import com.ruoyi.cus.vo.ViewTimeVO;
|
||||
* @author vinjor-m
|
||||
* @date 2025-11-03
|
||||
*/
|
||||
public interface ICusMainService extends IService<CusMain>
|
||||
{
|
||||
public interface ICusMainService extends IService<CusMain> {
|
||||
IPage<MainVO> queryListPage(MainVO pageReqVO, Page<CusMain> page);
|
||||
|
||||
/**
|
||||
* 新增客户信息
|
||||
*
|
||||
* @param cusMainVO TODO
|
||||
* @author vinjor-M
|
||||
* @date 15:56 2025/11/6
|
||||
* @param cusMainVO TODO
|
||||
**/
|
||||
void saveNewCus(CusMainVO cusMainVO);
|
||||
|
||||
/**
|
||||
* 根据id查询客户信息
|
||||
* @author vinjor-M
|
||||
* @date 15:41 2025/11/12
|
||||
*
|
||||
* @param id 客户id
|
||||
* @return com.ruoyi.cus.vo.CusMainVO
|
||||
* @author vinjor-M
|
||||
* @date 15:41 2025/11/12
|
||||
**/
|
||||
CusMainVO getDataById(String id);
|
||||
|
||||
/**
|
||||
* 查看客户信息面板数据对象
|
||||
* @author vinjor-M
|
||||
* @date 10:34 2025/11/18
|
||||
*
|
||||
* @param id 数据id
|
||||
* @return com.ruoyi.cus.vo.CusViewVO
|
||||
* @author vinjor-M
|
||||
* @date 10:34 2025/11/18
|
||||
**/
|
||||
CusViewVO viewData(String id);
|
||||
|
||||
|
||||
/**
|
||||
* 获取客户其他信息
|
||||
*
|
||||
* @param cusId 客户id
|
||||
* @return com.ruoyi.cus.vo.CusViewVO
|
||||
* @author vinjor-M
|
||||
* @date 13:14 2025/11/18
|
||||
* @param id 客户id
|
||||
* @return com.ruoyi.cus.vo.CusViewVO
|
||||
**/
|
||||
CusViewVO getOtherInfo(String cusId);
|
||||
|
||||
/**
|
||||
* 通过名称保存客户主表信息
|
||||
*
|
||||
* @param cusMainList TODO
|
||||
* @return void
|
||||
* @author PQZ
|
||||
* @date 14:44 2025/11/20
|
||||
**/
|
||||
void saveOrUpdateByCusName(List<CusMain> cusMainList);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ import com.ruoyi.cus.domain.*;
|
||||
import com.ruoyi.cus.dto.CusBankImportDTO;
|
||||
import com.ruoyi.cus.dto.CusImportDTO;
|
||||
import com.ruoyi.cus.service.*;
|
||||
import com.ruoyi.utils.SnowflakeIdGenerator;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
@ -33,6 +34,8 @@ public class CusImportServiceImpl implements ICusImportService {
|
||||
private ICusContactsService cusContactsService;
|
||||
@Autowired
|
||||
private ICusBankService cusBankService;
|
||||
@Autowired
|
||||
private SnowflakeIdGenerator snowflakeIdGenerator;
|
||||
|
||||
/**
|
||||
* 导入客户及联系人信息
|
||||
@ -46,13 +49,9 @@ public class CusImportServiceImpl implements ICusImportService {
|
||||
// 先打印所有sheet页名称
|
||||
Workbook workbook = new XSSFWorkbook(file.getInputStream());
|
||||
int numberOfSheets = workbook.getNumberOfSheets();
|
||||
System.out.println("总共有 " + numberOfSheets + " 个sheet页");
|
||||
|
||||
for (int i = 0; i < numberOfSheets; i++) {
|
||||
Sheet sheet = workbook.getSheetAt(i);
|
||||
System.out.println("Sheet " + i + " 名称: " + sheet.getSheetName());
|
||||
}
|
||||
|
||||
// 关闭workbook
|
||||
workbook.close();
|
||||
// 重新获取输入流用于数据读取
|
||||
@ -87,13 +86,14 @@ public class CusImportServiceImpl implements ICusImportService {
|
||||
|
||||
// 使用Map按客户代码分组,保留每个客户的所有联系人信息
|
||||
Map<String, List<CusImportDTO>> customerGroupMap = cusList.stream()
|
||||
.collect(Collectors.groupingBy(CusImportDTO::getCusCode));
|
||||
.collect(Collectors.groupingBy(CusImportDTO::getFullName));
|
||||
|
||||
// 准备批量插入的集合
|
||||
List<CusMain> cusMainList = new ArrayList<>();
|
||||
List<CusCompany> cusCompanyList = new ArrayList<>();
|
||||
List<CusManager> cusManagerList = new ArrayList<>();
|
||||
List<CusContacts> cusContactsList = new ArrayList<>();
|
||||
List<CusBank> cusBankList = new ArrayList<>();
|
||||
// 遍历每个客户的联系人列表,只保存一次客户信息,但保存所有联系人
|
||||
for (Map.Entry<String, List<CusImportDTO>> entry : customerGroupMap.entrySet()) {
|
||||
List<CusImportDTO> customerContacts = entry.getValue();
|
||||
@ -103,9 +103,10 @@ public class CusImportServiceImpl implements ICusImportService {
|
||||
// 取第一个联系人记录作为客户基本信息(因为同一客户的基本信息是重复的)
|
||||
CusImportDTO customerInfo = customerContacts.get(0);
|
||||
// 为客户提供UUID
|
||||
String customerId = UUID.randomUUID().toString();
|
||||
// 保存客户主表信息 CusMain
|
||||
String customerId = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32);
|
||||
// 提取客户主表信息 CusMain
|
||||
CusMain customer = new CusMain();
|
||||
//绑定客户id
|
||||
customer.setId(customerId);
|
||||
customer.setCusCode(customerInfo.getCusCode());
|
||||
customer.setFullName(customerInfo.getFullName());
|
||||
@ -121,8 +122,9 @@ public class CusImportServiceImpl implements ICusImportService {
|
||||
customer.setRemark(customerInfo.getCusRemark());
|
||||
cusMainList.add(customer);
|
||||
|
||||
// 保存客户公司信息表 CusCompany
|
||||
// 提取客户公司信息表 CusCompany
|
||||
CusCompany companyInfo = new CusCompany();
|
||||
//绑定客户id
|
||||
companyInfo.setCusId(customerId);
|
||||
companyInfo.setCusFrom(customerInfo.getCusSource());
|
||||
companyInfo.setCusLevel(customerInfo.getCusLevel());
|
||||
@ -132,8 +134,9 @@ public class CusImportServiceImpl implements ICusImportService {
|
||||
companyInfo.setCreateTime(new Date());
|
||||
cusCompanyList.add(companyInfo);
|
||||
|
||||
// 保存客户管理信息表 CusManager
|
||||
// 提取客户管理信息表 CusManager
|
||||
CusManager managementInfo = new CusManager();
|
||||
//绑定客户id
|
||||
managementInfo.setCusId(customerId);
|
||||
managementInfo.setUserName(customerInfo.getUserName());
|
||||
managementInfo.setFollowStep(customerInfo.getFollowStep());
|
||||
@ -144,9 +147,11 @@ public class CusImportServiceImpl implements ICusImportService {
|
||||
managementInfo.setCreateTime(new Date());
|
||||
cusManagerList.add(managementInfo);
|
||||
|
||||
// 收集该客户的所有联系人信息 CusContacts
|
||||
// 提取客户的所有联系人信息 CusContacts
|
||||
for (CusImportDTO contact : customerContacts) {
|
||||
CusContacts customerContact = new CusContacts();
|
||||
customerContact.setId(snowflakeIdGenerator.generateId());
|
||||
//绑定客户id
|
||||
customerContact.setCusId(customerId);
|
||||
customerContact.setName(contact.getName());
|
||||
customerContact.setNickName(contact.getNickName());
|
||||
@ -159,26 +164,49 @@ public class CusImportServiceImpl implements ICusImportService {
|
||||
customerContact.setCreateTime(new Date());
|
||||
cusContactsList.add(customerContact);
|
||||
}
|
||||
|
||||
//提取银行信息
|
||||
for (CusBankImportDTO bank : bankList) {
|
||||
if (bank.getCusName().equals(customerInfo.getFullName())) {
|
||||
CusBank bankInfo = new CusBank();
|
||||
//绑定客户id
|
||||
bankInfo.setCusId(customerId);
|
||||
bankInfo.setBankAccount(bank.getBankAccount());
|
||||
bankInfo.setBankName(bank.getBankName());
|
||||
bankInfo.setCurrency(bank.getCurrency());
|
||||
bankInfo.setBankCode(bank.getBankCode());
|
||||
bankInfo.setSwiftCode(bank.getSwiftCode());
|
||||
bankInfo.setBankAddress(bank.getBankAddress());
|
||||
bankInfo.setBranchCode(bank.getBranchCode());
|
||||
bankInfo.setTaxId(bank.getTaxId());
|
||||
cusBankList.add(bankInfo);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 批量保存客户主表信息
|
||||
if (!cusMainList.isEmpty()) {
|
||||
cusMainService.saveBatch(cusMainList);
|
||||
}
|
||||
|
||||
// 批量保存客户公司信息表
|
||||
if (!cusCompanyList.isEmpty()) {
|
||||
cusCompanyService.saveBatch(cusCompanyList);
|
||||
}
|
||||
|
||||
// 批量保存客户管理信息表
|
||||
if (!cusManagerList.isEmpty()) {
|
||||
cusManagerService.saveBatch(cusManagerList);
|
||||
}
|
||||
|
||||
// 批量保存客户联系人信息
|
||||
if (!cusContactsList.isEmpty()) {
|
||||
cusContactsService.saveBatch(cusContactsList);
|
||||
}
|
||||
//批量保存银行账户信息
|
||||
if (!cusBankList.isEmpty()) {
|
||||
cusBankService.saveBatch(cusBankList);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
package com.ruoyi.cus.service.impl;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
@ -266,4 +268,60 @@ public class CusMainServiceImpl extends ServiceImpl<CusMainMapper,CusMain> impl
|
||||
return cusViewVO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过名称保存客户主表信息
|
||||
*
|
||||
* @param cusMainList List<CusMain>
|
||||
* @return void
|
||||
* @author PQZ
|
||||
* @date 14:44 2025/11/20
|
||||
**/
|
||||
@Override
|
||||
public void saveOrUpdateByCusName(List<CusMain> cusMainList) {
|
||||
if (cusMainList == null || cusMainList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
// 提取所有需要处理的 fullName
|
||||
List<String> fullNames = cusMainList.stream()
|
||||
.map(CusMain::getFullName)
|
||||
.filter(StringUtils::isNotEmpty)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
// 一次性查询数据库中已存在的客户信息
|
||||
Map<String, CusMain> existingCusMap = new HashMap<>();
|
||||
if (!fullNames.isEmpty()) {
|
||||
List<CusMain> existingCusList = this.list(
|
||||
new LambdaQueryWrapper<CusMain>()
|
||||
.in(CusMain::getFullName, fullNames)
|
||||
);
|
||||
existingCusMap = existingCusList.stream()
|
||||
.collect(Collectors.toMap(CusMain::getFullName, Function.identity()));
|
||||
}
|
||||
// 分离需要新增和更新的客户
|
||||
List<CusMain> toSaveList = new ArrayList<>();
|
||||
List<CusMain> toUpdateList = new ArrayList<>();
|
||||
for (CusMain cusMain : cusMainList) {
|
||||
if (StringUtils.isEmpty(cusMain.getFullName())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
CusMain existingCus = existingCusMap.get(cusMain.getFullName());
|
||||
if (existingCus != null) {
|
||||
// 如果存在,设置ID并加入更新列表
|
||||
cusMain.setId(existingCus.getId());
|
||||
toUpdateList.add(cusMain);
|
||||
} else {
|
||||
// 如果不存在,则生成新的ID并加入保存列表
|
||||
toSaveList.add(cusMain);
|
||||
}
|
||||
}
|
||||
// 批量保存和更新
|
||||
if (!toSaveList.isEmpty()) {
|
||||
this.saveBatch(toSaveList);
|
||||
}
|
||||
if (!toUpdateList.isEmpty()) {
|
||||
this.updateBatchById(toUpdateList);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user