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 60d7eb9..ac8b8c0 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 @@ -546,7 +546,7 @@ public class ReportController extends BaseController { return reportService.getAntExChuDetail(hospitalId, startDate, endDate); } /** - * 统计管理-孕产妇数据统计-初诊详情 + * 统计管理-孕产妇数据统计-高危详情 * * @param hospitalId * @param startDate @@ -564,5 +564,21 @@ public class ReportController extends BaseController { @RequestParam(required = true)Integer limit) { return reportService.getHighRiskDetail(hospitalId,riskType, startDate, endDate, page, limit); } + /** + * 统计管理-孕产妇数据统计-分娩详情 + * + * @param hospitalId + * @param startDate + * @param endDate + * @return + */ + @RequestMapping(value = "/getFmDetail", method = RequestMethod.GET) + @ResponseBody + @TokenRequired + public BaseResponse getFmDetail(@RequestParam(required = true)String hospitalId, + @RequestParam(required = true)Date startDate, + @RequestParam(required = true)Date endDate) { + return reportService.getFmDetail(hospitalId, startDate, endDate); + } } 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 7b3d496..0aa6fe8 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 @@ -115,4 +115,6 @@ public interface IReportService extends IBaseService { BaseResponse getAntExChuDetail(String hospitalId, Date startDate, Date endDate); BaseResponse getHighRiskDetail(String hospitalId,String riskType, Date startDate, Date endDate,Integer page,Integer limit); + + BaseResponse getFmDetail(String hospitalId, Date startDate, Date endDate); } 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 9b55025..8e1d860 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 @@ -37,6 +37,7 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.aggregation.Aggregation; +import org.springframework.data.mongodb.core.aggregation.AggregationOperation; import org.springframework.data.mongodb.core.aggregation.AggregationResults; import org.springframework.data.mongodb.core.aggregation.GroupOperation; import org.springframework.data.mongodb.core.query.Criteria; @@ -4502,16 +4503,22 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService //当前月分娩产妇(顺产、剖腹产) long fmSCount=0;//顺产 long fmPCount=0;//剖腹产 - for (int i=1;i<=2;i++) { - Criteria criteria11 = Criteria.where("birth") - .gte(startDate).lte(endDate) -// .and("pregnancyOut").is("0")//是否活产 - .and("dueType").is("" + i) - .and("hospitalId").is(hospitalId) - .and("yn").is(YnEnums.YES.getId()); - long count = mongoTemplate.count(Query.query(criteria11), BabyModel.class); - fmSCount+=i==1?count:0; - fmPCount+=i==2?count:0; + Criteria c = new Criteria(); + Criteria c1= Criteria.where("deliveryMode").regex("\\\"fmfs\\\":\\\"1\\\""); + Criteria c2= Criteria.where("deliveryMode").regex("\\\"fmfs\\\":\\\"2\\\""); + c.orOperator(c1,c2); + Criteria criteria11 = Criteria.where("dueDate") + .gte("2021-12-01").lte("2021-12-31") + .andOperator(c) + .and("hospitalId").is("216") + .and("yn").is(1); + List mDlList = mongoTemplate.find(Query.query(criteria11), MaternalDeliverModel.class); + for (MaternalDeliverModel deliverModel : mDlList) { + if (deliverModel.getDeliveryMode().contains("\"fmfs\":\"1\"")){ + fmSCount++; + }else if(deliverModel.getDeliveryMode().contains("\"fmfs\":\"2\"")){ + fmPCount++; + } } long fmCount=fmSCount+fmPCount; //剖宫产率 @@ -4710,6 +4717,66 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService return br; } + @Override + public BaseResponse getFmDetail(String hospitalId, Date startDate, Date endDate) { + BaseResponse br = new BaseResponse(); + List > doctorFm=new ArrayList<>(); + //分娩孕妇 + Criteria c = new Criteria(); + Criteria c1= Criteria.where("deliveryMode").regex("\\\"fmfs\\\":\\\"1\\\""); + Criteria c2= Criteria.where("deliveryMode").regex("\\\"fmfs\\\":\\\"2\\\""); + c.orOperator(c1,c2); + Criteria criteria = Criteria.where("dueDate") + .gte(DateUtil.getyyyy_MM_dd(startDate)).lte(DateUtil.getyyyy_MM_dd(endDate)) + .andOperator(c) + .and("hospitalId").is("216") + .and("yn").is(1); + //分组查询 + AggregationOperation match = Aggregation.match(criteria); + AggregationOperation group = Aggregation.group("deliverDoctor").count().as("count"); + Aggregation aggregation= Aggregation.newAggregation(match, group); + AggregationResults result = mongoTemplate.aggregate(aggregation,"lyms_matdeliver", HashMap.class); + for (HashMap mappedResult : result.getMappedResults()) { + Map map=new HashMap<>(); + long fmSCount=0;//顺产 + long fmPCount=0;//剖腹产 + if (null!=mappedResult.get("_id")) { + //接生医生姓名 + String doctor = ""; + Users users = usersService.getUsers(Integer.parseInt(mappedResult.get("_id").toString())); + if (users != null && users.getYn() == YnEnums.YES.getId()) { + doctor = users.getName(); + } + map.put("name", doctor); + //按医生查询,得到医生的接生信息 + Criteria criteria2 = Criteria.where("dueDate") + .gte(DateUtil.getyyyy_MM_dd(startDate)).lte(DateUtil.getyyyy_MM_dd(endDate)) + .andOperator(c) + .and("hospitalId").is("216") + .and("yn").is(1) + .and("deliverDoctor").is(mappedResult.get("_id")); + List list = mongoTemplate.find(Query.query(criteria2), MaternalDeliverModel.class); + //整理医生数据 + for (MaternalDeliverModel deliverModel : list) { + if (deliverModel.getDeliveryMode().contains("\"fmfs\":\"1\"")){ + fmSCount++; + }else if(deliverModel.getDeliveryMode().contains("\"fmfs\":\"2\"")){ + fmPCount++; + } + } + map.put("fmSCount", fmSCount); + map.put("fmPCount", fmPCount); + map.put("total", fmSCount+fmPCount); + } + doctorFm.add(map); + } + + br.setErrorcode(ErrorCodeConstants.SUCCESS); + br.setErrormsg("成功"); + br.setObject(doctorFm); + return br; + } + /** * 解析高危,返回名字和颜色 * @param highRisk