From 3d7b4a00a27a6880037a5c1cbf4bef6177b839d7 Mon Sep 17 00:00:00 2001 From: XinWei <2718030729@qq.com> Date: Thu, 29 Aug 2024 10:59:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=A5=A8=E5=8A=A1=E9=9B=86=E5=90=88?= =?UTF-8?q?=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CheckTicketTodayRepository.java | 10 ++++++++- .../saledata/SaleDataTodayRepository.java | 11 +++++++++- .../checkticket/CheckTicketService.java | 8 +++++++ .../checkticket/CheckTicketServiceImpl.java | 22 +++++++++++++++---- .../service/saledata/SaleDataService.java | 7 ++++++ .../service/saledata/SaleDataServiceImpl.java | 17 ++++++++++++-- 6 files changed, 67 insertions(+), 8 deletions(-) diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mongodb/checkticket/CheckTicketTodayRepository.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mongodb/checkticket/CheckTicketTodayRepository.java index 62b8d6d70..4b78d339d 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mongodb/checkticket/CheckTicketTodayRepository.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mongodb/checkticket/CheckTicketTodayRepository.java @@ -18,5 +18,13 @@ public interface CheckTicketTodayRepository extends MongoRepository */ @Query(value = "{ 'dataId': { $in: ?0 } }", fields = "{ 'dataId': 1, '_id': 0 }") - List findByDataIdIn(List dataIdList); + List findByDataIdIn(List dataIdList); + /** + * 找到所有不在时间段内的日期字段 + * @param startDate + * @param endDate + * @return java.util.List + */ + @Query("{ 'checkticketdate': { $not: { $gte: ?0, $lt: ?1 } } }") + List findNotInTimeRange(String startDate, String endDate); } diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mongodb/saledata/SaleDataTodayRepository.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mongodb/saledata/SaleDataTodayRepository.java index a46d82954..c6620a348 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mongodb/saledata/SaleDataTodayRepository.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mongodb/saledata/SaleDataTodayRepository.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.infra.dal.mongodb.saledata; import cn.iocoder.yudao.module.infra.dal.dataobject.checkticket.CheckTicket; +import cn.iocoder.yudao.module.infra.dal.dataobject.checkticket.CheckTicketToday; import cn.iocoder.yudao.module.infra.dal.dataobject.saledata.SaleData; import cn.iocoder.yudao.module.infra.dal.dataobject.saledata.SaleDataToday; import org.springframework.data.mongodb.repository.Aggregation; @@ -68,5 +69,13 @@ public interface SaleDataTodayRepository extends MongoRepository */ @Query(value = "{ 'dataId': { $in: ?0 } }", fields = "{ 'dataId': 1, '_id': 0 }") - List findByDataIdIn(List dataIdList); + List findByDataIdIn(List dataIdList); + /** + * 找到所有不在时间段内的日期字段 + * @param startDate + * @param endDate + * @return java.util.List + */ + @Query("{ 'sddate': { $not: { $gte: ?0, $lt: ?1 } } }") + List findNotInTimeRange(String startDate, String endDate); } diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/checkticket/CheckTicketService.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/checkticket/CheckTicketService.java index 31d33386d..306523d88 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/checkticket/CheckTicketService.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/checkticket/CheckTicketService.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.checkticket.CheckTicketDO; import cn.iocoder.yudao.module.infra.dal.dataobject.checkticket.CheckTicketToday; import javax.validation.Valid; +import java.util.Calendar; import java.util.List; import java.util.Map; @@ -39,4 +40,11 @@ public interface CheckTicketService { */ List insertByMongoDB(List checkTicketList); List insertTodayByMongoDB(List checkTicketList); + /** + * 删除不在指定日期内的数据(mongodb) + * @param startDate 如:"20240729" + * @param endDate 如:"20240829" + * @return java.util.List 删除的日期 + */ + List deleteNotInTimeZonesByMongoDB(String startDate,String endDate); } \ No newline at end of file diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/checkticket/CheckTicketServiceImpl.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/checkticket/CheckTicketServiceImpl.java index bea649292..7576a91af 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/checkticket/CheckTicketServiceImpl.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/checkticket/CheckTicketServiceImpl.java @@ -71,7 +71,7 @@ public class CheckTicketServiceImpl implements CheckTicketService { try { // 批量插入 checkTicketRepository.insert(insertCheckTicketList); - } catch (MongoException e){ + } catch (MongoException e) { return null; } resultNum.add(insertCheckTicketList.size()); @@ -86,15 +86,15 @@ public class CheckTicketServiceImpl implements CheckTicketService { List dataIdList = checkTicketList.stream().map(CheckTicketToday::getDataId).collect(Collectors.toList()); // 获取重复的dataId // 查询数据库中存在的 dataId - List existingTickets = checkTicketTodayRepository.findByDataIdIn(dataIdList); + List existingTickets = checkTicketTodayRepository.findByDataIdIn(dataIdList); // 把CheckTicket对象列表改为dataId字符串列表 - List duplicatesDataId = existingTickets.stream().map(CheckTicket::getDataId).collect(Collectors.toList()); + List duplicatesDataId = existingTickets.stream().map(CheckTicketToday::getDataId).collect(Collectors.toList()); // 对checkTicketList过滤掉重复的dataId对应的数据,得到需要插入的不重复数据 List insertCheckTicketList = checkTicketList.stream().filter(ticket -> !duplicatesDataId.contains(ticket.getDataId())).collect(Collectors.toList()); try { // 批量插入 checkTicketTodayRepository.insert(insertCheckTicketList); - } catch (MongoException e){ + } catch (MongoException e) { return null; } resultNum.add(insertCheckTicketList.size()); @@ -102,4 +102,18 @@ public class CheckTicketServiceImpl implements CheckTicketService { return resultNum; } + @Override + public List deleteNotInTimeZonesByMongoDB(String startDate, String endDate) { + + // 执行查询并获取要删除的数据 + List entitiesToDelete = checkTicketTodayRepository.findNotInTimeRange(startDate, endDate); + // 执行删除操作 + checkTicketTodayRepository.deleteAll(entitiesToDelete); + // 获取要删除的日期列表 + List deletedDates = entitiesToDelete.stream() + .map(CheckTicketToday::getCheckticketdate) + .collect(Collectors.toList()); + return deletedDates; + } + } \ No newline at end of file diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/saledata/SaleDataService.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/saledata/SaleDataService.java index 9890d22a0..49c014ba1 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/saledata/SaleDataService.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/saledata/SaleDataService.java @@ -42,4 +42,11 @@ public interface SaleDataService { */ List insertByMongoDB(List saleDataList); List insertTodayByMongoDB(List saleDataList); + /** + * 删除不在指定日期内的数据(mongodb) + * @param startDate 如:"20240729" + * @param endDate 如:"20240829" + * @return java.util.List 删除的日期 + */ + List deleteNotInTimeZonesByMongoDB(String startDate,String endDate); } \ No newline at end of file diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/saledata/SaleDataServiceImpl.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/saledata/SaleDataServiceImpl.java index 45e81208b..7eadfa01c 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/saledata/SaleDataServiceImpl.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/saledata/SaleDataServiceImpl.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.infra.service.saledata; import cn.iocoder.yudao.module.infra.dal.dataobject.checkticket.CheckTicket; +import cn.iocoder.yudao.module.infra.dal.dataobject.checkticket.CheckTicketToday; import cn.iocoder.yudao.module.infra.dal.dataobject.saledata.SaleData; import cn.iocoder.yudao.module.infra.dal.dataobject.saledata.SaleDataDO; import cn.iocoder.yudao.module.infra.dal.dataobject.saledata.SaleDataToday; @@ -77,9 +78,9 @@ public class SaleDataServiceImpl implements SaleDataService { List dataIdList = saleDataList.stream().map(SaleDataToday::getDataId).collect(Collectors.toList()); // 获取重复的dataId // 查询数据库中存在的 dataId - List existingTickets = saleDataRepository.findByDataIdIn(dataIdList); + List existingTickets = saleDataTodayRepository.findByDataIdIn(dataIdList); // 把CheckTicket对象列表改为dataId字符串列表 - List duplicatesDataId = existingTickets.stream().map(CheckTicket::getDataId).collect(Collectors.toList()); + List duplicatesDataId = existingTickets.stream().map(SaleDataToday::getDataId).collect(Collectors.toList()); // 对checkTicketList过滤掉重复的dataId对应的数据,得到需要插入的不重复数据 List insertSaleDataList = saleDataList.stream().filter(saleData -> !duplicatesDataId.contains(saleData.getDataId())).collect(Collectors.toList()); try { @@ -92,6 +93,18 @@ public class SaleDataServiceImpl implements SaleDataService { resultNum.add(duplicatesDataId.size()); return resultNum; } + @Override + public List deleteNotInTimeZonesByMongoDB(String startDate, String endDate) { + // 执行查询并获取要删除的数据 + List entitiesToDelete = saleDataTodayRepository.findNotInTimeRange(startDate, endDate); + // 执行删除操作 + saleDataTodayRepository.deleteAll(entitiesToDelete); + // 获取要删除的日期列表 + List deletedDates = entitiesToDelete.stream() + .map(SaleDataToday::getSddate) + .collect(Collectors.toList()); + return deletedDates; + } } \ No newline at end of file