Commit fde76615bf7e20957871f15222947e494babc5e0

Authored by wtt
1 parent 6965a49783

update

Showing 4 changed files with 274 additions and 3 deletions

platform-dal/src/main/java/com/lyms/platform/query/SieveApplyOrderQuery.java View file @ fde7661
... ... @@ -90,6 +90,9 @@
90 90 if(null!=parentId){
91 91 condition= condition.and("parentId",parentId, MongoOper.IS);
92 92 }
  93 + if(null!=number){
  94 + condition= condition.and("number",number, MongoOper.IS);
  95 + }
93 96 if(null!=hospitalId){
94 97 condition= condition.and("hospitalId",hospitalId, MongoOper.IS);
95 98 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SieveController.java View file @ fde7661
... ... @@ -355,6 +355,18 @@
355 355 LoginContext loginState = (LoginContext) request.getAttribute("loginContext");
356 356 sieveFacade.exportSieve(cqSieveQueryRequest, loginState.getId(), response);
357 357 }
358   -
  358 + /**
  359 + * 产筛导出3.0版 血清学筛查
  360 + * sieveType=1
  361 + * @param cqSieveQueryRequest
  362 + * @param request
  363 + * @param response
  364 + */
  365 + @RequestMapping(value = "/exportSerologySieve", method = RequestMethod.GET)
  366 + @TokenRequired
  367 + public void exportSerologySieve(@Valid CqSieveQueryRequest cqSieveQueryRequest, HttpServletRequest request, HttpServletResponse response) {
  368 + LoginContext loginState = (LoginContext) request.getAttribute("loginContext");
  369 + sieveFacade.exportSerologySieve(cqSieveQueryRequest, loginState.getId(), response);
  370 + }
359 371 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java View file @ fde7661
... ... @@ -439,8 +439,6 @@
439 439 patientsService.validata(p);
440 440 }
441 441 }
442   -
443   -
444 442 sieveApplyOrderModel.setCreated(new Date());
445 443 sieveApplyOrderModel.setHospitalId(hospitalId);
446 444  
447 445  
... ... @@ -448,9 +446,25 @@
448 446 sieveApplyOrderQuery1.setParentId(sieveApplyOrderAddRequest.getParentId());
449 447 sieveApplyOrderQuery1.setHospitalId(hospitalId);
450 448 sieveApplyOrderQuery1.setYn(YnEnums.YES.getId());
  449 + //以前逻辑支持一个档案一个产筛,为了支持多个产筛,在第二次添加时候将以前产筛内容也冗余
  450 + List<SieveApplyOrderModel> list1 = applyOrderService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery1);
  451 + if(CollectionUtils.isNotEmpty(list1) && list1.size()<2){
  452 + SieveApplyOrderModel sieveApplyOrderModel1 = list1.get(0);
  453 + SieveQuery sieveQuery = new SieveQuery();
  454 + sieveQuery.setYn(YnEnums.YES.getId());
  455 + sieveQuery.setParentId(sieveApplyOrderModel1.getParentId());
  456 + sieveQuery.setHospitalId(hospitalId);
  457 + List<SieveModel> modelList = sieveService.queryList(sieveQuery);
  458 + if(CollectionUtils.isNotEmpty(modelList) && modelList.size()<2){
  459 + SieveModel sieveModel = modelList.get(0);
  460 + sieveApplyOrderModel1.setLymsSieveId(sieveModel.getId());
  461 + applyOrderService.updateSieve(sieveApplyOrderModel1);
  462 + }
  463 + }
451 464 //先查询本院是否已申请
452 465 //List<SieveApplyOrderModel> list1 = applyOrderService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery1);
453 466 //if (CollectionUtils.isEmpty(list1)) {
  467 +
454 468 //增加产筛
455 469 applyOrderService.addOneSieveApplyOrder(sieveApplyOrderModel);
456 470  
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SieveFacade.java View file @ fde7661
... ... @@ -567,7 +567,149 @@
567 567 }
568 568 return new BaseListResponse().setData(data).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(sieveQuery.getPageInfo());
569 569 }
  570 + public BaseResponse queryList2(CqSieveQueryRequest cqSieveQueryRequest, Integer userId, String needPage, boolean isSieveLagManage) {
  571 + List<SieveListResult> data = new ArrayList<>();
  572 + SieveQuery sieveQuery = new SieveQuery();
  573 + sieveQuery.setQueryNo(cqSieveQueryRequest.getQueryNo());
  574 + sieveQuery.setYn(YnEnums.YES.getId());
  575 + sieveQuery.setPhone(cqSieveQueryRequest.getPhone());
  576 + sieveQuery.setStatus(cqSieveQueryRequest.getStatus());
  577 + sieveQuery.setCqResult(cqSieveQueryRequest.getCqResult());
  578 + sieveQuery.setRenShenResult(cqSieveQueryRequest.getRenShenResult());
  579 + sieveQuery.setName(cqSieveQueryRequest.getName());
  580 + sieveQuery.setCardNo(cqSieveQueryRequest.getCardNo());
  581 + //省市区查询
  582 + sieveQuery.setProvinceId(cqSieveQueryRequest.getProvinceId());
  583 + sieveQuery.setCityId(cqSieveQueryRequest.getCityId());
  584 + sieveQuery.setAreaId(cqSieveQueryRequest.getAreaId());
  585 + sieveQuery.setStreetId(cqSieveQueryRequest.getStreetId());
570 586  
  587 + if (null != cqSieveQueryRequest.getDueWeekStart()) {
  588 + sieveQuery.setDueWeekStart(7 * Integer.valueOf(cqSieveQueryRequest.getDueWeekStart()));
  589 + }
  590 + if (null != cqSieveQueryRequest.getDueWeekEnd()) {
  591 + sieveQuery.setDueWeekEnd(7 * Integer.valueOf(cqSieveQueryRequest.getDueWeekEnd()) + 6);
  592 + }
  593 + if (null != cqSieveQueryRequest.getcDueWeekStart()) {
  594 + sieveQuery.setLastMensesEnd(DateUtil.addDay(DateUtil.parseYMD(DateUtil.getyyyy_MM_dd(new Date())), -(cqSieveQueryRequest.getcDueWeekStart() * 7)));
  595 + }
  596 + if (null != cqSieveQueryRequest.getcDueWeekEnd()) {
  597 + sieveQuery.setLastMensesStart(DateUtil.addDay(DateUtil.parseYMD(DateUtil.getyyyy_MM_dd(new Date())), -(cqSieveQueryRequest.getcDueWeekEnd() * 7) - 6));
  598 + }
  599 +
  600 + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getApplyTime())) {
  601 + String[] dates = cqSieveQueryRequest.getApplyTime().split(" - ");
  602 +
  603 + sieveQuery.setApplyTimeStart(DateUtil.parseYMD(dates[0]));
  604 + if (dates.length == 2) {
  605 + sieveQuery.setApplyTimeEnd(DateUtil.parseYMDHMS(dates[1] + " 23:59:59"));
  606 + }
  607 + }
  608 +
  609 + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getDiagnosisTime())) {
  610 + String[] dates = cqSieveQueryRequest.getDiagnosisTime().split(" - ");
  611 +
  612 + sieveQuery.setDiagnosisTimeStart(DateUtil.parseYMD(dates[0]));
  613 + if (dates.length == 2) {
  614 + sieveQuery.setDiagnosisTimeEnd(DateUtil.parseYMDHMS(dates[1] + " 23:59:59"));
  615 + }
  616 + }
  617 +
  618 + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getResultTime())) {
  619 + String[] dates = cqSieveQueryRequest.getResultTime().split(" - ");
  620 +
  621 + sieveQuery.setResultTimeStart(DateUtil.parseYMD(dates[0]));
  622 + if (dates.length == 2) {
  623 + sieveQuery.setResultTimeEnd(DateUtil.parseYMDHMS(dates[1] + " 23:59:59"));
  624 + }
  625 + }
  626 + sieveQuery.setZtfx(cqSieveQueryRequest.getZtfx());
  627 + sieveQuery.setStatus(cqSieveQueryRequest.getIsNotify());
  628 + sieveQuery.setPage(cqSieveQueryRequest.getPage());
  629 + sieveQuery.setLimit(cqSieveQueryRequest.getLimit());
  630 +
  631 +
  632 + sieveQuery.setNeed(needPage);
  633 + String hospitalId = autoMatchFacade.getHospitalId(userId);
  634 +
  635 + if (isSieveLagManage) {
  636 + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getApplyHospitalId())) {
  637 + sieveQuery.setApplyHospitalId(cqSieveQueryRequest.getApplyHospitalId());
  638 + }
  639 + sieveQuery.setSieveHospitalId(hospitalId);
  640 + } else {
  641 + sieveQuery.setHospitalId(hospitalId);
  642 + }
  643 +
  644 +
  645 + List<String> lymsSieveIds = new ArrayList<>();
  646 +
  647 + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getNumber())) {
  648 + List<String> parentIds = new ArrayList<>();
  649 + SieveApplyOrderQuery sieveApplyOrderQuery = new SieveApplyOrderQuery();
  650 + sieveApplyOrderQuery.setSieveHospitalId(hospitalId);
  651 + if(StringUtils.isNotEmpty(cqSieveQueryRequest.getNumber())){
  652 + sieveApplyOrderQuery.setNumber(cqSieveQueryRequest.getNumber());
  653 + }
  654 + sieveApplyOrderQuery.setYn(YnEnums.YES.getId());
  655 + List<SieveApplyOrderModel> sieveApplyOrderModels = applyOrderService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery);
  656 + if (CollectionUtils.isNotEmpty(sieveApplyOrderModels)) {
  657 + for (SieveApplyOrderModel model : sieveApplyOrderModels) {
  658 + parentIds.add(model.getParentId());
  659 + if(StringUtils.isNotEmpty(model.getLymsSieveId())){
  660 + lymsSieveIds.add(model.getLymsSieveId());
  661 + }
  662 + }
  663 + }
  664 + if (CollectionUtils.isNotEmpty(lymsSieveIds)) {
  665 + sieveQuery.setLymsSieveIds(lymsSieveIds);//以前产筛表没有这个管理会漏掉,后面修改过就不会,这里有可能会有个问题
  666 + }else if (CollectionUtils.isNotEmpty(parentIds)) {
  667 + sieveQuery.setParentIds(parentIds);
  668 + } else {
  669 + return new BaseListResponse().setData(data).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(sieveQuery.getPageInfo());
  670 + }
  671 + }
  672 +
  673 + // 筛查类型
  674 + String sieveType = cqSieveQueryRequest.getSieveType();
  675 + if (StringUtils.isNotEmpty(sieveType)) {
  676 + sieveQuery.setSieveType(sieveType);
  677 + }
  678 +
  679 + // 费用类型
  680 + String costType = cqSieveQueryRequest.getCostType();
  681 + if (StringUtils.isNotEmpty(costType)) {
  682 + sieveQuery.setCostType(costType);
  683 + }
  684 +
  685 + // 报告类型
  686 + String reportType = cqSieveQueryRequest.getReportType();
  687 + if (StringUtils.isNotEmpty(reportType)) {
  688 + sieveQuery.setReportType(reportType);
  689 + }
  690 +
  691 + //查询产筛list
  692 + List<SieveModel> list = sieveService.queryList1(sieveQuery, "order");
  693 + int batchSize = 4;
  694 + int end = 0;
  695 + List<Future> listFuture = new ArrayList<>();
  696 + for (int i = 0; i < list.size(); i += batchSize) {
  697 + end = (end + batchSize);
  698 + if (end > list.size()) {
  699 + end = list.size();
  700 + }
  701 + listFuture.add(commonThreadPool.submit(new SieveWorker(hospitalId, list.subList(i, end), antenatalExaminationService, patientsService, applyOrderService, organizationService, diagnosisService, basicConfigService, usersService, sieveService, mongoTemplate)));
  702 + }
  703 + for (Future f : listFuture) {
  704 + try {
  705 + data.addAll((List) f.get(30, TimeUnit.SECONDS));
  706 + } catch (Exception e) {
  707 + ExceptionUtils.catchException(e, "cqSieve list get result Future error.");
  708 + }
  709 + }
  710 + return new BaseListResponse().setData(data).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(sieveQuery.getPageInfo());
  711 + }
  712 +
571 713 public void exportCqsieves(CqSieveQueryRequest cqSieveQueryRequest, Integer id, HttpServletResponse response) {
572 714 try {
573 715  
... ... @@ -2376,6 +2518,106 @@
2376 2518 }
2377 2519 }
2378 2520  
  2521 + public void exportSerologySieve(CqSieveQueryRequest cqSieveQueryRequest, Integer id, HttpServletResponse response) {
  2522 + try {
  2523 + BaseListResponse listResponse = (BaseListResponse) queryList2(cqSieveQueryRequest, id, null, false);
  2524 +
  2525 + List<SieveListResult> list = listResponse.getData();
  2526 + List<Map<String, Object>> datas = new ArrayList<>();
  2527 +
  2528 + if (CollectionUtils.isNotEmpty(list)) {
  2529 + for (SieveListResult sive : list) {
  2530 + Map<String, Object> data = new HashMap<>();
  2531 + /* data.put("versionNo", sive.getNumber());
  2532 + data.put("exportTime", sive.getExportTime());
  2533 + data.put("highRisk", sive.getZtfxText());
  2534 + data.put("age", sive.getAge());
  2535 + data.put("collectBloodWeek", sive.getCollectionWeek());
  2536 + data.put("placeDomicile", sive.getPlaceDomicile());//com.lyms.platform.common.utils.StringUtils.encryPhone(sive.getRealPhone())
  2537 + data.put("residence", sive.getResidence());
  2538 + data.put("dueDate", sive.getDueDate());
  2539 + data.put("bScanInfo", sive.getbScanInfo());
  2540 + data.put("foundHospital", sive.getFoundHospital());*/
  2541 + data.put("SampleID", "");//样本号
  2542 + data.put("PatientID", "");//孕妇编号
  2543 + data.put("LastName", sive.getName());//姓名
  2544 + data.put("ApplicationNo", "");//申请单号
  2545 + data.put("BirthDate", sive.getBirthday());//生日
  2546 + data.put("Ethnicity", "");//种族
  2547 + data.put("IdCard", sive.getCardNo());//身份证号
  2548 + data.put("Address", "");//地址
  2549 + data.put("Phone", sive.getPhone());//电话
  2550 + data.put("NoOfFetuses", "");//胎儿数
  2551 + data.put("LMPDate", sive.getLastMenstrual());//末次月经
  2552 + data.put("Smoking", "");//吸烟
  2553 + data.put("Weight", "");//体重
  2554 + data.put("Insulin", "");//I-型糖尿病
  2555 + data.put("CollectionDate", sive.getCollectionDate());//采样日期(采血日期)
  2556 + data.put("ReceivedDate", "");//送检日期
  2557 + data.put("ScanDate", "");//B超日期
  2558 + data.put("CRL", "");
  2559 + data.put("BPD", "");
  2560 + data.put("HC", "");
  2561 + data.put("MannualEntry", "");//B超孕天
  2562 + data.put("NT", "");
  2563 + data.put("ResponsibleCode", sive.getApplyDoctor());//送检单位编号(送检医院)
  2564 + data.put("T21", "");//既往T21
  2565 + data.put("T18", "");//既往T18
  2566 + data.put("NTD", "");//既往NTD
  2567 + data.put("ARMethod", "");//辅助生殖方法
  2568 + data.put("ExtractionDate", "");//辅助生殖之提取日期
  2569 + data.put("TransferDate", "");//辅助生殖之移植日期
  2570 + data.put("DonorBirthDate", "");//辅助生殖之捐赠者生日
  2571 + data.put("NasalBone", "");//鼻骨
  2572 + data.put("Monozygous", "");//单卵
  2573 + data.put("PatientType", "");//孕妇筛查类型
  2574 + datas.add(data);
  2575 + }
  2576 + }
  2577 + OutputStream out = response.getOutputStream();
  2578 + Map<String, String> cnames = new LinkedHashMap<>();
  2579 + cnames.put("SampleID", "SampleID");//样本号
  2580 + cnames.put("PatientID", "PatientID");//孕妇编号
  2581 + cnames.put("LastName", "LastName");//姓名
  2582 + cnames.put("ApplicationNo", "ApplicationNo");//申请单号
  2583 + cnames.put("BirthDate", "BirthDate");//生日
  2584 + cnames.put("Ethnicity", "Ethnicity");//种族
  2585 + cnames.put("IdCard", "IdCard");//身份证号
  2586 + cnames.put("Address", "Address");//地址
  2587 + cnames.put("Phone", "Phone");//电话
  2588 + cnames.put("NoOfFetuses", "NoOfFetuses");//胎儿数
  2589 + cnames.put("LMPDate", "LMPDate");//末次月经
  2590 + cnames.put("Smoking", "Smoking");//吸烟
  2591 + cnames.put("Weight", "Weight");//体重
  2592 + cnames.put("Insulin", "Insulin");//I-型糖尿病
  2593 + cnames.put("CollectionDate", "CollectionDate");//采样日期
  2594 + cnames.put("ReceivedDate", "ReceivedDate");//送检日期
  2595 + cnames.put("ScanDate", "ScanDate");//B超日期
  2596 + cnames.put("CRL", "CRL");
  2597 + cnames.put("BPD", "BPD");
  2598 + cnames.put("HC", "HC");
  2599 + cnames.put("MannualEntry", "MannualEntry");//B超孕天
  2600 + cnames.put("NT", "NT");
  2601 + cnames.put("ResponsibleCode", "ResponsibleCode");//送检单位编号
  2602 + cnames.put("T21", "T21");//既往T21
  2603 + cnames.put("T18", "T18");//既往T18
  2604 + cnames.put("NTD", "NTD");//既往NTD
  2605 + cnames.put("ARMethod", "ARMethod");//辅助生殖方法
  2606 + cnames.put("ExtractionDate", "ExtractionDate");//辅助生殖之提取日期
  2607 + cnames.put("TransferDate", "TransferDate");//辅助生殖之移植日期
  2608 + cnames.put("DonorBirthDate", "DonorBirthDate");//辅助生殖之捐赠者生日
  2609 + cnames.put("NasalBone", "NasalBone");//鼻骨
  2610 + cnames.put("Monozygous", "Monozygous");//单卵
  2611 + cnames.put("PatientType", "PatientType");//孕妇筛查类型
  2612 +
  2613 + response.setContentType("application/octet-stream");
  2614 + response.setCharacterEncoding("UTF-8");
  2615 + response.setHeader("Content-Disposition", "attachment;fileName=" + "csdata22.xls");
  2616 + ExcelUtil.toExcel(out, datas, cnames);
  2617 + } catch (Exception e) {
  2618 + ExceptionUtils.catchException(e, "产筛导出异常");
  2619 + }
  2620 + }
2379 2621  
2380 2622 }