Bläddra i källkod

基本标准词导入导出

wangfeng 4 år sedan
förälder
incheckning
00d0a4fdbf

+ 29 - 0
cdssman-service/src/main/java/com/diagbot/dto/ExportConceptAllDTO.java

@@ -0,0 +1,29 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-06-01 17:21
+ */
+@Setter
+@Getter
+public class ExportConceptAllDTO {
+    @Excel(name = "医学标准术语",width = 40, orderNum = "1", isImportField = "true" )
+    private String libName;
+    @Excel(name = "同义词",width = 40, orderNum = "2", isImportField = "true" )
+    private String synonymName;
+    @Excel(name = "类型",orderNum = "3", isImportField = "true" )
+    private String typeName;
+    @Excel(name = "性别", mergeRely = {1,2,3},orderNum = "4", isImportField = "true" )
+    private Integer sexType;
+    @Excel(name = "最小年龄", orderNum = "5", isImportField = "true" )
+    private Double minAge;
+    @Excel(name = "最大年龄", orderNum = "6", isImportField = "true" )
+    private Double maxAge;
+    @Excel(name = "错误信息", orderNum = "7", isImportField = "true" )
+    private String msg;
+}

+ 5 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlLibraryInfoFacade.java

@@ -12,6 +12,7 @@ import com.diagbot.vo.KlConceptSaveSubVO;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
+import java.util.Set;
 
 /**
  * @author wangfeng
@@ -57,4 +58,8 @@ public class KlLibraryInfoFacade extends KlLibraryInfoServiceImpl {
         klLibraryInfoSub.setGmtModified(now);
         return this.save(klLibraryInfoSub);
     }
+
+    public Set<String> getLibraryNameAlls() {
+        return getLibraryNameAll();
+    }
 }

+ 256 - 46
cdssman-service/src/main/java/com/diagbot/facade/TermImportFacade.java

@@ -1,15 +1,40 @@
 package com.diagbot.facade;
 
-import com.diagbot.enums.LexiconEnum;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.ExportConceptAllDTO;
+import com.diagbot.entity.KlConcept;
+import com.diagbot.entity.KlConceptCommon;
+import com.diagbot.entity.KlLexicon;
+import com.diagbot.entity.KlLibraryInfo;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.KlConceptCommonService;
+import com.diagbot.service.KlConceptService;
+import com.diagbot.service.KlDiseaseService;
+import com.diagbot.service.KlDrugService;
+import com.diagbot.service.KlLibraryInfoService;
+import com.diagbot.service.KlLisService;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.Cn2SpellUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ExcelUtils;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.vo.ImportConceptAllVO;
 import com.diagbot.vo.ImportConceptSubVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -19,35 +44,104 @@ import java.util.stream.Collectors;
  */
 @Component
 public class TermImportFacade {
-    public void exporTermExcelAll(MultipartFile file) {
+    @Autowired
+    KlLibraryInfoFacade klLibraryInfoFacade;
+    @Autowired
+    KlLexiconFacade klLexiconFacade;
+    @Autowired
+    KlConceptFacade klConceptFacade;
+    @Autowired
+    KlConceptCommonFacade klConceptCommonFacade;
+    @Autowired
+    KlLisFacade klLisFacade;
+    @Autowired
+    KlDiseaseFacade klDiseaseFacade;
+    @Autowired
+    KlDrugFacade klDrugFacade;
+    @Autowired
+    @Qualifier("klConceptServiceImpl")
+    private KlConceptService klConceptService;
+    @Autowired
+    @Qualifier("klLibraryInfoServiceImpl")
+    private KlLibraryInfoService klLibraryInfoService;
+    @Autowired
+    @Qualifier("klConceptCommonServiceImpl")
+    private KlConceptCommonService klConceptCommonService;
+    @Autowired
+    @Qualifier("klDiseaseServiceImpl")
+    private KlDiseaseService klDiseaseService;
+    @Autowired
+    @Qualifier("klDrugServiceImpl")
+    KlDrugService klDrugService;
+    @Autowired
+    @Qualifier("klLisServiceImpl")
+    KlLisService klLisService;
+
+
+    public void exporTermExcelAll(HttpServletResponse response, MultipartFile file) {
         //导入处理
-        List<ImportConceptAllVO> conceptList = ExcelUtils.importExcel(file, 0, 1, ImportConceptAllVO.class);
+        List<ImportConceptAllVO> conceptList = ExcelUtils.importExcelNew(file, 0, 1, ImportConceptAllVO.class);
+        Map<Integer, ImportConceptAllVO> conceptExportMap = conceptList.stream()
+                .collect(Collectors.toMap(ImportConceptAllVO::getRowNum, questionInfo -> questionInfo));
         //校验数据
+        QueryWrapper<KlLexicon> klLexiconQuer = new QueryWrapper<>();
+        klLexiconQuer.eq("is_deleted", IsDeleteEnum.N.getKey());
+        List<KlLexicon> list = klLexiconFacade.list(klLexiconQuer);
+        Map<String, Integer> lexiconMap = list.stream()
+                .collect(Collectors.toMap(KlLexicon::getName, KlLexicon::getCode));
+        //问题数据
+        Map<Integer, String> errMsg = new HashMap<Integer, String>();
+        Map<String, Integer> libNameMap = new HashMap<String, Integer>();
         List<Integer> sexType = Arrays.asList(1, 2, 3);
-        List<String> messages = new ArrayList<>();
-        for (ImportConceptAllVO data : conceptList) {
-            if (null != data.getLibName() || data.getLibName().equals("")) {
-                messages.add("第" + data.getRowNum() + "行标准术语为空!");
+        for (Integer row : conceptExportMap.keySet()) {
+            ImportConceptAllVO data = conceptExportMap.get(row);
+            //校验标准数据
+            if (StringUtil.isBlank(data.getLibName())) {
+                errMsg.put(data.getRowNum(), "--标准术语为空--");
             }
-            Integer key = LexiconEnum.getEnum(data.getLibName()).getKey();
-            if (null == key) {
-                messages.add("第" + data.getRowNum() + "行,类型错误!");
+            //类型
+            Integer key = lexiconMap.get(data.getTypeName());
+            if (null != key) {
+                data.setLibType(key);
+            } else {
+                errMsg.put(data.getRowNum(), errMsg.get(data.getRowNum()) == null ? "--类型错误--" :
+                        errMsg.get(data.getRowNum()) + "--类型错误--");
             }
-            data.setLibType(key);
-            if (null != data.getSexType() && !sexType.contains(data.getSexType())) {
-                messages.add("第" + data.getRowNum() + "行,性别错误!");
+            //性别
+            if (null == data.getSexType() || null != data.getSexType() && !sexType.contains(data.getSexType())) {
+                errMsg.put(data.getRowNum(), errMsg.get(data.getRowNum()) == null ? "--性别错误--" :
+                        errMsg.get(data.getRowNum()) + "--性别错误--");
             }
-            if (null != data.getMinAge() && data.getMinAge() < 0.0) {
-                messages.add("第" + data.getRowNum() + "行,最小年龄错误!");
+            if (null == data.getMinAge() || null != data.getMinAge() && data.getMinAge() < 0.0) {
+                errMsg.put(data.getRowNum(), errMsg.get(data.getRowNum()) == null ? "--最小年龄错误--" :
+                        errMsg.get(data.getRowNum()) + "--最小年龄错误--");
             }
-            if (null != data.getMaxAge() && data.getMaxAge() > 200) {
-                messages.add("第" + data.getRowNum() + "行,最大年龄错误!");
+            if (null == data.getMaxAge() || null != data.getMaxAge() && data.getMaxAge() > 200) {
+                errMsg.put(data.getRowNum(), errMsg.get(data.getRowNum()) == null ? "--最大年龄错误--" :
+                        errMsg.get(data.getRowNum()) + "--最大年龄错误--");
+            }
+            if (null != data.getMaxAge() && null != data.getMinAge()) {
+                boolean b = data.getMaxAge() < data.getMinAge();
+                if (b) {
+                    errMsg.put(data.getRowNum(), errMsg.get(data.getRowNum()) == null ? "--最大年龄小于最小年龄--" :
+                            errMsg.get(data.getRowNum()) + "--最大年龄小于最小年龄--");
+                }
             }
+            //标准词数据重复校验
+            if (null != data.getLibName() && null != data.getLibType()) {
+                Integer integer = libNameMap.get(data.getLibName() + "_" + data.getLibType());
+                if (null == integer) {
+                    libNameMap.put(data.getLibName() + "_" + data.getLibType(), data.getRowNum());
+                } else {
+                    errMsg.put(data.getRowNum(), errMsg.get(data.getRowNum()) == null ? "----标准词数据重复----" :
+                            errMsg.get(data.getRowNum()) + "--标准词数据重复--");
+                }
 
+            }
         }
-
         //拆同义词
-        for (ImportConceptAllVO termExcelVO : conceptList) {
+        for (Integer row : conceptExportMap.keySet()) {
+            ImportConceptAllVO termExcelVO = conceptExportMap.get(row);
             Integer libType = termExcelVO.getLibType();
             String libName = termExcelVO.getLibName();
             String synonymName = termExcelVO.getSynonymName();
@@ -61,40 +155,156 @@ public class TermImportFacade {
                     sub.setLibType(libType);
                     sub.setStatus(1);
                     sub.setSynonymName(r.trim());
+                    //同义词数据重复校验
+                    if (null != r.trim() && null != libType) {
+                        Integer integer = libNameMap.get(r.trim() + "_" + libType);
+                        if (null == integer) {
+                            libNameMap.put(r.trim() + "_" + libType, termExcelVO.getRowNum());
+                        } else {
+                            errMsg.put(termExcelVO.getRowNum(), errMsg.get(termExcelVO.getRowNum()) == null ? "--同义词数据重复--" :
+                                    errMsg.get(termExcelVO.getRowNum()) + "--同义词数据重复--");
+                        }
+
+                    }
                     synonymsList.add(sub);
                 }
             }
             termExcelVO.setSynonymsList(synonymsList);
         }
-        //校验
-        long startTime = System.currentTimeMillis();
-        //找出重复标准词
-        List<String> standard = conceptList.stream()
-                .collect(Collectors.toMap(e -> e.getLibName(), e -> 1, (a, b) -> a + b)) // 获得元素出现频率的 Map,键为元素,值为元素出现的次数
-                .entrySet().stream() // Set<Entry>转换为Stream<Entry>
-                .filter(entry -> entry.getValue() > 1) // 过滤出元素出现次数大于 1 的 entry
-                .map(entry -> entry.getKey()) // 获得 entry 的键(重复元素)对应的 Stream
-                .collect(Collectors.toList());
-
-        List<ImportConceptSubVO> synonymsListNew = new ArrayList<>();
-        for (ImportConceptAllVO conceptData : conceptList) {
-            List<ImportConceptSubVO> synonymsList = conceptData.getSynonymsList();
-            for (ImportConceptSubVO subNew : synonymsList) {
-                synonymsListNew.add(subNew);
+        Set<String> set = klLibraryInfoFacade.getLibraryNameAlls(); // 加载词库数据
+        for (String libName : libNameMap.keySet()) {
+            Integer integer = libNameMap.get(libName);
+            if (set.contains(libName)) {
+                errMsg.put(integer, errMsg.get(integer) == null ? "--数据库中存在标准词或同义词--" :
+                        errMsg.get(integer) + "--数据库中存在标准词或同义词--");
             }
         }
-        //找出重复同义词
-        List<String> consent = synonymsListNew.stream()
-                .collect(Collectors.toMap(e -> e.getSynonymName(), e -> 1, (a, b) -> a + b)) // 获得元素出现频率的 Map,键为元素,值为元素出现的次数
-                .entrySet().stream() // Set<Entry>转换为Stream<Entry>
-                .filter(entry -> entry.getValue() > 1) // 过滤出元素出现次数大于 1 的 entry
-                .map(entry -> entry.getKey()) // 获得 entry 的键(重复元素)对应的 Stream
-                .collect(Collectors.toList());
-        //找出标准词出现在同义词
-        List<String> collectAll = conceptList.stream().filter(
-                (ImportConceptAllVO) -> synonymsListNew.stream().map(ImportConceptSubVO::getSynonymName).collect(Collectors.toList()).contains(ImportConceptAllVO.getLibName())
-        ).map(entry -> entry.getSynonymName()).collect(Collectors.toList());
-        long endTime = System.currentTimeMillis(); //获取结束时间
 
+        //要导出的数据
+        List<ExportConceptAllDTO> exportConceptAll = new ArrayList<>();
+        List<ImportConceptAllVO> conceptListNew = new ArrayList<>();
+        for (Integer i : errMsg.keySet()) {
+            ImportConceptAllVO importConceptAllVO = conceptExportMap.get(i);
+            ExportConceptAllDTO etx = new ExportConceptAllDTO();
+            BeanUtil.copyProperties(importConceptAllVO, etx);
+            etx.setMsg(errMsg.get(i));
+            exportConceptAll.add(etx);
+            conceptListNew.add(importConceptAllVO);
+        }
+        //要插入数据库的数据
+        List<ImportConceptAllVO> conceptListData = new ArrayList<>();
+        for (Integer row : conceptExportMap.keySet()) {
+            ImportConceptAllVO str1 = conceptExportMap.get(row);
+            if (!conceptListNew.contains(str1)) {
+                if (null != str1.getMaxAge() && null != str1.getMaxAge() && null != str1.getSexType()) {
+                    str1.setIsHasCommon(1);
+                }
+                conceptListData.add(str1);
+            }
+        }
+        if (ListUtil.isNotEmpty(conceptListData)) {
+            saveAllImport(conceptListData);
+        }
+        String fileName = "错误结果导出.xls";
+        ExcelUtils.exportExcel(exportConceptAll, null, "sheet1", ExportConceptAllDTO.class, fileName, response, 12.8f);
     }
+
+    private void saveAllImport(List<ImportConceptAllVO> conceptList) {
+        List<KlLibraryInfo> libraryInfos = new ArrayList<>();
+        Date now = DateUtil.now();
+        boolean res = false;
+        for (ImportConceptAllVO data : conceptList) {
+            KlLibraryInfo klLibraryInfo = new KlLibraryInfo();
+            klLibraryInfo.setName(data.getLibName());
+            klLibraryInfo.setGmtCreate(now);
+            klLibraryInfo.setGmtModified(now);
+            klLibraryInfo.setRemark("dr");
+            klLibraryInfo.setIsConcept(1);
+            klLibraryInfo.setTypeId(data.getLibType());
+            String spell = "";
+            if (StringUtil.isNotBlank(data.getLibName())) {
+                spell = data.getLibName().replaceAll("[\\pP‘’“”,,]", "");
+                spell = Cn2SpellUtil.converterToFirstSpell(spell);
+            }
+            klLibraryInfo.setSpell(spell);
+            libraryInfos.add(klLibraryInfo);
+        }
+        res = klLibraryInfoService.saveBatch(libraryInfos);
+        List<KlConcept> klConcepts = new ArrayList<>();
+        for (KlLibraryInfo klLibraryInfo : libraryInfos) {
+            KlConcept klConcept = new KlConcept();
+            klConcept.setLibId(klLibraryInfo.getId());
+            klConcept.setLibName(klLibraryInfo.getName());
+            klConcept.setLibType(klLibraryInfo.getTypeId());
+            klConcepts.add(klConcept);
+        }
+        res = klConceptService.saveBatch(klConcepts);
+        Map<Long, KlConcept> map = EntityUtil.makeEntityMap(klConcepts, "libId");
+        for (KlLibraryInfo klLibraryInfo : libraryInfos) {
+            klLibraryInfo.setConceptId(map.get(klLibraryInfo.getId()).getId());
+        }
+        res = klLibraryInfoService.updateBatchById(libraryInfos);
+
+        //增加同义词
+        Map<String, ImportConceptAllVO> conceptListMap = conceptList.stream().collect(Collectors.toMap(r -> r.getLibName(), r -> r));
+
+        Map<String, KlConcept> klConceptsMap = klConcepts.stream().collect(Collectors.toMap(r -> r.getLibName(), r -> r));
+
+        List<KlLibraryInfo> libraryInfosSub = new ArrayList<>();
+
+        for (Map.Entry<String, KlConcept> klConData : klConceptsMap.entrySet()) {
+            KlConcept value = klConData.getValue();
+            ImportConceptAllVO importConceptAllVOS = conceptListMap.get(value.getLibName());
+            List<ImportConceptSubVO> synonymsList = importConceptAllVOS.getSynonymsList();
+            if (ListUtil.isNotEmpty(synonymsList)) {
+                for (ImportConceptSubVO subVO : synonymsList) {
+                    KlLibraryInfo klLibraryInfo = new KlLibraryInfo();
+                    klLibraryInfo.setName(subVO.getSynonymName());
+                    klLibraryInfo.setIsConcept(0);
+                    klLibraryInfo.setConceptId(value.getId());
+                    klLibraryInfo.setTypeId(value.getLibType());
+                    String spell = "";
+                    if (StringUtil.isNotBlank(subVO.getSynonymName())) {
+                        spell = subVO.getSynonymName().replaceAll("[\\pP‘’“”]", "");
+                        spell = Cn2SpellUtil.converterToFirstSpell(spell);
+                    }
+                    klLibraryInfo.setSpell(spell);
+                    libraryInfosSub.add(klLibraryInfo);
+                }
+            }
+        }
+        res = klLibraryInfoService.saveBatch(libraryInfosSub);
+        //年龄
+        List<KlConceptCommon> conceptCommonList = new ArrayList<>();
+        for (Map.Entry<String, ImportConceptAllVO> entry : conceptListMap.entrySet()) {
+            ImportConceptAllVO value = entry.getValue();
+            for (Map.Entry<String, KlConcept> entry2 : klConceptsMap.entrySet()) {
+                KlConcept value1 = entry2.getValue();
+                if (value.getLibName().equals(value1.getLibName())) {
+                    if (null != value.getIsHasCommon() && value.getIsHasCommon().equals(1)) {
+                        KlConceptCommon conceptCommon = new KlConceptCommon();
+                        conceptCommon.setSexType(value.getSexType());
+                        conceptCommon.setMaxAge(value.getMaxAge());
+                        conceptCommon.setMinAge(value.getMinAge());
+                        conceptCommon.setConceptId(value1.getId());
+                        conceptCommon.setCreator("-2");
+                        conceptCommon.setModifier("-2");
+                        conceptCommon.setGmtCreate(now);
+                        conceptCommon.setGmtModified(now);
+                        conceptCommonList.add(conceptCommon);
+                    }
+                }
+
+            }
+
+        }
+        res = klConceptCommonService.saveBatch(conceptCommonList);
+    }
+
+    public void exportTemplateAll(HttpServletResponse response) {
+        String fileName = "模板.xls";
+        ExcelUtils.exportExcel(new ArrayList<>(), null, "sheet1", ExportConceptAllDTO.class, fileName, response, 12.8f);
+    }
+
+
 }

+ 3 - 0
cdssman-service/src/main/java/com/diagbot/mapper/KlLibraryInfoMapper.java

@@ -6,6 +6,7 @@ import com.diagbot.vo.KlConceptInfoVO;
 import com.diagbot.vo.KlLibraryInfoVO;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -17,4 +18,6 @@ import java.util.List;
  */
 public interface KlLibraryInfoMapper extends BaseMapper<KlLibraryInfo> {
     List<KlLibraryInfo> getLib(KlLibraryInfoVO klLibraryInfoVO);
+
+    Set<String> getLibraryNameAll();
 }

+ 2 - 0
cdssman-service/src/main/java/com/diagbot/service/KlLibraryInfoService.java

@@ -5,6 +5,7 @@ import com.diagbot.entity.KlLibraryInfo;
 import com.diagbot.vo.KlLibraryInfoVO;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -16,4 +17,5 @@ import java.util.List;
  */
 public interface KlLibraryInfoService extends IService<KlLibraryInfo> {
     List<KlLibraryInfo> getLib(KlLibraryInfoVO klLibraryInfoVO);
+    Set<String> getLibraryNameAll();
 }

+ 7 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/KlLibraryInfoServiceImpl.java

@@ -9,6 +9,7 @@ import com.diagbot.vo.KlLibraryInfoVO;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -25,4 +26,10 @@ public class KlLibraryInfoServiceImpl extends ServiceImpl<KlLibraryInfoMapper, K
     public List<KlLibraryInfo> getLib(KlLibraryInfoVO klLibraryInfoVO) {
         return baseMapper.getLib(klLibraryInfoVO);
     }
+
+    @Override
+    public Set<String> getLibraryNameAll() {
+        return baseMapper.getLibraryNameAll() ;
+    }
+
 }

+ 57 - 0
cdssman-service/src/main/java/com/diagbot/util/ExcelUtils.java

@@ -12,14 +12,17 @@ import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.ExcelExportStylerUserImpl;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -224,4 +227,58 @@ public class ExcelUtils {
         }
         return list;
     }
+    public static <T> List<T> importExcelNew(MultipartFile file, Integer titleRows, Integer headerRows,
+                                             Class<T> pojoClass) {
+        if (file == null) {
+            return null;
+        }
+        InputStream inputStream = null;
+        try {
+            inputStream = file.getInputStream();
+            if (inputStream.available() > 512000) {
+                throw new CommonException(CommonErrorCode.FAIL, "文件最大支持500KB!");
+            }
+            Workbook wb = null;
+            String fileName = file.getOriginalFilename();
+            if (fileName.lastIndexOf(".") != -1) {
+                String type = fileName.substring(fileName.lastIndexOf("."));
+                if (type.equals(".xls")) {
+                    wb = new HSSFWorkbook(inputStream);
+                } else if (type.equals(".xlsx")) {
+                    wb = new XSSFWorkbook(inputStream);
+                }
+            }
+            if (wb != null) {
+                Sheet sheet = wb.getSheetAt(0);
+                int lastRowNum = sheet.getLastRowNum();
+                if (lastRowNum > 5000) {
+                    throw new CommonException(CommonErrorCode.FAIL, "最大支持5000行!");
+                }
+            } else {
+                throw new CommonException(CommonErrorCode.FAIL, "非excel文件无法解析!");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, e.getMessage());
+            // return response.failure("化验excel文件解析出错!");
+        }
+
+        ImportParams params = new ImportParams();
+        params.setTitleRows(titleRows);
+        params.setHeadRows(headerRows);
+        List<T> list = null;
+        try {
+            list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);
+        } catch (NoSuchElementException e) {
+            // throw new NormalException("excel文件不能为空");
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "excel文件不能为空");
+        } catch (ExcelImportException e) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "校验失败,请使用模板进行数据导入");
+        } catch (Exception e) {
+            // throw new NormalException(e.getMessage());
+            System.out.println(e.getMessage());
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "导入Excel异常");
+        }
+        return list;
+    }
 }

+ 17 - 4
cdssman-service/src/main/java/com/diagbot/web/TermImportController.java

@@ -1,17 +1,21 @@
 package com.diagbot.web;
 
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.facade.TermImportFacade;
-import com.diagbot.vo.TermImportExcalVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.ibatis.annotations.TypeDiscriminator;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * @author wangfeng
  * @Description:
@@ -25,11 +29,20 @@ public class TermImportController {
     @Autowired
     TermImportFacade termImportFacade;
 
-    @ApiOperation(value = "医学标准术语模板导[by:wangfeng]",
+    @ApiOperation(value = "医学标准术语模板导[by:wangfeng]",
             notes = "医学标准术语模板导出[by:wangfeng]")
     @PostMapping("/exportTermExcel")
     @SysLogger("exporTermExcel")
-    public void exporTermExcel(@RequestParam("termfile") MultipartFile file) {
-        termImportFacade.exporTermExcelAll(file);
+    @DSTransactional
+    public void exporTermExcel(HttpServletResponse response, @RequestParam("termfile") MultipartFile file) {
+        termImportFacade.exporTermExcelAll(response, file);
+    }
+    @ApiOperation(value = "导出模板[by:wangfeng]",
+            notes = "导出模板[by:wangfeng]")
+    @PostMapping("/exportExcelTemplates")
+    @SysLogger("exportExcelTemplates")
+    public void exportExcelModule(HttpServletResponse response) {
+        termImportFacade.exportTemplateAll(response);
     }
+
 }

+ 16 - 12
cdssman-service/src/main/resources/mapper/KlLibraryInfoMapper.xml

@@ -4,18 +4,18 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.diagbot.entity.KlLibraryInfo">
-        <id column="id" property="id" />
-        <result column="is_deleted" property="isDeleted" />
-        <result column="gmt_create" property="gmtCreate" />
-        <result column="gmt_modified" property="gmtModified" />
-        <result column="creator" property="creator" />
-        <result column="modifier" property="modifier" />
-        <result column="name" property="name" />
-        <result column="concept_id" property="conceptId" />
-        <result column="is_concept" property="isConcept" />
-        <result column="type_id" property="typeId" />
-        <result column="spell" property="spell" />
-        <result column="remark" property="remark" />
+        <id column="id" property="id"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="gmt_create" property="gmtCreate"/>
+        <result column="gmt_modified" property="gmtModified"/>
+        <result column="creator" property="creator"/>
+        <result column="modifier" property="modifier"/>
+        <result column="name" property="name"/>
+        <result column="concept_id" property="conceptId"/>
+        <result column="is_concept" property="isConcept"/>
+        <result column="type_id" property="typeId"/>
+        <result column="spell" property="spell"/>
+        <result column="remark" property="remark"/>
     </resultMap>
 
     <select id="getLib"
@@ -32,4 +32,8 @@
             AND UPPER(a.name) LIKE CONCAT('%', UPPER(trim(#{synonymName})), '%')
         </if>
     </select>
+    <select id="getLibraryNameAll" resultType="java.lang.String">
+        SELECT CONCAT(b.name, '_', b.type_id) FROM kl_library_info b
+        WHERE b.is_deleted = 'N'
+    </select>
 </mapper>