package cn.cslg.pas.service.business; import cn.cslg.pas.common.dto.business.AssoTaskFileDTO; import cn.cslg.pas.common.model.cronModel.PersonnelVO; import cn.cslg.pas.common.model.cronModel.SystemFile; import cn.cslg.pas.common.utils.CacheUtils; import cn.cslg.pas.common.utils.LoginUtils; import cn.cslg.pas.common.vo.business.AssoTaskFileVO; import cn.cslg.pas.domain.business.AssoHandleResultFile; import cn.cslg.pas.domain.business.AssoTaskFile; import cn.cslg.pas.domain.business.ProjectTask; import cn.cslg.pas.domain.business.TaskHandleResult; import cn.cslg.pas.exception.UnLoginException; import cn.cslg.pas.exception.XiaoShiException; import cn.cslg.pas.mapper.AssoTaskFileMapper; import cn.cslg.pas.service.common.FileManagerService; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 任务与文件关联表的Service * @Author xiexiang * @Date 2023/11/24 */ @Service public class AssoTaskFileService extends ServiceImpl { @Autowired private CacheUtils cacheUtils; @Autowired private LoginUtils loginUtils; @Autowired private FileManagerService fileManagerService; /** * 添加任务与文件关联 * @param assoTaskFileDTO * @return */ public List addTaskFile(AssoTaskFileDTO assoTaskFileDTO){ if (assoTaskFileDTO.getTaskId() == null) { throw new XiaoShiException("任务id不能为空"); } if (assoTaskFileDTO.getFileGuids() == null || assoTaskFileDTO.getFileGuids().size() == 0) { throw new XiaoShiException("文件ids不能为空"); } //获取登陆人信息 用于设置创建人 PersonnelVO personnelVO = new PersonnelVO(); personnelVO = cacheUtils.getLoginUser(loginUtils.getId()); List fileGuids = assoTaskFileDTO.getFileGuids(); List assoTaskFiles = new ArrayList<>(); for (String item : fileGuids) { AssoTaskFile assoTaskFile = new AssoTaskFile(); BeanUtils.copyProperties(assoTaskFileDTO, assoTaskFile); assoTaskFile.setFileGuid(item); assoTaskFile.setCreateId(personnelVO.getId()); assoTaskFiles.add(assoTaskFile); } this.saveBatch(assoTaskFiles); List ids = assoTaskFiles.stream().map(AssoTaskFile::getId).collect(Collectors.toList()); return ids; } /** * 查询文件与任务关联 * @param taskId * @return */ public List getAssoTaskFile(Integer taskId) throws IOException { List assoTaskFileVOS = new ArrayList<>(); List fileGuids = new ArrayList<>(); List systemFiles = new ArrayList<>(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(AssoTaskFile::getTaskId, taskId); List assoTaskFiles = this.list(queryWrapper); if (assoTaskFiles.size() != 0) { fileGuids = assoTaskFiles.stream().map(AssoTaskFile::getFileGuid).collect(Collectors.toList()); } if (fileGuids.size() != 0) { String res = fileManagerService.getSystemFileFromFMS(fileGuids); systemFiles = JSONObject.parseArray(res, SystemFile.class); } if (systemFiles.size() != 0) { for (AssoTaskFile assoTaskFile : assoTaskFiles) { AssoTaskFileVO assoTaskFileVO = new AssoTaskFileVO(); SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(assoTaskFile.getFileGuid())).findFirst().orElse(null); if (systemFile != null) { BeanUtils.copyProperties(assoTaskFile, assoTaskFileVO); assoTaskFileVO.setFileType(systemFile.getType()); assoTaskFileVO.setFileName(systemFile.getOriginalName()); assoTaskFileVOS.add(assoTaskFileVO); } } } return assoTaskFileVOS; } /** * 删除任务与文件关联表 * @param ids */ public void deleteAssoTaskFile(List ids){ if (ids.size() != 0) { this.removeBatchByIds(ids); } else { throw new XiaoShiException("需要删除的ids不为空"); } } }