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 885f8f373e4a77c31a66ff6eeedc580859084961..232ebba362c854281dd087edaf2e0044f6292a65 100644 --- a/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java +++ b/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java @@ -30,6 +30,8 @@ import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; +import static org.springframework.data.mongodb.core.query.Criteria.where; + @Slf4j @Service public class PlanServiceImpl implements PlanService { @@ -41,21 +43,21 @@ public class PlanServiceImpl implements PlanService { private MongoTemplate mongoArchiveTemplate; @Override - @Scheduled(cron ="0 0/1 * * * ?") + @Scheduled(cron ="0 0/5 * * * ?") public void synchronizePlanTask() { log.info("--------------synchronizePlanTask start---------"); String nowTime = parseTimeFromDateTime (LocalDateTime.now()); SynchronizeTime synchronizeTime = findSynchronizeTime(); - String lastSynchronizeTime = null; + String lastSynchronizeTime = "2024-08-28 09:53:24"; if (Objects.nonNull(synchronizeTime)) { lastSynchronizeTime = synchronizeTime.getPlan(); } Query countQuery = new Query(); if (Objects.nonNull(lastSynchronizeTime)) { - countQuery.addCriteria(Criteria.where("last_modified_at").gt(lastSynchronizeTime)); + countQuery.addCriteria(where("last_modified_at").gt(lastSynchronizeTime)); } long totalPlanTaskDetailsCount = mongoTemplate.count(countQuery, PlanTaskDetails.class); log.info("PlanTaskDetails 鍦ㄥぇ浜� {} 鏃堕棿鍐呮湭鏌ヨ鍒版暟鎹� {} 鏉�", lastSynchronizeTime, totalPlanTaskDetailsCount); @@ -66,19 +68,18 @@ public class PlanServiceImpl implements PlanService { saveSynchronizeTime(synchronizeTime, nowTime); - long skip = totalPlanTaskDetailsCount / 1000; - if (totalPlanTaskDetailsCount % 1000 > 0) { + long skip = totalPlanTaskDetailsCount / 10000; + if (totalPlanTaskDetailsCount % 10000 > 0) { skip++; } long totalPlanModuleCount = mongoTemplate.count(new Query(), PlanModule.class); BulkOperations bulkOps = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, PlanModule.class); -// BulkOperations bulkOps = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, PlanTaskDetails.class); for (int i = 0; i < skip; i++) { - countQuery.skip(i * 1000L); - countQuery.limit(1000); + countQuery.skip(i * 10000L); + countQuery.limit(10000); List<PlanTaskDetails> planTaskDetails = mongoTemplate.find(countQuery, PlanTaskDetails.class); log.info("绗瑊}娆℃煡璇� planTaskDetails count:{}", i + 1, planTaskDetails.size()); // 鑾峰彇瀵瑰簲妗f锛屽彇subjectId 鍜� randomId @@ -228,7 +229,7 @@ public class PlanServiceImpl implements PlanService { // 鏄惁绗竴娆″叏閲忔彃鍏� if (totalPlanModuleCount > 0) { - Query upsertQuery = new Query(Criteria.where("key").is(planMoudle.getKey())); + Query upsertQuery = new Query(where("key").is(planMoudle.getKey())); Update update = buildUpdate(planMoudle); bulkOps.upsert(upsertQuery, update); } @@ -267,7 +268,7 @@ public class PlanServiceImpl implements PlanService { mongoTemplate.save(time); } else { Query updateQuery = new Query(); - updateQuery.addCriteria(Criteria.where("_id").is(synchronizeTime.get_id())); + updateQuery.addCriteria(where("_id").is(synchronizeTime.get_id())); Update update = new Update(); update.set("plan", now); mongoTemplate.updateFirst(updateQuery, update, SynchronizeTime.class); @@ -342,7 +343,7 @@ public class PlanServiceImpl implements PlanService { if (CollectionUtils.isEmpty(planTskDetailIds)) { return new ArrayList<>(); } - return mongoTemplate.find(new Query().addCriteria(Criteria.where("plan_task_details_id").in(planTskDetailIds)), PlanTaskDetailsModule.class); + return mongoTemplate.find(new Query().addCriteria(where("plan_task_details_id").in(planTskDetailIds)), PlanTaskDetailsModule.class); } @@ -352,7 +353,7 @@ public class PlanServiceImpl implements PlanService { return new HashMap<>(); } - Map<Long, List<ClinicalTrialsEvent>> eventMap = mongoTemplate.find(new Query().addCriteria(Criteria.where("plan_details_id").in(planTskDetailIds).and("relation_type").is("DIGITAL_MEDICAL")), ClinicalTrialsEvent.class) + Map<Long, List<ClinicalTrialsEvent>> eventMap = mongoTemplate.find(new Query().addCriteria(where("plan_details_id").in(planTskDetailIds).and("relation_type").is("DIGITAL_MEDICAL")), ClinicalTrialsEvent.class) .stream().collect(Collectors.groupingBy(ClinicalTrialsEvent::getPlanDetailsId)); Map<Long, Map<Long, String>> map = new HashMap<>(); @@ -375,7 +376,7 @@ public class PlanServiceImpl implements PlanService { return new HashMap<>(); } - Map<Long, List<ClinicalTrialsEvent>> eventMap = mongoTemplate.find(new Query().addCriteria(Criteria.where("plan_details_id").in(planTskDetailIds).and("relation_type").is("DIGITAL_MEDICAL")), ClinicalTrialsEvent.class) + Map<Long, List<ClinicalTrialsEvent>> eventMap = mongoTemplate.find(new Query().addCriteria(where("plan_details_id").in(planTskDetailIds).and("relation_type").is("DIGITAL_MEDICAL")), ClinicalTrialsEvent.class) .stream().collect(Collectors.groupingBy(ClinicalTrialsEvent::getPlanDetailsId)); Map<Long, Map<Long, Long>> map = new HashMap<>(); @@ -424,12 +425,12 @@ public class PlanServiceImpl implements PlanService { return new HashMap<>(); } - List<CrfAnswer> crfAnswers = mongoTemplate.find(new Query().addCriteria(Criteria.where("plan_task_details_id").in(planTskDetailIds)), CrfAnswer.class); + List<CrfAnswer> crfAnswers = mongoTemplate.find(new Query().addCriteria(where("plan_task_details_id").in(planTskDetailIds)), CrfAnswer.class); Map<Long, List<CrfAnswer>> crfAnswersMap = crfAnswers.stream().collect(Collectors.groupingBy(CrfAnswer::getPlanTaskDetailsId)); Set<Long> crfIds = crfAnswers.stream().map(CrfAnswer::getCrfId).collect(Collectors.toSet()); - Map<Long, String> crfMap = mongoTemplate.find(new Query().addCriteria(Criteria.where("id").in(crfIds)), Crf.class) + Map<Long, String> crfMap = mongoTemplate.find(new Query().addCriteria(where("id").in(crfIds)), Crf.class) .stream().collect(Collectors.toMap(Crf::getId, Crf::getQuestionJson, (k1, k2) -> k2)); Map<Long, Map<String, String>> map = new HashMap<>(); @@ -463,17 +464,17 @@ public class PlanServiceImpl implements PlanService { return new HashMap<>(); } - List<QuestionnaireAnswerRecord> records = mongoTemplate.find(new Query().addCriteria(Criteria.where("plan_task_details_id").in(planTskDetailIds)), QuestionnaireAnswerRecord.class); + List<QuestionnaireAnswerRecord> records = mongoTemplate.find(new Query().addCriteria(where("plan_task_details_id").in(planTskDetailIds)), QuestionnaireAnswerRecord.class); if (CollectionUtils.isEmpty(records)) { return new HashMap<>(); } Set<Long> recordIds = records.stream().map(QuestionnaireAnswerRecord::getId).collect(Collectors.toSet()); - List<QuestionnaireAnswer> answers = mongoTemplate.find(new Query().addCriteria(Criteria.where("record_id").in(recordIds)), QuestionnaireAnswer.class); + List<QuestionnaireAnswer> answers = mongoTemplate.find(new Query().addCriteria(where("record_id").in(recordIds)), QuestionnaireAnswer.class); Set<Long> ansowerIds = answers.stream().map(QuestionnaireAnswer::getId).collect(Collectors.toSet()); - List<QuestionnaireAnswerOption> answerOptions = mongoTemplate.find(new Query().addCriteria(Criteria.where("answer_id").in(ansowerIds)), QuestionnaireAnswerOption.class); + List<QuestionnaireAnswerOption> answerOptions = mongoTemplate.find(new Query().addCriteria(where("answer_id").in(ansowerIds)), QuestionnaireAnswerOption.class); Map<Long, Map<String, String>> map = new HashMap<>(); @@ -529,7 +530,7 @@ public class PlanServiceImpl implements PlanService { } Map<Long, List<PatientScaleEvaluatingEntity>> scaleEvaluatMap = - mongoTemplate.find(new Query().addCriteria(Criteria.where("plan_task_details_id").in(planTskDetailIds)), PatientScaleEvaluatingEntity.class) + mongoTemplate.find(new Query().addCriteria(where("plan_task_details_id").in(planTskDetailIds)), PatientScaleEvaluatingEntity.class) .stream().collect(Collectors.groupingBy(PatientScaleEvaluatingEntity::getPlanTaskDetailsId)); Map<Long, Map<String, String>> map = new HashMap<>(); @@ -573,35 +574,35 @@ public class PlanServiceImpl implements PlanService { */ Map<Long, String> map = new HashMap<>(); List<Long> questionnaireIds = planMoudleRelates.stream().filter(relate -> relate.getRelationType().equals("QUESTIONNAIRE")).map(PlanTaskModuleRelate::getRelationId).collect(Collectors.toList()); - Map<Long, String> questionaireMap = mongoTemplate.find(new Query().addCriteria(Criteria.where("top_id").in(questionnaireIds)), Questionnaire.class) + Map<Long, String> questionaireMap = mongoTemplate.find(new Query().addCriteria(where("top_id").in(questionnaireIds)), Questionnaire.class) .stream().collect(Collectors.toMap(Questionnaire::getTopId, Questionnaire::getName, (k1, k2) -> k2)); if (MapUtil.isNotEmpty(questionaireMap)) { map.putAll(questionaireMap); } List<Long> crfTopIds = planMoudleRelates.stream().filter(relate -> relate.getRelationType().equals("CRF")).map(PlanTaskModuleRelate::getRelationId).collect(Collectors.toList()); - Map<Long, String> crfMap = mongoTemplate.find(new Query().addCriteria(Criteria.where("crf_top_id").in(crfTopIds)), Crf.class) + Map<Long, String> crfMap = mongoTemplate.find(new Query().addCriteria(where("crf_top_id").in(crfTopIds)), Crf.class) .stream().collect(Collectors.toMap(Crf::getCrfTopId, Crf::getName, (k1, k2) -> k2)); if (MapUtil.isNotEmpty(crfMap)) { map.putAll(crfMap); } List<Long> scaleIds = planMoudleRelates.stream().filter(relate -> relate.getRelationType().equals("SCALE")).map(PlanTaskModuleRelate::getRelationId).collect(Collectors.toList()); - Map<Long, String> scaleMap = mongoTemplate.find(new Query().addCriteria(Criteria.where("id").in(scaleIds)), ScaleModuleDetailsEntity.class) + Map<Long, String> scaleMap = mongoTemplate.find(new Query().addCriteria(where("id").in(scaleIds)), ScaleModuleDetailsEntity.class) .stream().collect(Collectors.toMap(ScaleModuleDetailsEntity::getId, ScaleModuleDetailsEntity::getName, (k1, k2) -> k2)); if (MapUtil.isNotEmpty(scaleMap)) { map.putAll(scaleMap); } List<Long> digitalMedicalIds = planMoudleRelates.stream().filter(relate -> relate.getRelationType().equals("DIGITAL_MEDICAL")).map(PlanTaskModuleRelate::getRelationId).collect(Collectors.toList()); - Map<Long, String> digitalMedicalMap = mongoTemplate.find(new Query().addCriteria(Criteria.where("id").in(digitalMedicalIds)), DigitalMedicalDetails.class) + Map<Long, String> digitalMedicalMap = mongoTemplate.find(new Query().addCriteria(where("id").in(digitalMedicalIds)), DigitalMedicalDetails.class) .stream().collect(Collectors.toMap(DigitalMedicalDetails::getId, DigitalMedicalDetails::getName, (k1, k2) -> k2)); if (MapUtil.isNotEmpty(digitalMedicalMap)) { map.putAll(digitalMedicalMap); } List<Long> collectMoudleIds = planMoudleRelates.stream().filter(relate -> relate.getRelationType().equals("COLLECT_FLOW")).map(PlanTaskModuleRelate::getRelationId).collect(Collectors.toList()); - Map<Long, String> collectMoudleMap = mongoTemplate.find(new Query().addCriteria(Criteria.where("id").in(collectMoudleIds)), CollectModule.class) + Map<Long, String> collectMoudleMap = mongoTemplate.find(new Query().addCriteria(where("id").in(collectMoudleIds)), CollectModule.class) .stream().collect(Collectors.toMap(CollectModule::getId, CollectModule::getName, (k1, k2) -> k2)); if (MapUtil.isNotEmpty(collectMoudleMap)) { map.putAll(collectMoudleMap); @@ -613,13 +614,13 @@ public class PlanServiceImpl implements PlanService { private List<UserArchiveMapping> queryArchiveMapping(List<PlanTaskDetails> planTaskDetails) { List<String> patientCodes = planTaskDetails.stream().map(PlanTaskDetails::getPatientCode).collect(Collectors.toList()); Query archiveMappingquery = new Query(); - archiveMappingquery.addCriteria(Criteria.where("patient_code").in(patientCodes)); + archiveMappingquery.addCriteria(where("patient_code").in(patientCodes)); return mongoTemplate.find(archiveMappingquery, UserArchiveMapping.class); } private List<PlanTaskModuleRelate> queryPlanMoudleRelates(List<PlanTask> planTasks) { List<Long> planTaskIds = planTasks.stream().map(PlanTask::getId).collect(Collectors.toList()); - return mongoTemplate.find(new Query().addCriteria(Criteria.where("planTaskId").in(planTaskIds)), PlanTaskModuleRelate.class); + return mongoTemplate.find(new Query().addCriteria(where("planTaskId").in(planTaskIds)), PlanTaskModuleRelate.class); } private List<Site> querySites(List<UserArchiveMapping> userArchiveMappings) { @@ -627,24 +628,24 @@ public class PlanServiceImpl implements PlanService { if (CollectionUtils.isEmpty(siteIds)) { return new ArrayList<>(); } - return mongoTemplate.find(new Query().addCriteria(Criteria.where("id").in(siteIds)), + return mongoTemplate.find(new Query().addCriteria(where("id").in(siteIds)), Site.class); } private List<Project> queryProjct(List<PlanTaskDetails> planTaskDetails) { List<Long> projectIds = planTaskDetails.stream().map(PlanTaskDetails::getProjectId).collect(Collectors.toList()); - return mongoTemplate.find(new Query().addCriteria(Criteria.where("id").in(projectIds)), Project.class); + return mongoTemplate.find(new Query().addCriteria(where("id").in(projectIds)), Project.class); } private List<Plan> queryPlans(List<PlanTask> planTasks) { List<Long> planIds = planTasks.stream().map(PlanTask::getPlanId).collect(Collectors.toList()); - return mongoTemplate.find(new Query().addCriteria(Criteria.where("id").in(planIds)), + return mongoTemplate.find(new Query().addCriteria(where("id").in(planIds)), Plan.class); } private List<PlanTask> queryPlanTasks(List<PlanTaskDetails> planTaskDetails) { List<Long> planTaskIds = planTaskDetails.stream().map(PlanTaskDetails::getPlanTaskId).collect(Collectors.toList()); - return mongoTemplate.find(new Query().addCriteria(Criteria.where("id").in(planTaskIds)), + return mongoTemplate.find(new Query().addCriteria(where("id").in(planTaskIds)), PlanTask.class); } @@ -654,7 +655,7 @@ public class PlanServiceImpl implements PlanService { if (CollectionUtils.isEmpty(archiveIds)) { return new ArrayList<>(); } - return mongoArchiveTemplate.find(new Query().addCriteria(Criteria.where("_id").in(archiveIds)), + return mongoArchiveTemplate.find(new Query().addCriteria(where("_id").in(archiveIds)), UserArchive.class); } } diff --git a/src/test/java/com/luca/pilot/PlanTaskTest.java b/src/test/java/com/luca/pilot/PlanTaskTest.java index f2b58c953dc3b63d536f7a523e155c7b091aab59..c77b6aa782697cf9d2ef9033d34cc9878d3dc9a0 100644 --- a/src/test/java/com/luca/pilot/PlanTaskTest.java +++ b/src/test/java/com/luca/pilot/PlanTaskTest.java @@ -16,7 +16,7 @@ import java.util.List; @Slf4j @SpringBootTest -@ActiveProfiles("hj") +@ActiveProfiles("uat") public class PlanTaskTest { @Autowired private MongoTemplate mongoTemplate;