From f6de5e68df0c8cd216d9af9339f1bbabb2255155 Mon Sep 17 00:00:00 2001 From: jiangjiazhi Date: Fri, 10 Mar 2017 11:10:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=A7=E7=AD=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/operate/web/facade/SieveFacade.java | 35 ++++++++- .../platform/operate/web/worker/SieveWorker.java | 87 ++++++++++++++++++++++ 2 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SieveWorker.java diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SieveFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SieveFacade.java index 7737841..8bfbeaf 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SieveFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SieveFacade.java @@ -21,6 +21,8 @@ import com.lyms.platform.operate.web.request.SieveAddRequest; import com.lyms.platform.operate.web.result.SieveDetailResult; import com.lyms.platform.operate.web.result.SieveListResult; import com.lyms.platform.operate.web.result.SieveResult; +import com.lyms.platform.operate.web.worker.SieveWorker; +import com.lyms.platform.operate.web.worker.WorkHR; import com.lyms.platform.permission.model.Organization; import com.lyms.platform.permission.service.OrganizationService; import com.lyms.platform.pojo.*; @@ -29,12 +31,16 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.Sort; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.util.*; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; /** * 产筛门面 @@ -57,6 +63,10 @@ public class SieveFacade { @Autowired private PatientsService patientsService; + @Autowired + @Qualifier("commonThreadPool") + private ThreadPoolTaskExecutor commonThreadPool; + /** * 增加一条产筛结果记录 * @@ -214,6 +224,29 @@ public class SieveFacade { //查询产筛list List list = sieveService.queryList1(sieveQuery, "order"); List data = new ArrayList<>(); + + + int batchSize = 4; + int end = 0; + List listFuture = new ArrayList<>(); + for (int i = 0; i < list.size(); i += batchSize) { + end = (end + batchSize); + if (end > list.size()) { + end = list.size(); + } + listFuture.add(commonThreadPool.submit(new SieveWorker(hospitalId, list.subList(i, end), antenatalExaminationService, patientsService))); + } + for (Future f : listFuture) { + try { + data.addAll((List) f.get(30, TimeUnit.SECONDS)); + } catch (Exception e) { + ExceptionUtils.catchException(e, "cqSieve list get result Future error."); + } + } + + + +/* if (CollectionUtils.isNotEmpty(list)) { for (SieveModel sieveModel : list) { SieveListResult sieveListResult = new SieveListResult(); @@ -252,7 +285,7 @@ public class SieveFacade { } data.add(sieveListResult); } - } + }*/ return new BaseListResponse().setData(data).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(sieveQuery.getPageInfo()); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SieveWorker.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SieveWorker.java new file mode 100644 index 0000000..fdfc2e2 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SieveWorker.java @@ -0,0 +1,87 @@ +package com.lyms.platform.operate.web.worker; + +import com.lyms.platform.biz.service.AntenatalExaminationService; +import com.lyms.platform.biz.service.PatientsService; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.operate.web.result.SieveListResult; +import com.lyms.platform.pojo.AntExChuModel; +import com.lyms.platform.pojo.AntenatalExaminationModel; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.pojo.SieveModel; +import com.lyms.platform.query.AntExChuQuery; +import com.lyms.platform.query.AntExQuery; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.math.NumberUtils; +import org.springframework.data.domain.Sort; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Callable; + +/** + * 产筛列表处理 + *

+ * Created by Administrator on 2017/3/10 0010. + */ +public class SieveWorker implements Callable> { + + private String hospitalId; + + private List list; + + private AntenatalExaminationService antService; + + private PatientsService patientsService; + + public SieveWorker(String hospitalId, List list, AntenatalExaminationService antService, PatientsService patientsService) { + this.hospitalId = hospitalId; + this.list = list; + this.antService = antService; + this.patientsService = patientsService; + } + + @Override + public List call() throws Exception { + List results = new ArrayList<>(); + for (SieveModel sieveModel : list) { + SieveListResult sieveListResult = new SieveListResult(); + AntExQuery antExQuery = new AntExQuery(); + antExQuery.setYn(YnEnums.YES.getId()); + antExQuery.setHospitalId(hospitalId); + antExQuery.setParentId(sieveModel.getParentId()); + List list1 = antService.queryAntenatalExamination(antExQuery.convertToQuery().addOrder(Sort.Direction.DESC, "created")); + if (CollectionUtils.isNotEmpty(list1)) { + if (StringUtils.isNotEmpty(list1.get(0).getTireNumber())) { + sieveModel.setTireNumber(NumberUtils.toInt(list1.get(0).getTireNumber())); + } + } else { + AntExChuQuery antExChuQuery = new AntExChuQuery(); + antExChuQuery.setYn(YnEnums.YES.getId()); + antExChuQuery.setParentId(sieveModel.getParentId()); + antExChuQuery.setHospitalId(hospitalId); + List antExChuModels = antService.queryAntExChu(antExChuQuery); + if (CollectionUtils.isNotEmpty(antExChuModels)) { + if (StringUtils.isNotEmpty(antExChuModels.get(0).getTireNumber())) { + sieveModel.setTireNumber(NumberUtils.toInt(antExChuModels.get(0).getTireNumber())); + } + } + } + + sieveListResult.convertToResult(sieveModel); + Patients patients = patientsService.findOnePatientById(sieveModel.getParentId()); + if (null != patients) { + sieveListResult.setIsGravida((patients.getType() == 3 && patients.getFmDate() != null) ? "0" : "1"); + if (null != patients.getDueStatus() && 1 == patients.getDueStatus()) + sieveListResult.setcDueWeek("终止妊娠"); + else if (patients.getType() == 3) { + sieveListResult.setcDueWeek("已分娩"); + } + sieveListResult.setAge(DateUtil.getAge(patients.getBirth()) + "岁"); + } + results.add(sieveListResult); + } + return results; + } +} -- 1.8.3.1