This commit is contained in:
PQZ 2025-11-20 21:00:21 +08:00
parent 308248fbc4
commit db4e26f946
9 changed files with 272 additions and 26 deletions

View File

@ -1,6 +1,7 @@
package com.ruoyi.cus.service;
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;
@ -8,11 +9,20 @@ import com.ruoyi.cus.domain.CusBank;
/**
* 客户银行资料Service接口
*
*
* @author vinjor-m
* @date 2025-11-03
*/
public interface ICusBankService extends IService<CusBank>
{
public interface ICusBankService extends IService<CusBank> {
IPage<CusBank> queryListPage(CusBank pageReqVO, Page<CusBank> page);
/**
* 批量保存银行卡信息
*
* @param cusBankList 银行集合
* @return void
* @author PQZ
* @date 15:58 2025/11/20
**/
void saveOrUpdateByAccount(List<CusBank> cusBankList);
}

View File

@ -1,6 +1,7 @@
package com.ruoyi.cus.service;
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;
@ -8,11 +9,20 @@ import com.ruoyi.cus.domain.CusCompany;
/**
* 客户公司信息Service接口
*
*
* @author vinjor-m
* @date 2025-11-03
*/
public interface ICusCompanyService extends IService<CusCompany>
{
public interface ICusCompanyService extends IService<CusCompany> {
IPage<CusCompany> queryListPage(CusCompany pageReqVO, Page<CusCompany> page);
/**
* 批量保存客户公司信息
*
* @param cusCompanyList 客户公司信息集合
* @return void
* @author PQZ
* @date 15:15 2025/11/20
**/
void saveOrUpdateByCusName(List<CusCompany> cusCompanyList);
}

View File

@ -1,6 +1,7 @@
package com.ruoyi.cus.service;
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;
@ -8,11 +9,10 @@ import com.ruoyi.cus.domain.CusContacts;
/**
* 客户联系人Service接口
*
*
* @author vinjor-m
* @date 2025-11-03
*/
public interface ICusContactsService extends IService<CusContacts>
{
public interface ICusContactsService extends IService<CusContacts> {
IPage<CusContacts> queryListPage(CusContacts pageReqVO, Page<CusContacts> page);
}

View File

@ -65,7 +65,7 @@ public interface ICusMainService extends IService<CusMain> {
/**
* 通过名称保存客户主表信息
*
* @param cusMainList TODO
* @param cusMainList 客户信息集合
* @return void
* @author PQZ
* @date 14:44 2025/11/20

View File

@ -1,6 +1,7 @@
package com.ruoyi.cus.service;
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;
@ -8,11 +9,20 @@ import com.ruoyi.cus.domain.CusManager;
/**
* 客户管理信息Service接口
*
*
* @author vinjor-m
* @date 2025-11-03
*/
public interface ICusManagerService extends IService<CusManager>
{
public interface ICusManagerService extends IService<CusManager> {
IPage<CusManager> queryListPage(CusManager pageReqVO, Page<CusManager> page);
/**
* 批量保存客户管理信息
*
* @param cusManagerList 客户管理信息集合
* @return void
* @author PQZ
* @date 15:15 2025/11/20
**/
void saveOrUpdateByCusName(List<CusManager> cusManagerList);
}

View File

@ -1,27 +1,33 @@
package com.ruoyi.cus.service.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.DlBaseEntity;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cus.mapper.CusBankMapper;
import com.ruoyi.cus.domain.CusBank;
import com.ruoyi.cus.service.ICusBankService;
import org.springframework.transaction.annotation.Transactional;
/**
* 客户银行资料Service业务层处理
*
*
* @author vinjor-m
* @date 2025-11-03
*/
@Service
public class CusBankServiceImpl extends ServiceImpl<CusBankMapper,CusBank> implements ICusBankService
{
public class CusBankServiceImpl extends ServiceImpl<CusBankMapper, CusBank> implements ICusBankService {
@Autowired
private CusBankMapper cusBankMapper;
@ -29,4 +35,67 @@ public class CusBankServiceImpl extends ServiceImpl<CusBankMapper,CusBank> impl
public IPage<CusBank> queryListPage(CusBank pageReqVO, Page<CusBank> page) {
return cusBankMapper.queryListPage(pageReqVO, page);
}
/**
* 根据银行账号保存或更新客户银行信息
*
* @param cusBankList 客户银行信息列表
* @author lingma
* @date 2025/11/20
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void saveOrUpdateByAccount(List<CusBank> cusBankList) {
if (cusBankList == null || cusBankList.isEmpty()) {
return;
}
// 1. 提取所有有效的 bankAccount 并去重
List<String> bankAccounts = cusBankList.stream()
.map(CusBank::getBankAccount)
.filter(StringUtils::isNotEmpty)
.distinct()
.collect(Collectors.toList());
// 2. 查询数据库中已有的银行信息
Map<String, CusBank> existingBankMap = new HashMap<>();
if (!bankAccounts.isEmpty()) {
List<CusBank> existingBanks = this.list(new LambdaQueryWrapper<CusBank>()
.in(CusBank::getBankAccount, bankAccounts));
existingBankMap = existingBanks.stream()
.collect(Collectors.toMap(CusBank::getBankAccount, Function.identity()));
}
// 3. 分离需要新增和更新的数据
List<CusBank> toSaveList = new ArrayList<>();
List<CusBank> toUpdateList = new ArrayList<>();
for (CusBank bank : cusBankList) {
if (StringUtils.isEmpty(bank.getBankAccount())) {
continue; // 忽略没有 bankAccount 的数据
}
CusBank existing = existingBankMap.get(bank.getBankAccount());
if (existing != null) {
// 存在就更新
bank.setId(existing.getId());
//保留原来的客户id
bank.setCusId(existing.getCusId());
toUpdateList.add(bank);
} else {
// 不存在就新增
toSaveList.add(bank);
}
}
// 4. 批量保存与更新
if (!toSaveList.isEmpty()) {
this.saveBatch(toSaveList);
}
if (!toUpdateList.isEmpty()) {
this.updateBatchById(toUpdateList);
}
}
}

View File

@ -1,24 +1,32 @@
package com.ruoyi.cus.service.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cus.mapper.CusCompanyMapper;
import com.ruoyi.cus.domain.CusCompany;
import com.ruoyi.cus.service.ICusCompanyService;
import org.springframework.transaction.annotation.Transactional;
/**
* 客户公司信息Service业务层处理
*
*
* @author vinjor-m
* @date 2025-11-03
*/
@Service
public class CusCompanyServiceImpl extends ServiceImpl<CusCompanyMapper,CusCompany> implements ICusCompanyService
{
public class CusCompanyServiceImpl extends ServiceImpl<CusCompanyMapper, CusCompany> implements ICusCompanyService {
@Autowired
private CusCompanyMapper cusCompanyMapper;
@ -26,4 +34,67 @@ public class CusCompanyServiceImpl extends ServiceImpl<CusCompanyMapper,CusCompa
public IPage<CusCompany> queryListPage(CusCompany pageReqVO, Page<CusCompany> page) {
return cusCompanyMapper.queryListPage(pageReqVO, page);
}
/**
* 批量保存客户公司信息
*
* @param cusCompanyList 客户公司信息集合
* @return void
* @author PQZ
* @date 15:15 2025/11/20
**/
@Override
@Transactional(rollbackFor = Exception.class)
public void saveOrUpdateByCusName(List<CusCompany> cusCompanyList) {
if (cusCompanyList == null || cusCompanyList.isEmpty()) {
return;
}
// 1. 提取所有有效的 cusName 并去重
List<String> cusNames = cusCompanyList.stream()
.map(CusCompany::getCusName)
.filter(StringUtils::isNotEmpty)
.distinct()
.collect(Collectors.toList());
// 2. 查询数据库中已有的公司信息
Map<String, CusCompany> existingCompanyMap = new HashMap<>();
if (!cusNames.isEmpty()) {
List<CusCompany> existingCompanies = this.list(new LambdaQueryWrapper<CusCompany>()
.in(CusCompany::getCusName, cusNames));
existingCompanyMap = existingCompanies.stream()
.collect(Collectors.toMap(CusCompany::getCusName, Function.identity()));
}
// 3. 分离需要新增和更新的数据
List<CusCompany> toSaveList = new ArrayList<>();
List<CusCompany> toUpdateList = new ArrayList<>();
for (CusCompany company : cusCompanyList) {
if (StringUtils.isEmpty(company.getCusName())) {
continue; // 忽略没有 cusName 的数据
}
CusCompany existing = existingCompanyMap.get(company.getCusName());
if (existing != null) {
// 存在就更新
company.setId(existing.getId());
//保留原来的客户id
company.setCusId(existing.getCusId());
toUpdateList.add(company);
} else {
// 不存在就新增
toSaveList.add(company);
}
}
// 4. 批量保存与更新
if (!toSaveList.isEmpty()) {
this.saveBatch(toSaveList);
}
if (!toUpdateList.isEmpty()) {
this.updateBatchById(toUpdateList);
}
}
}

View File

@ -126,6 +126,7 @@ public class CusImportServiceImpl implements ICusImportService {
CusCompany companyInfo = new CusCompany();
//绑定客户id
companyInfo.setCusId(customerId);
companyInfo.setCusName(customerInfo.getFullName());
companyInfo.setCusFrom(customerInfo.getCusSource());
companyInfo.setCusLevel(customerInfo.getCusLevel());
companyInfo.setBusiType(customerInfo.getBusinessType());
@ -138,6 +139,7 @@ public class CusImportServiceImpl implements ICusImportService {
CusManager managementInfo = new CusManager();
//绑定客户id
managementInfo.setCusId(customerId);
managementInfo.setCusName(customerInfo.getFullName());
managementInfo.setUserName(customerInfo.getUserName());
managementInfo.setFollowStep(customerInfo.getFollowStep());
managementInfo.setSeasReason(customerInfo.getSeasReason());
@ -153,6 +155,7 @@ public class CusImportServiceImpl implements ICusImportService {
customerContact.setId(snowflakeIdGenerator.generateId());
//绑定客户id
customerContact.setCusId(customerId);
customerContact.setCusName(contact.getFullName());
customerContact.setName(contact.getName());
customerContact.setNickName(contact.getNickName());
customerContact.setEmail(contact.getEmail());
@ -171,6 +174,7 @@ public class CusImportServiceImpl implements ICusImportService {
CusBank bankInfo = new CusBank();
//绑定客户id
bankInfo.setCusId(customerId);
bankInfo.setCusName(bank.getCusName());
bankInfo.setBankAccount(bank.getBankAccount());
bankInfo.setBankName(bank.getBankName());
bankInfo.setCurrency(bank.getCurrency());
@ -187,15 +191,15 @@ public class CusImportServiceImpl implements ICusImportService {
// 批量保存客户主表信息
if (!cusMainList.isEmpty()) {
cusMainService.saveBatch(cusMainList);
cusMainService.saveOrUpdateByCusName(cusMainList);
}
// 批量保存客户公司信息表
if (!cusCompanyList.isEmpty()) {
cusCompanyService.saveBatch(cusCompanyList);
cusCompanyService.saveOrUpdateByCusName(cusCompanyList);
}
// 批量保存客户管理信息表
if (!cusManagerList.isEmpty()) {
cusManagerService.saveBatch(cusManagerList);
cusManagerService.saveOrUpdateByCusName(cusManagerList);
}
// 批量保存客户联系人信息
if (!cusContactsList.isEmpty()) {
@ -203,7 +207,7 @@ public class CusImportServiceImpl implements ICusImportService {
}
//批量保存银行账户信息
if (!cusBankList.isEmpty()) {
cusBankService.saveBatch(cusBankList);
cusBankService.saveOrUpdateByAccount(cusBankList);
}

View File

@ -1,24 +1,32 @@
package com.ruoyi.cus.service.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cus.mapper.CusManagerMapper;
import com.ruoyi.cus.domain.CusManager;
import com.ruoyi.cus.service.ICusManagerService;
import org.springframework.transaction.annotation.Transactional;
/**
* 客户管理信息Service业务层处理
*
*
* @author vinjor-m
* @date 2025-11-03
*/
@Service
public class CusManagerServiceImpl extends ServiceImpl<CusManagerMapper,CusManager> implements ICusManagerService
{
public class CusManagerServiceImpl extends ServiceImpl<CusManagerMapper, CusManager> implements ICusManagerService {
@Autowired
private CusManagerMapper cusManagerMapper;
@ -26,4 +34,68 @@ public class CusManagerServiceImpl extends ServiceImpl<CusManagerMapper,CusManag
public IPage<CusManager> queryListPage(CusManager pageReqVO, Page<CusManager> page) {
return cusManagerMapper.queryListPage(pageReqVO, page);
}
/**
* 批量保存客户管理信息
*
* @param cusManagerList 客户管理信息集合
* @return void
* @author PQZ
* @date 15:15 2025/11/20
**/
@Override
@Transactional(rollbackFor = Exception.class)
public void saveOrUpdateByCusName(List<CusManager> cusManagerList) {
if (cusManagerList == null || cusManagerList.isEmpty()) {
return;
}
// 1. 提取所有有效的 cusName 并去重
List<String> cusNames = cusManagerList.stream()
.map(CusManager::getCusName)
.filter(StringUtils::isNotEmpty)
.distinct()
.collect(Collectors.toList());
// 2. 查询数据库中已有的管理信息
Map<String, CusManager> existingManagerMap = new HashMap<>();
if (!cusNames.isEmpty()) {
List<CusManager> existingManagers = this.list(new LambdaQueryWrapper<CusManager>()
.in(CusManager::getCusName, cusNames));
existingManagerMap = existingManagers.stream()
.collect(Collectors.toMap(CusManager::getCusName, Function.identity()));
}
// 3. 分离需要新增和更新的数据
List<CusManager> toSaveList = new ArrayList<>();
List<CusManager> toUpdateList = new ArrayList<>();
for (CusManager manager : cusManagerList) {
if (StringUtils.isEmpty(manager.getCusName())) {
continue; // 忽略没有 cusName 的数据
}
CusManager existing = existingManagerMap.get(manager.getCusName());
if (existing != null) {
// 存在就更新
manager.setId(existing.getId());
//保留原来的客户id
manager.setCusId(existing.getCusId());
toUpdateList.add(manager);
} else {
// 不存在就新增
toSaveList.add(manager);
}
}
// 4. 批量保存与更新
if (!toSaveList.isEmpty()) {
this.saveBatch(toSaveList);
}
if (!toUpdateList.isEmpty()) {
this.updateBatchById(toUpdateList);
}
}
}