TaskServiceImpl.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package com.wtkj.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.wtkj.entity.FileAndFolder;
  5. import com.wtkj.entity.Task;
  6. import com.wtkj.entity.TaskFile;
  7. import com.wtkj.mapper.TaskMapper;
  8. import com.wtkj.service.IAsyncService;
  9. import com.wtkj.service.IFileAndFolderService;
  10. import com.wtkj.service.ITaskFileService;
  11. import com.wtkj.service.ITaskService;
  12. import com.wutong.file.feign.IFileClient;
  13. import com.wutong.file.vo.FileVO;
  14. import lombok.AllArgsConstructor;
  15. import org.springblade.core.mp.base.BaseServiceImpl;
  16. import org.springblade.core.secure.utils.AuthUtil;
  17. import org.springblade.core.tool.api.R;
  18. import org.springblade.core.tool.utils.Func;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.util.CollectionUtils;
  21. import java.util.ArrayList;
  22. import java.util.List;
  23. /**
  24. * @author Blizzard
  25. * @create at 2023-09-15 15:18
  26. * @describe
  27. */
  28. @AllArgsConstructor
  29. @Service
  30. public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implements ITaskService {
  31. private final IAsyncService asyncService;
  32. private final ITaskFileService taskFileService;
  33. private final IFileAndFolderService fileAndFolderService;
  34. private final IFileClient fileClient;
  35. @Override
  36. public boolean submit(Task task) {
  37. boolean flag = false;
  38. Long taskId = task.getId();
  39. if (taskId == null) {
  40. flag = this.save(task);
  41. asyncService.createTaskLog(task);
  42. } else {
  43. //todo 任务状态处理
  44. //执行的顶级单位
  45. Long userId = AuthUtil.getUserId();
  46. Task byId = this.getById(taskId);
  47. if (byId != null) {
  48. //1.指定了执行单位
  49. if (byId.getOrgDeptId() == null && task.getOrgDeptId() != null) {
  50. asyncService.updateTask(1, userId, task);
  51. }
  52. //2.指定任务执行部门
  53. if (byId.getExecuteDept() == null && task.getExecuteDept() != null) {
  54. asyncService.updateTask(2, userId, task);
  55. }
  56. //3.指定项目经理
  57. if (byId.getProjectManager() == null && task.getProjectManager() != null) {
  58. asyncService.updateTask(3, userId, task);
  59. }
  60. //4.指定任务执行者
  61. if (byId.getExecuteUser() == null && task.getExecuteUser() != null) {
  62. asyncService.updateTask(4, userId, task);
  63. }
  64. }
  65. flag = this.updateById(task);
  66. }
  67. return flag;
  68. }
  69. @Override
  70. public IPage<Task> projectTaskPage(Long projectId, IPage<Task> page) {
  71. LambdaQueryWrapper<Task> lqw = new LambdaQueryWrapper<>();
  72. lqw.eq(Task::getProjectId, projectId);
  73. lqw.orderByAsc(Task::getTaskStatus);
  74. return baseMapper.selectPage(page, lqw);
  75. }
  76. @Override
  77. public boolean uploadFile(Long taskId, String ids) {
  78. boolean flag = false;
  79. if (ids != null) {
  80. List<TaskFile> files = new ArrayList<>();
  81. List<Long> fileIds = Func.toLongList(ids);
  82. fileIds.forEach(id -> {
  83. //判断这个文件是否已经存在
  84. TaskFile file = taskFileService.getByBladeFileId(taskId, id);
  85. //不存在 才保存
  86. if (file == null) {
  87. TaskFile taskFile = new TaskFile();
  88. taskFile.setTaskId(taskId);
  89. taskFile.setBladeFileId(id);
  90. files.add(taskFile);
  91. }
  92. });
  93. //提交任务消息
  94. asyncService.submitTaskMessage(AuthUtil.getUserId(), this.getById(taskId));
  95. flag = taskFileService.saveBatch(files);
  96. }
  97. return flag;
  98. }
  99. @Override
  100. public boolean moveFile(Long stageId, Long parentId, String fileIds) {
  101. boolean flag = false;
  102. List<Long> ids = Func.toLongList(fileIds);
  103. if (!CollectionUtils.isEmpty(ids)) {
  104. List<FileAndFolder> files = new ArrayList<>();
  105. FileAndFolder folder = fileAndFolderService.getById(parentId);
  106. if (folder != null) {
  107. ids.forEach(id -> {
  108. R<FileVO> rpc = fileClient.findById(id);
  109. if (rpc.isSuccess()) {
  110. FileAndFolder file = new FileAndFolder();
  111. file.setProjectId(folder.getProjectId());
  112. file.setStageId(stageId);
  113. file.setParentId(parentId);
  114. file.setType(1);
  115. file.setTitle(rpc.getData().getOriginalFileName());
  116. file.setBladeFileId(id);
  117. files.add(file);
  118. }
  119. });
  120. flag = fileAndFolderService.saveBatch(files);
  121. }
  122. }
  123. return flag;
  124. }
  125. @Override
  126. public boolean deleteFile(String ids) {
  127. return taskFileService.removeBatchByIds(Func.toLongList(ids));
  128. }
  129. }