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 { 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 fileGuids = userFeedbackAddNewDTO.getFileGuids(); List 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 queryWrapper = new LambdaQueryWrapper<>(); Page page = this.page(new Page<>(current, size), queryWrapper); Long total = page.getTotal(); List userFeedbacks = page.getRecords(); records.setCurrent(current); records.setSize(size); records.setTotal(total); List userFeedbackVOS =this.loadUserFeedbackVO(userFeedbacks); records.setData(userFeedbackVOS); return records; } /** * 装载vo类返回 * * @param userFeedbacks * @return */ private List loadUserFeedbackVO(List userFeedbacks) { List userFeedbackVOS = new ArrayList<>(); List createIds = new ArrayList<>(); //当列表为空或长度为0时,直接返回 if (userFeedbacks == null || userFeedbacks.size() == 0) { return userFeedbackVOS; } userFeedbacks.forEach(item -> { if (item.getCreateId() != null) { createIds.add(item.getCreateId()); } }); List ids = userFeedbacks.stream().map(UserFeedback::getId).collect(Collectors.toList()); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(AssoFeedbackFile::getPersonFeedbackId, ids); List assoFeedbackFiles = assoFeedbackFileService.list(queryWrapper); List fileIds = assoFeedbackFiles.stream().map(AssoFeedbackFile::getFileGuid).collect(Collectors.toList()); List 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 queryWrapper1 =new LambdaQueryWrapper<>(); queryWrapper1.in(Person::getUuid,createIds); List personList =personService.list(queryWrapper1); for (UserFeedback userFeedback : userFeedbacks) { UserFeedbackVO userFeedbackVO = new UserFeedbackVO(); BeanUtils.copyProperties(userFeedback, userFeedbackVO); List temAssoFeedbackFileIds = assoFeedbackFiles.stream().filter(item -> item.getPersonFeedbackId().equals(userFeedback.getId())).map(AssoFeedbackFile::getFileGuid).collect(Collectors.toList()); if(temAssoFeedbackFileIds!=null&&temAssoFeedbackFileIds.size()>0){ List 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; } }