diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/dto/CusBankImportDTO.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/dto/CusBankImportDTO.java index cc973b6..a7fcc3c 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/dto/CusBankImportDTO.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/dto/CusBankImportDTO.java @@ -13,7 +13,7 @@ public class CusBankImportDTO { private String taxId; @Excel(name = "银行名称") private String bankName; - @Excel(name = "银行账号") + @Excel(name = "银行账户") private String bankAccount; @Excel(name = "分支机构代码") private String branchCode; diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/ICusContactsService.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/ICusContactsService.java index 04e86c5..dda5ccf 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/ICusContactsService.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/ICusContactsService.java @@ -15,4 +15,13 @@ import com.ruoyi.cus.domain.CusContacts; */ public interface ICusContactsService extends IService { IPage queryListPage(CusContacts pageReqVO, Page page); + + /** + * 批量保存客户联系人信息 + * + * @param cusContactsList List + * @author PQZ + * @date 9:32 2025/11/21 + **/ + void saveOrUpdateByCusName(List cusContactsList); } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/impl/CusContactsServiceImpl.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/impl/CusContactsServiceImpl.java index d704b98..3f9f17c 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/impl/CusContactsServiceImpl.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/impl/CusContactsServiceImpl.java @@ -1,8 +1,15 @@ 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.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; @@ -26,4 +33,60 @@ public class CusContactsServiceImpl extends ServiceImpl queryListPage(CusContacts pageReqVO, Page page) { return cusContactsMapper.queryListPage(pageReqVO, page); } + /** + * 批量保存客户联系人信息 + * + * @param cusContactsList List + * @author PQZ + * @date 9:32 2025/11/21 + **/ + @Override + public void saveOrUpdateByCusName(List cusContactsList) { + if(cusContactsList == null || cusContactsList.isEmpty()) { + return; + } + // 1. 提取有效的客户名称并去重 + List cusNames = cusContactsList.stream() + .map(CusContacts::getCusName) + .filter(StringUtils::isNotEmpty) + .distinct() + .collect(Collectors.toList()); + + //2. 查询数据库中已有的客户联系人信息,并按照客户名称+姓名分组 + Map existingCusContactMap = new HashMap<>(); + List existingContactsList = this.list(new LambdaQueryWrapper() + .in(CusContacts::getCusName, cusNames)); + existingCusContactMap = existingContactsList.stream() + .collect(Collectors.toMap( + contact -> contact.getCusName() + "_" + contact.getName(), + contact -> contact, + // 保留第一个,忽略后续重复项 + (existing, replacement) -> existing + )); + + // 3. 分离需要新增和更新的数据 + List toSaveList = new ArrayList<>(); + List toUpdateList = new ArrayList<>(); + for(CusContacts cusContacts : cusContactsList) { + String key = cusContacts.getCusName() + "_" + cusContacts.getName(); + CusContacts existing = existingCusContactMap.get(key); + if(existing != null) { + // 存在就更新 + cusContacts.setId(existing.getId()); + //保留原来的客户id + cusContacts.setCusId(existing.getCusId()); + toUpdateList.add(cusContacts); + } else { + // 不存在就新增 + toSaveList.add(cusContacts); + } + } + // 4. 批量保存与更新 + if(!toSaveList.isEmpty()) { + this.saveBatch(toSaveList); + } + if(!toUpdateList.isEmpty()) { + this.updateBatchById(toUpdateList); + } + } } 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 66424ca..0bddb51 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 @@ -203,7 +203,7 @@ public class CusImportServiceImpl implements ICusImportService { } // 批量保存客户联系人信息 if (!cusContactsList.isEmpty()) { - cusContactsService.saveBatch(cusContactsList); + cusContactsService.saveOrUpdateByCusName(cusContactsList); } //批量保存银行账户信息 if (!cusBankList.isEmpty()) { diff --git a/dl_vue/src/views/cus/main/index.vue b/dl_vue/src/views/cus/main/index.vue index 806ae16..39f85f9 100644 --- a/dl_vue/src/views/cus/main/index.vue +++ b/dl_vue/src/views/cus/main/index.vue @@ -44,7 +44,7 @@ - + 新建客户 @@ -61,7 +61,8 @@ size="mini" @click="handleExport" v-hasPermi="['cus:main:export']" - >导出 + >导出 + 导入 + >导入 + @@ -91,9 +93,11 @@ - + @@ -174,7 +178,7 @@ - + @@ -253,7 +259,10 @@ - +
将文件拖到此处,或点击上传
@@ -270,14 +279,14 @@