TaskService.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  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. //创建任务表实体类,准备装载数据 ↓
  56. Task task = new Task();
  57. //任务开始时间
  58. task.setStartTime(DateUtils.getDateTime());
  59. //任务状态(0.队列中 1.进行中 2.成功 3.失败)
  60. task.setStatus(0);
  61. if (projectId != null) {
  62. //专题库id
  63. task.setProjectId(projectId);
  64. }
  65. if (productId != null) {
  66. //产品id
  67. task.setProductId(productId);
  68. }
  69. //文件名称
  70. task.setFileName(fileDTO.getFileName());
  71. //文件路径
  72. task.setUrl(fileDTO.getPath());
  73. //文件的专利总数量
  74. task.setTotal(total);
  75. //文件大小
  76. task.setFileSize(fileDTO.getFileSize());
  77. //任务类型 (1.上传 2导出)
  78. task.setType(type);
  79. //导入导出字段数量
  80. task.setFieldNum(fieldNum);
  81. //创建人id
  82. task.setCreateBy(loginUtils.getId());
  83. //文件原始名称
  84. task.setOldName(oldName);
  85. //数据入任务表
  86. task.insert();
  87. return task.getId();
  88. }
  89. public Task edit(Integer id, Integer status) {
  90. Task task = this.getById(id);
  91. task.setStatus(status);
  92. task.setEndTime(DateUtils.getDateTime());
  93. task.updateById();
  94. return task;
  95. }
  96. public String delete(Integer id) {
  97. Task temp = this.getById(id);
  98. this.removeById(id);
  99. if (StringUtils.isNotEmpty(temp.getUrl())) {
  100. FileUtil.del(fileUtils.getSystemPath(temp.getUrl()));
  101. }
  102. return Response.success(true);
  103. }
  104. public IPage<Task> getPageList(TaskVO params) throws IOException {
  105. String createName = params.getCreateName();
  106. //如果此次查询是要根据创建人名称查询则👇
  107. if (createName != null && !createName.equals("")) {
  108. //远程调用权限系统的根据创建人名称模糊查询创建人ids的接口
  109. String res = outInterfaceService.getPersonIdByNamePCS(createName);
  110. List<Integer> createPersonIds = JSONArray.parseArray(res, Integer.class);
  111. //当未查询到时给创建人ids集合赋值唯一元素id=-1,即查空页返回
  112. if (createPersonIds == null || createPersonIds.size() == 0) {
  113. createPersonIds = new ArrayList<>(Collections.singletonList(-1));
  114. }
  115. params.setCreatePersonIds(createPersonIds);
  116. }
  117. IPage<Task> pageList = baseMapper.getPageList(new Page<>(params.getCurrent(), params.getSize()), params);
  118. this.setDataList(pageList.getRecords());
  119. return pageList;
  120. }
  121. public List<Task> getQueueList(Integer type, Integer projectId, Integer productId) {
  122. LambdaQueryWrapper<Task> queryWrapper = new LambdaQueryWrapper<>();
  123. queryWrapper.eq(Task::getCreateBy, loginUtils.getId());
  124. queryWrapper.eq(Task::getType, type);
  125. queryWrapper.in(Task::getStatus, new ArrayList<Integer>() {{
  126. add(0);
  127. add(1);
  128. }});
  129. if (projectId != null) {
  130. queryWrapper.eq(Task::getProjectId, projectId);
  131. }
  132. if (productId != null) {
  133. queryWrapper.eq(Task::getProductId, productId);
  134. }
  135. queryWrapper.orderByAsc(Task::getStartTime);
  136. return this.list(queryWrapper);
  137. }
  138. public Integer add2(Integer projectId, Long fieldNum, Integer total) {
  139. Task task = new Task();
  140. task.setStatus(0);
  141. task.setProjectId(projectId);
  142. task.setType(2);
  143. task.setTotal(total);
  144. task.setFieldNum(fieldNum.intValue());
  145. task.setCreateBy(loginUtils.getId());
  146. task.setStartTime(DateUtils.getDateTime());
  147. task.insert();
  148. return task.getId();
  149. }
  150. public void updateStatus(Integer id, Integer status, Integer endTime) {
  151. Task task = this.getById(id);
  152. task.setStatus(status);
  153. if (endTime != null) {
  154. task.setEndTime(endTime);
  155. }
  156. task.updateById();
  157. }
  158. public void updateTime(Integer id, Integer status, Integer endTime, String url, String fileName) {
  159. Task task = this.getById(id);
  160. task.setStatus(status);
  161. task.setEndTime(endTime);
  162. task.setFileName(fileName);
  163. task.setUrl(url);
  164. task.updateById();
  165. }
  166. private void setDataList(List<Task> taskList) throws IOException {
  167. //获得创建人的id集合
  168. List<Integer> createIds = taskList.stream().map(Task::getCreateBy).collect(Collectors.toList());
  169. //获取专题库负责人对应信息
  170. String jsonObject1 = requestService.getPersonnelFromPCS(createIds);
  171. JSONArray jsonArray = JSON.parseArray(jsonObject1);
  172. List<ProjectVO.Personnel> personnelList = jsonArray.toJavaList(ProjectVO.Personnel.class);
  173. for (Task task : taskList) {
  174. for (ProjectVO.Personnel personnel : personnelList) {
  175. //装载创建人名
  176. if (task.getCreateBy() != null) {
  177. if (task.getCreateBy().equals(personnel.getId())) {
  178. task.setCreateName(personnel.getPersonnelName());
  179. }
  180. }
  181. }
  182. }
  183. }
  184. }