refactor(缺陷管理): 同步时重复的平台缺陷报错问题

This commit is contained in:
song-cc-rock 2024-12-02 11:27:38 +08:00 committed by Craftsman
parent 179eadd19c
commit 49e65c16ee
1 changed files with 11 additions and 2 deletions

View File

@ -772,7 +772,16 @@ public class BugService {
} }
} }
List<Bug> originalBugs = batchBugMapper.selectByExample(bugExample); List<Bug> originalBugs = batchBugMapper.selectByExample(bugExample);
Map<String, Bug> msOriginalBugMap = originalBugs.stream().collect(Collectors.toMap(Bug::getPlatformBugId, bug -> bug)); Map<String, Bug> msOriginalBugMap = new HashMap<>(0);
List<String> syncToDeleteIds = new ArrayList<>();
originalBugs.forEach(originalBug -> {
if (!msOriginalBugMap.containsKey(originalBug.getPlatformBugId())) {
msOriginalBugMap.put(originalBug.getPlatformBugId(), originalBug);
} else {
// 相同的缺陷, 不重复同步, 删除
syncToDeleteIds.add(originalBug.getId());
}
});
// 获取原始缺陷的模板字段信息(同步更新缺陷使用) // 获取原始缺陷的模板字段信息(同步更新缺陷使用)
List<String> templateIds = originalBugs.stream().map(Bug::getTemplateId).distinct().toList(); List<String> templateIds = originalBugs.stream().map(Bug::getTemplateId).distinct().toList();
List<TemplateCustomField> templateCustomsFields = baseTemplateCustomFieldService.getByTemplateIds(templateIds); List<TemplateCustomField> templateCustomsFields = baseTemplateCustomFieldService.getByTemplateIds(templateIds);
@ -855,7 +864,7 @@ public class BugService {
execSyncAll(project, syncAllBugRequest); execSyncAll(project, syncAllBugRequest);
// 删除缺陷在后置方法处理完再执行 // 删除缺陷在后置方法处理完再执行
List<String> syncToDeleteIds = originalBugs.stream().filter(msOriginalBug -> !allSyncIds.get().contains(msOriginalBug.getPlatformBugId())).map(Bug::getId).toList(); syncToDeleteIds.addAll(originalBugs.stream().filter(msOriginalBug -> !allSyncIds.get().contains(msOriginalBug.getPlatformBugId())).map(Bug::getId).toList());
if (CollectionUtils.isNotEmpty(syncToDeleteIds)) { if (CollectionUtils.isNotEmpty(syncToDeleteIds)) {
syncCount.addAndGet(syncToDeleteIds.size()); syncCount.addAndGet(syncToDeleteIds.size());
// 删除缺陷(单独处理) // 删除缺陷(单独处理)