From 8a5ab4b0c430e7e351af4d7030da21bf048b6434 Mon Sep 17 00:00:00 2001 From: dongqin <123456> Date: Wed, 10 Jul 2019 18:42:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=BD=E8=AE=BF=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BabyAfterVisitServiceImpl.java | 123 ++++++++++++++------- 1 file changed, 84 insertions(+), 39 deletions(-) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java index f68632a..0ee6bca 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java @@ -6,7 +6,6 @@ import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.enums.SexEnum; import com.lyms.platform.common.enums.TrackDownTransferEnums; import com.lyms.platform.common.enums.YnEnums; -import com.lyms.platform.common.exception.BusinessException; import com.lyms.platform.common.result.BaseListResponse; import com.lyms.platform.common.result.BaseModel; import com.lyms.platform.common.result.BaseResponse; @@ -317,18 +316,6 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { query.addCriteria(Criteria.where("afterVisitTime").gte(startDate).lte(endDate)); } - // 预建档时间/预约时间 - String startAppointmentTime = request.getStartAppointmentTime(); - String endAppointmentTime = request.getEndAppointmentTime(); - if (StringUtils.isNotEmpty(startAppointmentTime) && StringUtils.isNotEmpty(endAppointmentTime)) { - startAppointmentTime += " 00:00:00"; - endAppointmentTime += " 23:59:59"; - Date startDate = DateUtil.parseYMDHMS(startAppointmentTime); - Date endDate = DateUtil.parseYMDHMS(endAppointmentTime); - query.addCriteria(Criteria.where("appointmentTime").gte(startDate).lte(endDate).lt(new Date())); - } else { - query.addCriteria(Criteria.where("appointmentTime").lt(new Date())); - } // 起止月龄 Integer startMonthsAge = request.getStartMonthsAge(); @@ -356,28 +343,6 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { query.addCriteria(Criteria.where("birth").gte(end).lte(start)); } - // 逾期天数 - Integer beyondDay = request.getBeyondDay(); - if (Objects.nonNull(beyondDay)) { - Calendar instance = Calendar.getInstance(); - instance.setTime(new Date()); - instance.add(Calendar.DATE, -beyondDay); - instance.set(Calendar.HOUR_OF_DAY, 23); - instance.set(Calendar.MINUTE, 59); - instance.set(Calendar.SECOND, 59); - instance.set(Calendar.MILLISECOND, 999); - Date end = instance.getTime(); - - instance.setTime(new Date()); - instance.add(Calendar.DATE, -beyondDay); - instance.set(Calendar.HOUR_OF_DAY, 00); - instance.set(Calendar.MINUTE, 00); - instance.set(Calendar.SECOND, 00); - instance.set(Calendar.MILLISECOND, 000); - Date start = instance.getTime(); - query.addCriteria(Criteria.where("appointmentTime").gte(start).lte(end)); - } - // FIXME: 2019/7/3 原型添加时为输入框,查询时为下拉框,如何写程序? // 追访结果 String afterVisitResult = request.getAfterVisitResult(); @@ -388,12 +353,12 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { // 流程状态 String workflowStatus = request.getWorkflowStatus(); if (Objects.nonNull(workflowStatus)) { - query.addCriteria(Criteria.where("afterVisitWorkflow").is(afterVisitResult)); + query.addCriteria(Criteria.where("afterVisitWorkflow").is(workflowStatus)); } // 追访方式 String afterVisitWay = request.getAfterVisitWay(); if (Objects.nonNull(afterVisitWay)) { - query.addCriteria(Criteria.where("afterVisitWay").is(afterVisitResult)); + query.addCriteria(Criteria.where("afterVisitWay").is(afterVisitWay)); } // 检查时间 String startCheckTime = request.getStartCheckTime(); @@ -425,6 +390,62 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { query.addCriteria(Criteria.where("positiveProject").regex(pattern)); } + // 预建档时间/预约时间 + String startAppointmentTime = request.getStartAppointmentTime(); + String endAppointmentTime = request.getEndAppointmentTime(); + boolean appointmentTimeBoolean = StringUtils.isNotEmpty(startAppointmentTime) && StringUtils.isNotEmpty(endAppointmentTime); + + // 逾期天数 + Integer beyondDay = request.getBeyondDay(); + boolean nonNull = Objects.nonNull(beyondDay); + if (appointmentTimeBoolean && nonNull) { + startAppointmentTime += " 00:00:00"; + endAppointmentTime += " 23:59:59"; + Date s1 = DateUtil.parseYMDHMS(startAppointmentTime); + Date e1 = DateUtil.parseYMDHMS(endAppointmentTime); + + Date e2 = getEndDate(beyondDay); + Date s2 = getStartDate(beyondDay); + Date date = new Date(); + // 交集 + boolean a = s2.before(e1) && e1.after(e2) && s1.before(s2) && date.after(s2) && date.before(e1); + boolean b = s2.before(e1) && e2.before(e1) && s1.before(s2) && date.after(s2) && date.before(e2); + boolean c = s2.before(s1) && s1.before(e2) && e2.before(e1) && date.before(e2) && date.after(s1); + boolean d = s2.before(s1) && s1.before(e1) && e1.before(e2) && date.before(e1) && date.after(s1); + boolean e = s2.after(s1) && s1.after(e2) && e2.after(e1) && date.after(s1) && date.before(e2); + if (a || b) { + query.addCriteria(Criteria.where("appointmentTime").gte(s2).lte(date)); + } else if (c || d || e) { + query.addCriteria(Criteria.where("appointmentTime").gte(s1).lte(date)); + }else { + return new BaseResponse(); + } + } + if (appointmentTimeBoolean && !nonNull) { + startAppointmentTime += " 00:00:00"; + endAppointmentTime += " 23:59:59"; + Date startDate = DateUtil.parseYMDHMS(startAppointmentTime); + Date endDate = DateUtil.parseYMDHMS(endAppointmentTime); + Date date = new Date(); + if (date.before(startDate) || date.after(endDate)) { + return new BaseResponse(); + } + query.addCriteria(Criteria.where("appointmentTime").gte(startDate).lte(date)); + } + if (!appointmentTimeBoolean && nonNull) { + Date end = getEndDate(beyondDay); + Date start = getStartDate(beyondDay); + Date date = new Date(); + if (date.before(start) || date.after(end)){ + return new BaseResponse(); + } + query.addCriteria(Criteria.where("appointmentTime").gte(start).lte(date)); + } + if (!appointmentTimeBoolean && !nonNull) { + query.addCriteria(Criteria.where("appointmentTime").lte(new Date())); + } + + // 组装分页query long count = mongoTemplate.count(query, BabyAfterVisitInfoModel.class); request.mysqlBuild((int) count); @@ -491,6 +512,30 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { return baseListResponse; } + private Date getEndDate(Integer beyondDay){ + Calendar instance = Calendar.getInstance(); + instance.setTime(new Date()); + instance.add(Calendar.DATE, -beyondDay); + instance.set(Calendar.HOUR_OF_DAY, 23); + instance.set(Calendar.MINUTE, 59); + instance.set(Calendar.SECOND, 59); + instance.set(Calendar.MILLISECOND, 999); + Date end = instance.getTime(); + return end; + } + + private Date getStartDate(Integer beyondDay) { + Calendar instance = Calendar.getInstance(); + instance.setTime(new Date()); + instance.add(Calendar.DATE, -beyondDay); + instance.set(Calendar.HOUR_OF_DAY, 00); + instance.set(Calendar.MINUTE, 00); + instance.set(Calendar.SECOND, 00); + instance.set(Calendar.MILLISECOND, 000); + Date start = instance.getTime(); + return start; + } + /** * 递归获取预约建档的儿童信息 * @@ -819,12 +864,12 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { Update update = MongoConvertHelper .convertToNativeUpdate(ReflectionUtils.getUpdateField(visitInfoModel)); mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(visitInfoModel.getId())), update, BabyAfterVisitInfoModel.class); - if (afterVisitWorkflow.equals(TrackDownTransferEnums.B.getId())) { + if (afterVisitWorkflow.equals(TrackDownTransferEnums.B.getId().toString())) { // 停止当前流程 mongoTemplate.updateFirst(Query.query(Criteria.where(BABY_ID).is(babyId).and("type").is(type)), Update.update("yn", 2), BabyAfterVisitInfoModel.class); } - if (afterVisitWorkflow.equals(TrackDownTransferEnums.C.getId())) { + if (afterVisitWorkflow.equals(TrackDownTransferEnums.C.getId().toString())) { // 终止所有流程 int parseInt = Integer.parseInt(type); if (parseInt == TYPE_CHECK) { -- 1.8.3.1