浏览代码

接口导入专利框架搭建

lwhhszx 1 年之前
父节点
当前提交
12cdbbfb0a
共有 25 个文件被更改,包括 1834 次插入6 次删除
  1. 17 0
      src/main/java/cn/cslg/pas/common/dto/ConfigDTO.java
  2. 47 0
      src/main/java/cn/cslg/pas/common/dto/PatentStarDTO.java
  3. 59 0
      src/main/java/cn/cslg/pas/common/dto/PatentStarListDTO.java
  4. 31 0
      src/main/java/cn/cslg/pas/common/dto/RetrieveRecordDTO.java
  5. 12 0
      src/main/java/cn/cslg/pas/common/dto/RetrieveRecordDeDTO.java
  6. 21 0
      src/main/java/cn/cslg/pas/common/dto/RetrieveRecordQueryDTO.java
  7. 4 0
      src/main/java/cn/cslg/pas/common/utils/DateUtils.java
  8. 18 0
      src/main/java/cn/cslg/pas/common/utils/MathUtils.java
  9. 17 0
      src/main/java/cn/cslg/pas/common/vo/ConfigVO.java
  10. 4 1
      src/main/java/cn/cslg/pas/common/vo/ImportTaskAMVO.java
  11. 21 0
      src/main/java/cn/cslg/pas/common/vo/QueryConfigVO.java
  12. 145 0
      src/main/java/cn/cslg/pas/common/vo/StarPatentVO.java
  13. 43 0
      src/main/java/cn/cslg/pas/domain/WebLoginConfig.java
  14. 6 0
      src/main/java/cn/cslg/pas/domain/business/ImportTask.java
  15. 60 0
      src/main/java/cn/cslg/pas/domain/business/RetrieveRecord.java
  16. 16 0
      src/main/java/cn/cslg/pas/mapper/RetrieveRecordMapper.java
  17. 25 0
      src/main/java/cn/cslg/pas/mapper/WebLoginConfigMapper.java
  18. 83 0
      src/main/java/cn/cslg/pas/service/WebLoginConfigService.java
  19. 783 0
      src/main/java/cn/cslg/pas/service/common/PatentStarApiService.java
  20. 123 0
      src/main/java/cn/cslg/pas/service/common/RetrieveRecordService.java
  21. 266 3
      src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java
  22. 1 1
      src/main/java/cn/cslg/pas/service/importPatent/SchedulingTaskService.java
  23. 0 1
      src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java
  24. 23 0
      src/main/resources/mapper/WebLoginConfigMapper.xml
  25. 9 0
      src/test/java/cn/cslg/pas/service/CommonServiceTests.java

+ 17 - 0
src/main/java/cn/cslg/pas/common/dto/ConfigDTO.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+@Data
+public class ConfigDTO {
+
+    private String loginAccount;
+
+    private String loginPassword;
+
+    private Integer tenantId;
+
+    private Integer webId;
+
+
+}

+ 47 - 0
src/main/java/cn/cslg/pas/common/dto/PatentStarDTO.java

@@ -0,0 +1,47 @@
+package cn.cslg.pas.common.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 专利之星检索dto类
+ *
+ * @author 李仁杰
+ */
+
+@Accessors(chain = true)
+@Data
+public class PatentStarDTO {
+    /**
+     * 检索式
+     */
+    @JsonProperty(value = "CurrentQuery")
+    private String CurrentQuery;
+    /**
+     * 表示检索中文库或世界库(CN中文专利库 WD世界专利库)
+     */
+    @JsonProperty(value = "DBType")
+    private String DBType;
+    /**
+     * 当前页,最多 200 页
+     */
+    @JsonProperty(value = "PageNum")
+    private Integer PageNum;
+    /**
+     * 每页条数,最多 50 条
+     */
+    @JsonProperty(value = "RowCount")
+    private Integer RowCount;
+    /**
+     * 排序字段:“AD”,“PD”,“GD”, “ID”
+     */
+    @JsonProperty(value = "OrderBy")
+    private String OrderBy;
+    /**
+     * 排序方式:“ASC”,“DESC”
+     */
+    @JsonProperty(value = "OrderByType")
+    private String OrderByType;
+
+}

+ 59 - 0
src/main/java/cn/cslg/pas/common/dto/PatentStarListDTO.java

@@ -0,0 +1,59 @@
+package cn.cslg.pas.common.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.joda.time.DateTime;
+
+/**
+ * 专利之星检索dto类
+ *
+ * @author 李仁杰
+ */
+
+@Accessors(chain = true)
+@Data
+public class PatentStarListDTO {
+    private Integer retrieveRecordId;
+    /**
+     * 检索式
+     */
+    @JsonProperty(value = "CurrentQuery")
+    private String CurrentQuery;
+    /**
+     * 表示检索中文库或世界库(CN中文专利库 WD世界专利库)
+     */
+    @JsonProperty(value = "DBType")
+    private String DBType;
+    /**
+     * 当前页,最多 200 页
+     */
+    @JsonProperty(value = "PageNum")
+    private Integer PageNum;
+    /**
+     * 每页条数,最多 50 条
+     */
+    @JsonProperty(value = "RowCount")
+    private Integer RowCount;
+    /**
+     * 排序字段:“AD”,“PD”,“GD”, “ID”
+     */
+    @JsonProperty(value = "OrderBy")
+    private String OrderBy;
+    /**
+     * 排序方式:“ASC”,“DESC”
+     */
+    @JsonProperty(value = "OrderByType")
+    private String OrderByType;
+
+    private Integer total;
+
+    private DateTime startTime;
+
+    private DateTime endTime;
+
+    private String orginCondition;
+
+    private Boolean formed;
+
+}

+ 31 - 0
src/main/java/cn/cslg/pas/common/dto/RetrieveRecordDTO.java

@@ -0,0 +1,31 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class RetrieveRecordDTO {
+
+    private Integer id;
+    /**
+     * 检索式
+     */
+    private String conditions;
+    /**
+     * 数据库类型
+     */
+    private String dbType;
+
+    /**
+     * 检索时间
+     */
+    private Date retrieveTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    private Integer totalNum;
+}

+ 12 - 0
src/main/java/cn/cslg/pas/common/dto/RetrieveRecordDeDTO.java

@@ -0,0 +1,12 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class RetrieveRecordDeDTO {
+
+    private List<Integer> ids;
+    private Boolean isAll;
+}

+ 21 - 0
src/main/java/cn/cslg/pas/common/dto/RetrieveRecordQueryDTO.java

@@ -0,0 +1,21 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+@Data
+public class RetrieveRecordQueryDTO {
+    /**
+     * 每页条数
+     */
+    private Integer size;
+
+    /**
+     * 当前页数
+     */
+    private Integer current;
+
+    /**
+     * 数据总数
+     */
+    private Integer total;
+}

+ 4 - 0
src/main/java/cn/cslg/pas/common/utils/DateUtils.java

@@ -663,4 +663,8 @@ public class DateUtils {
         calendar.set(Calendar.SECOND, 0);
         return calendar.getTime();
     }
+
+
+
+
 }

+ 18 - 0
src/main/java/cn/cslg/pas/common/utils/MathUtils.java

@@ -13,5 +13,23 @@ public class MathUtils {
         value = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
         return value;
     }
+    public static String fun(int n,int num) {
+        // n 表示目标进制, num 要转换的值
+        String str= "";
+        int yushu ;      // 保存余数
+        int shang = num;      // 保存商
+        while (shang>0) {
+            yushu = shang %n;
+            shang = shang/n;
 
+            // 10-15 -> a-f
+            if(yushu>9) {
+                str =(char)('a'+(yushu-10)) + str;
+            }else {
+                str = yushu+str;
+            }
+        }
+
+        return str;
+    }
 }

+ 17 - 0
src/main/java/cn/cslg/pas/common/vo/ConfigVO.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.common.vo;
+
+import lombok.Data;
+
+@Data
+public class ConfigVO {
+
+    private String loginAccount;
+
+    private String loginPassword;
+
+    private String webAddress;
+
+    private String webName;
+    private Integer id;
+    private Integer webId;
+}

+ 4 - 1
src/main/java/cn/cslg/pas/common/vo/ImportTaskAMVO.java

@@ -69,5 +69,8 @@ public class ImportTaskAMVO {
     private Integer importContent;
 
     private  Integer status;
-
+    private Integer endNum;
+    private String orderBy;
+    private  String orderByType;
+    private String DBType;
 }

+ 21 - 0
src/main/java/cn/cslg/pas/common/vo/QueryConfigVO.java

@@ -0,0 +1,21 @@
+package cn.cslg.pas.common.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-3
+ * @description VO基类
+ */
+
+@Data
+@Accessors(chain = true)
+public class QueryConfigVO {
+    private Integer tenantId;
+    private Integer webId;
+    private String loginAccount;
+    private Long current;
+    private Long size;
+
+}

+ 145 - 0
src/main/java/cn/cslg/pas/common/vo/StarPatentVO.java

@@ -0,0 +1,145 @@
+package cn.cslg.pas.common.vo;
+
+import cn.cslg.pas.common.model.importTaskModel.PatentAgent;
+import cn.cslg.pas.common.model.importTaskModel.PatentApplicant;
+import cn.cslg.pas.common.model.importTaskModel.PatentInventor;
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Accessors(chain = true)
+@Data
+public class StarPatentVO implements Serializable {
+    /**
+     * 原始申请号
+     */
+    @JSONField(name = "ANO")
+    private String rowApplicationNo;
+    /**
+     * 专利类型(1和8为发明 2和9为新型 3为外观)
+     */
+    @JSONField(name = "PT")
+    private Integer patentType;
+    /**
+     * 专利类型
+     */
+    private String type;
+    /**
+     * 申请人地址
+     */
+    @JSONField(name = "DZ")
+    private String applicationAddress;
+    /**
+     * 主分类号
+     */
+    @JSONField(name = "MC")
+    private String mainIpc;
+    /**
+     * IPC分类号
+     */
+    @JSONField(name = "IC")
+    private String ipcListStr;
+    /**
+     * 公告日
+     */
+    @JSONField(name = "GD")
+    private String publicAccreditDate;
+    /**
+     * 摘要
+     */
+    @JSONField(name = "AB")
+    private String abstractStr;
+    /**
+     * 申请日
+     */
+    @JSONField(name = "AD")
+    private String applicationDate;
+    /**
+     * 发明人
+     */
+    @JSONField(name = "IN")
+    private String inventorStr;
+    /**
+     * 专利号
+     */
+    private String patentNo;
+    /**
+     * 公告号
+     */
+    @JSONField(name = "GN")
+    private String publicAccreditNo;
+    /**
+     * 代理机构
+     */
+    @JSONField(name = "AGN")
+    private String agencyStr;
+    /**
+     * 申请号
+     */
+    @JSONField(name = "AN")
+    private String applicationNo;
+    /**
+     * 申请人
+     */
+    @JSONField(name = "PA")
+    private String applicantStr;
+    /**
+     * 代理人
+     */
+    @JSONField(name = "AT")
+    private String agentStr;
+    /**
+     * 公开日
+     */
+    @JSONField(name = "PD")
+    private String publicDate;
+    /**
+     * 标题
+     */
+    @JSONField(name = "TI")
+    private String name;
+    /**
+     * 权利人
+     */
+    @JSONField(name = "PE")
+    private String currentApplicantStr;
+    /**
+     * 法律状态
+     */
+    @JSONField(name = "LG")
+    private Integer LG;
+    /**
+     * 公开号
+     */
+    @JSONField(name = "PN")
+    private String publicNo;
+    /**
+     * 受理局
+     */
+    @JSONField(name = "GJ")
+    private String bureau;
+    /**
+     * 优先权
+     */
+    @JSONField(name = "PR")
+    private String priorityNo;
+    /**
+     * 优先权日
+     */
+    @JSONField(name = "PRD")
+    private String priorityDate;
+
+    private List<PatentInventor> inventor;
+    private List<String> ipcList;
+    private List<PatentApplicant> applicant;
+//    private PatentAgency agency;
+    private List<PatentAgent> agent;
+    private String simpleStatus;
+    /**
+     * 摘要附图路径
+     */
+    private String abstractPath;
+}

+ 43 - 0
src/main/java/cn/cslg/pas/domain/WebLoginConfig.java

@@ -0,0 +1,43 @@
+package cn.cslg.pas.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 网站配置
+ * @TableName web_config
+ */
+@Data
+@TableName(value ="web_login_config")
+public class WebLoginConfig implements Serializable {
+    /**
+     * ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+    @TableField(value = "login_account")
+    private String loginAccount;
+
+    @TableField(value = "login_password")
+    private String loginPassword;
+
+    /**
+     * 账号
+     */
+    @TableField(value = "tenant_id")
+    private Integer tenantId;
+
+    @TableField(value = "web_Id")
+    private Integer webId;
+
+    @TableField(value = "web_config")
+    private String webConfig;
+    @TableField(value = "web_group")
+    private Integer webGroup;
+
+}

+ 6 - 0
src/main/java/cn/cslg/pas/domain/business/ImportTask.java

@@ -80,4 +80,10 @@ public class ImportTask extends BaseEntity<ImportTask> {
      */
     @TableField(value = "create_time")
     private Date createTime;
+    /**
+     * 完成数量
+     */
+    @TableField(value = "end_num")
+    private Integer endNum;
+
 }

+ 60 - 0
src/main/java/cn/cslg/pas/domain/business/RetrieveRecord.java

@@ -0,0 +1,60 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 检索记录实体类
+ * @author 李仁杰
+ * 2023/7/8
+ */
+@Data
+@TableName(value ="retrieve_record")
+public class RetrieveRecord extends BaseEntity<RetrieveRecord> {
+
+    /**
+     * 检索式
+     */
+    @TableField(value = "conditions")
+    private String conditions;
+    @TableField(value = "db_type")
+    private String dbType;
+    /**
+     * 租户
+     */
+    @TableField(value = "tenant_id")
+    private Integer tenantId;
+    /**
+     * 总条数
+     */
+    @TableField(value = "total_num")
+    private Integer totalNum;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    /**
+     * 创建人id
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+    /**
+     * 检索时间
+     */
+    @TableField(value = "retrieve_time")
+    private Date retrieveTime;
+
+    /**
+     * 更新时间
+     */
+    @TableField(value = "update_time")
+    private Date updateTime;
+}

+ 16 - 0
src/main/java/cn/cslg/pas/mapper/RetrieveRecordMapper.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.RetrieveRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 检索记录表 Mapper 接口
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-03-25
+ */
+public interface RetrieveRecordMapper extends BaseMapper<RetrieveRecord> {
+
+}

+ 25 - 0
src/main/java/cn/cslg/pas/mapper/WebLoginConfigMapper.java

@@ -0,0 +1,25 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.common.vo.ConfigVO;
+import cn.cslg.pas.common.vo.QueryConfigVO;
+import cn.cslg.pas.domain.WebLoginConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+* @author admin
+* @description 针对表【web_config(网站配置)】的数据库操作Mapper
+* @createDate 2023-03-08 18:51:17
+* @Entity cn.cslg.pas.domain.WebConfig
+*/
+@Mapper
+public interface WebLoginConfigMapper extends BaseMapper<WebLoginConfig> {
+    IPage<ConfigVO> getPageList(Page<ConfigVO> page, @Param("params") QueryConfigVO params);
+}
+
+
+
+

+ 83 - 0
src/main/java/cn/cslg/pas/service/WebLoginConfigService.java

@@ -0,0 +1,83 @@
+package cn.cslg.pas.service;
+import cn.cslg.pas.common.dto.ConfigDTO;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.utils.CacheUtils;
+
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.vo.ConfigVO;
+import cn.cslg.pas.common.vo.QueryConfigVO;
+import cn.cslg.pas.domain.WebLoginConfig;
+import cn.cslg.pas.mapper.WebLoginConfigMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author admin
+ * @description 针对表【web_config(网站配置)】的数据库操作Service实现
+ * @createDate 2023-03-08 18:51:17
+ */
+@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class WebLoginConfigService extends ServiceImpl<WebLoginConfigMapper, WebLoginConfig> {
+    private final CacheUtils cacheUtils;
+    private final LoginUtils loginUtils;
+
+    //添加配置
+    public void addLoginConfig(ConfigDTO configDTO) {
+        PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
+        LambdaQueryWrapper<WebLoginConfig> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(WebLoginConfig::getWebId, configDTO.getWebId())
+                .eq(WebLoginConfig::getTenantId, personnelVO.getTenantId());
+        List<WebLoginConfig> configs = this.list(wrapper);
+        WebLoginConfig config = new WebLoginConfig();
+        if (configs.size() > 0) {
+            config = configs.get(0);
+        }
+        config.setWebId(configDTO.getWebId());
+        config.setTenantId(personnelVO.getTenantId());
+        config.setLoginAccount(configDTO.getLoginAccount());
+        config.setLoginPassword(configDTO.getLoginPassword());
+        this.saveOrUpdate(config);
+    }
+
+    public WebLoginConfig getLoginConfig(Integer webId, Integer tenantId) {
+        List<WebLoginConfig> configs = this.list(new LambdaQueryWrapper<WebLoginConfig>().eq(WebLoginConfig::getWebId, webId).eq(WebLoginConfig::getTenantId, tenantId));
+        WebLoginConfig config;
+        if (configs.size() > 0) {
+            config = configs.get(0);
+        } else {
+            config = null;
+        }
+        return config;
+    }
+
+    public IPage<ConfigVO> queryLoginConfig(QueryConfigVO queryConfigVO) {
+        PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
+        queryConfigVO.setTenantId(personnelVO.getTenantId());
+        IPage<ConfigVO> dataPage = baseMapper.getPageList(new Page<>(queryConfigVO.getCurrent(), queryConfigVO.getSize()), queryConfigVO);
+        return dataPage;
+    }
+
+    public Boolean deleteConfig(List<Integer> ids) {
+        return this.removeByIds(ids);
+    }
+
+    public WebLoginConfig getConfig(Integer webId,Integer webGroup) {
+        List<WebLoginConfig> configs = this.list(new LambdaQueryWrapper<WebLoginConfig>().eq(WebLoginConfig::getWebId, webId).eq(WebLoginConfig::getWebGroup,webGroup));
+        WebLoginConfig config;
+        if (configs.size() > 0) {
+            config = configs.get(0);
+        } else {
+            config = null;
+        }
+        return config;
+    }
+
+}

+ 783 - 0
src/main/java/cn/cslg/pas/service/common/PatentStarApiService.java

@@ -0,0 +1,783 @@
+package cn.cslg.pas.service.common;
+
+import cn.cslg.pas.common.config.XDns;
+
+import cn.cslg.pas.common.dto.PatentStarDTO;
+import cn.cslg.pas.common.dto.PatentStarListDTO;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.importTaskModel.PatentApplicant;
+import cn.cslg.pas.common.utils.*;
+import cn.cslg.pas.common.vo.StarPatentVO;
+import cn.cslg.pas.domain.WebLoginConfig;
+import cn.cslg.pas.domain.business.RetrieveRecord;
+import cn.cslg.pas.service.WebLoginConfigService;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.FormBody;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+import org.joda.time.DateTime;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 调用外部接口的Service类 PCS:权限系统
+ *
+ * @Author chenyu
+ * @Date 2023/4/25
+ */
+@RequiredArgsConstructor
+@Slf4j
+@Service
+
+public class PatentStarApiService {
+    private final RetrieveRecordService retrieveRecordService;
+    private final CacheUtils cacheUtils;
+    private final LoginUtils loginUtils;
+    private final WebLoginConfigService webLoginConfigService;
+//
+//    //装载专利信息
+//    public void loadStarPatentVOS(List<StarPatentVO> starPatentVOS, JSONObject Data) {
+//        String aa = Data.toString();
+//        starPatentVOS.forEach(item -> {
+//            //专利类型
+//            Integer patentType = item.getPatentType();
+//            if (patentType != null) {
+//                if (patentType.equals(2) || patentType.equals(9)) {
+//                    item.setType("实用新型");
+//                } else if (patentType.equals(1) || patentType.equals(8)) {
+//                    item.setType("发明");
+//                } else if (patentType.equals(3)) {
+//                    item.setType("外观设计");
+//                }
+//            }
+//
+//            //如果有公开号,则将公开号作为专利号
+//            if (item.getApplicationNo() != null && !item.getApplicationNo().equals("") && item.getApplicationNo().contains("CN")) {
+//                item.setPatentNo(item.getApplicationNo());
+//            } else if (item.getPublicNo() != null && !item.getPublicNo().equals("")) {
+//                item.setPatentNo(item.getPublicNo());
+//                //如果没有公开号,但是有公告号,则将公告号作为公开号和专利号
+//            }
+//            if (item.getPublicAccreditNo() != null && !item.getPublicAccreditNo().equals("")) {
+//                if (item.getPublicNo() == null || item.getPublicNo().equals("")) {
+//                    item.setPublicNo(item.getPublicAccreditNo());
+//                }
+//                if (item.getPatentNo() == null) {
+//                    item.setPatentNo(item.getPublicAccreditNo());
+//                }
+//            } else {
+//                System.out.println("");
+//
+//            }
+//
+//            //如果没有公开日就将公告日作为公开日
+//            if (item.getPublicDate() == null || item.getPublicDate().equals("")) {
+//                item.setPublicDate(item.getPublicAccreditDate());
+//            }
+//            item.setApplicant(new ArrayList<>());
+//            item.setAgent(new ArrayList<>());
+//            item.setIpcList(Arrays.asList(item.getIpcListStr().split(";")));
+//            if (item.getApplicationAddress() == null) {
+//                item.setApplicationAddress("");
+//            }
+//
+//            List<String> applicationAddress = Arrays.asList(item.getApplicationAddress().split(";"));
+//            List<String> applicants = Arrays.asList(item.getApplicantStr().split(";"));
+//            //装载申请人
+//            for (int i = 0; i < applicants.size(); i++) {
+//                PatentApplicant patentApplicant = new PatentApplicant();
+//                patentApplicant.setType(2);
+//                patentApplicant.setDataType(2);
+//                patentApplicant.setName(applicants.get(i));
+//                if (applicationAddress.size() > i) {
+//                    patentApplicant.setAddressStr(applicationAddress.get(i));
+//                }
+//                item.getApplicant().add(patentApplicant);
+//            }
+//
+//            //装载权利人
+//            if (item.getCurrentApplicantStr() != null && !item.getCurrentApplicantStr().equals("")) {
+//                List<String> cApplicants = Arrays.asList(item.getCurrentApplicantStr().split(";"));
+//                cApplicants.forEach(
+//                        tem -> {
+//                            PatentApplicant patentApplicant = new PatentApplicant();
+//                            patentApplicant.setType(2);
+//                            patentApplicant.setDataType(1);
+//                            patentApplicant.setName(tem);
+//                            item.getApplicant().add(patentApplicant);
+//                        }
+//                );
+//            }
+//
+//            //优先权
+//            if (item.getPriorityNo() != null && !item.getPriorityNo().equals("")) {
+//
+//            }
+//
+//            //代理机构
+//            if (item.getAgencyStr() != null && !item.getAgencyStr().equals("")) {
+//                PatentAgency patentAgency = new PatentAgency();
+//                patentAgency.setName(item.getAgencyStr().split(" ")[0]);
+//                item.setAgency(patentAgency);
+//            }
+//
+//            //发明人
+//            if (item.getInventorStr() != null && !item.getInventorStr().equals("")) {
+//                item.setInventor(new ArrayList<>());
+//                List<String> inventors = Arrays.asList(item.getInventorStr().split(";"));
+//                inventors.forEach(
+//                        tem -> {
+//                            PatentInventor patentInventor = new PatentInventor();
+//                            patentInventor.setName(tem);
+//                            item.getInventor().add(patentInventor);
+//                            ;
+//                        }
+//                );
+//            }
+//
+//            //代理人
+//            if (item.getAgentStr() != null && !item.getAgentStr().equals("")) {
+//                List<String> agent = Arrays.asList(item.getAgentStr().split(";"));
+//                agent.forEach(
+//                        tem -> {
+//                            PatentAgent patentAgent = new PatentAgent();
+//                            patentAgent.setName(tem);
+//                            item.getAgent().add(patentAgent);
+//                        }
+//                );
+//            }
+//            //TODO 此处不调用取附图接口,(遍历调接口效率太低)  提出者:罗总
+//            //附图
+////            if (item.getApplicationNo() != null && item.getApplicationNo() != "") {
+////                String apN = item.getApplicationNo().replace(".", "");
+////
+////                //String path = this.getPictureApi(apN.substring(2));
+////                //item.setAbstractPath(path);
+////            }
+//            if (item.getLG() != null) {
+//                switch (item.getLG()) {
+//                    case 1:
+//                        item.setSimpleStatus("有效");
+//                        break;
+//                    case 2:
+//                        item.setSimpleStatus("失效");
+//                        break;
+//                    case 3:
+//                        item.setSimpleStatus("审中");
+//                        break;
+//                }
+//            }
+//            //法律状态
+//        });
+//    }
+
+    public Map<String, Object> patentStarSearchLocal(PatentStarListDTO PatentStarListDTO) throws IOException {
+        RetrieveRecord retrieveRecord = new RetrieveRecord();
+        retrieveRecord.setConditions(PatentStarListDTO.getCurrentQuery());
+        if (PatentStarListDTO.getRetrieveRecordId() != null) {
+            //retrieveRecord = retrieveRecordService.getById(PatentStarListDTO.getRetrieveRecordId());
+            //PatentStarListDTO.setCurrentQuery(retrieveRecord.getConditions());
+            //PatentStarListDTO.setDBType(retrieveRecord.getDbType());
+        }
+        Map<String, Object> map = this.patentStarSearchApi(PatentStarListDTO);
+        if (map == null) {
+            ThrowException.throwXiaoShiException("检索失败,请检查检索式");
+        }
+        //记录检索历史
+        retrieveRecord.setRetrieveTime(new Date());
+        retrieveRecord.setTotalNum(Integer.parseInt(map.get("total").toString()));
+        retrieveRecord.setDbType(PatentStarListDTO.getDBType());
+        if (PatentStarListDTO.getRetrieveRecordId() == null) {
+            //获取创建人信息
+            PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            retrieveRecord.setCreateTime(new Date());
+            retrieveRecord.setCreateId(personnelVO.getId());
+            retrieveRecord.setTenantId(personnelVO.getTenantId());
+            retrieveRecord.insert();
+        }
+//        else {
+//            retrieveRecord.updateById();
+//        }
+        map.put("retrieveRecordId", retrieveRecord.getId());
+        return map;
+
+    }
+
+
+    public Map<String, Object> patentStarSearchApi(PatentStarListDTO PatentStarListDTO) throws IOException {
+        try {
+            if (PatentStarListDTO.getFormed() == null || PatentStarListDTO.getFormed() == false) {
+                String formQuery = PatentStarListDTO.getCurrentQuery();
+//                PatentStarListDTO.setCurrentQuery(PatentStarApiService.formatQuery(formQuery));
+                if (PatentStarListDTO.getDBType().equals("WD")) {
+                    StringBuilder stringBuilder = new StringBuilder(PatentStarListDTO.getCurrentQuery());
+                    stringBuilder.insert(PatentStarListDTO.getCurrentQuery().length() - 1, "-CN/GJ");
+                    PatentStarListDTO.setCurrentQuery(stringBuilder.toString());
+
+                }
+            }
+        } catch (Exception e) {
+            return null;
+        }
+        JSONObject configObject = this.getConfigObject(4, 1);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
+        PatentStarDTO patentStarDto = new PatentStarDTO();
+        BeanUtils.copyProperties(PatentStarListDTO, patentStarDto);
+        String json = JSONObject.toJSONString(patentStarDto);
+        String url = "http://s.patentstar.com.cn/SearchAPI/PatentSearch/ResultGet";
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appKey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
+                .build();
+        // 创建一个RequestBody(参数1:数据类型 参数2传递的json串)
+        FormBody.Builder builder = new FormBody.Builder();
+        builder.add("AppID", appId);
+        builder.add("Stamp", currentTimeMillis.toString());
+        builder.add("Sign", signMd5);
+        builder.add("QueryJson", json);
+        FormBody requestBody = builder.build();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url).post(requestBody).build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                JSONObject jsonObject = JSONObject.parseObject(Objects.requireNonNull(response.body()).string());
+                if (jsonObject.get("Ret").equals(500) || jsonObject.get("Data") == null) {
+                    return null;
+                }
+                JSONObject Data = (JSONObject) jsonObject.get("Data");
+                List<StarPatentVO> starPatentVOS = JSONArray.parseArray(Data.get("List").toString(), StarPatentVO.class);
+//                this.loadStarPatentVOS(starPatentVOS, Data);
+                // 打印服务端返回结果
+                //  return Objects.requireNonNull(response.body()).string();
+                Map<String, Object> reMap = new HashMap<>();
+                reMap.put("size", PatentStarListDTO.getRowCount());
+                reMap.put("current", PatentStarListDTO.getPageNum());
+                reMap.put("records", starPatentVOS);
+                reMap.put("total", Data.get("HitCount"));
+                return reMap;
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+        return null;
+    }
+
+    public List<PatentStarListDTO> getSplitedConditions(PatentStarListDTO patentStarListDTO, int patentNum) throws IOException {
+        DateTime nowDate = new DateTime();
+        DateTime date = DateUtils2.formStrToDateTime("1900-01-01");
+        //超过1万的列表
+        List<PatentStarListDTO> PatentStarListDTOs = new ArrayList<>();
+        //返回的列表
+        List<PatentStarListDTO> reDtos = new ArrayList<>();
+        patentStarListDTO.setStartTime(date);
+        patentStarListDTO.setEndTime(nowDate);
+        String formQuery = patentStarListDTO.getCurrentQuery();
+//        patentStarListDTO.setOrginCondition(PatentStarApiService.formatQuery(formQuery));
+        PatentStarListDTOs.add(patentStarListDTO);
+        while (PatentStarListDTOs.size() > 0) {
+            PatentStarListDTO dto = PatentStarListDTOs.get(0);
+            PatentStarListDTOs.remove(dto);
+            Map<String, Object> map1 = this.patentStarSearchApi(dto);
+            Integer total1 = Integer.parseInt(map1.get("total").toString());
+            dto.setTotal(total1);
+            patentStarListDTO.setFormed(true);
+            if (total1 > patentNum) {
+                DateTime startTime1 = dto.getStartTime();
+                DateTime endTime1 = dto.getEndTime();
+                List<DateTime> dateTimes = DateUtils2.formStrToDateTime(startTime1, endTime1);
+                PatentStarListDTO dto1 = new PatentStarListDTO();
+                BeanUtils.copyProperties(dto, dto1);
+                dto1.setStartTime(dateTimes.get(0));
+                dto1.setEndTime(dateTimes.get(1));
+                this.setConditions(dto1);
+                PatentStarListDTO dto2 = new PatentStarListDTO();
+                BeanUtils.copyProperties(dto, dto2);
+                dto2.setStartTime(dateTimes.get(2));
+                dto2.setEndTime(dateTimes.get(3));
+                this.setConditions(dto2);
+                PatentStarListDTOs.add(dto1);
+                PatentStarListDTOs.add(dto2);
+            } else if (total1 != 0) {
+                reDtos.add(dto);
+            }
+
+        }
+
+        return reDtos;
+    }
+
+    public void setConditions(PatentStarListDTO PatentStarListDTO) {
+        DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd");
+        String startStr = formatter.print(PatentStarListDTO.getStartTime());
+        String endStr = formatter.print(PatentStarListDTO.getEndTime());
+        String cond = "*(" + startStr + ">" + endStr + "/" + "AD)";
+        Integer len = PatentStarListDTO.getOrginCondition().length();
+        StringBuilder stringBuilder = new StringBuilder(PatentStarListDTO.getOrginCondition());
+        stringBuilder.insert(len - 1, cond);
+        PatentStarListDTO.setCurrentQuery(stringBuilder.toString());
+    }
+
+    /**
+     * @param appNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取中国专利著录
+     */
+    public String getCnBibApi(String appNo) {
+        String url = "https://api.patentstar.com.cn/api/Patent/CnBibo/" + appNo;
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appKey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
+                .build();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", appId)
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+
+    }
+
+
+    /**
+     * @param
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取中国专利摘要附图
+     */
+    public String getPictureApi(String appNo) {
+        String url = "https://api.patentstar.com.cn/api/Patent/CnMainImage/" + appNo;
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appKey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
+                .build();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", appId)
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+        return "{}";
+    }
+
+    /**
+     * @param appNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取中国专利外观图
+     */
+    public String getWGPictureApi(String appNo) throws IOException {
+
+        String url = "https://api.patentstar.com.cn/api/Patent/CnWGImage/" + appNo;
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appKey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
+                .build();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", appId)
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param appNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取中国专利法律状态
+     */
+    public String getCnLegalApi(String appNo) {
+        String url = "https://api.patentstar.com.cn/api/Patent/CnLegal/" + appNo;
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appKey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
+                .build();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", appId)
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param appNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取中国专利全文图片
+     */
+    public String getCnPdfApi(String appNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/CnPdf/" + appNo;
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appKey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
+                .build();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", appId)
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param appNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取中国专利全文文本
+     */
+
+    public String getCnFullXmlApi(String appNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/CnFullXml/" + appNo;
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appKey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
+                .build();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", appId)
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param patentNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取世界专利pdf
+     */
+    public String getEnPdfApi(String patentNo) {
+        String url = "  https://api.patentstar.com.cn/api/Patent/EnPdf/" + patentNo;
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
+//        String appId = "1000046";
+//        String appkey = "6AE6D4DC6AF94F26862501EDEE9E27A2";
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appKey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
+                .build();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", appId)
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param patentNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取世界专利著录信息
+     */
+    public String getENBibApi(String patentNo) {
+        String url = "https://api.patentstar.com.cn/api/Patent/EnBib/" + patentNo;
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appKey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
+                .build();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", appId)
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param patentNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 从专利之星获取同族专利
+     */
+    public String getFamilyByPubNoApi(String patentNo) {
+        String url = "https://api.patentstar.com.cn/api/Patent/FamilyByPubNo/" + patentNo;
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appKey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
+                .build();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", appId)
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+    /**
+     * @param patentNo
+     * @return
+     * @throws IOException
+     * @author 李仁杰
+     * 获得专利被引用次数api
+     */
+    public String getCitedNumByPubNoApi(String patentNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/CitedNumByPubNo/" + patentNo;
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
+        String Sign = appId + appKey + currentTimeMillis.toString();
+        String signMd5 = FormatUtil.MD5(Sign);
+        // 创建一个OkHttpClient对象
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
+                .build();
+        // 创建一个请求对象
+        Request request = new Request.Builder().url(url)
+                .addHeader("_appid", appId)
+                .addHeader("_timestamp", currentTimeMillis.toString())
+                .addHeader("_sign", signMd5)
+                .get().build();
+        // 发送请求获取响应
+        try {
+            Response response = okHttpClient.newCall(request).execute();
+            // 判断请求是否成功
+            if (response.isSuccessful()) {
+                // 打印服务端返回结果
+                return Objects.requireNonNull(response.body()).string();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "{}";
+    }
+
+
+    public JSONObject getConfigObject(Integer webId, Integer webGroup) {
+
+        WebLoginConfig webLoginConfig = webLoginConfigService.getConfig(webId, webGroup);
+        if (webLoginConfig == null) {
+            return null;
+        }
+        String config = webLoginConfig.getWebConfig();
+        JSONObject jsonObject = JSONObject.parseObject(config);
+        return jsonObject;
+    }
+
+}

+ 123 - 0
src/main/java/cn/cslg/pas/service/common/RetrieveRecordService.java

@@ -0,0 +1,123 @@
+package cn.cslg.pas.service.common;
+
+
+import cn.cslg.pas.common.dto.RetrieveRecordDTO;
+import cn.cslg.pas.common.dto.RetrieveRecordDeDTO;
+import cn.cslg.pas.common.dto.RetrieveRecordQueryDTO;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.domain.business.RetrieveRecord;
+import cn.cslg.pas.mapper.RetrieveRecordMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 检索记录表
+ * </p>
+ *
+ * @author 谢翔
+ * @since 2022-07-9
+ */
+@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class RetrieveRecordService extends ServiceImpl<RetrieveRecordMapper, RetrieveRecord> {
+    private final CacheUtils cacheUtils;
+    private final LoginUtils loginUtils;
+
+    /**
+     * 新增检索记录
+     * @param retrieveRecordDTO
+     */
+    public Response addRetrieveRecord(RetrieveRecordDTO retrieveRecordDTO){
+        //判空
+        if(retrieveRecordDTO != null){
+            //新建实体类
+            RetrieveRecord retrieveRecord = new RetrieveRecord();
+            //复制
+            BeanUtils.copyProperties(retrieveRecordDTO, retrieveRecord);
+            //获取创建人信息
+            PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            retrieveRecord.setCreateId(personnelVO.getId());
+            retrieveRecord.setDbType(retrieveRecordDTO.getDbType());
+            retrieveRecord.setConditions(retrieveRecordDTO.getConditions());
+            retrieveRecord.setTotalNum(retrieveRecordDTO.getTotalNum());
+            retrieveRecord.setTenantId(personnelVO.getTenantId());
+            //数据入表
+            retrieveRecord.insert();
+            return Response.success("新增成功");
+        } else {
+            return Response.error("传入参数不能为空");
+        }
+    }
+
+    /**
+     * 更新检索记录表
+     * @param retrieveRecordDTO
+     * @return
+     */
+    public Response updateRetrieveRecord(RetrieveRecordDTO retrieveRecordDTO){
+        //判空
+        if(retrieveRecordDTO != null){
+            Integer id = retrieveRecordDTO.getId();
+            //根据传入对象的id查询出实体类
+            RetrieveRecord retrieveRecord = this.getById(id);
+            retrieveRecord.setDbType(retrieveRecordDTO.getDbType());
+            retrieveRecord.setConditions(retrieveRecordDTO.getConditions());
+            retrieveRecord.setUpdateTime(new Date());
+            retrieveRecord.updateById();
+            return Response.success("更新成功");
+        } else {
+            return Response.error("更新失败");
+        }
+    }
+
+    /**
+     * 删除检索历史
+     * @return
+     */
+    public Response deleteRetrieveRecord(RetrieveRecordDeDTO retrieveRecordDeDTO){
+       List<Integer> ids = retrieveRecordDeDTO.getIds();
+       Boolean isAll =retrieveRecordDeDTO.getIsAll();
+       if(isAll!=null&& isAll){
+           this.remove(new LambdaQueryWrapper<RetrieveRecord>());
+       }
+       else {
+           //判空
+           if (ids != null && ids.size() > 0) {
+               this.removeByIds(ids);
+               return Response.success("删除成功");
+           } else {
+               return Response.error("删除错误");
+           }
+       }
+        return Response.success("删除成功");
+    }
+
+    /**
+     * 查询检索历史
+     * @return
+     */
+    public IPage<RetrieveRecord> queryRetrieveRecord(RetrieveRecordQueryDTO retrieveRecordQueryDTO){
+        //获取当前登陆人信息
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        String createId = personnelVO.getId();
+        LambdaQueryWrapper<RetrieveRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(RetrieveRecord::getCreateId, createId)
+        .orderByDesc(RetrieveRecord::getUpdateTime);
+        IPage<RetrieveRecord> retrieveRecords = this.page(new Page<>(retrieveRecordQueryDTO.getCurrent(),retrieveRecordQueryDTO.getSize()),queryWrapper);
+        List<RetrieveRecord> retrieveRecordList =retrieveRecords.getRecords();
+        return retrieveRecords;
+    }
+}

+ 266 - 3
src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java

@@ -1,22 +1,285 @@
 package cn.cslg.pas.service.importPatent;
 
+import cn.cslg.pas.common.utils.MathUtils;
+import cn.cslg.pas.common.utils.ThrowException;
+import cn.cslg.pas.common.vo.ImportTaskAMVO;
+import cn.cslg.pas.common.vo.StarPatentVO;
+import cn.cslg.pas.common.vo.UploadParamsVO;
+import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.factorys.PatentImportFactory.PatentImportImp;
+import cn.cslg.pas.service.common.PatentStarApiService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Service;
 
+
 @Scope("prototype")
 @Service
 public class ImportFromWebToEsService implements PatentImportImp {
-private TaskThread taskThread;
+    private TaskThread taskThread;
+    private PatentStarApiService patentStarApiService;
+
     @Override
     public void startPatentThread() {
-        SavePatentToEsThread savePatentToEsThread = new SavePatentToEsThread(taskThread,taskThread.getApplicationContext());
-        GetPatentFromExcelThread getPatentFromExcelThread = new GetPatentFromExcelThread(taskThread.getImportTaskAMVO(), savePatentToEsThread,taskThread.getApplicationContext());
+        ImportTaskAMVO importTaskAMVO = new ImportTaskAMVO();
+        //若本次下载任务是超过一万条专利的全部下载任务
+        int patentNum = 10000;
+        if (importTaskAMVO.getEndNum() <= patentNum) {
+//            excuteLessThan10000(task);
+        } else {
+            //                Integer total = importTaskAMVO.getAllNum();  //任务专利总数量
+//                Integer successNum = importTaskAMVO.getSuccessNum();
+//                String orderBy = importTaskAMVO.getOrderBy();  //排序字段
+//                String orderByType = importTaskAMVO.getOrderByType();  //排序类型
+//                String dbType = importTaskAMVO.getDBType();  //检索数据库类型
+//                List<String> cells = importTaskAMVO.getConfigCells();  //下载字段
+//                Integer startNumber = importTaskAMVO.getStartNumber();  //下载起始条数位置
+//                List<String> isDeletePatentNos = task.getIsDeletePatentNos();  //起止条数中不需要下载的专利号
+//
+//                //如果完成数量大于0,则当前下载任务为暂停后的继续下载,则开始位置更新
+//                if (successNum > 0) {
+//                    startNumber += successNum;
+//                }
+//
+//                //获得返回的的多个检索式 patentStarListDtos
+//                List<PatentStarListDto> patentStarListDtos = patentStarApiService.getSplitedConditions(new PatentStarListDto()
+//                        .setCurrentQuery(task.getConditions())
+//                        .setOrderBy(orderBy)
+//                        .setOrderByType(orderByType)
+//                        .setDBType(dbType), patentNum);
+//
+//                int produceSuccessNum = 0;
+//                int countForStart = 0;  //定义变量countForStart,记录检索式的专利总数量(目的是找出下载开始位置专利所属的那个检索式)
+//                //第1层:遍历多个检索式
+//                for (PatentStarListDto patentStarListDto : patentStarListDtos) {
+//                    //还没有到开始位置,则跳过,继续判断下一个检索式
+//                    countForStart += patentStarListDto.getTotal();
+//                    if (countForStart < startNumber) {
+//                        continue;
+//                    }
+//
+//
+//                    //至此,即找到了当前检索式即为要下载的专利开始位置所属的检索式,重新计算开始位置startNumber(即要下载的专利的开始位置,对应了当前检索式中该专利位置)
+//                    startNumber = startNumber - (countForStart - patentStarListDto.getTotal());
+//                    //第一个检索式下载完成后,从第二个检索式开始 startNumber都是从1开始下载
+//                    if (startNumber < 0) {
+//                        startNumber = 1;
+//                    }
+//                    //调用方法,入参为开始位置和结束位置(即当前检索式最后一个专利的位置,即当前检索式的专利总数量total),获得开始页数、结束页数、开始页数的开始位置、结束页数的结束位置
+//                    Calculate calculate = calculateFromStartAndEndNumber(startNumber, patentStarListDto.getTotal());
+//                    Integer startPage = calculate.getStartPage();
+//                    Integer startNum = calculate.getStartNum();
+//                    Integer endPage = calculate.getEndPage();
+//
+//                    //第2层:遍历检索页数
+//                    for (Integer i = startPage; i <= endPage; i++) {
+//                        //调用一般检索接口,返回一批专利著录相关数据
+//                        patentStarListDto
+//                                .setPageNum(i)
+//                                .setRowCount(50)
+//                                .setFormed(true);
+//                        Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
+//                        if (resultMap == null || (Integer) resultMap.get("total") == 0) {
+//                            ThrowException.throwXiaoShiException("未检索到相关专利");
+//                        }
+//
+//                        List<StarPatentVO> starPatents = (List<StarPatentVO>) resultMap.get("records");
+//                        //第3层:遍历专利
+//                        for (int j = 0; j < starPatents.size(); j++) {
+//                            //若任务状态为已暂停,则结束本次任务的下载
+//                            if (pTaskId.equals(task.getId()) && pTaskStatus == 4) {
+//                                return;
+//                            }
+//                            //若生产的数量达到了总数,则结束本次任务的下载
+//                            if (produceSuccessNum == total) {
+//                                return;
+//                            }
+//                            //如果还没到要下载的专利的开始位置,则跳过,继续判断下一个专利
+//                            if (i.equals(startPage) && j < startNum - 1) {
+//                                continue;
+//                            }
+//                            //如果当前遍历到的专利号是需要删除的专利,则跳过,不下载它
+//                            if (isDeletePatentNos != null && isDeletePatentNos.size() > 0 && isDeletePatentNos.contains(starPatents.get(j).getApplicationNo())) {
+//                                continue;
+//                            }
+//
+//                            //将专利丢入各生产线程,进行生产和消费
+//                            UploadParamsVO uploadParamsVO = new UploadParamsVO();
+//                            uploadParamsVO.setPatent(new Patent());
+//                            uploadParamsVO.getPatent().setPatentNo(starPatents.get(j).getPatentNo());
+//                            uploadPatentBatchService.getOneOrInsertOne(uploadParamsVO);
+//
+//                            PQueueData pQueueData = new PQueueData()
+//                                    .setTask(task)
+//                                    .setStarPatent(starPatents.get(j))
+//                                    .setUploadParamsVO(uploadParamsVO);
+//
+//                            //专利丢入著录生产者队列,并唤醒著录生产者线程
+//                            if (cells.contains("1")) {
+//                                pantentQueueService.zhuluToPQueue(pQueueData);
+//                            }
+//                            //专利丢入权要生产者队列,并唤醒权要生产者线程
+//                            if (cells.contains("2")) {
+//                                pantentQueueService.rightToPQueue(pQueueData);
+//                            }
+//                            //专利丢入说明书文本生产者队列,并唤醒说明书文本生产者线程
+//                            if (cells.contains("3")) {
+//                                pantentQueueService.instructionTextToPQueue(pQueueData);
+//                            }
+//                            //专利丢入说明书pdf生产者队列,并唤醒说明书pdf生产者线程
+//                            if (cells.contains("4")) {
+//                                pantentQueueService.instructionPDFToPQueue(pQueueData);
+//                            }
+//                            //专利丢入摘要附图生产者队列,并唤醒摘要附图生产者线程
+//                            if (cells.contains("6")) {
+//                                pantentQueueService.imageToPQueue(pQueueData);
+//                            }
+//
+//                            produceSuccessNum++;  //计数,每生产完一个,生产完成数量++
+//
+//                        }
+//                    }
+//
+//                }
+
+        }
+        SavePatentToEsThread savePatentToEsThread = new SavePatentToEsThread(taskThread, taskThread.getApplicationContext());
+        GetPatentFromExcelThread getPatentFromExcelThread = new GetPatentFromExcelThread(taskThread.getImportTaskAMVO(), savePatentToEsThread, taskThread.getApplicationContext());
         savePatentToEsThread.start();
         getPatentFromExcelThread.start();
     }
+
+    private void excuteLessThan10000(ImportTaskAMVO importTaskAMVO) {
+        try {
+            Integer successNum = importTaskAMVO.getSuccessNum();  //成功条数(即上一次下载到的位置)
+            String conditions = importTaskAMVO.getCondition();  //检索式
+            String orderBy = importTaskAMVO.getOrderBy();  //排序字段
+            String orderByType = importTaskAMVO.getOrderByType();  //排序类型
+            String dbType = importTaskAMVO.getDBType();  //检索数据库类型
+            Integer importContent = importTaskAMVO.getImportContent();  //下载字段
+            //十进制转二进制
+            String imContents = MathUtils.fun(2, importContent);
+            //下载字段
+            char[] importCells = imContents.toCharArray();
+
+            //startToEndNum:起止条数中需要下载的专利总数量
+            int startToEndNum = 0;
+//            if (endNumber > 0) {
+//                startToEndNum = endNumber - startNumber + 1;
+//                if (isDeletePatentNos != null && isDeletePatentNos.size() > 0) {
+//                    startToEndNum = startToEndNum - isDeletePatentNos.size();
+//                }
+//            }
+//
+//            //如果完成数量大于0,则当前下载任务为暂停后的继续下载,则开始位置更新
+//            if (successNum > 0) {
+//                if (startNumber == null) {  //多个专利号导入任务没有startNumber这些值
+//                    startNumber = 0;
+//                }
+//                startNumber += successNum;
+//            }
+//
+//            //若有起止条数,并且完成条数在起止条数内(即起止条数中专利还没有下载完)
+//            if (endNumber > 0 && startNumber <= endNumber && successNum < startToEndNum) {
+//                Calculate calculate = calculateFromStartAndEndNumber(startNumber, endNumber);
+//                Integer startPage = calculate.getStartPage();
+//                Integer startNum = calculate.getStartNum();
+//                Integer endPage = calculate.getEndPage();
+//                Integer endNum = calculate.getEndNum();
+//
+//                //根据计算出的起止页数,一页一页检索
+//                for (int i = startPage; i <= endPage; i++) {
+//                    PatentStarListDto patentStarListDto = new PatentStarListDto()
+//                            .setCurrentQuery(conditions)
+//                            .setOrderBy(orderBy)
+//                            .setOrderByType(orderByType)
+//                            .setPageNum(i)
+//                            .setRowCount(50)
+//                            .setDBType(dbType);
+//                    //调用一般接口返回一批专利著录相关数据
+//                    Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
+//                    if (resultMap == null || (Integer) resultMap.get("total") == 0) {
+//                        ThrowException.throwXiaoShiException("未检索到相关专利");
+//                    }
+//
+//                    List<StarPatentVO> starPatents = (List<StarPatentVO>) resultMap.get("records");
+//                    //遍历这一页的专利
+//                    for (int j = 0; j < starPatents.size(); j++) {
+//                        //若任务状态为已暂停,则结束生产
+////                        if (pTaskId.equals(task.getId()) && pTaskStatus == 4) {
+////                            return;
+////                        }
+//                        //若还没到开始页的开始位置,则跳过,不下载它
+////                        if (i == startPage && j < startNum - 1) {
+////                            continue;
+////                        }
+////                        //若到了结束页的结束位置
+////                        if (i == endPage && j == endNum) {
+////                            break;
+////                        }
+//                        //若当前遍历到的专利号是需要删除的专利,则跳过,不下载它
+////                        if (isDeletePatentNos != null && isDeletePatentNos.size() > 0 && isDeletePatentNos.contains(starPatents.get(j).getApplicationNo())) {
+////                            continue;
+////                        }
+//
+//                        //将专利丢入各生产线程,进行生产和消费
+//                        UploadParamsVO uploadParamsVO = new UploadParamsVO();
+//                        uploadParamsVO.setPatent(new Patent());
+//                        uploadParamsVO.getPatent().setPatentNo(starPatents.get(j).getPatentNo());
+//
+//                        PQueueData pQueueData = new PQueueData()
+//                                .setTask(task)
+//                                .setStarPatent(starPatents.get(j))
+//                                .setUploadParamsVO(uploadParamsVO);
+//
+//                        //专利丢入著录生产者队列,并唤醒著录生产者线程
+//                        if (cells.contains("1")) {
+//                            pantentQueueService.zhuluToPQueue(pQueueData);
+//                        }
+//                        //专利丢入权要生产者队列,并唤醒权要生产者线程
+//                        if (cells.contains("2")) {
+//                            pantentQueueService.rightToPQueue(pQueueData);
+//                        }
+//                        //专利丢入说明书文本生产者队列,并唤醒说明书文本生产者线程
+//                        if (cells.contains("3")) {
+//                            pantentQueueService.instructionTextToPQueue(pQueueData);
+//                        }
+//                        //专利丢入说明书pdf生产者队列,并唤醒说明书pdf生产者线程
+//                        if (cells.contains("4")) {
+//                            pantentQueueService.instructionPDFToPQueue(pQueueData);
+//                        }
+//                        //专利丢入摘要附图生产者队列,并唤醒摘要附图生产者线程
+//                        if (cells.contains("6")) {
+//                            pantentQueueService.imageToPQueue(pQueueData);
+//                        }
+//
+//                    }
+//
+//                }
+//            }
+//
+//            //下载 isAdd中的专利
+//            if (isAddPatentNos != null && isAddPatentNos.size() > 0) {
+//                String patentNoCondition = StringUtils.join(isAddPatentNos, " OR ");
+//                conditions = "AN=(" + patentNoCondition + ")";
+//                downLoadIsAddPatentNos(isAddPatentNos, task, orderBy, orderByType, dbType, cells, conditions);
+//            }
+//
+        } catch (Exception e) {
+            e.printStackTrace();
+            //生产消费到一半时,发生错误异常,将任务状态置为完成
+//            task = taskService.getById(task.getId());
+//            task.setStatus(2);
+//            taskService.updateById(task);
+        }
+    }
+
     @Override
     public void setTaskThread(TaskThread taskThread) {
         this.taskThread = taskThread;
+        ApplicationContext applicationContext = taskThread.getApplicationContext();
+        this.patentStarApiService = applicationContext.getBean(PatentStarApiService.class);
     }
 }

+ 1 - 1
src/main/java/cn/cslg/pas/service/importPatent/SchedulingTaskService.java

@@ -74,7 +74,7 @@ public class SchedulingTaskService {
                 importTaskAMVO.setSourceId(importTaskCondition.getSourceId());
                 importTaskAMVO.setProjectId(importTaskCondition.getProjectId());
                 importTaskAMVO.setProductId(importTaskCondition.getProductId());
-                importTaskAMVO.setImportContent(importTaskAMVO.getImportContent());
+                importTaskAMVO.setImportContent(1);
             }
             importTaskAMVOS.add(importTaskAMVO);
 

+ 0 - 1
src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java

@@ -57,7 +57,6 @@ public class TaskThread extends Thread {
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
-//        importTaskAdd.startTask();
         System.out.println("任务结束");
     }
 

+ 23 - 0
src/main/resources/mapper/WebLoginConfigMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="cn.cslg.pas.mapper.WebLoginConfigMapper">
+    <select id="getPageList" parameterType="cn.cslg.pas.common.vo.QueryConfigVO"
+            resultType="cn.cslg.pas.common.vo.ConfigVO">
+        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 web_config a
+        left join web_login_config b
+        on a.id=b.web_id
+        <where>
+            b.tenant_id=#{params.tenantId}
+            <if test="params.webId !=null">
+                and a.id =#{params.webId}
+            </if>
+            <if test="params.loginAccount!=null and params.loginAccount!='' ">
+                and b.login_account like concat('%',#{params.loginAccount}, '%')
+            </if>
+        </where>
+    </select>
+</mapper>

+ 9 - 0
src/test/java/cn/cslg/pas/service/CommonServiceTests.java

@@ -3,6 +3,7 @@ package cn.cslg.pas.service;
 import cn.cslg.pas.common.model.common.QueryCondition;
 import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
+import cn.cslg.pas.common.utils.MathUtils;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.vo.DepartmentVO;
 import cn.cslg.pas.common.vo.business.ScenarioVO;
@@ -12,6 +13,7 @@ import cn.cslg.pas.domain.business.Matter;
 import cn.cslg.pas.service.business.CommonService;
 import cn.cslg.pas.service.importPatent.SchedulingTaskService;
 import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.druid.sql.visitor.functions.Char;
 import com.alibaba.fastjson.JSON;
 import org.assertj.core.internal.Arrays;
 import org.junit.jupiter.api.Test;
@@ -77,6 +79,13 @@ public class CommonServiceTests {
         schedulingTaskService.startTask();
          Thread.sleep(1000000);
     }
+    @Test
+    void test23()  {
+    String a=    MathUtils.fun(2,2);
+       char[] ab =  a.toCharArray();
+    System.out.println(a);
+    System.out.println(ab);
+    }
 
 
 }