ScratchWordsService.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package cn.cslg.pas.service.business;
  2. import cn.cslg.pas.common.dto.QueryScratchWordsDTO;
  3. import cn.cslg.pas.common.dto.SwQueryDTO;
  4. import cn.cslg.pas.common.dto.business.UpdateScratchWordsDTO;
  5. import cn.cslg.pas.common.model.cronModel.Personnel;
  6. import cn.cslg.pas.common.model.cronModel.PersonnelVO;
  7. import cn.cslg.pas.common.model.cronModel.Records;
  8. import cn.cslg.pas.common.utils.CacheUtils;
  9. import cn.cslg.pas.common.utils.LoginUtils;
  10. import cn.cslg.pas.common.vo.ScratchWordsVO;
  11. import cn.cslg.pas.domain.business.ScratchWords;
  12. import cn.cslg.pas.domain.es.Marking;
  13. import cn.cslg.pas.domain.es.Patent;
  14. import cn.cslg.pas.exception.XiaoShiException;
  15. import cn.cslg.pas.mapper.ScratchWordsMapper;
  16. import cn.cslg.pas.service.business.es.EsPatentService;
  17. import cn.cslg.pas.service.business.es.EsScratchWordsService;
  18. import cn.cslg.pas.service.business.es.EsService;
  19. import cn.cslg.pas.service.permissions.PermissionService;
  20. import co.elastic.clients.elasticsearch.core.search.Hit;
  21. import com.alibaba.fastjson.JSONObject;
  22. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  23. import lombok.RequiredArgsConstructor;
  24. import lombok.extern.slf4j.Slf4j;
  25. import org.springframework.beans.BeanUtils;
  26. import org.springframework.context.annotation.Lazy;
  27. import org.springframework.stereotype.Service;
  28. import java.util.ArrayList;
  29. import java.util.List;
  30. import java.util.Map;
  31. import java.util.stream.Collectors;
  32. /**
  33. * @Author xiexiang
  34. * @Date 2024/1/10
  35. */
  36. @Slf4j
  37. @Service
  38. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  39. public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, ScratchWords> {
  40. private final CacheUtils cacheUtils;
  41. private final LoginUtils loginUtils;
  42. private final EsScratchWordsService esScratchWordsService;
  43. private final EsPatentService esPatentService;
  44. private final PermissionService permissionService;
  45. /**
  46. * 新增划词高亮
  47. *
  48. * @param scratchWords
  49. */
  50. public String add(ScratchWords scratchWords) {
  51. //获取当前登陆人信息
  52. PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  53. if (personnelVO != null) {
  54. //设置创建人id
  55. scratchWords.setMarkUserId(personnelVO.getId());
  56. //设置租户id
  57. scratchWords.setPublicTenantId(personnelVO.getTenantId());
  58. } else {
  59. throw new XiaoShiException("未查询到创建人信息");
  60. }
  61. //数据入表
  62. String id = esScratchWordsService.addScratchWords(scratchWords);
  63. return id;
  64. }
  65. /**
  66. * 更新划词高亮
  67. *
  68. * @param updateScratchWordsDTO
  69. */
  70. public String update(UpdateScratchWordsDTO updateScratchWordsDTO) {
  71. String id = updateScratchWordsDTO.getId();
  72. Marking marking = new Marking();
  73. BeanUtils.copyProperties(updateScratchWordsDTO, marking);
  74. id = esScratchWordsService.updateScratchWords(id, marking);
  75. return id;
  76. }
  77. /**
  78. * 查询划词高亮
  79. *
  80. * @param queryScratchWordsDTO
  81. * @return
  82. */
  83. public Records query(QueryScratchWordsDTO queryScratchWordsDTO) {
  84. Records records = esScratchWordsService.queryScratchWord(queryScratchWordsDTO);
  85. List<ScratchWordsVO> scratchWordsVOS = (List<ScratchWordsVO>) records.getData();
  86. if(scratchWordsVOS!=null) {
  87. this.loadData(scratchWordsVOS);
  88. }
  89. records.setData(scratchWordsVOS);
  90. records.setSize(queryScratchWordsDTO.getSize());
  91. records.setCurrent(queryScratchWordsDTO.getCurrent());
  92. return records;
  93. }
  94. /**
  95. * 删除划词高亮
  96. *
  97. * @param ids
  98. **/
  99. public List<String> removeById(List<String> ids) {
  100. ids.forEach(item -> {
  101. try {
  102. esScratchWordsService.removeById(item);
  103. } catch (Exception e) {
  104. throw new XiaoShiException("删除错误");
  105. }
  106. });
  107. return ids;
  108. }
  109. private void loadData(List<ScratchWordsVO> scratchWordsVOS) {
  110. List<String> ids = scratchWordsVOS.stream().map(ScratchWordsVO::getMarkUserId).collect(Collectors.toList());
  111. List<String> patentNos = scratchWordsVOS.stream().map(ScratchWordsVO::getPatentNo).collect(Collectors.toList());
  112. //查询创建人名称
  113. List<Personnel> personnels = new ArrayList<>();
  114. List<Patent> patents = new ArrayList<>();
  115. if (ids.size() != 0) {
  116. try {
  117. String res = permissionService.getPersonnelByIdsFromPCS(ids);
  118. JSONObject jsonObject = JSONObject.parseObject(res);
  119. personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
  120. } catch (Exception e) {
  121. }
  122. }
  123. if (patentNos.size() != 0) {
  124. try {
  125. patents = esPatentService.getPatentsByNo(patentNos,false,null,null);
  126. } catch (Exception e) {
  127. }
  128. }
  129. for (ScratchWordsVO scratchWordsVO : scratchWordsVOS) {
  130. Personnel personnel = personnels.stream().filter(item -> item.getId().equals(scratchWordsVO.getMarkUserId())).findFirst().orElse(null);
  131. if (personnel != null) {
  132. scratchWordsVO.setCreateName(personnel.getPersonnelName());
  133. }
  134. Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(scratchWordsVO.getPatentNo())).findFirst().orElse(null);
  135. if (patent != null) {
  136. if (patent.getTitle() != null && patent.getTitle().size() > 0) {
  137. scratchWordsVO.setTitle(patent.getTitle().get(0).getTextContent());
  138. }
  139. }
  140. }
  141. }
  142. }