Commit 94963ae0fa9cdbd8b01c5a9c76a740d990d6384f
1 parent
87186c8f55
Exists in
master
and in
2 other branches
分娩作废产检劵
Showing 2 changed files with 114 additions and 47 deletions
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntExRecordFacade.java
View file @
94963ae
| ... | ... | @@ -18,6 +18,8 @@ |
| 18 | 18 | import com.lyms.platform.operate.web.utils.FunvCommonUtil; |
| 19 | 19 | import com.lyms.platform.operate.web.utils.UnitConstants; |
| 20 | 20 | import com.lyms.platform.operate.web.utils.UnitUtils; |
| 21 | +import com.lyms.platform.operate.web.worker.AntExRecordWorker; | |
| 22 | +import com.lyms.platform.operate.web.worker.WorkHR; | |
| 21 | 23 | import com.lyms.platform.permission.model.Organization; |
| 22 | 24 | import com.lyms.platform.permission.model.OrganizationQuery; |
| 23 | 25 | import com.lyms.platform.permission.model.Users; |
| 24 | 26 | |
| ... | ... | @@ -29,12 +31,16 @@ |
| 29 | 31 | import org.apache.commons.collections.MapUtils; |
| 30 | 32 | import org.apache.commons.lang.math.NumberUtils; |
| 31 | 33 | import org.springframework.beans.factory.annotation.Autowired; |
| 34 | +import org.springframework.beans.factory.annotation.Qualifier; | |
| 35 | +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; | |
| 32 | 36 | import org.springframework.stereotype.Component; |
| 33 | 37 | |
| 34 | 38 | import javax.servlet.http.HttpServletResponse; |
| 35 | 39 | import java.io.IOException; |
| 36 | 40 | import java.io.OutputStream; |
| 37 | 41 | import java.util.*; |
| 42 | +import java.util.concurrent.Future; | |
| 43 | +import java.util.concurrent.TimeUnit; | |
| 38 | 44 | |
| 39 | 45 | /** |
| 40 | 46 | * 产检管理 |
| ... | ... | @@ -61,6 +67,9 @@ |
| 61 | 67 | private OrganizationService organizationService; |
| 62 | 68 | @Autowired |
| 63 | 69 | private DataPermissionService dataPermissionService; |
| 70 | + @Autowired | |
| 71 | + @Qualifier("commonThreadPool") | |
| 72 | + private ThreadPoolTaskExecutor commonThreadPool; | |
| 64 | 73 | |
| 65 | 74 | public void syncAntRecordToList(String hospitalId) { |
| 66 | 75 | recordService.syncAntRecordToList(hospitalId); |
| ... | ... | @@ -203,6 +212,30 @@ |
| 203 | 212 | return antExRecordQuery; |
| 204 | 213 | } |
| 205 | 214 | |
| 215 | + | |
| 216 | + private List convertToHighRisk(List<Patients> patientses, Integer userId, String hospital) { | |
| 217 | + List data = new ArrayList<>(); | |
| 218 | + int batchSize = 4; | |
| 219 | + int end = 0; | |
| 220 | + List<Future> listFuture = new ArrayList<>(); | |
| 221 | + for (int i = 0; i < patientses.size(); i += batchSize) { | |
| 222 | + end = (end + batchSize); | |
| 223 | + if (end > patientses.size()) { | |
| 224 | + end = patientses.size(); | |
| 225 | + } | |
| 226 | + listFuture.add(commonThreadPool.submit(new WorkHR(patientses.subList(i, end), usersService, hospital, basicConfigService, antExService, patientsService, organizationService))); | |
| 227 | + } | |
| 228 | + for (Future f : listFuture) { | |
| 229 | + try { | |
| 230 | + data.addAll((List) f.get(30, TimeUnit.SECONDS)); | |
| 231 | + } catch (Exception e) { | |
| 232 | + ExceptionUtils.catchException(e, "convertToHighRisk get result Future error."); | |
| 233 | + } | |
| 234 | + } | |
| 235 | + return data; | |
| 236 | + } | |
| 237 | + | |
| 238 | + | |
| 206 | 239 | /** |
| 207 | 240 | * 产检管理 |
| 208 | 241 | * |
| ... | ... | @@ -214,8 +247,7 @@ |
| 214 | 247 | List<AntExManagerResult> data = new ArrayList<>(); |
| 215 | 248 | List<AntExRecordModel> antExRecordModelList = recordService.queryAntExRecords(antExRecordQuery); |
| 216 | 249 | if (CollectionUtils.isNotEmpty(antExRecordModelList)) { |
| 217 | - for (AntExRecordModel e : antExRecordModelList) { | |
| 218 | - AntExManagerResult antExManagerResult = new AntExManagerResult(); | |
| 250 | + /*AntExManagerResult antExManagerResult = new AntExManagerResult(); | |
| 219 | 251 | antExManagerResult.convertToResult(e); |
| 220 | 252 | if (isRegion) { |
| 221 | 253 | //产检医院 |
| 222 | 254 | |
| 223 | 255 | |
| ... | ... | @@ -270,10 +302,26 @@ |
| 270 | 302 | antExManagerResult.setChTimes(dichi); |
| 271 | 303 | //高危因素 |
| 272 | 304 | antExManagerResult.setrLevel(commonService.findRiskLevel(e.gethLevel())); |
| 273 | - antExManagerResult.setRiskFactor(commonService.resloveFactor(e.gethRisk())); | |
| 305 | + antExManagerResult.setRiskFactor(commonService.resloveFactor(e.gethRisk()));*/ | |
| 274 | 306 | |
| 275 | - data.add(antExManagerResult); | |
| 307 | + | |
| 308 | + int batchSize = 4; | |
| 309 | + int end = 0; | |
| 310 | + List<Future> listFuture = new ArrayList<>(); | |
| 311 | + for (int i = 0; i < antExRecordModelList.size(); i += batchSize) { | |
| 312 | + end = (end + batchSize); | |
| 313 | + if (end > antExRecordModelList.size()) { | |
| 314 | + end = antExRecordModelList.size(); | |
| 315 | + } | |
| 316 | + listFuture.add(commonThreadPool.submit(new AntExRecordWorker(antExRecordModelList.subList(i, end), isRegion, organizationService, usersService, recordService, commonService, hospital, basicConfigService))); | |
| 276 | 317 | } |
| 318 | + for (Future f : listFuture) { | |
| 319 | + try { | |
| 320 | + data.addAll((List) f.get(30, TimeUnit.SECONDS)); | |
| 321 | + } catch (Exception e) { | |
| 322 | + ExceptionUtils.catchException(e, "antexrecord findList get result future error."); | |
| 323 | + } | |
| 324 | + } | |
| 277 | 325 | } |
| 278 | 326 | return new BaseListResponse().setData(data).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(antExRecordQuery.getPageInfo()); |
| 279 | 327 | } |
| 280 | 328 | |
| 281 | 329 | |
| 282 | 330 | |
| 283 | 331 | |
| 284 | 332 | |
| 285 | 333 | |
| 286 | 334 | |
| 287 | 335 | |
| 288 | 336 | |
| 289 | 337 | |
| ... | ... | @@ -553,62 +601,62 @@ |
| 553 | 601 | |
| 554 | 602 | |
| 555 | 603 | //查询复诊接口 |
| 556 | - public BaseObjectResponse findAntenatalExamination(String id){ | |
| 604 | + public BaseObjectResponse findAntenatalExamination(String id) { | |
| 557 | 605 | |
| 558 | 606 | BaseObjectResponse br = new BaseObjectResponse(); |
| 559 | - if (org.apache.commons.lang.StringUtils.isEmpty(id)){ | |
| 607 | + if (org.apache.commons.lang.StringUtils.isEmpty(id)) { | |
| 560 | 608 | br.setErrorcode(ErrorCodeConstants.PARAMETER_ERROR); |
| 561 | 609 | br.setErrormsg("id为空"); |
| 562 | 610 | return br; |
| 563 | 611 | } |
| 564 | 612 | |
| 565 | 613 | AntenatalExaminationModel data = antExService.findOneById(id); |
| 566 | - if (data==null || data.getYn()==YnEnums.NO.getId()){ | |
| 614 | + if (data == null || data.getYn() == YnEnums.NO.getId()) { | |
| 567 | 615 | br.setErrorcode(ErrorCodeConstants.NO_DATA); |
| 568 | 616 | br.setErrormsg("没有查询到数据"); |
| 569 | 617 | return br; |
| 570 | 618 | } |
| 571 | 619 | |
| 572 | 620 | |
| 573 | - if (org.apache.commons.lang.StringUtils.isEmpty(data.getParentId())){ | |
| 621 | + if (org.apache.commons.lang.StringUtils.isEmpty(data.getParentId())) { | |
| 574 | 622 | br.setErrorcode(ErrorCodeConstants.PARAMETER_ERROR); |
| 575 | 623 | br.setErrormsg("数据异常"); |
| 576 | 624 | return br; |
| 577 | 625 | } |
| 578 | 626 | |
| 579 | 627 | Patients patients = patientsService.findOnePatientById(data.getParentId()); |
| 580 | - if (patients==null || patients.getYn()==YnEnums.NO.getId()){ | |
| 628 | + if (patients == null || patients.getYn() == YnEnums.NO.getId()) { | |
| 581 | 629 | br.setErrorcode(ErrorCodeConstants.PARAMETER_ERROR); |
| 582 | 630 | br.setErrormsg("孕妇信息不存在"); |
| 583 | 631 | return br; |
| 584 | 632 | } |
| 585 | 633 | |
| 586 | - Map<String,Object> map= new HashMap<>(); | |
| 634 | + Map<String, Object> map = new HashMap<>(); | |
| 587 | 635 | /* 基本信息 */ |
| 588 | 636 | //孕妇基本信息 |
| 589 | - map.put("id",data.getId()); | |
| 590 | - map.put("username",patients.getUsername()); | |
| 591 | - map.put("birth",DateUtil.getyyyy_MM_dd(patients.getBirth())); | |
| 592 | - map.put("age",DateUtil.getAge(patients.getBirth())); | |
| 593 | - map.put("phone",patients.getPhone()); | |
| 594 | - map.put("fmWeek",patients.getFmWeek()); | |
| 595 | - map.put("dueDate",DateUtil.getyyyy_MM_dd(patients.getDueDate())); | |
| 596 | - map.put("mremark",patients.getMremark()); | |
| 597 | - map.put("oRiskFactor",patients.getoRiskFactor()); | |
| 598 | - map.put("riskScore",patients.getRiskScore()); | |
| 637 | + map.put("id", data.getId()); | |
| 638 | + map.put("username", patients.getUsername()); | |
| 639 | + map.put("birth", DateUtil.getyyyy_MM_dd(patients.getBirth())); | |
| 640 | + map.put("age", DateUtil.getAge(patients.getBirth())); | |
| 641 | + map.put("phone", patients.getPhone()); | |
| 642 | + map.put("fmWeek", patients.getFmWeek()); | |
| 643 | + map.put("dueDate", DateUtil.getyyyy_MM_dd(patients.getDueDate())); | |
| 644 | + map.put("mremark", patients.getMremark()); | |
| 645 | + map.put("oRiskFactor", patients.getoRiskFactor()); | |
| 646 | + map.put("riskScore", patients.getRiskScore()); | |
| 599 | 647 | //产检基本信息 |
| 600 | - map.put("checkDate",DateUtil.getyyyy_MM_dd(data.getCheckDate())); | |
| 601 | - map.put("currentDueDate",data.getCurrentDueDate()); | |
| 648 | + map.put("checkDate", DateUtil.getyyyy_MM_dd(data.getCheckDate())); | |
| 649 | + map.put("currentDueDate", data.getCurrentDueDate()); | |
| 602 | 650 | map.put("checkDoctor", data.getCheckDoctor()); |
| 603 | 651 | String hospital = ""; |
| 604 | - if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getHospitalId())){ | |
| 652 | + if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getHospitalId())) { | |
| 605 | 653 | Organization organization = organizationService.getOrganization(Integer.parseInt(data.getHospitalId())); |
| 606 | - if (organization!=null && organization.getYn()==YnEnums.YES.getId()){ | |
| 654 | + if (organization != null && organization.getYn() == YnEnums.YES.getId()) { | |
| 607 | 655 | hospital = organization.getName(); |
| 608 | 656 | } |
| 609 | 657 | } |
| 610 | 658 | map.put("hospital", hospital); |
| 611 | - map.put("nextCheckTime",DateUtil.getyyyy_MM_dd(data.getNextCheckTime())); | |
| 659 | + map.put("nextCheckTime", DateUtil.getyyyy_MM_dd(data.getNextCheckTime())); | |
| 612 | 660 | map.put("cDueWeek", data.getcDueWeek()); |
| 613 | 661 | |
| 614 | 662 | /* 复诊信息 */ |
| 615 | 663 | |
| 616 | 664 | |
| 617 | 665 | |
| 618 | 666 | |
| 619 | 667 | |
| 620 | 668 | |
| 621 | 669 | |
| 622 | 670 | |
| 623 | 671 | |
| 624 | 672 | |
| 625 | 673 | |
| 626 | 674 | |
| ... | ... | @@ -626,72 +674,69 @@ |
| 626 | 674 | map.put("gongGao", UnitUtils.unitSplice(data.getGongGao(), UnitConstants.CM)); |
| 627 | 675 | map.put("abdominalCircumference", UnitUtils.unitSplice(data.getAbdominalCircumference(), UnitConstants.CM)); |
| 628 | 676 | String edema = ""; |
| 629 | - if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getEdema())){ | |
| 630 | - for (FuZhongEnums fuZhongEnums:FuZhongEnums.values()){ | |
| 631 | - if (data.getEdema().equals(fuZhongEnums.getId())){ | |
| 677 | + if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getEdema())) { | |
| 678 | + for (FuZhongEnums fuZhongEnums : FuZhongEnums.values()) { | |
| 679 | + if (data.getEdema().equals(fuZhongEnums.getId())) { | |
| 632 | 680 | edema = fuZhongEnums.getName(); |
| 633 | 681 | } |
| 634 | 682 | } |
| 635 | 683 | } |
| 636 | - map.put("edema",edema); | |
| 684 | + map.put("edema", edema); | |
| 637 | 685 | |
| 638 | 686 | map.put("tireNumber", TaiShuEnums.getTitle(data.getTireNumber())); |
| 639 | 687 | //胎儿情况 |
| 640 | 688 | List<Map> tireList = new ArrayList<>(); |
| 641 | - if (CollectionUtils.isNotEmpty(data.getTireData())){ | |
| 642 | - for (Object temp : data.getTireData()){ | |
| 643 | - Map<String,String> tire = JsonUtil.getMap(temp.toString()); | |
| 689 | + if (CollectionUtils.isNotEmpty(data.getTireData())) { | |
| 690 | + for (Object temp : data.getTireData()) { | |
| 691 | + Map<String, String> tire = JsonUtil.getMap(temp.toString()); | |
| 644 | 692 | String heartRate = tire.get("heartRate"); |
| 645 | 693 | String fetalPosition = tire.get("fetalPosition"); |
| 646 | 694 | String fetalPresentation = tire.get("fetalPresentation"); |
| 647 | 695 | String join = tire.get("join"); |
| 648 | 696 | |
| 649 | - Map<String,Object> tireMap = new HashMap<>(); | |
| 650 | - tireMap.put("heartRate",UnitUtils.unitSplice(heartRate, UnitConstants.CIFEN)); | |
| 697 | + Map<String, Object> tireMap = new HashMap<>(); | |
| 698 | + tireMap.put("heartRate", UnitUtils.unitSplice(heartRate, UnitConstants.CIFEN)); | |
| 651 | 699 | tireMap.put("fetalPosition", FetalPositionEnums.getTitle(fetalPosition)); |
| 652 | 700 | tireMap.put("fetalPresentation", FetalEnums.getTitle(fetalPresentation)); |
| 653 | 701 | tireMap.put("join", JoinEnums.getTitle(join)); |
| 654 | 702 | tireList.add(tireMap); |
| 655 | 703 | } |
| 656 | 704 | } |
| 657 | - map.put("tireData",tireList); | |
| 705 | + map.put("tireData", tireList); | |
| 658 | 706 | |
| 659 | 707 | /* 辅助信息 */ |
| 660 | 708 | map.put("hemoglobin", UnitUtils.unitSplice(data.getHemoglobin(), UnitConstants.GL)); |
| 661 | - map.put("urineProtein",data.getUrineProtein()); | |
| 709 | + map.put("urineProtein", data.getUrineProtein()); | |
| 662 | 710 | map.put("bloodSugar", UnitUtils.unitSplice(data.getUrineProtein(), UnitConstants.MMOLL)); |
| 663 | - map.put("bChao",data.getbChao()); | |
| 711 | + map.put("bChao", data.getbChao()); | |
| 664 | 712 | |
| 665 | 713 | /* 诊断指导 */ |
| 666 | 714 | String diagnosis = ""; |
| 667 | - if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getDiagnosis())){ | |
| 715 | + if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getDiagnosis())) { | |
| 668 | 716 | List<String> temp = JsonUtil.toList(data.getDiagnosis(), String.class); |
| 669 | - if (CollectionUtils.isNotEmpty(temp)){ | |
| 717 | + if (CollectionUtils.isNotEmpty(temp)) { | |
| 670 | 718 | |
| 671 | 719 | StringBuilder sb = new StringBuilder(); |
| 672 | 720 | |
| 673 | - for (String sId : temp){ | |
| 721 | + for (String sId : temp) { | |
| 674 | 722 | sb.append(FunvCommonUtil.getBaseicConfigByid(sId, basicConfigService)).append(","); |
| 675 | 723 | } |
| 676 | 724 | if (sb.toString().endsWith(",")) { |
| 677 | 725 | diagnosis = sb.substring(0, sb.length() - 1); |
| 678 | - }else { | |
| 726 | + } else { | |
| 679 | 727 | diagnosis = sb.toString(); |
| 680 | 728 | } |
| 681 | 729 | } |
| 682 | 730 | } |
| 683 | - map.put("diagnosis",diagnosis); | |
| 684 | - map.put("treatmentOpinion",data.getTreatmentOpinion()); | |
| 685 | - map.put("guide",data.getGuide()); | |
| 731 | + map.put("diagnosis", diagnosis); | |
| 732 | + map.put("treatmentOpinion", data.getTreatmentOpinion()); | |
| 733 | + map.put("guide", data.getGuide()); | |
| 686 | 734 | |
| 687 | 735 | br.setErrorcode(ErrorCodeConstants.SUCCESS); |
| 688 | 736 | br.setErrormsg("成功"); |
| 689 | 737 | br.setData(map); |
| 690 | 738 | return br; |
| 691 | 739 | } |
| 692 | - | |
| 693 | - | |
| 694 | - | |
| 695 | 740 | |
| 696 | 741 | |
| 697 | 742 | } |
platform-operate-api/src/main/resources/spring/applicationContext.xml
View file @
94963ae
| ... | ... | @@ -53,5 +53,27 @@ |
| 53 | 53 | </bean> |
| 54 | 54 | <bean id="localSession" class="com.lyms.platform.operate.web.session.strategy.LocalCacheSessionStrategy"/> |
| 55 | 55 | <bean id="usSession" class="com.lyms.platform.operate.web.session.strategy.UserCenterStrategy"/> |
| 56 | + | |
| 57 | + <bean id="commonThreadPool" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> | |
| 58 | + <!-- 核心线程数,默认为1 --> | |
| 59 | + <property name="corePoolSize" value="10" /> | |
| 60 | + | |
| 61 | + <!-- 最大线程数,默认为Integer.MAX_VALUE --> | |
| 62 | + <property name="maxPoolSize" value="50" /> | |
| 63 | + <!-- 队列最大长度,一般需要设置值>=notifyScheduledMainExecutor.maxNum;默认为Integer.MAX_VALUE | |
| 64 | + <property name="queueCapacity" value="1000" /> --> | |
| 65 | + | |
| 66 | + <!-- 线程池维护线程所允许的空闲时间,默认为60s --> | |
| 67 | + <property name="keepAliveSeconds" value="300" /> | |
| 68 | + | |
| 69 | + <!-- 线程池对拒绝任务(无线程可用)的处理策略,目前只支持AbortPolicy、CallerRunsPolicy;默认为后者 | |
| 70 | + <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" /> | |
| 71 | + <property name="rejectedExecutionHandler">--> | |
| 72 | + <!-- AbortPolicy:直接抛出java.util.concurrent.RejectedExecutionException异常 --> | |
| 73 | + <!-- CallerRunsPolicy:主线程直接执行该任务,执行完之后尝试添加下一个任务到线程池中,可以有效降低向线程池内添加任务的速度 --> | |
| 74 | + <!-- DiscardOldestPolicy:抛弃旧的任务、暂不支持;会导致被丢弃的任务无法再次被执行 --> | |
| 75 | + <!-- DiscardPolicy:抛弃当前任务、暂不支持;会导致被丢弃的任务无法再次被执行 --> | |
| 76 | + | |
| 77 | + </bean> | |
| 56 | 78 | </beans> |