Ver código fonte

Merge remote-tracking branch 'origin/dev' into dev

chendayu 2 anos atrás
pai
commit
18a58bc95b

+ 2 - 1
src/main/java/com/example/demo/controller/QuartzTaskController.java

@@ -17,6 +17,7 @@ import org.quartz.SchedulerException;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
 import java.util.List;
 
 
@@ -52,7 +53,7 @@ public class QuartzTaskController {
 
     @Operation(summary = "查询任务条件列表")
     @PostMapping("/getTasks")
-    public String getTasks(@RequestBody QueryPageDTO queryPageDTO) {
+    public String getTasks(@RequestBody QueryPageDTO queryPageDTO) throws IOException {
         return Response.success(qrTaskService.getTasks(queryPageDTO));
     }
 

+ 91 - 0
src/main/java/com/example/demo/domain/entity/Personnel.java

@@ -0,0 +1,91 @@
+package com.example.demo.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-2
+ * @description 人员类 数据库对应实体
+ */
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+@TableName(value = "PERSONNEL")
+public class Personnel extends BaseEntity<Personnel> {
+    /**
+     * 人员账号
+     */
+    @TableField(value = "PERSONNEL_USERNAME")
+    private String personnelUserName;
+
+    /**
+     * 人员密码
+     */
+    @TableField(value = "PERSONNEL_PASSWORD")
+    private String personnelPassword;
+
+    /**
+     * 人员名称
+     */
+    @TableField(value = "PERSONNEL_NAME")
+    private String personnelName;
+
+    /**
+     * 人员性别(1男0女)
+     */
+    @TableField(value = "PERSONNEL_SEX")
+    private Integer personnelUserSex;
+
+    /**
+     * 人员联系电话
+     */
+    @TableField(value = "PERSONNEL_PHONE")
+    private String personnelPhone;
+
+    /**
+     * 人员邮箱
+     */
+    @TableField(value = "PERSONNEL_EMAIL")
+    private String personnelEmail;
+
+    /**
+     * 人员QQ号
+     */
+    @TableField(value = "PERSONNEL_QQ")
+    private String personnelQQ;
+
+    /**
+     * 人员微信号
+     */
+    @TableField(value = "PERSONNEL_WECHAT")
+    private String personnelWechat;
+
+    /**
+     * 人员钉钉号
+     */
+    @TableField(value = "PERSONNEL_DING")
+    private String personnelDing;
+
+    /**
+     * 人员描述
+     */
+    @TableField(value = "PERSONNEL_DESCRIPTION")
+    private String personnelDescription;
+
+    /**
+     * 人员账号状态(1启用0停用)
+     */
+    @TableField(value = "PERSONNEL_STATUS")
+    private Integer personnelStatus;
+
+    /**
+     * 租户ID
+     */
+    @TableField(value = "TENANT_ID")
+    private Integer tenantId;
+}

+ 1 - 1
src/main/java/com/example/demo/domain/entity/QrtzTask.java

@@ -70,7 +70,7 @@ public class QrtzTask extends BaseEntity<QrtzTask>{
      * 创建人名称
      */
     @TableField(value = "create_person_name")
-    private String createPersonName;
+    private String createName;
     @TableField(value = "tenant_id")
     private Integer tenantId;
     /**

+ 18 - 0
src/main/java/com/example/demo/service/OutInterfaceService.java

@@ -160,5 +160,23 @@ public class OutInterfaceService {
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
+    /**
+     * @title 根据ID查询人员
+     * @description 接口来源:PCS
+     */
+    public String getPersonnelByIdsFromPCS(List<Integer> ids) throws IOException {
 
+        String param = new Gson().toJson(ids);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getPersonnelByIds")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
 }

+ 33 - 3
src/main/java/com/example/demo/service/QrTaskService.java

@@ -1,5 +1,8 @@
 package com.example.demo.service;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -9,11 +12,13 @@ import com.example.demo.domain.dto.QrtzTaskAddNewDTO;
 import com.example.demo.domain.dto.QrtzTaskUpdateDTO;
 import com.example.demo.domain.dto.QueryPageDTO;
 import com.example.demo.domain.dto.QueryTaskDetailsDTO;
+import com.example.demo.domain.entity.Personnel;
 import com.example.demo.domain.entity.QrtzTask;
 import com.example.demo.domain.entity.QrtzTaskDetail;
 import com.example.demo.domain.entity.WebLoginConfig;
 import com.example.demo.mapper.QrtzTaskMapper;
 import com.example.demo.model.vo.PersonnelVO;
+import com.example.demo.util.CacheUtils;
 import com.example.demo.util.LoginUtils;
 import com.example.demo.util.Response;
 import lombok.RequiredArgsConstructor;
@@ -24,12 +29,14 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Stack;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * @author admin
@@ -44,6 +51,8 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
     private final QrTaskDetailService qrTaskDetailService;
     private final LoginUtils loginUtils;
     private final WebLoginConfigService webLoginConfigService;
+    private  final CacheUtils cacheUtils;
+    private final OutInterfaceService outInterfaceService;
     /**
      * 新增任务
      *
@@ -52,8 +61,9 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
     public QrtzTask addQuartzTask(QrtzTaskAddNewDTO qrtzTaskAddNewDTO) {
         log.info("开始处理【新增任务条件】的业务,参数为:{}", qrtzTaskAddNewDTO);
          Integer webId =   qrtzTaskAddNewDTO.getConfigId();
+        PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
          //根据网站id获得配置
-       WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webId);
+       WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webId,personnelVO.getTenantId());
        if(webLoginConfig==null){
            return  null;
        }
@@ -61,6 +71,7 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
         QrtzTask qrtzTask = new QrtzTask();
         BeanUtils.copyProperties(qrtzTaskAddNewDTO, qrtzTask);
         qrtzTask.setCreatePersonId(loginUtils.getId());
+        qrtzTask.setTenantId(personnelVO.getTenantId());
         List<String> cells = qrtzTaskAddNewDTO.getConfigCells();
         if (cells == null) {
             qrtzTask.setConfigCells("");
@@ -71,7 +82,6 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
 
         log.info("数据入任务条件表");
         qrtzTask.insert();
-
         //若是普通任务则新增一条任务执行情况
         if (qrtzTask.getTaskType() != 1) {
             QrtzTaskDetail qrtzTaskDetail = new QrtzTaskDetail()
@@ -145,7 +155,7 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
         return reIds;
     }
 
-    public Page<QrtzTask> getTasks(QueryPageDTO queryPageDTO) {
+    public Page<QrtzTask> getTasks(QueryPageDTO queryPageDTO) throws IOException {
         log.info("开始处理【查询任务条件列表】的业务,参数为:{}", queryPageDTO);
 
         String orderBy = queryPageDTO.getOrderBy();
@@ -167,9 +177,29 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
             queryWrapper.orderByDesc("modified_time");
         }
         Page<QrtzTask> page = this.page(new Page<>(queryPageDTO.getCurrent(), queryPageDTO.getSize()), queryWrapper.orderByDesc("modified_time"));
+       this.setDataList(page.getRecords()) ;
         return page;
     }
 
+
+    private void setDataList(List<QrtzTask> qrtzTasks) throws IOException {
+        //获得创建人的id集合
+        List<Integer> createIds =qrtzTasks.stream().map(QrtzTask::getCreatePersonId).collect(Collectors.toList());
+        //根据人员Id获得人员信息
+        String res1 = outInterfaceService.getPersonnelByIdsFromPCS(createIds);
+        JSONObject jsonObject1 = JSONObject.parseObject(res1);
+        //解析jason获得标的专利的权要
+        List<Personnel> personnels = JSON.parseArray(jsonObject1.getString("data"), Personnel.class);
+        for (QrtzTask project : qrtzTasks) {
+            //装载负责人名
+            List<Personnel> mapCre = personnels.stream().filter(tem -> tem.getId().equals(project.getCreatePersonId())).collect(Collectors.toList());
+                if(mapCre.size()>0){
+                    project.setCreateName(mapCre.get(0).getPersonnelName());
+                }
+        }
+
+    }
+
     public Page<QrtzTaskDetail> getTaskDetails(QueryTaskDetailsDTO queryTaskDetailsDTO) {
         log.info("开始处理【查询任务执行情况列表】的业务,参数为:{}", queryTaskDetailsDTO);
         LambdaQueryWrapper<QrtzTaskDetail> queryWrapper = new LambdaQueryWrapper<>();

+ 189 - 98
src/main/java/com/example/demo/service/UploadFromWebService.java

@@ -72,7 +72,9 @@ public class UploadFromWebService {
             //conditions = this.formatConditions(conditions);
             //根据id 获得网站配置
             WebConfig webConfig = webConfigService.getConfigById(id);
-            if (webConfig == null) {
+            //根据网站id和用户的租户获得登录信息
+            WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webConfig.getId(),qrtzTask.getTenantId());
+            if (webLoginConfig == null) {
                 qrtzTaskDetail.setTaskDetailState(3);
                 qrtzTaskDetail.setSuccessNum(successNum);
                 qrtzTaskDetail.setDefaultNum(qrtzTaskDetail.getAllNum() - successNum);
@@ -91,8 +93,6 @@ public class UploadFromWebService {
                         .setTotal(successNum), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
                 return null;
             }
-            //根据网站id和用户的租户获得登录信息
-            WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webConfig.getId());
             //1.获得驱动
             //  System.setProperty("webdriver.chrome.driver", "D:\\driver\\chromedriver.exe");
             System.setProperty("webdriver.chrome.driver", url);
@@ -514,24 +514,43 @@ public class UploadFromWebService {
     public List<PatentCell> getEPO(WebQueryDTO webQueryDTO) throws Exception {
         log.info("开始处理【下载欧专局专利数据】的业务,参数为:{}", webQueryDTO);
         List<PatentCell> patentCells = new ArrayList<>();
-        //当前任务执行情况
-//        QrtzTaskDetail qrtzTaskDetail = qrTaskDetailService.getById(webQueryDTO.getTaskId());
-//        Integer successNum = qrtzTaskDetail.getSuccessNum();
-//        int startPage = successNum / 5;
-//        int startNum = successNum % 5;
-//        //当前任务条件
-//        QrtzTask qrtzTask = qrTaskService.getById(qrtzTaskDetail.getTaskId());
-
+        QrtzTaskDetail qrtzTaskDetail = qrTaskDetailService.getById(webQueryDTO.getTaskId());
+        Integer successNum = qrtzTaskDetail.getSuccessNum();
+        int startPage = successNum / 5;
+        int startNum = successNum % 5;
+        //当前任务条件
+        QrtzTask qrtzTask = qrTaskService.getById(qrtzTaskDetail.getTaskId());
         //1.从DTO中取出网站id、检索信息条件、下载字段、专题库id、报告id
         Integer webId = webQueryDTO.getWebConfigId();
         List<String> cells = webQueryDTO.getConCells();
         String conditions = webQueryDTO.getConditions();
         Integer projectId = webQueryDTO.getProjectId();
         Integer reportId = webQueryDTO.getReportId();
-
+        //根据id 获得网站配置
+        WebConfig webConfig = webConfigService.getConfigById(webId);
+        //根据网站id和用户的租户获得登录信息
+        WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webConfig.getId(),qrtzTask.getTenantId());
+        if (webLoginConfig == null) {
+            qrtzTaskDetail.setTaskDetailState(3);
+            qrtzTaskDetail.setSuccessNum(successNum);
+            qrtzTaskDetail.setDefaultNum(qrtzTaskDetail.getAllNum() - successNum);
+            qrtzTaskDetail.setFailure("未配置登录信息");
+            qrtzTaskDetail.setEndTime(new Date());
+            qrtzTaskDetail.updateById();
+            WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
+                    .setId(webQueryDTO.getTaskId())
+                    .setProjectId(webQueryDTO.getProjectId())
+                    .setComplete(true)
+                    .setIndex(successNum)
+                    .setPercentage(0.0)
+                    .setTaskDetailState(3)
+                    .setFileName("")
+                    .setUrl("")
+                    .setTotal(successNum), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
+            return null;
+        }
         //定义每次检索的专利数量(每次检索50件)
         int size = 50;
-
         //2.根据检索式conditions先检索一件专利著录信息【此操作主要是为了获得专利总数量count】
         SerachBiblioData serachBiblioData = getSerachBiblioData(conditions, 1, 1);
         if (serachBiblioData == null || serachBiblioData.getTotals() == 0) {
@@ -541,9 +560,40 @@ public class UploadFromWebService {
 
         //获得专利总数量
         Integer count = serachBiblioData.getTotals();
-
+        //计算进度值
+        double percentage = count == 0 ? 0 : (count.equals(successNum) ? (successNum * 1D) : (successNum + 1D) / count * 100D);
+        percentage = MathUtils.saveTwoDecimal(percentage);
         //3.根据专利总数量count计算检索次数,来循环检索
         for (int i = 1; i <= count; i += size) {
+            //查看任务状态
+            QrtzTaskDetail qrtzTaskDetail1 = qrTaskDetailService.getById(webQueryDTO.getTaskId());
+            if (qrtzTaskDetail1.getTaskDetailState().equals(7)) {
+                qrtzTaskDetail1.setTaskDetailState(5);
+                qrtzTaskDetail1.setSuccessNum(successNum);
+                qrtzTaskDetail1.setTaskProcess(percentage);
+                qrtzTaskDetail1.updateById();
+                WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
+                        .setId(webQueryDTO.getTaskId())
+                        .setProjectId(webQueryDTO.getProjectId())
+                        .setComplete(false)
+                        .setIndex(successNum)
+                        .setTaskDetailState(5)
+                        .setTotal(count), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
+                return null;
+            } else if (qrtzTaskDetail1.getTaskDetailState().equals(8)) {
+                qrtzTaskDetail1.setTaskDetailState(6);
+                qrtzTaskDetail1.setSuccessNum(successNum);
+                qrtzTaskDetail1.setTaskProcess(percentage);
+                qrtzTaskDetail1.updateById();
+                WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
+                        .setId(webQueryDTO.getTaskId())
+                        .setProjectId(webQueryDTO.getProjectId())
+                        .setComplete(false)
+                        .setIndex(successNum)
+                        .setTaskDetailState(6)
+                        .setTotal(count), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
+                return null;
+            }
             //3.1根据检索式conditions、专利开始数i、专利最后数i + size - 1检索专利著录信息
             serachBiblioData = getSerachBiblioData(conditions, i, i + size - 1);
             //获取检索结果中的所有专利著录信息
@@ -551,11 +601,10 @@ public class UploadFromWebService {
                 continue;
             }
             List<PatentZhuLu> patents = serachBiblioData.getPatents();
-
             //3.2遍历专利
             for (PatentZhuLu patent : patents) {
                 PatentCell patentCell = new PatentCell();
-                patentCell.setProjectId(projectId);
+                patentCell.setProjectId(qrtzTask.getProjectId());
                 PubNo pubNO = new PubNo();
                 //装载专利著录
                 if (cells.contains("1")) {
@@ -635,33 +684,93 @@ public class UploadFromWebService {
                     if (cells.contains("7")) {
                         setFuJian(drawingLink, drawingPage, drawingType, patentCell, ".tiff");
                     }
+                    if (patentCell.getPatentNo() != null) {
+                        String res = outInterfaceService.importPatents(patentCell);
+                        JSONObject jsonObject = JSONObject.parseObject(res);
+                        if (jsonObject.get("code").toString().equals("500")) {
+                            //任务执行情况状态设为失败,任务条件状态设为已完成(若是任务条件是定时任务则设为等待下一次执行)
+                            qrtzTaskDetail.setTaskDetailState(3);
+                            qrtzTaskDetail.setSuccessNum(successNum);
+                            qrtzTaskDetail.setDefaultNum(count - successNum);
+                            qrtzTaskDetail.setEndTime(new Date());
+                            qrtzTaskDetail.updateById();
+                            if (qrtzTask.getTaskType() == 1) {
+                                qrtzTask.setTaskState(4);
+                            } else {
+                                qrtzTask.setTaskState(3);
+                            }
+                            qrtzTask.updateById();
+                            return null;
+                        }
+                    }
+
+                    QrtzTaskDetail qrtzTaskDetail11 = qrTaskDetailService.getById(qrtzTaskDetail.getId());
+                    percentage = count == 0 ? 0 : (count.equals(successNum) ? (successNum * 1D) : (successNum + 1D) / count * 100D);
+                    percentage = MathUtils.saveTwoDecimal(percentage);
+                    WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
+                            .setId(webQueryDTO.getTaskId())
+                            .setProjectId(webQueryDTO.getProjectId())
+                            .setComplete(false)
+                            .setIndex(successNum)
+                            .setPercentage(percentage)
+                            .setTaskDetailState(qrtzTaskDetail11.getTaskDetailState())
+                            .setFileName("")
+                            .setUrl("")
+                            .setTotal(count), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "null");
                 } catch (XiaoShiException e) {
                     //虽然拿不到所有附图,但是可以拿其他的,能拿到啥是啥
                     log.info(e.getMessage());
+                    qrtzTaskDetail.setTaskDetailState(3);
+                    qrtzTaskDetail.setSuccessNum(successNum);
+                    qrtzTaskDetail.setDefaultNum(qrtzTaskDetail.getAllNum() - successNum);
+                    qrtzTaskDetail.setFailure("拉取节点失败");
+                    qrtzTaskDetail.setEndTime(new Date());
+                    qrtzTaskDetail.updateById();
+                    if (qrtzTask.getTaskType() == 1) {
+                        qrtzTask.setTaskState(4);
+                    } else {
+                        qrtzTask.setTaskState(3);
+                    }
+                    qrtzTask.updateById();
+                    WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
+                            .setId(webQueryDTO.getTaskId())
+                            .setProjectId(webQueryDTO.getProjectId())
+                            .setComplete(true)
+                            .setIndex(successNum)
+                            .setPercentage(100D)
+                            .setTaskDetailState(qrtzTaskDetail.getTaskDetailState())
+                            .setFileName("")
+                            .setUrl("")
+                            .setTotal(successNum), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "");
                 }
 
                 //4.保存专利信息(发送给专题库)
-                String res = outInterfaceService.importPatents(patentCell);
-                JSONObject jsonObject = JSONObject.parseObject(res);
-                if (jsonObject.get("code").toString().equals("500")) {
-//                    //任务执行情况状态设为失败,任务条件状态设为已完成(若是任务条件是定时任务则设为等待下一次执行)
-//                    qrtzTaskDetail.setTaskDetailState(3);
-//                    qrtzTaskDetail.setSuccessNum(successNum);
-//                    qrtzTaskDetail.setDefaultNum(count - successNum);
-//                    qrtzTaskDetail.setEndTime(new Date());
-//                    qrtzTaskDetail.updateById();
-//                    if (qrtzTask.getTaskType() == 1) {
-//                        qrtzTask.setTaskState(4);
-//                    } else {
-//                        qrtzTask.setTaskState(3);
-//                    }
-//                    qrtzTask.updateById();
-//                    return null;
-                }
                 patentCells.add(patentCell);
             }
         }
-
+        WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
+                .setId(webQueryDTO.getTaskId())
+                .setProjectId(webQueryDTO.getProjectId())
+                .setComplete(true)
+                .setIndex(count)
+                .setPercentage(100D)
+                .setTaskDetailState(qrtzTaskDetail.getTaskDetailState())
+                .setFileName("")
+                .setUrl("")
+                .setTotal(count), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), "");
+        //任务执行情况状态设为成功,任务条件状态设为已完成(若是任务条件是定时任务则设为等待下一次执行)
+        qrtzTaskDetail.setTaskDetailState(2);
+        qrtzTaskDetail.setSuccessNum(successNum);
+        qrtzTaskDetail.setDefaultNum(qrtzTaskDetail.getAllNum() - successNum);
+        qrtzTaskDetail.setTaskProcess(100);
+        qrtzTaskDetail.setEndTime(new Date());
+        qrtzTaskDetail.updateById();
+        if (qrtzTask.getTaskType() == 1) {
+            qrtzTask.setTaskState(4);
+        } else {
+            qrtzTask.setTaskState(2);
+        }
+        qrtzTask.updateById();
         return patentCells;
 
     }
@@ -722,71 +831,49 @@ public class UploadFromWebService {
             byte[] buffer = outInterfaceService.getPatentFile(getFuTuParamsDTO);
             InputStream inputStream = new ByteArrayInputStream(buffer);
             streams[i - 1] = inputStream;
-            //如果不是说明书pdf
-            if (!FuJianSuffix.equals(".pdf")) {
-                File file = File.createTempFile("new_url", FuJianSuffix);
-                FileOutputStream out = new FileOutputStream(file);
-                out.write(buffer);
-                out.close();
-                streams[i - 1] = new FileInputStream(file);
-                DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(16, null);
-                FileItem item = diskFileItemFactory.createItem(file.getName(), "text/plain", true, file.getName());
-                int bytesRead = 0;
-                buffer = new byte[8192];
-                try {
-                    FileInputStream fis = new FileInputStream(file);
-                    OutputStream os = item.getOutputStream();
-                    int len = 8192;
-                    while ((bytesRead = fis.read(buffer, 0, len)) != -1) {
-                        os.write(buffer, 0, bytesRead);
-                    }
-                    os.close();
-                    fis.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-                MultipartFile multipartFile = new CommonsMultipartFile(item);
-                UploadFileDTO fileDTO = fileUtils.uploadFile(multipartFile);
-                //如果是摘要附图
-                if (FuJianSuffix.equals(".jpeg")) {
-                    patentCell.setPicUrl(fileDTO.getPath());
-                }
-                //如果是其他附图
-                if (FuJianSuffix.equals(".tiff")) {
-                    otherUrls.add(fileDTO.getPath());
-                }
-            }
+//            File file = File.createTempFile("new_url", FuJianSuffix);
+//            FileOutputStream out = new FileOutputStream(file);
+//            out.write(buffer);
+//            out.close();
+//            streams[i - 1] = new FileInputStream(file);
+//            DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(16, null);
+//            FileItem item = diskFileItemFactory.createItem(file.getName(), "text/plain", true, file.getName());
+//            int bytesRead = 0;
+//            buffer = new byte[8192];
+//            try {
+//                FileInputStream fis = new FileInputStream(file);
+//                OutputStream os = item.getOutputStream();
+//                int len = 8192;
+//                while ((bytesRead = fis.read(buffer, 0, len)) != -1) {
+//                    os.write(buffer, 0, bytesRead);
+//                }
+//                os.close();
+//                fis.close();
+//            } catch (IOException e) {
+//                e.printStackTrace();
+//            }
+//            MultipartFile multipartFile = new CommonsMultipartFile(item);
+//            UploadFileDTO fileDTO = fileUtils.uploadFile(multipartFile);
+//            switch (FuJianSuffix) {
+//                case ".pdf":
+//                    streams[i - 1] = new FileInputStream(fileDTO.getPath());
+//                    break;
+//                case ".jpeg":
+//                    patentCell.setPicUrl(fileDTO.getPath());
+//                    break;
+//                case ".tiff":
+//                    otherUrls.add(fileDTO.getPath());
+//                    break;
+//            }
         }
 
-        //如果是说明书pdf
         if (FuJianSuffix.equals(".pdf")) {
-            //合并说明书多个pdf文件
+            //合并 说明书多个pdf文件
             PdfDocumentBase doc = PdfDocument.mergeFiles(streams);
             //保存结果文件
             doc.save("merge.pdf", FileFormat.PDF);
-            doc.close();
 
-            //手动将合并后的pdf文件转成MultipartFile,上传文件并获取path装载到patentCell
-            File file = new File("merge.pdf");
-            DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(16, null);
-            FileItem item = diskFileItemFactory.createItem(file.getName(), "text/plain", true, file.getName());
-            int bytesRead = 0;
-            byte[] buffer = new byte[8192];
-            try {
-                FileInputStream fis = new FileInputStream(file);
-                OutputStream os = item.getOutputStream();
-                int len = 8192;
-                while ((bytesRead = fis.read(buffer, 0, len)) != -1) {
-                    os.write(buffer, 0, bytesRead);
-                }
-                os.close();
-                fis.close();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-            MultipartFile multipartFile = new CommonsMultipartFile(item);
-            UploadFileDTO fileDTO = fileUtils.uploadFile(multipartFile);
-            patentCell.setPdf(fileDTO);
+            doc.close();
         } else if (FuJianSuffix.equals(".tiff")) {
             patentCell.setOtherUrls(otherUrls);
         }
@@ -885,7 +972,7 @@ public class UploadFromWebService {
             }
         }
         //装载申请日
-        patentCell.setApplicationDate(patent.getAppDate().substring(0, patent.getAppDate().indexOf("T")));
+        patentCell.setApplicationDate(patent.getAppDate());
         //装载国家/省市
         patentCell.setCountry(patent.getAppCountry());
         //装载公开号
@@ -898,16 +985,20 @@ public class UploadFromWebService {
         //装载专利号
         patentCell.setPatentNo(patentCell.getPublicNo());
         //装载公开日
-        patentCell.setPubilcDate(patent.getPubDate().substring(0, patent.getPubDate().indexOf("T")));
+        patentCell.setPubilcDate(patent.getPubDate());
         //装载授权公告号(未找到)
         //装载授权公告日(未找到)
         //装载主分类号
         List<String> ipCs = patent.getIpCs();
         List<String> cpCs = patent.getCpCs();
         ipCs.addAll(cpCs);
-        patentCell.setMainIpc(ipCs.get(0));
+        if(ipCs!=null&&ipCs.size()>0) {
+            patentCell.setMainIpc(ipCs.get(0));
+        }
         //装载分类号
-        patentCell.setIpc(ipCs);
+        if(ipCs!=null&&ipCs.size()>0) {
+            patentCell.setIpc(ipCs);
+        }
         //装载申请人
         ArrayList<String> applicationPersons = new ArrayList<>();
         for (Application application : patent.getApplications()) {
@@ -953,7 +1044,7 @@ public class UploadFromWebService {
                     Priority priority = new Priority()
                             .setPriorityNo(number.getNumber().substring(2))
                             .setPriorityCountry(number.getNumber().substring(0, 2))
-                            .setPriorityDate(priorty.getDate().substring(0, priorty.getDate().indexOf("T")));
+                            .setPriorityDate(priorty.getDate());
                     priorities.add(priority);
                 }
             }
@@ -988,7 +1079,7 @@ public class UploadFromWebService {
      * @throws IOException
      * @throws InterruptedException
      */
-    public List<PatentCell> getPatentya(String patentVO) throws IOException, InterruptedException {
+    public List<PatentCell> getPatentya(String patentVO) throws  InterruptedException {
         //1.获得驱动
         System.setProperty("webdriver.chrome.driver", "D:\\driver\\chromedriver.exe");
         // 2.页面最大化

+ 2 - 3
src/main/java/com/example/demo/service/WebLoginConfigService.java

@@ -50,11 +50,10 @@ public class WebLoginConfigService extends ServiceImpl<WebLoginConfigMapper, Web
         this.saveOrUpdate(config);
     }
 
-    public WebLoginConfig getLoginConfig(Integer webId) {
-        PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
+    public WebLoginConfig getLoginConfig(Integer webId,Integer tenantId) {
         LambdaQueryWrapper<WebLoginConfig> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(WebLoginConfig::getWebId, webId)
-                .eq(WebLoginConfig::getTenantId, personnelVO.getTenantId());
+                .eq(WebLoginConfig::getTenantId,tenantId);
         List<WebLoginConfig> configs = this.list(wrapper);
         WebLoginConfig config = new WebLoginConfig();
         if (configs.size() > 0) {

+ 13 - 1
src/main/java/com/example/demo/service/WebUploadJob.java

@@ -77,8 +77,20 @@ public class WebUploadJob extends QuartzJobBean {
                 webQueryDTO.setProjectId(qrtzTask.getProjectId());
                 webQueryDTO.setTaskId(qrtzTaskDetail.getId());
                 try {
-                    uploadFromWebService.getPatentStar(webQueryDTO);
+                    //专利之星
+                    if (webQueryDTO.getWebConfigId() == 1 || webQueryDTO.getWebConfigId() == 4) {
+                       uploadFromWebService.getPatentStar(webQueryDTO);
+                        //欧专局
+                    } else if (webQueryDTO.getWebConfigId() == 2) {
+                         uploadFromWebService.getEPO(webQueryDTO);
+                    }
                 } catch (Exception e) {
+                    qrtzTaskDetail.setTaskDetailState(3);
+                    qrtzTaskDetail.setFailure("拉取节点失败");
+                    qrtzTaskDetail.setEndTime(new Date());
+                    qrtzTaskDetail.updateById();
+                    qrtzTask.setTaskState(3);
+                    qrtzTask.updateById();
                     e.printStackTrace();
                 }
             }

+ 1 - 1
src/main/resources/application-dev.yml

@@ -56,7 +56,7 @@ spring:
     #初始化表结构
     jdbc:
       initialize-schema: always
-PCSUrl: http://localhost:8879
+PCSUrl: http://localhost:8871
 PASUrl: http://localhost:8877
 OPSUrl: http://192.168.1.24:5001
 mybatis-plus:

+ 67 - 0
src/main/resources/application-prodNetIn.yml

@@ -0,0 +1,67 @@
+
+spring:
+  redis:
+    host: 172.27.247.174
+    port: 6379
+    database: 3
+    password: Xx0GWxdWQJxx6Swe
+    lettuce:
+      pool:
+        max-active: 20
+        max-idle: 20
+        min-idle: 0
+        max-wait: -1ms
+    timeout: 2000ms
+  datasource:
+    url: jdbc:mysql://172.27.247.174:3306/pas-prod?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    username: root
+    password: TU5x6IeBi7rl
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      stat-view-servlet:
+        login-username: admin
+        login-password: 123456
+      web-stat-filter:
+        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
+  quartz:
+    #相关属性配置
+    properties:
+      org:
+        quartz:
+          scheduler:
+            instanceName: DefaultQuartzScheduler
+            instanceId: AUTO
+          jobStore:
+            class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
+            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
+            tablePrefix: QRTZ_
+            isClustered: false
+            clusterCheckinInterval: 10000
+            useProperties: false
+          threadPool:
+            class: org.quartz.simpl.SimpleThreadPool
+            threadCount: 10
+            threadPriority: 5
+            threadsInheritContextClassLoaderOfInitializingThread: true
+          dataSource:
+            default:
+              URL: jdbc:mysql://172.27.247.174:3306/pas-prod?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+              user: root
+              password: TU5x6IeBi7rl
+              driver: com.mysql.jdbc.Driver
+
+    #数据库方式
+    job-store-type: jdbc
+    #初始化表结构
+    jdbc:
+      initialize-schema: never
+PCSUrl: http://localhost:8879
+PASUrl: http://localhost:8877
+OPSUrl: http://139.224.24.90:5001
+mybatis-plus:
+  mapper-locations: classpath:mapper/*.xml
+logging:
+  level:
+    com.example.demo: debug
+driverUrl: /opt/google/chrome/chromedriver

+ 67 - 0
src/main/resources/application-prodNetOut.yml

@@ -0,0 +1,67 @@
+
+spring:
+  redis:
+    host: 47.101.137.223
+    port: 6379
+    database: 3
+    password: Xx0GWxdWQJxx6Swe
+    lettuce:
+      pool:
+        max-active: 20
+        max-idle: 20
+        min-idle: 0
+        max-wait: -1ms
+    timeout: 2000ms
+  datasource:
+    url: jdbc:mysql://47.101.137.223:3306/pas-prod?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    username: root
+    password: TU5x6IeBi7rl
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      stat-view-servlet:
+        login-username: admin
+        login-password: 123456
+      web-stat-filter:
+        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
+  quartz:
+    #相关属性配置
+    properties:
+      org:
+        quartz:
+          scheduler:
+            instanceName: DefaultQuartzScheduler
+            instanceId: AUTO
+          jobStore:
+            class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
+            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
+            tablePrefix: QRTZ_
+            isClustered: false
+            clusterCheckinInterval: 10000
+            useProperties: false
+          threadPool:
+            class: org.quartz.simpl.SimpleThreadPool
+            threadCount: 10
+            threadPriority: 5
+            threadsInheritContextClassLoaderOfInitializingThread: true
+          dataSource:
+            default:
+              URL: jdbc:mysql://47.101.137.223:3306/pas-prod?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+              user: root
+              password: TU5x6IeBi7rl
+              driver: com.mysql.jdbc.Driver
+
+    #数据库方式
+    job-store-type: jdbc
+    #初始化表结构
+    jdbc:
+      initialize-schema: never
+PCSUrl: http://localhost:8879
+PASUrl: http://localhost:8877
+OPSUrl: http://192.168.1.24:5001
+mybatis-plus:
+  mapper-locations: classpath:mapper/*.xml
+logging:
+  level:
+    com.example.demo: debug
+driverUrl: /opt/google/chrome/chromedriver

+ 2 - 2
src/main/resources/mapper/WebLoginConfigMapper.xml

@@ -7,8 +7,8 @@
         select web_name as webName,web_address as webAddress ,login_account as loginAccount ,login_password as
         loginPassword,b.id as id
         ,a.id as webId
-        from pas.web_config a
-        left join pas.web_login_config b
+        from web_config a
+        left join web_login_config b
         on a.id=b.web_id
         <where>
             b.tenant_id=#{params.tenantId}