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 bc8c82e..c7c80ea 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 @@ -312,9 +312,6 @@ public class SieveController extends BaseController { * @param cqSieveQueryRequest * @param request * @param response - * - * - * */ @TokenRequired @RequestMapping(value = "exportSieveReportExcl", method = RequestMethod.POST) @@ -345,5 +342,18 @@ public class SieveController extends BaseController { sieveFacade.SieveHistory(startTime, endTime, hospital, provinceId, cityId, areaId); } + /** + * 产筛导出2.0版 + * + * @param cqSieveQueryRequest + * @param request + * @param response + */ + @RequestMapping(value = "/exportSieve", method = RequestMethod.GET) + @TokenRequired + public void exportSieve(@Valid CqSieveQueryRequest cqSieveQueryRequest, HttpServletRequest request, HttpServletResponse response) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + sieveFacade.exportSieve(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/SieveFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SieveFacade.java index 3980e3b..b9c5d42 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 @@ -18,8 +18,6 @@ import com.lyms.platform.operate.web.request.SieveAddRequest; import com.lyms.platform.operate.web.result.*; import com.lyms.platform.operate.web.service.ITrackDownService; import com.lyms.platform.operate.web.utils.CommonsHelper; -import com.lyms.platform.operate.web.worker.DueOrgCountWorker; -import com.lyms.platform.operate.web.worker.GravidaVisitHistory; import com.lyms.platform.operate.web.worker.SieveHistory; import com.lyms.platform.operate.web.worker.SieveWorker; import com.lyms.platform.permission.model.Organization; @@ -35,7 +33,6 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; @@ -98,8 +95,6 @@ public class SieveFacade { @Autowired private AntenatalExaminationFacade antenatalExaminationFacade; - @Autowired - private MongoTemplate mongoTemplate; /** * 增加一条产筛结果记录 @@ -556,7 +551,7 @@ public class SieveFacade { if (end > list.size()) { end = list.size(); } - listFuture.add(commonThreadPool.submit(new SieveWorker(hospitalId, list.subList(i, end), antenatalExaminationService, patientsService, applyOrderService, organizationService, diagnosisService, basicConfigService, mongoTemplate))); + listFuture.add(commonThreadPool.submit(new SieveWorker(hospitalId, list.subList(i, end), antenatalExaminationService, patientsService, applyOrderService, organizationService, diagnosisService, basicConfigService, usersService, sieveService))); } for (Future f : listFuture) { try { @@ -973,9 +968,6 @@ public class SieveFacade { sieveResultInfo.put("sampleInfoId", sieveResultModel.getSampleInfoId()); sieveResultInfo.put("sampleReportId", sieveResultModel.getSampleReportId()); - // 是否已出报告 1-是 2/null-否、打印次数 - sieveResultInfo.put("hasReport", sieveResultModel.getHasReport()); - sieveResultInfo.put("printSize", sieveResultModel.getPrintSize()); String tszhzValue = ""; if (StringUtils.isNotEmpty(sieveResultModel.getTszhz()) && sieveResultModel.getTszhzValue() != null && sieveResultModel.getTszhzValue().size() > 0) { @@ -2245,4 +2237,63 @@ public class SieveFacade { } } + public void exportSieve(CqSieveQueryRequest cqSieveQueryRequest, Integer id, HttpServletResponse response) { + try { + BaseListResponse listResponse = (BaseListResponse) queryList(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("aoolyHospital", sive.getApplyHospital()); + data.put("versionNo", sive.getNumber()); + data.put("exportTime", sive.getExportTime()); + data.put("highRisk", sive.getZtfxText()); + data.put("collectBloodTime", sive.getCollectionDate()); + data.put("name", sive.getName()); + data.put("age", sive.getAge()); + data.put("collectBloodWeek", sive.getCollectionWeek()); + data.put("birthday", sive.getBirthday()); + data.put("cardNo", sive.getCardNo()); + data.put("placeDomicile", sive.getPlaceDomicile());//com.lyms.platform.common.utils.StringUtils.encryPhone(sive.getRealPhone()) + data.put("residence", sive.getResidence()); + data.put("phone", sive.getPhone()); + data.put("lastMenstrual", sive.getLastMenstrual()); + data.put("dueDate", sive.getDueDate()); + data.put("bScanInfo", sive.getbScanInfo()); + data.put("foundHospital", sive.getFoundHospital()); + datas.add(data); + } + } + OutputStream out = response.getOutputStream(); + Map cnames = new LinkedHashMap<>(); + cnames.put("name", "姓名"); + cnames.put("age", "年龄"); + cnames.put("aoolyHospital", "送检医院"); + cnames.put("versionNo", "版本号"); + cnames.put("exportTime", "报告日期"); + cnames.put("highRisk", "整体风险"); + cnames.put("collectBloodTime", "采血日期"); + cnames.put("collectBloodWeek", "采血当天孕周"); + cnames.put("birthday", "出生年月"); + cnames.put("cardNo", "身份证号"); + cnames.put("placeDomicile", "户籍地"); + cnames.put("residence", "现住地址"); + cnames.put("phone", "手机号码"); + cnames.put("lastMenstrual", "末次月经"); + cnames.put("dueDate", "预产期"); + cnames.put("bScanInfo", "B超信息"); + cnames.put("foundHospital", "建档机构"); + response.setContentType("application/octet-stream"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Content-Disposition", "attachment;fileName=" + "csdata.xls"); + ExcelUtil.toExcel(out, datas, cnames); + } catch (Exception e) { + ExceptionUtils.catchException(e, "产筛导出异常"); + } + } + + } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/SieveListResult.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/SieveListResult.java index 89c164e..da3f24c 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/SieveListResult.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/SieveListResult.java @@ -71,6 +71,186 @@ public class SieveListResult implements IBasicResultConvert> dia; + + //联系方式 + private String phone; + + //联系方式 + private String realPhone; + + //产前诊断 1 已检查 0 未检查 + private String cqStatus; + //产前诊断结果 + private String cqResult = SPIT; + //妊娠结局 + private String renShenResult = SPIT; + private Integer status; + //状态文本 + private String statusText; + + /** + * 省市区 + **/ + private String censusAddress; + + /** + * 血清学筛查 2/无创基因筛查 3/二者都用 + */ + private String sieveTypeStr; + + /** + * 1/免费 2/自费 + */ + private String costTypeStr; + + /** + * 1/正式报告 2/重取样报告 3/失败报告 + */ + private String reportTypeStr; + + //申请医生 + private String applyDoctor; + + //报告时间 + private String exportTime; + + //标本号 + private String number; + + //采血日期 + private String collectionDate; + + //采血当天孕周 + private String collectionWeek; + + //出生年月 + private String birthday; + + //身份证号码 + private String cardNo; + + //户籍地 + private String placeDomicile; + + //现住地 + private String residence; + + //末次月经 + private String lastMenstrual; + + //预产期 + private String dueDate; + + //B超信息 + private String bScanInfo; + + //建档机构 + private String foundHospital; + + public String getExportTime() { + return exportTime; + } + + public void setExportTime(String exportTime) { + this.exportTime = exportTime; + } + + public String getCardNo() { + return cardNo; + } + + public void setCardNo(String cardNo) { + this.cardNo = cardNo; + } + + public String getPlaceDomicile() { + return placeDomicile; + } + + public void setPlaceDomicile(String placeDomicile) { + this.placeDomicile = placeDomicile; + } + + public String getResidence() { + return residence; + } + + public void setResidence(String residence) { + this.residence = residence; + } + + public String getLastMenstrual() { + return lastMenstrual; + } + + public void setLastMenstrual(String lastMenstrual) { + this.lastMenstrual = lastMenstrual; + } + + public String getDueDate() { + return dueDate; + } + + public void setDueDate(String dueDate) { + this.dueDate = dueDate; + } + + public String getbScanInfo() { + return bScanInfo; + } + + public void setbScanInfo(String bScanInfo) { + this.bScanInfo = bScanInfo; + } + + public String getFoundHospital() { + return foundHospital; + } + + public void setFoundHospital(String foundHospital) { + this.foundHospital = foundHospital; + } + + public String getBirthday() { + return birthday; + } + + public void setBirthday(String birthday) { + this.birthday = birthday; + } + + public String getCollectionWeek() { + return collectionWeek; + } + + public void setCollectionWeek(String collectionWeek) { + this.collectionWeek = collectionWeek; + } + + public String getCollectionDate() { + return collectionDate; + } + + public void setCollectionDate(String collectionDate) { + this.collectionDate = collectionDate; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getApplyDoctor() { + return applyDoctor; + } + + public void setApplyDoctor(String applyDoctor) { + this.applyDoctor = applyDoctor; + } + private Boolean huaDaPushResult; public Boolean getHuaDaPushResult() { @@ -183,43 +363,6 @@ public class SieveListResult implements IBasicResultConvert> { private DiagnosisService diagnosisService; private BasicConfigService basicConfigService; + private SieveService sieveService; + private MongoTemplate mongoTemplate; public SieveWorker(String hospitalId, List list, AntenatalExaminationService antService, PatientsService patientsService, ApplyOrderService applyOrderService, + OrganizationService organizationService, DiagnosisService diagnosisService, BasicConfigService basicConfigService, UsersService usersService, SieveService sieveService) { OrganizationService organizationService, DiagnosisService diagnosisService, BasicConfigService basicConfigService, MongoTemplate mongoTemplate) { this.hospitalId = hospitalId; this.list = list; @@ -61,12 +57,22 @@ public class SieveWorker implements Callable> { this.organizationService = organizationService; this.diagnosisService = diagnosisService; this.basicConfigService = basicConfigService; + this.usersService = usersService; + this.sieveService = sieveService; this.mongoTemplate = mongoTemplate; } @Override public List call() throws Exception { List results = new ArrayList<>(); + Map data = new HashMap<>(); + data.put("1", "单胎"); + data.put("2", "双胎"); + data.put("3", "多胎"); + data.put("4", "异常(单胎)"); + data.put("5", "异常(双胎)"); + data.put("6", "异常(多胎)"); + data.put("7", "减胎"); for (SieveModel sieveModel : list) { SieveListResult sieveListResult = new SieveListResult(); sieveListResult.setReviceStatus(sieveModel.getReviceStatus()); @@ -74,6 +80,45 @@ public class SieveWorker implements Callable> { antExQuery.setYn(YnEnums.YES.getId()); antExQuery.setHospitalId(hospitalId); antExQuery.setParentId(sieveModel.getParentId()); + + + //获取产筛申请数据 + SieveApplyOrderQuery sieveApplyOrderQuery = new SieveApplyOrderQuery(); + sieveApplyOrderQuery.setSort("created descc"); + sieveApplyOrderQuery.setParentId(sieveModel.getParentId()); + sieveApplyOrderQuery.setHospitalId(sieveModel.getHospitalId()); + sieveApplyOrderQuery.setYn(YnEnums.YES.getId()); + + //查询报告出具时间 + SieveResultQuery sieveResultQuery = new SieveResultQuery(); + sieveResultQuery.setSort("created descc"); + sieveResultQuery.setParentId(sieveModel.getParentId()); + sieveResultQuery.setYn(YnEnums.YES.getId()); + List resultModels = sieveService.queryListSieveResult(sieveResultQuery); + if (CollectionUtils.isNotEmpty(resultModels)) { + SieveResultModel resultModel = resultModels.get(0); + sieveListResult.setExportTime(DateUtil.getyyyy_MM_dd(resultModel.getResultTime())); + } + List applyOrderModels = applyOrderService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery); + //采血日期 + Date collectionDate = null; + if (CollectionUtils.isNotEmpty(applyOrderModels)) { + SieveApplyOrderModel sieveApplyOrderModel = applyOrderModels.get(0); + //送检医生 + sieveListResult.setApplyDoctor(StringUtils.isNotEmpty(sieveApplyOrderModel.getApplyDoctor()) ? usersService.getUsers(Integer.valueOf(sieveApplyOrderModel.getApplyDoctor())).getName() : "--"); + //版本号 + sieveListResult.setNumber(sieveApplyOrderModel.getNumber()); + //采血日期 + sieveListResult.setCollectionDate(DateUtil.getyyyy_MM_dd(sieveApplyOrderModel.getCollectionDate())); + collectionDate = sieveApplyOrderModel.getCollectionDate(); + //B超信息 + //血清 + if ("1".equals(sieveApplyOrderModel.getSieveType())) { + sieveListResult.setbScanInfo(sieveApplyOrderModel.getBpd() + "," + sieveApplyOrderModel.getCrl()); + } else if ("2".equals(sieveApplyOrderModel.getSieveType())) { + sieveListResult.setbScanInfo(StringUtils.isNotEmpty(sieveApplyOrderModel.getFetusNum()) ? data.get(sieveApplyOrderModel.getFetusNum()) : "--"); + } + } List list1 = antService.queryAntenatalExamination(antExQuery.convertToQuery().addOrder(Sort.Direction.DESC, "created")); if (CollectionUtils.isNotEmpty(list1)) { if (StringUtils.isNotEmpty(list1.get(0).getTireNumber())) { @@ -93,6 +138,8 @@ public class SieveWorker implements Callable> { } sieveListResult.convertToResult(sieveModel); + + Patients patients = patientsService.findOnePatientById(sieveModel.getParentId()); if (null != patients) { sieveListResult.setIsGravida((patients.getType() == 3 && patients.getFmDate() != null) ? "0" : "1"); @@ -102,6 +149,29 @@ public class SieveWorker implements Callable> { sieveListResult.setcDueWeek("已分娩"); } sieveListResult.setAge(DateUtil.getAge(patients.getBirth()) + "岁"); + //采血当天孕周 + sieveListResult.setCollectionWeek(collectionDate != null ? DateUtil.getWeekDesc(patients.getLastMenses(), collectionDate) : "--"); + //出生年月日 + sieveListResult.setBirthday(DateUtil.getyyyy_MM_dd(patients.getBirth())); + //身份证号码 + sieveListResult.setCardNo(DefenceUtils.getCardNo(patients.getCardNo())); + //电话号码 + sieveListResult.setPhone(DefenceUtils.getPhone(patients.getPhone())); + //户籍地 + sieveListResult.setPlaceDomicile(CommonsHelper.getResidence(patients.getProvinceId(), patients.getCityId(), + patients.getAreaId(), patients.getStreetId(), patients.getAddress(), basicConfigService)); + + //居住地 + sieveListResult.setResidence(CommonsHelper.getResidence(patients.getProvinceRegisterId(), patients.getCityRegisterId(), + patients.getAreaRegisterId(), patients.getStreetRegisterId(), patients.getAddressRegister(), basicConfigService)); + //末次月经 + sieveListResult.setLastMenstrual(DateUtil.getyyyy_MM_dd(patients.getLastMenses())); + Date dueDate = DateUtil.addDay(DateUtil.addMonth(patients.getLastMenses(), 9), 7); + //预产期 + sieveListResult.setDueDate(DateUtil.getyyyy_MM_dd(dueDate)); + //建档机构 + sieveListResult.setFoundHospital(StringUtils.isNotEmpty(patients.getHospitalId()) ? organizationService.getOrganization(Integer.valueOf(patients.getHospitalId())).getName() : "--"); + } //转诊状态 0转诊 1待接收 2已转出