ConfessionSessionService.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. package cn.cslg.pas.service.dify;
  2. import cn.cslg.pas.common.model.cronModel.SystemFile;
  3. import cn.cslg.pas.common.model.dify.confessionSession.*;
  4. import cn.cslg.pas.common.utils.CacheUtils;
  5. import cn.cslg.pas.common.utils.FormatUtil;
  6. import cn.cslg.pas.common.utils.LoginUtils;
  7. import cn.cslg.pas.domain.dify.AssoConfessionSessionFile;
  8. import cn.cslg.pas.exception.ExceptionEnum;
  9. import cn.cslg.pas.exception.XiaoShiException;
  10. import cn.cslg.pas.mapper.dify.AssoConfessionSessionFileMapper;
  11. import cn.cslg.pas.service.common.FileManagerService;
  12. import com.alibaba.fastjson.JSONObject;
  13. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  14. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  15. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  16. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  17. import cn.cslg.pas.domain.dify.ConfessionSession;
  18. import cn.cslg.pas.mapper.dify.ConfessionSessionMapper;
  19. import lombok.RequiredArgsConstructor;
  20. import org.apache.commons.lang3.ObjectUtils;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.BeanUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import org.springframework.util.CollectionUtils;
  26. import java.util.ArrayList;
  27. import java.util.Arrays;
  28. import java.util.Date;
  29. import java.util.List;
  30. import java.util.stream.Collectors;
  31. /**
  32. * @author admin
  33. * @description 针对表【confession_session(交底书会话记录)】的数据库操作Service实现
  34. * @createDate 2025-04-16 15:48:57
  35. */
  36. @Service
  37. @RequiredArgsConstructor
  38. public class ConfessionSessionService extends ServiceImpl<ConfessionSessionMapper, ConfessionSession> {
  39. private final CacheUtils cacheUtils;
  40. private final LoginUtils loginUtils;
  41. private final FileManagerService fileManagerService;
  42. private final AssoConfessionSessionFileMapper assoConfessionSessionFileMapper;
  43. public Integer addConfessionSession(AddConfessionSessionDTO addConfessionSessionDTO) {
  44. String guid = addConfessionSessionDTO.getFileGuid();
  45. String name = "";
  46. try {
  47. if (guid != null && !guid.trim().equals("")) {
  48. String res = fileManagerService.getSystemFileFromFMS(Arrays.asList(guid));
  49. List<SystemFile> systemFiles = JSONObject.parseArray(res, SystemFile.class);
  50. if (systemFiles != null && !systemFiles.isEmpty()) {
  51. SystemFile systemFile = systemFiles.get(0);
  52. name = systemFile.getOriginalName();
  53. }
  54. }
  55. } catch (Exception e) {
  56. }
  57. if (name != null && !name.isEmpty()) {
  58. name = name.split("\\.")[0];
  59. }
  60. ConfessionSession confessionSession = new ConfessionSession();
  61. confessionSession.setGuid(guid);
  62. confessionSession.setConversationName(name);
  63. String id = loginUtils.getId().toString();
  64. confessionSession.setCreateId(id);
  65. confessionSession.setType(addConfessionSessionDTO.getType());
  66. confessionSession.insert();
  67. return confessionSession.getId();
  68. }
  69. public Integer updateConfessionSession(UpdateConfessionSessionDTO updateConfessionSessionDTO) {
  70. Integer id = updateConfessionSessionDTO.getConfessionSessionId();
  71. ConfessionSession confessionSession = this.getById(id);
  72. if (confessionSession == null) {
  73. throw new XiaoShiException(ExceptionEnum.BUSINESS_CHECK, "未查询到交底书会话记录");
  74. }
  75. BeanUtils.copyProperties(updateConfessionSessionDTO, confessionSession, FormatUtil.getNullPropertyNames(updateConfessionSessionDTO));
  76. confessionSession.updateById();
  77. return confessionSession.getId();
  78. }
  79. public List<QueryConfessionSessionVO> queryConfessionSession(QueryConfessionSessionDTO queryConfessionSessionDTO) {
  80. Integer userId = loginUtils.getId();
  81. Integer confessionSessionId = queryConfessionSessionDTO.getConfessionSessionId();
  82. Integer type = queryConfessionSessionDTO.getType();
  83. LambdaQueryWrapper<ConfessionSession> queryWrapper = new LambdaQueryWrapper<>();
  84. queryWrapper.eq(ConfessionSession::getCreateId, userId)
  85. .orderByDesc(ConfessionSession::getCreateTime);
  86. if (confessionSessionId != null) {
  87. queryWrapper.eq(ConfessionSession::getId, confessionSessionId);
  88. }
  89. if (type != null) {
  90. queryWrapper.eq(ConfessionSession::getType, type);
  91. }
  92. List<ConfessionSession> confessionSessions = this.list(queryWrapper);
  93. List<QueryConfessionSessionVO> queryConfessionSessionVOS = new ArrayList<>();
  94. if (confessionSessions == null || confessionSessions.size() == 0) {
  95. return queryConfessionSessionVOS;
  96. }
  97. List<String> fileGuids = confessionSessions.stream().filter(item -> item.getGuid() != null).map(ConfessionSession::getGuid).collect(Collectors.toList());
  98. List<SystemFile> systemFiles = new ArrayList<>();
  99. try {
  100. if (fileGuids != null && fileGuids.size() > 0) {
  101. String res = fileManagerService.getSystemFileFromFMS(fileGuids);
  102. systemFiles = JSONObject.parseArray(res, SystemFile.class);
  103. }
  104. } catch (Exception e) {
  105. e.printStackTrace();
  106. }
  107. List<Integer> confessionSessionIds = confessionSessions.stream().map(ConfessionSession::getId).collect(Collectors.toList());
  108. List<QueryAssoConfessionSessionFileDTO> sessionFileDTOS = this.queryAssoConfessionSessionFileDTOS(confessionSessionIds);
  109. for (ConfessionSession confessionSession : confessionSessions) {
  110. QueryConfessionSessionVO queryConfessionSessionVO = new QueryConfessionSessionVO();
  111. BeanUtils.copyProperties(confessionSession, queryConfessionSessionVO);
  112. String guid = confessionSession.getGuid();
  113. if (systemFiles != null) {
  114. SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(guid)).findFirst().orElse(null);
  115. queryConfessionSessionVO.setSystemFile(systemFile);
  116. }
  117. if (!CollectionUtils.isEmpty(sessionFileDTOS)) {
  118. QueryAssoConfessionSessionFileDTO fileDTO = sessionFileDTOS.stream().filter(i -> i.getConfessionSessionId().equals(confessionSession.getId())).findFirst().orElse(null);
  119. if (fileDTO != null) {
  120. queryConfessionSessionVO.setAssoSystemFile(fileDTO.getSystemFile());
  121. }
  122. }
  123. queryConfessionSessionVOS.add(queryConfessionSessionVO);
  124. }
  125. return queryConfessionSessionVOS;
  126. }
  127. public List<QueryAssoConfessionSessionFileDTO> queryAssoConfessionSessionFileDTOS(List<Integer> list) {
  128. //装载会话关联文件信息
  129. List<QueryAssoConfessionSessionFileDTO> assoConfessionSessionFileDTOS = new ArrayList<>();
  130. if (!CollectionUtils.isEmpty(list)) {
  131. List<AssoConfessionSessionFile> assoConfessionSessionFiles = assoConfessionSessionFileMapper.selectList(new LambdaQueryWrapper<AssoConfessionSessionFile>()
  132. .in(AssoConfessionSessionFile::getConfessionSessionId, list));
  133. if (!CollectionUtils.isEmpty(assoConfessionSessionFiles)) {
  134. List<String> fileGuids = assoConfessionSessionFiles.stream().map(AssoConfessionSessionFile::getGuid)
  135. .filter(StringUtils::isNotEmpty).collect(Collectors.toList());
  136. List<SystemFile> systemFiles = new ArrayList<>();
  137. try {
  138. if (!CollectionUtils.isEmpty(fileGuids)) {
  139. String res = fileManagerService.getSystemFileFromFMS(fileGuids);
  140. systemFiles = JSONObject.parseArray(res, SystemFile.class);
  141. }
  142. } catch (Exception e) {
  143. e.printStackTrace();
  144. }
  145. for (AssoConfessionSessionFile sessionFile : assoConfessionSessionFiles) {
  146. QueryAssoConfessionSessionFileDTO fileDTO = new QueryAssoConfessionSessionFileDTO();
  147. BeanUtils.copyProperties(sessionFile, fileDTO);
  148. fileDTO.setAssoConfessionSessionFileId(sessionFile.getId());
  149. if (!CollectionUtils.isEmpty(systemFiles)) {
  150. SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(sessionFile.getGuid())).findFirst().orElse(null);
  151. fileDTO.setSystemFile(systemFile);
  152. }
  153. assoConfessionSessionFileDTOS.add(fileDTO);
  154. }
  155. }
  156. }
  157. return assoConfessionSessionFileDTOS;
  158. }
  159. public List<Integer> deleteConfessionSessions(DeleteConfessionSessionDTO deleteConfessionSessionDTO) {
  160. List<Integer> ids = deleteConfessionSessionDTO.getConfessionSessionIds();
  161. this.removeBatchByIds(ids);
  162. return ids;
  163. }
  164. public Integer addSession(AddConfessionSessionDTO addConfessionSessionDTO) {
  165. ConfessionSession confessionSession = new ConfessionSession();
  166. confessionSession.setContent(addConfessionSessionDTO.getContent());
  167. confessionSession.setConversationId(addConfessionSessionDTO.getConversationId());
  168. confessionSession.setConversationName(addConfessionSessionDTO.getConversationName());
  169. String createId = loginUtils.getId().toString();
  170. confessionSession.setCreateId(createId);
  171. confessionSession.setType(addConfessionSessionDTO.getType());
  172. confessionSession.insert();
  173. return confessionSession.getId();
  174. }
  175. public Integer addConfessionSessionFile(AddConfessionSessionFileDTO addConfessionSessionFileDTO) {
  176. AssoConfessionSessionFile assoConfessionSessionFile = new AssoConfessionSessionFile();
  177. assoConfessionSessionFile.setConfessionSessionId(addConfessionSessionFileDTO.getConfessionSessionId());
  178. assoConfessionSessionFile.setGuid(addConfessionSessionFileDTO.getGuid());
  179. assoConfessionSessionFile.insert();
  180. return assoConfessionSessionFile.getId();
  181. }
  182. public ConfessionSession addSessionReDO(AddConfessionSessionDTO addConfessionSessionDTO) {
  183. ConfessionSession confessionSession = new ConfessionSession();
  184. confessionSession.setContent(addConfessionSessionDTO.getContent());
  185. confessionSession.setConversationId(addConfessionSessionDTO.getConversationId());
  186. confessionSession.setConversationName(addConfessionSessionDTO.getConversationName());
  187. String createId = loginUtils.getId().toString();
  188. confessionSession.setCreateId(createId);
  189. confessionSession.setType(addConfessionSessionDTO.getType());
  190. confessionSession.setCreateTime(new Date());
  191. confessionSession.insert();
  192. return confessionSession;
  193. }
  194. }