Commit f165d590f4f300faf7ee018c3deaab5a81ff1315
1 parent
9493780031
Exists in
master
and in
6 other branches
修复bug
Showing 2 changed files with 63 additions and 46 deletions
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java
View file @
f165d59
... | ... | @@ -176,61 +176,39 @@ |
176 | 176 | List<String> ids = new ArrayList<>(); |
177 | 177 | List<BabyAfterVisitInfoModel> infoCheckModels = new ArrayList<>(); |
178 | 178 | |
179 | - Query query = new Query(); | |
179 | + /* Query query = new Query(); | |
180 | 180 | query.addCriteria(Criteria.where("created").gte(startDate).lt(endDate)); |
181 | 181 | query.addCriteria(Criteria.where("yn").is(1)); |
182 | - query.addCriteria(Criteria.where("nextDate").exists(false).and("weakSon").exists(false).and("highRisk").exists(false)); | |
183 | 182 | List<BabyModel> babyModels = mongoTemplate.find(query, BabyModel.class); |
184 | 183 | for (BabyModel model : babyModels) { |
185 | 184 | String modelId = model.getId(); |
186 | 185 | ids.add(modelId); |
187 | - } | |
186 | + }*/ | |
188 | 187 | |
189 | - // 儿保 (sysdate < 下次预约时间) or ( 已做儿保检查 and 下次预约时间 == null) | |
190 | - MatchOperation match = Aggregation.match(Criteria.where("created").gte(startDate).lt(endDate)); | |
191 | - AggregationOperation group = Aggregation.group("buildId").max("created").as("created").addToSet("id").as("babyCheckIds"); | |
192 | - Aggregation aggregation = Aggregation.newAggregation(match, group); | |
193 | - AggregationResults<Map> aggregate = mongoTemplate.aggregate(aggregation, BabyCheckModel.class, Map.class); | |
194 | - List<Map> mappedResults = aggregate.getMappedResults(); | |
195 | - for (Map mappedResult : mappedResults) { | |
196 | - List babyCheckIds = (List) mappedResult.get("babyCheckIds"); | |
197 | - // 根据建档id分组,获取最新的儿保检查数据 | |
198 | - Object babyCheckId = babyCheckIds.get(babyCheckIds.size() - 1); | |
199 | - BabyCheckModel babyCheckModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(babyCheckId).orOperator(Criteria.where("nextDate").gte(new Date()), | |
200 | - Criteria.where("nextDate").exists(false))), BabyCheckModel.class); | |
201 | - if (null != babyCheckModel) { | |
202 | - String buildId = babyCheckModel.getBuildId(); | |
203 | - boolean contains = ids.contains(babyId); | |
204 | - if (!contains) { | |
205 | - ids.add(buildId); | |
206 | - } | |
207 | - } | |
208 | - } | |
209 | 188 | |
210 | - List<BabyModel> models = mongoTemplate.find(Query.query(Criteria.where("_id").nin(ids).and("hospitalId").is(hospitalId).and("yn").is(1)), BabyModel.class); | |
211 | - if (models != null) { | |
212 | - ids.add(models.get(0).getId()); | |
213 | - } | |
214 | 189 | setSyncAfterVisitInfoList(ids, infoCheckModels, afterVisitQuery, TYPE_CHECK, startDate, endDate, hospitalId); |
215 | 190 | mongoTemplate.insert(infoCheckModels, BabyAfterVisitInfoModel.class); |
216 | 191 | map.put("infoModels-check-size", infoCheckModels.size()); |
217 | 192 | |
193 | + | |
194 | + | |
195 | + | |
218 | 196 | // 眼保检查 |
197 | + List<String> babyIds = new ArrayList<>(); | |
219 | 198 | List<BabyAfterVisitInfoModel> infoEyeCheckModels = new ArrayList<>(); |
220 | - Query eyeQuery = new Query(); | |
199 | + /* Query eyeQuery = new Query(); | |
221 | 200 | eyeQuery.addCriteria(Criteria.where("created").gte(startDate).lt(endDate)); |
222 | 201 | eyeQuery.addCriteria(Criteria.where("yn").is(1)); |
223 | 202 | List<BabyModel> eyeBabyModels = mongoTemplate.find(eyeQuery, BabyModel.class); |
224 | - List<String> babyIds = new ArrayList<>(); | |
225 | 203 | for (BabyModel babyModel : eyeBabyModels) { |
226 | 204 | String babyModelId = babyModel.getId(); |
227 | 205 | boolean exists = mongoTemplate.exists(Query.query(Criteria.where(BABY_ID).is(babyModelId)), BabyEyeCheck.class); |
228 | 206 | if (!exists) { |
229 | 207 | babyIds.add(babyModel.getId()); |
230 | 208 | } |
231 | - } | |
209 | + }*/ | |
232 | 210 | // sysdate < 下次预约时间 已做眼保检查 and 下次预约时间 == null |
233 | - MatchOperation eyeMatch = Aggregation.match(Criteria.where("created").gte(startDate).lt(endDate)); | |
211 | + /* MatchOperation eyeMatch = Aggregation.match(Criteria.where("created").gte(startDate).lt(endDate)); | |
234 | 212 | AggregationOperation eyeGroup = Aggregation.group(BABY_ID).max("created").as("created").addToSet("id").as("babyEyeCheckIds"); |
235 | 213 | Aggregation eyeAggregation = Aggregation.newAggregation(eyeMatch, eyeGroup); |
236 | 214 | AggregationResults<Map> eyeAggregate = mongoTemplate.aggregate(eyeAggregation, BabyEyeCheck.class, Map.class); |
237 | 215 | |
238 | 216 | |
... | ... | @@ -247,12 +225,12 @@ |
247 | 225 | babyIds.add(eyeCheckBabyId); |
248 | 226 | } |
249 | 227 | } |
250 | - } | |
228 | + }*/ | |
251 | 229 | |
252 | - List<BabyModel> modelsEye = mongoTemplate.find(Query.query(Criteria.where("_id").nin(babyIds).and("hospitalId").is(hospitalId).and("yn").is(1)), BabyModel.class); | |
230 | + /* List<BabyModel> modelsEye = mongoTemplate.find(Query.query(Criteria.where("_id").nin(babyIds).and("hospitalId").is(hospitalId).and("yn").is(1)), BabyModel.class); | |
253 | 231 | if (models != null) { |
254 | 232 | babyIds.add(modelsEye.get(0).getId()); |
255 | - } | |
233 | + }*/ | |
256 | 234 | |
257 | 235 | setSyncAfterVisitInfoList(babyIds, infoEyeCheckModels, afterVisitQuery, TYPE_EYE_CHECK, startDate, endDate, hospitalId); |
258 | 236 | mongoTemplate.insert(infoEyeCheckModels, BabyAfterVisitInfoModel.class); |
259 | 237 | |
... | ... | @@ -633,11 +611,13 @@ |
633 | 611 | } else if (Objects.equals(TYPE_CHECK, type)) { |
634 | 612 | |
635 | 613 | // 儿保检查 |
636 | - query.addCriteria(Criteria.where("_id").in(ids)); | |
614 | + query.addCriteria(Criteria.where("yn").in(1)); | |
615 | + query.addCriteria(new Criteria().orOperator(Criteria.where("buildType").is(3).and("enable").is("1"), Criteria.where("buildType").in(new ArrayList(){{add(1);add(2);}}))); | |
637 | 616 | } else if (Objects.equals(TYPE_EYE_CHECK, type)) { |
638 | 617 | |
639 | 618 | // 眼保检查 |
640 | - query.addCriteria(Criteria.where("_id").in(ids)); | |
619 | + query.addCriteria(Criteria.where("yn").in(1)); | |
620 | + query.addCriteria(new Criteria().orOperator(Criteria.where("buildType").is(3).and("enable").is("1"), Criteria.where("buildType").in(new ArrayList(){{add(1);add(2);}}))); | |
641 | 621 | |
642 | 622 | } else if (4 == type) { |
643 | 623 | // TODO 2019/7/2 14:36 dongqing 听力筛查 |
... | ... | @@ -669,7 +649,7 @@ |
669 | 649 | if (end > size) { |
670 | 650 | end = size; |
671 | 651 | } |
672 | - Future<List<BabyAfterVisitInfoModel>> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models.subList(i, end), mongoTemplate, type)); | |
652 | + Future<List<BabyAfterVisitInfoModel>> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models.subList(i, end), mongoTemplate, type, true)); | |
673 | 653 | List<BabyAfterVisitInfoModel> visitStatisticsModels = listFuture.get(); |
674 | 654 | if (CollectionUtils.isNotEmpty(visitStatisticsModels)) { |
675 | 655 | infoModels.addAll(visitStatisticsModels); |
... | ... | @@ -708,6 +688,7 @@ |
708 | 688 | |
709 | 689 | Query query = new Query(); |
710 | 690 | query.addCriteria(Criteria.where("created").gte(startDate).lte(endDate)); |
691 | + query.addCriteria(new Criteria().orOperator(Criteria.where("buildType").is(3).and("enable").is("1"), Criteria.where("buildType").in(new ArrayList(){{add(1);add(2);}}))); | |
711 | 692 | if (StringUtils.isNotEmpty(hospitalId)) { |
712 | 693 | query.addCriteria(Criteria.where("hospitalId").is(hospitalId)); |
713 | 694 | } |
... | ... | @@ -865,7 +846,8 @@ |
865 | 846 | if (Objects.equals(STATUS_TYPE_YES, statusType)) { |
866 | 847 | BabyModel babyModel = (BabyModel) model; |
867 | 848 | models.add(babyModel); |
868 | - Future<List<BabyAfterVisitInfoModel>> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models, mongoTemplate, type)); | |
849 | + boolean syncData = false; | |
850 | + Future<List<BabyAfterVisitInfoModel>> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models, mongoTemplate, type, syncData)); | |
869 | 851 | List<BabyAfterVisitInfoModel> infoModels = listFuture.get(); |
870 | 852 | mongoTemplate.insert(infoModels, BabyAfterVisitInfoModel.class); |
871 | 853 | } |
... | ... | @@ -910,7 +892,8 @@ |
910 | 892 | // 新增数据 |
911 | 893 | BabyModel babyModel = (BabyModel) model; |
912 | 894 | models.add(babyModel); |
913 | - Future<List<BabyAfterVisitInfoModel>> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models, mongoTemplate, type)); | |
895 | + boolean syncData = false; | |
896 | + Future<List<BabyAfterVisitInfoModel>> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models, mongoTemplate, type, syncData)); | |
914 | 897 | List<BabyAfterVisitInfoModel> infoModels = listFuture.get(); |
915 | 898 | mongoTemplate.insert(infoModels, modelClass); |
916 | 899 | } |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BabyAfterVisitInfoModelWork.java
View file @
f165d59
... | ... | @@ -26,11 +26,13 @@ |
26 | 26 | private List subList; |
27 | 27 | private MongoTemplate mongoTemplate; |
28 | 28 | private Integer type; |
29 | + private boolean syncData; | |
29 | 30 | |
30 | - public BabyAfterVisitInfoModelWork(final List subList, final MongoTemplate mongoTemplate, final Integer type) { | |
31 | + public BabyAfterVisitInfoModelWork(final List subList, final MongoTemplate mongoTemplate, final Integer type, final boolean syncData) { | |
31 | 32 | this.subList = subList; |
32 | 33 | this.mongoTemplate = mongoTemplate; |
33 | 34 | this.type = type; |
35 | + this.syncData = syncData; | |
34 | 36 | } |
35 | 37 | |
36 | 38 | /** |
37 | 39 | |
38 | 40 | |
39 | 41 | |
40 | 42 | |
41 | 43 | |
... | ... | @@ -50,29 +52,52 @@ |
50 | 52 | BabyModel babyModel = (BabyModel) object; |
51 | 53 | String babyId = babyModel.getId(); |
52 | 54 | boolean exists = mongoTemplate.exists(query.addCriteria(Criteria.where(BABY_ID).is(babyId)), BabyAfterVisitInfoModel.class); |
53 | - boolean workflowStatus = mongoTemplate.exists(Query.query(Criteria.where(BABY_ID).is(babyId).and("afterVisitWorkflowStatus").is("1")), BabyAfterVisitStatisticsModel.class); | |
54 | - if (!exists && workflowStatus) { | |
55 | + //boolean workflowStatus = mongoTemplate.exists(Query.query(Criteria.where(BABY_ID).is(babyId).and("afterVisitWorkflowStatus").is("1")), BabyAfterVisitStatisticsModel.class); | |
56 | + if (!exists) { | |
55 | 57 | babyAfterVisitInfoModel = new BabyAfterVisitInfoModel(); |
56 | 58 | infoModels.add(babyAfterVisitInfoModel); |
57 | 59 | BeanUtils.copyProperties(babyModel, babyAfterVisitInfoModel); |
58 | 60 | |
61 | + /* if (syncData) { | |
62 | + // 处理历史数据 | |
63 | + babyAfterVisitInfoModel.setAppointmentTime(babyModel.getNextDate()); | |
64 | + } else { | |
65 | + | |
66 | + // 实时处理数据 | |
67 | + if (Objects.equals(TYPE_BUILD, type)) { | |
68 | + // 预约建档时间默认为创建时间 | |
69 | + babyAfterVisitInfoModel.setAppointmentTime(babyModel.getCreated()); | |
70 | + } else { | |
71 | + | |
72 | + babyAfterVisitInfoModel.setAppointmentTime(new Date()); | |
73 | + } | |
74 | + }*/ | |
75 | + | |
59 | 76 | if (Objects.equals(TYPE_BUILD, type)) { |
60 | 77 | // 预约建档时间默认为创建时间 |
61 | 78 | babyAfterVisitInfoModel.setAppointmentTime(babyModel.getCreated()); |
62 | - } else { | |
63 | - babyAfterVisitInfoModel.setAppointmentTime(new Date()); | |
64 | 79 | } |
80 | + | |
65 | 81 | if (Objects.equals(TYPE_CHECK, type)) { |
66 | 82 | // 儿保检查--检查医生 |
67 | 83 | List<BabyCheckModel> babyCheckModels = mongoTemplate.find(Query.query(Criteria.where("buildId").is(babyId)).with(new Sort(new Sort.Order(Sort.Direction.DESC, "created"))), BabyCheckModel.class); |
68 | 84 | String checkDoctor = ""; |
69 | - if (CollectionUtils.isNotEmpty(babyCheckModels)) { | |
85 | + babyAfterVisitInfoModel.setAppointmentTime(new Date()); | |
86 | + boolean notEmpty = CollectionUtils.isNotEmpty(babyCheckModels); | |
87 | + if (notEmpty) { | |
70 | 88 | BabyCheckModel checkModel = babyCheckModels.get(0); |
71 | 89 | String checkDoctorDb = checkModel.getCheckDoctor(); |
72 | 90 | if (StringUtils.isNotEmpty(checkDoctorDb)) { |
73 | 91 | checkDoctor = checkDoctorDb; |
74 | 92 | } |
75 | 93 | babyAfterVisitInfoModel.setLatelyDate(checkModel.getCheckDate()); |
94 | + if (syncData) { | |
95 | + babyAfterVisitInfoModel.setAppointmentTime(babyModel.getNextDate()); | |
96 | + } | |
97 | + } else { | |
98 | + if (syncData) { | |
99 | + babyAfterVisitInfoModel.setAppointmentTime(babyModel.getCreated()); | |
100 | + } | |
76 | 101 | } |
77 | 102 | babyAfterVisitInfoModel.setCheckDoctor(checkDoctor); |
78 | 103 | } |
... | ... | @@ -81,7 +106,9 @@ |
81 | 106 | // 阳性项目 |
82 | 107 | List<BabyEyeCheck> babyEyeChecks = mongoTemplate.find(Query.query(Criteria.where(BABY_ID).is(babyId)). |
83 | 108 | with(new Sort(new Sort.Order(Sort.Direction.DESC, "created"))), BabyEyeCheck.class); |
84 | - if (CollectionUtils.isNotEmpty(babyEyeChecks)) { | |
109 | + babyAfterVisitInfoModel.setAppointmentTime(new Date()); | |
110 | + boolean notEmpty = CollectionUtils.isNotEmpty(babyEyeChecks); | |
111 | + if (notEmpty) { | |
85 | 112 | BabyEyeCheck babyEyeCheck = babyEyeChecks.get(0); |
86 | 113 | if (Objects.nonNull(babyEyeCheck)) { |
87 | 114 | List<String> projectStrs = InitDataUtils.getPositiveProjectByKey(babyEyeCheck); |
... | ... | @@ -91,6 +118,13 @@ |
91 | 118 | //BeanUtils.copyProperties(babyEyeCheck, babyAfterVisitInfoModel); |
92 | 119 | babyAfterVisitInfoModel.setCheckMonthId(babyEyeCheck.getCheckMonthId()); |
93 | 120 | babyAfterVisitInfoModel.setCheckTime(babyEyeCheck.getCheckTime()); |
121 | + if (syncData) { | |
122 | + babyAfterVisitInfoModel.setAppointmentTime(babyEyeCheck.getNextCheckTime() != null ? babyEyeCheck.getNextCheckTime() : babyEyeCheck.getCheckTime()); | |
123 | + } | |
124 | + } | |
125 | + } else { | |
126 | + if (syncData) { | |
127 | + babyAfterVisitInfoModel.setAppointmentTime(babyModel.getNextDate() != null ? babyModel.getNextDate() : babyModel.getCreated()); | |
94 | 128 | } |
95 | 129 | } |
96 | 130 | } |