123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- package cn.cslg.pas.service.upLoadPatent;
- import cn.cslg.pas.common.model.PersonnelVO;
- import cn.cslg.pas.common.model.dto.QrtzTaskAddNewDTO;
- import cn.cslg.pas.common.model.dto.UploadFileDTO;
- import cn.cslg.pas.common.model.outApi.PatentStarListDto;
- import cn.cslg.pas.common.utils.CacheUtils;
- import cn.cslg.pas.common.utils.FileUtils;
- import cn.cslg.pas.common.utils.ReadExcelUtils;
- import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
- import cn.cslg.pas.common.utils.ThrowException;
- import cn.cslg.pas.domain.SerachBiblioData;
- import cn.cslg.pas.domain.WebLoginConfig;
- import cn.cslg.pas.domain.asso.AssoOsTaskQrtzTask;
- import cn.cslg.pas.service.TaskService;
- import cn.cslg.pas.service.WebLoginConfigService;
- import cn.cslg.pas.service.asso.AssoOsTaskQrtzTaskService;
- import cn.cslg.pas.service.outApi.PatentStarApiService;
- import lombok.RequiredArgsConstructor;
- import org.springframework.context.annotation.Lazy;
- import org.springframework.stereotype.Service;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.IOException;
- import java.util.Arrays;
- import java.util.List;
- import java.util.Map;
- /**
- * 导入专利任务的业务层
- *
- * @Author 李仁杰
- * 导入任务类
- */
- @Service
- @RequiredArgsConstructor(onConstructor_ = {@Lazy})
- public class UploadTaskService {
- private final FileUtils fileUtils;
- private final TaskService taskService;
- private final PantentQueueService pantentQueueService;
- private final AssoOsTaskQrtzTaskService assoOsTaskQrtzTaskService;
- private final ExcutePatentDataEpo excutePatentDataEpo;
- private final CacheUtils cacheUtils;
- private final LoginUtils loginUtils;
- private final WebLoginConfigService webLoginConfigService;
- private final PatentStarApiService patentStarApiService;
- /**
- * 新增Excel导入任务
- *
- * @param file Excel文件
- * @param json 前台参数(与专题库关联信息、自定义字段、文件夹等)
- */
- public void addExcelTask(MultipartFile file, String json) throws IOException {
- //将包含多件专利的Excel文件上传至本地,并返回文件对象fileDTO
- UploadFileDTO fileDTO = fileUtils.uploadFile(file);
- //获得文件路径(绝对路径)
- String filePath = fileUtils.getPath(fileDTO.getPath());
- //检查文件合法性并获取专利总数量
- Integer total = ReadExcelUtils.textExcel(filePath);
- //新增任务(专利导入导出任务表)
- Integer taskId = taskService.addTask2(fileDTO, total, json);
- //任务存入生产者任务队列并唤醒生产者线程
- pantentQueueService.taskQueueAddTask(Arrays.asList(taskId));
- pantentQueueService.awakeTasktch();
- }
- /**
- * 新增Epo网站导入任务
- *
- * @param qrtzTaskAddNewDTO 前台参数(检索信息conditions、专题库id、下载字段configCells等)
- */
- public AssoOsTaskQrtzTask addEpoTask(QrtzTaskAddNewDTO qrtzTaskAddNewDTO) throws IOException {
- Integer webId = qrtzTaskAddNewDTO.getConfigId();
- PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
- //根据网站id获得配置
- WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webId, personnelVO.getTenantId());
- if (webLoginConfig == null) {
- ThrowException.throwXiaoShiException("未配置网站登录信息");
- }
- //检查任务合法性(检查当前检索式能否检索出专利)
- //根据检索式conditions检索一件专利著录信息
- SerachBiblioData serachBiblioData = excutePatentDataEpo.getSerachBiblioData(qrtzTaskAddNewDTO.getConditions(), 1, 1);
- if (serachBiblioData == null || serachBiblioData.getTotals() == 0) {
- ThrowException.throwXiaoShiException("根据检索信息未检索到相关专利,请尝试更换检索信息");
- }
- //任务与任务条件关联表新增数据
- AssoOsTaskQrtzTask assoOsTaskQrtzTask = new AssoOsTaskQrtzTask();
- assoOsTaskQrtzTask
- .setTaskType(qrtzTaskAddNewDTO.getTaskType())
- .setConditions(qrtzTaskAddNewDTO.getConditions())
- .setCrons(qrtzTaskAddNewDTO.getCrons())
- .setConfigId(qrtzTaskAddNewDTO.getConfigId())
- .setTaskName(qrtzTaskAddNewDTO.getTaskName())
- .setTotal(serachBiblioData.getTotals());
- List<String> cells = qrtzTaskAddNewDTO.getConfigCells();
- if (cells == null) {
- assoOsTaskQrtzTask.setConfigCells("");
- } else {
- assoOsTaskQrtzTask.setConfigCells(String.join(",", cells));
- }
- assoOsTaskQrtzTaskService.save(assoOsTaskQrtzTask);
- //任务表新增任务
- Integer taskId = taskService.addTask3(qrtzTaskAddNewDTO, serachBiblioData.getTotals(), assoOsTaskQrtzTask);
- //任务与任务条件关联表更新数据
- assoOsTaskQrtzTask.setTaskId(taskId);
- assoOsTaskQrtzTaskService.updateById(assoOsTaskQrtzTask);
- //任务存入生产者任务队列并唤醒生产者线程
- pantentQueueService.taskQueueAddTask(Arrays.asList(taskId));
- pantentQueueService.awakeTasktch();
- return assoOsTaskQrtzTask;
- }
- /**
- * 新增专利之星导入任务
- *
- * @param qrtzTaskAddNewDTO 前台参数(检索信息conditions、专题库id、下载字段configCells等)
- */
- public AssoOsTaskQrtzTask addPatentStarTask(QrtzTaskAddNewDTO qrtzTaskAddNewDTO) throws IOException {
- Integer webId = qrtzTaskAddNewDTO.getConfigId();
- PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
- //根据网站id获得配置
- WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webId, personnelVO.getTenantId());
- if (webLoginConfig == null) {
- ThrowException.throwXiaoShiException("未配置网站登录信息");
- }
- //检查任务合法性(检查当前检索式能否检索出专利)
- //根据检索式conditions检索一件专利著录信息
- PatentStarListDto patentStarListDto = new PatentStarListDto()
- .setCurrentQuery(qrtzTaskAddNewDTO.getConditions())
- .setOrderBy("AD")
- .setOrderByType("DESC")
- .setPageNum(1)
- .setRowCount(10)
- .setDBType("cN");
- Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
- if (resultMap == null || (Integer) resultMap.get("total") == 0) {
- ThrowException.throwXiaoShiException("根据检索信息未检索到相关专利,请尝试更换检索信息");
- }
- //专利总数量
- Integer total = (Integer) resultMap.get("total");
- //任务与任务条件关联表新增数据
- AssoOsTaskQrtzTask assoOsTaskQrtzTask = new AssoOsTaskQrtzTask();
- assoOsTaskQrtzTask
- .setTaskType(qrtzTaskAddNewDTO.getTaskType())
- .setConditions(qrtzTaskAddNewDTO.getConditions())
- .setCrons(qrtzTaskAddNewDTO.getCrons())
- .setConfigId(qrtzTaskAddNewDTO.getConfigId())
- .setTaskName(qrtzTaskAddNewDTO.getTaskName())
- .setTotal(total);
- List<String> cells = qrtzTaskAddNewDTO.getConfigCells();
- if (cells == null) {
- assoOsTaskQrtzTask.setConfigCells("");
- } else {
- assoOsTaskQrtzTask.setConfigCells(String.join(",", cells));
- }
- assoOsTaskQrtzTaskService.save(assoOsTaskQrtzTask);
- //任务表新增任务
- Integer taskId = taskService.addTask3(qrtzTaskAddNewDTO, total, assoOsTaskQrtzTask);
- //任务与任务条件关联表更新数据
- assoOsTaskQrtzTask.setTaskId(taskId);
- assoOsTaskQrtzTaskService.updateById(assoOsTaskQrtzTask);
- //任务存入生产者任务队列并唤醒生产者线程
- pantentQueueService.taskQueueAddTask(Arrays.asList(taskId));
- pantentQueueService.awakeTasktch();
- return assoOsTaskQrtzTask;
- }
- }
|