diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java index dcae092..cd962c8 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java @@ -13,6 +13,8 @@ import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.utils.*; import com.lyms.platform.operate.web.request.*; import com.lyms.platform.operate.web.result.*; +import com.lyms.platform.operate.web.utils.BabyListTask; +import com.lyms.platform.operate.web.utils.HiskCountTask; import com.lyms.platform.operate.web.utils.MessageCenterService; import com.lyms.platform.permission.model.Organization; import com.lyms.platform.permission.model.OrganizationQuery; @@ -30,6 +32,10 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.util.*; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; /** * @@ -103,6 +109,9 @@ public class BabyBookbuildingFacade { private AutoMatchFacade autoMatchFacade; + private static ExecutorService pool = Executors.newFixedThreadPool(4); + + public BaseResponse getBabyBase(String babyId) { //查询儿童的基本信息 BabyBasicResult base = new BabyBasicResult(); @@ -1366,6 +1375,8 @@ public class BabyBookbuildingFacade { List hospitalIdList = new ArrayList<>(); + String hospitalName = ""; + if(String.valueOf("true").equals(request.getIsArea())){ OrganizationQuery organizationQuery = new OrganizationQuery(); @@ -1429,75 +1440,118 @@ public class BabyBookbuildingFacade { } } hospitalIdList.add(hospitalId); - } - + hospitalName = organizationService.getOrganization(Integer.valueOf(hospitalId)).getName(); + } + List list = new ArrayList<>(); BabyModelQuery babyQuery = new BabyModelQuery(); babyQuery.setHospitalIdList(hospitalIdList); List models = getBabayListByCondition(request, true, babyQuery); - List list = new ArrayList<>(); if (CollectionUtils.isNotEmpty(models)) { - for (BabyModel model : models) { - BabyManageListResult result = new BabyManageListResult(); - result.setId(model.getId()); - if (model.getLastHighRisk() == null || model.getLastHighRisk() == 0) { - result.setHighRisk("健康"); - } else { - result.setHighRisk("高危"); + int batchSize = 50; + int end = 0; + List futures = new ArrayList<>(); + for (int i = 0; i < models.size(); i += batchSize) { + end = (end + batchSize); + if (end > models.size()) { + end = models.size(); } - result.setSex(StringUtils.emptyDeal(SexEnum.getTextById(model.getSex()))); - result.setBabyName(StringUtils.emptyDeal(model.getName())); - result.setBirthday(StringUtils.emptyDeal(DateUtil.getyyyy_MM_dd(model.getBirth()))); - result.setMommyName(StringUtils.emptyDeal(model.getMname())); - result.setMommnyPhone(StringUtils.emptyDeal(model.getMphone())); - result.setMommnyEncryptPhone(StringUtils.encryPhone(model.getMphone())); - result.setServiceStatus(StringUtils.emptyDeal(model.getServiceStatus() == null ? "" : ServiceStatusEnums.getNameById(model.getServiceStatus()))); - result.setServiceType(StringUtils.emptyDeal(model.getServiceType() == null ? "" : ServiceTypeEnums.getTitleById(model.getServiceType()))); - result.setNextDate(StringUtils.emptyDeal(DateUtil.getyyyy_MM_dd(model.getNextDate()))); - result.setMonthAge(StringUtils.emptyDeal(DateUtil.getBabyMonthAge(model.getBirth(), new Date()))); - result.setPatientId(model.getParentId()); - result.setBuildTime(DateUtil.getyyyy_MM_dd(model.getBuildDate())); - result.setHospitalName(organizationService.getOrganization(Integer.valueOf(model.getHospitalId())).getName()); - - // 开始查询省市区街道 - // 省 - BasicConfig provinceName = basicConfigService.getOneBasicConfigById(model.getProvinceId()); - // 市 - BasicConfig cityName = basicConfigService.getOneBasicConfigById(model.getCityId()); - // 区 - BasicConfig areaName = basicConfigService.getOneBasicConfigById(model.getAreaId()); - // 街道 - BasicConfig streetName = basicConfigService.getOneBasicConfigById(model.getStreetId()); - // 具体 - String address = model.getAddress(); - String completeAddress = ""; - if(provinceName!=null){ - completeAddress+=provinceName.getName(); - } - if(cityName!=null){ - completeAddress+=cityName.getName(); - } - if(areaName!=null){ - completeAddress+=areaName.getName(); - } - if(streetName!=null){ - completeAddress+=streetName.getName(); - } - if(!StringUtils.isEmpty(address)) { - completeAddress += address; - } - if(completeAddress.length()==0){ - completeAddress = "-"; + List ms = models.subList(i, end); + Callable c = new BabyListTask( + basicConfigService, + organizationService, + babyCheckFacade, + ms,request.getIsArea(),hospitalName); + Future f = pool.submit(c); + futures.add(f); + } + if (CollectionUtils.isNotEmpty(futures)) + { + for (Future f : futures) + { + try { + list.addAll((List) f.get()); + } catch (Exception e) { + ExceptionUtils.catchException(e, "baby list error."); + } } - result.setCompleteAddress(completeAddress); + } + } - String diagnose = ""; -// if (!StringUtils.isEmpty(model.getDiagnose())) { -// List diagList = JsonUtil.toList(model.getDiagnose(), List.class); +// if (CollectionUtils.isNotEmpty(models)) { +// for (BabyModel model : models) { +// BabyManageListResult result = new BabyManageListResult(); +// result.setId(model.getId()); +// if (model.getLastHighRisk() == null || model.getLastHighRisk() == 0) { +// result.setHighRisk("健康"); +// } else { +// result.setHighRisk("高危"); +// } +// result.setSex(StringUtils.emptyDeal(SexEnum.getTextById(model.getSex()))); +// result.setBabyName(StringUtils.emptyDeal(model.getName())); +// result.setBirthday(StringUtils.emptyDeal(DateUtil.getyyyy_MM_dd(model.getBirth()))); +// result.setMommyName(StringUtils.emptyDeal(model.getMname())); +// result.setMommnyPhone(StringUtils.emptyDeal(model.getMphone())); +// result.setMommnyEncryptPhone(StringUtils.encryPhone(model.getMphone())); +// result.setServiceStatus(StringUtils.emptyDeal(model.getServiceStatus() == null ? "" : ServiceStatusEnums.getNameById(model.getServiceStatus()))); +// result.setServiceType(StringUtils.emptyDeal(model.getServiceType() == null ? "" : ServiceTypeEnums.getTitleById(model.getServiceType()))); +// result.setNextDate(StringUtils.emptyDeal(DateUtil.getyyyy_MM_dd(model.getNextDate()))); +// result.setMonthAge(StringUtils.emptyDeal(DateUtil.getBabyMonthAge(model.getBirth(), new Date()))); +// result.setPatientId(model.getParentId()); +// result.setBuildTime(DateUtil.getyyyy_MM_dd(model.getBuildDate())); +// result.setHospitalName(organizationService.getOrganization(Integer.valueOf(model.getHospitalId())).getName()); +// +// if(String.valueOf("true").equals(request.getIsArea())) { +// // 开始查询省市区街道 +// // 省 +// BasicConfig provinceName = basicConfigService.getOneBasicConfigById(model.getProvinceId()); +// // 市 +// BasicConfig cityName = basicConfigService.getOneBasicConfigById(model.getCityId()); +// // 区 +// BasicConfig areaName = basicConfigService.getOneBasicConfigById(model.getAreaId()); +// // 街道 +// BasicConfig streetName = basicConfigService.getOneBasicConfigById(model.getStreetId()); +// // 具体 +// String address = model.getAddress(); +// String completeAddress = ""; +// if (provinceName != null) { +// completeAddress += provinceName.getName(); +// } +// if (cityName != null) { +// completeAddress += cityName.getName(); +// } +// if (areaName != null) { +// completeAddress += areaName.getName(); +// } +// if (streetName != null) { +// completeAddress += streetName.getName(); +// } +// if (!StringUtils.isEmpty(address)) { +// completeAddress += address; +// } +// if (completeAddress.length() == 0) { +// completeAddress = "-"; +// } +// result.setCompleteAddress(completeAddress); +// } +// String diagnose = ""; +//// if (!StringUtils.isEmpty(model.getDiagnose())) { +//// List diagList = JsonUtil.toList(model.getDiagnose(), List.class); +//// if (CollectionUtils.isNotEmpty(diagList)) { +//// diagnose = ""; +//// for (Object obj : diagList) { +//// BasicConfig basicConfig = basicConfigService.getOneBasicConfigById((String) obj); +//// if (basicConfig != null) { +//// diagnose += basicConfig.getName() + " "; +//// } +//// } +//// } +//// } +// if (StringUtils.isNotEmpty(model.getPid())) { +// List diagList = babyCheckFacade.getBabyLastDiagnose(model.getPid()); // if (CollectionUtils.isNotEmpty(diagList)) { -// diagnose = ""; // for (Object obj : diagList) { // BasicConfig basicConfig = basicConfigService.getOneBasicConfigById((String) obj); // if (basicConfig != null) { @@ -1506,21 +1560,10 @@ public class BabyBookbuildingFacade { // } // } // } - if (StringUtils.isNotEmpty(model.getPid())) { - List diagList = babyCheckFacade.getBabyLastDiagnose(model.getPid()); - if (CollectionUtils.isNotEmpty(diagList)) { - for (Object obj : diagList) { - BasicConfig basicConfig = basicConfigService.getOneBasicConfigById((String) obj); - if (basicConfig != null) { - diagnose += basicConfig.getName() + " "; - } - } - } - } - result.setDiagnose(StringUtils.emptyDeal(diagnose)); - list.add(result); - } - } +// result.setDiagnose(StringUtils.emptyDeal(diagnose)); +// list.add(result); +// } +// } BaseListResponse objectResponse = new BaseListResponse(); objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabyListTask.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabyListTask.java new file mode 100644 index 0000000..7a6ea70 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabyListTask.java @@ -0,0 +1,144 @@ +package com.lyms.platform.operate.web.utils; + +import com.lyms.platform.biz.service.BasicConfigService; +import com.lyms.platform.common.enums.*; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.operate.web.facade.BabyCheckFacade; +import com.lyms.platform.operate.web.result.BabyManageListResult; +import com.lyms.platform.permission.service.OrganizationService; +import com.lyms.platform.pojo.BabyModel; +import com.lyms.platform.pojo.BasicConfig; +import org.apache.commons.collections.CollectionUtils; + +import java.util.*; +import java.util.concurrent.*; + +/** + * Created by lqy on 2016/11/30. + */ +public class BabyListTask implements Callable { + + private BasicConfigService basicConfigService; + + private OrganizationService organizationService; + + private BabyCheckFacade babyCheckFacade; + + private List models; + + private String isArea; + private String hospitalName; + + public BabyListTask(BasicConfigService basicConfigService, + OrganizationService organizationService, + BabyCheckFacade babyCheckFacade, + List models, + String isArea, + String hospitalName) + { + this.basicConfigService = basicConfigService; + this.organizationService = organizationService; + this.babyCheckFacade = babyCheckFacade; + this.models = models; + this.isArea = isArea; + this.hospitalName = hospitalName; + + } + @Override + public List call() throws Exception { + List list = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(models)) { + for (BabyModel model : models) { + BabyManageListResult result = new BabyManageListResult(); + result.setId(model.getId()); + if (model.getLastHighRisk() == null || model.getLastHighRisk() == 0) { + result.setHighRisk("健康"); + } else { + result.setHighRisk("高危"); + } + result.setSex(StringUtils.emptyDeal(SexEnum.getTextById(model.getSex()))); + result.setBabyName(StringUtils.emptyDeal(model.getName())); + result.setBirthday(StringUtils.emptyDeal(DateUtil.getyyyy_MM_dd(model.getBirth()))); + result.setMommyName(StringUtils.emptyDeal(model.getMname())); + result.setMommnyPhone(StringUtils.emptyDeal(model.getMphone())); + result.setMommnyEncryptPhone(StringUtils.encryPhone(model.getMphone())); + result.setServiceStatus(StringUtils.emptyDeal(model.getServiceStatus() == null ? "" : ServiceStatusEnums.getNameById(model.getServiceStatus()))); + result.setServiceType(StringUtils.emptyDeal(model.getServiceType() == null ? "" : ServiceTypeEnums.getTitleById(model.getServiceType()))); + result.setNextDate(StringUtils.emptyDeal(DateUtil.getyyyy_MM_dd(model.getNextDate()))); + result.setMonthAge(StringUtils.emptyDeal(DateUtil.getBabyMonthAge(model.getBirth(), new Date()))); + result.setPatientId(model.getParentId()); + result.setBuildTime(DateUtil.getyyyy_MM_dd(model.getBuildDate())); + result.setHospitalName(hospitalName); + + if(String.valueOf("true").equals(isArea)) { + + result.setHospitalName(organizationService.getOrganization(Integer.valueOf(model.getHospitalId())).getName()); + // 开始查询省市区街道 + // 省 + BasicConfig provinceName = basicConfigService.getOneBasicConfigById(model.getProvinceId()); + // 市 + BasicConfig cityName = basicConfigService.getOneBasicConfigById(model.getCityId()); + // 区 + BasicConfig areaName = basicConfigService.getOneBasicConfigById(model.getAreaId()); + // 街道 + BasicConfig streetName = basicConfigService.getOneBasicConfigById(model.getStreetId()); + // 具体 + String address = model.getAddress(); + String completeAddress = ""; + if (provinceName != null) { + completeAddress += provinceName.getName(); + } + if (cityName != null) { + completeAddress += cityName.getName(); + } + if (areaName != null) { + completeAddress += areaName.getName(); + } + if (streetName != null) { + completeAddress += streetName.getName(); + } + if (!StringUtils.isEmpty(address)) { + completeAddress += address; + } + if (completeAddress.length() == 0) { + completeAddress = "-"; + } + result.setCompleteAddress(completeAddress); + } + String diagnose = ""; +// if (!StringUtils.isEmpty(model.getDiagnose())) { +// List diagList = JsonUtil.toList(model.getDiagnose(), List.class); +// if (CollectionUtils.isNotEmpty(diagList)) { +// diagnose = ""; +// for (Object obj : diagList) { +// BasicConfig basicConfig = basicConfigService.getOneBasicConfigById((String) obj); +// if (basicConfig != null) { +// diagnose += basicConfig.getName() + " "; +// } +// } +// } +// } + if (StringUtils.isNotEmpty(model.getPid())) { + List diagList = babyCheckFacade.getBabyLastDiagnose(model.getPid()); + if (CollectionUtils.isNotEmpty(diagList)) { + for (Object obj : diagList) { + BasicConfig basicConfig = basicConfigService.getOneBasicConfigById((String) obj); + if (basicConfig != null) { + diagnose += basicConfig.getName() + " "; + } + } + } + } + result.setDiagnose(StringUtils.emptyDeal(diagnose)); + list.add(result); + } + } + + return list; + } + + +} + +