|
@@ -1,18 +1,21 @@
|
|
package cn.cslg.pas.service;
|
|
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.QrtzTaskAddNewDTO;
|
|
|
|
|
|
-import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
|
|
|
|
-import cn.cslg.pas.common.model.vo.ProjectVO;
|
|
|
|
|
|
+import cn.cslg.pas.common.model.dto.QueryTaskDTO;
|
|
|
|
+import cn.cslg.pas.common.model.vo.*;
|
|
import cn.cslg.pas.common.utils.*;
|
|
import cn.cslg.pas.common.utils.*;
|
|
import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
|
|
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.Task;
|
|
-import cn.cslg.pas.common.model.vo.TaskVO;
|
|
|
|
import cn.cslg.pas.domain.asso.AssoOsTaskQrtzTask;
|
|
import cn.cslg.pas.domain.asso.AssoOsTaskQrtzTask;
|
|
import cn.cslg.pas.mapper.TaskMapper;
|
|
import cn.cslg.pas.mapper.TaskMapper;
|
|
import cn.cslg.pas.common.model.dto.UploadFileDTO;
|
|
import cn.cslg.pas.common.model.dto.UploadFileDTO;
|
|
|
|
+import cn.cslg.pas.service.asso.AssoOsTaskQrtzTaskService;
|
|
import cn.cslg.pas.service.upLoadPatent.ExcutePatentDataEpo;
|
|
import cn.cslg.pas.service.upLoadPatent.ExcutePatentDataEpo;
|
|
import cn.cslg.pas.service.upLoadPatent.ExcutePatentDataExcel;
|
|
import cn.cslg.pas.service.upLoadPatent.ExcutePatentDataExcel;
|
|
import cn.cslg.pas.service.upLoadPatent.ExcutePatentDataStar;
|
|
import cn.cslg.pas.service.upLoadPatent.ExcutePatentDataStar;
|
|
@@ -24,6 +27,7 @@ import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
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.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
@@ -39,6 +43,7 @@ import java.util.Arrays;
|
|
import java.util.Collections;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
@@ -60,6 +65,8 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
|
|
private final ExcutePatentDataExcel excutePatentDataExcel;
|
|
private final ExcutePatentDataExcel excutePatentDataExcel;
|
|
private final ExcutePatentDataEpo excutePatentDataEpo;
|
|
private final ExcutePatentDataEpo excutePatentDataEpo;
|
|
private final ExcutePatentDataStar excutePatentDataStar;
|
|
private final ExcutePatentDataStar excutePatentDataStar;
|
|
|
|
+ private final AssoOsTaskQrtzTaskService assoOsTaskQrtzTaskService;
|
|
|
|
+
|
|
|
|
|
|
public String getFileUrl(Integer id) {
|
|
public String getFileUrl(Integer id) {
|
|
Task task = this.getById(id);
|
|
Task task = this.getById(id);
|
|
@@ -122,12 +129,11 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
|
|
//task.setStartTime(DateUtils.getDateTime());
|
|
//task.setStartTime(DateUtils.getDateTime());
|
|
//任务状态(0.队列中 1.进行中 2.成功 3.失败)
|
|
//任务状态(0.队列中 1.进行中 2.成功 3.失败)
|
|
task.setStatus(0);
|
|
task.setStatus(0);
|
|
- //判断当前导入专利任务是与专题库关联还是与报告关联
|
|
|
|
if (projectImportPatentVO.getProjectId() != null && projectImportPatentVO.getReportId() == null) {
|
|
if (projectImportPatentVO.getProjectId() != null && projectImportPatentVO.getReportId() == null) {
|
|
- //专题库id
|
|
|
|
|
|
+ //若是和专题库关联
|
|
task.setProjectId(projectImportPatentVO.getProjectId());
|
|
task.setProjectId(projectImportPatentVO.getProjectId());
|
|
} else if (projectImportPatentVO.getProjectId() == null && projectImportPatentVO.getReportId() != null) {
|
|
} else if (projectImportPatentVO.getProjectId() == null && projectImportPatentVO.getReportId() != null) {
|
|
- //报告id
|
|
|
|
|
|
+ //若是和报告关联
|
|
task.setReportId(projectImportPatentVO.getReportId());
|
|
task.setReportId(projectImportPatentVO.getReportId());
|
|
}
|
|
}
|
|
//文件名称
|
|
//文件名称
|
|
@@ -150,7 +156,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
|
|
task.setSuccessNum(0);
|
|
task.setSuccessNum(0);
|
|
//失败条数
|
|
//失败条数
|
|
task.setDefaultNum(0);
|
|
task.setDefaultNum(0);
|
|
- //前台参数json格式(数据源配置、自定义字段、文件夹信息)
|
|
|
|
|
|
+ //前台参数json格式
|
|
task.setPramJson(json);
|
|
task.setPramJson(json);
|
|
|
|
|
|
//数据入任务表
|
|
//数据入任务表
|
|
@@ -194,11 +200,10 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
|
|
task.setDefaultNum(0);
|
|
task.setDefaultNum(0);
|
|
//所属任务条件id
|
|
//所属任务条件id
|
|
task.setQrtzTaskId(assoOsTaskQrtzTask.getId());
|
|
task.setQrtzTaskId(assoOsTaskQrtzTask.getId());
|
|
- //自定义字段和文件夹信息
|
|
|
|
ProjectImportPatentVO projectImportPatentVO = new ProjectImportPatentVO();
|
|
ProjectImportPatentVO projectImportPatentVO = new ProjectImportPatentVO();
|
|
BeanUtils.copyProperties(qrtzTaskAddNewDTO, projectImportPatentVO);
|
|
BeanUtils.copyProperties(qrtzTaskAddNewDTO, projectImportPatentVO);
|
|
- String json = JSONObject.toJSONString(projectImportPatentVO);
|
|
|
|
- task.setPramJson(json);
|
|
|
|
|
|
+ String pramJson = JSONObject.toJSONString(projectImportPatentVO);
|
|
|
|
+ task.setPramJson(pramJson);
|
|
|
|
|
|
//数据入任务表
|
|
//数据入任务表
|
|
log.info("任务表(os_task)新增数据");
|
|
log.info("任务表(os_task)新增数据");
|
|
@@ -241,6 +246,139 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
|
|
return pageList;
|
|
return pageList;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ public PageVO queryTasks(QueryTaskDTO queryTaskDTO) throws IOException {
|
|
|
|
+ log.info("开始处理【查询任务】的业务,参数为:{}", queryTaskDTO);
|
|
|
|
+
|
|
|
|
+ //根据专题库id查询
|
|
|
|
+ LambdaQueryWrapper<Task> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ if (queryTaskDTO.getProjectId() != null) {
|
|
|
|
+ wrapper.eq(Task::getProjectId, queryTaskDTO.getProjectId());
|
|
|
|
+ }
|
|
|
|
+ //根据报告id查询
|
|
|
|
+ if (queryTaskDTO.getReportId() != null) {
|
|
|
|
+ wrapper.eq(Task::getReportId, queryTaskDTO.getReportId());
|
|
|
|
+ }
|
|
|
|
+ //专题库id和报告id都没有时,根据当前登陆人id查询)
|
|
|
|
+ if (queryTaskDTO.getProjectId() == null && queryTaskDTO.getReportId() == null) {
|
|
|
|
+ wrapper.eq(Task::getCreateBy, loginUtils.getId());
|
|
|
|
+ }
|
|
|
|
+ //根据创建人名称模糊查询
|
|
|
|
+ if (queryTaskDTO.getCreateName() != null && !queryTaskDTO.getCreateName().equals("")) {
|
|
|
|
+ String res = outInterfaceService.getPersonIdByNamePCS(queryTaskDTO.getCreateName());
|
|
|
|
+ List<Integer> personIds = JSON.parseArray(res, Integer.class);
|
|
|
|
+ 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);
|
|
|
|
+ }
|
|
|
|
+ wrapper.in(Task::getId, taskIds);
|
|
|
|
+ }
|
|
|
|
+ //根据任务类型2(1Excel导入 3欧专局导入 4专利之星导入)查询
|
|
|
|
+ if (queryTaskDTO.getTaskType2() != null) {
|
|
|
|
+ wrapper.eq(Task::getType, queryTaskDTO.getTaskType2());
|
|
|
|
+ }
|
|
|
|
+ //根据任务状态查询
|
|
|
|
+ if (queryTaskDTO.getTaskStatus() != null && queryTaskDTO.getTaskStatus().size() > 0) {
|
|
|
|
+ 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);
|
|
|
|
+ } else {
|
|
|
|
+ //若不要排序
|
|
|
|
+ pageList = this.page(new Page<>(queryTaskDTO.getCurrent(), queryTaskDTO.getSize()), wrapper);
|
|
|
|
+ }
|
|
|
|
+ tasks = pageList.getRecords();
|
|
|
|
+ } else {
|
|
|
|
+ //若不要分页查询
|
|
|
|
+ if (queryTaskDTO.getOrderBy() != null && !queryTaskDTO.getOrderBy().equals("")) {
|
|
|
|
+ //若要排序
|
|
|
|
+ wrapper.last("order by create_time " + queryTaskDTO.getOrderType());
|
|
|
|
+ }
|
|
|
|
+ tasks = this.list(wrapper);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //调用权限系统接口,根据创建人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);
|
|
|
|
+ List<Personnel> personnels = com.alibaba.fastjson.JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
|
|
|
|
+ //遍历任务列表和人员列表,根据创建人id和人员id匹配,装载人员名称
|
|
|
|
+ for (Task task : tasks) {
|
|
|
|
+ for (Personnel personnel : personnels) {
|
|
|
|
+ if (personnel.getId().equals(task.getCreateBy())) {
|
|
|
|
+ task.setCreateName(personnel.getPersonnelName());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ 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());
|
|
|
|
+ //若有网站导入的任务
|
|
|
|
+ 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;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ //若查询的不是网站导入的任务(即是Excel导入任务的话)
|
|
|
|
+ String tasksStr = JSONObject.toJSONString(tasks);
|
|
|
|
+ queryTaskVOS = JSON.parseArray(tasksStr, QueryTaskVO.class);
|
|
|
|
+ //遍历,将Excel文件原名称赋值给任务名称
|
|
|
|
+ for (QueryTaskVO queryTaskVO : queryTaskVOS) {
|
|
|
|
+ queryTaskVO.setTaskName(queryTaskVO.getOldName());
|
|
|
|
+ queryTaskVO.setTaskType(0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //手动创建分页信息返回对象
|
|
|
|
+ PageVO pageVO = new PageVO()
|
|
|
|
+ .setCurrent((int) pageList.getCurrent())
|
|
|
|
+ .setSize((int) pageList.getSize())
|
|
|
|
+ .setTotal((int) pageList.getTotal())
|
|
|
|
+ .setRecords(queryTaskVOS);
|
|
|
|
+ return pageVO;
|
|
|
|
+ }
|
|
|
|
+
|
|
public List<Task> getQueueList(Integer type, Integer projectId, Integer productId) {
|
|
public List<Task> getQueueList(Integer type, Integer projectId, Integer productId) {
|
|
LambdaQueryWrapper<Task> queryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<Task> queryWrapper = new LambdaQueryWrapper<>();
|
|
queryWrapper.eq(Task::getCreateBy, loginUtils.getId());
|
|
queryWrapper.eq(Task::getCreateBy, loginUtils.getId());
|
|
@@ -409,4 +547,5 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
}
|
|
}
|