Commit f165d590f4f300faf7ee018c3deaab5a81ff1315

Authored by dongqin
1 parent 9493780031

修复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 }