Browse Source

1/29 刷新专利信息

lwhhszx 1 năm trước cách đây
mục cha
commit
6ecf54ebd0

+ 13 - 0
src/main/java/cn/cslg/pas/common/dto/es/RefreshPatentDTO.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.dto.es;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class RefreshPatentDTO {
+
+    private String patentNo;
+     //1基本信息 2说明书 3权利要求 4附图 5pdf文档
+    private List<Integer> refreshContent;
+}

+ 15 - 2
src/main/java/cn/cslg/pas/controller/PatentController.java

@@ -8,6 +8,7 @@ import cn.cslg.pas.common.dto.business.EsCountDTO;
 import cn.cslg.pas.common.dto.business.SelectClaimDTO;
 import cn.cslg.pas.common.dto.es.EsDateRangeDTO;
 import cn.cslg.pas.common.dto.es.EsValueCurveDTO;
+import cn.cslg.pas.common.dto.es.RefreshPatentDTO;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.StringRequest;
@@ -36,6 +37,7 @@ import cn.cslg.pas.service.business.MergePersonService;
 import cn.cslg.pas.service.business.es.*;
 import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.common.PatentStarApiService;
+import cn.cslg.pas.service.importPatent.ImportSinglePatentService;
 import cn.hutool.core.util.IdUtil;
 import io.swagger.v3.oas.annotations.Operation;
 import org.apache.commons.io.input.XmlStreamReaderException;
@@ -91,7 +93,8 @@ public class PatentController {
     private ImportTaskService importTaskService;
     @Autowired
     private LoginUtils loginUtils;
-
+    @Autowired
+    private ImportSinglePatentService importSinglePatentService;
 
     @Operation(summary = "查询专利")
     @PostMapping("/queryPatent")
@@ -202,7 +205,7 @@ public class PatentController {
 
     @Operation(summary = "专利列表上编辑发明人/权利人/申请人合并")
     @PostMapping("/updateMergePerson")
-    public Response updateMergePerson(@RequestBody MergePersonVO personVO) throws Exception{
+    public Response updateMergePerson(@RequestBody MergePersonVO personVO) throws Exception {
         Integer personId = null;
         try {
             personId = mergePersonService.updateMergePerson(personVO);
@@ -344,4 +347,14 @@ public class PatentController {
         records.setData(list);
         return Response.success(records);
     }
+
+    @PostMapping("/refreshPatent")
+    public Response refreshPatent(@RequestBody RefreshPatentDTO refreshPatentDTO) {
+        try {
+            importSinglePatentService.refreshPatent(refreshPatentDTO);
+        } catch (Exception e) {
+            throw new XiaoShiException(e.getMessage());
+        }
+          return Response.success("刷新成功");
+    }
 }

+ 2 - 1
src/main/java/cn/cslg/pas/service/business/CompareLiteratureService.java

@@ -137,7 +137,8 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
         Integer order = 1;
         //根据报告id获得最大序号
         LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(CompareLiterature::getProjectId, projectId);
+        queryWrapper.eq(CompareLiterature::getProjectId, projectId)
+                    .orderByDesc(CompareLiterature::getSysOrder);
         CompareLiterature compareLiteratureBig = this.getOne(queryWrapper, false);
         if (compareLiteratureBig != null && compareLiteratureBig.getSysOrder() != null) {
             order = compareLiteratureBig.getSysOrder() + 1;

+ 30 - 16
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -23,10 +23,7 @@ import cn.cslg.pas.service.business.CommonService;
 import cn.cslg.pas.service.common.PatentStarApiService;
 import cn.cslg.pas.service.query.FormatQueryService;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
-import co.elastic.clients.elasticsearch._types.InlineScript;
-import co.elastic.clients.elasticsearch._types.Script;
-import co.elastic.clients.elasticsearch._types.SortOptions;
-import co.elastic.clients.elasticsearch._types.SortOrder;
+import co.elastic.clients.elasticsearch._types.*;
 import co.elastic.clients.elasticsearch._types.aggregations.*;
 import co.elastic.clients.elasticsearch._types.query_dsl.*;
 import co.elastic.clients.elasticsearch.core.*;
@@ -92,7 +89,6 @@ public class EsService {
     }
 
 
-
     /**
      * 根据专利号获取专利id
      *
@@ -126,8 +122,6 @@ public class EsService {
     }
 
 
-
-
     /**
      * Es检索
      *
@@ -262,7 +256,7 @@ public class EsService {
         }
 
         //分页
-        if (current!=null&&size!=null&&current > 0 && size > 0) {
+        if (current != null && size != null && current > 0 && size > 0) {
             builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
         }
 
@@ -429,11 +423,13 @@ public class EsService {
 
     //更新patent
     public Integer updatePatent(Patent patent, String id) {
-        UpdateRequest<Patent,Patent> req;
+        UpdateRequest<Patent, Patent> req;
+
         req = UpdateRequest.of(
                 b -> b.index("patent").id(id)
                         .doc(patent)
         );
+
         try {
             client.update(req, Patent.class);
             return 1;
@@ -443,8 +439,24 @@ public class EsService {
     }
 
     //更新patent
+    public Integer updatePatentShouldWait(Patent patent, String id) {
+        UpdateRequest<Patent, Patent> req;
+
+        req = UpdateRequest.of(
+                b -> b.index("patent").id(id)
+                        .doc(patent).refresh(Refresh.True).waitForActiveShards(WaitForActiveShards.of(i -> i.count(1)))
+        );
+
+        try {
+            client.update(req, Patent.class);
+            return 1;
+        } catch (IOException e) {
+            return -1;
+        }
+    }
+    //更新patent
     public Integer updatePatentById(Patent patent, String id) {
-        UpdateRequest<Patent,Patent> req;
+        UpdateRequest<Patent, Patent> req;
         req = UpdateRequest.of(
                 b -> b.index("patent").id(id)
                         .doc(patent));
@@ -455,6 +467,7 @@ public class EsService {
             return -1;
         }
     }
+
     /*POST /patent/_update_by_query
     {
         "script": {
@@ -477,9 +490,9 @@ public class EsService {
             for (int i = 0; i < fieldValueList.size(); i++) {
                 String s = fieldValueList.get(i);
                 if (i == lastSum) {
-                    valueField = valueField + "\"" +s + "\""  ;
+                    valueField = valueField + "\"" + s + "\"";
                 } else {
-                    valueField = valueField + "\"" +s + "\"" + "," ;
+                    valueField = valueField + "\"" + s + "\"" + ",";
                 }
             }
         }
@@ -492,9 +505,9 @@ public class EsService {
             for (int i = 0; i < statsValueList.size(); i++) {
                 String s = statsValueList.get(i);
                 if (i == lastSum) {
-                    valueStats = valueStats + "\"" +s + "\""  ;
+                    valueStats = valueStats + "\"" + s + "\"";
                 } else {
-                    valueStats = valueStats + "\"" +s + "\"" + "," ;
+                    valueStats = valueStats + "\"" + s + "\"" + ",";
                 }
             }
         }
@@ -1084,6 +1097,7 @@ public class EsService {
 
     /**
      * 更新合并申请人/权利人/发明人
+     *
      * @param patent
      * @param id
      * @return
@@ -1111,7 +1125,7 @@ public class EsService {
      * @param id
      * @return
      */
-    public Integer delMergePerson(Patent patent, String id,Integer type, String name) {
+    public Integer delMergePerson(Patent patent, String id, Integer type, String name) {
         String source = "";
         if (type == 0) {
             source = "if (ctx._source.merge_applicant != null) { ctx._source.merge_applicant.removeIf(item -> item.name == params.name); } if (ctx._source.merge_right_holder  != null) { ctx._source.merge_right_holder .removeIf(item -> item.name == params.name); }";
@@ -1119,7 +1133,7 @@ public class EsService {
             source = "if (ctx._source.merge_inventor != null) { ctx._source.merge_inventor.removeIf(item -> item.name == params.name); }";
         }
         String finalSource = source;
-        InlineScript inlineScript = InlineScript.of(i -> i.lang("painless").params("name",JsonData.of(name)).source(finalSource));
+        InlineScript inlineScript = InlineScript.of(i -> i.lang("painless").params("name", JsonData.of(name)).source(finalSource));
         Script script = Script.of(i -> i.inline(inlineScript));
         Query query = QueryBuilders.term(i -> i.field("_id").value(id));
         UpdateByQueryRequest request = UpdateByQueryRequest.of(i -> i.index("patent").script(script).query(query));

+ 269 - 13
src/main/java/cn/cslg/pas/service/importPatent/ImportSinglePatentService.java

@@ -1,8 +1,12 @@
 package cn.cslg.pas.service.importPatent;
 
+import cn.cslg.pas.common.core.IgnoreDTDEntityResolver;
 import cn.cslg.pas.common.dto.PatentStarListDTO;
 import cn.cslg.pas.common.dto.UploadPatentWebDTO;
+import cn.cslg.pas.common.dto.es.RefreshPatentDTO;
 import cn.cslg.pas.common.utils.DateUtils;
+import cn.cslg.pas.common.utils.FileUtils;
+import cn.cslg.pas.common.utils.FormatUtil;
 import cn.cslg.pas.common.utils.esDataForm.AddressSplitter;
 import cn.cslg.pas.common.utils.esDataForm.PatentClassifySplitter;
 import cn.cslg.pas.common.vo.ChinaPatentZhuLu;
@@ -10,14 +14,25 @@ import cn.cslg.pas.common.vo.PatentWithIdVO;
 import cn.cslg.pas.common.vo.StarPatentVO;
 import cn.cslg.pas.common.vo.WorldPatentZhuLu;
 import cn.cslg.pas.domain.es.*;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.service.business.es.EsService;
+import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.common.PatentStarApiService;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import lombok.RequiredArgsConstructor;
 import lombok.experimental.Accessors;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.XPath;
+import org.dom4j.io.SAXReader;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 
+import java.io.File;
+import java.io.Reader;
+import java.io.StringReader;
 import java.util.*;
 
 @Service
@@ -28,6 +43,8 @@ public class ImportSinglePatentService {
 
     @Autowired
     private EsService esService;
+    @Autowired
+    private FileManagerService fileManagerService;
 
     public StarPatentVO getPatentFromWeb(String patentNo) {
         StarPatentVO starPatentVO = null;
@@ -85,6 +102,12 @@ public class ImportSinglePatentService {
         return patent;
     }
 
+    /**
+     * 获得专利著录信息
+     *
+     * @param starPatentVO
+     * @return
+     */
     public Patent getPatentCataloguingFromWeb(StarPatentVO starPatentVO) {
         String patentZhuLuStr = "";
         if (starPatentVO.getApplicationNo().startsWith("CN")) {
@@ -215,15 +238,12 @@ public class ImportSinglePatentService {
             patent.setGrantNo(starPatentVO.getPublicAccreditNo());
         }
 
-        if(patent.getAppNo().startsWith("CN")){
+        if (patent.getAppNo().startsWith("CN")) {
             patent.setPatentNo(patent.getAppNo());
-        }
-        else {
-            if(patent.getPublicNo()!=null){
+        } else {
+            if (patent.getPublicNo() != null) {
                 patent.setPatentNo(patent.getPublicNo());
-            }
-            else if(patent.getGrantNo()!=null)
-            {
+            } else if (patent.getGrantNo() != null) {
                 patent.setPatentNo(patent.getGrantNo());
             }
         }
@@ -280,8 +300,7 @@ public class ImportSinglePatentService {
                 patentPeople.add(patentPerson);
             }
             patent.setRightHolder(patentPeople);
-        }
-        else if(patent.getApplicant()!=null){
+        } else if (patent.getApplicant() != null) {
             patent.setRightHolder(patent.getApplicant());
         }
 
@@ -372,7 +391,12 @@ public class ImportSinglePatentService {
         }
     }
 
-    // 装载世界专利
+    /**
+     * 装载世界专利著录
+     *
+     * @param worldPatentZhuLuStr
+     * @param patent
+     */
     private void loadWorldPatent(String worldPatentZhuLuStr, Patent patent) {
         String country = "";
         List<WorldPatentZhuLu> worldPatentZhuLus = JSON.parseArray(worldPatentZhuLuStr, WorldPatentZhuLu.class);
@@ -438,9 +462,9 @@ public class ImportSinglePatentService {
                 patentPeople.add(patentPerson);
             }
             patent.setApplicant(patentPeople);
-if(patent.getRightHolder()==null||patent.getRightHolder().size()==0){
-    patent.setRightHolder(patent.getApplicant());
-}
+            if (patent.getRightHolder() == null || patent.getRightHolder().size() == 0) {
+                patent.setRightHolder(patent.getApplicant());
+            }
         }
 
 
@@ -489,4 +513,236 @@ if(patent.getRightHolder()==null||patent.getRightHolder().size()==0){
 
     }
 
+
+    public void getFullXmlStr(Patent patent, StarPatentVO starPatentVO, List<Integer> contents) throws Exception {
+        String cnFullXmlStr = patentStarApiService.getCnFullXmlApi(starPatentVO.getRowApplicationNo());
+        if (contents.contains(3)) {
+            this.loadClaim(patent, cnFullXmlStr);
+        }
+        if (contents.contains(2)) {
+            this.loadFullText(patent, cnFullXmlStr);
+        }
+    }
+
+    //装载权利要求
+    private void loadClaim(Patent patent, String cnFullXmlStr) {
+        try {
+            if (cnFullXmlStr != null && cnFullXmlStr != "") {
+                SAXReader reader = new SAXReader();
+                reader.setEntityResolver(new IgnoreDTDEntityResolver());
+                Reader stringReader = new StringReader(cnFullXmlStr);
+                Document document = reader.read(stringReader);
+                XPath xpath = document.createXPath("//claim-text");
+                List<Element> element = (List<Element>) xpath.selectNodes(document);
+                if (element.size() == 0) {
+                    xpath = document.createXPath("//business:ClaimText");
+                    element = (List<Element>) xpath.selectNodes(document);
+                }
+                List<String> reClaims = new ArrayList<>();
+                element.forEach(item -> {
+                    String claim = item.getText();
+                    claim = claim.replaceAll("\r\n|\r|\n|\t| ", "");
+                    reClaims.add(claim);
+
+                });
+                String reClaim = "";
+                if (reClaims.size() != 0) {
+                    reClaim = cn.cslg.pas.common.utils.StringUtils.join(reClaims, "");
+                }
+                //装载权利要求原文
+                Text text = new Text();
+                text.setLanguage(patent.getAppCountry());
+                text.setTextContent(reClaim);
+                text.setIfOrigin(true);
+                patent.setClaim(Arrays.asList(text));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+    }
+
+    //装载说明书文档
+    private void loadFullText(Patent patent, String cnFullXmlStr) {
+        try {
+            //若没有取到全文文本,即取不到说明书文本,则将当前申请号或专利号和备注信息记录到问题记录表
+            if (cnFullXmlStr.equals("")) {
+                return;
+            }
+
+            SAXReader reader = new SAXReader();
+            reader.setEntityResolver(new IgnoreDTDEntityResolver());
+            Reader stringReader = new StringReader(cnFullXmlStr);
+            Document document = reader.read(stringReader);
+            XPath xpath = document.createXPath("//description//p");
+            List<Element> elements = (List<Element>) xpath.selectNodes(document);
+            if (elements.size() == 0) {
+                xpath = document.createXPath("//business:Description//base:Paragraphs");
+                elements = (List<Element>) xpath.selectNodes(document);
+            }
+            List<String> fullTexts = new ArrayList<>();
+            Integer count = 1;
+            for (Element item : elements) {
+                String fullText = item.getText().replaceAll("<br/>", "");
+                if (!fullText.trim().equals("技术领域")
+                        && !fullText.trim().equals("发明内容")
+                        && !fullText.trim().equals("附图说明")
+                        && !fullText.trim().equals("具体实施方式")
+                        && !fullText.trim().equals("背景技术")
+                        && !fullText.trim().equals("实用新型内容")) {
+                    String formattedNum = String.format("%04d", count);
+                    fullText = "[" + formattedNum + "]" + fullText;
+                    count++;
+                }
+                fullText = fullText.replaceAll("\r\n|\r|\n| ", "");
+                fullTexts.add(fullText);
+            }
+            String fullText = "";
+            if (fullTexts.size() != 0) {
+                fullText = cn.cslg.pas.common.utils.StringUtils.join(fullTexts, "");
+            }
+            Text text = new Text();
+            text.setIfOrigin(true);
+            text.setTextContent(fullText);
+            text.setLanguage(patent.getAppCountry());
+            patent.setPublicFullText(Arrays.asList(text));
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+    }
+
+    public void getPDFFromWeb(StarPatentVO starPatentVO) throws Exception {
+
+        String usedPatentNo;
+        if (starPatentVO.getPublicNo() != null && !starPatentVO.getPublicNo().equals("")) {
+            usedPatentNo = starPatentVO.getPublicNo();
+        } else {
+            usedPatentNo = starPatentVO.getPublicAccreditNo();
+        }
+
+        String pdfUrl = "", pdfUrl1 = "", pdfUrl2 = "";
+        //先根据公开号判断国家,若没有公开号再根据申请号判断,调用"获得中国专利pdf"接口,获得1个或2个pdf的url地址
+        if ((starPatentVO.getPublicNo() != null && starPatentVO.getPublicNo().contains("CN")) || (starPatentVO.getPublicNo() == null && starPatentVO.getPatentNo().contains("CN"))||(starPatentVO.getPublicAccreditNo() != null &&starPatentVO.getPublicAccreditNo().contains("CN")) ) {
+
+            String pdfUrlStr = patentStarApiService.getCnPdfApi(starPatentVO.getRowApplicationNo());
+
+            //若没有取到说明书pdf,则将当前申请号和备注信息存入问题记录表,并返回空对象
+            if (!pdfUrlStr.equals("")) {
+//                        recordQuestionPatent(starPatent.getApplicationNo(), task.getId(), 4);
+
+
+                if (pdfUrlStr.contains("|http")) {  //若包含公开和授权两个pdf
+                    String[] pdfUrlArr = pdfUrlStr.split("\\|http");
+                    pdfUrl1 = pdfUrlArr[0].substring(pdfUrlArr[0].indexOf("http"), pdfUrlArr[0].indexOf("?"));
+                    pdfUrlArr[1] = "http" + pdfUrlArr[1];
+                    pdfUrl2 = pdfUrlArr[1].substring(pdfUrlArr[1].indexOf("http"), pdfUrlArr[1].indexOf("?"));
+
+
+                    if (pdfUrl1.contains("0A_CN_0.pdf")) {
+                        String guid1 = FormatUtil.getPDFFormat(starPatentVO.getApplicationNo(), 0);
+                        File file1 = FileUtils.getFileByUrl(pdfUrl1);
+                        fileManagerService.uploadFileWithGuid(file1, guid1);
+                        String guid2 = FormatUtil.getPDFFormat(starPatentVO.getApplicationNo(), 1);
+                        File file2 = FileUtils.getFileByUrl(pdfUrl2);
+                        fileManagerService.uploadFileWithGuid(file2, guid2);
+                    } else {
+                        String guid1 = FormatUtil.getPDFFormat(starPatentVO.getApplicationNo(), 1);
+                        File file1 = FileUtils.getFileByUrl(pdfUrl1);
+                        fileManagerService.uploadFileWithGuid(file1, guid1);
+                        String guid2 = FormatUtil.getPDFFormat(starPatentVO.getApplicationNo(), 0);
+                        File file2 = FileUtils.getFileByUrl(pdfUrl2);
+                        fileManagerService.uploadFileWithGuid(file2, guid2);
+                    }
+                } else {  //若只有一个
+                    pdfUrl1 = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("?"));
+                    if (pdfUrl1.contains("0A_CN_0.pdf")) {
+                        String guid1 = FormatUtil.getPDFFormat(starPatentVO.getApplicationNo(), 0);
+                        File file1 = FileUtils.getFileByUrl(pdfUrl1);
+                        fileManagerService.uploadFileWithGuid(file1, guid1);
+                    } else {
+                        String guid1 = FormatUtil.getPDFFormat(starPatentVO.getApplicationNo(), 1);
+                        File file1 = FileUtils.getFileByUrl(pdfUrl1);
+                        fileManagerService.uploadFileWithGuid(file1, guid1);
+                    }
+                }
+                //根据专利号调用"获得世界专利pdf"接口,获得pdf的url地址
+            } else {
+                pdfUrl = patentStarApiService.getEnPdfApi(usedPatentNo);
+                //若没有取到说明书pdf,则将当前申请号和备注信息存入问题记录表,并返回空对象
+//                    if (pdfUrl.equals("") || pdfUrl.equals("{}")) {
+//                        recordQuestionPatent(starPatent.getApplicationNo(), task.getId(), 4);
+//                        return;
+//                    }
+                String guid1 = FormatUtil.getPDFFormat(starPatentVO.getApplicationNo(), 0);
+                File file1 = FileUtils.getFileByUrl(pdfUrl);
+                fileManagerService.uploadFileWithGuid(file1, guid1);
+
+            }
+        }
+    }
+
+    public void getPictureFromWeb(StarPatentVO starPatentVO) throws Exception {
+
+
+        String pictureUrl = patentStarApiService.getPictureApi(starPatentVO.getRowApplicationNo());
+        if (pictureUrl != null && pictureUrl != "{}") {
+            File file = FileUtils.getPictureFileByUrl(pictureUrl);
+            String guid = FormatUtil.getPictureFormat(starPatentVO.getApplicationNo());
+            fileManagerService.uploadFileWithGuid(file, guid);
+        }
+
+    }
+
+    /**
+     * 更新专利信息
+     *
+     * @param refreshPatentDTO
+     */
+    public Boolean refreshPatent(RefreshPatentDTO refreshPatentDTO) throws Exception {
+        String patentNo = refreshPatentDTO.getPatentNo();
+        List<Integer> contents = refreshPatentDTO.getRefreshContent();
+        if (patentNo == null) {
+            throw new XiaoShiException("请输入专利号");
+        }
+        if (contents == null || contents.size() == 0) {
+            throw new XiaoShiException("请选择导入内容");
+        }
+
+        PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(patentNo);
+        if (patentWithIdVO == null) {
+            throw new XiaoShiException("专利不存在");
+        }
+        StarPatentVO starPatentVO = this.getPatentFromWeb(patentNo);
+        if (starPatentVO == null) {
+            throw new XiaoShiException("未检索到专利");
+        }
+
+        Patent patent = new Patent();
+        //装载基本信息
+        if (contents.contains(1)) {
+            patent = this.getPatentCataloguingFromWeb(starPatentVO);
+        }
+        //装载权利要求
+        if (contents.contains(2) || contents.contains(3)) {
+            this.getFullXmlStr(patent, starPatentVO, contents);
+        }
+        //装载图片
+        if (contents.contains(4)) {
+            this.getPictureFromWeb(starPatentVO);
+        }
+        //装载pdf
+        if (contents.contains(5)) {
+            this.getPDFFromWeb(starPatentVO);
+        }
+
+        if (!ObjectUtils.isEmpty(patent)) {
+            esService.updatePatentShouldWait(patent, patentWithIdVO.getId());
+
+        }
+        return true;
+    }
 }

+ 3 - 1
src/test/java/cn/cslg/pas/service/EsServiceTests.java

@@ -57,7 +57,9 @@ public class EsServiceTests {
 
     @Test
     public void updatePatent() throws Exception {
-
+        Patent patent =new Patent();
+        patent.setAppNo("1111111111");
+       esService.updatePatent(patent,"oYVFzowBmzIo81_4q-kr");
     }
 
     @Test