Selaa lähdekoodia

新建会议回避同单位专家错误

tags/24082201
WendyYang 2 vuotta sitten
vanhempi
commit
87afd89f29
2 muutettua tiedostoa jossa 26 lisäystä ja 10 poistoa
  1. +13
    -1
      pmapi/src/main/java/com/ningdatech/pmapi/expert/service/IExpertUserFullInfoService.java
  2. +13
    -9
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/ExpertInviteManage.java

+ 13
- 1
pmapi/src/main/java/com/ningdatech/pmapi/expert/service/IExpertUserFullInfoService.java Näytä tiedosto

@@ -1,8 +1,13 @@
package com.ningdatech.pmapi.expert.service; package com.ningdatech.pmapi.expert.service;


import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ningdatech.basic.util.CollUtils;
import com.ningdatech.pmapi.expert.entity.ExpertUserFullInfo; import com.ningdatech.pmapi.expert.entity.ExpertUserFullInfo;


import java.util.Collection;
import java.util.List; import java.util.List;


/** /**
@@ -33,7 +38,6 @@ public interface IExpertUserFullInfoService extends IService<ExpertUserFullInfo>
List<ExpertUserFullInfo> listByUserId(List<Long> userId); List<ExpertUserFullInfo> listByUserId(List<Long> userId);





/** /**
* 批量查询专家用户信息 * 批量查询专家用户信息
* *
@@ -42,4 +46,12 @@ public interface IExpertUserFullInfoService extends IService<ExpertUserFullInfo>
*/ */
List<ExpertUserFullInfo> listByUserIds(List<Long> userIds); List<ExpertUserFullInfo> listByUserIds(List<Long> userIds);


default List<String> listCompanyUniqCodeByUserIds(Collection<Long> userIds) {
LambdaQueryWrapper<ExpertUserFullInfo> query = Wrappers
.lambdaQuery(ExpertUserFullInfo.class)
.select(ExpertUserFullInfo::getCompanyUniqCode)
.in(ExpertUserFullInfo::getUserId, userIds);
return CollUtils.fieldList(list(query), ExpertUserFullInfo::getCompanyUniqCode);
}

} }

+ 13
- 9
pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/ExpertInviteManage.java Näytä tiedosto

@@ -282,13 +282,13 @@ public class ExpertInviteManage {
* *
* @param avoidRule 回避信息 * @param avoidRule 回避信息
* @param randomRule 抽取规则 * @param randomRule 抽取规则
* @param appointExpertIds 指定抽取专家ID
* @param invitedExpertIds 指定抽取专家ID
* @return 满足抽取条件的专家 * @return 满足抽取条件的专家
* @author WendyYang * @author WendyYang
**/ **/
public ExpertChooseDTO expertInviteByRandomRule(AvoidRuleDTO avoidRule, public ExpertChooseDTO expertInviteByRandomRule(AvoidRuleDTO avoidRule,
RandomInviteRuleDTO randomRule, RandomInviteRuleDTO randomRule,
List<Long> appointExpertIds,
List<Long> invitedExpertIds,
LocalDateTime sTime, LocalDateTime sTime,
LocalDateTime eTime) { LocalDateTime eTime) {
ExpertChooseDTO result = new ExpertChooseDTO(new ArrayList<>(), 0); ExpertChooseDTO result = new ExpertChooseDTO(new ArrayList<>(), 0);
@@ -298,13 +298,17 @@ public class ExpertInviteManage {
} }
boolean avoidExpert = CollUtil.isNotEmpty(avoidRule.getExpertIds()); boolean avoidExpert = CollUtil.isNotEmpty(avoidRule.getExpertIds());
boolean avoidCompany = CollUtil.isNotEmpty(avoidRule.getAvoidUnitIdList()); boolean avoidCompany = CollUtil.isNotEmpty(avoidRule.getAvoidUnitIdList());
Set<String> tmpAvoidCompany = new HashSet<>();
Set<String> avoidCompanyUniqCodes = new HashSet<>();
if (avoidCompany) { if (avoidCompany) {
tmpAvoidCompany.addAll(avoidRule.getAvoidUnitIdList());
avoidCompanyUniqCodes.addAll(avoidRule.getAvoidUnitIdList());
}
if (CollUtil.isNotEmpty(invitedExpertIds)) {
List<String> tmpCompanyUniqCodes = expertUserFullInfoService.listCompanyUniqCodeByUserIds(invitedExpertIds);
avoidCompanyUniqCodes.addAll(tmpCompanyUniqCodes);
} }
// 回避信息 // 回避信息
LambdaQueryWrapper<ExpertUserFullInfo> query = buildBaseExpertQuery(); LambdaQueryWrapper<ExpertUserFullInfo> query = buildBaseExpertQuery();
query.notIn(!tmpAvoidCompany.isEmpty(), ExpertUserFullInfo::getCompanyUniqCode, tmpAvoidCompany);
query.notIn(!avoidCompanyUniqCodes.isEmpty(), ExpertUserFullInfo::getCompanyUniqCode, avoidCompanyUniqCodes);
// 处理回避单位与回避条线 // 处理回避单位与回避条线
buildAvoidCompanyAndBusinessStrip(query, avoidRule.getAvoidUnitIdList(), avoidRule.getAvoidOrgIdList()); buildAvoidCompanyAndBusinessStrip(query, avoidRule.getAvoidUnitIdList(), avoidRule.getAvoidOrgIdList());
Set<Long> expertIdsIn = new HashSet<>(); Set<Long> expertIdsIn = new HashSet<>();
@@ -330,8 +334,8 @@ public class ExpertInviteManage {
return result; return result;
} }
} }
if (CollUtil.isNotEmpty(appointExpertIds)) {
expertIdsIn.removeIf(appointExpertIds::contains);
if (CollUtil.isNotEmpty(invitedExpertIds)) {
expertIdsIn.removeIf(invitedExpertIds::contains);
if (expertIdsIn.isEmpty()) { if (expertIdsIn.isEmpty()) {
return result; return result;
} }
@@ -342,8 +346,8 @@ public class ExpertInviteManage {
if (expertIdsIn.isEmpty()) { if (expertIdsIn.isEmpty()) {
return result; return result;
} }
} else if (avoidExpert || CollUtil.isNotEmpty(appointExpertIds)) {
Set<Long> tmpExpert = expertInviteHelper.getAvoidExpert(appointExpertIds, avoidRule, sTime, eTime);
} else if (avoidExpert || CollUtil.isNotEmpty(invitedExpertIds)) {
Set<Long> tmpExpert = expertInviteHelper.getAvoidExpert(invitedExpertIds, avoidRule, sTime, eTime);
expertIdsNotIn.addAll(tmpExpert); expertIdsNotIn.addAll(tmpExpert);
} else { } else {
Set<Long> tmpNotInUserIds = expertInviteHelper.listExpertLeaveOrInvited(sTime, eTime); Set<Long> tmpNotInUserIds = expertInviteHelper.listExpertLeaveOrInvited(sTime, eTime);


Loading…
Peruuta
Tallenna