|
@@ -1,15 +1,40 @@
|
|
package com.diagbot.facade;
|
|
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.ExcelUtils;
|
|
|
|
+import com.diagbot.util.ListUtil;
|
|
|
|
+import com.diagbot.util.StringUtil;
|
|
import com.diagbot.vo.ImportConceptAllVO;
|
|
import com.diagbot.vo.ImportConceptAllVO;
|
|
import com.diagbot.vo.ImportConceptSubVO;
|
|
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.stereotype.Component;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Arrays;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.Set;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -19,35 +44,104 @@ import java.util.stream.Collectors;
|
|
*/
|
|
*/
|
|
@Component
|
|
@Component
|
|
public class TermImportFacade {
|
|
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<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();
|
|
Integer libType = termExcelVO.getLibType();
|
|
String libName = termExcelVO.getLibName();
|
|
String libName = termExcelVO.getLibName();
|
|
String synonymName = termExcelVO.getSynonymName();
|
|
String synonymName = termExcelVO.getSynonymName();
|
|
@@ -61,40 +155,156 @@ public class TermImportFacade {
|
|
sub.setLibType(libType);
|
|
sub.setLibType(libType);
|
|
sub.setStatus(1);
|
|
sub.setStatus(1);
|
|
sub.setSynonymName(r.trim());
|
|
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);
|
|
synonymsList.add(sub);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
termExcelVO.setSynonymsList(synonymsList);
|
|
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);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|