123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- package com.example.xiaoshiweixinback.service;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.example.xiaoshiweixinback.business.common.base.Records;
- import com.example.xiaoshiweixinback.business.common.base.SystemFile;
- import com.example.xiaoshiweixinback.business.exception.BusinessException;
- import com.example.xiaoshiweixinback.business.utils.CacheUtil;
- import com.example.xiaoshiweixinback.business.utils.LoginUtils;
- import com.example.xiaoshiweixinback.domain.AssoFeedbackFile;
- import com.example.xiaoshiweixinback.domain.Person;
- import com.example.xiaoshiweixinback.domain.UserFeedback;
- import com.example.xiaoshiweixinback.entity.userFeedBack.UserFeedbackAddNewDTO;
- import com.example.xiaoshiweixinback.entity.userFeedBack.UserFeedbackQueryDTO;
- import com.example.xiaoshiweixinback.entity.userFeedBack.UserFeedbackVO;
- import com.example.xiaoshiweixinback.entity.vo.PersonnelVO;
- import com.example.xiaoshiweixinback.mapper.UserFeedbackMapper;
- import com.example.xiaoshiweixinback.service.common.FileManagerService;
- import lombok.RequiredArgsConstructor;
- import org.springframework.beans.BeanUtils;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * @author admin
- * @description 针对表【user_feedback】的数据库操作Service实现
- * @createDate 2024-06-27 14:01:11
- */
- @Service
- @RequiredArgsConstructor
- public class UserFeedbackService extends ServiceImpl<UserFeedbackMapper, UserFeedback> {
- private final CacheUtil cacheUtil;
- private final AssoFeedbackFileService assoFeedbackFileService;
- private final FileManagerService fileManagerService;
- private final PersonService personService;
- public Integer addUserFeedback(UserFeedbackAddNewDTO userFeedbackAddNewDTO) {
- PersonnelVO personnelVO = cacheUtil.getLoginUser(LoginUtils.getToken());
- UserFeedback userFeedback = new UserFeedback();
- BeanUtils.copyProperties(userFeedbackAddNewDTO, userFeedback);
- userFeedback.setCreateId(personnelVO.getUuid());
- userFeedback.insert();
- List<String> fileGuids = userFeedbackAddNewDTO.getFileGuids();
- List<AssoFeedbackFile> assoFeedbackFiles = new ArrayList<>();
- if (fileGuids != null && fileGuids.size() > 0) {
- fileGuids.forEach(item -> {
- AssoFeedbackFile assoFeedbackFile = new AssoFeedbackFile();
- assoFeedbackFile.setPersonFeedbackId(userFeedback.getId());
- assoFeedbackFile.setFileGuid(item);
- assoFeedbackFiles.add(assoFeedbackFile);
- });
- assoFeedbackFileService.getBaseMapper().insertBatchSomeColumn(assoFeedbackFiles);
- }
- return userFeedback.getId();
- }
- public Records queryUserFeedback(UserFeedbackQueryDTO userFeedbackQueryDTO) {
- Records records = new Records();
- Long current = userFeedbackQueryDTO.getCurrent();
- Long size = userFeedbackQueryDTO.getSize();
- if (current == null || size == null) {
- throw new BusinessException("608", "请输入分页信息");
- }
- LambdaQueryWrapper<UserFeedback> queryWrapper = new LambdaQueryWrapper<>();
- Page<UserFeedback> page = this.page(new Page<>(current, size), queryWrapper);
- Long total = page.getTotal();
- List<UserFeedback> userFeedbacks = page.getRecords();
- records.setCurrent(current);
- records.setSize(size);
- records.setTotal(total);
- List<UserFeedbackVO> userFeedbackVOS =this.loadUserFeedbackVO(userFeedbacks);
- records.setData(userFeedbackVOS);
- return records;
- }
- /**
- * 装载vo类返回
- *
- * @param userFeedbacks
- * @return
- */
- private List<UserFeedbackVO> loadUserFeedbackVO(List<UserFeedback> userFeedbacks) {
- List<UserFeedbackVO> userFeedbackVOS = new ArrayList<>();
- List<String> createIds = new ArrayList<>();
- //当列表为空或长度为0时,直接返回
- if (userFeedbacks == null || userFeedbacks.size() == 0) {
- return userFeedbackVOS;
- }
- userFeedbacks.forEach(item -> {
- if (item.getCreateId() != null) {
- createIds.add(item.getCreateId());
- }
- });
- List<Integer> ids = userFeedbacks.stream().map(UserFeedback::getId).collect(Collectors.toList());
- LambdaQueryWrapper<AssoFeedbackFile> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.in(AssoFeedbackFile::getPersonFeedbackId, ids);
- List<AssoFeedbackFile> assoFeedbackFiles = assoFeedbackFileService.list(queryWrapper);
- List<String> fileIds = assoFeedbackFiles.stream().map(AssoFeedbackFile::getFileGuid).collect(Collectors.toList());
- List<SystemFile> systemFiles = new ArrayList<>();
- try {
- String res = fileManagerService.getSystemFileFromFMS(fileIds);
- systemFiles = JSONObject.parseArray(res, SystemFile.class);
- if (systemFiles == null) {
- systemFiles = new ArrayList<>();
- }
- } catch (Exception e) {
- }
- LambdaQueryWrapper<Person> queryWrapper1 =new LambdaQueryWrapper<>();
- queryWrapper1.in(Person::getUuid,createIds);
- List<Person> personList =personService.list(queryWrapper1);
- for (UserFeedback userFeedback : userFeedbacks) {
- UserFeedbackVO userFeedbackVO = new UserFeedbackVO();
- BeanUtils.copyProperties(userFeedback, userFeedbackVO);
- List<String> temAssoFeedbackFileIds = assoFeedbackFiles.stream().filter(item -> item.getPersonFeedbackId().equals(userFeedback.getId())).map(AssoFeedbackFile::getFileGuid).collect(Collectors.toList());
- if(temAssoFeedbackFileIds!=null&&temAssoFeedbackFileIds.size()>0){
- List<SystemFile> temSustemFiles= systemFiles.stream().filter(item->temAssoFeedbackFileIds.contains(item.getGuid())).collect(Collectors.toList());
- userFeedbackVO.setSystemFiles(temSustemFiles);
- }
- Person person = personList.stream().filter(item->item.getUuid().equals(userFeedback.getCreateId())).findFirst().orElse(null);
- if(person!=null){
- userFeedbackVO.setPhoneNum(person.getPhoneNum());
- }
- userFeedbackVOS.add(userFeedbackVO);
- }
- return userFeedbackVOS;
- }
- }
|