Sfoglia il codice sorgente

bugfix:
1、时间线修改,无冲突时时间线更新错误

lihao16 5 mesi fa
parent
commit
8e9a54230f

+ 15 - 20
smsb-modules/smsb-source/src/main/java/com/inspur/source/service/impl/SmsbItemPushServiceImpl.java

@@ -521,33 +521,28 @@ public class SmsbItemPushServiceImpl implements ISmsbItemPushService {
         List<SmsbItemPushTimeRangeBo> timeRanges = getNewPushAllTimeRanges(smsbItemPushPlaylists,deviceIds.get(0));
 
         // 获取第一个节点和最后一个节点
-        String firstNode = timeRanges.get(0).getStart();
-        String lastNode = timeRanges.get(timeRanges.size() - 1).getEnd();
+        /*String firstNode = timeRanges.get(0).getStart();
+        String lastNode = timeRanges.get(timeRanges.size() - 1).getEnd();*/
 
         for (Long deviceId : deviceIds) {
             // 判断整个时间段内是否存在时间点
-            List<SmsbItemPushPlaylineVo> existTimeNodes = smsbItemPushPlaylineMapper.selectExistTimeNodes(firstNode, lastNode,deviceId);
-            // 没有则新增
-            if (CollectionUtil.isEmpty(existTimeNodes)) {
-                List<SmsbItemPushPlayline> allInsert = new ArrayList<>();
-                for (SmsbItemPushTimeRangeBo timeRange : timeRanges) {
-                    SmsbItemPushPlayline oneInsert = new SmsbItemPushPlayline();
-                    oneInsert.setStartTime(DateUtils.parseDate(timeRange.getStart()));
-                    oneInsert.setEndTime(DateUtils.parseDate(timeRange.getEnd()));
-                    oneInsert.setPushId(pushId);
-                    oneInsert.setDeviceId(deviceId);
-                    allInsert.add(oneInsert);
-                }
-                smsbItemPushPlaylineMapper.insertBatch(allInsert);
-                continue;
-            }
-            // 如果存在 则进行更新
             // 对新增的每一天进行遍历
             List<SmsbItemPushPlayline> needAdd = new ArrayList<>();
             List<SmsbItemPushPlaylineVo> needRemove = new ArrayList<>();
             for (SmsbItemPushTimeRangeBo timeRange : timeRanges) {
                 String oneStart = timeRange.getStart();
                 String oneEnd = timeRange.getEnd();
+                // 判断每个时间段是否存在冲突时间点
+                List<SmsbItemPushPlaylineVo> existTimeNodes = smsbItemPushPlaylineMapper.selectExistTimeNodes(oneStart, oneEnd,deviceId);
+                // 当前时间段没有冲突
+                if (CollectionUtil.isEmpty(existTimeNodes)) {
+                    SmsbItemPushPlayline oneNeedAdd = new SmsbItemPushPlayline();
+                    oneNeedAdd.setPushId(pushId);
+                    oneNeedAdd.setDeviceId(deviceId);
+                    oneNeedAdd.setStartTime(DateUtils.parseDate(oneStart));
+                    oneNeedAdd.setEndTime(DateUtils.parseDate(oneEnd));
+                    smsbItemPushPlaylineMapper.insert(oneNeedAdd);
+                }
                 // 当前时间的日期
                 String newDate = DateUtils.parseDateToStr(DatePattern.NORM_DATE_PATTERN, DateUtils.parseDate(oneStart));
                 // 对存在的进行遍历 判断时间短是否冲突
@@ -560,14 +555,14 @@ public class SmsbItemPushServiceImpl implements ISmsbItemPushService {
                     SmsbItemPushPlayline oneNeedAdd = new SmsbItemPushPlayline();
                     // 共计六种情况
                     // 1、无时间冲突 新发布完全早于老发布 或者完全晚于老发布
-                    if (DateUtils.parseDate(oneStart).after(existTimeNode.getEndTime()) || DateUtils.parseDate(oneEnd).before(existTimeNode.getStartTime())) {
+                    /*if (DateUtils.parseDate(oneStart).after(existTimeNode.getEndTime()) || DateUtils.parseDate(oneEnd).before(existTimeNode.getStartTime())) {
                         // 直接插入
                         oneNeedAdd.setPushId(pushId);
                         oneNeedAdd.setDeviceId(deviceId);
                         oneNeedAdd.setStartTime(DateUtils.parseDate(oneStart));
                         oneNeedAdd.setEndTime(DateUtils.parseDate(oneEnd));
                         needAdd.add(oneNeedAdd);
-                    }
+                    }*/
                     // 开始时间向前偏移100毫秒
                     Date existStartOffset = DateUtil.offset(existTimeNode.getStartTime(), DateField.MILLISECOND, 100);
                     // 结束时间向后偏移100毫秒