diff --git a/platform-dal/src/main/java/com/lyms/platform/query/AntExRecordQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/AntExRecordQuery.java index dd9d82a..7d1d120 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/AntExRecordQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/AntExRecordQuery.java @@ -433,6 +433,16 @@ public class AntExRecordQuery extends BaseQuery implements IConvertToNativeQuery // 0~12 孕周 16~20 孕周 21~24 孕周 28~36 孕周 37~ 分娩 // 1 表示在上面各个孕周范围内的第一次检查,2 不是 private Integer isFirst; + //外院 + private String notHospitalId; + + public String getNotHospitalId() { + return notHospitalId; + } + + public void setNotHospitalId(String notHospitalId) { + this.notHospitalId = notHospitalId; + } public Integer getIsFirst() { return isFirst; @@ -744,6 +754,9 @@ public class AntExRecordQuery extends BaseQuery implements IConvertToNativeQuery if (null != hospitalId) { condition = condition.and("hospitalId", hospitalId, MongoOper.IS); } + if (null != notHospitalId) { + condition = condition.and("hospitalId", notHospitalId, MongoOper.NE); + } if (null != hospitalList) { condition = condition.and("hospitalId", hospitalList, MongoOper.IN); } 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 bcc4474..c231313 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 @@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Date; +import java.util.List; import java.util.Map; /** @@ -546,7 +547,7 @@ public class ReportController extends BaseController { return reportService.getAntExChuDetail(hospitalId, startDate, endDate); } /** - * 统计管理-孕产妇数据统计-高危详情 + * 统计管理-孕产妇数据统计-初诊详情-高危详情 * * @param hospitalId * @param startDate @@ -565,6 +566,32 @@ public class ReportController extends BaseController { return reportService.getHighRiskDetail(hospitalId,riskType, startDate, endDate, page, limit); } /** + * 统计管理-孕产妇数据统计-建档当月未初诊-(下月初诊、外院初诊、一直未初诊)详情 + * + * @param hospitalId + * @param type + * @param antExChuNotList 建档未初诊 + * @param antExChuNotAlwaysList 建档一直未初诊 + * @param startDate + * @param endDate + * @param page + * @param limit + * @return + */ + @RequestMapping(value = "/getAntExChuNotDetail", method = RequestMethod.GET) + @ResponseBody + @TokenRequired + public BaseResponse getAntExChuNotDetail(@RequestParam(required = true)String hospitalId, + @RequestParam(required = true)Integer type, + @RequestParam(required = true)List antExChuNotList, + @RequestParam(required = true)List antExChuNotAlwaysList, + @RequestParam(required = true)Date startDate, + @RequestParam(required = true)Date endDate, + @RequestParam(required = true)Integer page, + @RequestParam(required = true)Integer limit) { + return reportService.getAntExChuNotDetail(hospitalId,type,antExChuNotList ,antExChuNotAlwaysList,startDate, endDate, page, limit); + } + /** * 统计管理-孕产妇数据统计-分娩详情 * * @param hospitalId diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java index 70880ca..b0dd12b 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java @@ -5,6 +5,7 @@ import com.lyms.platform.common.result.BaseResponse; import javax.servlet.http.HttpServletResponse; import java.util.Date; +import java.util.List; import java.util.Map; /** @@ -119,4 +120,6 @@ public interface IReportService extends IBaseService { BaseResponse getFmDetail(String hospitalId, Date startDate, Date endDate); BaseResponse getFmAfterEvaluate(String hospitalId,String startDate,String endDate); + + BaseResponse getAntExChuNotDetail(String hospitalId, Integer type, List antExChuNotList,List antExChuNotAlwaysList, Date startDate, Date endDate, Integer page, Integer limit); } 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 a5ae8bc..f22c5ae 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 @@ -106,6 +106,13 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService @Autowired private AntExRecordService recordService; + @Autowired + private AntenatalExaminationService antExService; + + @Autowired + private PatientsService patientsService; + + private static final Map colorMap = new HashMap<>(); /** @@ -4414,18 +4421,18 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService .and("yn").is(YnEnums.YES.getId()); long antExChu = mongoTemplate.count(Query.query(criteria2), AntExChuModel.class); //建档且初诊(限本院) - List filingPids = new ArrayList<>(); + List filingParentIds = new ArrayList<>(); for (Patients patients : patientsList) { - filingPids.add(patients.getId()); + filingParentIds.add(patients.getId()); } - Criteria criteria3 = Criteria.where("parentId").in(filingPids) + Criteria criteria3 = Criteria.where("parentId").in(filingParentIds) .and("hospitalId").is(hospitalId) .and("yn").is(YnEnums.YES.getId()) .and("checkTime").gte(startDate).lte(endDate); long filingRoAntExChu = mongoTemplate.count(Query.query(criteria3), AntExChuModel.class); //建档未初诊(包含外院初诊) - List antExChuNotList = new ArrayList<>();//档案pid - for (Object obj : filingPids) { + List antExChuNotList = new ArrayList<>();//后面详情会用到 + for (Object obj : filingParentIds) { Criteria criteria0 = Criteria.where("parentId").is(obj) .and("yn").is(YnEnums.YES.getId()) .and("checkTime").gte(startDate).lte(endDate); @@ -4448,6 +4455,7 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService long antExChuWai = mongoTemplate.count(Query.query(criteria5), AntExChuModel.class); //一直未初诊 int filingNotAntExChu= 0; + List antExChuNotAlwaysList = new ArrayList<>();//后面详情用到 for (Object obj : antExChuNotList) { Criteria criteria6= Criteria.where("parentId").is(obj) .and("hospitalId").is(hospitalId) @@ -4456,6 +4464,7 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService long count = mongoTemplate.count(Query.query(criteria6), AntExChuModel.class); if(count==0){ filingNotAntExChu++; + antExChuNotAlwaysList.add(obj); } } //当前时间范围初诊,之前建档 @@ -4559,6 +4568,8 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService map.put("livingCount", boy+girl); map.put("boyCount", boy); map.put("girlCount", girl); + map.put("antExChuNotList", antExChuNotList);//后面详情用到。不用再次重复查询 + map.put("antExChuNotAlwaysList", antExChuNotAlwaysList);//后面详情用到。不用再次重复查询 br.setErrorcode(ErrorCodeConstants.SUCCESS); br.setErrormsg("成功"); @@ -4684,7 +4695,7 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService antExRecordQuery.setNeed("yes"); antExRecordQuery.setPage(page); antExRecordQuery.setLimit(limit); - List antExRecordModelList = recordService.queryAntExRecords(antExRecordQuery, Sort.Direction.DESC, "created"); + List antExRecordModelList = recordService.queryAntExRecords(antExRecordQuery, Sort.Direction.DESC, "checkTime"); for (AntExRecordModel antExRecordModel : antExRecordModelList) { Mapmap =new HashMap<>(); map.put("name", antExRecordModel.getName()); @@ -4718,6 +4729,91 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService } @Override + public BaseResponse getAntExChuNotDetail(String hospitalId, Integer type,List antExChuNotList,List antExChuNotAlwaysList, Date startDate, Date endDate, Integer page, Integer limit) { + BaseListResponse br = new BaseListResponse(); + List > antExRecordResult=new ArrayList<>(); + //1:下月初诊、2:外院初诊、3:一直未初诊 + List antExRecordModelList=new ArrayList<>(); + List patientsList=new ArrayList<>(); + AntExRecordQuery antExRecordQuery = new AntExRecordQuery(); + PatientsQuery patientsQuery=new PatientsQuery(); + if(CollectionUtils.isNotEmpty(antExChuNotList)||CollectionUtils.isNotEmpty(antExChuNotAlwaysList)) { + switch (type) { + case 1: + antExRecordQuery.setParentIds(antExChuNotList); + antExRecordQuery.setHospitalId(hospitalId); + antExRecordQuery.setCheckTimeStart(DateUtil.getMonthDay(startDate, 1, 1)); + antExRecordQuery.setCheckTimeEnd(DateUtil.getMonthDay(startDate, 1, 0)); + antExRecordQuery.setType(2);//初诊 + antExRecordQuery.setNeed("yes"); + antExRecordQuery.setPage(page); + antExRecordQuery.setLimit(limit); + antExRecordModelList = recordService.queryAntExRecords(antExRecordQuery, Sort.Direction.DESC, "checkTime"); + break; + case 2: + antExRecordQuery.setParentIds(antExChuNotList); + antExRecordQuery.setNotHospitalId(hospitalId); + antExRecordQuery.setCheckTimeStart(startDate); + antExRecordQuery.setType(2);//初诊 + antExRecordQuery.setNeed("yes"); + antExRecordQuery.setPage(page); + antExRecordQuery.setLimit(limit); + antExRecordModelList = recordService.queryAntExRecords(antExRecordQuery, Sort.Direction.DESC, "checkTime"); + break; + case 3: + patientsQuery.setIds(antExChuNotAlwaysList); + patientsQuery.setNeed("yse"); + patientsQuery.setPage(page); + patientsQuery.setLimit(limit); + patientsList = patientsService.queryPatientBySort(patientsQuery, "bookbuildingDate", "DESC"); + for (Patients patient : patientsList) { + Map map = new HashMap<>(); + map.put("name", patient.getUsername()); + //建档孕周 + int days = DateUtil.getDays(patient.getLastMenses(), patient.getBookbuildingDate()); + map.put("filingDueWeek", com.lyms.platform.common.utils.StringUtils.dueWeek(days)); + //当前孕周 + int days2 = DateUtil.getDays(patient.getLastMenses(), new Date()); + map.put("nowDueWeek", com.lyms.platform.common.utils.StringUtils.dueWeek(days2)); + map.put("age", DateUtil.getAge(patient.getBirth())); + map.put("phone", patient.getPhone()); + //居住地 + String liveAddress = CommonsHelper.getResidence(patient.getProvinceId(), patient.getCityId(), + patient.getAreaId(), patient.getStreetId(), patient.getAddress(), basicConfigService); + map.put("liveAddress", liveAddress); + antExRecordResult.add(map); + } + br.setPageInfo(patientsQuery.getPageInfo()); + break; + } + if (type == 1 || type == 2) { + for (AntExRecordModel antExRecordModel : antExRecordModelList) { + Map map = new HashMap<>(); + map.put("name", antExRecordModel.getName()); + //建档孕周 + int days = DateUtil.getDays(antExRecordModel.getLastMenses(), antExRecordModel.getBuildTime()); + map.put("filingDueWeek", com.lyms.platform.common.utils.StringUtils.dueWeek(days)); + //当前孕周 + int days2 = DateUtil.getDays(antExRecordModel.getLastMenses(), new Date()); + map.put("nowDueWeek", com.lyms.platform.common.utils.StringUtils.dueWeek(days2)); + map.put("age", DateUtil.getAge(antExRecordModel.getBrith())); + map.put("phone", antExRecordModel.getPhone()); + //居住地 + String liveAddress = CommonsHelper.getResidence(antExRecordModel.getProvinceId(), antExRecordModel.getCityId(), + antExRecordModel.getAreaId(), antExRecordModel.getStreetId(), antExRecordModel.getAddress(), basicConfigService); + map.put("liveAddress", liveAddress); + antExRecordResult.add(map); + } + br.setPageInfo(antExRecordQuery.getPageInfo()); + } + } + br.setErrorcode(ErrorCodeConstants.SUCCESS); + br.setErrormsg("成功"); + br.setData(antExRecordResult); + return br; + } + + @Override public BaseResponse getFmDetail(String hospitalId, Date startDate, Date endDate) { BaseResponse br = new BaseResponse(); List > doctorFm=new ArrayList<>();