修改逻辑

master
bynt 2 years ago
parent cf129786a5
commit cc1afb7c97

@ -70,71 +70,73 @@ public class PlatFormRecordTask {
for (TbPlatformCompanyEntity platform : platforms) {
DateTime date = DateUtil.date();
String tagStr = platform.getTagStr().get(0);
Integer value = DeliveryPlatformEnum.getValue
(tagStr.substring(0, tagStr.indexOf(StrPool.DASHED)));
// 偏移十分钟
DateTime offsetMinute = ObjectUtil.isNull(beginTime) ?
DateUtil.offsetMinute(date, -10) :
DateUtil.offsetMinute(beginTime, -10);
beginTime = offsetMinute;
log.info("================ the begin time as {} end time as {} ================", offsetMinute, date);
List<PlateFormDTO> dtoList = backDataEntityService.queryPlateFormDTO
(CharSequenceUtil.EMPTY, "__IMEI__", offsetMinute, date, platform.getTagStr(), value);
log.info("================ the dto list as {} ================", dtoList.size());
if (CollUtil.isNotEmpty(dtoList)) {
// tag进行分组
Map<String, List<PlateFormDTO>> listMap = dtoList.stream()
.collect(Collectors.groupingBy(PlateFormDTO::getTag));
List<RepeatFormDTO> saveDataList = Lists.newArrayList();
for (Map.Entry<String, List<PlateFormDTO>> stringListEntry : listMap.entrySet()) {
List<PlateFormDTO> list = listMap.get(stringListEntry.getKey());
List<RepeatFormDTO> repeatFormDTOList = Convert.toList(RepeatFormDTO.class, list);
repeatFormDTOList.forEach(dto -> dto.setUserId(platform.getUserId()));
// 去除重复数据
Set<RepeatFormDTO> originSet =
Sets.newHashSet(repeatFormDTOList);
// 查询数据
List<RepeatFormDTO> tagLists =
adPlatformDeliveryService.findByTag(platform.getUserId(), stringListEntry.getKey(), 0);
Set<RepeatFormDTO> querySet = Sets.newHashSet(tagLists);
// 差集去除数据
List<RepeatFormDTO> differentData
= Lists.newArrayList(Sets.difference(originSet, querySet));
// 保存将要插入数据
saveDataList.addAll(differentData);
}
// 分批发送
List<List<RepeatFormDTO>> partition = Lists.partition(saveDataList, 500);
int num = 0;
for (List<RepeatFormDTO> formDTOList : partition) {
PlatformTransmitDTO dto = new PlatformTransmitDTO();
dto.setList(formDTOList);
dto.setAuthToken(authToken);
dto.setUserId(platform.getUserId());
dto.setTaskId(platform.getTaskId());
String post = HttpUtil.post(url, JSONUtil.toJsonStr(dto));
Object status = new JSONObject(post).get("status");
if (ObjectUtil.isNotNull(status) &&
Integer.parseInt(status.toString()) != 0) {
num++;
if (tagStr.contains(StrPool.DASHED)) {
Integer value = DeliveryPlatformEnum.getValue
(tagStr.substring(0, tagStr.indexOf(StrPool.DASHED)));
// 偏移十分钟
DateTime offsetMinute = ObjectUtil.isNull(beginTime) ?
DateUtil.offsetMinute(date, -10) :
DateUtil.offsetMinute(beginTime, -10);
beginTime = offsetMinute;
log.info("================ the begin time as {} end time as {} ================", offsetMinute, date);
List<PlateFormDTO> dtoList = backDataEntityService.queryPlateFormDTO
(CharSequenceUtil.EMPTY, "__IMEI__", offsetMinute, date, platform.getTagStr(), value);
log.info("================ the dto list as {} ================", dtoList.size());
if (CollUtil.isNotEmpty(dtoList)) {
// tag进行分组
Map<String, List<PlateFormDTO>> listMap = dtoList.stream()
.collect(Collectors.groupingBy(PlateFormDTO::getTag));
List<RepeatFormDTO> saveDataList = Lists.newArrayList();
for (Map.Entry<String, List<PlateFormDTO>> stringListEntry : listMap.entrySet()) {
List<PlateFormDTO> list = listMap.get(stringListEntry.getKey());
List<RepeatFormDTO> repeatFormDTOList = Convert.toList(RepeatFormDTO.class, list);
repeatFormDTOList.forEach(dto -> dto.setUserId(platform.getUserId()));
// 去除重复数据
Set<RepeatFormDTO> originSet =
Sets.newHashSet(repeatFormDTOList);
// 查询数据
List<RepeatFormDTO> tagLists =
adPlatformDeliveryService.findByTag(platform.getUserId(), stringListEntry.getKey(), 0);
Set<RepeatFormDTO> querySet = Sets.newHashSet(tagLists);
// 差集去除数据
List<RepeatFormDTO> differentData
= Lists.newArrayList(Sets.difference(originSet, querySet));
// 保存将要插入数据
saveDataList.addAll(differentData);
}
// 分批发送
List<List<RepeatFormDTO>> partition = Lists.partition(saveDataList, 500);
int num = 0;
for (List<RepeatFormDTO> formDTOList : partition) {
PlatformTransmitDTO dto = new PlatformTransmitDTO();
dto.setList(formDTOList);
dto.setAuthToken(authToken);
dto.setUserId(platform.getUserId());
dto.setTaskId(platform.getTaskId());
String post = HttpUtil.post(url, JSONUtil.toJsonStr(dto));
Object status = new JSONObject(post).get("status");
if (ObjectUtil.isNotNull(status) &&
Integer.parseInt(status.toString()) != 0) {
num++;
}
}
if (num == 0 && CollUtil.isNotEmpty(saveDataList)) {
// 异步插入数据
CompletableFuture.runAsync(() -> {
List<TbPlatformDeliveryEntity> deliveryStatisticEntityList =
Convert.toList(TbPlatformDeliveryEntity.class, saveDataList);
// 批量保存
adPlatformDeliveryService.saveAll(deliveryStatisticEntityList);
});
beginTime = date;
}
log.error("================ the new datalist size as {} ================", saveDataList.size());
}
if (num == 0 && CollUtil.isNotEmpty(saveDataList)) {
// 异步插入数据
CompletableFuture.runAsync(() -> {
List<TbPlatformDeliveryEntity> deliveryStatisticEntityList =
Convert.toList(TbPlatformDeliveryEntity.class, saveDataList);
// 批量保存
adPlatformDeliveryService.saveAll(deliveryStatisticEntityList);
});
if (CollUtil.isEmpty(dtoList)) {
beginTime = date;
}
log.error("================ the new datalist size as {} ================", saveDataList.size());
}
if (CollUtil.isEmpty(dtoList)) {
beginTime = date;
}
}
}

Loading…
Cancel
Save