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 49972b5..b46f28b 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 @@ -53,6 +53,72 @@ public class DateUtil { return days; } + /** + * 获取传入日期 相加xx月后的第xx天 + * @param date + * @param addMonth 添加的月份数 当前月=0, 下月=1,上月=-1 + * @param day 第一天传1, 第二天传2,....... 最后一天传0 + * @return + */ + public static Date getMonthDay(Date date, Integer addMonth, Integer day) { + if(date != null && addMonth != null && day != null) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.MONTH, day == 0 ? addMonth + 1 : addMonth); + calendar.set(Calendar.DAY_OF_MONTH, day); + return getYmdDate(calendar.getTime()); + } + return null; + } + + /** + * 获取季度的时间 + * 和getMonthDay一样 + */ + public static Date getQuartDay(Date date, Integer addQuart, Integer day) { + Integer quart = getQuart(date); + if(quart != null && addQuart != null && day != null) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.set(Calendar.MONTH, day == 0 ? (quart + addQuart) * 3 : (quart - 1 + addQuart) * 3); + calendar.set(Calendar.DAY_OF_MONTH, day); + return getYmdDate(calendar.getTime()); + } + return null; + } + + /** + * 1月~3月 4~6 7~9 10~11 + * 获取当前时间属于哪个季度 + * @param date + * @return + */ + public static Integer getQuart(Date date) { + if(date != null) { + Integer month = getMonth(date); + if(month >= 1 && month <= 3) { + return 1; + } else if(month >= 4 && month <= 6) { + return 2; + } else if(month >= 7 && month <= 9) { + return 3; + } else if(month >= 10 && month <= 12) { + return 4; + } + } + return null; + } + + public static Date getYmdDate(Date date){ + try { + date.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(y_m_d.format(date)).getTime()); + } catch (Exception e) { + e.printStackTrace(); + } + return date; + } + + public static Integer minute2Index(Date date) { DateTime dt = new DateTime(date.getTime()); @@ -1270,13 +1336,21 @@ public class DateUtil { } public static void main(String[] args) { - List> monthBetween = getRange(parseYMD("2017-1-11"), parseYMD("2017-3-11")); + /* List> monthBetween = getRange(parseYMD("2017-1-11"), parseYMD("2017-3-11")); for (Map map : monthBetween) { System.out.print("cname>> " + getyyyy_mm(map.get("cname"))); System.out.print(" start>> " + getyyyy_MM_dd(map.get("start"))); System.out.println(" end>> " + getyyyy_MM_dd(map.get("end"))); - } + }*/ + System.out.println("当月第一天: " + getMonthDay(new Date(), 0, 1).toLocaleString()); + System.out.println("当月最后一天: " + getMonthDay(new Date(), 0, 0).toLocaleString()); + System.out.println("上月第一天: " + getMonthDay(new Date(), -1, 1).toLocaleString()); + System.out.println("上月最后一天: " + getMonthDay(new Date(), -1, 0).toLocaleString()); + System.out.println("当前季度第一天: " + getQuartDay(new Date(), 0, 1).toLocaleString()); + System.out.println("当前季度最后一天: " + getQuartDay(new Date(), 0, 0).toLocaleString()); + System.out.println("上个季度第一天: " + getQuartDay(new Date(), -1, 1).toLocaleString()); + System.out.println("上个季度最后一天: " + getQuartDay(new Date(), -1, 0).toLocaleString()); } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java index 70acdf4..76c899d 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java @@ -34,7 +34,7 @@ public class ReportController extends BaseController { /** * 建档统计 * @param statistType 1=占比 2=环比 - * @param statistVal 1=占比 2=环比 + * @param statistVal 1=月 2=季度 3=半年 4=年 * @param ageType 1=全部年龄 2=20岁以下 3=20-30岁 4=30-40岁 5=40岁以上 * @param patientType 建档孕周 1=孕早期 2=孕中期 3=孕晚期 * @return diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java index 43f617e..b647db4 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java @@ -237,6 +237,8 @@ public class ViewFacade { //建档孕周 map.put("buildDueWeek", ResolveUtils.getPregnancyWeek(data, data.getBookbuildingDate())); + map.put("fuckLastMensWeek", ResolveUtils.getPregnancyWeek2(data, data.getBookbuildingDate())); + /** 优惠券编号 */ map.put("couponCode", couponService.findByUsedId(id)); 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 f2de6dc..d0d6493 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 @@ -205,11 +205,12 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService Map lineMap = new HashMap<>(); List> range = DateUtil.getRange(startDate, endDate); + List patientIds = new ArrayList<>(); + for (Patients patient : patients) { + patientIds.add(patient.getId()); + } + if(StringUtils.isNotEmpty(aredId)) { // 按照医院统计 - List patientIds = new ArrayList<>(); - for (Patients patient : patients) { - patientIds.add(patient.getId()); - } GroupOperation groupOperation = Aggregation.group("hospitalId").count().as("count"); Aggregation agg = Aggregation.newAggregation(Patients.class, Aggregation.match(Criteria.where("id").in(patientIds)), groupOperation); AggregationResults results = mongoTemplate.aggregate(agg, Patients.class, Map.class); @@ -345,7 +346,6 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService } tabList.add(tempList); } - System.out.println(tabList); } tabList.add(0, titleList); @@ -365,7 +365,24 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService line.add(MathUtil.getProportion(num, count)); } } else if(statistType == 2) { - + Date start = null; + Date end = null; + Date beforeStart = null; + Date beforeEnd = null; + switch (statistVal) { //1=月 2=季度 3=半年 4=年 + case 1: + start = DateUtil.getMonthDay(new Date(), 0, 1); + end = DateUtil.getMonthDay(new Date(), 0, 0); + beforeStart = DateUtil.getMonthDay(new Date(), -1, 1); + beforeEnd = DateUtil.getMonthDay(new Date(), -1, 0); + break; + case 2: + break; + case 3: + break; + case 4: + break; + } } lineMap.put("data", line); lineMap.put("type", "line"); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/ResolveUtils.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/ResolveUtils.java index 9e8ed30..64c79a7 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/ResolveUtils.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/ResolveUtils.java @@ -11,7 +11,6 @@ import com.lyms.platform.query.BasicConfigQuery; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; -import org.springframework.beans.factory.annotation.Autowired; import java.util.*; @@ -372,6 +371,29 @@ public class ResolveUtils { dueWeek = "已分娩"; } else { if (null != patients.getLastMenses()) { + int days = 0; + if(patients.getFuckLastMens() != null) { + days = DateUtil.daysBetween(patients.getFuckLastMens(), date); + } else { + days = DateUtil.daysBetween(patients.getLastMenses(), date); + } + dueWeek = com.lyms.platform.common.utils.StringUtils.dueWeek(days); + } + } + return dueWeek; + } + + public static String getPregnancyWeek2(Patients patients,Date date){ + String dueWeek=""; + if (null != patients.getDueStatus() && patients.getDueStatus() != null && 1 == patients.getDueStatus()) { + dueWeek = "终止妊娠"; + } else if (patients.getType() != null && 3 == patients.getType()) { + dueWeek = "已分娩"; + } else { + if (null != patients.getLastMenses()) { + if(patients.getFuckLastMens() == null) { + return ""; + } int days = DateUtil.daysBetween(patients.getLastMenses(), date); dueWeek = com.lyms.platform.common.utils.StringUtils.dueWeek(days); } @@ -383,6 +405,7 @@ public class ResolveUtils { + public static void main(String[] str) { // String ssss = "{\"qztp\":true,\"yesOrNo\":\"no\",\"tpzb\":true,\"zxqqz\":true,\"zxqqq\":true,\"tpzl\":true," + // "\"zxmxgxybfzxqq\":true,\"chcx\":true,\"rshbmxgxy\":true,\"tmzp\":true,\"rsqgxy\":true,\"qt\":false,\"qtText\":\"11\"}";