package com.wtkj.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.wtkj.entity.FileAndFolder; import com.wtkj.entity.Task; import com.wtkj.entity.TaskFile; import com.wtkj.mapper.TaskMapper; import com.wtkj.service.IAsyncService; import com.wtkj.service.IFileAndFolderService; import com.wtkj.service.ITaskFileService; import com.wtkj.service.ITaskService; import com.wutong.file.feign.IFileClient; import com.wutong.file.vo.FileVO; import lombok.AllArgsConstructor; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; /** * @author Blizzard * @create at 2023-09-15 15:18 * @describe */ @AllArgsConstructor @Service public class TaskServiceImpl extends BaseServiceImpl implements ITaskService { private final IAsyncService asyncService; private final ITaskFileService taskFileService; private final IFileAndFolderService fileAndFolderService; private final IFileClient fileClient; @Override public boolean submit(Task task) { boolean flag = false; Long taskId = task.getId(); if (taskId == null) { flag = this.save(task); asyncService.createTaskLog(task); } else { //todo 任务状态处理 //执行的顶级单位 Long userId = AuthUtil.getUserId(); Task byId = this.getById(taskId); if (byId != null) { //1.指定了执行单位 if (byId.getOrgDeptId() == null && task.getOrgDeptId() != null) { asyncService.updateTask(1, userId, task); } //2.指定任务执行部门 if (byId.getExecuteDept() == null && task.getExecuteDept() != null) { asyncService.updateTask(2, userId, task); } //3.指定项目经理 if (byId.getProjectManager() == null && task.getProjectManager() != null) { asyncService.updateTask(3, userId, task); } //4.指定任务执行者 if (byId.getExecuteUser() == null && task.getExecuteUser() != null) { asyncService.updateTask(4, userId, task); } } flag = this.updateById(task); } return flag; } @Override public IPage projectTaskPage(Long projectId, IPage page) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(Task::getProjectId, projectId); lqw.orderByAsc(Task::getTaskStatus); return baseMapper.selectPage(page, lqw); } @Override public boolean uploadFile(Long taskId, String ids) { boolean flag = false; if (ids != null) { List files = new ArrayList<>(); List fileIds = Func.toLongList(ids); fileIds.forEach(id -> { //判断这个文件是否已经存在 TaskFile file = taskFileService.getByBladeFileId(taskId, id); //不存在 才保存 if (file == null) { TaskFile taskFile = new TaskFile(); taskFile.setTaskId(taskId); taskFile.setBladeFileId(id); files.add(taskFile); } }); //提交任务消息 asyncService.submitTaskMessage(AuthUtil.getUserId(), this.getById(taskId)); flag = taskFileService.saveBatch(files); } return flag; } @Override public boolean moveFile(Long stageId, Long parentId, String fileIds) { boolean flag = false; List ids = Func.toLongList(fileIds); if (!CollectionUtils.isEmpty(ids)) { List files = new ArrayList<>(); FileAndFolder folder = fileAndFolderService.getById(parentId); if (folder != null) { ids.forEach(id -> { R rpc = fileClient.findById(id); if (rpc.isSuccess()) { FileAndFolder file = new FileAndFolder(); file.setProjectId(folder.getProjectId()); file.setStageId(stageId); file.setParentId(parentId); file.setType(1); file.setTitle(rpc.getData().getOriginalFileName()); file.setBladeFileId(id); files.add(file); } }); flag = fileAndFolderService.saveBatch(files); } } return flag; } @Override public boolean deleteFile(String ids) { return taskFileService.removeBatchByIds(Func.toLongList(ids)); } }