|
@@ -33,6 +33,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.function.Predicate;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -87,7 +89,7 @@ public class SopUserLogsInfoController extends BaseController
|
|
|
Map<Long, SopExternalContactInfo> externalContactInfoMap = qwExternalContactVOTimes.stream()
|
|
|
.collect(Collectors.toMap(
|
|
|
QwExternalContactVOTime::getId,
|
|
|
- item -> new SopExternalContactInfo(item.getCreateTime(), item.getTagIds(), item.getRemark())
|
|
|
+ item -> new SopExternalContactInfo(item.getCreateTime(), item.getTagIds(), item.getRemark(),item.getLevel())
|
|
|
));
|
|
|
List<String> tagIds = qwExternalContactVOTimes.stream().map(QwExternalContactVOTime::getTagIds).filter(StringUtils::isNotEmpty).flatMap(e -> JSON.parseArray(e, String.class).stream()).collect(Collectors.toList());
|
|
|
if(!tagIds.isEmpty()){
|
|
@@ -103,10 +105,12 @@ public class SopUserLogsInfoController extends BaseController
|
|
|
list.forEach(item -> {
|
|
|
SopExternalContactInfo info = externalContactInfoMap.getOrDefault(
|
|
|
item.getExternalId(),
|
|
|
- new SopExternalContactInfo("无进线时间", "无标签", "无备注"));
|
|
|
+ new SopExternalContactInfo("无进线时间", "无标签", "无备注",0));
|
|
|
item.setInComTime(info.getCreateTime());
|
|
|
item.setTagIds(info.getTagIds());
|
|
|
item.setRemark(info.getRemark());
|
|
|
+ item.setLevel(info.getLevel());
|
|
|
+
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -136,9 +140,35 @@ public class SopUserLogsInfoController extends BaseController
|
|
|
isRemarkEmpty ||
|
|
|
item.getRemark().contains(sopUserLogsInfo.getRemark());
|
|
|
|
|
|
- if (sopUserLogsInfo.getTagIds() != null || !isRemarkEmpty) {
|
|
|
+
|
|
|
+ boolean isLevelEmpty = sopUserLogsInfo.getLevel() == null;
|
|
|
+ Predicate<SopUserLogsInfo> levelFilter = item ->
|
|
|
+ isLevelEmpty ||
|
|
|
+ (item.getLevel() != null && Objects.equals(item.getLevel(), sopUserLogsInfo.getLevel()) );
|
|
|
+
|
|
|
+
|
|
|
+ Predicate<SopUserLogsInfo> timeFilter = item -> {
|
|
|
+ if (StringUtil.strIsNullOrEmpty(sopUserLogsInfo.getEntryTime())) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ LocalDate entryDate = LocalDate.parse(
|
|
|
+ sopUserLogsInfo.getEntryTime(),
|
|
|
+ DateTimeFormatter.ofPattern("yyyy-MM-dd")
|
|
|
+ );
|
|
|
+ LocalDate createDate = LocalDate.parse(
|
|
|
+ item.getInComTime().substring(0, 10),
|
|
|
+ DateTimeFormatter.ofPattern("yyyy-MM-dd")
|
|
|
+ );
|
|
|
+ return entryDate.equals(createDate);
|
|
|
+ } catch (Exception e) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ if (sopUserLogsInfo.getTagIds() != null || !isRemarkEmpty || !StringUtil.strIsNullOrEmpty(sopUserLogsInfo.getEntryTime()) ||!isLevelEmpty) {
|
|
|
list = list.stream()
|
|
|
- .filter(tagFilter.and(remarkFilter))
|
|
|
+ .filter(tagFilter.and(remarkFilter).and(timeFilter).and(levelFilter))
|
|
|
.collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
@@ -150,9 +180,15 @@ public class SopUserLogsInfoController extends BaseController
|
|
|
param.setTagIds(tagIds);
|
|
|
item.setTagIdsName(iQwTagService.selectQwTagListByTagIds(param));
|
|
|
}
|
|
|
+
|
|
|
+ // 处理 level
|
|
|
+ item.setLevelName(getLevel(item.getLevel()));
|
|
|
});
|
|
|
+
|
|
|
return getDataTable(list);
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
+
|
|
|
List<QwGroupChatUser> list = qwGroupChatUserService.selectByChatId(sopUserLogsInfo);
|
|
|
|
|
|
|
|
@@ -171,15 +207,14 @@ public class SopUserLogsInfoController extends BaseController
|
|
|
Map<String, SopExternalContactInfo> externalContactInfoMap = qwExternalContactVOTimes.stream()
|
|
|
.collect(Collectors.toMap(
|
|
|
QwExternalContactVOTime::getExternalUserId,
|
|
|
- item -> new SopExternalContactInfo(item.getCreateTime(), item.getTagIdsName(), item.getTagIds(), item.getRemark())
|
|
|
+ item -> new SopExternalContactInfo(item.getCreateTime(), item.getTagIds(), item.getRemark(),item.getLevel())
|
|
|
));
|
|
|
|
|
|
// 遍历 list,赋值 inComTime 和 tagIds
|
|
|
list.forEach(item -> {
|
|
|
- SopExternalContactInfo info = externalContactInfoMap.getOrDefault(item.getUserId(), new SopExternalContactInfo("无进线时间", "无标签", "无备注"));
|
|
|
+ SopExternalContactInfo info = externalContactInfoMap.getOrDefault(item.getUserId(), new SopExternalContactInfo("无进线时间", "无标签", "无备注",0));
|
|
|
item.setInComTime(info.getCreateTime());
|
|
|
item.setTagIds(info.getTagIds());
|
|
|
- item.setTagNames(info.getTagNames());
|
|
|
item.setRemark(info.getRemark());
|
|
|
});
|
|
|
|
|
@@ -194,21 +229,95 @@ public class SopUserLogsInfoController extends BaseController
|
|
|
)
|
|
|
.collect(Collectors.toList());
|
|
|
}
|
|
|
+
|
|
|
+ // 处理标签名称
|
|
|
+ list.parallelStream().forEach(item -> {
|
|
|
+ if (item.getTagIds() != null && !item.getTagIds().equals("[]") && !item.getTagIds().equals("无标签")) {
|
|
|
+ List<String> tagIds = GSON.fromJson(item.getTagIds(), new TypeToken<List<String>>() {}.getType());
|
|
|
+ QwTagSearchParam param = new QwTagSearchParam();
|
|
|
+ param.setTagIds(tagIds);
|
|
|
+ item.setTagIdsName(iQwTagService.selectQwTagListByTagIds(param));
|
|
|
+ }
|
|
|
+ });
|
|
|
return getDataTable(list);
|
|
|
+// List<QwGroupChatUser> list = qwGroupChatUserService.selectByChatId(sopUserLogsInfo);
|
|
|
+//
|
|
|
+//
|
|
|
+// if (!list.isEmpty()) {
|
|
|
+//
|
|
|
+// List<String> externalIdList = list.stream()
|
|
|
+// .map(QwGroupChatUser::getUserId) // 提取 externalId
|
|
|
+// .filter(StringUtils::isNotEmpty) // 过滤掉 null 值,防止 NullPointerException
|
|
|
+// .distinct()
|
|
|
+// .collect(Collectors.toList()); // 收集到 List
|
|
|
+//
|
|
|
+// List<QwExternalContactVOTime> qwExternalContactVOTimes = iQwExternalContactService.selectQwExternalContactListVOByUserIds(externalIdList);
|
|
|
+//
|
|
|
+//
|
|
|
+// // 先将 qwExternalContactVOTimes 转换为 Map,key 为 id,value 为 ExternalContactInfo(包含 createTime 和 tagIds)
|
|
|
+// Map<String, SopExternalContactInfo> externalContactInfoMap = qwExternalContactVOTimes.stream()
|
|
|
+// .collect(Collectors.toMap(
|
|
|
+// QwExternalContactVOTime::getExternalUserId,
|
|
|
+// item -> new SopExternalContactInfo(item.getCreateTime(), item.getTagIdsName(), item.getTagIds(), item.getRemark())
|
|
|
+// ));
|
|
|
+//
|
|
|
+// // 遍历 list,赋值 inComTime 和 tagIds
|
|
|
+// list.forEach(item -> {
|
|
|
+// SopExternalContactInfo info = externalContactInfoMap.getOrDefault(item.getUserId(), new SopExternalContactInfo("无进线时间", "无标签", "无备注"));
|
|
|
+// item.setInComTime(info.getCreateTime());
|
|
|
+// item.setTagIds(info.getTagIds());
|
|
|
+// item.setTagNames(info.getTagNames());
|
|
|
+// item.setRemark(info.getRemark());
|
|
|
+// });
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+// if ((sopUserLogsInfo.getTagIds() != null && !sopUserLogsInfo.getTagIds().isEmpty())
|
|
|
+// || !StringUtil.strIsNullOrEmpty(sopUserLogsInfo.getRemark())) {
|
|
|
+// list = list.stream()
|
|
|
+// .filter(item ->
|
|
|
+// (sopUserLogsInfo.getTagIds() == null || sopUserLogsInfo.getTagIds().isEmpty() || item.getTagIds().contains(sopUserLogsInfo.getTagIds()))
|
|
|
+// && (StringUtil.strIsNullOrEmpty(sopUserLogsInfo.getRemark()) || item.getRemark().contains(sopUserLogsInfo.getRemark()))
|
|
|
+// )
|
|
|
+// .collect(Collectors.toList());
|
|
|
+// }
|
|
|
+// return getDataTable(list);
|
|
|
}
|
|
|
|
|
|
-// if (sopUserLogsInfo.getTagIds() != null && !sopUserLogsInfo.getTagIds().isEmpty()) {
|
|
|
-// list = list.stream()
|
|
|
-// .filter(item -> item.getTagIds().contains(sopUserLogsInfo.getTagIds()))
|
|
|
-// .collect(Collectors.toList());
|
|
|
-// }
|
|
|
-// if (!StringUtil.strIsNullOrEmpty(sopUserLogsInfo.getRemark())) {
|
|
|
-// list = list.stream()
|
|
|
-// .filter(item -> item.getRemark().contains(sopUserLogsInfo.getRemark()))
|
|
|
-// .collect(Collectors.toList());
|
|
|
-// }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ private String getLevel(Integer level){
|
|
|
+
|
|
|
+ String levelName = "无";
|
|
|
+
|
|
|
+ if (level != null) {
|
|
|
+
|
|
|
+ switch (level) {
|
|
|
+ case 0:
|
|
|
+ levelName = "无";
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ levelName = "A";
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ levelName = "B";
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ levelName = "C";
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ levelName = "D";
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ levelName = "E";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ levelName = "无";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return levelName;
|
|
|
+ }
|
|
|
private List<String> parseTagIds(String jsonTagIds) {
|
|
|
if (jsonTagIds == null || jsonTagIds.trim().isEmpty() || jsonTagIds.equals("[]")) {
|
|
|
return Collections.emptyList();
|