From 96896fc0f977ea9e4540e803c04d326d312f3522 Mon Sep 17 00:00:00 2001 From: yangfei Date: Wed, 22 Nov 2017 18:02:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/web/controller/TestController.java | 9 +- .../operate/web/facade/MatDeliverFacade.java | 108 +++++++++++++++ .../web/worker/BuildSerToPatientSerWorker.java | 153 ++++++++++++--------- 3 files changed, 203 insertions(+), 67 deletions(-) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java index 367a996..5a0bb31 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java @@ -116,18 +116,19 @@ public class TestController { @RequestMapping(value = "/synBuildToPatientService", method = RequestMethod.GET) @ResponseBody - public String synBuildToPatientService() { + public String synBuildToPatientService(@RequestParam(value = "isSkip") boolean isSkip) { PatientsQuery patientsQuery = new PatientsQuery(); //排查本院隐藏建档 patientsQuery.setExtEnable(false); patientsQuery.setBuildTypeNot(1); patientsQuery.setYn(YnEnums.YES.getId()); patientsQuery.setNeed("need"); - patientsQuery.setType(3); + patientsQuery.setType(1); int patientCount = patientsService.queryPatientCount(patientsQuery); - int batchSize = 20000; + //预计开启10个线程处理,计算每个线程需要处理的数据量 + int batchSize = patientCount/10; int end = 0; List listFuture = new ArrayList<>(); for (int i = 0; i < patientCount; i += batchSize) { @@ -135,7 +136,7 @@ public class TestController { if (end > patientCount) { end = batchSize; } - listFuture.add(commonThreadPool.submit(new BuildSerToPatientSerWorker(i, end,patientsService,patientServiceService))); + listFuture.add(commonThreadPool.submit(new BuildSerToPatientSerWorker(i, end,patientsService,patientServiceService,isSkip,batchSize))); } // for (Future f : listFuture) { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java index 25d82e8..763993d 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java @@ -1118,6 +1118,114 @@ public class MatDeliverFacade { return list; } + /** + * 分娩后随访列表数据 + * @param postpartumFollowMakeRequest + * @return + */ + public List postpartumDeliver(PostpartumFollowMakeRequest postpartumFollowMakeRequest) { + List postpartumFollowResults = new ArrayList<>(); + + PatientsQuery patientsQuery = new PatientsQuery(); + + if (StringUtils.isNotEmpty(postpartumFollowMakeRequest.getBirthDate())) { + patientsQuery.setFmDateStart(DateUtil.getSNDate(postpartumFollowMakeRequest.getBirthDate())[0]); + patientsQuery.setFmDateEnd(DateUtil.getSNDate(postpartumFollowMakeRequest.getBirthDate())[1]); + } + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setIsAutoFm(YnEnums.NO.getId()); + patientsQuery.setType(3); + // 构造医院id集合 + List hospitalList = new ArrayList<>(); + if (StringUtils.isEmpty(postpartumFollowMakeRequest.getIsArea())) { + // 非区域 + hospitalList.add(postpartumFollowMakeRequest.getHospitalId()); + } else { + // 未传入查询条件 + if (StringUtils.isEmpty(postpartumFollowMakeRequest.getHospitalProvinceId()) && StringUtils.isEmpty(postpartumFollowMakeRequest.getHospitalProvinceId()) && StringUtils.isEmpty(postpartumFollowMakeRequest.getHospitalAreaId()) && StringUtils.isEmpty(postpartumFollowMakeRequest.getHospitalId())) { + + DataPermissionsModelQuery dataPermissionsModelQuery = new DataPermissionsModelQuery(); + dataPermissionsModelQuery.setUserId(postpartumFollowMakeRequest.getOperatorId()); + List dataPermissionsModelList = dataPermissionService.queryPermission(dataPermissionsModelQuery); + if (CollectionUtils.isNotEmpty(dataPermissionsModelList)) { + Map data = dataPermissionsModelList.get(0).getData(); + for (Object hospitalId : data.keySet()) { + if (StringUtils.isNotEmpty(hospitalId.toString()) && !hospitalList.contains(hospitalId.toString())) { + hospitalList.add(hospitalId.toString()); + } + } + } + } else { + // 传入了查询条件 + OrganizationQuery organizationQuery = new OrganizationQuery(); + organizationQuery.setProvinceId(postpartumFollowMakeRequest.getHospitalProvinceId()); + organizationQuery.setCityId(postpartumFollowMakeRequest.getHospitalCityId()); + organizationQuery.setAreaId(postpartumFollowMakeRequest.getHospitalAreaId()); + organizationQuery.setYn(YnEnums.YES.getId()); + List organizationList = organizationService.queryHospitals(organizationQuery); + if (CollectionUtils.isNotEmpty(organizationList)) { + for (Organization organization : organizationList) { + hospitalList.add(organization.getId().toString()); + } + } + } + } + patientsQuery.setFmHospitalQueryList(hospitalList); + patientsQuery.setLimit(postpartumFollowMakeRequest.getLimit()); + patientsQuery.setPage(postpartumFollowMakeRequest.getPage()); + patientsQuery.setNeed("need"); + patientsQuery.setDesc("fmDate"); + patientsQuery.setSort("fmDate"); + + List patientsList = patientsService.queryPatient(patientsQuery); + List parentIdList = new ArrayList<>(); + if (CollectionUtils.isEmpty(patientsList)) { + // 没有查到,直接抛出 + return postpartumFollowResults; + } + Map patientsMap = new HashMap<>(); + for (Patients patients : patientsList) { + parentIdList.add(patients.getId()); + patientsMap.put(patients.getId(),patients); + } + + MatDeliverQuery matDeliverQuery = new MatDeliverQuery(); + matDeliverQuery.setParentIdList(parentIdList); + matDeliverQuery.setYn(YnEnums.YES.getId()); + List maternalDeliverModelList = matDeliverService.query(matDeliverQuery); + + for(MaternalDeliverModel deliverModel : maternalDeliverModelList){ + PostpartumFollowResult postpartumFollowResult = new PostpartumFollowResult(); + Patients patients = patientsMap.get(deliverModel.getParentId()); + // 居住地 + postpartumFollowResult.setAddress(CommonsHelper.getResidence(patients.getProvinceRegisterId(), patients.getCityRegisterId(), patients.getAreaRegisterId(), patients.getStreetRegisterId(), patients.getAddressRegister(), basicConfigService)); + // 电话转换 + postpartumFollowResult.setPhone(patients.getPhone()); + //姓名 + postpartumFollowResult.setName(patients.getUsername()); + // 年龄 + postpartumFollowResult.setAge(DateUtil.getAge(patients.getBirth())); + //机构信息 + Organization organization = organizationService.getOrganization(Integer.valueOf(deliverModel.getFmHospital())); + // 市 + BasicConfig cityName = basicConfigService.getOneBasicConfigById(organization.getCityId()); + // 区 + BasicConfig areaName = basicConfigService.getOneBasicConfigById(organization.getAreaId()); + if (cityName != null) { + postpartumFollowResult.setHospitalCityName(cityName.getName()); + } + if (areaName != null) { + postpartumFollowResult.setHospitalAreaName(areaName.getName()); + } + //分娩医院 + postpartumFollowResult.setFmHospital(organization.getName()); + + postpartumFollowResults.add(postpartumFollowResult); + } + + return postpartumFollowResults; + } + public ChildbirthManagerResult childbirthManager(ChildbirthManagerRequest childbirthManagerRequest) { ChildbirthManagerResult childbirthManagerResult = new ChildbirthManagerResult(); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BuildSerToPatientSerWorker.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BuildSerToPatientSerWorker.java index 23262aa..3a3b6b1 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BuildSerToPatientSerWorker.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BuildSerToPatientSerWorker.java @@ -5,7 +5,9 @@ import com.lyms.platform.common.enums.PatientSerEnums; import com.lyms.platform.common.enums.ServiceStatusEnums; import com.lyms.platform.common.enums.ServiceTypeEnums; import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.operate.web.utils.CollectionUtils; import com.lyms.platform.permission.model.PatientService; +import com.lyms.platform.permission.model.PatientServiceQuery; import com.lyms.platform.permission.service.PatientServiceService; import com.lyms.platform.pojo.Patients; import com.lyms.platform.query.PatientsQuery; @@ -22,91 +24,116 @@ import java.util.concurrent.Callable; public class BuildSerToPatientSerWorker implements Callable { private int startIndex; private int endIndex; + private int batchSize; + private boolean isSkip; private PatientsService patientsService; private PatientServiceService patientServiceService; - public BuildSerToPatientSerWorker(int startIndex, int endIndex, PatientsService patientsService, PatientServiceService patientServiceService) { + public BuildSerToPatientSerWorker(int startIndex, int endIndex, PatientsService patientsService, PatientServiceService patientServiceService,boolean isSkip,int batchSize) { this.startIndex = startIndex; this.endIndex = endIndex; this.patientsService = patientsService; this.patientServiceService = patientServiceService; + this.isSkip = isSkip; + if(batchSize>=100){ + this.batchSize = 100; + } else{ + this.batchSize = batchSize; + } } /** * Computes a result, or throws an exception if unable to do so. * * @return computed result - * @throws Exception if unable to compute a result */ @Override - public Object call() throws Exception { - for (int i = startIndex; i <= endIndex; i += 1000) { - PatientsQuery patientsQuery = new PatientsQuery(); - patientsQuery.setLimit(1000); - patientsQuery.setPage((i+1000)/1000); - //排查本院隐藏建档 - patientsQuery.setExtEnable(false); - patientsQuery.setBuildTypeNot(1); - patientsQuery.setYn(YnEnums.YES.getId()); - patientsQuery.setNeed("need"); - patientsQuery.setType(1); - List patients = patientsService.queryPatient(patientsQuery); - for (Patients pt : patients) { - System.out.println("正在处理:"+pt.getId()); - String patientId = pt.getId(); - - PatientService pser = new PatientService(); - pser.setCreateUser(pt.getBookbuildingDoctor()); - pser.setCreateDate(pt.getBookbuildingDate()); - pser.setParentid(patientId); - pser.setPid(pt.getPid()); - pser.setId(UUID.randomUUID().toString().replace("-", "")); - - pser.setHospitalId(pt.getHospitalId()); - - //服务类型 - if(pt.getServiceType() == ServiceTypeEnums.STANDARD_SERVICE.getId() ){//标准服务 - pser.setSerType(PatientSerEnums.SerTypeEnums.bzfw.getId()); - //默认开通状态 - if(pt.getServiceStatus() == ServiceStatusEnums.STANDARD_OPEN.getId()){ - pser.setSerStatus(PatientSerEnums.SerStatusEnums.kt.getId()); - }else if(pt.getServiceStatus() == ServiceStatusEnums.NO_OPEN.getId()){ - pser.setSerStatus(PatientSerEnums.SerStatusEnums.td.getId()); - }else if(pt.getServiceStatus() == ServiceStatusEnums.STANDARD_OVERDUE.getId()){ - pser.setSerStatus(PatientSerEnums.SerStatusEnums.gq.getId()); + public Object call() { + try { + for (int i = startIndex; i <= endIndex; i += batchSize) { + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setLimit(batchSize); + patientsQuery.setPage((i+batchSize)/batchSize); + //排查本院隐藏建档 + patientsQuery.setExtEnable(false); + patientsQuery.setBuildTypeNot(1); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setNeed("need"); + patientsQuery.setType(1); + List patients = patientsService.queryPatient(patientsQuery); + for (Patients pt : patients) { + + if(pt.getServiceType() == null){ + continue; } - }else if(pt.getServiceType() ==ServiceTypeEnums.ADD_SERVICE.getId()){//增值服务 - pser.setSerType(PatientSerEnums.SerTypeEnums.yqjzzd.getId()); - //默认开通状态 - if(pt.getServiceStatus() == ServiceStatusEnums.ADD_OPEN.getId()){ - pser.setSerStatus(PatientSerEnums.SerStatusEnums.kt.getId()); - }else if(pt.getServiceStatus() == ServiceStatusEnums.UNSUBSCRIBE.getId()){ - pser.setSerStatus(PatientSerEnums.SerStatusEnums.td.getId()); - }else if(pt.getServiceStatus() == ServiceStatusEnums.ADD_OVERDUE.getId()){ - pser.setSerStatus(PatientSerEnums.SerStatusEnums.gq.getId()); - }else if(pt.getServiceStatus() == ServiceStatusEnums.SUSPEND.getId()){ - pser.setSerStatus(PatientSerEnums.SerStatusEnums.zt.getId()); + System.out.println("正在处理:"+pt.getId()); + String patientId = pt.getId(); + + PatientService pser = new PatientService(); + pser.setCreateUser(pt.getBookbuildingDoctor()); + pser.setCreateDate(pt.getBookbuildingDate()); + pser.setParentid(patientId); + pser.setPid(pt.getPid()); + pser.setId(UUID.randomUUID().toString().replace("-", "")); + + pser.setHospitalId(pt.getHospitalId()); + + + //服务类型 + if(pt.getServiceType() == ServiceTypeEnums.STANDARD_SERVICE.getId() ){//标准服务 + pser.setSerType(PatientSerEnums.SerTypeEnums.bzfw.getId()); + //默认开通状态 + if(pt.getServiceStatus() == ServiceStatusEnums.STANDARD_OPEN.getId()){ + pser.setSerStatus(PatientSerEnums.SerStatusEnums.kt.getId()); + }else if(pt.getServiceStatus() == ServiceStatusEnums.NO_OPEN.getId()){ + pser.setSerStatus(PatientSerEnums.SerStatusEnums.td.getId()); + }else if(pt.getServiceStatus() == ServiceStatusEnums.STANDARD_OVERDUE.getId()){ + pser.setSerStatus(PatientSerEnums.SerStatusEnums.gq.getId()); + } + + }else if(pt.getServiceType() ==ServiceTypeEnums.ADD_SERVICE.getId()){//增值服务 + pser.setSerType(PatientSerEnums.SerTypeEnums.yqjzzd.getId()); + //默认开通状态 + if(pt.getServiceStatus() == ServiceStatusEnums.ADD_OPEN.getId()){ + pser.setSerStatus(PatientSerEnums.SerStatusEnums.kt.getId()); + }else if(pt.getServiceStatus() == ServiceStatusEnums.UNSUBSCRIBE.getId()){ + pser.setSerStatus(PatientSerEnums.SerStatusEnums.td.getId()); + }else if(pt.getServiceStatus() == ServiceStatusEnums.ADD_OVERDUE.getId()){ + pser.setSerStatus(PatientSerEnums.SerStatusEnums.gq.getId()); + }else if(pt.getServiceStatus() == ServiceStatusEnums.SUSPEND.getId()){ + pser.setSerStatus(PatientSerEnums.SerStatusEnums.zt.getId()); + } } - } + if(isSkip){//是否是增量 + PatientServiceQuery patientQuery = new PatientServiceQuery(); + patientQuery.setParentid(pt.getId()); + patientQuery.setSerType(pser.getSerType()); + + List patientServices = patientServiceService.queryPatientService(patientQuery); + if (CollectionUtils.isNotEmpty(patientServices)) { + continue; + } + } - //默认已经领取 - pser.setStatus(2); - //默认待同步 - pser.setSynStatus(1); - //领取时间 - // pser.setReceiveDate(new Date()); - //服务开通操作时间 - pser.setUpdateDate(pt.getBookbuildingDate()); - //服务开通操作人 - pser.setUpdateUser(String.valueOf(pt.getBookbuildingDoctor())); - patientServiceService.addPatientService(pser); + //默认已经领取 + pser.setStatus(2); + //默认待同步 + pser.setSynStatus(1); + //领取时间 + // pser.setReceiveDate(new Date()); + //服务开通操作时间 + pser.setUpdateDate(pt.getBookbuildingDate()); + //服务开通操作人 + pser.setUpdateUser(pt.getBookbuildingDoctor()); + patientServiceService.addPatientService(pser); + } + // System.out.println("endIndex:" + endIndex + "," + i + ":" + patients.size()); } - // System.out.println("endIndex:" + endIndex + "," + i + ":" + patients.size()); + }catch (Exception e){ + e.printStackTrace(); } - - return null; } -- 1.8.3.1