From d29fe1e181cc54f7cfd1204ae84eec856d31b142 Mon Sep 17 00:00:00 2001 From: gengxiaokai Date: Sat, 17 Nov 2018 15:23:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A7=E6=A3=80=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PremaritalCheckupController.java | 17 +++ .../web/facade/PremaritalCheckupFacade.java | 169 +++++++++++++++++++-- 2 files changed, 175 insertions(+), 11 deletions(-) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PremaritalCheckupController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PremaritalCheckupController.java index 0f2eb16..ae5517f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PremaritalCheckupController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PremaritalCheckupController.java @@ -94,6 +94,23 @@ public class PremaritalCheckupController extends BaseController{ return premaritalCheckupFacade.queryPremaritalCheckup(queryRequest, loginState.getId()); } + + /** + * 婚检统计 + * @param provinceId + * @param cityId + * @param areaId + * @param streetId + * @param time + * @param request + * @return + */ + public BaseResponse queryPremaritalReport(String provinceId,String cityId,String areaId,String streetId,String time,HttpServletRequest request){ + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return premaritalCheckupFacade.queryPremaritalReport(provinceId,cityId,areaId,streetId,time,loginState.getId()); + } + + @RequestMapping(value = "/premaritalCheckupExport", method = RequestMethod.GET) @ResponseBody @TokenRequired diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PremaritalCheckupFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PremaritalCheckupFacade.java index ada7691..e4dd336 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PremaritalCheckupFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PremaritalCheckupFacade.java @@ -1,9 +1,7 @@ package com.lyms.platform.operate.web.facade; -import com.lyms.platform.biz.service.BasicConfigService; -import com.lyms.platform.biz.service.PremaritalCheckupService; -import com.lyms.platform.biz.service.ResidentsArchiveService; -import com.lyms.platform.biz.service.TrackDownRecordService; +import com.lyms.platform.beans.AddressBean; +import com.lyms.platform.biz.service.*; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.enums.MedicalAdviceEnum; import com.lyms.platform.common.enums.PhysiologyStatusEnum; @@ -14,6 +12,7 @@ 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.ExcelUtil; +import com.lyms.platform.common.utils.JsonUtil; import com.lyms.platform.common.utils.SystemConfig; import com.lyms.platform.operate.web.request.PremaritalCheckupAddRequest; import com.lyms.platform.operate.web.request.PremaritalCheckupQueryRequest; @@ -25,16 +24,12 @@ import com.lyms.platform.operate.web.utils.CommonsHelper; import com.lyms.platform.operate.web.utils.FunvCommonUtil; import com.lyms.platform.operate.web.utils.UnitConstants; import com.lyms.platform.permission.model.Organization; +import com.lyms.platform.permission.model.OrganizationQuery; import com.lyms.platform.permission.model.Users; import com.lyms.platform.permission.service.OrganizationService; import com.lyms.platform.permission.service.UsersService; -import com.lyms.platform.pojo.BasicConfig; -import com.lyms.platform.pojo.PremaritalCheckup; -import com.lyms.platform.pojo.ResidentsArchiveModel; -import com.lyms.platform.pojo.TrackDownRecord; -import com.lyms.platform.query.PremaritalCheckupQuery; -import com.lyms.platform.query.ResidentsArchiveQuery; -import com.lyms.platform.query.TrackDownRecordQuery; +import com.lyms.platform.pojo.*; +import com.lyms.platform.query.*; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -68,6 +63,10 @@ public class PremaritalCheckupFacade { private ITrackDownService trackDownService; @Autowired private TrackDownRecordService trackDownRecordService; + @Autowired + private AreaCountFacade areaCountFacade; + @Autowired + private DataPermissionService dataPermissionService; /** * 查询单个(男/女)婚前检查 @@ -2190,6 +2189,144 @@ public class PremaritalCheckupFacade { return checkupResult; } + + //婚检统计 + public BaseResponse queryPremaritalReport(String provinceId,String cityId,String areaId,String streetId,String time,Integer userId){ + //获取用户权限医院和筛选条件的交集 + List currentUserHospPermissions = areaCountFacade.getCurrentUserHospPermissions2(userId, provinceId, + cityId, areaId); + String[] dates = null; + if (StringUtils.isNotEmpty(time)) { + dates = time.split(" - "); + } + BasicConfigQuery basicQuery = new BasicConfigQuery(); + basicQuery.setYn(YnEnums.YES.getId()); + basicQuery.setTypeId("b7ea005c-dfac-4c2a-bdae-25239b3f44fd"); + //用来存放省、市、县的ID的集合 + List ids = new ArrayList<>(); + //查询当前登录用户管辖的所有医院 + DataPermissionsModelQuery dataPermissionsModelQuery = new DataPermissionsModelQuery(); + dataPermissionsModelQuery.setUserId(userId); + List permissionsModels = dataPermissionService.queryPermission(dataPermissionsModelQuery); + + int addrType = 0; + if (StringUtils.isNotEmpty(provinceId)) { + ids = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(permissionsModels)) { + List addressBeanList = JsonUtil.toList(permissionsModels.get(0).getAreaPermission(), AddressBean.class); + if (CollectionUtils.isNotEmpty(addressBeanList)) + { + for (AddressBean bean : addressBeanList) + { + if (bean != null && bean.getP() != null && bean.getP().equals(provinceId) && StringUtils.isNotEmpty(bean.getC())) + { + //省不为空,赋值所有市的id + ids.add(bean.getC()); + } + } + } + } + basicQuery.setIds(ids); + addrType = 1; + } + if (StringUtils.isNotEmpty(cityId)) { + ids = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(permissionsModels)) { + List addressBeanList = JsonUtil.toList(permissionsModels.get(0).getAreaPermission(), AddressBean.class); + if (CollectionUtils.isNotEmpty(addressBeanList)) + { + for (AddressBean bean : addressBeanList) + { + if (bean != null && bean.getC() != null && bean.getC().equals(cityId) && StringUtils.isNotEmpty(bean.getA())) + { + //市不为空,赋值所有县的id + ids.add(bean.getA()); + } + } + } + } + basicQuery.setIds(ids); + addrType = 2; + } + //x轴标题数据 + List xAxis = new ArrayList<>(); + //获取地址列表 + List configList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(ids)) + { + configList = basicConfigService.queryBasicConfig(basicQuery); + } + if (CollectionUtils.isNotEmpty(configList)) { + for (BasicConfig addr : configList) { + xAxis.add(addr.getName()); + } + } + //标题名称 + List titleItems = new LinkedList<>(); + titleItems.add("男婚检人数"); + titleItems.add("女婚检人数"); + + //图标数据 + List> series = new LinkedList<>(); + if (CollectionUtils.isNotEmpty(configList)) { + + + for (BasicConfig c : configList) { + Map map = new HashMap(); + OrganizationQuery idQuery = new OrganizationQuery(); + idQuery.setYn(YnEnums.YES.getId()); + + //查询机构数 + if (addrType == 1) { + idQuery.setCityId(c.getId()); + } else if (addrType == 2) { + idQuery.setAreaId(c.getId()); + } + List orgs = organizationService.queryOrganization(idQuery); + List hids = getConditionHospitalIds(currentUserHospPermissions, orgs); + + if (CollectionUtils.isNotEmpty(hids)) + { + + PremaritalCheckupQuery query = new PremaritalCheckupQuery(); + if(dates != null){ + query.setPremaritalUpTimeStart(DateUtil.parseYMD(dates[0])); + if (dates.length == 2) { + query.setPremaritalUpTimeEnd(DateUtil.parseYMD(dates[1])); + } + } + query.setHospitalIds(hids); + query.setSexType(1);//女性 + List dataNv = premaritalCheckupService.queryPremaritalCheckup(query); + if(dataNv != null && dataNv.size() > 0){ + map.put("woman",dataNv.size()); + }else{ + map.put("woman",0); + } + + query.setSexType(2);//男性 + List dataNan = premaritalCheckupService.queryPremaritalCheckup(query); + if(dataNv != null && dataNv.size() > 0){ + map.put("man",dataNan.size()); + }else{ + map.put("man",0); + } + } + series.add(map); + } + + + } + + Map datas = new HashMap<>(); + datas.put("series", series); + datas.put("xAxis", xAxis); + return new BaseObjectResponse().setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(datas); + + } + + + private String strPj(String dstStr,String str) { String result = ""; @@ -2266,4 +2403,14 @@ public class PremaritalCheckupFacade { return ""; } + private List getConditionHospitalIds(List currentUserHospPermissions, List conditionHospitals) { + List hids = new ArrayList<>(); + for (Organization org : conditionHospitals) { + hids.add(String.valueOf(org.getId())); + } + hids.retainAll(currentUserHospPermissions); + + return hids; + } + } -- 1.8.3.1