Commit 8a5ab4b0c430e7e351af4d7030da21bf048b6434
1 parent
2972300784
Exists in
master
and in
6 other branches
追访记录
Showing 1 changed file with 84 additions and 39 deletions
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java
View file @
8a5ab4b
... | ... | @@ -6,7 +6,6 @@ |
6 | 6 | import com.lyms.platform.common.enums.SexEnum; |
7 | 7 | import com.lyms.platform.common.enums.TrackDownTransferEnums; |
8 | 8 | import com.lyms.platform.common.enums.YnEnums; |
9 | -import com.lyms.platform.common.exception.BusinessException; | |
10 | 9 | import com.lyms.platform.common.result.BaseListResponse; |
11 | 10 | import com.lyms.platform.common.result.BaseModel; |
12 | 11 | import com.lyms.platform.common.result.BaseResponse; |
... | ... | @@ -317,18 +316,6 @@ |
317 | 316 | query.addCriteria(Criteria.where("afterVisitTime").gte(startDate).lte(endDate)); |
318 | 317 | } |
319 | 318 | |
320 | - // 预建档时间/预约时间 | |
321 | - String startAppointmentTime = request.getStartAppointmentTime(); | |
322 | - String endAppointmentTime = request.getEndAppointmentTime(); | |
323 | - if (StringUtils.isNotEmpty(startAppointmentTime) && StringUtils.isNotEmpty(endAppointmentTime)) { | |
324 | - startAppointmentTime += " 00:00:00"; | |
325 | - endAppointmentTime += " 23:59:59"; | |
326 | - Date startDate = DateUtil.parseYMDHMS(startAppointmentTime); | |
327 | - Date endDate = DateUtil.parseYMDHMS(endAppointmentTime); | |
328 | - query.addCriteria(Criteria.where("appointmentTime").gte(startDate).lte(endDate).lt(new Date())); | |
329 | - } else { | |
330 | - query.addCriteria(Criteria.where("appointmentTime").lt(new Date())); | |
331 | - } | |
332 | 319 | |
333 | 320 | // 起止月龄 |
334 | 321 | Integer startMonthsAge = request.getStartMonthsAge(); |
... | ... | @@ -356,28 +343,6 @@ |
356 | 343 | query.addCriteria(Criteria.where("birth").gte(end).lte(start)); |
357 | 344 | } |
358 | 345 | |
359 | - // 逾期天数 | |
360 | - Integer beyondDay = request.getBeyondDay(); | |
361 | - if (Objects.nonNull(beyondDay)) { | |
362 | - Calendar instance = Calendar.getInstance(); | |
363 | - instance.setTime(new Date()); | |
364 | - instance.add(Calendar.DATE, -beyondDay); | |
365 | - instance.set(Calendar.HOUR_OF_DAY, 23); | |
366 | - instance.set(Calendar.MINUTE, 59); | |
367 | - instance.set(Calendar.SECOND, 59); | |
368 | - instance.set(Calendar.MILLISECOND, 999); | |
369 | - Date end = instance.getTime(); | |
370 | - | |
371 | - instance.setTime(new Date()); | |
372 | - instance.add(Calendar.DATE, -beyondDay); | |
373 | - instance.set(Calendar.HOUR_OF_DAY, 00); | |
374 | - instance.set(Calendar.MINUTE, 00); | |
375 | - instance.set(Calendar.SECOND, 00); | |
376 | - instance.set(Calendar.MILLISECOND, 000); | |
377 | - Date start = instance.getTime(); | |
378 | - query.addCriteria(Criteria.where("appointmentTime").gte(start).lte(end)); | |
379 | - } | |
380 | - | |
381 | 346 | // FIXME: 2019/7/3 原型添加时为输入框,查询时为下拉框,如何写程序? |
382 | 347 | // 追访结果 |
383 | 348 | String afterVisitResult = request.getAfterVisitResult(); |
384 | 349 | |
... | ... | @@ -388,12 +353,12 @@ |
388 | 353 | // 流程状态 |
389 | 354 | String workflowStatus = request.getWorkflowStatus(); |
390 | 355 | if (Objects.nonNull(workflowStatus)) { |
391 | - query.addCriteria(Criteria.where("afterVisitWorkflow").is(afterVisitResult)); | |
356 | + query.addCriteria(Criteria.where("afterVisitWorkflow").is(workflowStatus)); | |
392 | 357 | } |
393 | 358 | // 追访方式 |
394 | 359 | String afterVisitWay = request.getAfterVisitWay(); |
395 | 360 | if (Objects.nonNull(afterVisitWay)) { |
396 | - query.addCriteria(Criteria.where("afterVisitWay").is(afterVisitResult)); | |
361 | + query.addCriteria(Criteria.where("afterVisitWay").is(afterVisitWay)); | |
397 | 362 | } |
398 | 363 | // 检查时间 |
399 | 364 | String startCheckTime = request.getStartCheckTime(); |
... | ... | @@ -425,6 +390,62 @@ |
425 | 390 | query.addCriteria(Criteria.where("positiveProject").regex(pattern)); |
426 | 391 | } |
427 | 392 | |
393 | + // 预建档时间/预约时间 | |
394 | + String startAppointmentTime = request.getStartAppointmentTime(); | |
395 | + String endAppointmentTime = request.getEndAppointmentTime(); | |
396 | + boolean appointmentTimeBoolean = StringUtils.isNotEmpty(startAppointmentTime) && StringUtils.isNotEmpty(endAppointmentTime); | |
397 | + | |
398 | + // 逾期天数 | |
399 | + Integer beyondDay = request.getBeyondDay(); | |
400 | + boolean nonNull = Objects.nonNull(beyondDay); | |
401 | + if (appointmentTimeBoolean && nonNull) { | |
402 | + startAppointmentTime += " 00:00:00"; | |
403 | + endAppointmentTime += " 23:59:59"; | |
404 | + Date s1 = DateUtil.parseYMDHMS(startAppointmentTime); | |
405 | + Date e1 = DateUtil.parseYMDHMS(endAppointmentTime); | |
406 | + | |
407 | + Date e2 = getEndDate(beyondDay); | |
408 | + Date s2 = getStartDate(beyondDay); | |
409 | + Date date = new Date(); | |
410 | + // 交集 | |
411 | + boolean a = s2.before(e1) && e1.after(e2) && s1.before(s2) && date.after(s2) && date.before(e1); | |
412 | + boolean b = s2.before(e1) && e2.before(e1) && s1.before(s2) && date.after(s2) && date.before(e2); | |
413 | + boolean c = s2.before(s1) && s1.before(e2) && e2.before(e1) && date.before(e2) && date.after(s1); | |
414 | + boolean d = s2.before(s1) && s1.before(e1) && e1.before(e2) && date.before(e1) && date.after(s1); | |
415 | + boolean e = s2.after(s1) && s1.after(e2) && e2.after(e1) && date.after(s1) && date.before(e2); | |
416 | + if (a || b) { | |
417 | + query.addCriteria(Criteria.where("appointmentTime").gte(s2).lte(date)); | |
418 | + } else if (c || d || e) { | |
419 | + query.addCriteria(Criteria.where("appointmentTime").gte(s1).lte(date)); | |
420 | + }else { | |
421 | + return new BaseResponse(); | |
422 | + } | |
423 | + } | |
424 | + if (appointmentTimeBoolean && !nonNull) { | |
425 | + startAppointmentTime += " 00:00:00"; | |
426 | + endAppointmentTime += " 23:59:59"; | |
427 | + Date startDate = DateUtil.parseYMDHMS(startAppointmentTime); | |
428 | + Date endDate = DateUtil.parseYMDHMS(endAppointmentTime); | |
429 | + Date date = new Date(); | |
430 | + if (date.before(startDate) || date.after(endDate)) { | |
431 | + return new BaseResponse(); | |
432 | + } | |
433 | + query.addCriteria(Criteria.where("appointmentTime").gte(startDate).lte(date)); | |
434 | + } | |
435 | + if (!appointmentTimeBoolean && nonNull) { | |
436 | + Date end = getEndDate(beyondDay); | |
437 | + Date start = getStartDate(beyondDay); | |
438 | + Date date = new Date(); | |
439 | + if (date.before(start) || date.after(end)){ | |
440 | + return new BaseResponse(); | |
441 | + } | |
442 | + query.addCriteria(Criteria.where("appointmentTime").gte(start).lte(date)); | |
443 | + } | |
444 | + if (!appointmentTimeBoolean && !nonNull) { | |
445 | + query.addCriteria(Criteria.where("appointmentTime").lte(new Date())); | |
446 | + } | |
447 | + | |
448 | + | |
428 | 449 | // 组装分页query |
429 | 450 | long count = mongoTemplate.count(query, BabyAfterVisitInfoModel.class); |
430 | 451 | request.mysqlBuild((int) count); |
... | ... | @@ -491,6 +512,30 @@ |
491 | 512 | return baseListResponse; |
492 | 513 | } |
493 | 514 | |
515 | + private Date getEndDate(Integer beyondDay){ | |
516 | + Calendar instance = Calendar.getInstance(); | |
517 | + instance.setTime(new Date()); | |
518 | + instance.add(Calendar.DATE, -beyondDay); | |
519 | + instance.set(Calendar.HOUR_OF_DAY, 23); | |
520 | + instance.set(Calendar.MINUTE, 59); | |
521 | + instance.set(Calendar.SECOND, 59); | |
522 | + instance.set(Calendar.MILLISECOND, 999); | |
523 | + Date end = instance.getTime(); | |
524 | + return end; | |
525 | + } | |
526 | + | |
527 | + private Date getStartDate(Integer beyondDay) { | |
528 | + Calendar instance = Calendar.getInstance(); | |
529 | + instance.setTime(new Date()); | |
530 | + instance.add(Calendar.DATE, -beyondDay); | |
531 | + instance.set(Calendar.HOUR_OF_DAY, 00); | |
532 | + instance.set(Calendar.MINUTE, 00); | |
533 | + instance.set(Calendar.SECOND, 00); | |
534 | + instance.set(Calendar.MILLISECOND, 000); | |
535 | + Date start = instance.getTime(); | |
536 | + return start; | |
537 | + } | |
538 | + | |
494 | 539 | /** |
495 | 540 | * 递归获取预约建档的儿童信息 |
496 | 541 | * |
497 | 542 | |
... | ... | @@ -819,12 +864,12 @@ |
819 | 864 | Update update = MongoConvertHelper |
820 | 865 | .convertToNativeUpdate(ReflectionUtils.getUpdateField(visitInfoModel)); |
821 | 866 | mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(visitInfoModel.getId())), update, BabyAfterVisitInfoModel.class); |
822 | - if (afterVisitWorkflow.equals(TrackDownTransferEnums.B.getId())) { | |
867 | + if (afterVisitWorkflow.equals(TrackDownTransferEnums.B.getId().toString())) { | |
823 | 868 | // 停止当前流程 |
824 | 869 | mongoTemplate.updateFirst(Query.query(Criteria.where(BABY_ID).is(babyId).and("type").is(type)), Update.update("yn", 2), BabyAfterVisitInfoModel.class); |
825 | 870 | } |
826 | 871 | |
827 | - if (afterVisitWorkflow.equals(TrackDownTransferEnums.C.getId())) { | |
872 | + if (afterVisitWorkflow.equals(TrackDownTransferEnums.C.getId().toString())) { | |
828 | 873 | // 终止所有流程 |
829 | 874 | int parseInt = Integer.parseInt(type); |
830 | 875 | if (parseInt == TYPE_CHECK) { |