Commit 2ec533775c6ab70d7321f62eea4b7740a6c847ca

Authored by gengxiaokai
1 parent 6200f9ddd6

新筛修改

Showing 2 changed files with 199 additions and 2 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabySieveFacede.java View file @ 2ec5337
... ... @@ -17,7 +17,10 @@
17 17 import com.lyms.platform.operate.web.request.BabyScreenAddRequest;
18 18 import com.lyms.platform.operate.web.request.BabySieveAddRequest;
19 19 import com.lyms.platform.operate.web.result.*;
  20 +import com.lyms.platform.operate.web.utils.BabySieveHandleTask;
20 21 import com.lyms.platform.operate.web.utils.CommonsHelper;
  22 +import com.lyms.platform.operate.web.utils.LisHandleTask;
  23 +import com.lyms.platform.permission.model.LisReportModel;
21 24 import com.lyms.platform.permission.model.Organization;
22 25 import com.lyms.platform.permission.service.OrganizationService;
23 26 import com.lyms.platform.pojo.BabyModel;
24 27  
... ... @@ -32,7 +35,9 @@
32 35 import org.apache.commons.collections.CollectionUtils;
33 36 import org.apache.commons.lang.StringUtils;
34 37 import org.springframework.beans.factory.annotation.Autowired;
  38 +import org.springframework.beans.factory.annotation.Qualifier;
35 39 import org.springframework.data.domain.Sort;
  40 +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
36 41 import org.springframework.stereotype.Component;
37 42  
38 43 import java.text.ParseException;
... ... @@ -41,6 +46,8 @@
41 46 import java.util.Date;
42 47 import java.util.List;
43 48 import java.util.Map;
  49 +import java.util.concurrent.Callable;
  50 +import java.util.concurrent.Future;
44 51  
45 52 /**
46 53 * 新生儿筛查
... ... @@ -50,6 +57,9 @@
50 57 public class BabySieveFacede {
51 58  
52 59 @Autowired
  60 + @Qualifier("commonThreadPool")
  61 + private ThreadPoolTaskExecutor commonThreadPool;
  62 + @Autowired
53 63 private BasicConfigService basicConfigService;
54 64 @Autowired
55 65 private AutoMatchFacade autoMatchFacade;
... ... @@ -302,7 +312,31 @@
302 312 return babySieveManagerResult;
303 313 }
304 314  
305   - List<String> parentIdList = new ArrayList<>();
  315 + List<BabySieveManager> babySieveManagerLiat = new ArrayList<BabySieveManager>();
  316 + List<Future> futures = new ArrayList<>();
  317 + int batchSize = 10;
  318 + int end = 0;
  319 + for (int i = 0; i < babyModelList.size(); i += batchSize) {
  320 + end = (end + batchSize);
  321 + if (end > babyModelList.size()) {
  322 + end = babyModelList.size();
  323 + }
  324 + final List<BabyModel> models = babyModelList.subList(i, end);
  325 + Callable c = new BabySieveHandleTask(models,matDeliverService,babySieveService,patientsService,antenatalExaminationFacade,basicConfigService);
  326 + Future f = commonThreadPool.submit(c);
  327 + futures.add(f);
  328 + }
  329 + if (CollectionUtils.isNotEmpty(futures)) {
  330 + for (Future f : futures) {
  331 + try {
  332 + babySieveManagerLiat.addAll((List<BabySieveManager>) f.get());
  333 + } catch (Exception e) {
  334 + ExceptionUtils.catchException(e, "getBabySieve List error.");
  335 + }
  336 + }
  337 + }
  338 +
  339 + /*List<String> parentIdList = new ArrayList<>();
306 340 for (BabyModel babyModel : babyModelList) {
307 341 parentIdList.add(babyModel.getParentId());
308 342 }
... ... @@ -400,7 +434,7 @@
400 434 babySieveManagerLiat.add(babySieveManager);
401 435 }
402 436 }
403   - }
  437 + }*/
404 438 babySieveManagerResult.setData(babySieveManagerLiat);
405 439 babySieveManagerResult.setPageInfo(babyModelQuery.getPageInfo());
406 440 babySieveManagerResult.setErrorcode(ErrorCodeConstants.SUCCESS);
platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabySieveHandleTask.java View file @ 2ec5337
  1 +package com.lyms.platform.operate.web.utils;
  2 +
  3 +import com.lyms.platform.biz.service.BabySieveService;
  4 +import com.lyms.platform.biz.service.BasicConfigService;
  5 +import com.lyms.platform.biz.service.MatDeliverService;
  6 +import com.lyms.platform.biz.service.PatientsService;
  7 +import com.lyms.platform.common.enums.SexEnum;
  8 +import com.lyms.platform.common.enums.YnEnums;
  9 +import com.lyms.platform.common.utils.DateUtil;
  10 +import com.lyms.platform.common.utils.ExceptionUtils;
  11 +import com.lyms.platform.operate.web.facade.AntenatalExaminationFacade;
  12 +import com.lyms.platform.operate.web.result.BabySieveManager;
  13 +import com.lyms.platform.operate.web.result.HighScoreResult;
  14 +import com.lyms.platform.pojo.BabyModel;
  15 +import com.lyms.platform.pojo.BabySieveModel;
  16 +import com.lyms.platform.pojo.MaternalDeliverModel;
  17 +import com.lyms.platform.pojo.Patients;
  18 +import com.lyms.platform.query.MatDeliverQuery;
  19 +import org.apache.commons.collections.*;
  20 +import org.apache.commons.lang.StringUtils;
  21 +
  22 +
  23 +import java.text.ParseException;
  24 +import java.text.SimpleDateFormat;
  25 +import java.util.ArrayList;
  26 +import java.util.Date;
  27 +import java.util.List;
  28 +import java.util.concurrent.Callable;
  29 +
  30 +/**
  31 + * Created by Administrator on 2018/9/19.
  32 + */
  33 +public class BabySieveHandleTask implements Callable {
  34 +
  35 + private List<BabyModel> babyModelList;
  36 + private MatDeliverService matDeliverService;
  37 + private BabySieveService babySieveService;
  38 + private PatientsService patientsService;
  39 + private AntenatalExaminationFacade antenatalExaminationFacade;
  40 + private BasicConfigService basicConfigService;
  41 +
  42 + public BabySieveHandleTask(List<BabyModel> babyModelList,
  43 + MatDeliverService matDeliverService,
  44 + BabySieveService babySieveService,
  45 + PatientsService patientsService,
  46 + AntenatalExaminationFacade antenatalExaminationFacade,
  47 + BasicConfigService basicConfigService){
  48 + this.babyModelList=babyModelList;
  49 + this.matDeliverService=matDeliverService;
  50 + this.babySieveService=babySieveService;
  51 + this.patientsService=patientsService;
  52 + this.antenatalExaminationFacade=antenatalExaminationFacade;
  53 + this.basicConfigService=basicConfigService;
  54 +
  55 + }
  56 +
  57 +
  58 + @Override
  59 + public List<BabySieveManager> call() throws Exception {
  60 +
  61 + List<String> parentIdList = new ArrayList<>();
  62 + for (BabyModel babyModel : babyModelList) {
  63 + parentIdList.add(babyModel.getParentId());
  64 + }
  65 + MatDeliverQuery matDeliverQuery = new MatDeliverQuery();
  66 + matDeliverQuery.setYn(YnEnums.YES.getId());
  67 + matDeliverQuery.setParentIdList(parentIdList);
  68 + List<MaternalDeliverModel> maternalDeliverModelList = matDeliverService.query(matDeliverQuery);
  69 + List<BabySieveManager> babySieveManagerLiat = new ArrayList<BabySieveManager>();
  70 + for(MaternalDeliverModel maternalDeliverModel : maternalDeliverModelList){
  71 + for(BabyModel babyModel : babyModelList){
  72 + if(maternalDeliverModel.getParentId().equals(babyModel.getParentId())){
  73 + BabySieveModel babySieveModel = new BabySieveModel();
  74 + babySieveModel = babySieveService.getBabySieveQueryBybabyId(babyModel.getId());
  75 + BabySieveManager babySieveManager = new BabySieveManager();
  76 + babySieveManager.setMatdeliverId(maternalDeliverModel.getId());
  77 + if(babySieveModel != null){
  78 + babySieveManager.setId(babySieveModel.getId());
  79 + }
  80 + //获取母亲基本信息
  81 + Patients patients = patientsService.findOnePatientById(babyModel.getParentId());
  82 + //获取高危因素,高危评分
  83 + HighScoreResult highScoreResult = antenatalExaminationFacade.findLastRisk(patients.getPid(), false);
  84 + babySieveManager.setRiskFactor(highScoreResult.getHighRisk());
  85 + babySieveManager.setRiskScore(highScoreResult.getScoreStr());
  86 + if(null != patients.getDueDate()){
  87 + babySieveManager.setyChanQi(DateUtil.getyyyy_MM_dd(patients.getDueDate()));
  88 + }
  89 + //母亲居住地址
  90 + String jzSheng = CommonsHelper.getName1(patients.getProvinceRegisterId(), basicConfigService);
  91 + String jzShi = CommonsHelper.getName1(patients.getCityRegisterId(), basicConfigService);
  92 + String jzXian = CommonsHelper.getName1(patients.getAreaRegisterId(), basicConfigService);
  93 + String jzXiang = CommonsHelper.getName1(patients.getStreetRegisterId(), basicConfigService);
  94 + String jQquan = jzSheng+jzShi+jzXian+jzXiang;
  95 + babySieveManager.setAdress(jQquan);
  96 + babySieveManager.setPatientId(patients.getId());
  97 + babySieveManager.setCardNo(patients.getCardNo());
  98 + babySieveManager.setPhone(patients.getPhone());
  99 + babySieveManager.setBabyId(babyModel.getId());
  100 + if(patients.getBirth() != null){
  101 + babySieveManager.setAge(DateUtil.getAge(patients.getBirth()));
  102 + }
  103 + List<MaternalDeliverModel.Baby> babies = maternalDeliverModel.getBaby();
  104 + if (org.apache.commons.collections.CollectionUtils.isNotEmpty(babies)) {
  105 + for (MaternalDeliverModel.Baby baby : babies) {
  106 + if(baby.getId() != null && baby.getId().equals(babyModel.getId())){
  107 + if(maternalDeliverModel.getDueWeek() != null){
  108 + babySieveManager.setDueWeek(maternalDeliverModel.getDueWeek());
  109 + }
  110 + String time = baby.getDueTime();
  111 + if(StringUtils.isNotEmpty(time)){
  112 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  113 + try {
  114 + Date date = format.parse(time);
  115 + babySieveManager.setBirthHM(new SimpleDateFormat("HH:mm").format(date));
  116 + babySieveManager.setBirthYMD(DateUtil.getyyyy_MM_dd(date));
  117 + } catch (ParseException e) {
  118 + ExceptionUtils.catchException(e, "新生儿管理娩出时间格式异常" + time);
  119 + }
  120 + }else{
  121 + babySieveManager.setBirthHM(new SimpleDateFormat("HH:mm").format(babyModel.getBirth()));
  122 + babySieveManager.setBirthYMD(DateUtil.getyyyy_MM_dd(babyModel.getBirth()));
  123 + }
  124 + break;
  125 + }
  126 + }
  127 + }else{
  128 + babySieveManager.setBirthHM(new SimpleDateFormat("HH:mm").format(babyModel.getBirth()));
  129 + babySieveManager.setBirthYMD(DateUtil.getyyyy_MM_dd(babyModel.getBirth()));
  130 + }
  131 + babySieveManager.setBabyName(babyModel.getName());
  132 + for (SexEnum sexEnum : SexEnum.values()) {
  133 + if (sexEnum.getId().equals(babyModel.getSex())) {
  134 + babySieveManager.setSex(sexEnum.getText());
  135 + break;
  136 + }
  137 + }
  138 + babySieveManager.setBirthDays(DateUtil.getDays(babyModel.getBirth(), new Date()));
  139 + Integer highRisk = babyModel.getHighRisk();
  140 + if (new Integer(0).equals(highRisk)) {
  141 + babySieveManager.setHighRisk("健康");
  142 + }
  143 + if (new Integer(1).equals(highRisk)) {
  144 + babySieveManager.setHighRisk("高危");
  145 + }
  146 + String dueType = babySieveManager.getDueType();
  147 + if ("1".equals(dueType)) {
  148 + babySieveManager.setDueType("顺产");
  149 + }
  150 + if ("2".equals(dueType)) {
  151 + babySieveManager.setDueType("剖宫产");
  152 + }
  153 + babySieveManager.setSieveStatus(StringUtils.isEmpty(babyModel.getSieveStatus()) ? "0" : babyModel.getSieveStatus());
  154 + babySieveManager.setmName(babyModel.getMname());
  155 +
  156 + babySieveManagerLiat.add(babySieveManager);
  157 + }
  158 + }
  159 + }
  160 +
  161 + return babySieveManagerLiat;
  162 + }
  163 +}