Jelajahi Sumber

营期详情的 搜索同步润天的

sgw 1 hari lalu
induk
melakukan
f82c4a9118

+ 127 - 18
fs-company/src/main/java/com/fs/company/controller/qw/SopUserLogsInfoController.java

@@ -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();

+ 3 - 0
fs-service/src/main/java/com/fs/qw/domain/QwGroupChatUser.java

@@ -99,4 +99,7 @@ public class QwGroupChatUser extends BaseEntity
     private String fsUserId;
     @TableField(exist = false)
     private List<GroupUserExternalVo> userList;
+
+    @TableField(exist = false)
+    private List<String> tagIdsName;
 }

+ 2 - 0
fs-service/src/main/java/com/fs/qw/param/QwExternalContactVOTime.java

@@ -25,4 +25,6 @@ public class QwExternalContactVOTime {
     private String createTime;
 
     private String name;
+
+    private Integer level;
 }

+ 16 - 9
fs-service/src/main/java/com/fs/qw/param/SopExternalContactInfo.java

@@ -7,24 +7,31 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
-@Data
+
 public class SopExternalContactInfo {
     private String createTime;
     private String tagIds;
-    private List<String> tagNames;
     private String remark;
+    private Integer level;
 
-    public SopExternalContactInfo(String createTime, List<String> tagNames, String tagIds,String remark) {
+    public SopExternalContactInfo(String createTime, String tagIds,String remark,Integer level) {
         this.createTime = createTime != null ? createTime : "无进线时间";
-        this.tagNames = (tagNames != null && !tagNames.isEmpty()) ? tagNames : Collections.singletonList("无标签");
         this.tagIds = (tagIds != null && !tagIds.equals("[]")) ? tagIds : "无标签";
         this.remark = remark != null ? remark : "无备注";
+        this.level = level != null ? level : 0;
     }
-    public SopExternalContactInfo(String createTime, String tagIds,String remark) {
-        this.createTime = createTime != null ? createTime : "无进线时间";
-        this.tagNames = Collections.singletonList("无标签");
-        this.tagIds = (tagIds != null && !tagIds.equals("[]")) ? tagIds : "无标签";
-        this.remark = remark != null ? remark : "无备注";
+
+    public String getCreateTime() {
+        return createTime;
     }
 
+    public String getTagIds() {
+        return tagIds;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+    public Integer getLevel() {return level;
+    }
 }

+ 16 - 0
fs-service/src/main/java/com/fs/sop/domain/SopUserLogsInfo.java

@@ -52,4 +52,20 @@ public class SopUserLogsInfo implements Serializable {
     @TableField(exist = false)
     private List<String> tagNames;
 
+
+    @TableField(exist = false)
+    private Integer fsUserIdStatus;
+
+    private Integer isDaysNotStudy;
+
+    //进线时间
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private String entryTime;
+
+    @TableField(exist = false)
+    private Integer level;
+
+    @TableField(exist = false)
+    private String levelName;
 }

+ 2 - 2
fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsInfoServiceImpl.java

@@ -198,8 +198,8 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
 
     @Override
     public List<SopUserLogsInfo> selectSopUserLogsInfoList(SopUserLogsInfo info) {
-        List<SopUserLogsInfo> list = sopUserLogsInfoMapper.selectSopUserLogsInfoList(info);
-        return list;
+
+        return sopUserLogsInfoMapper.selectSopUserLogsInfoList(info);
     }
     @Override
     public List<SopUserLogsInfoVOE> selectSopUserLogsInfoListVO(SopUserLogsInfo info) {

+ 3 - 0
fs-service/src/main/resources/mapper/sop/SopUserLogsInfoMapper.xml

@@ -19,6 +19,7 @@
         <result property="crtTime" column="crt_Time"  />
         <result property="updateTime" column="update_time" jdbcType="VARCHAR" />
         <result property="tagIds" column="tag_ids" jdbcType="VARCHAR" />
+        <result property="isDaysNotStudy" column="is_days_not_study"/>
     </resultMap>
 
     <sql id="selectSopUserLogsInfoVo">
@@ -200,6 +201,8 @@
             <if test="corpId != null">and corp_id = #{corpId}</if>
             <if test="externalId != null">and external_id = #{externalId}</if>
             <if test="fsUserId != null">and fs_user_id = #{fsUserId}</if>
+            <if test="fsUserIdStatus != null and fsUserIdStatus==1 ">and fs_user_id is not null and fs_user_id !=0 </if>
+            <if test="fsUserIdStatus != null and fsUserIdStatus==2 ">and (fs_user_id is null or fs_user_id =0)</if>
             <if test="externalUserName != null">and external_user_name like CONCAT('%', #{externalUserName}, '%')</if>
             <if test="createTime != null">and create_time = #{createTime}</if>
             <if test="crtTime != null">and crt_Time = #{crtTime}</if>