From 4f38e981653946da58b2517b8e640d9b2f2f0f1e Mon Sep 17 00:00:00 2001 From: lecjy <565572696@qq.com> Date: Sun, 29 Oct 2023 07:02:58 +0000 Subject: [PATCH] fix #I837GZ Signed-off-by: lecjy <565572696@qq.com> --- .../com/cskefu/cc/acd/ACDPolicyService.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/contact-center/app/src/main/java/com/cskefu/cc/acd/ACDPolicyService.java b/contact-center/app/src/main/java/com/cskefu/cc/acd/ACDPolicyService.java index d0eb72d6..91daf55f 100644 --- a/contact-center/app/src/main/java/com/cskefu/cc/acd/ACDPolicyService.java +++ b/contact-center/app/src/main/java/com/cskefu/cc/acd/ACDPolicyService.java @@ -27,8 +27,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; import java.util.*; +import java.util.stream.Collectors; /** * 坐席自动分配策略集 @@ -58,6 +60,8 @@ public class ACDPolicyService { @Autowired private OrganProxy organProxy; + @Autowired + private OrganRepository organRepository; /** * 载入坐席 ACD策略配置 * @@ -85,12 +89,26 @@ public class ACDPolicyService { if ((sessionConfig = cache.findOneSessionConfig(organid)) == null) { sessionConfig = sessionConfigRes.findBySkill(organid); if (sessionConfig == null) { - sessionConfig = new SessionConfig(); + List list = organRepository.findAll(); + if (CollectionUtils.isEmpty(list)) { + return new SessionConfig(); + } else { + Map map = list.stream().collect(Collectors.toMap(item -> item.getId(), item -> item.getParent())); + List configList = sessionConfigRes.findAll(); + if (CollectionUtils.isEmpty(configList)) { + return new SessionConfig(); + } else { + Map skillMap = configList.stream().collect(Collectors.toMap(item -> item.getSkill(), item -> item)); + if (map.get(organid) == null || skillMap.get(map.get(organid)) == null) { + return new SessionConfig(); + } + return skillMap.get(map.get(organid)); + } + } } else { cache.putSessionConfig(sessionConfig, organid); } } - return sessionConfig; } @@ -394,4 +412,4 @@ public class ACDPolicyService { return agentUserRes.countByAgentnoAndStatusAndSkill(agentStatus.getAgentno(), MainContext.AgentUserStatusEnum.INSERVICE.toString(), skill); } -} +} \ No newline at end of file