From fec2737215744ad5d469922b6f4309829fd0761d Mon Sep 17 00:00:00 2001 From: litao Date: Fri, 9 Jun 2017 11:18:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E6=95=B0=E6=8D=AE=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lyms/platform/common/utils/DateUtil.java | 85 +++++++++++-- .../web/service/impl/ReportServiceImpl.java | 136 ++++++++++----------- 2 files changed, 139 insertions(+), 82 deletions(-) diff --git a/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java b/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java index c62420b..1669b66 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java +++ b/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java @@ -4,9 +4,7 @@ import org.joda.time.DateTime; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; +import java.util.*; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; @@ -885,17 +883,88 @@ public class DateUtil { * @return */ public static String getWeekDesc(Date start, Date end) { + if(start == null || end == null) { + return "孕0周+0天"; + } Integer betweenDay = DateUtil.getDays(start, end); Integer week = betweenDay / 7; Integer day = betweenDay % 7; return "孕" + week + "周+" + day + "天"; } + /** + * 获取两个日期相差几个月 + * @param start + * @param end + * @return + */ + public static int getMonth(Date start, Date end) { + int result = 0; + try { + Calendar c1 = Calendar.getInstance(); + Calendar c2 = Calendar.getInstance(); + c1.setTime(start); + c2.setTime(end); + result = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH); + result += 12 * (c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR)); + if(c2.get(Calendar.DAY_OF_MONTH) - c1.get(Calendar.DAY_OF_MONTH) < 0 && result > 0) { + result -= 1; + } + } catch (Exception e) { + e.printStackTrace(); + } + return Math.abs(result); + } + + /** + * 获取两个日期直接的天数(只算最后的天数) + * 比如 2017-10-10 2017-11-20 返回 10 + * @param start + * @param end + * @return + */ + public static Integer getExcludeMonthDay(Date start, Date end) { + int result = 0; + try { + Calendar c1 = Calendar.getInstance(); + Calendar c2 = Calendar.getInstance(); + c1.setTime(start); + c2.setTime(end); + + int endDay = c2.get(Calendar.DAY_OF_MONTH); + int startDay = c1.get(Calendar.DAY_OF_MONTH); + if(endDay >= startDay) { + result = endDay - startDay; + } else { /** 获取上个月天数 + endDate天数 - startDate天数 */ + c2.add(Calendar.MONTH,-1);/** 得到上个月的月份 */ + result = c2.getActualMaximum(Calendar.DAY_OF_MONTH) + endDay - startDay; + } + + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + public static void main(String[] arg) throws Exception { - Date start = parseYMD("2016-05-01"); - Date end = parseYMD("2016-05-11"); - System.out.println(getWeekDesc(start, end)); - String s = DateUtil.getyyyy_MM_dd_hms(new Date(1496829600000L)); - System.out.println(s); + Date start = parseYMD("2017-05-11"); + Date end = parseYMD("2017-06-02"); + System.err.println(getMonthDesc(start, end)); + } + + + /** + * 获取月龄描述信息 优惠券使用时间 - 分娩时间 + * @param start + * @param end + * @return + */ + public static String getMonthDesc(Date start, Date end) { + if(start == null || end == null) { + return "0月龄+0天"; + } + int month = getMonth(start, end); + int day = getExcludeMonthDay(start, end); + return month + "月龄+" + day + "天"; } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java index fcc5b4a..6e4abf45 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java @@ -5,7 +5,6 @@ import com.lyms.platform.common.enums.CouponEnums; import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.PageResult; import com.lyms.platform.common.result.RespBuilder; -import com.lyms.platform.common.result.ResponseCode; import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.common.utils.EnumUtil; import com.lyms.platform.operate.web.dao.IReportDao; @@ -13,11 +12,10 @@ import com.lyms.platform.operate.web.facade.AccessPermissionFacade; import com.lyms.platform.operate.web.facade.AutoMatchFacade; import com.lyms.platform.operate.web.service.IReportService; import com.lyms.platform.operate.web.utils.*; -import com.lyms.platform.operate.web.utils.CollectionUtils; import com.lyms.platform.permission.dao.master.CouponMapper; import com.lyms.platform.pojo.*; import com.lymsh.platform.reportdata.model.echarts.Series; -import org.apache.commons.collections.*; +import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; @@ -26,10 +24,8 @@ import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import org.springframework.util.Assert; -import scala.util.parsing.combinator.testing.Str; import javax.servlet.http.HttpServletResponse; -import java.lang.reflect.Method; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -777,7 +773,7 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService String operatorOrgName = null; /** 产检机构 */ String phone = null; /** 联系电话 */ String doctorName = couponMapper.findUserName(operatorUserId); /** 使用医生 */ - if(type == 1) { + if(type == 1 || type == 3) { Patients patients = mongoTemplate.findById(usedId, Patients.class); if(patients != null) { checkDate = patients.getCreated(); @@ -818,6 +814,56 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService phone = findPhoneByPid(antenatal.getPid()); } } + } else if(type == 4) { + MaternalDeliverModel maternalDeliverModel = mongoTemplate.findById(usedId, MaternalDeliverModel.class); + if(maternalDeliverModel != null) { + /** 使用时间 - 分娩时间 */ + week = DateUtil.getWeekDesc(findLastMensesByPatientId(maternalDeliverModel.getParentId()), useDate); + username = findUserNameByPid(maternalDeliverModel.getPid()); + operatorOrgName = couponMapper.findHospitalNameById(maternalDeliverModel.getHospitalId()); + phone = findPhoneByPid(maternalDeliverModel.getHospitalId()); + } + } else if(type == 5) { + DischargeAbstractMotherModel monther = mongoTemplate.findById(usedId, DischargeAbstractMotherModel.class); + if(monther != null) { + username = findUserNameByPid(monther.getpId()); + phone = findPhoneByPid(monther.getpId()); + String patientId = monther.getPatientId(); + if(StringUtils.isNotEmpty(patientId)) { + Patients patients = mongoTemplate.findById(usedId, Patients.class); + if(patients != null) { + operatorOrgName = couponMapper.findHospitalNameById(patients.getHospitalId()); + week = "产后" + DateUtil.getDays(patients.getFmDate(), useDate) + "天"; + } + } + } + } else if(type == 6) { + PostReviewModel postReviewModel = mongoTemplate.findById(usedId, PostReviewModel.class); + if(postReviewModel != null) { + username = findUserNameByPid(postReviewModel.getPid()); + phone = findPhoneByPid(postReviewModel.getPid()); + operatorOrgName = couponMapper.findHospitalNameById(postReviewModel.getHospitalId()); + week = "产后" + DateUtil.getDays(findLastMensesByPatientId(postReviewModel.getParentId()), useDate) + "天"; + } + } else if(type == 7) { + BabyModel babyModel = mongoTemplate.findById(usedId, BabyModel.class); + if(babyModel != null) { + username = findUserNameByPid(babyModel.getPid()); + phone = findPhoneByPid(babyModel.getPid()); + operatorOrgName = couponMapper.findHospitalNameById(babyModel.getHospitalId()); + week = DateUtil.getMonthDesc(babyModel.getBirth(), useDate); + } + } else if(type == 8) { + BabyCheckModel babyCheckModel = mongoTemplate.findById(usedId, BabyCheckModel.class); + if(babyCheckModel != null) { + operatorOrgName = couponMapper.findHospitalNameById(babyCheckModel.getHospitalId()); + BabyModel babyModel = mongoTemplate.findById(babyCheckModel.getBuildId(), BabyModel.class); + if(babyModel != null) { + week = DateUtil.getMonthDesc(babyModel.getBirth(), useDate); + username = findUserNameByPid(babyModel.getPid()); + phone = findPhoneByPid(babyModel.getPid()); + } + } } map.put("checkDate", checkDate == null ? null : DateUtil.getyyyy_MM_dd(checkDate)); @@ -849,6 +895,16 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService return null; } + private Date findLastMensesByPatientId(String id) { + if(StringUtils.isNotEmpty(id)) { + Patients patients = mongoTemplate.findById(id, Patients.class); + if(patients != null) { + return patients.getLastMenses(); + } + } + return null; + } + private Integer findNumberByList(String sortField, String key, String value, T current, Class clazz) { Integer number = 1; List lists = mongoTemplate.find(Query.query(Criteria.where(key).is(value)).with(new Sort(Sort.Direction.ASC, sortField)), clazz); @@ -952,74 +1008,6 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService ResponseUtil.responseExcel(cnames, results, response); } - /*private void setUsedInfo(Map map) { - String sequenceId = (String) map.get("sequence_id"); - Integer type = (Integer) map.get("type"); - if(StringUtils.isEmpty(sequenceId) || type == null) return; - - - if(type == 1) { - Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("").is(sequenceId)), Patients.class); - if(patients != null) { - map.put("checkDate", patients.getCreated()); *//** 产检日期 *//* - } - } - - AntExChuModel antexc = mongoTemplate.findOne(Query.query(Criteria.where("barCode").is(sequenceId)), AntExChuModel.class); - if(antexc != null) { - map.put("checkDate", antexc.getCheckTime()); *//** 产检日期 *//* - Patients patients = mongoTemplate.findById(antexc.getParentId(), Patients.class); - if(patients != null) { - map.put("username", patients.getUsername()); *//** 姓名 *//* - } - map.put("week", DateUtil.getWeek(antexc.getLastMenses(), antexc.getCheckTime()));*//** 产检孕周 = 产检时间 - 末次月经 *//* - - List antExChuModels = mongoTemplate.find(Query.query(Criteria.where("pid").is(antexc.getPid())).with(new Sort(Sort.Direction.ASC, "checkTime")), AntExChuModel.class); - if(org.apache.commons.collections.CollectionUtils.isNotEmpty(antExChuModels)) { - for(int i = 0; i < antExChuModels.size(); i++) { - if(antExChuModels.get(i).getId().equals(antexc.getId())) { - map.put("number", ++i); *//** 产检第几次 *//* - return; - } - } - } - - map.put("doctorName", couponMapper.findUserName(antexc.getProdDoctor())); *//** 产检医生 *//* - map.put("operatorOrgName", couponMapper.findUserName(antexc.getOperator() + "")); *//** 产检机构 *//* - PersonModel personModel = mongoTemplate.findById(map.get("user_id"), PersonModel.class); - if(personModel != null) { - map.put("phone", personModel.getPhone()); - } else { - map.put("phone", null); - } - } else { - AntenatalExaminationModel antenatal = mongoTemplate.findOne(Query.query(Criteria.where("barCode").is(sequenceId)), AntenatalExaminationModel.class); - if(antenatal != null) { - map.put("checkDate", antenatal.getCheckDate()); *//** 产检日期 *//* - Patients patients = mongoTemplate.findById(antenatal.getParentId(), Patients.class); - if(patients != null) { - map.put("username", patients.getUsername()); *//** 姓名 *//* - } - map.put("week", antenatal.getCurrentDueDate());*//** 产检孕周 = 产检时间 - 末次月经 *//* - map.put("number", antenatal.getYn()); *//** 产检第几次 *//* - map.put("doctorName", couponMapper.findUserName(antenatal.getCheckDoctor())); *//** 产检医生 *//* - map.put("operatorOrgName", couponMapper.findUserName(antenatal.getOperator() + "")); *//** 产检机构 *//* - map.put("phone", couponMapper.findPhone(antenatal.getOperator() + "")); - } - } - - Date useDate = (Date) map.get("use_date"); - String usedId = (String) map.get("used_id"); - if(StringUtils.isNotBlank(usedId)) { - BabyModel babyModel = mongoTemplate.findById(usedId, BabyModel.class); - if (babyModel != null) { - Date birth = babyModel.getBirth(); - Integer day = DateUtil.getDays(birth, useDate); - map.put("use_day", "产后" + day + "天"); - } - } - }*/ - private String findName(Object id) { if(id != null) { BasicConfig basicConfig = mongoTemplate.findById(id, BasicConfig.class); -- 1.8.3.1