Selaa lähdekoodia

自动打标签新增分时段自动打标签

wjj 2 päivää sitten
vanhempi
commit
7559b34cd5

+ 3 - 0
fs-service/src/main/java/com/fs/qw/param/QwAutoTagsRulesTags.java

@@ -2,6 +2,7 @@ package com.fs.qw.param;
 
 import lombok.Data;
 
+import java.time.LocalDate;
 import java.util.List;
 
 @Data
@@ -12,4 +13,6 @@ public class QwAutoTagsRulesTags {
     private String endTime;
     private String remarks;
     private Integer isDay;
+    private Integer dayOrWeek;
+    private List<LocalDate> days;
 }

+ 87 - 23
fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java

@@ -2698,23 +2698,55 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                     qwAutoTagsLogs.setType(3L);
                     qwAutoTagsLogs.setQwUserid(qwUser.getId());
                     qwAutoTagsLogs.setExternalUserId(externalUserID);
-                        List<QwAutoTagsRulesTags> qwAutoTagsRulesTagsList = JSON.parseArray(qwAutoTags.getRulesTags(), QwAutoTagsRulesTags.class);
-                        boolean isMatch = false;
-                        //存分时段里符合条件的标签
-                        Set<String> combinedTagsItem = new HashSet<>();
-                        // 获取今天的星期数
-                        DayOfWeek today = LocalDate.now().getDayOfWeek();
-                        int todayIndex = today.getValue(); // 1: Monday, 2: Tuesday, ..., 7: Sunday
-                        // 获取当前时间
-                        LocalTime now = LocalTime.now();
-                        // 遍历所有规则
-                        for (QwAutoTagsRulesTags rulesTags : qwAutoTagsRulesTagsList) {
-                            List<String> tagsItem = rulesTags.getTags();
-                            List<Integer> week = rulesTags.getWeek();
-                            String startTime = rulesTags.getStartTime();
-                            String endTime = rulesTags.getEndTime();
-                            String remarks = rulesTags.getRemarks();
-
+                    List<QwAutoTagsRulesTags> qwAutoTagsRulesTagsList = JSON.parseArray(qwAutoTags.getRulesTags(), QwAutoTagsRulesTags.class);
+                    boolean isMatch = false;
+                    //存分时段里符合条件的标签
+                    Set<String> combinedTagsItem = new HashSet<>();
+                    LocalDate dateNow = LocalDate.now();
+                    // 获取今天的星期数
+                    DayOfWeek today = dateNow.getDayOfWeek();
+                    int todayIndex = today.getValue(); // 1: Monday, 2: Tuesday, ..., 7: Sunday
+                    // 获取当前时间
+                    LocalTime now = LocalTime.now();
+                    // 遍历所有规则
+                    for (QwAutoTagsRulesTags rulesTags : qwAutoTagsRulesTagsList) {
+                        List<String> tagsItem = rulesTags.getTags();
+                        List<Integer> week = rulesTags.getWeek();
+                        String startTime = rulesTags.getStartTime();
+                        String endTime = rulesTags.getEndTime();
+                        String remarks = rulesTags.getRemarks();
+                        Integer dayOrWeek = rulesTags.getDayOrWeek();
+                        boolean isWeek = dayOrWeek == null || dayOrWeek == 0;
+                        log.info("自动打标签规则:{}", JSON.toJSONString(rulesTags));
+//                        // 检查今天是否在 week 集合中
+//                        boolean isTodayInWeek = week.contains(todayIndex);
+//                        // 转换时间字符串为 LocalTime
+//                        LocalTime start = LocalTime.parse(startTime);
+//                        LocalTime end = LocalTime.parse(endTime.equals("24:00") ? "23:59:59" : endTime);
+//                        // 检查当前时间是否在 startTime 和 endTime 之间
+//                        boolean isNowInTimeRange = !now.isBefore(start) && !now.isAfter(end);
+//                        // 如果当前时间和日期匹配规则,将 tagsItem 添加到 combinedTagsSet 中
+//                        if (isTodayInWeek && isNowInTimeRange) {
+//
+//                            combinedTagsSet.addAll(tagsItem);
+//                            combinedTagsItem.addAll(tagsItem);
+//                            isMatch = true;
+//                            if (rulesTags.getIsDay()!=null&&rulesTags.getIsDay()==1){
+//                                String DayDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"));
+//                                tagRemark=DayDate.substring(1);
+//                            }
+//                            //如果备注不为空
+//                            if (rulesTags.getIsDay()!=null&&rulesTags.getIsDay()==1){
+//                                String DayDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"));
+//                                tagRemark=DayDate.substring(1);
+//                            }
+//                            //如果备注不为空
+//                            if (!StringUtil.strIsNullOrEmpty(remarks)){
+//                                tagRemark = (tagRemark==null?"":(tagRemark+ "-") ) +remarks;
+//                            }
+//                        }
+                        if (isWeek) {
+                            log.info("进入按星期打标签");
                             // 检查今天是否在 week 集合中
                             boolean isTodayInWeek = week.contains(todayIndex);
                             // 转换时间字符串为 LocalTime
@@ -2728,21 +2760,53 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                                 combinedTagsSet.addAll(tagsItem);
                                 combinedTagsItem.addAll(tagsItem);
                                 isMatch = true;
-                                if (rulesTags.getIsDay()!=null&&rulesTags.getIsDay()==1){
+                                if (rulesTags.getIsDay() != null && rulesTags.getIsDay() == 1) {
+                                    String DayDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"));
+                                    tagRemark = DayDate.substring(1);
+                                }
+                                //如果备注不为空
+                                if (rulesTags.getIsDay() != null && rulesTags.getIsDay() == 1) {
+                                    String DayDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"));
+                                    tagRemark = DayDate.substring(1);
+                                }
+                                //如果备注不为空
+                                if (!StringUtil.strIsNullOrEmpty(remarks)) {
+                                    tagRemark = (tagRemark == null ? "" : (tagRemark + "-")) + remarks;
+                                }
+                            }
+                        } else if (rulesTags.getDays() != null && rulesTags.getDays().size() == 2) {
+                            log.info("进入按日期打标签");
+                            LocalDate startDate = rulesTags.getDays().get(0);
+                            LocalDate endDate = rulesTags.getDays().get(1);
+                            boolean isInRange = (dateNow.isEqual(startDate) || dateNow.isAfter(startDate))
+                                    && (dateNow.isEqual(endDate) || dateNow.isBefore(endDate));
+                            log.info("是否满足日期start:{},end:{},now:{},boolean:{}", startDate, endDate, now, isInRange);
+                            // 转换时间字符串为 LocalTime
+                            LocalTime start = LocalTime.parse(startTime);
+                            LocalTime end = LocalTime.parse(endTime.equals("24:00") ? "23:59:59" : endTime);
+                            // 检查当前时间是否在 startTime 和 endTime 之间
+                            boolean isNowInTimeRange = !now.isBefore(start) && !now.isAfter(end);
+                            if (isInRange && isNowInTimeRange) {
+
+                                combinedTagsSet.addAll(tagsItem);
+                                combinedTagsItem.addAll(tagsItem);
+                                isMatch = true;
+                                if (rulesTags.getIsDay() != null && rulesTags.getIsDay() == 1) {
                                     String DayDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"));
-                                    tagRemark=DayDate.substring(1);
+                                    tagRemark = DayDate.substring(1);
                                 }
                                 //如果备注不为空
-                                if (rulesTags.getIsDay()!=null&&rulesTags.getIsDay()==1){
+                                if (rulesTags.getIsDay() != null && rulesTags.getIsDay() == 1) {
                                     String DayDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"));
-                                    tagRemark=DayDate.substring(1);
+                                    tagRemark = DayDate.substring(1);
                                 }
                                 //如果备注不为空
-                                if (!StringUtil.strIsNullOrEmpty(remarks)){
-                                    tagRemark = (tagRemark==null?"":(tagRemark+ "-") ) +remarks;
+                                if (!StringUtil.strIsNullOrEmpty(remarks)) {
+                                    tagRemark = (tagRemark == null ? "" : (tagRemark + "-")) + remarks;
                                 }
                             }
                         }
+                    }
                         // 如果有匹配的规则,使用 combinedTagsList
                         if (isMatch) {
                             // 转换一下分时段-符合 条件的 列表