From 2ec533775c6ab70d7321f62eea4b7740a6c847ca Mon Sep 17 00:00:00 2001 From: gengxiaokai Date: Wed, 19 Sep 2018 12:08:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=AD=9B=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/web/facade/BabySieveFacede.java | 38 ++++- .../operate/web/utils/BabySieveHandleTask.java | 163 +++++++++++++++++++++ 2 files changed, 199 insertions(+), 2 deletions(-) create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabySieveHandleTask.java diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabySieveFacede.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabySieveFacede.java index e427b86..3f86b6b 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabySieveFacede.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabySieveFacede.java @@ -17,7 +17,10 @@ import com.lyms.platform.common.utils.JsonUtil; import com.lyms.platform.operate.web.request.BabyScreenAddRequest; import com.lyms.platform.operate.web.request.BabySieveAddRequest; import com.lyms.platform.operate.web.result.*; +import com.lyms.platform.operate.web.utils.BabySieveHandleTask; import com.lyms.platform.operate.web.utils.CommonsHelper; +import com.lyms.platform.operate.web.utils.LisHandleTask; +import com.lyms.platform.permission.model.LisReportModel; import com.lyms.platform.permission.model.Organization; import com.lyms.platform.permission.service.OrganizationService; import com.lyms.platform.pojo.BabyModel; @@ -32,7 +35,9 @@ import com.mchange.v1.util.ListUtils; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; 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 java.text.ParseException; @@ -41,6 +46,8 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.concurrent.Callable; +import java.util.concurrent.Future; /** * 新生儿筛查 @@ -50,6 +57,9 @@ import java.util.Map; public class BabySieveFacede { @Autowired + @Qualifier("commonThreadPool") + private ThreadPoolTaskExecutor commonThreadPool; + @Autowired private BasicConfigService basicConfigService; @Autowired private AutoMatchFacade autoMatchFacade; @@ -302,7 +312,31 @@ public class BabySieveFacede { return babySieveManagerResult; } - List parentIdList = new ArrayList<>(); + List babySieveManagerLiat = new ArrayList(); + List futures = new ArrayList<>(); + int batchSize = 10; + int end = 0; + for (int i = 0; i < babyModelList.size(); i += batchSize) { + end = (end + batchSize); + if (end > babyModelList.size()) { + end = babyModelList.size(); + } + final List models = babyModelList.subList(i, end); + Callable c = new BabySieveHandleTask(models,matDeliverService,babySieveService,patientsService,antenatalExaminationFacade,basicConfigService); + Future f = commonThreadPool.submit(c); + futures.add(f); + } + if (CollectionUtils.isNotEmpty(futures)) { + for (Future f : futures) { + try { + babySieveManagerLiat.addAll((List) f.get()); + } catch (Exception e) { + ExceptionUtils.catchException(e, "getBabySieve List error."); + } + } + } + + /*List parentIdList = new ArrayList<>(); for (BabyModel babyModel : babyModelList) { parentIdList.add(babyModel.getParentId()); } @@ -400,7 +434,7 @@ public class BabySieveFacede { babySieveManagerLiat.add(babySieveManager); } } - } + }*/ babySieveManagerResult.setData(babySieveManagerLiat); babySieveManagerResult.setPageInfo(babyModelQuery.getPageInfo()); babySieveManagerResult.setErrorcode(ErrorCodeConstants.SUCCESS); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabySieveHandleTask.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabySieveHandleTask.java new file mode 100644 index 0000000..78df813 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabySieveHandleTask.java @@ -0,0 +1,163 @@ +package com.lyms.platform.operate.web.utils; + +import com.lyms.platform.biz.service.BabySieveService; +import com.lyms.platform.biz.service.BasicConfigService; +import com.lyms.platform.biz.service.MatDeliverService; +import com.lyms.platform.biz.service.PatientsService; +import com.lyms.platform.common.enums.SexEnum; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.ExceptionUtils; +import com.lyms.platform.operate.web.facade.AntenatalExaminationFacade; +import com.lyms.platform.operate.web.result.BabySieveManager; +import com.lyms.platform.operate.web.result.HighScoreResult; +import com.lyms.platform.pojo.BabyModel; +import com.lyms.platform.pojo.BabySieveModel; +import com.lyms.platform.pojo.MaternalDeliverModel; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.query.MatDeliverQuery; +import org.apache.commons.collections.*; +import org.apache.commons.lang.StringUtils; + + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.concurrent.Callable; + +/** + * Created by Administrator on 2018/9/19. + */ +public class BabySieveHandleTask implements Callable { + + private List babyModelList; + private MatDeliverService matDeliverService; + private BabySieveService babySieveService; + private PatientsService patientsService; + private AntenatalExaminationFacade antenatalExaminationFacade; + private BasicConfigService basicConfigService; + + public BabySieveHandleTask(List babyModelList, + MatDeliverService matDeliverService, + BabySieveService babySieveService, + PatientsService patientsService, + AntenatalExaminationFacade antenatalExaminationFacade, + BasicConfigService basicConfigService){ + this.babyModelList=babyModelList; + this.matDeliverService=matDeliverService; + this.babySieveService=babySieveService; + this.patientsService=patientsService; + this.antenatalExaminationFacade=antenatalExaminationFacade; + this.basicConfigService=basicConfigService; + + } + + + @Override + public List call() throws Exception { + + List parentIdList = new ArrayList<>(); + for (BabyModel babyModel : babyModelList) { + parentIdList.add(babyModel.getParentId()); + } + MatDeliverQuery matDeliverQuery = new MatDeliverQuery(); + matDeliverQuery.setYn(YnEnums.YES.getId()); + matDeliverQuery.setParentIdList(parentIdList); + List maternalDeliverModelList = matDeliverService.query(matDeliverQuery); + List babySieveManagerLiat = new ArrayList(); + for(MaternalDeliverModel maternalDeliverModel : maternalDeliverModelList){ + for(BabyModel babyModel : babyModelList){ + if(maternalDeliverModel.getParentId().equals(babyModel.getParentId())){ + BabySieveModel babySieveModel = new BabySieveModel(); + babySieveModel = babySieveService.getBabySieveQueryBybabyId(babyModel.getId()); + BabySieveManager babySieveManager = new BabySieveManager(); + babySieveManager.setMatdeliverId(maternalDeliverModel.getId()); + if(babySieveModel != null){ + babySieveManager.setId(babySieveModel.getId()); + } + //获取母亲基本信息 + Patients patients = patientsService.findOnePatientById(babyModel.getParentId()); + //获取高危因素,高危评分 + HighScoreResult highScoreResult = antenatalExaminationFacade.findLastRisk(patients.getPid(), false); + babySieveManager.setRiskFactor(highScoreResult.getHighRisk()); + babySieveManager.setRiskScore(highScoreResult.getScoreStr()); + if(null != patients.getDueDate()){ + babySieveManager.setyChanQi(DateUtil.getyyyy_MM_dd(patients.getDueDate())); + } + //母亲居住地址 + String jzSheng = CommonsHelper.getName1(patients.getProvinceRegisterId(), basicConfigService); + String jzShi = CommonsHelper.getName1(patients.getCityRegisterId(), basicConfigService); + String jzXian = CommonsHelper.getName1(patients.getAreaRegisterId(), basicConfigService); + String jzXiang = CommonsHelper.getName1(patients.getStreetRegisterId(), basicConfigService); + String jQquan = jzSheng+jzShi+jzXian+jzXiang; + babySieveManager.setAdress(jQquan); + babySieveManager.setPatientId(patients.getId()); + babySieveManager.setCardNo(patients.getCardNo()); + babySieveManager.setPhone(patients.getPhone()); + babySieveManager.setBabyId(babyModel.getId()); + if(patients.getBirth() != null){ + babySieveManager.setAge(DateUtil.getAge(patients.getBirth())); + } + List babies = maternalDeliverModel.getBaby(); + if (org.apache.commons.collections.CollectionUtils.isNotEmpty(babies)) { + for (MaternalDeliverModel.Baby baby : babies) { + if(baby.getId() != null && baby.getId().equals(babyModel.getId())){ + if(maternalDeliverModel.getDueWeek() != null){ + babySieveManager.setDueWeek(maternalDeliverModel.getDueWeek()); + } + String time = baby.getDueTime(); + if(StringUtils.isNotEmpty(time)){ + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + try { + Date date = format.parse(time); + babySieveManager.setBirthHM(new SimpleDateFormat("HH:mm").format(date)); + babySieveManager.setBirthYMD(DateUtil.getyyyy_MM_dd(date)); + } catch (ParseException e) { + ExceptionUtils.catchException(e, "新生儿管理娩出时间格式异常" + time); + } + }else{ + babySieveManager.setBirthHM(new SimpleDateFormat("HH:mm").format(babyModel.getBirth())); + babySieveManager.setBirthYMD(DateUtil.getyyyy_MM_dd(babyModel.getBirth())); + } + break; + } + } + }else{ + babySieveManager.setBirthHM(new SimpleDateFormat("HH:mm").format(babyModel.getBirth())); + babySieveManager.setBirthYMD(DateUtil.getyyyy_MM_dd(babyModel.getBirth())); + } + babySieveManager.setBabyName(babyModel.getName()); + for (SexEnum sexEnum : SexEnum.values()) { + if (sexEnum.getId().equals(babyModel.getSex())) { + babySieveManager.setSex(sexEnum.getText()); + break; + } + } + babySieveManager.setBirthDays(DateUtil.getDays(babyModel.getBirth(), new Date())); + Integer highRisk = babyModel.getHighRisk(); + if (new Integer(0).equals(highRisk)) { + babySieveManager.setHighRisk("健康"); + } + if (new Integer(1).equals(highRisk)) { + babySieveManager.setHighRisk("高危"); + } + String dueType = babySieveManager.getDueType(); + if ("1".equals(dueType)) { + babySieveManager.setDueType("顺产"); + } + if ("2".equals(dueType)) { + babySieveManager.setDueType("剖宫产"); + } + babySieveManager.setSieveStatus(StringUtils.isEmpty(babyModel.getSieveStatus()) ? "0" : babyModel.getSieveStatus()); + babySieveManager.setmName(babyModel.getMname()); + + babySieveManagerLiat.add(babySieveManager); + } + } + } + + return babySieveManagerLiat; + } +} -- 1.8.3.1