zero 1 vuosi sitten
vanhempi
commit
8186dbdc3c

+ 0 - 2
src/main/java/cn/cslg/pas/Application.java

@@ -1,9 +1,7 @@
 package cn.cslg.pas;
 
-import cn.hutool.cron.CronUtil;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.system.ApplicationHome;
 import org.springframework.cache.annotation.EnableCaching;
 
 import java.text.SimpleDateFormat;

+ 5 - 0
src/main/java/cn/cslg/pas/common/dto/PatentColumnDTO.java

@@ -367,4 +367,9 @@ public class PatentColumnDTO {
     PatentJoin patentJoin;
 
    private String pictureGuid;
+
+    /**
+     * 法律事件
+     */
+    private List<LegalEvent> legalEvents;
 }

+ 3 - 0
src/main/java/cn/cslg/pas/common/vo/business/GetAllPersonVO.java

@@ -16,4 +16,7 @@ public class GetAllPersonVO {
     private Integer pageNum;
 
     private Integer pageSize;
+
+    //类型  0 申请人  1 权利人  2 发明人
+    private Integer type;
 }

+ 3 - 1
src/main/java/cn/cslg/pas/common/vo/business/MergePersonVO.java

@@ -2,6 +2,8 @@ package cn.cslg.pas.common.vo.business;
 
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class MergePersonVO {
     /**
@@ -26,7 +28,7 @@ public class MergePersonVO {
     /**
      * 被合并的名称
      */
-    private String mergedName;
+    private List<String> mergedName;
     /**
      * 简称
      */

+ 4 - 79
src/main/java/cn/cslg/pas/controller/PatentController.java

@@ -4,15 +4,11 @@ import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.dto.GetAllPersonDTO;
 import cn.cslg.pas.common.dto.PatentColumnDTO;
 import cn.cslg.pas.common.dto.PatentDetailDTO;
-import cn.cslg.pas.common.dto.PatentExport.PatentExportParams;
-import cn.cslg.pas.common.dto.PatentExport.TaskParams;
 import cn.cslg.pas.common.dto.PatentKinDTO;
 import cn.cslg.pas.common.dto.business.EsCountDTO;
 import cn.cslg.pas.common.dto.business.SelectClaimDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
-import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
-import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.vo.business.*;
 import cn.cslg.pas.common.vo.PatentPageMessageVO;
@@ -24,27 +20,16 @@ import cn.cslg.pas.common.vo.business.PatentKinVO;
 import cn.cslg.pas.common.vo.business.PatentNoVO;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.factorys.businessFactory.BusinessFactory;
-import cn.cslg.pas.service.business.PDFExportFirstPageService;
-import cn.cslg.pas.service.business.PatentExportService;
 import cn.cslg.pas.service.business.MergePersonService;
 import cn.cslg.pas.service.business.es.EsCountService;
 import cn.cslg.pas.service.business.es.EsPatentService;
 import cn.cslg.pas.service.business.es.EsService;
 import cn.cslg.pas.service.common.PatentStarApiService;
-import cn.hutool.core.util.IdUtil;
 import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.io.InputStreamResource;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
-import java.io.ByteArrayInputStream;
 import java.io.IOException;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-import java.util.Collections;
 import java.util.List;
 
 @RequestMapping(Constants.API_XiaoSHI + "/patent")
@@ -59,21 +44,15 @@ public class PatentController {
 
     @Autowired
     private EsPatentService patentService;
-    @Autowired
-    private EsService esService;
 
     @Autowired
     private MergePersonService mergePersonService;
 
     @Autowired
-    private PatentStarApiService patentStarApiService;
+    private EsService esService;
 
     @Autowired
-    private CacheUtils cacheUtils;
-    @Autowired
-    private PatentExportService patentExportService;
-    @Autowired
-    private PDFExportFirstPageService pdfExportFirstPageService;
+    private PatentStarApiService patentStarApiService;
 
     @Operation(summary = "查询专利")
     @PostMapping("/queryPatent")
@@ -130,6 +109,7 @@ public class PatentController {
             return Response.success(null);
         }
         return Response.success(starPatentVO);
+
     }
 
     @Operation(summary = "根据专利号查询内部权利要求")
@@ -142,7 +122,7 @@ public class PatentController {
     //------------------------合并-----------------------------
     @Operation(summary = "专利列表上新增发明人/权利人/申请人合并")
     @PostMapping("/mergePerson")
-    public Response mergePerson(@RequestBody MergePersonVO personVO) {
+    public Response mergePerson(@RequestBody MergePersonVO personVO) throws Exception {
         Integer personId = mergePersonService.mergePerson(personVO);
         return Response.success(personId);
     }
@@ -174,59 +154,4 @@ public class PatentController {
         Integer id = mergePersonService.delMergePerson(vo);
         return Response.success(id);
     }
-
-//    @GetMapping("/pdf")
-//    @Operation(summary = "导出专利")
-//    public ResponseEntity<InputStreamResource> pdf(Integer projectId) throws IOException {
-//        byte[] fileData = pdfExportFirstPageService.mergeAndExportPDFFirstPage(projectId);
-//        //保存生成excel的地址
-//        String fileName = "PDF.pdf";
-////        String fileName = IdUtil.simpleUUID() + ".xls";
-////        String directoryName = fileUtils.createDirectory();
-////        String savePath = fileUtils.getSavePath(directoryName);
-//        //文件原始名中的中文字符可能会乱码,对文件名进行URL编码
-//        String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
-//        return ResponseEntity.ok().contentLength(fileData.length)
-//                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + encodedFileName + "\"")
-//                .contentType(MediaType.parseMediaType("application/octet-stream"))
-//                .body(new InputStreamResource(new ByteArrayInputStream(fileData)));
-//    }
-
-    @GetMapping("/exportPDFFirstPage")
-    @Operation(summary = "导出专利")
-    public ResponseEntity<InputStreamResource> exportPDFFirstPage(Integer projectId) throws IOException {
-        byte[] fileData = pdfExportFirstPageService.mergeAndExportPDFFirstPage(projectId);
-        //保存生成excel的地址
-        String fileName = IdUtil.simpleUUID() + ".pdf";
-        //文件原始名中的中文字符可能会乱码,对文件名进行URL编码
-        String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
-        return ResponseEntity.ok().contentLength(fileData.length)
-                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + encodedFileName + "\"")
-                .contentType(MediaType.parseMediaType("application/octet-stream"))
-                .body(new InputStreamResource(new ByteArrayInputStream(fileData)));
-    }
-
-    @PostMapping("/export")
-    @Operation(summary = "导出专利")
-    public ResponseEntity<InputStreamResource> export(@RequestBody PatentExportParams params) throws IOException {
-        Integer taskId = 1;
-        TaskParams taskParams = new TaskParams();
-        taskParams.setTaskId(taskId);
-        taskParams.setTaskType(2);
-        taskParams.setProjectId(params.getProjectId());
-        taskParams.setSelected(JsonUtils.objectToJson(params.getSelected()));
-        taskParams.setCreateId("328");
-        byte[] fileData = patentExportService.exportPatent(taskParams);
-        //保存生成excel的地址
-        String fileName = "导出专利报表.xlsx";
-//        String fileName = IdUtil.simpleUUID() + ".xls";
-//        String directoryName = fileUtils.createDirectory();
-//        String savePath = fileUtils.getSavePath(directoryName);
-        //文件原始名中的中文字符可能会乱码,对文件名进行URL编码
-        String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
-        return ResponseEntity.ok().contentLength(fileData.length)
-                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + encodedFileName + "\"")
-                .contentType(MediaType.parseMediaType("application/octet-stream"))
-                .body(new InputStreamResource(new ByteArrayInputStream(fileData)));
-    }
 }

+ 104 - 18
src/main/java/cn/cslg/pas/service/business/MergePersonService.java

@@ -19,10 +19,12 @@ import cn.cslg.pas.domain.BaseEntity;
 import cn.cslg.pas.domain.business.FollowUp;
 import cn.cslg.pas.domain.business.MergePerson;
 import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.PatentMergePerson;
 import cn.cslg.pas.domain.es.PersonAddress;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.mapper.MergePersonMapper;
 import cn.cslg.pas.service.business.es.EsPatentService;
+import cn.cslg.pas.service.business.es.EsService;
 import cn.cslg.pas.service.query.FormatQueryService;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.PageUtil;
@@ -36,11 +38,13 @@ import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import co.elastic.clients.elasticsearch.core.SearchRequest;
 import co.elastic.clients.elasticsearch.core.SearchResponse;
 import co.elastic.clients.elasticsearch.core.search.Hit;
+import com.alibaba.fastjson.JSONArray;
 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 com.github.pagehelper.PageHelper;
+import com.google.gson.JsonArray;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -50,10 +54,8 @@ import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.io.IOException;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -75,9 +77,13 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
     private FormatQueryService formatQueryService;
     @Autowired
     private EsPatentService esPatentService;
+    @Autowired
+    private EsService esService;
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
-    public Integer mergePerson(MergePersonVO vo) {
+    public Integer mergePerson(MergePersonVO vo) throws IOException {
+        Integer type = vo.getType();
+        List<String> mergedNames = vo.getMergedName();
         //获取登陆人信息 用于设置创建人
         PersonnelVO personnelVO = new PersonnelVO();
         try {
@@ -91,7 +97,53 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         person.setCreateTime(new Date());
         person.insert();
         //todo  关联相关专利
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+
+        List<Query> queries = new ArrayList<>();
+        if (type == 0) {
+            for (String mergedName : mergedNames) {
+                Query q = QueryBuilders.term(i -> i.field("applicant.name").value(mergedName));
+                Query query = QueryBuilders.nested(i -> i.path("applicant").query(q));
+                queries.add(query);
+            }
+        } else {
+            for (String mergedName : mergedNames) {
+                Query q = QueryBuilders.term(i -> i.field("inventor.name").value(mergedName));
+                Query query = QueryBuilders.nested(i -> i.path("inventor").query(q));
+                queries.add(query);
+            }
+        }
+        Query query = QueryBuilders.bool(i -> i.should(queries));
+        builder.query(query);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        List<String> ids = new ArrayList<>();
+        Map<String, Patent> map = new HashMap<>();
+        for (Hit<Patent> hit : hits) {
+            String id = hit.id();
+            map.put(id, hit.source());
+        }
+
+        if (!CollectionUtils.isEmpty(ids)) {
+            List<PatentMergePerson> mergePersonList = new ArrayList<>();
+            PatentMergePerson mergePerson = new PatentMergePerson();
+            mergePerson.setName(vo.getName());
+            mergePerson.setProjectId(vo.getProjectId().toString());
+            mergePerson.setType("1");
+            mergePerson.setOrder(1);
+            mergePersonList.add(mergePerson);
+
+            for (String id : map.keySet()) {
+                Patent patent = map.get(id);
+                List<PatentMergePerson> mergeApplicant = patent.getMergeApplicant();
 
+                patent.setMergeApplicant(mergePersonList);
+                patent.setMergeRightHolder(mergePersonList);
+                esService.updateMergePerson(patent, id);
+            }
+        }
         return person.getId();
     }
 
@@ -146,8 +198,6 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         String searchCondition = "";
         Integer projectId = vo.getProjectId();
         Integer taskId = vo.getTaskId();
-        String name = vo.getName();
-        String field = vo.getField();
         Integer pageNum = vo.getPageNum();
         Integer pageSize = vo.getPageSize();
         if (taskId != null) {
@@ -172,19 +222,22 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         builder.query(q);
         SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
         List<Hit<Patent>> hits = response.hits().hits();
+        long total = response.hits().total().value();
         List<GetEsAllPersonDTO> personDTOS = new ArrayList<>();
         for (Hit<Patent> hit : hits) {
             Patent esMess = hit.source();
-            PersonAddress applicantAddr = esMess.getApplicantAddr();
+            PersonAddress applicantAddr = null;
             GetEsAllPersonDTO personDTO = new GetEsAllPersonDTO();
-            personDTO.setAddress(applicantAddr.getAddress());
-            personDTO.setCountry(applicantAddr.getCountry());
+            if (ObjectUtil.isNotEmpty(esMess.getApplicantAddr())) {
+                applicantAddr = esMess.getApplicantAddr();
+                personDTO.setAddress(applicantAddr.getAddress());
+                personDTO.setCountry(applicantAddr.getCountry());
+            }
             personDTO.setApplicant(esPatentService.loadName(esMess.getApplicant()));
             personDTO.setRightHolder(esPatentService.loadName(esMess.getRightHolder()));
             personDTO.setInventor(esPatentService.loadName(esMess.getInventor()));
             personDTOS.add(personDTO);
         }
-        List<GetAllPersonDTO> allPersonDTOS = new ArrayList<>();
         List<String> applicants = new ArrayList<>();
         List<String> inventors = new ArrayList<>();
         for (GetEsAllPersonDTO personDTO : personDTOS) {
@@ -193,24 +246,57 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         }
         List<String> applicantList = applicants.stream().distinct().collect(Collectors.toList());
         List<String> inventorList = inventors.stream().distinct().collect(Collectors.toList());
+
+        IPage<MergePerson> page = new Page<>(vo.getPageNum(), vo.getPageSize());
+        LambdaQueryWrapper<MergePerson> wrapper = new LambdaQueryWrapper<MergePerson>()
+                .eq(StringUtils.isNotEmpty(vo.getProjectId().toString()), MergePerson::getProjectId, vo.getProjectId());
+        IPage<MergePerson> record = mergePersonMapper.selectPage(page, wrapper);
+        List<String> applicantMergeList = new ArrayList<>();
+        List<String> inventorMergeList = new ArrayList<>();
+        for (MergePerson person : record.getRecords()) {
+            if (person.getType() == 0) {
+                applicantMergeList = JSONArray.parseArray(person.getMergedName(), String.class);
+            } else if (person.getType() == 2) {
+                inventorMergeList = JSONArray.parseArray(person.getMergedName(), String.class);
+            }
+        }
+        applicantList.removeAll(applicantMergeList);
+        inventorList.removeAll(inventorMergeList);
+        List<GetAllPersonDTO> applicantDTOS = new ArrayList<>();
+        List<GetAllPersonDTO> inventorDTOS = new ArrayList<>();
         for (String applicant : applicantList) {
             GetAllPersonDTO dto = new GetAllPersonDTO();
             dto.setName(applicant);
             dto.setType(0);
-            allPersonDTOS.add(dto);
+            applicantDTOS.add(dto);
         }
         for (String inventor : inventorList) {
             GetAllPersonDTO dto = new GetAllPersonDTO();
             dto.setName(inventor);
             dto.setType(2);
-            allPersonDTOS.add(dto);
+            inventorDTOS.add(dto);
         }
-//        List<GetAllPersonDTO> list = allPersonDTOS.stream().distinct().collect(Collectors.toList());
+
         Records records = new Records();
-//        records.setCurrent(queryRequest.getCurrent());
-//        records.setSize(queryRequest.getSize());
-//        records.setData(patentDTO.getPatents());
-//        records.setTotal(patentDTO.getTotal());
+        records.setCurrent(vo.getPageNum().longValue());
+        records.setSize(vo.getPageSize().longValue());
+        if (vo.getType() == 0) {
+            int size = applicantDTOS.size();
+            records.setData(applicantDTOS.stream().limit(vo.getPageSize()).collect(Collectors.toList()));
+            if (total >= size) {
+                records.setTotal((long)size);
+            } else {
+                records.setTotal(total);
+            }
+        } else if (vo.getType() == 2) {
+            int size = inventorDTOS.size();
+            records.setData(inventorDTOS.stream().limit(vo.getPageSize()).collect(Collectors.toList()));
+            if (total >= size) {
+                records.setTotal((long)size);
+            } else {
+                records.setTotal(total);
+            }
+        }
         return records;
     }
 

+ 1 - 1
src/main/java/cn/cslg/pas/service/business/es/EsCustomFieldService.java

@@ -248,7 +248,7 @@ public class EsCustomFieldService {
         if (!id.trim().equals("")) {
             Patent patent = patentWithIdVO.getPatent();
             patent.setESCustomField(esCustomField);
-            esService.updatePatent(patent, patentWithIdVO.getId());
+            esService.updateByQuery(patent, patentWithIdVO.getId());
             ESCustomFieldHistory esCustomFieldHistory = new ESCustomFieldHistory();
             esCustomFieldHistory.setField(fieldId);
             esCustomFieldHistory.setFieldType(fieldType);

+ 21 - 0
src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java

@@ -91,9 +91,30 @@ public class EsPatentService {
             }
         }
         dto.setPictureGuid(FormatUtil.getPictureFormat(dto.getAppNo()));
+        List<LegalEvent> legalEvents = this.getLegalEvents(dto.getPublicNo(), dto.getAppNo(), dto.getGrantNo());
+        dto.setLegalEvents(legalEvents);
         return dto;
     }
 
+    public List<LegalEvent> getLegalEvents(String publicNo, String appNo, String grantNo) throws IOException {
+        List<LegalEvent> events = new ArrayList<>();
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("legal_event");
+        Query q1 = QueryBuilders.term(i -> i.field("app_no").value(appNo));
+        Query q2 = QueryBuilders.term(i -> i.field("public_no").value(publicNo));
+//        Query q3 = QueryBuilders.term(i -> i.field("grant_no").value(grantNo));
+        Query query = QueryBuilders.bool(i -> i.must(q1, q2));
+        builder.query(query);
+        SearchResponse<LegalEvent> response = client.search(builder.build(), LegalEvent.class);
+        List<Hit<LegalEvent>> hits = response.hits().hits();
+        for (Hit<LegalEvent> hit : hits) {
+            LegalEvent event = hit.source();
+            events.add(event);
+        }
+        return events;
+    }
+
     //通用返回摘要、标题、权利要求具体内容
     public ContentVO loadContent(List<Text> list) {
         ContentVO contentVO = new ContentVO();

+ 90 - 0
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -23,6 +23,8 @@ 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.aggregations.*;
@@ -407,6 +409,7 @@ public class EsService {
         return list;
     }
 
+    //更新patent
     public Integer updatePatent(Patent patent, String id) {
         UpdateRequest<Patent, Patent> req;
         req = UpdateRequest.of(
@@ -421,6 +424,71 @@ public class EsService {
         }
     }
 
+    /*POST /patent/_update_by_query
+    {
+        "script": {
+        "source": "ctx._source.project_id = 1",
+                "lang": "painless"
+    },
+        "query": {
+        "term": {
+            "_id": "yYVNzowBmzIo81_44OnV"
+        }
+    }
+    }*/
+    //更新子文档
+    public Integer updateByQuery(Patent patent, String id) {
+        ESCustomField customField = patent.getESCustomField();
+        String valueField = "[";
+        List<String> fieldValueList = customField.getFieldValue();
+        if (!CollectionUtils.isEmpty(fieldValueList)) {
+            int lastSum = fieldValueList.size() - 1;
+            for (int i = 0; i < fieldValueList.size(); i++) {
+                String s = fieldValueList.get(i);
+                if (i == lastSum) {
+                    valueField = valueField + "\"" +s + "\""  ;
+                } else {
+                    valueField = valueField + "\"" +s + "\"" + "," ;
+                }
+            }
+        }
+        valueField = valueField + "]";
+
+        String valueStats = "[";
+        List<String> statsValueList = customField.getStatsValue();
+        if (!CollectionUtils.isEmpty(statsValueList)) {
+            int lastSum = statsValueList.size() - 1;
+            for (int i = 0; i < statsValueList.size(); i++) {
+                String s = statsValueList.get(i);
+                if (i == lastSum) {
+                    valueStats = valueStats + "\"" +s + "\""  ;
+                } else {
+                    valueStats = valueStats + "\"" +s + "\"" + "," ;
+                }
+            }
+        }
+        valueStats = valueStats + "]";
+
+        String projectId = "ctx._source.custom_field.project_id = " + customField.getProjectId() + ";" + "\n";
+        String field = "ctx._source.custom_field.field=" + customField.getField() + ";" + "\n";
+        String fieldType = "ctx._source.custom_field.field_type = " + customField.getFieldType() + ";" + "\n";
+        String personId = "ctx._source.custom_field.person_id = " + customField.getPersonId() + ";" + "\n";
+        String createTime = "ctx._source.custom_field.create_time = " + customField.getCreateTime().getTime() + ";" + "\n";
+        String fieldValue = "ctx._source.custom_field.field_value = " + valueField + ";" + "\n";
+        String statsValue = "ctx._source.custom_field.stats_value = " + valueStats;
+
+        String source = "\"\"\"" + projectId + field + fieldType + personId + createTime + fieldValue + statsValue  + "\n" + "\"\"\"";
+        InlineScript inlineScript = InlineScript.of(i -> i.lang("painless").source(source));
+        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));
+        try {
+            client.updateByQuery(request);
+            return 1;
+        } catch (IOException e) {
+            return -1;
+        }
+    }
 
     /**
      * @param key
@@ -980,6 +1048,28 @@ public class EsService {
         }
         return dto;
     }
+
+    /**
+     * 更新合并申请人/权利人/发明人
+     * @param patent
+     * @param id
+     * @return
+     */
+    public Integer updateMergePerson(Patent patent, String id) {
+        UpdateRequest<Patent, Patent> req;
+        req = UpdateRequest.of(
+                b -> b.index("patent")
+                        .id(id)
+                        .doc(patent)
+                        .docAsUpsert(true)
+        );
+        try {
+            client.update(req, Patent.class);
+            return 1;
+        } catch (IOException e) {
+            return -1;
+        }
+    }
 }
 
 

+ 27 - 4
src/test/java/cn/cslg/pas/service/EventServiceTests.java

@@ -376,10 +376,33 @@ public class EventServiceTests {
 
     @Test
     public void aaaaa() throws Exception {
-        String s = "C07K14/135;C12N15/45;A61K39/155;A61P31/14;C12R1/93";
-        String[] split = s.split(";");
-        for (String s1 : split) {
-            System.out.println(s1);
+        List<String> list = Arrays.asList("");
+        String str = "[";
+        if (list.size() >= 1) {
+            for (int i = 0; i < list.size(); i++) {
+                String s = list.get(i);
+                if (i == list.size() - 1) {
+                    str = str + "\"" +s + "\""  ;
+                } else {
+                    str = str + "\"" +s + "\"" + "," ;
+                }
+            }
+        } else {
+
         }
+        str = str + "]";
+        System.out.println(str + "------------");
+        String projectId = "ctx._source.custom_field.project_id = " + 1 + ";" + "\n";
+        String field = "ctx._source.custom_field.field=" + 1 + ";" + "\n";
+        String fieldType = "ctx._source.custom_field.field_type = " + 1 + ";" + "\n";
+        String personId = "ctx._source.custom_field.person_id = " + 1 + ";" + "\n";
+        String createTime = "ctx._source.custom_field.create_time = " + new Date().getTime() + ";" + "\n";
+        String fieldValue = "ctx._source.custom_field.field_value = " + str + ";" + "\n";
+        String statsValue = "ctx._source.custom_field.stats_value = " + list + ";";
+
+        String source = "\"\"" + projectId + field + fieldType + personId + createTime + fieldValue + statsValue + "\"\"";
+//        String source = "\"\"ctx._source.custom_field.project_id = " + 1 + ";" + "\n" +
+//                "ctx._source.custom_field.field=" + 2 + ";" + "\n" + "\"\"";
+        System.out.println(source);
     }
 }