Kaynağa Gözat

实时推代码

chendayu 2 yıl önce
ebeveyn
işleme
fd1949c88f
1 değiştirilmiş dosya ile 149 ekleme ve 10 silme
  1. 149 10
      PAS/src/main/java/cn/cslg/pas/service/TaskService.java

+ 149 - 10
PAS/src/main/java/cn/cslg/pas/service/TaskService.java

@@ -1,18 +1,21 @@
 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.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.SecurityUtils.LoginUtils;
 
+import cn.cslg.pas.domain.Personnel;
+import cn.cslg.pas.domain.ProjectField;
 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.mapper.TaskMapper;
 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.ExcutePatentDataExcel;
 import cn.cslg.pas.service.upLoadPatent.ExcutePatentDataStar;
@@ -24,6 +27,7 @@ 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;
@@ -39,6 +43,7 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * <p>
@@ -60,6 +65,8 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
     private final ExcutePatentDataExcel excutePatentDataExcel;
     private final ExcutePatentDataEpo excutePatentDataEpo;
     private final ExcutePatentDataStar excutePatentDataStar;
+    private final AssoOsTaskQrtzTaskService assoOsTaskQrtzTaskService;
+
 
     public String getFileUrl(Integer id) {
         Task task = this.getById(id);
@@ -122,12 +129,11 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
         //task.setStartTime(DateUtils.getDateTime());
         //任务状态(0.队列中 1.进行中 2.成功 3.失败)
         task.setStatus(0);
-        //判断当前导入专利任务是与专题库关联还是与报告关联
         if (projectImportPatentVO.getProjectId() != null && projectImportPatentVO.getReportId() == null) {
-            //专题库id
+            //若是和专题库关联
             task.setProjectId(projectImportPatentVO.getProjectId());
         } else if (projectImportPatentVO.getProjectId() == null && projectImportPatentVO.getReportId() != null) {
-            //报告id
+            //若是和报告关联
             task.setReportId(projectImportPatentVO.getReportId());
         }
         //文件名称
@@ -150,7 +156,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
         task.setSuccessNum(0);
         //失败条数
         task.setDefaultNum(0);
-        //前台参数json格式(数据源配置、自定义字段、文件夹信息)
+        //前台参数json格式
         task.setPramJson(json);
 
         //数据入任务表
@@ -194,11 +200,10 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
         task.setDefaultNum(0);
         //所属任务条件id
         task.setQrtzTaskId(assoOsTaskQrtzTask.getId());
-        //自定义字段和文件夹信息
         ProjectImportPatentVO projectImportPatentVO = new 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)新增数据");
@@ -241,6 +246,139 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
         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) {
         LambdaQueryWrapper<Task> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Task::getCreateBy, loginUtils.getId());
@@ -409,4 +547,5 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
 
     }
 
+
 }