|
@@ -1,8 +1,7 @@
|
|
|
package cn.cslg.pas.service;
|
|
|
|
|
|
|
|
|
-import cn.cslg.pas.common.model.dto.PageDTO2;
|
|
|
-import cn.cslg.pas.common.model.dto.QrtzTaskAddNewDTO;
|
|
|
+import cn.cslg.pas.common.model.dto.TaskAddNewDTO;
|
|
|
|
|
|
import cn.cslg.pas.common.model.dto.QueryTaskDTO;
|
|
|
import cn.cslg.pas.common.model.vo.*;
|
|
@@ -10,9 +9,8 @@ import cn.cslg.pas.common.utils.*;
|
|
|
import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
|
|
|
|
|
|
import cn.cslg.pas.domain.Personnel;
|
|
|
-import cn.cslg.pas.domain.ProjectField;
|
|
|
import cn.cslg.pas.domain.Task;
|
|
|
-import cn.cslg.pas.domain.asso.AssoOsTaskQrtzTask;
|
|
|
+import cn.cslg.pas.domain.asso.TaskCondition;
|
|
|
import cn.cslg.pas.mapper.TaskMapper;
|
|
|
import cn.cslg.pas.common.model.dto.UploadFileDTO;
|
|
|
import cn.cslg.pas.service.asso.AssoOsTaskQrtzTaskService;
|
|
@@ -27,7 +25,6 @@ import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
-import com.baomidou.mybatisplus.core.metadata.OrderItem;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
@@ -35,7 +32,6 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.util.ArrayList;
|
|
@@ -43,7 +39,6 @@ import java.util.Arrays;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
-import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -166,10 +161,10 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
|
|
|
/**
|
|
|
* 新增网站导入专利任务
|
|
|
*
|
|
|
- * @param qrtzTaskAddNewDTO 前台参数
|
|
|
+ * @param taskAddNewDTO 前台参数
|
|
|
* @return 返回任务id
|
|
|
*/
|
|
|
- public Integer addTask3(QrtzTaskAddNewDTO qrtzTaskAddNewDTO, Integer total, AssoOsTaskQrtzTask assoOsTaskQrtzTask) {
|
|
|
+ public Integer addTask3(TaskAddNewDTO taskAddNewDTO, Integer total, TaskCondition taskCondition) {
|
|
|
//创建任务表实体类,准备装载数据 ↓
|
|
|
Task task = new Task();
|
|
|
|
|
@@ -178,17 +173,17 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
|
|
|
//任务状态(0.队列中 1.进行中 2.成功 3.失败)
|
|
|
task.setStatus(0);
|
|
|
//判断当前导入专利任务是与专题库关联还是与报告关联
|
|
|
- if (qrtzTaskAddNewDTO.getProjectId() != null && qrtzTaskAddNewDTO.getReportId() == null) {
|
|
|
+ if (taskAddNewDTO.getProjectId() != null && taskAddNewDTO.getReportId() == null) {
|
|
|
//专题库id
|
|
|
- task.setProjectId(qrtzTaskAddNewDTO.getProjectId());
|
|
|
- } else if (qrtzTaskAddNewDTO.getProjectId() == null && qrtzTaskAddNewDTO.getReportId() != null) {
|
|
|
+ task.setProjectId(taskAddNewDTO.getProjectId());
|
|
|
+ } else if (taskAddNewDTO.getProjectId() == null && taskAddNewDTO.getReportId() != null) {
|
|
|
//报告id
|
|
|
- task.setReportId(qrtzTaskAddNewDTO.getReportId());
|
|
|
+ task.setReportId(taskAddNewDTO.getReportId());
|
|
|
}
|
|
|
//专利总数量
|
|
|
task.setTotal(total);
|
|
|
//任务类型 (1Excel导入 2导出 3欧专局导入 4专利之星导入)
|
|
|
- task.setType(qrtzTaskAddNewDTO.getTaskType2());
|
|
|
+ task.setType(taskAddNewDTO.getTaskType2());
|
|
|
//导入导出字段数量
|
|
|
task.setFieldNum(0);
|
|
|
//创建人id
|
|
@@ -198,9 +193,9 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
|
|
|
//失败条数
|
|
|
task.setDefaultNum(0);
|
|
|
//所属任务条件id
|
|
|
- task.setQrtzTaskId(assoOsTaskQrtzTask.getId());
|
|
|
+ task.setTaskConditionId(taskCondition.getId());
|
|
|
ProjectImportPatentVO projectImportPatentVO = new ProjectImportPatentVO();
|
|
|
- BeanUtils.copyProperties(qrtzTaskAddNewDTO, projectImportPatentVO);
|
|
|
+ BeanUtils.copyProperties(taskAddNewDTO, projectImportPatentVO);
|
|
|
String pramJson = JSONObject.toJSONString(projectImportPatentVO);
|
|
|
task.setPramJson(pramJson);
|
|
|
|
|
@@ -266,17 +261,21 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
|
|
|
if (queryTaskDTO.getCreateName() != null && !queryTaskDTO.getCreateName().equals("")) {
|
|
|
String res = outInterfaceService.getPersonIdByNamePCS(queryTaskDTO.getCreateName());
|
|
|
List<Integer> personIds = JSON.parseArray(res, Integer.class);
|
|
|
+ //若没有,则ids集合添加一个元素-1(防止执行时sql报错:where uid in ())
|
|
|
+ if (personIds == null || personIds.size() == 0) {
|
|
|
+ personIds.add(-1);
|
|
|
+ }
|
|
|
wrapper.in(Task::getCreateBy, personIds);
|
|
|
}
|
|
|
//根据任务类型1(0普通任务 1定时任务)查询
|
|
|
if (queryTaskDTO.getTaskType() != null) {
|
|
|
- List<AssoOsTaskQrtzTask> assoOsTaskQrtzTasks = assoOsTaskQrtzTaskService.list(new LambdaQueryWrapper<AssoOsTaskQrtzTask>().eq(AssoOsTaskQrtzTask::getTaskType, queryTaskDTO.getTaskType()));
|
|
|
- List<Integer> taskIds = assoOsTaskQrtzTasks.stream().map(AssoOsTaskQrtzTask::getTaskId).collect(Collectors.toList());
|
|
|
- //若没有该普通任务或定时任务对应的任务表数据,手动将查询的id设为-1(即查询不到任务)
|
|
|
- if (taskIds.size() == 0) {
|
|
|
- taskIds.add(-1);
|
|
|
+ List<TaskCondition> taskConditions = assoOsTaskQrtzTaskService.list(new LambdaQueryWrapper<TaskCondition>().eq(TaskCondition::getTaskType, queryTaskDTO.getTaskType()));
|
|
|
+ List<Integer> assoOsTaskQrtzTaskIds = taskConditions.stream().map(TaskCondition::getId).collect(Collectors.toList());
|
|
|
+ //若没有,则ids集合添加一个元素-1(防止执行时sql报错:where qrtz_task_id in ())
|
|
|
+ if (assoOsTaskQrtzTaskIds.size() == 0) {
|
|
|
+ assoOsTaskQrtzTaskIds.add(-1);
|
|
|
}
|
|
|
- wrapper.in(Task::getId, taskIds);
|
|
|
+ wrapper.in(Task::getTaskConditionId, assoOsTaskQrtzTaskIds);
|
|
|
}
|
|
|
//根据任务类型2(1Excel导入 3欧专局导入 4专利之星导入)查询
|
|
|
if (queryTaskDTO.getTaskType2() != null) {
|
|
@@ -287,19 +286,15 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
|
|
|
wrapper.in(Task::getStatus, queryTaskDTO.getTaskStatus());
|
|
|
}
|
|
|
|
|
|
+
|
|
|
List<Task> tasks;
|
|
|
Page<Task> pageList = new Page<>();
|
|
|
//若要分页查询
|
|
|
if (queryTaskDTO.getCurrent() != null) {
|
|
|
//若要排序
|
|
|
if (queryTaskDTO.getOrderBy() != null && !queryTaskDTO.getOrderBy().equals("")) {
|
|
|
- OrderItem orderItem;
|
|
|
- if (queryTaskDTO.getOrderType().equals("asc")) {
|
|
|
- orderItem = OrderItem.asc("create_time");
|
|
|
- } else {
|
|
|
- orderItem = OrderItem.desc("create_time");
|
|
|
- }
|
|
|
- pageList = this.page(new Page<>(queryTaskDTO.getCurrent(), queryTaskDTO.getSize()), wrapper).addOrder(orderItem);
|
|
|
+ wrapper.last("order by create_time " + queryTaskDTO.getOrderType() + ", id " + queryTaskDTO.getOrderType());
|
|
|
+ pageList = this.page(new Page<>(queryTaskDTO.getCurrent(), queryTaskDTO.getSize()), wrapper);
|
|
|
} else {
|
|
|
//若不要排序
|
|
|
pageList = this.page(new Page<>(queryTaskDTO.getCurrent(), queryTaskDTO.getSize()), wrapper);
|
|
@@ -307,14 +302,15 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
|
|
|
tasks = pageList.getRecords();
|
|
|
} else {
|
|
|
//若不要分页查询
|
|
|
+ pageList.setCurrent(0).setSize(0).setTotal(0);
|
|
|
+ //若要排序
|
|
|
if (queryTaskDTO.getOrderBy() != null && !queryTaskDTO.getOrderBy().equals("")) {
|
|
|
- //若要排序
|
|
|
- wrapper.last("order by create_time " + queryTaskDTO.getOrderType());
|
|
|
+ wrapper.last("order by create_time " + queryTaskDTO.getOrderType() + ", id " + queryTaskDTO.getOrderType());
|
|
|
}
|
|
|
tasks = this.list(wrapper);
|
|
|
}
|
|
|
|
|
|
- //调用权限系统接口,根据创建人ids查询出人员列表
|
|
|
+ //装载创建人名称(调用权限系统接口,根据创建人ids查询出人员列表)
|
|
|
List<Integer> createPersonIds = tasks.stream().map(Task::getCreateBy).collect(Collectors.toList());
|
|
|
String res = outInterfaceService.getPersonnelByIdsFromPCS(createPersonIds);
|
|
|
com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(res);
|
|
@@ -324,45 +320,43 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
|
|
|
for (Personnel personnel : personnels) {
|
|
|
if (personnel.getId().equals(task.getCreateBy())) {
|
|
|
task.setCreateName(personnel.getPersonnelName());
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
List<QueryTaskVO> queryTaskVOS = new ArrayList<>();
|
|
|
- List<Integer> assoOsTaskQrtzTaskIds = tasks.stream().filter(item -> item.getType().equals(3) || item.getType().equals(4)).map(Task::getQrtzTaskId).collect(Collectors.toList());
|
|
|
+ List<Integer> assoOsTaskQrtzTaskIds = tasks.stream().filter(item -> item.getType().equals(3) || item.getType().equals(4)).map(Task::getTaskConditionId).collect(Collectors.toList());
|
|
|
//若有网站导入的任务
|
|
|
if (assoOsTaskQrtzTaskIds.size() > 0) {
|
|
|
- List<AssoOsTaskQrtzTask> assoOsTaskQrtzTasks = assoOsTaskQrtzTaskService.list(new LambdaQueryWrapper<AssoOsTaskQrtzTask>().in(AssoOsTaskQrtzTask::getId, assoOsTaskQrtzTaskIds));
|
|
|
- //遍历已分页查询并排序好了的所有任务,将里面是网站导入的任务的任务条件数据整合进去
|
|
|
- if (assoOsTaskQrtzTasks != null && assoOsTaskQrtzTasks.size() > 0) {
|
|
|
- for (Task task : tasks) {
|
|
|
- QueryTaskVO queryTaskVO = new QueryTaskVO();
|
|
|
- if (task.getQrtzTaskId() == null) {
|
|
|
- BeanUtils.copyProperties(task, queryTaskVO);
|
|
|
- //将Excel文件原名称赋值给任务名称
|
|
|
- queryTaskVO.setTaskName(task.getOldName());
|
|
|
- queryTaskVOS.add(queryTaskVO);
|
|
|
- } else {
|
|
|
- for (AssoOsTaskQrtzTask assoOsTaskQrtzTask : assoOsTaskQrtzTasks) {
|
|
|
- //若当前任务是网站导入任务,并且任务条件是当前遍历到的任务条件
|
|
|
- if (task.getQrtzTaskId().equals(assoOsTaskQrtzTask.getId())) {
|
|
|
- BeanUtils.copyProperties(assoOsTaskQrtzTask, queryTaskVO);
|
|
|
- BeanUtils.copyProperties(task, queryTaskVO);
|
|
|
- //当前任务条件与当前任务匹配完成,结束当前这层任务条件循环,继续下一次循环跟下一个任务匹配
|
|
|
- queryTaskVOS.add(queryTaskVO);
|
|
|
- break;
|
|
|
- }
|
|
|
+ List<TaskCondition> taskConditions = assoOsTaskQrtzTaskService.list(new LambdaQueryWrapper<TaskCondition>().in(TaskCondition::getId, assoOsTaskQrtzTaskIds));
|
|
|
+ //遍历装载
|
|
|
+ for (Task task : tasks) {
|
|
|
+ QueryTaskVO queryTaskVO = new QueryTaskVO();
|
|
|
+ if (!task.getType().equals(3) && !task.getType().equals(4)) { //若不是网站导入任务
|
|
|
+ BeanUtils.copyProperties(task, queryTaskVO);
|
|
|
+ queryTaskVO.setTaskName(task.getOldName()); //将Excel文件原名称赋值给taskName
|
|
|
+ queryTaskVO.setTaskType(0); //将任务类型1设置为普通任务(所有Excel任务默认为普通任务)
|
|
|
+ queryTaskVOS.add(queryTaskVO);
|
|
|
+ } else { //若是网站导入任务
|
|
|
+ for (TaskCondition taskCondition : taskConditions) {
|
|
|
+ //找到当前外层遍历到的 task任务的所属任务条件 assoOsTaskQrtzTask
|
|
|
+ if (taskCondition.getId().equals(task.getTaskConditionId())) {
|
|
|
+ BeanUtils.copyProperties(taskCondition, queryTaskVO);
|
|
|
+ BeanUtils.copyProperties(task, queryTaskVO);
|
|
|
+ //当前任务条件与当前任务匹配完成,结束当前这层任务条件循环,继续下一次循环跟下一个任务匹配
|
|
|
+ queryTaskVOS.add(queryTaskVO);
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
- } else {
|
|
|
+ } else { //若没有网站导入任务
|
|
|
//若查询的不是网站导入的任务(即是Excel导入任务的话)
|
|
|
String tasksStr = JSONObject.toJSONString(tasks);
|
|
|
queryTaskVOS = JSON.parseArray(tasksStr, QueryTaskVO.class);
|
|
|
- //遍历,将Excel文件原名称赋值给任务名称
|
|
|
+ //遍历,将Excel文件原名称赋值给taskName,将任务类型1设置为普通任务(所有Excel任务默认为普通任务)
|
|
|
for (QueryTaskVO queryTaskVO : queryTaskVOS) {
|
|
|
queryTaskVO.setTaskName(queryTaskVO.getOldName());
|
|
|
queryTaskVO.setTaskType(0);
|