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) { |