TaskService.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. package cn.cslg.pas.service;
  2. import cn.cslg.pas.common.core.base.Constants;
  3. import cn.cslg.pas.common.model.dto.ClientDTO;
  4. import cn.cslg.pas.common.model.vo.ProductVO;
  5. import cn.cslg.pas.common.model.vo.ProjectVO;
  6. import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
  7. import cn.cslg.pas.common.utils.StringUtils;
  8. import cn.cslg.pas.domain.Project;
  9. import cn.cslg.pas.domain.SystemDict;
  10. import cn.cslg.pas.domain.Task;
  11. import cn.cslg.pas.common.model.vo.TaskVO;
  12. import cn.cslg.pas.mapper.TaskMapper;
  13. import cn.cslg.pas.common.utils.DateUtils;
  14. import cn.cslg.pas.common.utils.FileUtils;
  15. import cn.cslg.pas.common.utils.Response;
  16. import cn.cslg.pas.common.model.dto.UploadFileDTO;
  17. import cn.dev33.satoken.stp.StpUtil;
  18. import cn.hutool.core.io.FileUtil;
  19. import com.alibaba.fastjson.JSON;
  20. import com.alibaba.fastjson.JSONArray;
  21. import com.alibaba.fastjson.JSONObject;
  22. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  23. import com.baomidou.mybatisplus.core.metadata.IPage;
  24. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  25. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  26. import lombok.RequiredArgsConstructor;
  27. import org.springframework.context.annotation.Lazy;
  28. import org.springframework.stereotype.Service;
  29. import java.io.IOException;
  30. import java.util.ArrayList;
  31. import java.util.Arrays;
  32. import java.util.Collections;
  33. import java.util.List;
  34. import java.util.stream.Collectors;
  35. /**
  36. * <p>
  37. * 任务表 服务类
  38. * </p>
  39. *
  40. * @author 王岩
  41. * @since 2022-02-27
  42. */
  43. @Service
  44. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  45. public class TaskService extends ServiceImpl<TaskMapper, Task> {
  46. private final FileUtils fileUtils;
  47. private final LoginUtils loginUtils;
  48. private final RequestService requestService;
  49. private final OutInterfaceService outInterfaceService;
  50. public String getFileUrl(Integer id) {
  51. Task task = this.getById(id);
  52. return fileUtils.getSystemPath() + task.getUrl();
  53. }
  54. public Integer add(UploadFileDTO fileDTO, Integer projectId, Integer productId, Integer total, Integer type, Integer fieldNum, String oldName) {
  55. Task task = new Task();
  56. task.setStartTime(DateUtils.getDateTime());
  57. task.setStatus(0);
  58. if (projectId != null) {
  59. task.setProjectId(projectId);
  60. }
  61. if (productId != null) {
  62. task.setProductId(productId);
  63. }
  64. task.setFileName(fileDTO.getFileName());
  65. task.setUrl(fileDTO.getPath());
  66. task.setTotal(total);
  67. task.setFileSize(fileDTO.getFileSize());
  68. task.setType(type);
  69. task.setFieldNum(fieldNum);
  70. task.setCreateBy(loginUtils.getId());
  71. task.setOldName(oldName);
  72. task.insert();
  73. return task.getId();
  74. }
  75. public Task edit(Integer id, Integer status) {
  76. Task task = this.getById(id);
  77. task.setStatus(status);
  78. task.setEndTime(DateUtils.getDateTime());
  79. task.updateById();
  80. return task;
  81. }
  82. public String delete(Integer id) {
  83. Task temp = this.getById(id);
  84. this.removeById(id);
  85. if (StringUtils.isNotEmpty(temp.getUrl())) {
  86. FileUtil.del(fileUtils.getSystemPath(temp.getUrl()));
  87. }
  88. return Response.success(true);
  89. }
  90. public IPage<Task> getPageList(TaskVO params) throws IOException {
  91. String createName = params.getCreateName();
  92. //如果此次查询是要根据创建人名称查询则👇
  93. if (createName != null && !createName.equals("")) {
  94. //远程调用权限系统的根据创建人名称模糊查询创建人ids的接口
  95. String res = outInterfaceService.getPersonIdByNamePCS(createName);
  96. List<Integer> createPersonIds = JSONArray.parseArray(res, Integer.class);
  97. //当未查询到时给创建人ids集合赋值唯一元素id=-1,即查空页返回
  98. if (createPersonIds == null || createPersonIds.size() == 0) {
  99. createPersonIds = new ArrayList<>(Collections.singletonList(-1));
  100. }
  101. params.setCreatePersonIds(createPersonIds);
  102. }
  103. IPage<Task> pageList = baseMapper.getPageList(new Page<>(params.getCurrent(), params.getSize()), params);
  104. this.setDataList(pageList.getRecords());
  105. return pageList;
  106. }
  107. public List<Task> getQueueList(Integer type, Integer projectId, Integer productId) {
  108. LambdaQueryWrapper<Task> queryWrapper = new LambdaQueryWrapper<>();
  109. queryWrapper.eq(Task::getCreateBy, loginUtils.getId());
  110. queryWrapper.eq(Task::getType, type);
  111. queryWrapper.in(Task::getStatus, new ArrayList<Integer>() {{
  112. add(0);
  113. add(1);
  114. }});
  115. if (projectId != null) {
  116. queryWrapper.eq(Task::getProjectId, projectId);
  117. }
  118. if (productId != null) {
  119. queryWrapper.eq(Task::getProductId, productId);
  120. }
  121. queryWrapper.orderByAsc(Task::getStartTime);
  122. return this.list(queryWrapper);
  123. }
  124. public Integer add2(Integer projectId, Long fieldNum, Integer total) {
  125. Task task = new Task();
  126. task.setStatus(0);
  127. task.setProjectId(projectId);
  128. task.setType(2);
  129. task.setTotal(total);
  130. task.setFieldNum(fieldNum.intValue());
  131. task.setCreateBy(loginUtils.getId());
  132. task.setStartTime(DateUtils.getDateTime());
  133. task.insert();
  134. return task.getId();
  135. }
  136. public void updateStatus(Integer id, Integer status, Integer endTime) {
  137. Task task = this.getById(id);
  138. task.setStatus(status);
  139. if (endTime != null) {
  140. task.setEndTime(endTime);
  141. }
  142. task.updateById();
  143. }
  144. public void updateTime(Integer id, Integer status, Integer endTime, String url, String fileName) {
  145. Task task = this.getById(id);
  146. task.setStatus(status);
  147. task.setEndTime(endTime);
  148. task.setFileName(fileName);
  149. task.setUrl(url);
  150. task.updateById();
  151. }
  152. private void setDataList(List<Task> taskList) throws IOException {
  153. //获得创建人的id集合
  154. List<Integer> createIds = taskList.stream().map(Task::getCreateBy).collect(Collectors.toList());
  155. //获取专题库负责人对应信息
  156. String jsonObject1 = requestService.getPersonnelFromPCS(createIds);
  157. JSONArray jsonArray = JSON.parseArray(jsonObject1);
  158. List<ProjectVO.Personnel> personnelList = jsonArray.toJavaList(ProjectVO.Personnel.class);
  159. for (Task task : taskList) {
  160. for (ProjectVO.Personnel personnel : personnelList) {
  161. //装载创建人名
  162. if (task.getCreateBy() != null) {
  163. if (task.getCreateBy().equals(personnel.getId())) {
  164. task.setCreateName(personnel.getPersonnelName());
  165. }
  166. }
  167. }
  168. }
  169. }
  170. }