소스 검색

4/22 查询工单流程,查询工单详情

lwhhszx 1 년 전
부모
커밋
ecfb45e211
26개의 변경된 파일1915개의 추가작업 그리고 190개의 파일을 삭제
  1. 4 24
      src/main/java/com/example/xiaoshiweixinback/business/config/ElasticSearchClientConfig.java
  2. 28 0
      src/main/java/com/example/xiaoshiweixinback/business/utils/PatentNoUtil.java
  3. 15 2
      src/main/java/com/example/xiaoshiweixinback/business/utils/parseQueryToTree/expressManager.java
  4. 2 0
      src/main/java/com/example/xiaoshiweixinback/controller/ProductController.java
  5. 38 0
      src/main/java/com/example/xiaoshiweixinback/domain/BackAdmin.java
  6. 30 0
      src/main/java/com/example/xiaoshiweixinback/entity/ops/GetFuTuParamsDTO.java
  7. 15 0
      src/main/java/com/example/xiaoshiweixinback/entity/ops/GetImagesInfoVO.java
  8. 19 0
      src/main/java/com/example/xiaoshiweixinback/entity/ops/ImagesInfoVO.java
  9. 15 0
      src/main/java/com/example/xiaoshiweixinback/entity/ops/PatentNoDetailVO.java
  10. 38 0
      src/main/java/com/example/xiaoshiweixinback/entity/ops/PubNo.java
  11. 18 0
      src/main/java/com/example/xiaoshiweixinback/entity/ops/PubReference.java
  12. 13 0
      src/main/java/com/example/xiaoshiweixinback/entity/ops/Section.java
  13. 18 0
      src/main/java/com/example/xiaoshiweixinback/mapper/BackAdminMapper.java
  14. 26 0
      src/main/java/com/example/xiaoshiweixinback/service/BackAdminService.java
  15. 4 1
      src/main/java/com/example/xiaoshiweixinback/service/TicketService.java
  16. 17 13
      src/main/java/com/example/xiaoshiweixinback/service/common/NoticeService.java
  17. 98 0
      src/main/java/com/example/xiaoshiweixinback/service/common/OPSService.java
  18. 7 3
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/EsDenseVectorService.java
  19. 12 8
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/EsPatentService.java
  20. 11 124
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/EsService.java
  21. 7 9
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/GetFiguresService.java
  22. 2 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/ImportFromWebToEsService.java
  23. 106 0
      src/main/java/com/example/xiaoshiweixinback/service/importPatent/excel/GetFilesFromOPSService.java
  24. 8 4
      src/main/resources/application-dev.yml
  25. 4 2
      src/main/resources/application.yml
  26. 1360 0
      src/main/resources/jsons/uploadSetting.json

+ 4 - 24
src/main/java/com/example/xiaoshiweixinback/business/config/ElasticSearchClientConfig.java

@@ -14,6 +14,7 @@ import org.apache.http.impl.client.BasicCredentialsProvider;
 import org.apache.http.ssl.SSLContextBuilder;
 import org.elasticsearch.client.RestClient;
 import org.elasticsearch.client.RestClientBuilder;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
@@ -23,9 +24,10 @@ import javax.net.ssl.SSLContext;
 @Configuration
 public class ElasticSearchClientConfig {
     //配置RestHighLevelClient依赖到spring容器中待用
-
     @Configuration
     public class ElasticSearchConfig {
+@Value("${ES.config}")
+private String config;
         //注入IOC容器
 //        @Bean
 //        public ElasticsearchClient elasticsearchClient() throws Exception {
@@ -40,33 +42,11 @@ public class ElasticSearchClientConfig {
 //            ElasticsearchTransport transport = new RestClientTransport(client,new JacksonJsonpMapper());
 //            return new ElasticsearchClient(transport);
 //        }
-//                @Bean
-//                public ElasticsearchClient elasticsearchClient() throws Exception {
-//                    RestClientBuilder builder = RestClient.builder(new HttpHost("47.101.137.223", 9200, "http"));
-//                    RestClient client = builder.build();
-//                    ElasticsearchTransport transport = new RestClientTransport(client, new JacksonJsonpMapper());
-//
-//                    return new ElasticsearchClient(transport);
-//                }
 
 
-//        @Bean
-//        public ElasticsearchClient elasticsearchClient() throws Exception {
-//            RestClientBuilder builder = RestClient.builder(new HttpHost("47.101.137.223", 9200, "http"));
-//            CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
-//            credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "xiaoshi221101"));
-//            SSLContext sslContext = SSLContextBuilder.create()
-//                    .loadTrustMaterial(new TrustSelfSignedStrategy())
-//                    .build();
-//            builder.setHttpClientConfigCallback(f -> f.setDefaultCredentialsProvider(credentialsProvider).setSSLContext(sslContext).setSSLHostnameVerifier(new NoopHostnameVerifier()));
-//            RestClient client =builder.build();
-//            ElasticsearchTransport transport = new RestClientTransport(client,new JacksonJsonpMapper());
-//            return new ElasticsearchClient(transport);
-//        }
-//
         @Bean
         public ElasticsearchClient elasticsearchClient() throws Exception {
-            RestClientBuilder builder = RestClient.builder(new HttpHost("es-cn-em93o8856000ho9e7.elasticsearch.aliyuncs.com", 9200, "http"));
+            RestClientBuilder builder = RestClient.builder(new HttpHost(config, 9200, "http"));
             CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
             credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "Xiaoshi221101"));
             SSLContext sslContext = SSLContextBuilder.create()

+ 28 - 0
src/main/java/com/example/xiaoshiweixinback/business/utils/PatentNoUtil.java

@@ -0,0 +1,28 @@
+package com.example.xiaoshiweixinback.business.utils;
+
+import com.example.xiaoshiweixinback.entity.ops.PatentNoDetailVO;
+import org.springframework.stereotype.Component;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@Component
+public class PatentNoUtil {
+
+    public static PatentNoDetailVO getPatentNoDetail(String patentNo){
+        PatentNoDetailVO patentNoDetailVO = new PatentNoDetailVO();
+        Pattern PATENT_PATTERN = Pattern.compile("^([A-Za-z]{2})(\\d+)([A-Za-z\\d]+)$");
+        Matcher matcher = PATENT_PATTERN.matcher(patentNo);
+        if (matcher.find()) {
+            String country = matcher.group(1);
+            String num = matcher.group(2);
+            String cc = matcher.group(3);
+            patentNoDetailVO.setKind(cc);
+            patentNoDetailVO.setNumber(num);
+            patentNoDetailVO.setCc(country);
+            return patentNoDetailVO;
+        } else {
+            throw new IllegalArgumentException("Invalid patent number format: " + patentNo);
+        }
+    }
+}

+ 15 - 2
src/main/java/com/example/xiaoshiweixinback/business/utils/parseQueryToTree/expressManager.java

@@ -148,8 +148,21 @@ public class expressManager {
 
     public Symbol getSymbol(String strSymbol) {
         String strKey = strSymbol.trim().toUpperCase();
-        if ((strKey != null && !strKey.trim().equals("")) && hSymbols.containsKey(strKey)) {
-            return hSymbols.get(strKey);
+        if ((strKey != null && !strKey.trim().equals(""))) {
+            if (hSymbols.containsKey(strKey)) {
+                return hSymbols.get(strKey);
+            } else if (strKey.matches("\\$W[0-9]+")) {
+                operate tem = new operate();
+                tem = new operate();
+                tem.Code = strKey;
+                tem.ShowName = strKey;
+                tem.type = enuType.Assignment;
+                tem.priorityVale = 24;
+                tem.operateValue = 2;
+                return tem;
+            } else {
+                return null;
+            }
         } else {
             return null;
         }

+ 2 - 0
src/main/java/com/example/xiaoshiweixinback/controller/ProductController.java

@@ -85,4 +85,6 @@ public class ProductController {
         Records records = productService.queryConcernProduct(productDTO);
         return Response.success(records);
     }
+
+
 }

+ 38 - 0
src/main/java/com/example/xiaoshiweixinback/domain/BackAdmin.java

@@ -0,0 +1,38 @@
+package com.example.xiaoshiweixinback.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 后台管理员
+ * @TableName back_admin
+ */
+@TableName(value ="back_admin")
+@Data
+public class BackAdmin implements Serializable {
+    /**
+     * ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 
+     */
+    private String name;
+
+    /**
+     * 
+     */
+    private String phoneNum;
+
+    /**
+     * 
+     */
+    private String eMail;
+
+}

+ 30 - 0
src/main/java/com/example/xiaoshiweixinback/entity/ops/GetFuTuParamsDTO.java

@@ -0,0 +1,30 @@
+package com.example.xiaoshiweixinback.entity.ops;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 远程调用爬取欧专局,获取附件的接口的DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/12
+ */
+@Accessors(chain = true)
+@Data
+public class GetFuTuParamsDTO implements Serializable {
+    /**
+     * 附件链接
+     */
+    private String link;
+    /**
+     * 附件页数
+     */
+    private Integer page;
+    /**
+     * 附件类型
+     */
+    private String type;
+
+}

+ 15 - 0
src/main/java/com/example/xiaoshiweixinback/entity/ops/GetImagesInfoVO.java

@@ -0,0 +1,15 @@
+package com.example.xiaoshiweixinback.entity.ops;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/3/27
+ */
+@Data
+public class GetImagesInfoVO {
+    private PubReference pubReference;
+    private List<ImagesInfoVO> images;
+}

+ 19 - 0
src/main/java/com/example/xiaoshiweixinback/entity/ops/ImagesInfoVO.java

@@ -0,0 +1,19 @@
+package com.example.xiaoshiweixinback.entity.ops;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * OPS获取图片信息VO
+ * @Author xiexiang
+ * @Date 2024/3/27
+ */
+@Data
+public class ImagesInfoVO {
+    private String imageType;
+    private Integer numberOfPages;
+    private String urlLink;
+    private List<String> formatOptions;
+    private List<Section> sections;
+}

+ 15 - 0
src/main/java/com/example/xiaoshiweixinback/entity/ops/PatentNoDetailVO.java

@@ -0,0 +1,15 @@
+package com.example.xiaoshiweixinback.entity.ops;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 拆分保存特征的前端传输DTO类
+ */
+@Data
+@Accessors(chain = true)
+public class PatentNoDetailVO {
+private String cc;
+private String number;
+private String kind;
+}

+ 38 - 0
src/main/java/com/example/xiaoshiweixinback/entity/ops/PubNo.java

@@ -0,0 +1,38 @@
+package com.example.xiaoshiweixinback.entity.ops;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 公开号
+ *
+ * @Author chenyu
+ * @Date 2023/4/11
+ */
+@Accessors(chain = true)
+@Data
+public class PubNo implements Serializable {
+    /**
+     * 公开号类型(如:docdb、epodoc)
+     */
+    private String type;
+    /**
+     * 公开号国家(如:AU)
+     */
+    private String country;
+    /**
+     * 公开号数字(如:2021229172)
+     */
+    private String number;
+    /**
+     * 申请号类型格式(如:A1)
+     */
+    private String kind;
+    /**
+     * 申请号日期(如:2023-04-06T00:00:00)
+     */
+    private String date;
+
+}

+ 18 - 0
src/main/java/com/example/xiaoshiweixinback/entity/ops/PubReference.java

@@ -0,0 +1,18 @@
+package com.example.xiaoshiweixinback.entity.ops;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/3/27
+ */
+@Data
+public class PubReference {
+    private String type;
+    private String country;
+    private String number;
+    private String kind;
+    private Date date;
+}

+ 13 - 0
src/main/java/com/example/xiaoshiweixinback/entity/ops/Section.java

@@ -0,0 +1,13 @@
+package com.example.xiaoshiweixinback.entity.ops;
+
+import lombok.Data;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/3/27
+ */
+@Data
+public class Section {
+    private String name;
+    private Integer startPage;
+}

+ 18 - 0
src/main/java/com/example/xiaoshiweixinback/mapper/BackAdminMapper.java

@@ -0,0 +1,18 @@
+package com.example.xiaoshiweixinback.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.xiaoshiweixinback.domain.BackAdmin;
+
+/**
+* @author admin
+* @description 针对表【back_admin(后台管理员)】的数据库操作Mapper
+* @createDate 2024-04-23 11:32:51
+* @Entity xiaoshiweixinback.domain.BackAdmin
+*/
+public interface BackAdminMapper extends BaseMapper<BackAdmin> {
+
+}
+
+
+
+

+ 26 - 0
src/main/java/com/example/xiaoshiweixinback/service/BackAdminService.java

@@ -0,0 +1,26 @@
+package com.example.xiaoshiweixinback.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.xiaoshiweixinback.domain.BackAdmin;
+import com.example.xiaoshiweixinback.mapper.BackAdminMapper;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author admin
+ * @description 针对表【back_admin(后台管理员)】的数据库操作Service实现
+ * @createDate 2024-04-23 11:32:51
+ */
+@Service
+public class BackAdminService extends ServiceImpl<BackAdminMapper, BackAdmin> {
+    public List<BackAdmin> getAllBackAdmin() {
+        List<BackAdmin> backAdminList = this.list();
+        return backAdminList;
+    }
+}
+
+
+
+

+ 4 - 1
src/main/java/com/example/xiaoshiweixinback/service/TicketService.java

@@ -17,6 +17,7 @@ import com.example.xiaoshiweixinback.entity.vo.*;
 import com.example.xiaoshiweixinback.entity.vo.ticket.TicketDetailVO;
 import com.example.xiaoshiweixinback.mapper.TicketMapper;
 import com.example.xiaoshiweixinback.service.common.FileManagerService;
+import com.example.xiaoshiweixinback.service.common.NoticeService;
 import lombok.RequiredArgsConstructor;
 import org.joda.time.DateTime;
 import org.springframework.beans.BeanUtils;
@@ -45,7 +46,7 @@ public class TicketService extends ServiceImpl<TicketMapper, Ticket> {
     private final AssoTicketFileService assoTicketFileService;
     private final TicketFlowService ticketFlowService;
     private final FileManagerService fileManagerService;
-
+    private final NoticeService noticeService;
     /**
      * 新增or更新工单
      *
@@ -116,6 +117,8 @@ public class TicketService extends ServiceImpl<TicketMapper, Ticket> {
 
             //添加工单流程记录
             ticketFlowService.addTicketFlow(ticket, "创建工单", false, null, 1);
+            //通知管理员
+            noticeService.noticeAdminToHandle(ticket.getNum());
         } else {
             //TODO 未装载
             ticket = this.getById(ticket.getId());

+ 17 - 13
src/main/java/com/example/xiaoshiweixinback/service/common/NoticeService.java

@@ -9,7 +9,9 @@ import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
 import com.aliyuncs.exceptions.ClientException;
 import com.aliyuncs.profile.DefaultProfile;
 import com.example.xiaoshiweixinback.business.utils.RabbitMQUtils;
+import com.example.xiaoshiweixinback.domain.BackAdmin;
 import com.example.xiaoshiweixinback.entity.shortMessage.ShortMessageVO;
+import com.example.xiaoshiweixinback.service.BackAdminService;
 import com.google.gson.Gson;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -36,20 +38,22 @@ public class NoticeService {
 
     @Value("${SMS.secret}")
     private String secret;
-    public String noticeAdminToHandle() {
-        Map<String, Object> map = new LinkedHashMap<>();
-        map.put("title", "任务通知");
-        String name = "";
-        //判断是否为内部人员
-
-
-            map.put("template", "mail/SyneryInside.html");
-            map.put("value1", "张三");
-            map.put("email", "2232623707@qq.com");
+    @Autowired
+    private BackAdminService backAdminService;
+    public String noticeAdminToHandle(String tradeNo) {
+        List<BackAdmin> backAdminList =backAdminService.getAllBackAdmin();
+        for(BackAdmin backAdmin:backAdminList) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("title", "任务通知");
+            map.put("template", "mail/ticketsAdd.html");
+            map.put("value1", backAdmin.getName());
+            map.put("email", backAdmin.getEMail());
             map.put("img", "/logo.png");
-            map.put("value2", "11");
-        rabbitMQUtils.sendEmailMessage(map);
-        return name;
+            map.put("value2", tradeNo);
+            rabbitMQUtils.sendEmailMessage(map);
+        }
+
+        return "";
     }
 
     public void sendShortMessage(ShortMessageVO shortMessageVO){

+ 98 - 0
src/main/java/com/example/xiaoshiweixinback/service/common/OPSService.java

@@ -0,0 +1,98 @@
+package com.example.xiaoshiweixinback.service.common;
+
+import com.alibaba.fastjson.JSONObject;
+import com.example.xiaoshiweixinback.business.utils.PatentNoUtil;
+import com.example.xiaoshiweixinback.entity.ops.*;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+@Service
+public class OPSService {
+
+    /**
+     * 远程调用获取附件文件流的接口
+     *
+     * @return
+     */
+    @Value("${OPSUrl}")
+    private String OPSUrl;
+    public byte[] getPatentFile(GetFuTuParamsDTO getFuTuParamsDTO) throws IOException {
+        //String param = new Gson().toJson(getFuTuParamsDTO);
+        //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(OPSUrl + "/api/OPSQuery/GetPatentFile?link=" + getFuTuParamsDTO .getLink() + "&page=" + getFuTuParamsDTO.getPage() + "&type=" + getFuTuParamsDTO.getType())
+                .get()
+                .build();
+        byte[] buffer = okHttpClient.newCall(request).execute().body().bytes();
+        return buffer;
+    }
+    /**
+     * 远程调用获取Image信息的接口
+     *
+     * @return
+     */
+    public String getImagesInfo(String pn) throws IOException {
+
+        //String param = new Gson().toJson(pn);
+        //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(OPSUrl + "/api/OPSQuery/GetImagesInfo?Pn=" + "USD942334S")
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    public byte[] getImages(String publicNo) throws IOException {
+        String res = this.getImagesInfo(publicNo);
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        String imageInfo = jsonObject.getString("data");
+        // 删除第一个 `[`
+        if (imageInfo.startsWith("[")) {
+            imageInfo = imageInfo.substring(1);
+        }
+        // 删除最后一个 `]`
+        if (imageInfo.endsWith("]")) {
+            imageInfo = imageInfo.substring(0, imageInfo.length() - 1);
+        }
+        GetImagesInfoVO getImagesInfoVO = JSONObject.parseObject(imageInfo, GetImagesInfoVO.class);
+        List<ImagesInfoVO> images = getImagesInfoVO.getImages();
+        if (!images.isEmpty()) {
+            ImagesInfoVO infoVO = images.stream().filter(item -> item.getImageType().equals("FirstPageClipping")).findFirst().orElse(null);
+            if (infoVO != null) {
+                GetFuTuParamsDTO getFuTuParamsDTO = new GetFuTuParamsDTO();
+                getFuTuParamsDTO.setPage(1);
+                getFuTuParamsDTO.setType("image/png");
+                getFuTuParamsDTO.setLink(infoVO.getUrlLink());
+                byte[] buffer = this.getPatentFile(getFuTuParamsDTO);
+                if (buffer != null) {
+                    return buffer;
+                } else {
+                    return null;
+                }
+            } else {
+                return null;
+            }
+        } else {
+            return null;
+        }
+    }
+
+
+}

+ 7 - 3
src/main/java/com/example/xiaoshiweixinback/service/importPatent/EsDenseVectorService.java

@@ -43,6 +43,7 @@ import com.example.xiaoshiweixinback.service.importPatent.FormatQueryService;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
@@ -85,7 +86,10 @@ public class EsDenseVectorService {
 
     @Autowired
     private RedisService redisService;
-
+   @Value("${ES.patentVector}")
+   private  String patentVectorName;
+   @Value("${ES.patent}")
+   private String patentMapName;
     /**
      * 根据图片排序获取列表
      *
@@ -104,7 +108,7 @@ public class EsDenseVectorService {
 //        }
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
-        builder.index("patent_vector");
+        builder.index(patentVectorName);
         Query q = null;
         String condition = this.appendCondition(dto.getProductId(), dto.getKey(), dto.getAppCountry(), dto.getCompanyName());
         if (StringUtils.isNotEmpty(condition)) {
@@ -212,7 +216,7 @@ public class EsDenseVectorService {
         List<EsPictureNoVo> pictureNoVos = new ArrayList<>();
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
-        builder.index("patent_vector");
+        builder.index(patentVectorName);
         Query query = QueryBuilders.term(i -> i.field("app_no").value(noDTO.getAppNo()));
         builder.query(query);
         builder.size(30);

+ 12 - 8
src/main/java/com/example/xiaoshiweixinback/service/importPatent/EsPatentService.java

@@ -38,6 +38,7 @@ import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -76,7 +77,10 @@ public class EsPatentService {
     @Autowired
     private FormatQueryService formatQueryService;
 
-
+    @Value("${ES.patentVector}")
+    private  String patentVectorName;
+    @Value("${ES.patent}")
+    private String patentMapName;
     /**
      * 收藏专利
      *
@@ -141,7 +145,7 @@ public class EsPatentService {
 
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
-        builder.index("wxpatent");
+        builder.index(patentMapName);
         Query q = QueryBuilders.term(i -> i.field("product_id").value(assoPersonProductId));
         Query query = QueryBuilders.hasChild(i -> i.type("product").query(q));
         builder.query(query);
@@ -200,7 +204,7 @@ public class EsPatentService {
         List<String> list = new ArrayList<>();
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
-        builder.index("wxpatent");
+        builder.index(patentMapName);
         Query q = QueryBuilders.term(i -> i.field("product_id").value(assoPersonProductId));
         Query query = QueryBuilders.term(i -> i.field("patent_no.keyword").value(patentNo));
         Query q1 = QueryBuilders.hasParent(i -> i.parentType("patent").query(query));
@@ -263,7 +267,7 @@ public class EsPatentService {
         String id = "";
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
-        builder.index("wxpatent");
+        builder.index(patentMapName);
         Query q = QueryBuilders.term(i -> i.field("patent_no.keyword").value(patentNo));
         builder.query(q);
         builder.size(10);
@@ -286,7 +290,7 @@ public class EsPatentService {
         PatentColumnDTO columnDTO = new PatentColumnDTO();
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
-        builder.index("wxpatent");
+        builder.index(patentMapName);
         Query q = QueryBuilders.term(i -> i.field("patent_no.keyword").value(patentNo));
         builder.query(q);
         builder.size(10);
@@ -310,7 +314,7 @@ public class EsPatentService {
         List<String> list = new ArrayList<>();
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
-        builder.index("wxpatent");
+        builder.index(patentMapName);
         Query q = QueryBuilders.term(i -> i.field("product_id").value(personProductId));
         Query query = QueryBuilders.hasChild(i -> i.type("product").query(q));
         builder.query(query);
@@ -384,7 +388,7 @@ public class EsPatentService {
 
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
-        builder.index("patent_vector");
+        builder.index(patentMapName);
         Query q = null;
         String condition = esDenseVectorService.appendCondition(patentDTO.getProductId(), patentDTO.getKey(), patentDTO.getAppCountry(), patentDTO.getCompanyName());
         if (StringUtils.isNotEmpty(condition)) {
@@ -460,7 +464,7 @@ public class EsPatentService {
         PatentColumnDTO columnDTO = new PatentColumnDTO();
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
-        builder.index("wxpatent");
+        builder.index(patentMapName);
         Query q = QueryBuilders.term(i -> i.field("app_no.keyword").value(appNo));
         builder.query(q);
         builder.size(10);

+ 11 - 124
src/main/java/com/example/xiaoshiweixinback/service/importPatent/EsService.java

@@ -29,6 +29,7 @@ import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
@@ -48,7 +49,10 @@ public class EsService {
 
     @Autowired
     private PatentStarApiService patentStarApiService;
-
+    @Value("${ES.patentVector}")
+    private  String patentVectorName;
+    @Value("${ES.patent}")
+    private String patentMapName;
 
 
     /**
@@ -57,7 +61,7 @@ public class EsService {
      */
     public String addPatent(Patent patent) throws Exception {
         IndexResponse indexResponse = client.index(i -> i
-                .index("wxpatent")
+                .index(patentMapName)
                 //传入user对象
                 .document(patent)
         );
@@ -66,7 +70,7 @@ public class EsService {
 
     public String addPatentVector(PatentVector patentVector) throws Exception {
         IndexResponse indexResponse = client.index(i -> i
-                .index("patent_vector")
+                .index(patentVectorName)
                 //传入user对象
                 .document(patentVector)
         );
@@ -79,7 +83,7 @@ public class EsService {
      */
     public String addChildPatent(Patent patent, String id) throws Exception {
         IndexResponse indexResponse = client.index(i -> i
-                .index("wxpatent")
+                .index(patentMapName)
                 .routing(id)
                 //传入user对象
                 .document(patent).refresh(Refresh.True).waitForActiveShards(WaitForActiveShards.of(t -> t.count(1)))
@@ -94,7 +98,7 @@ public class EsService {
      */
     public Integer deleteWxPatent(List<String> ids) {
         Query query = QueryBuilders.ids(n -> n.values(ids));
-        DeleteByQueryRequest request = DeleteByQueryRequest.of(i -> i.index("wxpatent").query(query));
+        DeleteByQueryRequest request = DeleteByQueryRequest.of(i -> i.index(patentMapName).query(query));
         try {
             client.deleteByQuery(request);
             return 1;
@@ -113,7 +117,7 @@ public class EsService {
     public PatentWithIdVO getIdByPatentNo(String patentNo) throws Exception {
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
-        builder.index("wxpatent");
+        builder.index(patentMapName);
         PatentWithIdVO patentWithIdVO = null;
         String id = null;
         Query q1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(patentNo));
@@ -197,7 +201,7 @@ public class EsService {
         UpdateRequest<Patent, Patent> req;
 
         req = UpdateRequest.of(
-                b -> b.index("wxpatent").id(id)
+                b -> b.index(patentMapName).id(id)
                         .doc(patent)
         );
 
@@ -227,123 +231,6 @@ public class EsService {
     }
 
     /**
-     * Es检索
-     *
-     * @param queryRequest 检索条件
-     * @return
-     */
-    public PatentDTO esSearch(QueryRequest queryRequest) throws Exception {
-//        PatentDTO dto = new PatentDTO();
-//        String searchCondition = "";
-//        Integer productId = queryRequest.getProductId();
-//        String productFrom = queryRequest.getFrom();
-//        Long current = queryRequest.getCurrent();
-//        Long size = queryRequest.getSize();
-//        String groupField = queryRequest.getGroupField();
-//        //判断表达式
-//        if (queryRequest instanceof StringRequest) {
-//            searchCondition = ((StringRequest) queryRequest).getSearchQuery();
-//        } else if (queryRequest instanceof MapRequest) {
-//            Map<String, Object> map = ((MapRequest) queryRequest).getSearchQuery();
-//            StringBuilder stringBuilder = new StringBuilder();
-//            for (String key : map.keySet()) {
-//                Object value = map.get(key);
-//                if (!"".contentEquals(stringBuilder)) {
-//                    stringBuilder = stringBuilder.append(" AND ").append(key).append("=").append(value);
-//                } else {
-//                    stringBuilder = stringBuilder.append(key).append("=").append(value);
-//                }
-//            }
-//            searchCondition = stringBuilder.toString();
-//        }
-//
-//        SearchRequest.Builder builder = new SearchRequest.Builder();
-//        //设置查询索引
-//        builder.index("patent");
-//        //1. 解析检索条件
-//        treeNode tree = expressManager.getInstance().Parse(condition, false);
-//        //3. 从es中检索数据
-//        Query q = formatQueryService.EsQueryToQuery((operateNode) tree, "patent",projectId);
-//        builder.query(q);
-//        //判断同族分组
-//        String str = "";
-//        if (StringUtils.isNotEmpty(groupField)) {
-//            switch (groupField) {
-//                case "simpleFamilyId":
-//                    str = "simple_family_id";
-//                    break;
-//                case "inpadocFamilyId":
-//                    str = "inpadoc_family_id";
-//                    break;
-//                case "patsnapFamilyId":
-//                    str = "patsnap_family_id";
-//                    break;
-//            }
-//        }
-//        String esField = str;
-//        if (StringUtils.isNotEmpty(esField)) {
-//            List<SortOptions> options = new ArrayList<>();
-//            SortOptions appDate = SortOptions.of(i -> i.field(j -> j.field("app_date").order(SortOrder.Asc)));
-//            options.add(appDate);
-//            Aggregation bucketSort = AggregationBuilders.bucketSort(i -> i.from((current.intValue() - 1) * size.intValue()).size(size.intValue()));
-//            Aggregation aggregation = new Aggregation.Builder().terms(new TermsAggregation.Builder()
-//                    .field(esField).size(100000).build())
-//                    .aggregations(new HashMap() {{
-//                        put("hitAgg", bucketSort);
-//                    }}).build();
-//            builder.aggregations("Agg", aggregation);
-//            //对聚合结果统计出总数
-//            Aggregation terms = AggregationBuilders.terms(i -> i.field(esField).size(100000));
-//            builder.aggregations("termAgg", terms);
-//            BucketsPath bucketsPath = BucketsPath.of(i -> i.single("termAgg>_count"));
-//            Aggregation statsBucket = AggregationBuilders.statsBucket(i -> i.bucketsPath(bucketsPath));
-//            builder.aggregations("statsBucket", statsBucket);
-//        }
-//
-//        //分页
-//        if (current != null && size != null && current > 0 && size > 0) {
-//            builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
-//        } else {
-//            builder.from(0).size(99999);
-//        }
-//
-//        //解除最大条数限制
-//        builder.trackTotalHits(i -> i.enabled(true));
-//        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-//        List<PatentColumnDTO> list = new ArrayList<>();
-//        long total = 0L;
-//        if (StringUtils.isNotEmpty(esField)) {
-//            Aggregate statsAgg = response.aggregations().get("statsBucket");
-//            total = statsAgg.statsBucket().count();
-//            Aggregate agg = response.aggregations().get("Agg");
-//            List<StringTermsBucket> termsBuckets = agg.sterms().buckets().array();
-//            for (StringTermsBucket termsBucket : termsBuckets) {
-//                String key = termsBucket.key().stringValue();
-//                PatentColumnDTO columnDTO = this.getPatentColumnDTO(key, projectId,esField);
-//                list.add(columnDTO);
-//            }
-//        } else {
-//            List<Hit<Patent>> hits = response.hits().hits();
-//            total = response.hits().total().value();
-//            for (Hit<Patent> hit : hits) {
-//                String id = hit.id();
-//                Patent esMess = hit.source();
-//                PatentColumnDTO columnDTO = this.getPatentColumnDTO(esMess, projectId, id);
-//                list.add(columnDTO);
-//            }
-//        }
-//        this.loadCoulumnDTO(list);
-//        dto.setTotal(total);
-//        dto.setPatents(list);
-//        dto.setPageNum(current);
-//        dto.setPageSize(size);
-//        return dto;
-        return null;
-    }
-
-
-
-    /**
      * 根据专利号获取专利id
      *
      * @param patentNo

+ 7 - 9
src/main/java/com/example/xiaoshiweixinback/service/importPatent/GetFiguresService.java

@@ -28,6 +28,7 @@ public class GetFiguresService {
     @Autowired
     private EsService esService;
 
+
     public void getFigures(UploadPatentWebDTO uploadPatentWebDTO) {
         Patent patent = uploadPatentWebDTO.getPatent();
         try {
@@ -36,31 +37,29 @@ public class GetFiguresService {
                 for (int i = 0; i < urls.size(); i++) {
                     String url = urls.get(i);
                     this.tem(url, uploadPatentWebDTO, i + 1);
-
                 }
             }
         } catch (Exception e) {
 
-
         }
 
-
     }
 
+
     private void tem(String pictureUrl, UploadPatentWebDTO uploadPatentWebDTO, Integer i) throws Exception {
         Patent patent = uploadPatentWebDTO.getPatent();
         if (pictureUrl != null && !pictureUrl.contains("408")) {
             File file = FileUtils.getPictureFileByUrl(pictureUrl);
-            String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getPatent().getAppNo())+i;
-            fileManagerService.uploadFileWithGuid(file, guid);
-            PatentVector patentVectorOrg =  esService.getVectorByIndex(patent.getAppNo(),i);
-            if(patentVectorOrg!=null){
+            String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getPatent().getAppNo()) + i;
+            PatentVector patentVectorOrg = esService.getVectorByIndex(patent.getAppNo(), i);
+            if (patentVectorOrg != null) {
                 return;
             }
+            fileManagerService.uploadFileWithGuid(file, guid);
             PatentVector patentVector = new PatentVector();
             patentVector.setAppNo(patent.getAppNo());
             patentVector.setTitle(patent.getTitle());
-            patentVector.setRightHolder(patent.getRightHolder());
+            patentVector.setRightHolder(patent.getApplicant());
             patentVector.setAppDate(patent.getAppDate());
             patentVector.setAbstractStr(patent.getAbstractStr());
             patentVector.setAppCountry(patent.getAppCountry());
@@ -74,7 +73,6 @@ public class GetFiguresService {
             stringList.forEach(item -> {
                 Float a = Float.parseFloat(item);
                 floats.add(a);
-
             });
             org.apache.commons.io.FileUtils.deleteQuietly(file);
             patentVector.setMyVector(floats);

+ 2 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/ImportFromWebToEsService.java

@@ -135,6 +135,8 @@ private GetFiguresService getFiguresService;
                         getFiguresService.getFigures(uploadPatentWebDTO);
                         ifHaveGet = true;
                         index += 1;
+                        System.out.println(index);
+                        System.out.println(uploadPatentWebDTO.getPatent().getPatentNo());
                     }
 
                 }

+ 106 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/excel/GetFilesFromOPSService.java

@@ -0,0 +1,106 @@
+package com.example.xiaoshiweixinback.service.importPatent.excel;
+
+import cn.hutool.core.util.IdUtil;
+import com.example.xiaoshiweixinback.business.utils.ExcelUtils;
+import com.example.xiaoshiweixinback.business.utils.FileUtils;
+import com.example.xiaoshiweixinback.business.utils.ReadExcelUtils;
+import com.example.xiaoshiweixinback.entity.dto.patent.UploadPatentWebDTO;
+import com.example.xiaoshiweixinback.service.importPatent.GetPatentFromExcelService;
+import com.example.xiaoshiweixinback.service.importPatent.GetPatentPictureFromExcelService;
+import com.example.xiaoshiweixinback.service.importPatent.SavePatentToEsService;
+import org.apache.poi.ss.usermodel.PictureData;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class GetFilesFromOPSService {
+    @Autowired
+    private ExcuteUploadSettingService excuteUploadSettingService;
+    @Autowired
+    private GetPatentFromExcelService getPatentFromExcelService;
+    @Autowired
+    private GetPatentPictureFromExcelService getPatentPictureFromExcelService;
+    @Autowired
+    private SavePatentToEsService savePatentToEsService;
+
+    public void test(String pathStr) throws Exception {
+        String[] paths = pathStr.split(",");
+        for (int t=0;t<paths.length;t++) {
+            String path =paths[t];
+            File tempFile = new File(path);
+
+            Sheet sheet = ReadExcelUtils.readExcel(tempFile);
+            int total = sheet.getPhysicalNumberOfRows() - 1;
+            Row firstRow = sheet.getRow(0);
+            int columns = firstRow.getLastCellNum();
+
+            List<UploadSettingVO.Column> jsonData = excuteUploadSettingService.ExcuteUploadSetting(5 + "");
+
+            for (int r = 0; r < total; r++) {
+                Row needRow = sheet.getRow(r + 1);
+                Map<Object, Object> map = new HashMap<>();
+                for (int i = 0; i < columns; i++) {
+                    map.put(firstRow.getCell(i) + "", ExcelUtils.getValue(needRow.getCell(i)) + "");
+                }
+                UploadParamsVO uploadParamsVO = UploadPatentBatchUtil.processData(map, jsonData);
+                getPatentFromExcelService.loadPatent(uploadParamsVO);
+
+
+
+            }
+            System.out.println("完成"+t);
+
+            //获得总列数
+
+        }
+    }
+
+
+
+    public void test2(String pathStr) throws Exception {
+        String[] paths = pathStr.split(",");
+        for (int t=0;t<paths.length;t++) {
+            String path =paths[t];
+            File tempFile = new File(path);
+
+            Sheet sheet = ReadExcelUtils.readExcel(tempFile);
+            int total = sheet.getPhysicalNumberOfRows() - 1;
+            Row firstRow = sheet.getRow(0);
+            int columns = firstRow.getLastCellNum();
+
+            List<UploadSettingVO.Column> jsonData = excuteUploadSettingService.ExcuteUploadSetting(5 + "");
+
+            for (int r = 0; r < total; r++) {
+                Row needRow = sheet.getRow(r + 1);
+                Map<Object, Object> map = new HashMap<>();
+                for (int i = 0; i < columns; i++) {
+                    map.put(firstRow.getCell(i) + "", ExcelUtils.getValue(needRow.getCell(i)) + "");
+                }
+                UploadParamsVO uploadParamsVO = UploadPatentBatchUtil.processData(map, jsonData);
+                getPatentFromExcelService.loadPatent(uploadParamsVO);
+
+                List<PictureData> pictureDatas = ReadExcelUtils.getPictures((XSSFSheet) sheet, r + 1);
+
+                for (int i = 0; i < pictureDatas.size(); i++) {
+                    getPatentPictureFromExcelService.tem(uploadParamsVO.getPatent(), i);
+                }
+                UploadPatentWebDTO uploadPatentWebDTO = new UploadPatentWebDTO();
+                uploadPatentWebDTO.setPatent(uploadParamsVO.getPatent());
+                savePatentToEsService.saveOrUpdate(uploadPatentWebDTO);
+                System.out.println(r);
+            }
+            System.out.println("done"+t);
+
+            //获得总列数
+
+        }
+    }
+}

+ 8 - 4
src/main/resources/application-dev.yml

@@ -63,10 +63,10 @@ spring:
       initialize-schema: always
 authorUrl: http://localhost:8871
 PCSUrl: http://localhost:8871
-#OPSUrl: http://192.168.1.24:5001
-OPSUrl: http://139.224.24.90:5001
+OPSUrl: http://192.168.1.24:5001
+#OPSUrl: http://139.224.24.90:5001
 PASUrl: http://localhost:8877
-FMSUrl: http://localhost:8801
+FMSUrl: http://localhost:8802
 VectorUrl: http://139.224.24.90:8000
 FileSource: 5
 
@@ -82,4 +82,8 @@ WeChat:
   appSecret: 89fe0fb96472548d48f63b2f5c956537
 
 Keypath: C:\Users\admin\Desktop\小程序证书\1673179188_20240408_cert\apiclient_key.pem
-queueName: emailProd.queue
+queueName: emailProd.queue
+ES:
+  patentVector: patent_vector
+  patent: wxpatent
+  config: es-cn-em93o8856000ho9e7.elasticsearch.aliyuncs.com

+ 4 - 2
src/main/resources/application.yml

@@ -41,7 +41,7 @@ mybatis-plus:
       logic-not-delete-value: 1
       update-strategy: ignored
   configuration:
-    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     map-underscore-to-camel-case: true
     cache-enabled: false
   mapper-locations: classpath:mapper/*.xml
@@ -58,4 +58,6 @@ WeChat:
   appId: wxaefb842bd0b93ff0
   appSecret: 89fe0fb96472548d48f63b2f5c956537
 
-
+ES:
+  patentVector: patentVector
+  patent: weixinpatent

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1360 - 0
src/main/resources/jsons/uploadSetting.json