diff --git a/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java b/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java index 3b15ec72f75302091a4634d7069d1593af607625..8da51abfcfd371f5d43f78cfcbee886c52e1d8a0 100644 --- a/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java +++ b/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java @@ -1,5 +1,6 @@ package com.luca.pilot.service.impl; + import cn.hutool.core.map.MapUtil; import cn.hutool.json.JSONUtil; import com.luca.pilot.bizEnum.TableEnum; @@ -18,6 +19,7 @@ import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; +import org.springframework.data.util.Pair; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -76,7 +78,7 @@ public class PlanServiceImpl implements PlanService { long totalPlanModuleCount = mongoTemplate.count(new Query(), PlanModule.class); -// BulkOperations bulkOps = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, PlanModule.class); + BulkOperations bulkOps = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, PlanModule.class); for (int i = 0; i < skip; i++) { countQuery.skip(i * 10000L); @@ -103,6 +105,7 @@ public class PlanServiceImpl implements PlanService { Map<Long, Map<Long, String>> digitalMedicalTypeMap = queryDigitalMedicalType(planTaskDetails); List<PlanModule> planMoudles = new ArrayList<>(); + List<Pair<Query, Update>> pairs = new ArrayList<>(); //浠� planTaskDetail 鍜� planMoudleRelate 涓哄熀鍑� // 涓€涓� planTaskDetail 鑳藉搴斿涓� planMoudleRelate锛屽嵆涓€娆′换鍔¢厤缃簡澶氬皯涓ā鍧楋紙闂嵎锛岄噺琛紝鏁板瓧闈剁偣锛� @@ -232,21 +235,23 @@ public class PlanServiceImpl implements PlanService { if (totalPlanModuleCount > 0) { Query upsertQuery = new Query(where("key").is(planMoudle.getKey())); Update update = buildUpdate(planMoudle); -// bulkOps.upsert(upsertQuery, update); - mongoTemplate.upsert(upsertQuery, update, PlanModule.class); - log.info("mongoTemplate upsert 1 鏉℃暟鎹�"); + bulkOps.upsert(upsertQuery, update); + Pair<Query, Update> pair = Pair.of(upsertQuery, update); + pairs.add(pair); + }else { + planMoudles.add(planMoudle); } - planMoudles.add(planMoudle); } } // 鏄惁绗竴娆″叏閲忔彃鍏� if (totalPlanModuleCount > 0) { -// CompletableFuture.runAsync(() -> { -// bulkOps.execute(); -// log.info("bulkOps 鏇存柊鎴栨彃鍏� {} 鏉℃暟鎹�", planMoudles.size()); -// }); + CompletableFuture.runAsync(() -> { + bulkOps.upsert(pairs); + bulkOps.execute(); + log.info("bulkOps 鏇存柊鎴栨彃鍏� {} 鏉℃暟鎹�", pairs.size()); + }); } else { if (!CollectionUtils.isEmpty(planMoudles)) { mongoTemplate.insert(planMoudles, PlanModule.class);