From db63a80f03d00705761b43543215fc54eabb6982 Mon Sep 17 00:00:00 2001 From: liquanyu Date: Thu, 23 Nov 2017 20:29:21 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/web/facade/RiskReportFacade.java | 634 +++++++++++++-------- .../web/request/RiskPatientsCountRequest.java | 19 +- .../operate/web/service/SyncDataTaskService.java | 1 + 3 files changed, 413 insertions(+), 241 deletions(-) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java index 42819e0..22f24f4 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java @@ -235,56 +235,59 @@ public class RiskReportFacade { public BaseResponse queryAreaRiskPatientReport(RiskPatientsCountRequest countRequest, Integer userId) { - //获取用户权限医院和筛选条件的交集 List currentUserHospPermissions = areaCountFacade.getCurrentUserHospPermissions(userId, countRequest.getProvinceId(), countRequest.getCityId(), countRequest.getAreaId()); - currentUserHospPermissions.clear(); - currentUserHospPermissions.add("216"); - //孕妇基础查询对象 PatientsQuery patientsQuery = new PatientsQuery(); patientsQuery.setYn(YnEnums.YES.getId()); - //孕妇 - patientsQuery.setType(1); - List buildType = new ArrayList(); - buildType.add(0); - buildType.add(2); - //建档类型 - patientsQuery.setBuildTypeList(buildType); + getRequestQuery(patientsQuery,countRequest); + + List> times = null; + if (StringUtils.isNotEmpty(countRequest.getTimeStart()) && StringUtils.isNotEmpty(countRequest.getTimeEnd())) + { + patientsQuery.setBookbuildingDateStart(DateUtil.parseYMD(countRequest.getTimeStart())); + patientsQuery.setBookbuildingDateEnd(DateUtil.parseYMD(countRequest.getTimeEnd())); + times = DateUtil.getRange(DateUtil.parseYMD(countRequest.getTimeStart()), + DateUtil.parseYMD(countRequest.getTimeEnd())); + } //查询高危分类 List riskLevelConfig = basicConfigService.queryByParentId(SystemConfig.HIGH_RISK_ID); Map datas = new HashMap<>(); - List result = new ArrayList<>(); + List> result = new ArrayList<>(); BasicConfigQuery basicQuery = new BasicConfigQuery(); basicQuery.setYn(YnEnums.YES.getId()); basicQuery.setTypeId("b7ea005c-dfac-4c2a-bdae-25239b3f44fd"); - List> list = null; + + String addressId = ""; if (StringUtils.isNotEmpty(countRequest.getProvinceId())) { basicQuery.setParentId(countRequest.getProvinceId()); countRequest.setExportType(1); - list = mongoUtil.getChilds(countRequest.getProvinceId()); + addressId = countRequest.getProvinceId(); } if (StringUtils.isNotEmpty(countRequest.getCityId())) { basicQuery.setParentId(countRequest.getCityId()); countRequest.setExportType(2); - list = mongoUtil.getChilds(countRequest.getCityId()); + addressId = countRequest.getCityId(); } + //获取地址列表 + List> list = mongoUtil.getChilds(addressId); + if (StringUtils.isNotEmpty(countRequest.getAreaId())) { basicQuery.setParentId(countRequest.getAreaId()); @@ -293,286 +296,355 @@ public class RiskReportFacade { int addrType = countRequest.getExportType(); - Map title = new HashMap<>(); - title.put("seq","序号"); + List title = new ArrayList<>(); + title.add("序号"); if (addrType == 1) { - title.put("name","地市名称"); + title.add("地市名称"); } else if(addrType == 2) { - title.put("name","区县名称"); + title.add("区县名称"); } else { - title.put("name","医院名称"); + title.add("医院名称"); } if (addrType < 3) { - title.put("orgNum","机构数"); + title.add("机构数"); } + title.add("统计指标(人)"); - title.put("countItem","统计指标(人)"); - title.put("sumNum", "合计"); - result.add(title); - int seq = 0; - - //统计城市和区县表格数据 - if (addrType < 3) - { - List configList = basicConfigService.queryBasicConfig(basicQuery); - OrganizationQuery query = new OrganizationQuery(); - query.setYn(YnEnums.YES.getId()); - if (CollectionUtils.isNotEmpty(configList)) - { - for(BasicConfig c : configList) - { - if (addrType == 1) - { - query.setCityId(c.getId()); - } - else if(addrType == 2) - { - query.setAreaId(c.getId()); - } - //查询机构数 - List orgs = organizationService.queryOrganization(query); - - List hids = getConditionHospitalIds(currentUserHospPermissions,orgs); - - for (BasicConfig level : riskLevelConfig) - { - - Map topMap = new HashMap<>(); - topMap.put("seq", ++seq); - topMap.put("name", c .getName()); - topMap.put("orgNum", orgs == null ? 0 : orgs.size()); - topMap.put("countItem", level.getName()); - - int riskPatientCount = 0; - //权限和筛选条件不未空的时候就查询孕妇高危数量 - if (CollectionUtils.isNotEmpty(hids)) - { + if (CollectionUtils.isNotEmpty(times)) { + for (Map time : times) { + title.add(DateUtil.getyyyy_mm(time.get("cname"))); + } + } - //权限 - patientsQuery.setHospitalList(hids); + title.add("合计"); + result.add(title); - //高危等级 - patientsQuery.setrLevel(level.getId()); - //单个高危因素孕产妇条数 - riskPatientCount = patientsService.queryPatientCount(patientsQuery); - } - topMap.put("sumNum", riskPatientCount); - result.add(topMap); - } - } - } - } - //统计医院的表格数据 - else - { - OrganizationQuery query = new OrganizationQuery(); - query.setYn(YnEnums.YES.getId()); - query.setAreaId(countRequest.getAreaId()); - List orgs = organizationService.queryOrganization(query); - if (CollectionUtils.isNotEmpty(orgs)) { - for (Organization org : orgs) { - for (BasicConfig level : riskLevelConfig) { - Map topMap = new HashMap<>(); - topMap.put("seq", ++seq); - topMap.put("name", org.getName()); - topMap.put("countItem", level.getName()); - - int riskPatientCount = 0; - if (currentUserHospPermissions.contains(String.valueOf(org.getId()))) - { - //权限 - patientsQuery.setHospitalId(String.valueOf(org.getId())); - //高危等级 - patientsQuery.setrLevel(level.getId()); - //单个高危因素孕产妇条数 - riskPatientCount = patientsService.queryPatientCount(patientsQuery); - } + //序列号 + int seq = 0; - topMap.put("sumNum", riskPatientCount); - result.add(topMap); - } - } - } - } + //机构总数 + int orgNumTotal = 0; - //表格合计计算 -// if(CollectionUtils.isNotEmpty(result)) + //统计城市和区县表格数据 +// if (addrType < 3) // { -// List> totalMapList = new ArrayList<>(); -// for (BasicConfig level : riskLevelConfig) +// List configList = basicConfigService.queryBasicConfig(basicQuery); +// OrganizationQuery query = new OrganizationQuery(); +// query.setYn(YnEnums.YES.getId()); +// if (CollectionUtils.isNotEmpty(configList)) // { -// Map totalMap = new HashMap<>(); -// totalMap.put("seq", ++seq); -// totalMap.put("name", "合计"); -// -// totalMap.put("countItem", level.getName()); -// int orgNumTotal = 0; -// int levelTotal = 0; -// if (addrType < 3) +// for(BasicConfig c : configList) // { +// if (addrType == 1) +// { +// query.setCityId(c.getId()); +// } +// else if(addrType == 2) +// { +// query.setAreaId(c.getId()); +// } +// //查询机构数 +// List orgs = organizationService.queryOrganization(query); +// +// orgNumTotal += CollectionUtils.isNotEmpty(orgs) ? orgs.size() : 0 ; // -// for (Map map : result) +// List hids = getConditionHospitalIds(currentUserHospPermissions,orgs); +// +// for (BasicConfig level : riskLevelConfig) // { -// if ("序号".equals(map.get("seq"))) +// +// List topList = new ArrayList<>(); +// topList.add(String.valueOf(++seq)); +// topList.add(c.getName()); +// topList.add(orgs == null ? "0" : String.valueOf(orgs.size())); +// topList.add(level.getName()); +// int riskPatientCount = 0; +// +// if (StringUtils.isNotEmpty(countRequest.getTimeStart()) ) // { -// continue; +// if (CollectionUtils.isNotEmpty(times)) +// { +// for (Map time : times) +// { +// if (CollectionUtils.isNotEmpty(hids)) +// { +// patientsQuery.setBookbuildingDateStart(time.get("start")); +// patientsQuery.setBookbuildingDateEnd(time.get("end")); +// +// //权限 +// patientsQuery.setHospitalList(hids); +// +// //高危等级 +// patientsQuery.setrLevel(level.getId()); +// +// riskPatientCount = patientsService.queryPatientCount(patientsQuery); +// } +// topList.add(String.valueOf(riskPatientCount)); +// } +// } // } -// Integer orgNum = Integer.valueOf(String.valueOf(map.get("orgNum"))); -// orgNumTotal+=orgNum; // -// if (map.get("countItem").equals(level.getName())) +// +// //权限和筛选条件不未空的时候就查询孕妇高危数量 +// if (CollectionUtils.isNotEmpty(hids)) // { -// Integer sumNum =Integer.valueOf(String.valueOf(map.get("sumNum"))); -// levelTotal+=sumNum; +// +// //权限 +// patientsQuery.setHospitalList(hids); +// +// //高危等级 +// patientsQuery.setrLevel(level.getId()); +// +// +// //单个高危因素孕产妇条数 +// riskPatientCount = patientsService.queryPatientCount(patientsQuery); // } +// +// topList.add(String.valueOf(riskPatientCount)); +// result.add(topList); // } // } -// -// totalMap.put("orgNum", orgNumTotal); -// totalMap.put("sumNum", levelTotal); -// totalMapList.add(totalMap); // } -// result.addAll(totalMapList); // } - - - - - - //统计柱状图数据封装-------------------------------- - - //图标数据 - List> series = new ArrayList<>(); - - //x轴标题数据 - List xAxis = new ArrayList<>(); - - //分类标题 - List titleItems = new ArrayList<>(); - - -// //获取分类标题数据 -// if (CollectionUtils.isNotEmpty(riskLevelConfig)) +// //统计医院的表格数据 +// else // { -// for (BasicConfig conf : riskLevelConfig) -// { -// titleItems.add(conf.getName()); -// } -// } +// OrganizationQuery query = new OrganizationQuery(); +// query.setYn(YnEnums.YES.getId()); +// query.setAreaId(countRequest.getAreaId()); +// List orgs = organizationService.queryOrganization(query); +// if (CollectionUtils.isNotEmpty(orgs)) { +// for (Organization org : orgs) { +// for (BasicConfig level : riskLevelConfig) { +// List topList = new ArrayList<>(); +// topList.add(String.valueOf(++seq)); +// topList.add(org.getName()); +// topList.add(level.getName()); // +// int riskPatientCount = 0; // -// if (addrType < 3) -// { -// if (CollectionUtils.isNotEmpty(list)) -// { -// for (Map addr : list) -// { -// xAxis.add(String.valueOf(addr.get("name"))); -// } -// for (BasicConfig config : riskLevelConfig) -// { -// Map map = new HashMap(); -// map.put("name",config.getName()); -// map.put("type","bar"); +// if (StringUtils.isNotEmpty(countRequest.getTimeStart()) ) +// { +// if (CollectionUtils.isNotEmpty(times)) +// { +// for (Map time : times) +// { +// if (currentUserHospPermissions.contains(String.valueOf(org.getId()))) +// { +// patientsQuery.setBookbuildingDateStart(time.get("start")); +// patientsQuery.setBookbuildingDateEnd(time.get("end")); // +// List hids = new ArrayList<>(); +// hids.add(String.valueOf(org.getId())); +// //权限 +// patientsQuery.setHospitalList(hids); // -// OrganizationQuery idQuery = new OrganizationQuery(); -// idQuery.setYn(YnEnums.YES.getId()); +// //高危等级 +// patientsQuery.setrLevel(level.getId()); // -// List items = new ArrayList<>(); -// for (Map addr : list) -// { -// List hids = new ArrayList<>(); -// String id = String.valueOf(addr.get("id")); -// if (addrType == 1) -// { -// idQuery.setCityId(id); -// } -// else if(addrType == 2) -// { -// idQuery.setAreaId(id); +// riskPatientCount = patientsService.queryPatientCount(patientsQuery); +// } +// topList.add(String.valueOf(riskPatientCount)); +// } +// } // } // -// //查询机构数 -// List orgs = organizationService.queryOrganization(idQuery); -// -// if (CollectionUtils.isNotEmpty(orgs)) +// if (currentUserHospPermissions.contains(String.valueOf(org.getId()))) // { -// for (Organization org : orgs) -// { -// hids.add(String.valueOf(org.getId())); -// } +// List hids = new ArrayList<>(); +// hids.add(String.valueOf(org.getId())); +// //权限 +// patientsQuery.setHospitalList(hids); +// //高危等级 +// patientsQuery.setrLevel(level.getId()); +// //单个高危因素孕产妇条数 +// riskPatientCount = patientsService.queryPatientCount(patientsQuery); // } // -// PatientsQuery query1 = new PatientsQuery(); -// query1.setHospitalList(hids); -// query1.setYn(YnEnums.YES.getId()); -// query1.setType(1); -// //高危等级 -// query1.setrLevel(config.getId()); -// List buildType = new ArrayList(); -// buildType.add(0); -// buildType.add(2); -// query1.setBuildTypeList(buildType); -// Integer count = patientsService.queryPatientCount(query1); -// items.add(count == null ? "0" : String.valueOf(count)); +// topList.add(String.valueOf(riskPatientCount)); +// result.add(topList); // } -// map.put("data",items); -// -// series.add(map); // } // } // } -// else if (addrType == 3) +// +// //表格合计计算 +// if(CollectionUtils.isNotEmpty(result)) // { -// OrganizationQuery organizationQuery = new OrganizationQuery(); -// organizationQuery.setYn(YnEnums.YES.getId()); -// organizationQuery.setAreaId(countRequest.getAreaId()); // -// //TODO权限 -// // List press = getCurrentOrgs( countRequest, userId); -// List orgs = organizationService.queryOrganization(organizationQuery); +// List> totalAllList = new ArrayList<>(); +// for (BasicConfig level : riskLevelConfig) { +// List totalList = new ArrayList<>(); +// totalList.add(String.valueOf(++seq)); +// totalList.add("合计"); // -// if (CollectionUtils.isNotEmpty(list)) -// { -// for (Organization org : orgs) -// { -// xAxis.add(org.getName()); +// if (addrType < 3) { +// totalList.add(String.valueOf(orgNumTotal)); +// } +// totalList.add(level.getName()); // -// Map map = new HashMap(); -// map.put("name",org.getName()); -// map.put("type", "bar"); -// List items = new ArrayList<>(); -// for (BasicConfig config : riskLevelConfig) +// int index = addrType < 3 ? 4 : 3; +// +// for (int i = index ; i <= (times == null ? 0+index : times.size()+index) ; i++) +// { +// int total = 0; +// for (List items : result) // { -// PatientsQuery query1 = new PatientsQuery(); -// query1.setHospitalId(String.valueOf(org.getId())); -// query1.setYn(YnEnums.YES.getId()); -// query1.setType(1); -// //高危等级 -// query1.setrLevel(config.getId()); -// List buildType = new ArrayList(); -// buildType.add(0); -// buildType.add(2); -// query1.setBuildTypeList(buildType); -// Integer count = patientsService.queryPatientCount(query1); -// items.add(count == null ? "0" : String.valueOf(count)); -// map.put("data",items); +// if (items.contains(level.getName())) +// { +// total+=Integer.valueOf(items.get(i)); +// } // } -// series.add(map); +// totalList.add(String.valueOf(total)); // } +// totalAllList.add(totalList); // } +// result.addAll(totalAllList); // } +// +// for (List items : result) +// { +// for (String item : items) +// { +// System.out.print(" "+ item); +// } +// System.out.println(); +// } + + + //统计柱状图数据封装-------------------------------- + + //图标数据 + List> series = new ArrayList<>(); + + //x轴标题数据 + List xAxis = new ArrayList<>(); + + //分类标题 + List titleItems = new ArrayList<>(); + + + //获取分类标题数据 + if (CollectionUtils.isNotEmpty(riskLevelConfig)) + { + for (BasicConfig conf : riskLevelConfig) + { + titleItems.add(conf.getName()); + } + } + + + if (addrType < 3) + { + if (CollectionUtils.isNotEmpty(list)) + { + for (Map addr : list) + { + xAxis.add(String.valueOf(addr.get("name"))); + } + for (BasicConfig config : riskLevelConfig) + { + Map map = new HashMap(); + map.put("name",config.getName()); + map.put("type","bar"); + + OrganizationQuery idQuery = new OrganizationQuery(); + idQuery.setYn(YnEnums.YES.getId()); + + List items = new ArrayList<>(); + for (Map addr : list) + { + List hids = new ArrayList<>(); + String id = String.valueOf(addr.get("id")); + if (addrType == 1) + { + idQuery.setCityId(id); + } + else if(addrType == 2) + { + idQuery.setAreaId(id); + } + + //查询机构数 + List orgs = organizationService.queryOrganization(idQuery); + + if (CollectionUtils.isNotEmpty(orgs)) + { + for (Organization org : orgs) + { + hids.add(String.valueOf(org.getId())); + } + } + + PatientsQuery query1 = new PatientsQuery(); + query1.setHospitalList(hids); + query1.setYn(YnEnums.YES.getId()); + query1.setType(1); + //高危等级 + query1.setrLevel(config.getId()); + List buildType = new ArrayList(); + buildType.add(0); + buildType.add(2); + query1.setBuildTypeList(buildType); + Integer count = patientsService.queryPatientCount(query1); + items.add(count == null ? "0" : String.valueOf(count)); + } + map.put("data",items); + + series.add(map); + } + } + } + else if (addrType == 3) + { + OrganizationQuery organizationQuery = new OrganizationQuery(); + organizationQuery.setYn(YnEnums.YES.getId()); + organizationQuery.setAreaId(countRequest.getAreaId()); + + //TODO权限 + // List press = getCurrentOrgs( countRequest, userId); + List orgs = organizationService.queryOrganization(organizationQuery); + + if (CollectionUtils.isNotEmpty(list)) + { + for (Organization org : orgs) + { + xAxis.add(org.getName()); + + Map map = new HashMap(); + map.put("name",org.getName()); + map.put("type", "bar"); + List items = new ArrayList<>(); + for (BasicConfig config : riskLevelConfig) + { + PatientsQuery query1 = new PatientsQuery(); + query1.setHospitalId(String.valueOf(org.getId())); + query1.setYn(YnEnums.YES.getId()); + query1.setType(1); + //高危等级 + query1.setrLevel(config.getId()); + List buildType = new ArrayList(); + buildType.add(0); + buildType.add(2); + query1.setBuildTypeList(buildType); + Integer count = patientsService.queryPatientCount(query1); + items.add(count == null ? "0" : String.valueOf(count)); + map.put("data",items); + } + series.add(map); + } + } + } datas.put("series",series); datas.put("xAxis",xAxis); @@ -582,6 +654,96 @@ public class RiskReportFacade { .setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(datas); } + /** + * 查询条件 + * @param patientsQuery + * @param countRequest + */ + + private void getRequestQuery(PatientsQuery patientsQuery, RiskPatientsCountRequest countRequest) { + Date currentDate = new Date(); + + //0:全部 1:20岁一下 2:25-30 3:30-40 4:40岁以上 + if (countRequest.getAgeRange() != null && countRequest.getAgeRange() != 0) + { + int s = 0; + int e = 0; + if (countRequest.getAgeRange() == 1) + { + s = 0;e=20; + } + else if (countRequest.getAgeRange() == 2) + { + s = 25;e=30; + } + else if (countRequest.getAgeRange() == 3) + { + s = 31;e=40; + } + else if (countRequest.getAgeRange() == 4) + { + s = 41;e=100; + } + + Date start = DateUtil.addMonth(currentDate, s); + patientsQuery.setBirthEnd(start); + + Date end = DateUtil.addDay(DateUtil.addYear(currentDate, e - 1), 1); + patientsQuery.setBirthStart(end); + } + + //孕周 0 全部孕周 1:孕12周前 2:13-19 3:20-25 4:26-30 5:31-36 6:37-40 7:40-分娩前 + if (countRequest.getWeek() != null && countRequest.getWeek() != 0) + { + int s = 0; + int e = 0; + if (countRequest.getWeek() == 1) + { + s = 0;e=12; + } + else if (countRequest.getWeek() == 2) + { + s = 13;e=19; + } + else if (countRequest.getWeek() == 3) + { + s = 20;e=25; + } + else if (countRequest.getWeek() == 4) + { + s = 26;e=30; + } + else if (countRequest.getWeek() == 5) + { + s = 31;e=36; + } + else if (countRequest.getWeek() == 6) + { + s = 37;e=40; + } + else if (countRequest.getWeek() == 7) + { + s = 41;e=42; + } + + Date startDate = DateUtil.addDay(DateUtil.parseYMD(DateUtil.getyyyy_MM_dd(new Date())), -(s*7)); + Date endDate = DateUtil.addDay(DateUtil.parseYMD(DateUtil.getyyyy_MM_dd(new Date())), -(e*7)-6); + + patientsQuery.setLastMensesStart(endDate); + patientsQuery.setLastMensesEnd(startDate); + } + + + //孕妇 + patientsQuery.setType(1); + List buildType = new ArrayList(); + buildType.add(0); + buildType.add(2); + //建档类型 + patientsQuery.setBuildTypeList(buildType); + + } + public void exportAreaHighRisk(RiskPatientsCountRequest countRequest, Integer userId, HttpServletResponse response) { try { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/RiskPatientsCountRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/RiskPatientsCountRequest.java index d6292a9..f3e547b 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/RiskPatientsCountRequest.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/RiskPatientsCountRequest.java @@ -28,7 +28,8 @@ public class RiskPatientsCountRequest extends BasePageQueryRequest { private Integer ageRange; //时间范围 - private String time; + private String timeStart; + private String timeEnd; //高危等级{} private Map riskLevel; @@ -69,12 +70,20 @@ public class RiskPatientsCountRequest extends BasePageQueryRequest { this.exportType = exportType; } - public String getTime() { - return time; + public String getTimeStart() { + return timeStart; } - public void setTime(String time) { - this.time = time; + public void setTimeStart(String timeStart) { + this.timeStart = timeStart; + } + + public String getTimeEnd() { + return timeEnd; + } + + public void setTimeEnd(String timeEnd) { + this.timeEnd = timeEnd; } public Integer getCompareType() { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/SyncDataTaskService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/SyncDataTaskService.java index 1b7354f..6c87ffe 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/SyncDataTaskService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/SyncDataTaskService.java @@ -55,6 +55,7 @@ public class SyncDataTaskService { urls.put("area-chengde-api.healthbaby.com.cn:12356","承德"); urls.put("area-kaifeng-api.healthbaby.com.cn:12356","开封"); urls.put("area-weixian-api.healthbaby.com.cn:12356","威县"); + urls.put("area-zhucheng-api.healthbaby.com.cn:12356","诸城市妇幼保健院"); } @Autowired -- 1.8.3.1