From b6a7cc45a21f8a17f4b8288bddd53499393b548e Mon Sep 17 00:00:00 2001 From: landong2015 Date: Tue, 20 Dec 2016 16:59:15 +0800 Subject: [PATCH] update --- .../lyms/platform/query/ResidentsArchiveQuery.java | 46 ++++ .../controller/PremaritalCheckupController.java | 2 +- .../ResidentArchivesRegionController.java | 19 +- .../web/controller/ResidentsArchiveController.java | 2 +- .../operate/web/facade/ResidentsFacade.java | 245 +++++++++++++++++++++ 5 files changed, 308 insertions(+), 6 deletions(-) create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ResidentsFacade.java diff --git a/platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java index 27a59f1..7af10e4 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java @@ -8,7 +8,9 @@ import com.lyms.platform.common.dao.operator.MongoQuery; import org.apache.commons.lang.StringUtils; import org.springframework.data.mongodb.core.query.Criteria; +import javax.validation.constraints.Min; import java.util.Date; +import java.util.List; /** * Created by Administrator on 2016/11/9 0009. @@ -102,6 +104,12 @@ public class ResidentsArchiveQuery extends BaseQuery implements IConvertToNative private String publishName; + //年龄 + private Integer ageMin; + private Integer ageMax; + + private List hospitalIds; + @Override public MongoQuery convertToQuery() { MongoCondition condition = MongoCondition.newInstance(); @@ -111,6 +119,9 @@ public class ResidentsArchiveQuery extends BaseQuery implements IConvertToNative if (StringUtils.isNotBlank(username)) { condition = condition.and("username", username, MongoOper.LIKE); } + if (hospitalIds!=null) { + condition = condition.and("hospitalId", hospitalIds, MongoOper.IN); + } if (StringUtils.isNotBlank(phone)) { condition = condition.and("phone", phone, MongoOper.IS); } @@ -155,12 +166,47 @@ public class ResidentsArchiveQuery extends BaseQuery implements IConvertToNative c1 = c1.lte(birthdayEnd); } } + if (null!=ageMin){ + c1 = Criteria.where("age").gte(ageMin); + } + if(null!=ageMax){ + if (null==c1) { + c1 = Criteria.where("age").lte(ageMax); + } else { + c1 = c1.lte(ageMax); + } + } + if (c1!=null) { condition = condition.andCondition(new MongoCondition(c1)); } return condition.toMongoQuery(); } + public List getHospitalIds() { + return hospitalIds; + } + + public void setHospitalIds(List hospitalIds) { + this.hospitalIds = hospitalIds; + } + + public Integer getAgeMin() { + return ageMin; + } + + public void setAgeMin(Integer ageMin) { + this.ageMin = ageMin; + } + + public Integer getAgeMax() { + return ageMax; + } + + public void setAgeMax(Integer ageMax) { + this.ageMax = ageMax; + } + public Integer getAge() { return age; } 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 2ae35c2..a2e0a29 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 @@ -41,7 +41,7 @@ public class PremaritalCheckupController extends BaseController{ @TokenRequired public BaseResponse addOrUpdatePremaritalCheckup(@RequestBody PremaritalCheckupAddRequest addRequest, HttpServletRequest request){ - //获取当前登录用户ID +// 获取当前登录用户ID LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); return premaritalCheckupFacade.addPremaritalCheckup(addRequest , loginState.getId()); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ResidentArchivesRegionController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ResidentArchivesRegionController.java index cfad3e4..217157d 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ResidentArchivesRegionController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ResidentArchivesRegionController.java @@ -4,7 +4,9 @@ import com.lyms.platform.common.annotation.TokenRequired; import com.lyms.platform.common.base.BaseController; import com.lyms.platform.common.base.LoginContext; import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.operate.web.facade.ResidentsFacade; import com.lyms.platform.operate.web.request.ResidentsArchiveQueryRequest; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -22,13 +24,22 @@ import javax.validation.Valid; @Controller public class ResidentArchivesRegionController extends BaseController{ - @RequestMapping(value = "/r", method = RequestMethod.GET) + @Autowired + private ResidentsFacade residentsFacade; + + /** + * 妇女健康档案管理 + * + * @param queryRequest + * @param request + * @return + */ + @RequestMapping(value = "/regionalWomenList", method = RequestMethod.GET) @ResponseBody @TokenRequired - public BaseResponse queryAllPuerpera(@Valid ResidentsArchiveQueryRequest queryRequest,HttpServletRequest request) { + public BaseResponse queryAllResidents(@Valid ResidentsArchiveQueryRequest queryRequest,HttpServletRequest request) { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); -// return residentsArchiveFacade.queryResidentsArchives(residentsArchiveQueryRequest,loginState.getId(),"true"); - return null; + return residentsFacade.queryResidentsArchives(queryRequest,loginState.getId()); } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ResidentsArchiveController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ResidentsArchiveController.java index 032daa7..e246d80 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ResidentsArchiveController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ResidentsArchiveController.java @@ -121,7 +121,7 @@ public class ResidentsArchiveController extends BaseController { @RequestMapping(value = "/residentsArchiveList", method = RequestMethod.GET) @ResponseBody @TokenRequired - public BaseResponse queryAllPuerpera(@Valid ResidentsArchiveQueryRequest residentsArchiveQueryRequest,HttpServletRequest request) { + public BaseResponse queryAllResidents(@Valid ResidentsArchiveQueryRequest residentsArchiveQueryRequest,HttpServletRequest request) { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); return residentsArchiveFacade.queryResidentsArchives(residentsArchiveQueryRequest,loginState.getId(),"true"); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ResidentsFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ResidentsFacade.java new file mode 100644 index 0000000..4a7f1d2 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ResidentsFacade.java @@ -0,0 +1,245 @@ +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.enums.YnEnums; +import com.lyms.platform.common.result.BaseListResponse; +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.operate.web.request.ResidentsArchiveQueryRequest; +import com.lyms.platform.operate.web.utils.CommonsHelper; +import com.lyms.platform.permission.model.Organization; +import com.lyms.platform.permission.model.OrganizationQuery; +import com.lyms.platform.permission.service.OrganizationService; +import com.lyms.platform.pojo.AntExChuModel; +import com.lyms.platform.pojo.DataPermissionsModel; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.pojo.ResidentsArchiveModel; +import com.lyms.platform.query.AntExChuQuery; +import com.lyms.platform.query.DataPermissionsModelQuery; +import com.lyms.platform.query.PatientsQuery; +import com.lyms.platform.query.ResidentsArchiveQuery; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; + +/** + * Created by Administrator on 2016/12/20 0020. + */ +@Component +public class ResidentsFacade { + + @Autowired + private OrganizationService organizationService; + @Autowired + private AutoMatchFacade autoMatchFacade; + @Autowired + private DataPermissionService dataPermissionService; + @Autowired + private ResidentsArchiveService residentsArchiveService; + @Autowired + private BasicConfigService basicConfigService; + @Autowired + private PatientsService patientsService; + @Autowired + private AntenatalExaminationService antenatalExaminationService; + + + + /** + * 妇女健康档案管理 + * + * @param request + * @param userId + * @return + */ + public BaseResponse queryResidentsArchives(ResidentsArchiveQueryRequest request,Integer userId){ + + /* + 记录孕次,用查询出来的妇女身份证,去patients表中查询是否建档,如果已经建档,孕次返回默认1,如果有初诊记录,返回初诊中的孕次, + 如果没有建档,返回 "-" + */ + ResidentsArchiveQuery query = new ResidentsArchiveQuery(); + query.setPage(request.getPage()); + query.setLimit(request.getLimit()); + query.setNeed("y"); + query.setYn(YnEnums.YES.getId()); + + //出生日期范围查询 + if(StringUtils.isNotEmpty(request.getBirthday())){ + String[] dates = request.getBirthday().split(" - "); + query.setBirthdayStart(DateUtil.parseYMD(dates[0])); + if(dates.length>=2){ + Date date= DateUtil.parseYMD(dates[1]); + if(null!=date){ + long d = date.getTime() + 86398000; + date = new Date(d); + } + query.setBirthdayEnd(date); + } + } + + //年龄范围查询 + if (StringUtils.isNotEmpty(request.getAge())){ + String[] ages = request.getAge().split(" - "); + query.setAgeMin(Integer.parseInt(ages[0])); + if (ages.length>=2){ + Integer ageMax = Integer.parseInt(ages[1]); + query.setAgeMax(ageMax); + } + } + + //户籍地 + query.setProvinceRegisterId(request.getProvinceRegisterId()); + query.setCityRegisterId(request.getCityRegisterId()); + query.setAreaRegisterId(request.getAreaRegisterId()); + + //居住地 + query.setProvinceId(request.getProvinceId()); + query.setCityId(request.getCityId()); + query.setAreaId(request.getAreaId()); + + List> list = new ArrayList<>(); + + List organizationList = null; + //建档机构 + + List hospitalList = null; + if (userId!=null){ + hospitalList = new ArrayList<>(); + String hospital = autoMatchFacade.getHospitalId(userId); + if(null!=hospital){ + //当前用户本院 + hospitalList.add(hospital); + } + + //查询用户是否有区域权限 + DataPermissionsModelQuery dataPermissionsModelQuery = new DataPermissionsModelQuery(); + dataPermissionsModelQuery.setUserId(userId); + List permissionsModels = dataPermissionService.queryPermission(dataPermissionsModelQuery); + if (CollectionUtils.isNotEmpty(permissionsModels)) { + Set set = permissionsModels.get(0).getData().keySet(); + Iterator it = set.iterator(); + while (it.hasNext()) { + String id = it.next(); + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(id) && !hospitalList.contains(id)) { + hospitalList.add(id); + } + } + } + + //指定医院 + if (StringUtils.isNotEmpty(request.getHospitalId())){ + List orgId = new ArrayList<>(); + orgId.add(request.getHospitalId()); + hospitalList.retainAll(orgId); + } + + //省市区筛选机构 + if (StringUtils.isNotEmpty(request.getBuildProvinceId()) || StringUtils.isNotEmpty(request.getBuildCityId()) || + StringUtils.isNotEmpty(request.getBuildAreaId())){ + OrganizationQuery organizationQuery = new OrganizationQuery(); + organizationQuery.setYn(YnEnums.YES.getId()); + organizationQuery.setProvinceId(request.getBuildProvinceId()); + organizationQuery.setCityId(request.getBuildCityId()); + organizationQuery.setAreaId(request.getBuildAreaId()); + organizationList = new ArrayList<>(); + organizationList = organizationService.queryHospitals(organizationQuery); + } + if (organizationList!=null){ + List orgId = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(organizationList)) { + for (Organization org : organizationList) { + if (null != org.getId()) { + orgId.add(org.getId() + ""); + } + } + } + hospitalList.retainAll(orgId); + } + + query.setHospitalIds(hospitalList); + } + + List modelList = residentsArchiveService.queryResident(query); + if (CollectionUtils.isNotEmpty(modelList)){ + for (ResidentsArchiveModel model : modelList){ + Map map = new HashMap<>(); + map.put("username",model.getUsername()); + map.put("certificateNum",model.getCertificateNum()); + map.put("age",DateUtil.getAge(model.getBirthday())); + map.put("householdRegister", CommonsHelper.getResidence(model.getProvinceRegisterId(), model.getCityId(), + model.getAreaRegisterId(), model.getStreetRegisterId(), model.getAddressRegister(), basicConfigService)); + map.put("Residence", CommonsHelper.getResidence(model.getProvinceId(), model.getCityId(), model.getAreaId(), + model.getStreetId(), model.getAddress(), basicConfigService)); + map.put("mod",referMod(model.getHospitalId(),model.getCertificateNum())); + + String name = null; + if (StringUtils.isNotEmpty(model.getHospitalId())){ + Organization organization = organizationService.getOrganization(Integer.parseInt(model.getHospitalId())); + if (organization!=null){ + name = organization.getName(); + } + } + map.put("hospitalName",name); + + list.add(map); + } + } + return new BaseListResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(list); + } + + //查询孕次 + public String referMod(String hospitalId,String cardNo){ + + if (StringUtils.isEmpty(hospitalId) || StringUtils.isEmpty(cardNo)){ + return ""; + } + + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setHospitalId(hospitalId); + patientsQuery.setCardNo(cardNo); + List patientsList = patientsService.queryPatient1(patientsQuery, "created"); + + Patients patients = null; + + if (CollectionUtils.isNotEmpty(patientsList)){ + patients = new Patients(); + patients = patientsList.get(0); + } + + //如果没有在patients中,直接返回 - + if (patients==null){ + return "-"; + } + + AntExChuQuery antExChuQuery = new AntExChuQuery(); + antExChuQuery.setYn(YnEnums.YES.getId()); + antExChuQuery.setHospitalId(patients.getHospitalId()); + antExChuQuery.setParentId(patients.getId()); + List antExChuModelList = antenatalExaminationService.queryAntExChu(antExChuQuery); + + AntExChuModel antExChuModel = null; + + if (CollectionUtils.isNotEmpty(antExChuModelList)){ + antExChuModel = new AntExChuModel(); + antExChuModel = antExChuModelList.get(0); + } + + String num = "1"; + //已经建档,但没有做初诊,默认返回 1 + if (antExChuModel==null){ + return num; + } + if (antExChuModel.getPregnancyTimes()!=null){ + num = String.valueOf(antExChuModel.getPregnancyTimes()); + } + return num; + } + +} -- 1.8.3.1