From fde76615bf7e20957871f15222947e494babc5e0 Mon Sep 17 00:00:00 2001 From: wtt Date: Thu, 11 Jun 2020 17:51:56 +0800 Subject: [PATCH] update --- .../lyms/platform/query/SieveApplyOrderQuery.java | 3 + .../operate/web/controller/SieveController.java | 14 +- .../operate/web/facade/ApplyOrderFacade.java | 18 +- .../platform/operate/web/facade/SieveFacade.java | 242 +++++++++++++++++++++ 4 files changed, 274 insertions(+), 3 deletions(-) diff --git a/platform-dal/src/main/java/com/lyms/platform/query/SieveApplyOrderQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/SieveApplyOrderQuery.java index 229cbdf..5e1c542 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/SieveApplyOrderQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/SieveApplyOrderQuery.java @@ -90,6 +90,9 @@ public class SieveApplyOrderQuery extends BaseQuery implements IConvertToNativeQ if(null!=parentId){ condition= condition.and("parentId",parentId, MongoOper.IS); } + if(null!=number){ + condition= condition.and("number",number, MongoOper.IS); + } if(null!=hospitalId){ condition= condition.and("hospitalId",hospitalId, MongoOper.IS); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SieveController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SieveController.java index 1444625..b851160 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SieveController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SieveController.java @@ -355,5 +355,17 @@ public class SieveController extends BaseController { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); sieveFacade.exportSieve(cqSieveQueryRequest, loginState.getId(), response); } - + /** + * 产筛导出3.0版 血清学筛查 + * sieveType=1 + * @param cqSieveQueryRequest + * @param request + * @param response + */ + @RequestMapping(value = "/exportSerologySieve", method = RequestMethod.GET) + @TokenRequired + public void exportSerologySieve(@Valid CqSieveQueryRequest cqSieveQueryRequest, HttpServletRequest request, HttpServletResponse response) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + sieveFacade.exportSerologySieve(cqSieveQueryRequest, loginState.getId(), response); + } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java index 83dbe19..cb51b71 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java @@ -439,8 +439,6 @@ public class ApplyOrderFacade { patientsService.validata(p); } } - - sieveApplyOrderModel.setCreated(new Date()); sieveApplyOrderModel.setHospitalId(hospitalId); @@ -448,9 +446,25 @@ public class ApplyOrderFacade { sieveApplyOrderQuery1.setParentId(sieveApplyOrderAddRequest.getParentId()); sieveApplyOrderQuery1.setHospitalId(hospitalId); sieveApplyOrderQuery1.setYn(YnEnums.YES.getId()); + //以前逻辑支持一个档案一个产筛,为了支持多个产筛,在第二次添加时候将以前产筛内容也冗余 + List list1 = applyOrderService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery1); + if(CollectionUtils.isNotEmpty(list1) && list1.size()<2){ + SieveApplyOrderModel sieveApplyOrderModel1 = list1.get(0); + SieveQuery sieveQuery = new SieveQuery(); + sieveQuery.setYn(YnEnums.YES.getId()); + sieveQuery.setParentId(sieveApplyOrderModel1.getParentId()); + sieveQuery.setHospitalId(hospitalId); + List modelList = sieveService.queryList(sieveQuery); + if(CollectionUtils.isNotEmpty(modelList) && modelList.size()<2){ + SieveModel sieveModel = modelList.get(0); + sieveApplyOrderModel1.setLymsSieveId(sieveModel.getId()); + applyOrderService.updateSieve(sieveApplyOrderModel1); + } + } //先查询本院是否已申请 //List list1 = applyOrderService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery1); //if (CollectionUtils.isEmpty(list1)) { + //增加产筛 applyOrderService.addOneSieveApplyOrder(sieveApplyOrderModel); 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 a7139ff..fbc7a16 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 @@ -567,6 +567,148 @@ public class SieveFacade { } return new BaseListResponse().setData(data).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(sieveQuery.getPageInfo()); } + public BaseResponse queryList2(CqSieveQueryRequest cqSieveQueryRequest, Integer userId, String needPage, boolean isSieveLagManage) { + List data = new ArrayList<>(); + SieveQuery sieveQuery = new SieveQuery(); + sieveQuery.setQueryNo(cqSieveQueryRequest.getQueryNo()); + sieveQuery.setYn(YnEnums.YES.getId()); + sieveQuery.setPhone(cqSieveQueryRequest.getPhone()); + sieveQuery.setStatus(cqSieveQueryRequest.getStatus()); + sieveQuery.setCqResult(cqSieveQueryRequest.getCqResult()); + sieveQuery.setRenShenResult(cqSieveQueryRequest.getRenShenResult()); + sieveQuery.setName(cqSieveQueryRequest.getName()); + sieveQuery.setCardNo(cqSieveQueryRequest.getCardNo()); + //省市区查询 + sieveQuery.setProvinceId(cqSieveQueryRequest.getProvinceId()); + sieveQuery.setCityId(cqSieveQueryRequest.getCityId()); + sieveQuery.setAreaId(cqSieveQueryRequest.getAreaId()); + sieveQuery.setStreetId(cqSieveQueryRequest.getStreetId()); + + if (null != cqSieveQueryRequest.getDueWeekStart()) { + sieveQuery.setDueWeekStart(7 * Integer.valueOf(cqSieveQueryRequest.getDueWeekStart())); + } + if (null != cqSieveQueryRequest.getDueWeekEnd()) { + sieveQuery.setDueWeekEnd(7 * Integer.valueOf(cqSieveQueryRequest.getDueWeekEnd()) + 6); + } + if (null != cqSieveQueryRequest.getcDueWeekStart()) { + sieveQuery.setLastMensesEnd(DateUtil.addDay(DateUtil.parseYMD(DateUtil.getyyyy_MM_dd(new Date())), -(cqSieveQueryRequest.getcDueWeekStart() * 7))); + } + if (null != cqSieveQueryRequest.getcDueWeekEnd()) { + sieveQuery.setLastMensesStart(DateUtil.addDay(DateUtil.parseYMD(DateUtil.getyyyy_MM_dd(new Date())), -(cqSieveQueryRequest.getcDueWeekEnd() * 7) - 6)); + } + + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getApplyTime())) { + String[] dates = cqSieveQueryRequest.getApplyTime().split(" - "); + + sieveQuery.setApplyTimeStart(DateUtil.parseYMD(dates[0])); + if (dates.length == 2) { + sieveQuery.setApplyTimeEnd(DateUtil.parseYMDHMS(dates[1] + " 23:59:59")); + } + } + + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getDiagnosisTime())) { + String[] dates = cqSieveQueryRequest.getDiagnosisTime().split(" - "); + + sieveQuery.setDiagnosisTimeStart(DateUtil.parseYMD(dates[0])); + if (dates.length == 2) { + sieveQuery.setDiagnosisTimeEnd(DateUtil.parseYMDHMS(dates[1] + " 23:59:59")); + } + } + + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getResultTime())) { + String[] dates = cqSieveQueryRequest.getResultTime().split(" - "); + + sieveQuery.setResultTimeStart(DateUtil.parseYMD(dates[0])); + if (dates.length == 2) { + sieveQuery.setResultTimeEnd(DateUtil.parseYMDHMS(dates[1] + " 23:59:59")); + } + } + sieveQuery.setZtfx(cqSieveQueryRequest.getZtfx()); + sieveQuery.setStatus(cqSieveQueryRequest.getIsNotify()); + sieveQuery.setPage(cqSieveQueryRequest.getPage()); + sieveQuery.setLimit(cqSieveQueryRequest.getLimit()); + + + sieveQuery.setNeed(needPage); + String hospitalId = autoMatchFacade.getHospitalId(userId); + + if (isSieveLagManage) { + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getApplyHospitalId())) { + sieveQuery.setApplyHospitalId(cqSieveQueryRequest.getApplyHospitalId()); + } + sieveQuery.setSieveHospitalId(hospitalId); + } else { + sieveQuery.setHospitalId(hospitalId); + } + + + List lymsSieveIds = new ArrayList<>(); + + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getNumber())) { + List parentIds = new ArrayList<>(); + SieveApplyOrderQuery sieveApplyOrderQuery = new SieveApplyOrderQuery(); + sieveApplyOrderQuery.setSieveHospitalId(hospitalId); + if(StringUtils.isNotEmpty(cqSieveQueryRequest.getNumber())){ + sieveApplyOrderQuery.setNumber(cqSieveQueryRequest.getNumber()); + } + sieveApplyOrderQuery.setYn(YnEnums.YES.getId()); + List sieveApplyOrderModels = applyOrderService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery); + if (CollectionUtils.isNotEmpty(sieveApplyOrderModels)) { + for (SieveApplyOrderModel model : sieveApplyOrderModels) { + parentIds.add(model.getParentId()); + if(StringUtils.isNotEmpty(model.getLymsSieveId())){ + lymsSieveIds.add(model.getLymsSieveId()); + } + } + } + if (CollectionUtils.isNotEmpty(lymsSieveIds)) { + sieveQuery.setLymsSieveIds(lymsSieveIds);//以前产筛表没有这个管理会漏掉,后面修改过就不会,这里有可能会有个问题 + }else if (CollectionUtils.isNotEmpty(parentIds)) { + sieveQuery.setParentIds(parentIds); + } else { + return new BaseListResponse().setData(data).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(sieveQuery.getPageInfo()); + } + } + + // 筛查类型 + String sieveType = cqSieveQueryRequest.getSieveType(); + if (StringUtils.isNotEmpty(sieveType)) { + sieveQuery.setSieveType(sieveType); + } + + // 费用类型 + String costType = cqSieveQueryRequest.getCostType(); + if (StringUtils.isNotEmpty(costType)) { + sieveQuery.setCostType(costType); + } + + // 报告类型 + String reportType = cqSieveQueryRequest.getReportType(); + if (StringUtils.isNotEmpty(reportType)) { + sieveQuery.setReportType(reportType); + } + + //查询产筛list + List list = sieveService.queryList1(sieveQuery, "order"); + 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, applyOrderService, organizationService, diagnosisService, basicConfigService, usersService, sieveService, mongoTemplate))); + } + 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."); + } + } + return new BaseListResponse().setData(data).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(sieveQuery.getPageInfo()); + } public void exportCqsieves(CqSieveQueryRequest cqSieveQueryRequest, Integer id, HttpServletResponse response) { try { @@ -2376,5 +2518,105 @@ public class SieveFacade { } } + public void exportSerologySieve(CqSieveQueryRequest cqSieveQueryRequest, Integer id, HttpServletResponse response) { + try { + BaseListResponse listResponse = (BaseListResponse) queryList2(cqSieveQueryRequest, id, null, false); + + List list = listResponse.getData(); + List> datas = new ArrayList<>(); + + if (CollectionUtils.isNotEmpty(list)) { + for (SieveListResult sive : list) { + Map data = new HashMap<>(); + /* data.put("versionNo", sive.getNumber()); + data.put("exportTime", sive.getExportTime()); + data.put("highRisk", sive.getZtfxText()); + data.put("age", sive.getAge()); + data.put("collectBloodWeek", sive.getCollectionWeek()); + data.put("placeDomicile", sive.getPlaceDomicile());//com.lyms.platform.common.utils.StringUtils.encryPhone(sive.getRealPhone()) + data.put("residence", sive.getResidence()); + data.put("dueDate", sive.getDueDate()); + data.put("bScanInfo", sive.getbScanInfo()); + data.put("foundHospital", sive.getFoundHospital());*/ + data.put("SampleID", "");//样本号 + data.put("PatientID", "");//孕妇编号 + data.put("LastName", sive.getName());//姓名 + data.put("ApplicationNo", "");//申请单号 + data.put("BirthDate", sive.getBirthday());//生日 + data.put("Ethnicity", "");//种族 + data.put("IdCard", sive.getCardNo());//身份证号 + data.put("Address", "");//地址 + data.put("Phone", sive.getPhone());//电话 + data.put("NoOfFetuses", "");//胎儿数 + data.put("LMPDate", sive.getLastMenstrual());//末次月经 + data.put("Smoking", "");//吸烟 + data.put("Weight", "");//体重 + data.put("Insulin", "");//I-型糖尿病 + data.put("CollectionDate", sive.getCollectionDate());//采样日期(采血日期) + data.put("ReceivedDate", "");//送检日期 + data.put("ScanDate", "");//B超日期 + data.put("CRL", ""); + data.put("BPD", ""); + data.put("HC", ""); + data.put("MannualEntry", "");//B超孕天 + data.put("NT", ""); + data.put("ResponsibleCode", sive.getApplyDoctor());//送检单位编号(送检医院) + data.put("T21", "");//既往T21 + data.put("T18", "");//既往T18 + data.put("NTD", "");//既往NTD + data.put("ARMethod", "");//辅助生殖方法 + data.put("ExtractionDate", "");//辅助生殖之提取日期 + data.put("TransferDate", "");//辅助生殖之移植日期 + data.put("DonorBirthDate", "");//辅助生殖之捐赠者生日 + data.put("NasalBone", "");//鼻骨 + data.put("Monozygous", "");//单卵 + data.put("PatientType", "");//孕妇筛查类型 + datas.add(data); + } + } + OutputStream out = response.getOutputStream(); + Map cnames = new LinkedHashMap<>(); + cnames.put("SampleID", "SampleID");//样本号 + cnames.put("PatientID", "PatientID");//孕妇编号 + cnames.put("LastName", "LastName");//姓名 + cnames.put("ApplicationNo", "ApplicationNo");//申请单号 + cnames.put("BirthDate", "BirthDate");//生日 + cnames.put("Ethnicity", "Ethnicity");//种族 + cnames.put("IdCard", "IdCard");//身份证号 + cnames.put("Address", "Address");//地址 + cnames.put("Phone", "Phone");//电话 + cnames.put("NoOfFetuses", "NoOfFetuses");//胎儿数 + cnames.put("LMPDate", "LMPDate");//末次月经 + cnames.put("Smoking", "Smoking");//吸烟 + cnames.put("Weight", "Weight");//体重 + cnames.put("Insulin", "Insulin");//I-型糖尿病 + cnames.put("CollectionDate", "CollectionDate");//采样日期 + cnames.put("ReceivedDate", "ReceivedDate");//送检日期 + cnames.put("ScanDate", "ScanDate");//B超日期 + cnames.put("CRL", "CRL"); + cnames.put("BPD", "BPD"); + cnames.put("HC", "HC"); + cnames.put("MannualEntry", "MannualEntry");//B超孕天 + cnames.put("NT", "NT"); + cnames.put("ResponsibleCode", "ResponsibleCode");//送检单位编号 + cnames.put("T21", "T21");//既往T21 + cnames.put("T18", "T18");//既往T18 + cnames.put("NTD", "NTD");//既往NTD + cnames.put("ARMethod", "ARMethod");//辅助生殖方法 + cnames.put("ExtractionDate", "ExtractionDate");//辅助生殖之提取日期 + cnames.put("TransferDate", "TransferDate");//辅助生殖之移植日期 + cnames.put("DonorBirthDate", "DonorBirthDate");//辅助生殖之捐赠者生日 + cnames.put("NasalBone", "NasalBone");//鼻骨 + cnames.put("Monozygous", "Monozygous");//单卵 + cnames.put("PatientType", "PatientType");//孕妇筛查类型 + + response.setContentType("application/octet-stream"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Content-Disposition", "attachment;fileName=" + "csdata22.xls"); + ExcelUtil.toExcel(out, datas, cnames); + } catch (Exception e) { + ExceptionUtils.catchException(e, "产筛导出异常"); + } + } } \ No newline at end of file -- 1.8.3.1