KlConceptFacade.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515
  1. package com.diagbot.facade;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.diagbot.dto.GetAllForRelationDTO;
  4. import com.diagbot.dto.IndexBatchDTO;
  5. import com.diagbot.dto.KllisDetailDTO;
  6. import com.diagbot.entity.KlConcept;
  7. import com.diagbot.entity.KlDisease;
  8. import com.diagbot.entity.KlLibraryInfo;
  9. import com.diagbot.entity.KlOperation;
  10. import com.diagbot.entity.TcmDisease;
  11. import com.diagbot.entity.TcmSyndrome;
  12. import com.diagbot.enums.ConceptTypeEnum;
  13. import com.diagbot.enums.IsDeleteEnum;
  14. import com.diagbot.enums.LexiconEnum;
  15. import com.diagbot.enums.MatchSourceEnum;
  16. import com.diagbot.enums.StatusEnum;
  17. import com.diagbot.service.impl.KlConceptServiceImpl;
  18. import com.diagbot.util.EntityUtil;
  19. import com.diagbot.util.ListUtil;
  20. import com.diagbot.util.StringUtil;
  21. import com.diagbot.vo.ConceptVO;
  22. import com.diagbot.vo.FilterVO;
  23. import com.diagbot.vo.IndexByApprovalVO;
  24. import com.diagbot.vo.KllisDetailVO;
  25. import com.diagbot.vo.SearchCollectionConceptVO;
  26. import com.diagbot.vo.SearchConceptVO;
  27. import com.google.common.collect.Lists;
  28. import org.apache.commons.lang3.StringUtils;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.stereotype.Component;
  31. import java.util.ArrayList;
  32. import java.util.Arrays;
  33. import java.util.HashMap;
  34. import java.util.List;
  35. import java.util.Map;
  36. import java.util.stream.Collectors;
  37. /**
  38. * @Description:
  39. * @author: gaodm
  40. * @time: 2021/1/26 13:05
  41. */
  42. @Component
  43. public class KlConceptFacade extends KlConceptServiceImpl {
  44. @Autowired
  45. private KlDiseaseFacade klDiseaseFacade;
  46. @Autowired
  47. private KlOperationFacade klOperationFacade;
  48. @Autowired
  49. private TcmDiseaseFacade tcmDiseaseFacade;
  50. @Autowired
  51. private TcmSyndromeFacade tcmSyndromeFacade;
  52. @Autowired
  53. private KlLibraryInfoFacade klLibraryInfoFacade;
  54. /**
  55. * 批量校验标准术语
  56. *
  57. * @param conceptVO
  58. * @return
  59. */
  60. public List<IndexBatchDTO> getConceptNames(ConceptVO conceptVO) {
  61. List<IndexBatchDTO> retList = Lists.newLinkedList();
  62. Integer type = convertType(conceptVO.getType(), false);
  63. if (conceptVO.getSource().equals(-1)) {
  64. if (ListUtil.isEmpty(conceptVO.getIds())) {
  65. return retList;
  66. }
  67. //根据id检索
  68. QueryWrapper<KlConcept> queryWrapper = new QueryWrapper<>();
  69. queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
  70. .in("id", conceptVO.getIds());
  71. if (conceptVO.getStatus() != null) {
  72. queryWrapper.eq("status", conceptVO.getStatus());
  73. }
  74. List<KlConcept> concepts = this.list(queryWrapper);
  75. for (KlConcept concept : concepts) {
  76. IndexBatchDTO dto = new IndexBatchDTO();
  77. dto.setId(concept.getId());
  78. dto.setName(concept.getLibName());
  79. dto.setStatus(concept.getStatus());
  80. dto.setType(convertType(concept.getLibType(), true));
  81. retList.add(dto);
  82. }
  83. } else if (conceptVO.getSource().equals(MatchSourceEnum.StandWord.getKey())) {
  84. QueryWrapper<KlConcept> queryWrapper = new QueryWrapper<>();
  85. queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
  86. if (conceptVO.getStatus() != null) {
  87. queryWrapper.eq("status", conceptVO.getStatus());
  88. }
  89. if (ListUtil.isNotEmpty(conceptVO.getNames())) {
  90. queryWrapper.in("lib_name", conceptVO.getNames());
  91. }
  92. if (conceptVO.getType().equals(ConceptTypeEnum.Pacs.getKey())) {
  93. //辅检同时检索辅检项目和辅检子项
  94. queryWrapper.in("lib_type", Arrays.asList(LexiconEnum.PacsName.getKey(), LexiconEnum.PacsSubName.getKey()));
  95. } else {
  96. queryWrapper.eq("lib_type", type);
  97. }
  98. List<KlConcept> concepts = this.list(queryWrapper);
  99. if (ListUtil.isNotEmpty(concepts)) {
  100. for (KlConcept concept : concepts) {
  101. IndexBatchDTO dto = new IndexBatchDTO();
  102. dto.setId(concept.getId());
  103. dto.setName(concept.getLibName());
  104. dto.setStatus(concept.getStatus());
  105. retList.add(dto);
  106. }
  107. }
  108. } else if (conceptVO.getSource().equals(MatchSourceEnum.SynonymsWord.getKey())) {
  109. if (ListUtil.isEmpty(conceptVO.getNames())) {
  110. return retList;
  111. }
  112. QueryWrapper<KlLibraryInfo> queryWrapper = new QueryWrapper<>();
  113. queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
  114. .eq("is_concept", 0)
  115. .in("name", conceptVO.getNames());
  116. if (conceptVO.getType().equals(ConceptTypeEnum.Pacs.getKey())) {
  117. //辅检同时检索辅检项目和辅检子项
  118. queryWrapper.in("type_id", Arrays.asList(LexiconEnum.PacsName.getKey(), LexiconEnum.PacsSubName.getKey()));
  119. } else {
  120. queryWrapper.eq("type_id", type);
  121. }
  122. List<KlLibraryInfo> libratyInfos = klLibraryInfoFacade.list(queryWrapper);
  123. if (ListUtil.isEmpty(libratyInfos)) {
  124. return retList;
  125. }
  126. Map<Long, List<KlLibraryInfo>> libraryInfoMap
  127. = libratyInfos.stream().collect(Collectors.groupingBy(KlLibraryInfo::getConceptId));
  128. List<Long> synonymsRelatedConceptIds
  129. = libratyInfos.stream().map(KlLibraryInfo::getConceptId).collect(Collectors.toList());
  130. QueryWrapper<KlConcept> conceptQueryWrapper = new QueryWrapper<>();
  131. conceptQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
  132. .in("id", synonymsRelatedConceptIds);
  133. if (conceptVO.getStatus() != null) {
  134. conceptQueryWrapper.eq("status", conceptVO.getStatus());
  135. }
  136. List<KlConcept> synonymsRelatedConcepts = this.list(conceptQueryWrapper);
  137. Map<Long, KlConcept> conceptMap
  138. = synonymsRelatedConcepts.stream().collect(Collectors.toMap(KlConcept::getId, v -> v));
  139. if (conceptMap != null && conceptMap.size() > 0) {
  140. for (Map.Entry<Long, KlConcept> entry : conceptMap.entrySet()) {
  141. KlConcept concept = entry.getValue();
  142. if (libraryInfoMap.containsKey(entry.getKey())) {
  143. for (KlLibraryInfo libraryInfo : libraryInfoMap.get(entry.getKey())) {
  144. if (!conceptVO.getNames().contains(libraryInfo.getName())) {
  145. continue;
  146. }
  147. IndexBatchDTO indexBatchDTO = new IndexBatchDTO();
  148. indexBatchDTO.setId(concept.getId());
  149. indexBatchDTO.setName(concept.getLibName());
  150. indexBatchDTO.setStatus(concept.getStatus());
  151. indexBatchDTO.setSynonyms(libraryInfo.getName());
  152. retList.add(indexBatchDTO);
  153. }
  154. }
  155. }
  156. }
  157. } else if (conceptVO.getSource().equals(MatchSourceEnum.Code.getKey())) {
  158. if (ListUtil.isEmpty(conceptVO.getNames())) {
  159. return retList;
  160. }
  161. List<Long> conceptIds = Lists.newArrayList();
  162. Map<Long, List<String>> codeMap = new HashMap<>();
  163. if (type.equals(LexiconEnum.Disease.getKey())) {
  164. List<KlDisease> diseases = klDiseaseFacade.list(new QueryWrapper<KlDisease>()
  165. .eq("is_deleted", IsDeleteEnum.N.getKey())
  166. .in("icd10_code", conceptVO.getNames()));
  167. if (ListUtil.isNotEmpty(diseases)) {
  168. conceptIds = diseases.stream().map(KlDisease::getConceptId).distinct().collect(Collectors.toList());
  169. codeMap = diseases.stream()
  170. .collect(Collectors.groupingBy(KlDisease::getConceptId,
  171. Collectors.mapping(KlDisease::getIcd10Code, Collectors.toList())));
  172. }
  173. } else if (type.equals(LexiconEnum.Operation.getKey())) {
  174. List<KlOperation> operations = klOperationFacade.list(new QueryWrapper<KlOperation>()
  175. .eq("is_deleted", IsDeleteEnum.N.getKey())
  176. .in("operation_code", conceptVO.getNames()));
  177. if (ListUtil.isNotEmpty(operations)) {
  178. conceptIds = operations.stream().map(KlOperation::getConceptId).distinct().collect(Collectors.toList());
  179. codeMap = operations.stream()
  180. .collect(Collectors.groupingBy(KlOperation::getConceptId,
  181. Collectors.mapping(KlOperation::getOperationCode, Collectors.toList())));
  182. }
  183. } else if (type.equals(LexiconEnum.Tcmdisease.getKey())) {
  184. List<TcmDisease> tcmDiseases = tcmDiseaseFacade.list(new QueryWrapper<TcmDisease>()
  185. .eq("is_deleted", IsDeleteEnum.N.getKey())
  186. .in("code", conceptVO.getNames()));
  187. if (ListUtil.isNotEmpty(tcmDiseases)) {
  188. conceptIds = tcmDiseases.stream().map(TcmDisease::getConceptId).distinct().collect(Collectors.toList());
  189. codeMap = tcmDiseases.stream().collect(Collectors.groupingBy(TcmDisease::getConceptId,
  190. Collectors.mapping(TcmDisease::getCode, Collectors.toList())));
  191. }
  192. } else if (type.equals(LexiconEnum.Tcmsyndrome.getKey())) {
  193. List<TcmSyndrome> tcmSyndromes = tcmSyndromeFacade.list(new QueryWrapper<TcmSyndrome>()
  194. .eq("is_deleted", IsDeleteEnum.N.getKey())
  195. .in("code", conceptVO.getNames()));
  196. if (ListUtil.isNotEmpty(tcmSyndromes)) {
  197. conceptIds = tcmSyndromes.stream().map(TcmSyndrome::getConceptId).distinct().collect(Collectors.toList());
  198. codeMap = tcmSyndromes.stream().collect(Collectors.groupingBy(TcmSyndrome::getConceptId,
  199. Collectors.mapping(TcmSyndrome::getCode, Collectors.toList())));
  200. }
  201. }
  202. QueryWrapper<KlConcept> klConceptQueryWrapper = new QueryWrapper<>();
  203. klConceptQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
  204. .in("id", conceptIds);
  205. if (conceptVO.getStatus() != null) {
  206. klConceptQueryWrapper.eq("status", conceptVO.getStatus());
  207. }
  208. QueryWrapper<KlConcept> qw = new QueryWrapper<KlConcept>()
  209. .eq("is_deleted", IsDeleteEnum.N.getKey())
  210. .in("id", conceptIds);
  211. if (conceptVO.getStatus() != null) {
  212. qw.eq("status", conceptVO.getStatus());
  213. }
  214. List<KlConcept> concepts = this.list(qw);
  215. Map<Long, KlConcept> conceptMap
  216. = concepts.stream().collect(Collectors.toMap(KlConcept::getId, v -> v));
  217. if (conceptMap != null && conceptMap.size() > 0) {
  218. for (Map.Entry<Long, KlConcept> entry : conceptMap.entrySet()) {
  219. KlConcept concept = entry.getValue();
  220. if (codeMap.containsKey(entry.getKey())) {
  221. for (String code : codeMap.get(entry.getKey())) {
  222. if (!conceptVO.getNames().contains(code)) {
  223. continue;
  224. }
  225. IndexBatchDTO indexBatchDTO = new IndexBatchDTO();
  226. indexBatchDTO.setId(concept.getId());
  227. indexBatchDTO.setName(concept.getLibName());
  228. indexBatchDTO.setCode(code);
  229. indexBatchDTO.setStatus(concept.getStatus());
  230. retList.add(indexBatchDTO);
  231. }
  232. }
  233. }
  234. }
  235. }
  236. if (ListUtil.isEmpty(retList)) {
  237. return retList;
  238. }
  239. //关联编码
  240. List<Long> conceptIds = retList.stream().map(IndexBatchDTO::getId).collect(Collectors.toList());
  241. //诊断关联编码
  242. List<KlDisease> diseases = klDiseaseFacade.list(new QueryWrapper<KlDisease>()
  243. .eq("is_deleted", IsDeleteEnum.N.getKey())
  244. .in("concept_id", conceptIds));
  245. if (ListUtil.isNotEmpty(diseases)) {
  246. Map<Long, KlDisease> idMap = diseases.stream().collect(Collectors.toMap(KlDisease::getConceptId, v -> v));
  247. for (IndexBatchDTO dto : retList) {
  248. if (idMap.containsKey(dto.getId())) {
  249. dto.setCode(idMap.get(dto.getId()).getIcd10Code());
  250. }
  251. }
  252. }
  253. //手术关联编码
  254. List<KlOperation> operations = klOperationFacade.list(new QueryWrapper<KlOperation>()
  255. .eq("is_deleted", IsDeleteEnum.N.getKey())
  256. .in("concept_id", conceptIds));
  257. if (ListUtil.isNotEmpty(operations)) {
  258. Map<Long, KlOperation> idMap = operations.stream().collect(Collectors.toMap(KlOperation::getConceptId, v -> v));
  259. for (IndexBatchDTO dto : retList) {
  260. if (idMap.containsKey(dto.getId())) {
  261. dto.setCode(idMap.get(dto.getId()).getOperationCode());
  262. }
  263. }
  264. }
  265. //中医疾病关联编码
  266. List<TcmDisease> tcmDiseases = tcmDiseaseFacade.list(new QueryWrapper<TcmDisease>()
  267. .eq("is_deleted", IsDeleteEnum.N.getKey())
  268. .in("concept_id", conceptIds));
  269. if (ListUtil.isNotEmpty(tcmDiseases)) {
  270. Map<Long, TcmDisease> idMap = tcmDiseases.stream().collect(Collectors.toMap(TcmDisease::getConceptId, v -> v));
  271. for (IndexBatchDTO dto : retList) {
  272. if (idMap.containsKey(dto.getId())) {
  273. dto.setCode(idMap.get(dto.getId()).getCode());
  274. }
  275. }
  276. }
  277. //中医证候关联编码
  278. List<TcmSyndrome> tcmSyndromes = tcmSyndromeFacade.list(new QueryWrapper<TcmSyndrome>()
  279. .eq("is_deleted", IsDeleteEnum.N.getKey())
  280. .in("concept_id", conceptIds));
  281. if (ListUtil.isNotEmpty(tcmSyndromes)) {
  282. Map<Long, TcmSyndrome> idMap = tcmSyndromes.stream().collect(Collectors.toMap(TcmSyndrome::getConceptId, v -> v));
  283. for (IndexBatchDTO dto : retList) {
  284. if (idMap.containsKey(dto.getId())) {
  285. dto.setCode(idMap.get(dto.getId()).getCode());
  286. }
  287. }
  288. }
  289. return retList;
  290. }
  291. /**
  292. * 术语模糊检索
  293. *
  294. * @param filterVO
  295. * @return
  296. */
  297. public List<IndexBatchDTO> filter(FilterVO filterVO) {
  298. List<IndexBatchDTO> retList = Lists.newArrayList();
  299. QueryWrapper<KlConcept> queryWrapper = new QueryWrapper<>();
  300. queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
  301. .like("lib_name", filterVO.getInputStr());
  302. if (filterVO.getStatus() != null) {
  303. queryWrapper.eq("status", filterVO.getStatus());
  304. }
  305. List<KlConcept> klConcepts = this.list(queryWrapper);
  306. for (KlConcept concept : klConcepts) {
  307. IndexBatchDTO indexBatchDTO = new IndexBatchDTO();
  308. indexBatchDTO.setId(concept.getId());
  309. indexBatchDTO.setName(concept.getLibName());
  310. indexBatchDTO.setStatus(concept.getStatus());
  311. Integer type = convertType(concept.getLibType(), true);
  312. if (type != null) {
  313. indexBatchDTO.setType(type);
  314. retList.add(indexBatchDTO);
  315. }
  316. }
  317. return retList;
  318. }
  319. /**
  320. * 国药准字校验
  321. *
  322. * @param indexByApprovalVO
  323. * @return
  324. */
  325. @Override
  326. public List<IndexBatchDTO> indexByApproval(IndexByApprovalVO indexByApprovalVO) {
  327. if (ListUtil.isEmpty(indexByApprovalVO.getApprovalList())) {
  328. return new ArrayList<>();
  329. }
  330. //国药准字取字母+数字编码
  331. /* String regex = "[a-zA-Z]+\\d{8}";
  332. Pattern pattern = Pattern.compile(regex);
  333. List<String> approvals = Lists.newArrayList();
  334. for (String str : indexByApprovalVO.getApprovalList()) {
  335. if (StringUtils.isBlank(str)) {
  336. continue;
  337. }
  338. Matcher matcher = pattern.matcher(str);
  339. if (matcher.find()) {
  340. approvals.add(matcher.group());
  341. }
  342. }
  343. indexByApprovalVO.setApprovalList(approvals);*/
  344. return super.indexByApproval(indexByApprovalVO);
  345. }
  346. /**
  347. * 类型互转
  348. *
  349. * @param type
  350. * @param reverse
  351. * @return
  352. */
  353. public Integer convertType(Integer type, Boolean reverse) {
  354. Integer retType = null;
  355. if (type == null) {
  356. return retType;
  357. }
  358. if (reverse) {
  359. if (type.equals(LexiconEnum.LisName.getKey())
  360. || type.equals(LexiconEnum.LisSubName.getKey())) {
  361. retType = ConceptTypeEnum.LisPack.getKey();
  362. } else if (type.equals(LexiconEnum.PacsName.getKey())
  363. || type.equals(LexiconEnum.PacsSubName.getKey())) {
  364. retType = ConceptTypeEnum.Pacs.getKey();
  365. } else if (type.equals(LexiconEnum.Disease.getKey())) {
  366. retType = ConceptTypeEnum.Disease.getKey();
  367. } else if (type.equals(LexiconEnum.Medicine.getKey())) {
  368. retType = ConceptTypeEnum.Drug.getKey();
  369. } else if (type.equals(LexiconEnum.Operation.getKey())) {
  370. retType = ConceptTypeEnum.Operation.getKey();
  371. } else if (type.equals(LexiconEnum.Dept.getKey())) {
  372. retType = ConceptTypeEnum.Dept.getKey();
  373. } else if (type.equals(LexiconEnum.Transfusion.getKey())) {
  374. retType = ConceptTypeEnum.Transfusion.getKey();
  375. } else if (type.equals(LexiconEnum.Scale.getKey())) {
  376. retType = ConceptTypeEnum.Scale.getKey();
  377. } else if (type.equals(LexiconEnum.Nurse.getKey())) {
  378. retType = ConceptTypeEnum.Nurse.getKey();
  379. } else if (type.equals(LexiconEnum.Tcmdisease.getKey())) {
  380. retType = ConceptTypeEnum.Tcmdisease.getKey();
  381. } else if (type.equals(LexiconEnum.Tcmsyndrome.getKey())) {
  382. retType = ConceptTypeEnum.Tcmsyndrome.getKey();
  383. } else if (type.equals(LexiconEnum.Anesthesia.getKey())) {
  384. retType = ConceptTypeEnum.Anesthesia.getKey();
  385. } else if (type.equals(LexiconEnum.Form.getKey())) {
  386. retType = ConceptTypeEnum.Form.getKey();
  387. }
  388. } else {
  389. switch (type) {
  390. case 1:
  391. retType = LexiconEnum.LisName.getKey();
  392. break;
  393. case 2:
  394. retType = LexiconEnum.LisSubName.getKey();
  395. break;
  396. case 3:
  397. retType = LexiconEnum.PacsName.getKey();
  398. break;
  399. case 4:
  400. retType = LexiconEnum.Disease.getKey();
  401. break;
  402. case 5:
  403. retType = LexiconEnum.Medicine.getKey();
  404. break;
  405. case 6:
  406. retType = LexiconEnum.Operation.getKey();
  407. break;
  408. case 7:
  409. retType = LexiconEnum.Dept.getKey();
  410. break;
  411. case 8:
  412. retType = LexiconEnum.Transfusion.getKey();
  413. break;
  414. case 10:
  415. retType = LexiconEnum.Scale.getKey();
  416. break;
  417. case 11:
  418. retType = LexiconEnum.Nurse.getKey();
  419. break;
  420. case 12:
  421. retType = LexiconEnum.Tcmdisease.getKey();
  422. break;
  423. case 13:
  424. retType = LexiconEnum.Tcmsyndrome.getKey();
  425. break;
  426. case 14:
  427. retType = LexiconEnum.Anesthesia.getKey();
  428. break;
  429. case 15:
  430. retType = LexiconEnum.Form.getKey();
  431. default:
  432. break;
  433. }
  434. }
  435. return retType;
  436. }
  437. /**
  438. * 术语集合新增
  439. *
  440. * @param searchConceptVO
  441. * @return
  442. */
  443. public List<GetAllForRelationDTO> addConceptClass(SearchConceptVO searchConceptVO) {
  444. List<GetAllForRelationDTO> getAllForRelationDTOS = this.searchByTypeAndNameAdd(searchConceptVO);
  445. return getAllForRelationDTOS;
  446. }
  447. /**
  448. * 规则维护术语查询
  449. *
  450. * @param searchConceptVO
  451. * @return
  452. */
  453. public List<GetAllForRelationDTO> searchConceptRuleClass(SearchConceptVO searchConceptVO) {
  454. List<GetAllForRelationDTO> getAllForRelationDTOS = this.searchByTypeAndName(searchConceptVO);
  455. return getAllForRelationDTOS;
  456. }
  457. public List<GetAllForRelationDTO> searchConceptByNameAndLibType(SearchConceptVO searchConceptVO) {
  458. List<GetAllForRelationDTO> getAllForRelationDTOS = Lists.newArrayList();
  459. String name = searchConceptVO.getName();
  460. Integer libType = searchConceptVO.getLibType();
  461. List<Long> excludedConceptIds = searchConceptVO.getExcludedConceptIds();
  462. if (StringUtils.isNotBlank(name) && libType != null) {
  463. List<KlConcept> conceptList = this.list(new QueryWrapper<KlConcept>()
  464. .eq("is_deleted", IsDeleteEnum.N.getKey())
  465. .like(StringUtil.isNotBlank(name), "lib_name", name.trim())
  466. .eq("lib_type", libType)
  467. .eq("status", StatusEnum.Enable.getKey())
  468. .notIn(ListUtil.isNotEmpty(excludedConceptIds), "id", excludedConceptIds)
  469. .last("limit 100"));
  470. if (ListUtil.isNotEmpty(conceptList)) {
  471. getAllForRelationDTOS = conceptList.stream().map(x -> {
  472. GetAllForRelationDTO getAllForRelationDTO = new GetAllForRelationDTO();
  473. getAllForRelationDTO.setConceptNameType(x.getLibName());
  474. getAllForRelationDTO.setConceptName(x.getLibName());
  475. getAllForRelationDTO.setConceptId(x.getId());
  476. getAllForRelationDTO.setLibType(x.getLibType());
  477. return getAllForRelationDTO;
  478. }).collect(Collectors.toList());
  479. }
  480. }
  481. return getAllForRelationDTOS;
  482. }
  483. public Map<String, KllisDetailDTO> getLisDetaisByNamesFac(KllisDetailVO kllisDetailVO) {
  484. List<KllisDetailDTO> list = this.getLisDetaisByNames(kllisDetailVO);
  485. Map<String, KllisDetailDTO> res = EntityUtil.makeEntityMap(list, "libName");
  486. return res;
  487. }
  488. public List<GetAllForRelationDTO> searchCollectionConceptFac(SearchCollectionConceptVO searchCollectionConceptVO) {
  489. searchCollectionConceptVO.setNames(searchCollectionConceptVO.getNames().stream().filter(x -> StringUtil.isNotBlank(x)).collect(Collectors.toList()));
  490. List<GetAllForRelationDTO> getAllForRelationDTOS = this.searchCollectionConcept(searchCollectionConceptVO);
  491. return getAllForRelationDTOS;
  492. }
  493. }