refactor(customer): 优化代理商公司同步逻辑,按公司名称和编码排重,任一个相同责认为是相同的记录,会覆盖旧记录

This commit is contained in:
曹鹏飞 2026-01-16 15:15:29 +08:00
parent d0d78d54c6
commit 142b47f91f
2 changed files with 22 additions and 9 deletions

View File

@ -22,7 +22,6 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -99,10 +98,10 @@ public class AdminCustomerService {
*/ */
public void syncFromCrm(SyncFromCrmDTO dateParam) { public void syncFromCrm(SyncFromCrmDTO dateParam) {
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 循环从起始日期到结束日期每次增加一天 // 循环从起始日期到结束日期每次增加一天
List<TBaseCustomer> result = new ArrayList<>(); // List<TBaseCustomer> result = new ArrayList<>();
// for (LocalDate date = stDate; !date.isAfter(edDate); date = date.plusDays(1)) { // for (LocalDate date = stDate; !date.isAfter(edDate); date = date.plusDays(1)) {
@ -110,12 +109,19 @@ public class AdminCustomerService {
if (CollUtil.isEmpty(agentList)) { if (CollUtil.isEmpty(agentList)) {
return; return;
} }
Set<String> crmComanyCodes = agentList.stream().map(u -> u.getId()).collect(Collectors.toSet()); List<TBaseCustomer> result = new ArrayList<>();
List<TBaseCustomer> crmCompanyList = baseCustomerService.lambdaQuery().in(TBaseCustomer::getAgencyCompanyCode, crmComanyCodes).list(); // Set<String> crmComanyCodes = agentList.stream().map(u -> u.getId()).collect(Collectors.toSet());
Map<String, TBaseCustomer> crmCompanyMap = crmCompanyList.stream().collect(Collectors.toMap(TBaseCustomer::getAgencyCompanyCode, cm -> cm)); // List<TBaseCustomer> crmCompanyList = baseCustomerService.lambdaQuery().in(TBaseCustomer::getAgencyCompanyCode, crmComanyCodes).list();
// Map<String, TBaseCustomer> crmCompanyMap = crmCompanyList.stream().collect(Collectors.toMap(TBaseCustomer::getAgencyCompanyCode, cm -> cm));
List<TBaseCustomer> customers = baseCustomerService.list();
agentList.forEach(u -> { agentList.forEach(u -> {
TBaseCustomer ent = crmCompanyMap.get(u.getId()); // TBaseCustomer ent = crmCompanyMap.get(u.getId());
TBaseCustomer ent = customers.stream()
.filter(c -> Objects.equals(c.getAgencyCompanyCode(), u.getId())
|| StrUtil.equals(convertName(c.getAgencyCompanyName()), convertName(u.getName())))
.findFirst()
.orElse(null);
if (Objects.nonNull(ent)) { if (Objects.nonNull(ent)) {
ent.setDataModifyTime(LocalDateTime.now()); ent.setDataModifyTime(LocalDateTime.now());
@ -150,5 +156,7 @@ public class AdminCustomerService {
} }
private String convertName(String name) {
return name.replaceAll("\\s+", "");
}
} }

View File

@ -14,4 +14,9 @@ public class TTest {
System.out.println(t2); System.out.println(t2);
System.out.println(ChronoUnit.DAYS.between(null, t1)); System.out.println(ChronoUnit.DAYS.between(null, t1));
} }
}
@Test
public void test2() {
System.out.println("" + " 打 撒sfc dffd发多少分多少 分多少分的d f ".replaceAll("\\s+", "") + "");
}
}