From 0914c615e82fabe1986278c936ff623ba21fae60 Mon Sep 17 00:00:00 2001 From: shiyang <316555390@qq.com> Date: Mon, 12 Sep 2022 15:15:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B2=B3=E5=8C=97=E7=9C=81=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E5=85=AC=E5=85=B1=E5=8D=AB=E7=94=9F=E6=9C=8D=E5=8A=A1=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=EF=BC=88=E5=A6=87=E5=B9=BC=E5=8D=AB=E7=94=9F=E9=83=A8?= =?UTF-8?q?=E5=88=86=EF=BC=89=E5=B7=A5=E4=BD=9C=E8=BF=9B=E5=BA=A6=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lyms/platform/common/utils/DateUtil.java | 47 +- .../com/lyms/platform/query/BabyModelQuery.java | 30 +- .../com/lyms/platform/query/PatientsQuery.java | 18 +- .../web/controller/AreaCountController.java | 52 +++ .../operate/web/facade/PatientSyncMysqlFacade.java | 474 ++++++++++++++++++++- 5 files changed, 611 insertions(+), 10 deletions(-) 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 0c2de7d..221843e 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 @@ -3,6 +3,7 @@ package com.lyms.platform.common.utils; import org.joda.time.DateTime; import java.math.BigDecimal; +import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -1914,6 +1915,50 @@ public class DateUtil { return currYearLast; } + /** + * 获取一个时间中月的最后一天日期 + * @param date 时间 + * @return Date + */ + public static Date getDateMonthLast(Date date){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(calendar.MONTH,0); + // 获取某月最大天数 + int lastDay=0; + //2月的平年瑞年天数 + if(Calendar.MONTH==1) { + lastDay = calendar.getLeastMaximum(Calendar.DAY_OF_MONTH); + }else { + lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + } + // 设置日历中月份的最大天数 + calendar.set(Calendar.DAY_OF_MONTH, lastDay); + return calendar.getTime(); + } + /** + * 获取一个时间中月的第一天日期 + * @param date 时间 + * @return Date + */ + public static Date getDateMonthFirst(Date date){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(calendar.MONTH, -0); + // 设置日历中月份的最小天数 + calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); + return calendar.getTime(); + } + /** + * 获取年 + * @param date + * @return int + */ + public static int getYear(Date date){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + return calendar.get(Calendar.YEAR); + } public static void main(String[] args) { @@ -1938,6 +1983,6 @@ public class DateUtil { // double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); // System.out.println(DateUtil.getyyyy_MM_dd_hms(DateUtil.parseYMDHMS("2022-8-4 9:49:48"))); - } + } } diff --git a/platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java index e19ce2b..ac79d8d 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java @@ -365,6 +365,8 @@ public class BabyModelQuery extends BaseQuery implements IConvertToNativeQuery { //是否开通疾病发生推送 1或者空没有开通 2开通 private String openDisease; private String lastCheckDoctor; + private Boolean lastCheckDoctor2; + private Boolean checkId; //分娩孕周 private Integer dueWeekStart; @@ -2208,6 +2210,7 @@ public class BabyModelQuery extends BaseQuery implements IConvertToNativeQuery { if (StringUtils.isNotEmpty(vcCardNoArticle)) { condition = condition.and("vcCardNoArticle", vcCardNoArticle, MongoOper.IS); } + Criteria c = null; if (null != birthStart) { c = Criteria.where("birth").gte(birthStart); @@ -2621,14 +2624,21 @@ public class BabyModelQuery extends BaseQuery implements IConvertToNativeQuery { MongoCondition con2 = MongoCondition.newInstance("mphone",cardArticle.get("mphone"),MongoOper.IS); cor8=con.orCondition(new MongoCondition[]{con1, con2}).getCriteria(); } + Criteria cor9=MongoCondition.newInstance().getCriteria();//这里不能给null return拼接不能为空 + if (null!=lastCheckDoctor2) { + cor9.and("lastCheckDoctor").exists(lastCheckDoctor2); + } + if (null!=checkId) { + condition = condition.and("checkId", checkId, MongoOper.EXISTS); + } /** * 多个orCondition 需要添加Criteria来控制json同级两个and或者or来解决mongodb执行查询问题 */ if(c!=null){ - return new MongoCondition(c.andOperator(condition.getCriteria(),cor,cor2,cor3,cor4,cor5,cor6,cor7,cor8)).toMongoQuery(); + return new MongoCondition(c.andOperator(condition.getCriteria(),cor,cor2,cor3,cor4,cor5,cor6,cor7,cor8,cor9)).toMongoQuery(); } - return new MongoCondition(cor.andOperator(condition.getCriteria(),cor2,cor3,cor4,cor5,cor6,cor7,cor8)).toMongoQuery(); + return new MongoCondition(cor.andOperator(condition.getCriteria(),cor2,cor3,cor4,cor5,cor6,cor7,cor8,cor9)).toMongoQuery(); } public Boolean getFmDataStatu() { @@ -2835,6 +2845,14 @@ public class BabyModelQuery extends BaseQuery implements IConvertToNativeQuery { return checkMonthIds; } + public Boolean getCheckId() { + return checkId; + } + + public void setCheckId(Boolean checkId) { + this.checkId = checkId; + } + public void setCheckMonthIds(List checkMonthIds) { this.checkMonthIds = checkMonthIds; } @@ -2843,6 +2861,14 @@ public class BabyModelQuery extends BaseQuery implements IConvertToNativeQuery { return apparatus; } + public Boolean getLastCheckDoctor2() { + return lastCheckDoctor2; + } + + public void setLastCheckDoctor2(Boolean lastCheckDoctor2) { + this.lastCheckDoctor2 = lastCheckDoctor2; + } + public void setApparatus(String apparatus) { this.apparatus = apparatus; } diff --git a/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java index 7292124..c689936 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java @@ -390,6 +390,7 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery { //初诊医生id private String firstCheckId; + private Boolean firstCheckId2; //初诊时间 private Date firstCheckTimeStart; private Date firstCheckTimeEnd; @@ -1454,12 +1455,15 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery { c1 = Criteria.where("modified").gte(modifiedStart).lte(modifiedEnd); } } - + Criteria c4=MongoCondition.newInstance().getCriteria(); + if (null != firstCheckId2) { + c4.and("firstCheckId").exists(firstCheckId2); + } if (null != c1) { - return new MongoCondition(c1.andOperator(condition.getCriteria(),c2,c3)).toMongoQuery(); + return new MongoCondition(c1.andOperator(condition.getCriteria(),c2,c3,c4)).toMongoQuery(); // return new MongoCondition(c1.andOperator(condition.getCriteria())).toMongoQuery(); } - return new MongoCondition(c2.andOperator(condition.getCriteria(),c3)).toMongoQuery(); + return new MongoCondition(c2.andOperator(condition.getCriteria(),c3,c4)).toMongoQuery(); // return condition.toMongoQuery(); } @@ -2277,6 +2281,14 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery { return serviceType; } + public Boolean getFirstCheckId2() { + return firstCheckId2; + } + + public void setFirstCheckId2(Boolean firstCheckId2) { + this.firstCheckId2 = firstCheckId2; + } + public void setServiceType(Integer serviceType) { this.serviceType = serviceType; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AreaCountController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AreaCountController.java index c83d2a7..2a5d359 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AreaCountController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AreaCountController.java @@ -13,6 +13,11 @@ import com.lyms.platform.permission.model.ServiceListQuery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +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.query.Criteria; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @@ -21,6 +26,7 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.util.Calendar; import java.util.Date; +import java.util.HashMap; /** * 区域统计接口 @@ -475,4 +481,50 @@ public class AreaCountController extends BaseController { return patientSyncMysqlFacade.getLisCheckCount(time, hospitalId,provinceId,cityId,areaId, loginState.getId(),startWeek,endWeek); } + /** + *河北省基本公共卫生服务项目(妇幼卫生部分)工作进度表 + * @param request + * @param provinceId 省 + * @param cityId 市 + * @param areaId 县区 + * @param streetId 街道 + * @param dateTime 年月日() + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/getPublicHygieneServiceCount") + @ResponseBody + @TokenRequired + public BaseResponse getPublicHygieneServiceCount(HttpServletRequest request, + @RequestParam String provinceId, + @RequestParam String cityId, + @RequestParam String areaId, + @RequestParam( required = false) String streetId, + @RequestParam Date dateTime) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return patientSyncMysqlFacade.getPublicHygieneServiceCount(provinceId,cityId,areaId,streetId,dateTime); + } + /** + *河北省基本公共卫生服务项目(妇幼卫生部分)工作进度表-导出 + * @param request + * @param provinceId 省 + * @param cityId 市 + * @param areaId 县区 + * @param streetId 街道 + * @param dateTime 年月日() + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/getPublicHygieneServiceCountExport") + @ResponseBody + @TokenRequired + public void getPublicHygieneServiceCountExport(HttpServletRequest request, + HttpServletResponse response, + @RequestParam String provinceId, + @RequestParam String cityId, + @RequestParam String areaId, + @RequestParam( required = false) String streetId, + @RequestParam Date dateTime) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + patientSyncMysqlFacade.getPublicHygieneServiceCountExport(provinceId,cityId,areaId,streetId,dateTime,response); + } + } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientSyncMysqlFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientSyncMysqlFacade.java index c5be6ea..3ab11f7 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientSyncMysqlFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientSyncMysqlFacade.java @@ -2,15 +2,15 @@ package com.lyms.platform.operate.web.facade; import com.lyms.platform.biz.service.*; import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.dao.operator.MongoCondition; import com.lyms.platform.common.enums.*; import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; -import com.lyms.platform.common.utils.DateUtil; -import com.lyms.platform.common.utils.ExceptionUtils; -import com.lyms.platform.common.utils.JsonUtil; -import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.common.result.PageResult; +import com.lyms.platform.common.utils.*; import com.lyms.platform.operate.web.result.BabyCheckPageResult; import com.lyms.platform.operate.web.result.BabyPageResult; +import com.lyms.platform.operate.web.utils.ResponseUtil; import com.lyms.platform.operate.web.utils.UnitConstants; import com.lyms.platform.operate.web.utils.UnitUtils; import com.lyms.platform.permission.model.*; @@ -26,7 +26,14 @@ import org.apache.commons.beanutils.locale.converters.DateLocaleConverter; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; 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.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestMapping; @@ -34,7 +41,9 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; import java.lang.reflect.InvocationTargetException; +import java.text.DecimalFormat; import java.util.*; import java.util.concurrent.Future; @@ -69,6 +78,10 @@ public class PatientSyncMysqlFacade { private AntenatalExaminationService antenatalExaminationService; @Autowired private OrganizationService organizationService; + @Autowired + private MatDeliverFollowService matDeliverFollowService; + @Autowired + private MongoTemplate mongoTemplate; private static Map levels = new HashMap<>(); { @@ -3006,4 +3019,457 @@ public class PatientSyncMysqlFacade { @Autowired @Qualifier("commonThreadPool") private ThreadPoolTaskExecutor commonThreadPool; + + public BaseResponse getPublicHygieneServiceCount(String provinceId, String cityId,String areaId,String streetId, Date dateTime) { + Date startDate=DateUtil.getDateMonthFirst(dateTime); + Date endDate=DateUtil.getDayLastSecond(DateUtil.getDateMonthLast(dateTime)); + List data=new ArrayList<>(); + Map mapTotal=new HashMap<>(); + //获得区县下的街道 + List regions = getRegions(areaId,streetId); + for (BasicConfig region : regions) { + Map streetMap=new HashMap<>(); + streetMap.put("streetName",region.getName()); + //获得街道下的医院 + List organizations = getOrganization(region.getId()); + for (Organization organization : organizations) { + String hospitalId= StringUtils.getIntToVal(organization.getId()); + //医院数据 + getDateCount(hospitalId,startDate,endDate,streetMap); + } + //合计 + mapTotal.put("streetName","合计"); + int lastDate1= null==mapTotal.get("data1")?0:Integer.parseInt(mapTotal.get("data1").toString()); + mapTotal.put("data1",null==streetMap.get("data1")?lastDate1:Integer.parseInt(streetMap.get("data1").toString())+lastDate1); + int lastDate2= null==mapTotal.get("data2")?0:Integer.parseInt(mapTotal.get("data2").toString()); + mapTotal.put("data2",null==streetMap.get("data2")?lastDate2:Integer.parseInt(streetMap.get("data2").toString())+lastDate2); + int lastDate3= null==mapTotal.get("data3")?0:Integer.parseInt(mapTotal.get("data3").toString()); + mapTotal.put("data3",null==streetMap.get("data3")?lastDate3:Integer.parseInt(streetMap.get("data3").toString())+lastDate3); + int lastDate5= null==mapTotal.get("data5")?0:Integer.parseInt(mapTotal.get("data5").toString()); + mapTotal.put("data5",null==streetMap.get("data5")?lastDate5:Integer.parseInt(streetMap.get("data5").toString())+lastDate5); + int lastDate6= null==mapTotal.get("data6")?0:Integer.parseInt(mapTotal.get("data6").toString()); + mapTotal.put("data6",null==streetMap.get("data6")?lastDate6:Integer.parseInt(streetMap.get("data6").toString())+lastDate6); + int lastDate8= null==mapTotal.get("data8")?0:Integer.parseInt(mapTotal.get("data8").toString()); + mapTotal.put("data8",null==streetMap.get("data8")?lastDate8:Integer.parseInt(streetMap.get("data8").toString())+lastDate8); + int lastDate9= null==mapTotal.get("data9")?0:Integer.parseInt(mapTotal.get("data9").toString()); + mapTotal.put("data9",null==streetMap.get("data9")?lastDate9:Integer.parseInt(streetMap.get("data9").toString())+lastDate9); + int lastDate11= null==mapTotal.get("data11")?0:Integer.parseInt(mapTotal.get("data11").toString()); + mapTotal.put("data11",null==streetMap.get("data11")?lastDate11:Integer.parseInt(streetMap.get("data11").toString())+lastDate11); + int lastDate13= null==mapTotal.get("data13")?0:Integer.parseInt(mapTotal.get("data13").toString()); + mapTotal.put("data13",null==streetMap.get("data13")?lastDate13:Integer.parseInt(streetMap.get("data13").toString())+lastDate13); + int lastDate15= null==mapTotal.get("data15")?0:Integer.parseInt(mapTotal.get("data15").toString()); + mapTotal.put("data15",null==streetMap.get("data15")?lastDate15:Integer.parseInt(streetMap.get("data15").toString())+lastDate15); + int lastDate17= null==mapTotal.get("data17")?0:Integer.parseInt(mapTotal.get("data17").toString()); + mapTotal.put("data17",null==streetMap.get("data17")?lastDate17:Integer.parseInt(streetMap.get("data17").toString())+lastDate17); + int lastDate19= null==mapTotal.get("data19")?0:Integer.parseInt(mapTotal.get("data19").toString()); + mapTotal.put("data19",null==streetMap.get("data19")?lastDate19:Integer.parseInt(streetMap.get("data19").toString())+lastDate19); + int lastDate21= null==mapTotal.get("data21")?0:Integer.parseInt(mapTotal.get("data21").toString()); + mapTotal.put("data21",null==streetMap.get("data21")?lastDate21:Integer.parseInt(streetMap.get("data21").toString())+lastDate21); + + data.add(streetMap); + } + DecimalFormat df = new DecimalFormat("0.00");//格式化小数,不足的补0 + String data3_data2="0.00"; + if(Integer.parseInt(mapTotal.get("data2").toString())!=0){ + float v = (float) Integer.parseInt(mapTotal.get("data3").toString()) / Integer.parseInt(mapTotal.get("data2").toString()); + if(v>=1){ + data3_data2="100.00"; + }else { + data3_data2 = df.format(v * 100); + } + } + mapTotal.put("data4",data3_data2+"%"); + + String data6_data5="0.00"; + if(Integer.parseInt(mapTotal.get("data5").toString())!=0){ + float v = (float) Integer.parseInt(mapTotal.get("data6").toString()) / Integer.parseInt(mapTotal.get("data5").toString()); + if(v>=1){ + data6_data5="100.00"; + }else { + data6_data5 = df.format(v * 100); + } + } + mapTotal.put("data7",data6_data5+"%"); + + String data9_data8="0.00"; + if(Integer.parseInt(mapTotal.get("data8").toString())!=0){ + float v = (float) Integer.parseInt(mapTotal.get("data9").toString()) / Integer.parseInt(mapTotal.get("data8").toString()); + if(v>=1){ + data9_data8="100.00"; + }else { + data9_data8 = df.format(v * 100); + } + } + mapTotal.put("data10",data9_data8+"%"); + + + + String data11_data8="0.00"; + if(Integer.parseInt(mapTotal.get("data8").toString())!=0){ + float v = (float) Integer.parseInt(mapTotal.get("data11").toString()) / Integer.parseInt(mapTotal.get("data8").toString()); + if(v>=1){ + data11_data8="100.00"; + }else { + data11_data8 = df.format(v * 100); + } + } + mapTotal.put("data12",data11_data8+"%"); + + String data13_data8="0.00"; + if(Integer.parseInt(mapTotal.get("data8").toString())!=0){ + float v = (float) Integer.parseInt(mapTotal.get("data13").toString()) / Integer.parseInt(mapTotal.get("data8").toString()); + if(v>=1){ + data13_data8="100.00"; + }else { + data13_data8 = df.format(v * 100); + } + } + mapTotal.put("data14",data13_data8+"%"); + + String data15_data2="0.00"; + if(Integer.parseInt(mapTotal.get("data2").toString())!=0){ + float v = (float) Integer.parseInt(mapTotal.get("data15").toString()) / Integer.parseInt(mapTotal.get("data2").toString()); + if(v>=1){ + data15_data2="100.00"; + }else { + data15_data2 = df.format(v * 100); + } + } + mapTotal.put("data16",data15_data2+"%"); + + String data17_data2="0.00"; + if(Integer.parseInt(mapTotal.get("data2").toString())!=0){ + float v = (float) Integer.parseInt(mapTotal.get("data17").toString()) / Integer.parseInt(mapTotal.get("data2").toString()); + if(v>=1){ + data17_data2="100.00"; + }else { + data17_data2 = df.format(v * 100); + } + } + mapTotal.put("data18",data17_data2+"%"); + + String data19_data2="0.00"; + if(Integer.parseInt(mapTotal.get("data2").toString())!=0){ + float v = (float) Integer.parseInt(mapTotal.get("data19").toString()) / Integer.parseInt(mapTotal.get("data2").toString()); + if(v>=1){ + data19_data2="100.00"; + }else { + data19_data2 = df.format(v * 100); + } + } + mapTotal.put("data20",data19_data2+"%"); + + String data21_data2="0.00"; + if(Integer.parseInt(mapTotal.get("data2").toString())!=0){ + float v = (float) Integer.parseInt(mapTotal.get("data21").toString()) / Integer.parseInt(mapTotal.get("data2").toString()); + if(v>=1){ + data21_data2="100.00"; + }else { + data21_data2 = df.format(v * 100); + } + } + mapTotal.put("data22",data21_data2+"%"); + + + data.add(mapTotal); + return new BaseObjectResponse().setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(data); + } + + /** + * 获得区县下的街道 + * @param parentId 区县id + * @param streetId 街道id + * @return + */ + private List getRegions(String parentId,String streetId){ + BasicConfigQuery query = new BasicConfigQuery(); + query.setYn(YnEnums.YES.getId()); + query.setParentId(parentId); + query.setEnable(1); + if(StringUtils.isNotEmpty(streetId)){ + query.setId(streetId); + } + query.setTypeId("b7ea005c-dfac-4c2a-bdae-25239b3f44fd"); + return basicConfigService.queryBasicConfig(query); + } + + /** + * 获得街道下的医院 + * @param streetId 街道id + * @return + */ + private List getOrganization(String streetId){ + OrganizationQuery organizationQuery = new OrganizationQuery(); + organizationQuery.setStreetId(streetId); + return organizationService.queryOrganization(organizationQuery); + } + + /** + * 医院数据 + * @param hospitalId 医院id + * @param startDate 开始时间 + * @param endDate 结束时间 + * @param hospitalDate 医院数据map + * data1 本月活产数 + * data2 累计活产数 + * data3 新生儿访视人数 + * data4 新生儿访视率% + * data5 0-3岁儿童总数 + * data6 0-3岁儿童系统管理人数 + * data7 0-3岁儿童系统管理率% + * data8 0-6岁儿童总数 + * data9 0-6岁儿童系统管理人数 + * data10 0-6岁儿童系统管理率% + * data11 0-6岁儿童健康管理人数 + * data12 0-6岁儿童健康管理率% + * data13 0-6岁儿童眼保健及视力检查人数 + * data14 0-6岁儿童眼保健及视力检查覆盖率% + * data15 孕13周之前建册的人数 + * data16 早孕建册率% + * data17 孕产妇健康管理人数 + * data18 孕产妇健康管理率% + * data19 产后访视人数 + * data20 产后访视率% + * data21 孕产妇系统管理人数 + * data22 孕产妇系统管理率% + */ + private void getDateCount(String hospitalId,Date startDate, Date endDate,Map hospitalDate){ + //传入的时间获取年的第一天 + Date startDateFirst=DateUtil.getYearFirst(DateUtil.getYear(startDate)); + DecimalFormat df = new DecimalFormat("0.00");//格式化小数,不足的补0 + //本月活产数 + int data1=0; +// for (int i=1;i<=7;i++){//多胎情况 + MatDeliverQuery matDeliverQuery = new MatDeliverQuery(); + matDeliverQuery.setHospitalId(hospitalId); + matDeliverQuery.setYn(YnEnums.YES.getId()); +// matDeliverQuery.setTireNumber(i); + matDeliverQuery.setCreatedStart(startDate); + matDeliverQuery.setEndStart(endDate); + data1+=matDeliverService.count(matDeliverQuery);//*i +// } + int lastDate1= null==hospitalDate.get("data1")?0:Integer.parseInt(hospitalDate.get("data1").toString()); + hospitalDate.put("data1",data1+lastDate1); + //累计活产数 + int data2=0; +// for (int i=1;i<=7;i++){//多胎情况 + MatDeliverQuery matDeliverQuery2 = new MatDeliverQuery(); + matDeliverQuery2.setHospitalId(hospitalId); + matDeliverQuery2.setYn(YnEnums.YES.getId()); +// matDeliverQuery.setTireNumber(i); + matDeliverQuery2.setCreatedStart(startDateFirst); + matDeliverQuery2.setEndStart(endDate); + data2+=matDeliverService.count(matDeliverQuery2);//*i; +// } + int lastDate2= null==hospitalDate.get("data2")?0:Integer.parseInt(hospitalDate.get("data2").toString()); + hospitalDate.put("data2",data2+lastDate2); + //新生儿访视人数 + int data3=0; + AggregationOperation match = Aggregation.match(Criteria. + where("hospitalId").is(hospitalId) + .and("yn").is("1") + .and("created").gte(startDateFirst).lte(endDate)); + AggregationOperation group = Aggregation.group("babyId"); + Aggregation aggregation= Aggregation.newAggregation(match, group); + AggregationResults result = mongoTemplate.aggregate(aggregation,"lyms_newborn_visit", HashMap.class); + data3=result.getMappedResults().size(); + int lastDate3= null==hospitalDate.get("data3")?0:Integer.parseInt(hospitalDate.get("data3").toString()); + hospitalDate.put("data3",data3+lastDate3); + //新生儿访视率% + String data3_data2="0.00"; + if(Integer.parseInt(hospitalDate.get("data2").toString())!=0){ + float v = (float) Integer.parseInt(hospitalDate.get("data3").toString()) / Integer.parseInt(hospitalDate.get("data2").toString()); + if(v>=1){ + data3_data2="100.00"; + }else { + data3_data2 = df.format(v * 100); + } + } + hospitalDate.put("data4",data3_data2+"%"); + //0-3岁儿童总数 + int data5=0; + BabyModelQuery babyQuery=new BabyModelQuery(); + babyQuery.setYn(YnEnums.YES.getId()); + babyQuery.setHospitalId(hospitalId); + babyQuery.setBirthStart(DateUtil.addYear(startDateFirst,-3)); + babyQuery.setBirthEnd(endDate); + data5 = babyBookbuildingService.queryBabyCount(babyQuery); + int lastDate5= null==hospitalDate.get("data5")?0:Integer.parseInt(hospitalDate.get("data5").toString()); + hospitalDate.put("data5",data5+lastDate5); + //0-3岁儿童系统管理人数 + int data6=0; + babyQuery.setLastCheckDoctor2(true); + data6 = babyBookbuildingService.queryBabyCount(babyQuery); + int lastDate6= null==hospitalDate.get("data6")?0:Integer.parseInt(hospitalDate.get("data6").toString()); + hospitalDate.put("data6",data6+lastDate6); + //0-3岁儿童系统管理率% + String data6_data5="0.00"; + if(Integer.parseInt(hospitalDate.get("data5").toString())!=0){ + float v = (float) Integer.parseInt(hospitalDate.get("data6").toString()) / Integer.parseInt(hospitalDate.get("data5").toString()); + if(v>=1){ + data6_data5="100.00"; + }else { + data6_data5 = df.format(v * 100); + } + } + hospitalDate.put("data7",data6_data5+"%"); + //0-6岁儿童总数 + int data8=0; + BabyModelQuery babyQuery2=new BabyModelQuery(); + babyQuery2.setYn(YnEnums.YES.getId()); + babyQuery2.setHospitalId(hospitalId); + babyQuery2.setBirthStart(DateUtil.addYear(startDateFirst,-6)); + babyQuery2.setBirthEnd(endDate); + data8 = babyBookbuildingService.queryBabyCount(babyQuery2); + int lastDate8= null==hospitalDate.get("data8")?0:Integer.parseInt(hospitalDate.get("data8").toString()); + hospitalDate.put("data8",data8+lastDate8); + //0-6岁儿童系统管理人数 + int data9=0; + babyQuery2.setLastCheckDoctor2(true); + data9 = babyBookbuildingService.queryBabyCount(babyQuery2); + int lastDate9= null==hospitalDate.get("data9")?0:Integer.parseInt(hospitalDate.get("data9").toString()); + hospitalDate.put("data9",data9+lastDate9); + //0-6岁儿童系统管理率% + String data9_data8="0.00"; + if(Integer.parseInt(hospitalDate.get("data8").toString())!=0){ + float v = (float) Integer.parseInt(hospitalDate.get("data9").toString()) / Integer.parseInt(hospitalDate.get("data8").toString()); + if(v>=1){ + data9_data8="100.00"; + }else { + data9_data8 = df.format(v * 100); + } + } + hospitalDate.put("data10",data9_data8+"%"); + //0-6岁儿童健康管理人数 + hospitalDate.put("data11",data9+lastDate9); + //0-6岁儿童健康管理率% + hospitalDate.put("data12",data9_data8+"%"); + //0-6岁儿童眼保健及视力检查人数 + int data13=0; + BabyModelQuery babyQuery3=new BabyModelQuery(); + babyQuery3.setYn(YnEnums.YES.getId()); + babyQuery3.setHospitalId(hospitalId); + babyQuery3.setBirthStart(DateUtil.addYear(startDateFirst,-6)); + babyQuery3.setBirthEnd(endDate); + babyQuery3.setCheckId(true); + data13 = babyBookbuildingService.queryBabyCount(babyQuery3); + int lastDate13= null==hospitalDate.get("data13")?0:Integer.parseInt(hospitalDate.get("data13").toString()); + hospitalDate.put("data13",data13+lastDate13); + //0-6岁儿童眼保健及视力检查覆盖率% + String data13_data8="0.00"; + if(Integer.parseInt(hospitalDate.get("data8").toString())!=0){ + float v = (float) Integer.parseInt(hospitalDate.get("data13").toString()) / Integer.parseInt(hospitalDate.get("data8").toString()); + if(v>=1){ + data13_data8="100.00"; + }else { + data13_data8 = df.format(v * 100); + } + } + hospitalDate.put("data14",data13_data8+"%"); + //孕13周之前建册的人数 + int data15=0; + PatientsQuery patientsQuery=new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setHospitalId(hospitalId); + patientsQuery.setBuildDaysEnd(13*7); + patientsQuery.setBookbuildingDateStart(startDateFirst); + patientsQuery.setBookbuildingDateEnd(endDate); + data15=patientsService.queryPatientCount(patientsQuery); + int lastDate15= null==hospitalDate.get("data15")?0:Integer.parseInt(hospitalDate.get("data15").toString()); + hospitalDate.put("data15",data15+lastDate15); + //早孕建册率% + String data15_data2="0.00"; + if(Integer.parseInt(hospitalDate.get("data2").toString())!=0){ + float v = (float) Integer.parseInt(hospitalDate.get("data15").toString()) / Integer.parseInt(hospitalDate.get("data2").toString()); + if(v>=1){ + data15_data2="100.00"; + }else { + data15_data2 = df.format(v * 100); + } + } + hospitalDate.put("data16",data15_data2+"%"); + //孕产妇健康管理人数 + int data17=0; + PatientsQuery patientsQuery2=new PatientsQuery(); + patientsQuery2.setYn(YnEnums.YES.getId()); + patientsQuery2.setHospitalId(hospitalId); + patientsQuery2.setBookbuildingDateStart(startDateFirst); + patientsQuery2.setBookbuildingDateEnd(endDate); + patientsQuery2.setFirstCheckId2(true); + data17=patientsService.queryPatientCount(patientsQuery2); + int lastDate17= null==hospitalDate.get("data17")?0:Integer.parseInt(hospitalDate.get("data17").toString()); + hospitalDate.put("data17",data17+lastDate17); + //孕产妇健康管理率% + String data17_data2="0.00"; + if(Integer.parseInt(hospitalDate.get("data2").toString())!=0){ + float v = (float) Integer.parseInt(hospitalDate.get("data17").toString()) / Integer.parseInt(hospitalDate.get("data2").toString()); + if(v>=1){ + data17_data2="100.00"; + }else { + data17_data2 = df.format(v * 100); + } + } + hospitalDate.put("data18",data17_data2+"%"); + //产后访视人数 + int data19=0; + AggregationOperation match2 = Aggregation.match(Criteria + .where("hospitalId").is(hospitalId) + .and("createDate").gte(startDateFirst).lte(endDate)); + AggregationOperation group2 = Aggregation.group("pid"); + Aggregation aggregation2= Aggregation.newAggregation(match2, group2); + AggregationResults result2 = mongoTemplate.aggregate(aggregation2,"lyms_matdeliver_follow", HashMap.class); + data19=result2.getMappedResults().size(); + int lastDate19= null==hospitalDate.get("data19")?0:Integer.parseInt(hospitalDate.get("data19").toString()); + hospitalDate.put("data19",data19+lastDate19); + //产后访视率% + String data19_data2="0.00"; + if(Integer.parseInt(hospitalDate.get("data2").toString())!=0){ + float v = (float) Integer.parseInt(hospitalDate.get("data19").toString()) / Integer.parseInt(hospitalDate.get("data2").toString()); + if(v>=1){ + data19_data2="100.00"; + }else { + data19_data2 = df.format(v * 100); + } + } + hospitalDate.put("data20",data19_data2+"%"); + //孕产妇系统管理人数 + hospitalDate.put("data21",data19); + //孕产妇系统管理率% + hospitalDate.put("data22",data19_data2+"%"); + } + + public void getPublicHygieneServiceCountExport(String provinceId, String cityId, String areaId, String streetId, Date dateTime, HttpServletResponse response) { + Map cnames = new LinkedHashMap<>(); + cnames.put("streetName", "乡镇"); + cnames.put("data1", "本月活产数"); + cnames.put("data2", "累计活产数"); + cnames.put("data3", "新生儿访视人数"); + cnames.put("data4", "新生儿访视率%"); + cnames.put("data5", "0-3岁儿童总数"); + cnames.put("data6", "0-3岁儿童系统管理人数"); + cnames.put("data7", "0-3岁儿童系统管理率%"); + cnames.put("data8", "0-6岁儿童总数"); + cnames.put("data9", "0-6岁儿童系统管理人数"); + cnames.put("data10", "0-6岁儿童系统管理率%"); + cnames.put("data11", "0-6岁儿童健康管理人数"); + cnames.put("data12", "0-6岁儿童健康管理率%"); + cnames.put("data13", "0-6岁儿童眼保健及视力检查人数"); + cnames.put("data14", "0-6岁儿童眼保健及视力检查覆盖率%"); + cnames.put("data15", "孕13周之前建册的人数"); + cnames.put("data16", "早孕建册率%"); + cnames.put("data17", "孕产妇健康管理人数"); + cnames.put("data18", "孕产妇健康管理率%"); + cnames.put("data19", "产后访视人数"); + cnames.put("data20", "产后访视率%"); + cnames.put("data21", "孕产妇系统管理人数"); + cnames.put("data22", "孕产妇系统管理率%"); + List> results = new ArrayList<>(); + + BaseObjectResponse baseObjectResponse= (BaseObjectResponse) getPublicHygieneServiceCount(provinceId, cityId, areaId, streetId, dateTime); + List list= (List) baseObjectResponse.getData(); + for (Map map : list) { + results.add(map); + } + ResponseUtil.responseExcel(cnames, results, response); + } } -- 1.8.3.1