diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/ExpertInviteManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/ExpertInviteManage.java index ac0a65b..161c061 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/ExpertInviteManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/ExpertInviteManage.java @@ -67,7 +67,7 @@ public class ExpertInviteManage { private final ExpertInviteHelper expertInviteHelper; private final IExpertUserFullInfoService expertUserFullInfoService; private final IMeetingService meetingService; - private final IExpertAvoidCompanyService iExpertAvoidCompanyService; + private final IExpertAvoidCompanyService expertAvoidCompanyService; private final YxtCallOrSmsHelper yxtCallOrSmsHelper; private static final Predicate> COLL_EMPTY = (coll) -> coll != null && coll.isEmpty(); @@ -114,27 +114,17 @@ public class ExpertInviteManage { /** * 如果抽取回避单位和专家回避单位一致,同样需要回避该专家 * - * @param companyNames / + * @param unitCodeList / * @return / */ - private List avoidCompanyExpertIds(List companyNames) { - if (CollUtil.isEmpty(companyNames)) { + private List avoidCompanyExpertIds(List unitCodeList) { + if (CollUtil.isEmpty(unitCodeList)) { return new ArrayList<>(); } - List dealCompanyNames = new ArrayList<>(); - for (String companyName : companyNames) { - if (companyName.contains(",")) { - String[] splitCompanyNames = companyName.split(","); - for (String splitCompanyName : splitCompanyNames) { - dealCompanyNames.add(splitCompanyName); - } - } else { - dealCompanyNames.add(companyName); - } - } - List expertAvoidCompanyList = iExpertAvoidCompanyService.list(Wrappers.lambdaQuery(ExpertAvoidCompany.class) - .in(ExpertAvoidCompany::getCompanyName, dealCompanyNames)); - return expertAvoidCompanyList.stream().map(ExpertAvoidCompany::getUserId).distinct().collect(Collectors.toList()); + LambdaQueryWrapper query = Wrappers.lambdaQuery(ExpertAvoidCompany.class) + .in(ExpertAvoidCompany::getCompanyUniqCode, unitCodeList); + List expertAvoidCompanyList = expertAvoidCompanyService.list(query); + return CollUtils.fieldList(expertAvoidCompanyList, ExpertAvoidCompany::getUserId); } private List mergeExpertIdsByCondition(RandomInviteRuleDTO rule, AvoidRuleDTO avoidInfo) { @@ -268,22 +258,14 @@ public class ExpertInviteManage { boolean avoidCompany = CollUtil.isNotEmpty(avoidRule.getAvoidUnitIdList()); Set tmpAvoidCompany = new HashSet<>(); if (avoidCompany) { - List companyIds = avoidRule.getAvoidUnitIdList(); - for (String companyId : companyIds) { - if (companyId.contains(",")) { - String[] splitCompanyIds = companyId.split(","); - Collections.addAll(tmpAvoidCompany, splitCompanyIds); - } else { - tmpAvoidCompany.add(companyId); - } - } + tmpAvoidCompany.addAll(avoidRule.getAvoidUnitIdList()); } // 回避信息 LambdaQueryWrapper query = buildBaseExpertQuery(); - query.notIn(!tmpAvoidCompany.isEmpty(), ExpertUserFullInfo::getCompany, tmpAvoidCompany); + query.notIn(!tmpAvoidCompany.isEmpty(), ExpertUserFullInfo::getCompanyUniqCode, tmpAvoidCompany); if (avoidCompany) { query.notExists("select 1 from expert_avoid_company eac where eac.user_id = nd_expert_user_full_info.user_id" + - " and company_name in ({0})", CollUtils.joinByComma(avoidRule.getAvoidUnitIdList())); + " and company_uniq_code in ({0})", CollUtils.joinByComma(avoidRule.getAvoidUnitIdList())); } // 处理专家层级 addRegionLimit(query, randomRule); @@ -322,7 +304,7 @@ public class ExpertInviteManage { if (userInfoList.isEmpty()) { return result; } - Map> userGroupByUnit = CollUtils.group(userInfoList, ExpertUserFullInfo::getCompany); + Map> userGroupByUnit = CollUtils.group(userInfoList, ExpertUserFullInfo::getCompanyUniqCode); result.setTotal(userInfoList.size()); // count为空表示数量校验 if (randomRule.getCount() == null || result.getTotal() >= randomRule.getCount()) { @@ -357,9 +339,9 @@ public class ExpertInviteManage { return result; } LambdaQueryWrapper query = buildBaseExpertQuery(); - query.notIn(ExpertUserFullInfo::getCompany, avoidRule.getAvoidUnitIdList()); + query.notIn(ExpertUserFullInfo::getCompanyUniqCode, avoidRule.getAvoidUnitIdList()); query.notExists("select 1 from expert_avoid_company eac where eac.user_id = nd_expert_user_full_info.user_id" + - " and company_name in ({0})", CollUtils.joinByComma(avoidRule.getAvoidOrgIdList())); + " and company_uniq_code in ({0})", CollUtils.joinByComma(avoidRule.getAvoidOrgIdList())); // 处理专家层级 if (StrUtils.isNotBlank(randomRule.getExpertRegionCode())) { @@ -411,7 +393,7 @@ public class ExpertInviteManage { List tempExpertIds = CollUtils.fieldList(removeExpertByCompany, MeetingExpert::getExpertId); // 移除确认参加、通知中的、拒绝参加、已取消 userFullInfos.removeIf(w -> tempExpertIds.contains(w.getUserId()) || removeExpertIds.contains(w.getUserId())); - Map> userGroupByUnit = CollUtils.group(userFullInfos, ExpertUserFullInfo::getCompany); + Map> userGroupByUnit = CollUtils.group(userFullInfos, ExpertUserFullInfo::getCompanyUniqCode); result.setTotal(userGroupByUnit.size()); result.setExperts(inviteGroupByCompany(userGroupByUnit, count)); return result; @@ -439,7 +421,7 @@ public class ExpertInviteManage { * * @param expertGroupByUnit 需要抽取的人 * @param count 抽取数量 - * @return java.util.List + * @return 抽取到的专家信息 * @author WendyYang **/ private List inviteGroupByCompany(Map> expertGroupByUnit, Integer count) { diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingExpertMapper.xml b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingExpertMapper.xml index e8420d5..e371beb 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingExpertMapper.xml +++ b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingExpertMapper.xml @@ -67,7 +67,7 @@