Commit fec2737215744ad5d469922b6f4309829fd0761d

Authored by litao
1 parent 54c7ef4208

报表数据完善

Showing 2 changed files with 139 additions and 82 deletions

platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java View file @ fec2737
... ... @@ -4,9 +4,7 @@
4 4  
5 5 import java.text.ParseException;
6 6 import java.text.SimpleDateFormat;
7   -import java.util.Calendar;
8   -import java.util.Date;
9   -import java.util.GregorianCalendar;
  7 +import java.util.*;
10 8 import java.util.concurrent.locks.Lock;
11 9 import java.util.concurrent.locks.ReentrantLock;
12 10  
13 11  
14 12  
... ... @@ -885,18 +883,89 @@
885 883 * @return
886 884 */
887 885 public static String getWeekDesc(Date start, Date end) {
  886 + if(start == null || end == null) {
  887 + return "孕0周+0天";
  888 + }
888 889 Integer betweenDay = DateUtil.getDays(start, end);
889 890 Integer week = betweenDay / 7;
890 891 Integer day = betweenDay % 7;
891 892 return "孕" + week + "周+" + day + "天";
892 893 }
893 894  
  895 + /**
  896 + * 获取两个日期相差几个月
  897 + * @param start
  898 + * @param end
  899 + * @return
  900 + */
  901 + public static int getMonth(Date start, Date end) {
  902 + int result = 0;
  903 + try {
  904 + Calendar c1 = Calendar.getInstance();
  905 + Calendar c2 = Calendar.getInstance();
  906 + c1.setTime(start);
  907 + c2.setTime(end);
  908 + result = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);
  909 + result += 12 * (c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR));
  910 + if(c2.get(Calendar.DAY_OF_MONTH) - c1.get(Calendar.DAY_OF_MONTH) < 0 && result > 0) {
  911 + result -= 1;
  912 + }
  913 + } catch (Exception e) {
  914 + e.printStackTrace();
  915 + }
  916 + return Math.abs(result);
  917 + }
  918 +
  919 + /**
  920 + * 获取两个日期直接的天数(只算最后的天数)
  921 + * 比如 2017-10-10 2017-11-20 返回 10
  922 + * @param start
  923 + * @param end
  924 + * @return
  925 + */
  926 + public static Integer getExcludeMonthDay(Date start, Date end) {
  927 + int result = 0;
  928 + try {
  929 + Calendar c1 = Calendar.getInstance();
  930 + Calendar c2 = Calendar.getInstance();
  931 + c1.setTime(start);
  932 + c2.setTime(end);
  933 +
  934 + int endDay = c2.get(Calendar.DAY_OF_MONTH);
  935 + int startDay = c1.get(Calendar.DAY_OF_MONTH);
  936 + if(endDay >= startDay) {
  937 + result = endDay - startDay;
  938 + } else { /** 获取上个月天数 + endDate天数 - startDate天数 */
  939 + c2.add(Calendar.MONTH,-1);/** 得到上个月的月份 */
  940 + result = c2.getActualMaximum(Calendar.DAY_OF_MONTH) + endDay - startDay;
  941 + }
  942 +
  943 + } catch (Exception e) {
  944 + e.printStackTrace();
  945 + }
  946 + return result;
  947 + }
  948 +
894 949 public static void main(String[] arg) throws Exception {
895   - Date start = parseYMD("2016-05-01");
896   - Date end = parseYMD("2016-05-11");
897   - System.out.println(getWeekDesc(start, end));
898   - String s = DateUtil.getyyyy_MM_dd_hms(new Date(1496829600000L));
899   - System.out.println(s);
  950 + Date start = parseYMD("2017-05-11");
  951 + Date end = parseYMD("2017-06-02");
  952 + System.err.println(getMonthDesc(start, end));
  953 + }
  954 +
  955 +
  956 + /**
  957 + * 获取月龄描述信息 优惠券使用时间 - 分娩时间
  958 + * @param start
  959 + * @param end
  960 + * @return
  961 + */
  962 + public static String getMonthDesc(Date start, Date end) {
  963 + if(start == null || end == null) {
  964 + return "0月龄+0天";
  965 + }
  966 + int month = getMonth(start, end);
  967 + int day = getExcludeMonthDay(start, end);
  968 + return month + "月龄+" + day + "天";
900 969 }
901 970 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java View file @ fec2737
... ... @@ -5,7 +5,6 @@
5 5 import com.lyms.platform.common.result.BaseObjectResponse;
6 6 import com.lyms.platform.common.result.PageResult;
7 7 import com.lyms.platform.common.result.RespBuilder;
8   -import com.lyms.platform.common.result.ResponseCode;
9 8 import com.lyms.platform.common.utils.DateUtil;
10 9 import com.lyms.platform.common.utils.EnumUtil;
11 10 import com.lyms.platform.operate.web.dao.IReportDao;
12 11  
... ... @@ -13,11 +12,10 @@
13 12 import com.lyms.platform.operate.web.facade.AutoMatchFacade;
14 13 import com.lyms.platform.operate.web.service.IReportService;
15 14 import com.lyms.platform.operate.web.utils.*;
16   -import com.lyms.platform.operate.web.utils.CollectionUtils;
17 15 import com.lyms.platform.permission.dao.master.CouponMapper;
18 16 import com.lyms.platform.pojo.*;
19 17 import com.lymsh.platform.reportdata.model.echarts.Series;
20   -import org.apache.commons.collections.*;
  18 +import org.apache.commons.collections.MapUtils;
21 19 import org.apache.commons.lang.StringUtils;
22 20 import org.springframework.beans.factory.annotation.Autowired;
23 21 import org.springframework.data.domain.Sort;
24 22  
... ... @@ -26,10 +24,8 @@
26 24 import org.springframework.data.mongodb.core.query.Query;
27 25 import org.springframework.stereotype.Service;
28 26 import org.springframework.util.Assert;
29   -import scala.util.parsing.combinator.testing.Str;
30 27  
31 28 import javax.servlet.http.HttpServletResponse;
32   -import java.lang.reflect.Method;
33 29 import java.sql.PreparedStatement;
34 30 import java.sql.ResultSet;
35 31 import java.sql.SQLException;
... ... @@ -777,7 +773,7 @@
777 773 String operatorOrgName = null; /** 产检机构 */
778 774 String phone = null; /** 联系电话 */
779 775 String doctorName = couponMapper.findUserName(operatorUserId); /** 使用医生 */
780   - if(type == 1) {
  776 + if(type == 1 || type == 3) {
781 777 Patients patients = mongoTemplate.findById(usedId, Patients.class);
782 778 if(patients != null) {
783 779 checkDate = patients.getCreated();
... ... @@ -818,6 +814,56 @@
818 814 phone = findPhoneByPid(antenatal.getPid());
819 815 }
820 816 }
  817 + } else if(type == 4) {
  818 + MaternalDeliverModel maternalDeliverModel = mongoTemplate.findById(usedId, MaternalDeliverModel.class);
  819 + if(maternalDeliverModel != null) {
  820 + /** 使用时间 - 分娩时间 */
  821 + week = DateUtil.getWeekDesc(findLastMensesByPatientId(maternalDeliverModel.getParentId()), useDate);
  822 + username = findUserNameByPid(maternalDeliverModel.getPid());
  823 + operatorOrgName = couponMapper.findHospitalNameById(maternalDeliverModel.getHospitalId());
  824 + phone = findPhoneByPid(maternalDeliverModel.getHospitalId());
  825 + }
  826 + } else if(type == 5) {
  827 + DischargeAbstractMotherModel monther = mongoTemplate.findById(usedId, DischargeAbstractMotherModel.class);
  828 + if(monther != null) {
  829 + username = findUserNameByPid(monther.getpId());
  830 + phone = findPhoneByPid(monther.getpId());
  831 + String patientId = monther.getPatientId();
  832 + if(StringUtils.isNotEmpty(patientId)) {
  833 + Patients patients = mongoTemplate.findById(usedId, Patients.class);
  834 + if(patients != null) {
  835 + operatorOrgName = couponMapper.findHospitalNameById(patients.getHospitalId());
  836 + week = "产后" + DateUtil.getDays(patients.getFmDate(), useDate) + "天";
  837 + }
  838 + }
  839 + }
  840 + } else if(type == 6) {
  841 + PostReviewModel postReviewModel = mongoTemplate.findById(usedId, PostReviewModel.class);
  842 + if(postReviewModel != null) {
  843 + username = findUserNameByPid(postReviewModel.getPid());
  844 + phone = findPhoneByPid(postReviewModel.getPid());
  845 + operatorOrgName = couponMapper.findHospitalNameById(postReviewModel.getHospitalId());
  846 + week = "产后" + DateUtil.getDays(findLastMensesByPatientId(postReviewModel.getParentId()), useDate) + "天";
  847 + }
  848 + } else if(type == 7) {
  849 + BabyModel babyModel = mongoTemplate.findById(usedId, BabyModel.class);
  850 + if(babyModel != null) {
  851 + username = findUserNameByPid(babyModel.getPid());
  852 + phone = findPhoneByPid(babyModel.getPid());
  853 + operatorOrgName = couponMapper.findHospitalNameById(babyModel.getHospitalId());
  854 + week = DateUtil.getMonthDesc(babyModel.getBirth(), useDate);
  855 + }
  856 + } else if(type == 8) {
  857 + BabyCheckModel babyCheckModel = mongoTemplate.findById(usedId, BabyCheckModel.class);
  858 + if(babyCheckModel != null) {
  859 + operatorOrgName = couponMapper.findHospitalNameById(babyCheckModel.getHospitalId());
  860 + BabyModel babyModel = mongoTemplate.findById(babyCheckModel.getBuildId(), BabyModel.class);
  861 + if(babyModel != null) {
  862 + week = DateUtil.getMonthDesc(babyModel.getBirth(), useDate);
  863 + username = findUserNameByPid(babyModel.getPid());
  864 + phone = findPhoneByPid(babyModel.getPid());
  865 + }
  866 + }
821 867 }
822 868  
823 869 map.put("checkDate", checkDate == null ? null : DateUtil.getyyyy_MM_dd(checkDate));
... ... @@ -849,6 +895,16 @@
849 895 return null;
850 896 }
851 897  
  898 + private Date findLastMensesByPatientId(String id) {
  899 + if(StringUtils.isNotEmpty(id)) {
  900 + Patients patients = mongoTemplate.findById(id, Patients.class);
  901 + if(patients != null) {
  902 + return patients.getLastMenses();
  903 + }
  904 + }
  905 + return null;
  906 + }
  907 +
852 908 private <T> Integer findNumberByList(String sortField, String key, String value, T current, Class<T> clazz) {
853 909 Integer number = 1;
854 910 List<T> lists = mongoTemplate.find(Query.query(Criteria.where(key).is(value)).with(new Sort(Sort.Direction.ASC, sortField)), clazz);
... ... @@ -951,74 +1007,6 @@
951 1007 }
952 1008 ResponseUtil.responseExcel(cnames, results, response);
953 1009 }
954   -
955   - /*private void setUsedInfo(Map<String, Object> map) {
956   - String sequenceId = (String) map.get("sequence_id");
957   - Integer type = (Integer) map.get("type");
958   - if(StringUtils.isEmpty(sequenceId) || type == null) return;
959   -
960   -
961   - if(type == 1) {
962   - Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("").is(sequenceId)), Patients.class);
963   - if(patients != null) {
964   - map.put("checkDate", patients.getCreated()); *//** 产检日期 *//*
965   - }
966   - }
967   -
968   - AntExChuModel antexc = mongoTemplate.findOne(Query.query(Criteria.where("barCode").is(sequenceId)), AntExChuModel.class);
969   - if(antexc != null) {
970   - map.put("checkDate", antexc.getCheckTime()); *//** 产检日期 *//*
971   - Patients patients = mongoTemplate.findById(antexc.getParentId(), Patients.class);
972   - if(patients != null) {
973   - map.put("username", patients.getUsername()); *//** 姓名 *//*
974   - }
975   - map.put("week", DateUtil.getWeek(antexc.getLastMenses(), antexc.getCheckTime()));*//** 产检孕周 = 产检时间 - 末次月经 *//*
976   -
977   - List<AntExChuModel> antExChuModels = mongoTemplate.find(Query.query(Criteria.where("pid").is(antexc.getPid())).with(new Sort(Sort.Direction.ASC, "checkTime")), AntExChuModel.class);
978   - if(org.apache.commons.collections.CollectionUtils.isNotEmpty(antExChuModels)) {
979   - for(int i = 0; i < antExChuModels.size(); i++) {
980   - if(antExChuModels.get(i).getId().equals(antexc.getId())) {
981   - map.put("number", ++i); *//** 产检第几次 *//*
982   - return;
983   - }
984   - }
985   - }
986   -
987   - map.put("doctorName", couponMapper.findUserName(antexc.getProdDoctor())); *//** 产检医生 *//*
988   - map.put("operatorOrgName", couponMapper.findUserName(antexc.getOperator() + "")); *//** 产检机构 *//*
989   - PersonModel personModel = mongoTemplate.findById(map.get("user_id"), PersonModel.class);
990   - if(personModel != null) {
991   - map.put("phone", personModel.getPhone());
992   - } else {
993   - map.put("phone", null);
994   - }
995   - } else {
996   - AntenatalExaminationModel antenatal = mongoTemplate.findOne(Query.query(Criteria.where("barCode").is(sequenceId)), AntenatalExaminationModel.class);
997   - if(antenatal != null) {
998   - map.put("checkDate", antenatal.getCheckDate()); *//** 产检日期 *//*
999   - Patients patients = mongoTemplate.findById(antenatal.getParentId(), Patients.class);
1000   - if(patients != null) {
1001   - map.put("username", patients.getUsername()); *//** 姓名 *//*
1002   - }
1003   - map.put("week", antenatal.getCurrentDueDate());*//** 产检孕周 = 产检时间 - 末次月经 *//*
1004   - map.put("number", antenatal.getYn()); *//** 产检第几次 *//*
1005   - map.put("doctorName", couponMapper.findUserName(antenatal.getCheckDoctor())); *//** 产检医生 *//*
1006   - map.put("operatorOrgName", couponMapper.findUserName(antenatal.getOperator() + "")); *//** 产检机构 *//*
1007   - map.put("phone", couponMapper.findPhone(antenatal.getOperator() + ""));
1008   - }
1009   - }
1010   -
1011   - Date useDate = (Date) map.get("use_date");
1012   - String usedId = (String) map.get("used_id");
1013   - if(StringUtils.isNotBlank(usedId)) {
1014   - BabyModel babyModel = mongoTemplate.findById(usedId, BabyModel.class);
1015   - if (babyModel != null) {
1016   - Date birth = babyModel.getBirth();
1017   - Integer day = DateUtil.getDays(birth, useDate);
1018   - map.put("use_day", "产后" + day + "天");
1019   - }
1020   - }
1021   - }*/
1022 1010  
1023 1011 private String findName(Object id) {
1024 1012 if(id != null) {