Commit 746beda9733dee95d090f64f39e269485d0e3bf0

Authored by wtt
1 parent 29feef838c

excel 2007版导入

Showing 2 changed files with 211 additions and 15 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SieveController.java View file @ 746beda
... ... @@ -394,7 +394,7 @@
394 394 @TokenRequired
395 395 public BaseResponse importSerologySieve(@RequestParam MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
396 396 LoginContext loginState = (LoginContext) request.getAttribute("loginContext");
397   - return sieveFacade.importSerologySieve(file, loginState.getId(), response);
  397 + return sieveFacade.importSerologySieve2(file, loginState.getId(), response);
398 398 }
399 399  
400 400  
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SieveFacade.java View file @ 746beda
... ... @@ -37,6 +37,10 @@
37 37 import org.apache.commons.fileupload.disk.DiskFileItem;
38 38 import org.apache.commons.lang.StringUtils;
39 39 import org.apache.commons.lang.math.NumberUtils;
  40 +import org.apache.poi.xssf.usermodel.XSSFCell;
  41 +import org.apache.poi.xssf.usermodel.XSSFRow;
  42 +import org.apache.poi.xssf.usermodel.XSSFSheet;
  43 +import org.apache.poi.xssf.usermodel.XSSFWorkbook;
40 44 import org.springframework.beans.factory.annotation.Autowired;
41 45 import org.springframework.beans.factory.annotation.Qualifier;
42 46 import org.springframework.data.mongodb.core.MongoTemplate;
... ... @@ -46,9 +50,7 @@
46 50 import org.springframework.web.multipart.commons.CommonsMultipartFile;
47 51  
48 52 import javax.servlet.http.HttpServletResponse;
49   -import java.io.File;
50   -import java.io.IOException;
51   -import java.io.OutputStream;
  53 +import java.io.*;
52 54 import java.util.*;
53 55 import java.util.concurrent.Callable;
54 56 import java.util.concurrent.Future;
55 57  
56 58  
57 59  
58 60  
59 61  
60 62  
... ... @@ -2662,25 +2664,28 @@
2662 2664 if(StringUtils.isEmpty(sive.getNumber())){
2663 2665 continue;
2664 2666 }
  2667 + data.put("ApplicationNo", "");//新增
2665 2668 data.put("SampleID", sive.getNumber());//样本号(标本号)
2666   - data.put("PatientID", sive.getPatientID());//孕妇编号
2667 2669 data.put("LastName", sive.getName());//姓名
2668 2670 data.put("FirstName", "");//姓名2
  2671 + data.put("PatientID", sive.getPatientID());//孕妇编号
2669 2672 // data.put("ApplicationNo", sive.getPatientID());//申请单号
2670 2673 data.put("BirthDate", sive.getBirthday());//生日
2671   - data.put("Address", sive.getPlaceDomicile());//地址
  2674 +// data.put("Address", sive.getPlaceDomicile());//地址
  2675 + data.put("Address", "");//地址
2672 2676 data.put("Phone", sive.getPhone());//电话
2673 2677 data.put("NoOfFetuses", sive.getNoOfFetuses());//胎儿数(胎数)
2674   - data.put("LMPDate", sive.getLastMenstrual());//末次月经
  2678 + data.put("LMPDate", sive.getLastMenstrual());//末次月经必填
2675 2679 data.put("Smoking", sive.getSmoking());//吸烟
2676 2680 data.put("Weight", sive.getWeight());//体重
2677 2681 data.put("Insulin", sive.getInsulin());//I-型糖尿病
2678 2682 data.put("CollectionDate", sive.getCollectionDate());//采样日期(采血日期)
2679 2683 data.put("ReceivedDate", sive.getSendTime());//送检日期
2680   - data.put("ScanDate", sive.getBcCheckDate());//B超日期(B超检查日期)
  2684 + data.put("ScanDate", sive.getBcCheckDate());//B超日期(B超检查日期)必填
2681 2685 data.put("CRL", sive.getCrl());//B超信息 CRL
2682 2686 data.put("BPD", sive.getBpd());//B超信息 bpd
2683 2687 data.put("HC", sive.gethC());
  2688 + data.put("NasalBone", sive.getNasalBone());//鼻骨
2684 2689 data.put("MannualEntry", sive.getMannualEntry());//B超孕天
2685 2690 data.put("NT", sive.getnT());
2686 2691 data.put("ResponsibleCode", sive.getResponsibleCode());//送检单位编号(送检医院)
2687 2692  
2688 2693  
... ... @@ -2691,11 +2696,12 @@
2691 2696 data.put("ExtractionDate", sive.getExtractionDate());//辅助生殖之提取日期
2692 2697 data.put("TransferDate", sive.getTransferDate());//辅助生殖之移植日期
2693 2698 data.put("DonorBirthDate", sive.getDonorBirthDate());//辅助生殖之捐赠者生日
2694   - data.put("NasalBone", sive.getNasalBone());//鼻骨
2695 2699 data.put("PatientType", sive.getPatientType());//孕妇筛查类型PatientType
  2700 + data.put("Monozygous", sive.getMonozygous());//单卵
  2701 + data.put("RecordID", "");//新增
2696 2702 /* data.put("Ethnicity", sive.getEthnicity());//种族(名族)
2697 2703 data.put("IdCard", sive.getCardNo());//身份证号
2698   - data.put("Monozygous", sive.getMonozygous());//单卵*/
  2704 + */
2699 2705 if(StringUtils.isEmpty(sive.getSieveApplyOrderModelId())){
2700 2706 continue;
2701 2707 }
2702 2708  
2703 2709  
... ... @@ -2720,10 +2726,11 @@
2720 2726 }
2721 2727  
2722 2728 private void cnamesMap(Map<String, String> cnames) {
  2729 + cnames.put("ApplicationNo", "ApplicationNo");
2723 2730 cnames.put("SampleID", "SampleID");//样本号
2724   - cnames.put("PatientID", "PatientID");//孕妇编号
2725 2731 cnames.put("LastName", "LastName");//姓名
2726 2732 cnames.put("FirstName", "FirstName");//姓名2
  2733 + cnames.put("PatientID", "PatientID");//孕妇编号
2727 2734 // cnames.put("ApplicationNo", "ApplicationNo");//申请单号
2728 2735 cnames.put("BirthDate", "BirthDate");//生日
2729 2736 cnames.put("Address", "Address");//地址
... ... @@ -2739,6 +2746,8 @@
2739 2746 cnames.put("CRL", "CRL");
2740 2747 cnames.put("BPD", "BPD");
2741 2748 cnames.put("HC", "HC");
  2749 + cnames.put("NasalBone", "NasalBone");//鼻骨
  2750 +
2742 2751 cnames.put("MannualEntry", "MannualEntry");//B超孕天
2743 2752 cnames.put("NT", "NT");
2744 2753 cnames.put("ResponsibleCode", "ResponsibleCode");//送检单位编号
2745 2754  
2746 2755  
2747 2756  
... ... @@ -2749,15 +2758,17 @@
2749 2758 cnames.put("ExtractionDate", "ExtractionDate");//辅助生殖之提取日期
2750 2759 cnames.put("TransferDate", "TransferDate");//辅助生殖之移植日期
2751 2760 cnames.put("DonorBirthDate", "DonorBirthDate");//辅助生殖之捐赠者生日
2752   - cnames.put("NasalBone", "NasalBone");//鼻骨
2753 2761 cnames.put("PatientType", "PatientType");//孕妇筛查类型
  2762 + cnames.put("Monozygous", "Monozygous");//单卵
  2763 + cnames.put("RecordID", "RecordID");
  2764 +
2754 2765 /* cnames.put("Ethnicity", "Ethnicity");//种族
2755   - cnames.put("IdCard", "IdCard");//身份证号
2756   - cnames.put("Monozygous", "Monozygous");//单卵*/
  2766 + cnames.put("IdCard", "IdCard");//身份证号*/
  2767 +
2757 2768 }
2758 2769  
2759 2770 /**
2760   - * 功能描述 产筛导入3.0版 血清学筛查
  2771 + * 功能描述 产筛导入3.0版 血清学筛查 excle 2003
2761 2772 * @author 武涛涛
2762 2773 * @date 2020/6/15
2763 2774 */
... ... @@ -2917,6 +2928,191 @@
2917 2928 }
2918 2929 return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功");
2919 2930  
  2931 + }
  2932 + /**
  2933 + * 功能描述 是读取2007 excle的方法
  2934 + * @author 武涛涛
  2935 + * @date 2020/6/23
  2936 + */
  2937 + public BaseResponse importSerologySieve2(MultipartFile file, Integer id, HttpServletResponse response) {
  2938 +
  2939 + try {
  2940 + //把MultipartFile转化为File 第一种
  2941 + CommonsMultipartFile cmf = (CommonsMultipartFile) file;
  2942 + DiskFileItem dfi = (DiskFileItem) cmf.getFileItem();
  2943 + File fo = dfi.getStoreLocation();
  2944 + // 创建对excel工作簿的引用
  2945 + XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(fo));
  2946 +
  2947 + // 创建对工作表的引用,这里是按索引引用,第一张工作表的索引为0.也可以按名引用
  2948 + XSSFSheet sheet = workbook.getSheetAt(0);
  2949 + // 需要得到总共的行数
  2950 + int rowNum = sheet.getLastRowNum();
  2951 + // 定义单元
  2952 + XSSFCell cell = null;
  2953 + List<ImportResult> list = new ArrayList<>();
  2954 + // 按行循环读取
  2955 + for (int j = 1; j <= rowNum; j++) {
  2956 + ImportResult importResult = new ImportResult();
  2957 + // 得到该行对象
  2958 + XSSFRow rowLine = sheet.getRow(j);
  2959 + // 获得该行的列数
  2960 + int colNum = rowLine.getLastCellNum();
  2961 + StringBuffer sb = new StringBuffer();
  2962 + // 按列读取每一行的各个单元格内容
  2963 + for (int i = 0; i < colNum; i++) {
  2964 + cell = rowLine.getCell(i);
  2965 + String cellValue = null;
  2966 + if (cell != null) {
  2967 + switch (cell.getCellType()) {
  2968 + // 如果是数字格式
  2969 + case XSSFCell.CELL_TYPE_NUMERIC:
  2970 + Integer number = new Integer( // 数字
  2971 + (int) cell.getNumericCellValue());
  2972 + cellValue = String.valueOf(number);
  2973 + break;
  2974 + case XSSFCell.CELL_TYPE_STRING: // 字符串
  2975 + cellValue = cell.getStringCellValue();
  2976 + break;
  2977 + default:
  2978 + cellValue = " ";
  2979 + break;
  2980 + }
  2981 +
  2982 + } else {
  2983 + cellValue = "";
  2984 + }
  2985 + switchMth(importResult, i, cellValue);
  2986 + //sb.append(cellValue).append("###");
  2987 +
  2988 + }
  2989 + list.add(importResult);
  2990 + System.out.println("list: " + list.size());
  2991 +
  2992 + //1 根据标本号更新数据
  2993 + if (StringUtils.isEmpty(importResult.get样本编号()) ) {
  2994 + continue;
  2995 + }
  2996 + String hospitalId = autoMatchFacade.getHospitalId(id);
  2997 + SieveApplyOrderQuery sieveApplyOrderQuery1 = new SieveApplyOrderQuery();
  2998 + sieveApplyOrderQuery1.setNumber(importResult.get样本编号());
  2999 + sieveApplyOrderQuery1.setYn(YnEnums.YES.getId());
  3000 + sieveApplyOrderQuery1.setHospitalId(hospitalId);
  3001 + List<SieveApplyOrderModel> list1 = applyOrderService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery1);
  3002 + if (CollectionUtils.isEmpty(list1) ) {
  3003 + continue;
  3004 + }
  3005 + SieveApplyOrderModel sieveApplyOrderModel1 = list1.get(0);
  3006 + //判断如果没有LymsSieveId就更新上
  3007 + if (StringUtils.isEmpty(sieveApplyOrderModel1.getLymsSieveId())) {
  3008 + SieveQuery sieveQuery = new SieveQuery();
  3009 + sieveQuery.setYn(YnEnums.YES.getId());
  3010 + sieveQuery.setParentId(sieveApplyOrderModel1.getParentId());
  3011 + sieveQuery.setHospitalId(hospitalId);
  3012 + sieveQuery.setStatus(2);
  3013 + List<SieveModel> modelList = sieveService.queryList(sieveQuery);
  3014 + if (CollectionUtils.isNotEmpty(modelList) && modelList.size() < 2) {
  3015 + SieveModel sieveModel = modelList.get(0);
  3016 + sieveApplyOrderModel1.setLymsSieveId(sieveModel.getId());
  3017 + applyOrderService.updateSieve(sieveApplyOrderModel1);
  3018 + }
  3019 + }
  3020 + //1.1 修改产筛申请内容,先暂时修改B超孕天
  3021 + //applyOrderService.updateSieve(sieveApplyOrderModel1);
  3022 +
  3023 + SieveAddRequest sieveAddRequest = new SieveAddRequest();
  3024 + sieveAddRequest.setPublishName(String.valueOf(id));//录入人员
  3025 + sieveAddRequest.setResultTime(importResult.get风险评估时间()); //结果录入时间
  3026 + if (StringUtils.isNotEmpty(importResult.getT21风险值())) {// 唐氏综合症 21-三体
  3027 + Map map = new HashMap();
  3028 + map.put("valueOne", "1");//郝总说固定值是1
  3029 + map.put("valueTwo", importResult.getT21风险值());
  3030 + sieveAddRequest.setTszhzValue(map);
  3031 + }
  3032 + if (StringUtils.isNotEmpty(importResult.getT21风险结果())) {
  3033 + if ("低风险".equals(importResult.getT21风险结果())) {
  3034 + sieveAddRequest.setTszhz("0");
  3035 + } else if ("高风险".equals(importResult.getT21风险结果())) {
  3036 + sieveAddRequest.setTszhz("2");
  3037 + }
  3038 + }
  3039 + if (StringUtils.isNotEmpty(importResult.getT18风险值())) {//18-三体 T18风险结果
  3040 + Map map = new HashMap();
  3041 + map.put("valueOne", "1");
  3042 + map.put("valueTwo", importResult.getT18风险值());
  3043 + sieveAddRequest.setSbstValue(map);
  3044 + }
  3045 + if (StringUtils.isNotEmpty(importResult.getT18风险结果())) {
  3046 + if ("低风险".equals(importResult.getT18风险结果())) {
  3047 + sieveAddRequest.setSbst("0");
  3048 + } else if ("高风险".equals(importResult.getT18风险结果())) {
  3049 + sieveAddRequest.setSbst("2");
  3050 + }
  3051 + }
  3052 + sieveAddRequest.setStzhz13Value(null); //13-三体 导入的excel表格中没有该字段
  3053 + sieveAddRequest.setStzhz13(null);
  3054 +
  3055 + if (StringUtils.isNotEmpty(importResult.getNTD风险值())) {// 神经管畸形 NTD NTD风险值
  3056 + Map map = new HashMap();
  3057 + map.put("valueOne", "1");
  3058 + map.put("valueTwo", importResult.getNTD风险值());
  3059 + sieveAddRequest.setSjgjxValue(map);
  3060 + ;
  3061 + }
  3062 + if (StringUtils.isNotEmpty(importResult.getNTD风险结果())) {
  3063 + if ("低风险".equals(importResult.getNTD风险结果())) {
  3064 + sieveAddRequest.setSjgjx("0");
  3065 + } else if ("高风险".equals(importResult.getNTD风险结果())) {
  3066 + sieveAddRequest.setSjgjx("2");
  3067 + }
  3068 + }
  3069 + if (StringUtils.isNotEmpty(importResult.gethCGb浓度())) {//hCGb浓度
  3070 + sieveAddRequest.setHcg(importResult.gethCGb浓度());
  3071 + }
  3072 + if (StringUtils.isNotEmpty(importResult.gethCGb校正MOM值())) {//hCGb校正MOM值
  3073 + sieveAddRequest.setHcgMom(importResult.gethCGb校正MOM值());
  3074 + }
  3075 +
  3076 + if (StringUtils.isNotEmpty(importResult.getAFP浓度())) {//AFP浓度
  3077 + sieveAddRequest.setHafp(importResult.getAFP浓度());
  3078 + }
  3079 + if (StringUtils.isNotEmpty(importResult.getAFP校正MOM值())) {//AFP校正MOM值
  3080 + sieveAddRequest.setHafpMom(importResult.getAFP校正MOM值());
  3081 + }
  3082 + if(StringUtils.isNotEmpty(importResult.getuE3UPDCN浓度())){ //uE3
  3083 + sieveAddRequest.setuE3(importResult.getuE3UPDCN浓度());
  3084 + }
  3085 + if(StringUtils.isNotEmpty(importResult.getuE3UPDCN校正MOM值())){ //uE3MOM
  3086 + sieveAddRequest.setuE3(importResult.getuE3UPDCN校正MOM值());
  3087 + }
  3088 + //sieveAddRequest.setCheckerId();
  3089 + //sieveAddRequest.setExamineId();
  3090 + sieveAddRequest.setParentId(sieveApplyOrderModel1.getParentId());
  3091 + sieveAddRequest.setLymsSieveId(sieveApplyOrderModel1.getLymsSieveId());
  3092 + //避免一个产筛申请出现多次结果
  3093 + SieveResultQuery sieveResultQuery = new SieveResultQuery();
  3094 + sieveResultQuery.setLymsSieveId(sieveApplyOrderModel1.getLymsSieveId());
  3095 + sieveResultQuery.setParentId(sieveApplyOrderModel1.getParentId());
  3096 + List<SieveResultModel> sieveResultModellist = sieveService.queryListSieveResult(sieveResultQuery);
  3097 + if(CollectionUtils.isNotEmpty(sieveResultModellist)){
  3098 + SieveResultModel sieveResultModel = sieveResultModellist.get(0);
  3099 + sieveAddRequest.setId(sieveResultModel.getId());
  3100 + addOneSieve(sieveAddRequest, id);
  3101 + }
  3102 + sieveAddRequest.setExamineId(String.valueOf(id)); //审核者
  3103 + sieveAddRequest.setCheckerId(String.valueOf(id)); //检验者
  3104 + addOneSieve(sieveAddRequest, id);
  3105 + //记录一下添加成功内容
  3106 + operateLogFacade.addModifyOptLog(id, Integer.parseInt(hospitalId),sieveAddRequest, sieveAddRequest, OptActionEnums.UPDATE.getId(), "导入添加产筛信息");
  3107 +
  3108 +
  3109 + }
  3110 +
  3111 + } catch (Exception e) {
  3112 + e.printStackTrace();
  3113 + return new BaseResponse().setErrorcode(ErrorCodeConstants.SYSTEM_ERROR).setErrormsg("导入失败");
  3114 + }
  3115 + return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功");
2920 3116 }
2921 3117  
2922 3118 private void switchMth(ImportResult importResult, int j, String str) {