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 4a6bf65..f1146ca 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 @@ -5120,7 +5120,63 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService public BaseResponse getAreaFinallyOverdue(String hospitalId, String areaId,Date startDate, Date endDate) { BaseResponse br = new BaseResponse(); List > mapList=new ArrayList<>(); - + String name1 = CommonsHelper.getName1(areaId, basicConfigService); + Criteria criteria = Criteria.where("bookbuildingDate") + .gte(startDate).lte(endDate) + .and("areaRegisterId").is(areaId) + .and("type").is(1) + .and("hospitalId").is(hospitalId) + .and("yn").is(1); + AggregationOperation match = Aggregation.match(criteria); + AggregationOperation group = Aggregation.group("streetRegisterId").count().as("count"); + Aggregation aggregation= Aggregation.newAggregation(match, group); + AggregationResults result = mongoTemplate.aggregate(aggregation,"lyms_patient", HashMap.class); + long overduetotal=0;//逾期合计 + long finallytotal=0;//建档合计 + for (HashMap mappedResult : result.getMappedResults()) { + Map map=new HashMap<>(); + if (null!=mappedResult.get("_id")) { + //地区名称 + String streetName = CommonsHelper.getName1(mappedResult.get("_id").toString(), basicConfigService); + map.put("name", streetName); + Criteria criteria2 = Criteria.where("bookbuildingDate") + .gte(startDate).lte(endDate) + .and("areaRegisterId").is(areaId) + .and("streetRegisterId").is(mappedResult.get("_id")) + .and("type").is(1) + .and("hospitalId").is(hospitalId) + .and("yn").is(1) + .and("nextCheckTime").lt(new Date()); + //逾期人数 + long count = mongoTemplate.count(Query.query(criteria2), Patients.class); + map.put("overdueCount", count); + map.put("finallyCount", mappedResult.get("count")); + //比值(产检逾期人数/建档人数) + String ratio="0%"; + if(0!=(int)mappedResult.get("count")) { + double percent = (double) count / (int)mappedResult.get("count"); + DecimalFormat format = new DecimalFormat("0.00%"); + ratio = format.format(percent); + } + map.put("ratio", ratio); + overduetotal+=count; + finallytotal+=(int)mappedResult.get("count"); + mapList.add(map); + } + } + Map totalMap=new HashedMap(); + totalMap.put("name","合计(逾期未检)"); + totalMap.put("overdueCount",overduetotal); + totalMap.put("finallyCount",finallytotal); + //比值(产检逾期人数/建档人数) + String ratio="0%"; + if(0!=finallytotal) { + double percent = (double) overduetotal / finallytotal; + DecimalFormat format = new DecimalFormat("0.00%"); + ratio = format.format(percent); + } + totalMap.put("ratio", ratio); + mapList.add(totalMap); br.setErrorcode(ErrorCodeConstants.SUCCESS); br.setErrormsg("成功");