diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java index ec5ffc0..79cd2f1 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java @@ -176,61 +176,39 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { List ids = new ArrayList<>(); List infoCheckModels = new ArrayList<>(); - Query query = new Query(); + /* Query query = new Query(); query.addCriteria(Criteria.where("created").gte(startDate).lt(endDate)); query.addCriteria(Criteria.where("yn").is(1)); - query.addCriteria(Criteria.where("nextDate").exists(false).and("weakSon").exists(false).and("highRisk").exists(false)); List babyModels = mongoTemplate.find(query, BabyModel.class); for (BabyModel model : babyModels) { String modelId = model.getId(); ids.add(modelId); - } + }*/ - // 儿保 (sysdate < 下次预约时间) or ( 已做儿保检查 and 下次预约时间 == null) - MatchOperation match = Aggregation.match(Criteria.where("created").gte(startDate).lt(endDate)); - AggregationOperation group = Aggregation.group("buildId").max("created").as("created").addToSet("id").as("babyCheckIds"); - Aggregation aggregation = Aggregation.newAggregation(match, group); - AggregationResults aggregate = mongoTemplate.aggregate(aggregation, BabyCheckModel.class, Map.class); - List mappedResults = aggregate.getMappedResults(); - for (Map mappedResult : mappedResults) { - List babyCheckIds = (List) mappedResult.get("babyCheckIds"); - // 根据建档id分组,获取最新的儿保检查数据 - Object babyCheckId = babyCheckIds.get(babyCheckIds.size() - 1); - BabyCheckModel babyCheckModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(babyCheckId).orOperator(Criteria.where("nextDate").gte(new Date()), - Criteria.where("nextDate").exists(false))), BabyCheckModel.class); - if (null != babyCheckModel) { - String buildId = babyCheckModel.getBuildId(); - boolean contains = ids.contains(babyId); - if (!contains) { - ids.add(buildId); - } - } - } - List models = mongoTemplate.find(Query.query(Criteria.where("_id").nin(ids).and("hospitalId").is(hospitalId).and("yn").is(1)), BabyModel.class); - if (models != null) { - ids.add(models.get(0).getId()); - } setSyncAfterVisitInfoList(ids, infoCheckModels, afterVisitQuery, TYPE_CHECK, startDate, endDate, hospitalId); mongoTemplate.insert(infoCheckModels, BabyAfterVisitInfoModel.class); map.put("infoModels-check-size", infoCheckModels.size()); + + + // 眼保检查 + List babyIds = new ArrayList<>(); List infoEyeCheckModels = new ArrayList<>(); - Query eyeQuery = new Query(); + /* Query eyeQuery = new Query(); eyeQuery.addCriteria(Criteria.where("created").gte(startDate).lt(endDate)); eyeQuery.addCriteria(Criteria.where("yn").is(1)); List eyeBabyModels = mongoTemplate.find(eyeQuery, BabyModel.class); - List babyIds = new ArrayList<>(); for (BabyModel babyModel : eyeBabyModels) { String babyModelId = babyModel.getId(); boolean exists = mongoTemplate.exists(Query.query(Criteria.where(BABY_ID).is(babyModelId)), BabyEyeCheck.class); if (!exists) { babyIds.add(babyModel.getId()); } - } + }*/ // sysdate < 下次预约时间 已做眼保检查 and 下次预约时间 == null - MatchOperation eyeMatch = Aggregation.match(Criteria.where("created").gte(startDate).lt(endDate)); + /* MatchOperation eyeMatch = Aggregation.match(Criteria.where("created").gte(startDate).lt(endDate)); AggregationOperation eyeGroup = Aggregation.group(BABY_ID).max("created").as("created").addToSet("id").as("babyEyeCheckIds"); Aggregation eyeAggregation = Aggregation.newAggregation(eyeMatch, eyeGroup); AggregationResults eyeAggregate = mongoTemplate.aggregate(eyeAggregation, BabyEyeCheck.class, Map.class); @@ -247,12 +225,12 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { babyIds.add(eyeCheckBabyId); } } - } + }*/ - List modelsEye = mongoTemplate.find(Query.query(Criteria.where("_id").nin(babyIds).and("hospitalId").is(hospitalId).and("yn").is(1)), BabyModel.class); + /* List modelsEye = mongoTemplate.find(Query.query(Criteria.where("_id").nin(babyIds).and("hospitalId").is(hospitalId).and("yn").is(1)), BabyModel.class); if (models != null) { babyIds.add(modelsEye.get(0).getId()); - } + }*/ setSyncAfterVisitInfoList(babyIds, infoEyeCheckModels, afterVisitQuery, TYPE_EYE_CHECK, startDate, endDate, hospitalId); mongoTemplate.insert(infoEyeCheckModels, BabyAfterVisitInfoModel.class); @@ -633,11 +611,13 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { } else if (Objects.equals(TYPE_CHECK, type)) { // 儿保检查 - query.addCriteria(Criteria.where("_id").in(ids)); + query.addCriteria(Criteria.where("yn").in(1)); + query.addCriteria(new Criteria().orOperator(Criteria.where("buildType").is(3).and("enable").is("1"), Criteria.where("buildType").in(new ArrayList(){{add(1);add(2);}}))); } else if (Objects.equals(TYPE_EYE_CHECK, type)) { // 眼保检查 - query.addCriteria(Criteria.where("_id").in(ids)); + query.addCriteria(Criteria.where("yn").in(1)); + query.addCriteria(new Criteria().orOperator(Criteria.where("buildType").is(3).and("enable").is("1"), Criteria.where("buildType").in(new ArrayList(){{add(1);add(2);}}))); } else if (4 == type) { // TODO 2019/7/2 14:36 dongqing 听力筛查 @@ -669,7 +649,7 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { if (end > size) { end = size; } - Future> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models.subList(i, end), mongoTemplate, type)); + Future> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models.subList(i, end), mongoTemplate, type, true)); List visitStatisticsModels = listFuture.get(); if (CollectionUtils.isNotEmpty(visitStatisticsModels)) { infoModels.addAll(visitStatisticsModels); @@ -708,6 +688,7 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { Query query = new Query(); query.addCriteria(Criteria.where("created").gte(startDate).lte(endDate)); + query.addCriteria(new Criteria().orOperator(Criteria.where("buildType").is(3).and("enable").is("1"), Criteria.where("buildType").in(new ArrayList(){{add(1);add(2);}}))); if (StringUtils.isNotEmpty(hospitalId)) { query.addCriteria(Criteria.where("hospitalId").is(hospitalId)); } @@ -865,7 +846,8 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { if (Objects.equals(STATUS_TYPE_YES, statusType)) { BabyModel babyModel = (BabyModel) model; models.add(babyModel); - Future> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models, mongoTemplate, type)); + boolean syncData = false; + Future> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models, mongoTemplate, type, syncData)); List infoModels = listFuture.get(); mongoTemplate.insert(infoModels, BabyAfterVisitInfoModel.class); } @@ -910,7 +892,8 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { // 新增数据 BabyModel babyModel = (BabyModel) model; models.add(babyModel); - Future> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models, mongoTemplate, type)); + boolean syncData = false; + Future> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models, mongoTemplate, type, syncData)); List infoModels = listFuture.get(); mongoTemplate.insert(infoModels, modelClass); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BabyAfterVisitInfoModelWork.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BabyAfterVisitInfoModelWork.java index c7414c2..07809f4 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BabyAfterVisitInfoModelWork.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BabyAfterVisitInfoModelWork.java @@ -26,11 +26,13 @@ public class BabyAfterVisitInfoModelWork implements Callable babyCheckModels = mongoTemplate.find(Query.query(Criteria.where("buildId").is(babyId)).with(new Sort(new Sort.Order(Sort.Direction.DESC, "created"))), BabyCheckModel.class); String checkDoctor = ""; - if (CollectionUtils.isNotEmpty(babyCheckModels)) { + babyAfterVisitInfoModel.setAppointmentTime(new Date()); + boolean notEmpty = CollectionUtils.isNotEmpty(babyCheckModels); + if (notEmpty) { BabyCheckModel checkModel = babyCheckModels.get(0); String checkDoctorDb = checkModel.getCheckDoctor(); if (StringUtils.isNotEmpty(checkDoctorDb)) { checkDoctor = checkDoctorDb; } babyAfterVisitInfoModel.setLatelyDate(checkModel.getCheckDate()); + if (syncData) { + babyAfterVisitInfoModel.setAppointmentTime(babyModel.getNextDate()); + } + } else { + if (syncData) { + babyAfterVisitInfoModel.setAppointmentTime(babyModel.getCreated()); + } } babyAfterVisitInfoModel.setCheckDoctor(checkDoctor); } @@ -81,7 +106,9 @@ public class BabyAfterVisitInfoModelWork implements Callable babyEyeChecks = mongoTemplate.find(Query.query(Criteria.where(BABY_ID).is(babyId)). with(new Sort(new Sort.Order(Sort.Direction.DESC, "created"))), BabyEyeCheck.class); - if (CollectionUtils.isNotEmpty(babyEyeChecks)) { + babyAfterVisitInfoModel.setAppointmentTime(new Date()); + boolean notEmpty = CollectionUtils.isNotEmpty(babyEyeChecks); + if (notEmpty) { BabyEyeCheck babyEyeCheck = babyEyeChecks.get(0); if (Objects.nonNull(babyEyeCheck)) { List projectStrs = InitDataUtils.getPositiveProjectByKey(babyEyeCheck); @@ -91,6 +118,13 @@ public class BabyAfterVisitInfoModelWork implements Callable