UserFeedbackService.java 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package com.example.xiaoshiweixinback.service;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import com.example.xiaoshiweixinback.business.common.base.Records;
  7. import com.example.xiaoshiweixinback.business.common.base.SystemFile;
  8. import com.example.xiaoshiweixinback.business.exception.BusinessException;
  9. import com.example.xiaoshiweixinback.business.utils.CacheUtil;
  10. import com.example.xiaoshiweixinback.business.utils.LoginUtils;
  11. import com.example.xiaoshiweixinback.domain.AssoFeedbackFile;
  12. import com.example.xiaoshiweixinback.domain.Person;
  13. import com.example.xiaoshiweixinback.domain.UserFeedback;
  14. import com.example.xiaoshiweixinback.entity.userFeedBack.UserFeedbackAddNewDTO;
  15. import com.example.xiaoshiweixinback.entity.userFeedBack.UserFeedbackQueryDTO;
  16. import com.example.xiaoshiweixinback.entity.userFeedBack.UserFeedbackVO;
  17. import com.example.xiaoshiweixinback.entity.vo.PersonnelVO;
  18. import com.example.xiaoshiweixinback.mapper.UserFeedbackMapper;
  19. import com.example.xiaoshiweixinback.service.common.FileManagerService;
  20. import lombok.RequiredArgsConstructor;
  21. import org.springframework.beans.BeanUtils;
  22. import org.springframework.stereotype.Service;
  23. import java.util.ArrayList;
  24. import java.util.List;
  25. import java.util.stream.Collectors;
  26. /**
  27. * @author admin
  28. * @description 针对表【user_feedback】的数据库操作Service实现
  29. * @createDate 2024-06-27 14:01:11
  30. */
  31. @Service
  32. @RequiredArgsConstructor
  33. public class UserFeedbackService extends ServiceImpl<UserFeedbackMapper, UserFeedback> {
  34. private final CacheUtil cacheUtil;
  35. private final AssoFeedbackFileService assoFeedbackFileService;
  36. private final FileManagerService fileManagerService;
  37. private final PersonService personService;
  38. public Integer addUserFeedback(UserFeedbackAddNewDTO userFeedbackAddNewDTO) {
  39. PersonnelVO personnelVO = cacheUtil.getLoginUser(LoginUtils.getToken());
  40. UserFeedback userFeedback = new UserFeedback();
  41. BeanUtils.copyProperties(userFeedbackAddNewDTO, userFeedback);
  42. userFeedback.setCreateId(personnelVO.getUuid());
  43. userFeedback.insert();
  44. List<String> fileGuids = userFeedbackAddNewDTO.getFileGuids();
  45. List<AssoFeedbackFile> assoFeedbackFiles = new ArrayList<>();
  46. if (fileGuids != null && fileGuids.size() > 0) {
  47. fileGuids.forEach(item -> {
  48. AssoFeedbackFile assoFeedbackFile = new AssoFeedbackFile();
  49. assoFeedbackFile.setPersonFeedbackId(userFeedback.getId());
  50. assoFeedbackFile.setFileGuid(item);
  51. assoFeedbackFiles.add(assoFeedbackFile);
  52. });
  53. assoFeedbackFileService.getBaseMapper().insertBatchSomeColumn(assoFeedbackFiles);
  54. }
  55. return userFeedback.getId();
  56. }
  57. public Records queryUserFeedback(UserFeedbackQueryDTO userFeedbackQueryDTO) {
  58. Records records = new Records();
  59. Long current = userFeedbackQueryDTO.getCurrent();
  60. Long size = userFeedbackQueryDTO.getSize();
  61. if (current == null || size == null) {
  62. throw new BusinessException("608", "请输入分页信息");
  63. }
  64. LambdaQueryWrapper<UserFeedback> queryWrapper = new LambdaQueryWrapper<>();
  65. Page<UserFeedback> page = this.page(new Page<>(current, size), queryWrapper);
  66. Long total = page.getTotal();
  67. List<UserFeedback> userFeedbacks = page.getRecords();
  68. records.setCurrent(current);
  69. records.setSize(size);
  70. records.setTotal(total);
  71. List<UserFeedbackVO> userFeedbackVOS =this.loadUserFeedbackVO(userFeedbacks);
  72. records.setData(userFeedbackVOS);
  73. return records;
  74. }
  75. /**
  76. * 装载vo类返回
  77. *
  78. * @param userFeedbacks
  79. * @return
  80. */
  81. private List<UserFeedbackVO> loadUserFeedbackVO(List<UserFeedback> userFeedbacks) {
  82. List<UserFeedbackVO> userFeedbackVOS = new ArrayList<>();
  83. List<String> createIds = new ArrayList<>();
  84. //当列表为空或长度为0时,直接返回
  85. if (userFeedbacks == null || userFeedbacks.size() == 0) {
  86. return userFeedbackVOS;
  87. }
  88. userFeedbacks.forEach(item -> {
  89. if (item.getCreateId() != null) {
  90. createIds.add(item.getCreateId());
  91. }
  92. });
  93. List<Integer> ids = userFeedbacks.stream().map(UserFeedback::getId).collect(Collectors.toList());
  94. LambdaQueryWrapper<AssoFeedbackFile> queryWrapper = new LambdaQueryWrapper<>();
  95. queryWrapper.in(AssoFeedbackFile::getPersonFeedbackId, ids);
  96. List<AssoFeedbackFile> assoFeedbackFiles = assoFeedbackFileService.list(queryWrapper);
  97. List<String> fileIds = assoFeedbackFiles.stream().map(AssoFeedbackFile::getFileGuid).collect(Collectors.toList());
  98. List<SystemFile> systemFiles = new ArrayList<>();
  99. try {
  100. String res = fileManagerService.getSystemFileFromFMS(fileIds);
  101. systemFiles = JSONObject.parseArray(res, SystemFile.class);
  102. if (systemFiles == null) {
  103. systemFiles = new ArrayList<>();
  104. }
  105. } catch (Exception e) {
  106. }
  107. LambdaQueryWrapper<Person> queryWrapper1 =new LambdaQueryWrapper<>();
  108. queryWrapper1.in(Person::getUuid,createIds);
  109. List<Person> personList =personService.list(queryWrapper1);
  110. for (UserFeedback userFeedback : userFeedbacks) {
  111. UserFeedbackVO userFeedbackVO = new UserFeedbackVO();
  112. BeanUtils.copyProperties(userFeedback, userFeedbackVO);
  113. List<String> temAssoFeedbackFileIds = assoFeedbackFiles.stream().filter(item -> item.getPersonFeedbackId().equals(userFeedback.getId())).map(AssoFeedbackFile::getFileGuid).collect(Collectors.toList());
  114. if(temAssoFeedbackFileIds!=null&&temAssoFeedbackFileIds.size()>0){
  115. List<SystemFile> temSustemFiles= systemFiles.stream().filter(item->temAssoFeedbackFileIds.contains(item.getGuid())).collect(Collectors.toList());
  116. userFeedbackVO.setSystemFiles(temSustemFiles);
  117. }
  118. Person person = personList.stream().filter(item->item.getUuid().equals(userFeedback.getCreateId())).findFirst().orElse(null);
  119. if(person!=null){
  120. userFeedbackVO.setPhoneNum(person.getPhoneNum());
  121. }
  122. userFeedbackVOS.add(userFeedbackVO);
  123. }
  124. return userFeedbackVOS;
  125. }
  126. }