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 java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@ -99,10 +98,10 @@ public class AdminCustomerService {
*/
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)) {
@ -110,12 +109,19 @@ public class AdminCustomerService {
if (CollUtil.isEmpty(agentList)) {
return;
}
Set<String> crmComanyCodes = agentList.stream().map(u -> u.getId()).collect(Collectors.toSet());
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> result = new ArrayList<>();
// Set<String> crmComanyCodes = agentList.stream().map(u -> u.getId()).collect(Collectors.toSet());
// 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 -> {
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)) {
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(ChronoUnit.DAYS.between(null, t1));
}
}
@Test
public void test2() {
System.out.println("" + " 打 撒sfc dffd发多少分多少 分多少分的d f ".replaceAll("\\s+", "") + "");
}
}