From 746beda9733dee95d090f64f39e269485d0e3bf0 Mon Sep 17 00:00:00 2001 From: wtt Date: Tue, 23 Jun 2020 15:11:59 +0800 Subject: [PATCH] =?UTF-8?q?excel=202007=E7=89=88=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/web/controller/SieveController.java | 2 +- .../platform/operate/web/facade/SieveFacade.java | 224 +++++++++++++++++++-- 2 files changed, 211 insertions(+), 15 deletions(-) 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 1e6b80e..35fc01e 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 @@ -394,7 +394,7 @@ public class SieveController extends BaseController { @TokenRequired public BaseResponse importSerologySieve(@RequestParam MultipartFile file, HttpServletRequest request, HttpServletResponse response) { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - return sieveFacade.importSerologySieve(file, loginState.getId(), response); + return sieveFacade.importSerologySieve2(file, loginState.getId(), response); } 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 d124ed2..64fa9ea 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 @@ -37,6 +37,10 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.fileupload.disk.DiskFileItem; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.mongodb.core.MongoTemplate; @@ -46,9 +50,7 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; -import java.io.OutputStream; +import java.io.*; import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.Future; @@ -2662,25 +2664,28 @@ public class SieveFacade { if(StringUtils.isEmpty(sive.getNumber())){ continue; } + data.put("ApplicationNo", "");//新增 data.put("SampleID", sive.getNumber());//样本号(标本号) - data.put("PatientID", sive.getPatientID());//孕妇编号 data.put("LastName", sive.getName());//姓名 data.put("FirstName", "");//姓名2 + data.put("PatientID", sive.getPatientID());//孕妇编号 // data.put("ApplicationNo", sive.getPatientID());//申请单号 data.put("BirthDate", sive.getBirthday());//生日 - data.put("Address", sive.getPlaceDomicile());//地址 +// data.put("Address", sive.getPlaceDomicile());//地址 + data.put("Address", "");//地址 data.put("Phone", sive.getPhone());//电话 data.put("NoOfFetuses", sive.getNoOfFetuses());//胎儿数(胎数) - data.put("LMPDate", sive.getLastMenstrual());//末次月经 + data.put("LMPDate", sive.getLastMenstrual());//末次月经必填 data.put("Smoking", sive.getSmoking());//吸烟 data.put("Weight", sive.getWeight());//体重 data.put("Insulin", sive.getInsulin());//I-型糖尿病 data.put("CollectionDate", sive.getCollectionDate());//采样日期(采血日期) data.put("ReceivedDate", sive.getSendTime());//送检日期 - data.put("ScanDate", sive.getBcCheckDate());//B超日期(B超检查日期) + data.put("ScanDate", sive.getBcCheckDate());//B超日期(B超检查日期)必填 data.put("CRL", sive.getCrl());//B超信息 CRL data.put("BPD", sive.getBpd());//B超信息 bpd data.put("HC", sive.gethC()); + data.put("NasalBone", sive.getNasalBone());//鼻骨 data.put("MannualEntry", sive.getMannualEntry());//B超孕天 data.put("NT", sive.getnT()); data.put("ResponsibleCode", sive.getResponsibleCode());//送检单位编号(送检医院) @@ -2691,11 +2696,12 @@ public class SieveFacade { data.put("ExtractionDate", sive.getExtractionDate());//辅助生殖之提取日期 data.put("TransferDate", sive.getTransferDate());//辅助生殖之移植日期 data.put("DonorBirthDate", sive.getDonorBirthDate());//辅助生殖之捐赠者生日 - data.put("NasalBone", sive.getNasalBone());//鼻骨 data.put("PatientType", sive.getPatientType());//孕妇筛查类型PatientType + data.put("Monozygous", sive.getMonozygous());//单卵 + data.put("RecordID", "");//新增 /* data.put("Ethnicity", sive.getEthnicity());//种族(名族) data.put("IdCard", sive.getCardNo());//身份证号 - data.put("Monozygous", sive.getMonozygous());//单卵*/ + */ if(StringUtils.isEmpty(sive.getSieveApplyOrderModelId())){ continue; } @@ -2720,10 +2726,11 @@ public class SieveFacade { } private void cnamesMap(Map cnames) { + cnames.put("ApplicationNo", "ApplicationNo"); cnames.put("SampleID", "SampleID");//样本号 - cnames.put("PatientID", "PatientID");//孕妇编号 cnames.put("LastName", "LastName");//姓名 cnames.put("FirstName", "FirstName");//姓名2 + cnames.put("PatientID", "PatientID");//孕妇编号 // cnames.put("ApplicationNo", "ApplicationNo");//申请单号 cnames.put("BirthDate", "BirthDate");//生日 cnames.put("Address", "Address");//地址 @@ -2739,6 +2746,8 @@ public class SieveFacade { cnames.put("CRL", "CRL"); cnames.put("BPD", "BPD"); cnames.put("HC", "HC"); + cnames.put("NasalBone", "NasalBone");//鼻骨 + cnames.put("MannualEntry", "MannualEntry");//B超孕天 cnames.put("NT", "NT"); cnames.put("ResponsibleCode", "ResponsibleCode");//送检单位编号 @@ -2749,15 +2758,17 @@ public class SieveFacade { cnames.put("ExtractionDate", "ExtractionDate");//辅助生殖之提取日期 cnames.put("TransferDate", "TransferDate");//辅助生殖之移植日期 cnames.put("DonorBirthDate", "DonorBirthDate");//辅助生殖之捐赠者生日 - cnames.put("NasalBone", "NasalBone");//鼻骨 cnames.put("PatientType", "PatientType");//孕妇筛查类型 + cnames.put("Monozygous", "Monozygous");//单卵 + cnames.put("RecordID", "RecordID"); + /* cnames.put("Ethnicity", "Ethnicity");//种族 - cnames.put("IdCard", "IdCard");//身份证号 - cnames.put("Monozygous", "Monozygous");//单卵*/ + cnames.put("IdCard", "IdCard");//身份证号*/ + } /** - * 功能描述 产筛导入3.0版 血清学筛查 + * 功能描述 产筛导入3.0版 血清学筛查 excle 2003 * @author 武涛涛 * @date 2020/6/15 */ @@ -2918,6 +2929,191 @@ public class SieveFacade { return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); } + /** + * 功能描述 是读取2007 excle的方法 + * @author 武涛涛 + * @date 2020/6/23 + */ + public BaseResponse importSerologySieve2(MultipartFile file, Integer id, HttpServletResponse response) { + + try { + //把MultipartFile转化为File 第一种 + CommonsMultipartFile cmf = (CommonsMultipartFile) file; + DiskFileItem dfi = (DiskFileItem) cmf.getFileItem(); + File fo = dfi.getStoreLocation(); + // 创建对excel工作簿的引用 + XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(fo)); + + // 创建对工作表的引用,这里是按索引引用,第一张工作表的索引为0.也可以按名引用 + XSSFSheet sheet = workbook.getSheetAt(0); + // 需要得到总共的行数 + int rowNum = sheet.getLastRowNum(); + // 定义单元 + XSSFCell cell = null; + List list = new ArrayList<>(); + // 按行循环读取 + for (int j = 1; j <= rowNum; j++) { + ImportResult importResult = new ImportResult(); + // 得到该行对象 + XSSFRow rowLine = sheet.getRow(j); + // 获得该行的列数 + int colNum = rowLine.getLastCellNum(); + StringBuffer sb = new StringBuffer(); + // 按列读取每一行的各个单元格内容 + for (int i = 0; i < colNum; i++) { + cell = rowLine.getCell(i); + String cellValue = null; + if (cell != null) { + switch (cell.getCellType()) { + // 如果是数字格式 + case XSSFCell.CELL_TYPE_NUMERIC: + Integer number = new Integer( // 数字 + (int) cell.getNumericCellValue()); + cellValue = String.valueOf(number); + break; + case XSSFCell.CELL_TYPE_STRING: // 字符串 + cellValue = cell.getStringCellValue(); + break; + default: + cellValue = " "; + break; + } + + } else { + cellValue = ""; + } + switchMth(importResult, i, cellValue); + //sb.append(cellValue).append("###"); + + } + list.add(importResult); + System.out.println("list: " + list.size()); + + //1 根据标本号更新数据 + if (StringUtils.isEmpty(importResult.get样本编号()) ) { + continue; + } + String hospitalId = autoMatchFacade.getHospitalId(id); + SieveApplyOrderQuery sieveApplyOrderQuery1 = new SieveApplyOrderQuery(); + sieveApplyOrderQuery1.setNumber(importResult.get样本编号()); + sieveApplyOrderQuery1.setYn(YnEnums.YES.getId()); + sieveApplyOrderQuery1.setHospitalId(hospitalId); + List list1 = applyOrderService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery1); + if (CollectionUtils.isEmpty(list1) ) { + continue; + } + SieveApplyOrderModel sieveApplyOrderModel1 = list1.get(0); + //判断如果没有LymsSieveId就更新上 + if (StringUtils.isEmpty(sieveApplyOrderModel1.getLymsSieveId())) { + SieveQuery sieveQuery = new SieveQuery(); + sieveQuery.setYn(YnEnums.YES.getId()); + sieveQuery.setParentId(sieveApplyOrderModel1.getParentId()); + sieveQuery.setHospitalId(hospitalId); + sieveQuery.setStatus(2); + List modelList = sieveService.queryList(sieveQuery); + if (CollectionUtils.isNotEmpty(modelList) && modelList.size() < 2) { + SieveModel sieveModel = modelList.get(0); + sieveApplyOrderModel1.setLymsSieveId(sieveModel.getId()); + applyOrderService.updateSieve(sieveApplyOrderModel1); + } + } + //1.1 修改产筛申请内容,先暂时修改B超孕天 + //applyOrderService.updateSieve(sieveApplyOrderModel1); + + SieveAddRequest sieveAddRequest = new SieveAddRequest(); + sieveAddRequest.setPublishName(String.valueOf(id));//录入人员 + sieveAddRequest.setResultTime(importResult.get风险评估时间()); //结果录入时间 + if (StringUtils.isNotEmpty(importResult.getT21风险值())) {// 唐氏综合症 21-三体 + Map map = new HashMap(); + map.put("valueOne", "1");//郝总说固定值是1 + map.put("valueTwo", importResult.getT21风险值()); + sieveAddRequest.setTszhzValue(map); + } + if (StringUtils.isNotEmpty(importResult.getT21风险结果())) { + if ("低风险".equals(importResult.getT21风险结果())) { + sieveAddRequest.setTszhz("0"); + } else if ("高风险".equals(importResult.getT21风险结果())) { + sieveAddRequest.setTszhz("2"); + } + } + if (StringUtils.isNotEmpty(importResult.getT18风险值())) {//18-三体 T18风险结果 + Map map = new HashMap(); + map.put("valueOne", "1"); + map.put("valueTwo", importResult.getT18风险值()); + sieveAddRequest.setSbstValue(map); + } + if (StringUtils.isNotEmpty(importResult.getT18风险结果())) { + if ("低风险".equals(importResult.getT18风险结果())) { + sieveAddRequest.setSbst("0"); + } else if ("高风险".equals(importResult.getT18风险结果())) { + sieveAddRequest.setSbst("2"); + } + } + sieveAddRequest.setStzhz13Value(null); //13-三体 导入的excel表格中没有该字段 + sieveAddRequest.setStzhz13(null); + + if (StringUtils.isNotEmpty(importResult.getNTD风险值())) {// 神经管畸形 NTD NTD风险值 + Map map = new HashMap(); + map.put("valueOne", "1"); + map.put("valueTwo", importResult.getNTD风险值()); + sieveAddRequest.setSjgjxValue(map); + ; + } + if (StringUtils.isNotEmpty(importResult.getNTD风险结果())) { + if ("低风险".equals(importResult.getNTD风险结果())) { + sieveAddRequest.setSjgjx("0"); + } else if ("高风险".equals(importResult.getNTD风险结果())) { + sieveAddRequest.setSjgjx("2"); + } + } + if (StringUtils.isNotEmpty(importResult.gethCGb浓度())) {//hCGb浓度 + sieveAddRequest.setHcg(importResult.gethCGb浓度()); + } + if (StringUtils.isNotEmpty(importResult.gethCGb校正MOM值())) {//hCGb校正MOM值 + sieveAddRequest.setHcgMom(importResult.gethCGb校正MOM值()); + } + + if (StringUtils.isNotEmpty(importResult.getAFP浓度())) {//AFP浓度 + sieveAddRequest.setHafp(importResult.getAFP浓度()); + } + if (StringUtils.isNotEmpty(importResult.getAFP校正MOM值())) {//AFP校正MOM值 + sieveAddRequest.setHafpMom(importResult.getAFP校正MOM值()); + } + if(StringUtils.isNotEmpty(importResult.getuE3UPDCN浓度())){ //uE3 + sieveAddRequest.setuE3(importResult.getuE3UPDCN浓度()); + } + if(StringUtils.isNotEmpty(importResult.getuE3UPDCN校正MOM值())){ //uE3MOM + sieveAddRequest.setuE3(importResult.getuE3UPDCN校正MOM值()); + } + //sieveAddRequest.setCheckerId(); + //sieveAddRequest.setExamineId(); + sieveAddRequest.setParentId(sieveApplyOrderModel1.getParentId()); + sieveAddRequest.setLymsSieveId(sieveApplyOrderModel1.getLymsSieveId()); + //避免一个产筛申请出现多次结果 + SieveResultQuery sieveResultQuery = new SieveResultQuery(); + sieveResultQuery.setLymsSieveId(sieveApplyOrderModel1.getLymsSieveId()); + sieveResultQuery.setParentId(sieveApplyOrderModel1.getParentId()); + List sieveResultModellist = sieveService.queryListSieveResult(sieveResultQuery); + if(CollectionUtils.isNotEmpty(sieveResultModellist)){ + SieveResultModel sieveResultModel = sieveResultModellist.get(0); + sieveAddRequest.setId(sieveResultModel.getId()); + addOneSieve(sieveAddRequest, id); + } + sieveAddRequest.setExamineId(String.valueOf(id)); //审核者 + sieveAddRequest.setCheckerId(String.valueOf(id)); //检验者 + addOneSieve(sieveAddRequest, id); + //记录一下添加成功内容 + operateLogFacade.addModifyOptLog(id, Integer.parseInt(hospitalId),sieveAddRequest, sieveAddRequest, OptActionEnums.UPDATE.getId(), "导入添加产筛信息"); + + + } + + } catch (Exception e) { + e.printStackTrace(); + return new BaseResponse().setErrorcode(ErrorCodeConstants.SYSTEM_ERROR).setErrormsg("导入失败"); + } + return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); + } private void switchMth(ImportResult importResult, int j, String str) { switch (j) { -- 1.8.3.1