Commit 8a5ab4b0c430e7e351af4d7030da21bf048b6434

Authored by dongqin
1 parent 2972300784

追访记录

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