فهرست منبع

分享报告或专题库/批注库修改

lwhhszx 1 سال پیش
والد
کامیت
cce0bd42d8
20فایلهای تغییر یافته به همراه525 افزوده شده و 180 حذف شده
  1. 11 0
      src/main/java/cn/cslg/pas/common/dto/AddProjectPersonDTO.java
  2. 12 0
      src/main/java/cn/cslg/pas/common/dto/QueryProjectPersonDTO.java
  3. 1 1
      src/main/java/cn/cslg/pas/common/dto/QueryScratchWordsDTO.java
  4. 34 0
      src/main/java/cn/cslg/pas/common/vo/ProjectPersonVO.java
  5. 89 0
      src/main/java/cn/cslg/pas/controller/ProjectShareController.java
  6. 29 0
      src/main/java/cn/cslg/pas/controller/ReportDocumentController.java
  7. 1 1
      src/main/java/cn/cslg/pas/controller/ScratchWordsController.java
  8. 1 1
      src/main/java/cn/cslg/pas/domain/business/AssoProjectPerson.java
  9. 7 6
      src/main/java/cn/cslg/pas/domain/es/Marking.java
  10. 1 5
      src/main/java/cn/cslg/pas/domain/es/Patent.java
  11. 82 83
      src/main/java/cn/cslg/pas/service/ReportExportService.java
  12. 138 0
      src/main/java/cn/cslg/pas/service/business/AssoProjectPersonService.java
  13. 10 12
      src/main/java/cn/cslg/pas/service/business/ScratchWordsService.java
  14. 1 0
      src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java
  15. 69 61
      src/main/java/cn/cslg/pas/service/business/es/EsScratchWordsService.java
  16. 20 0
      src/main/java/cn/cslg/pas/service/permissions/PermissionService.java
  17. 4 2
      src/main/resources/jsons/event.json
  18. 4 2
      src/main/resources/jsons/patentDigProject.json
  19. 4 2
      src/main/resources/jsons/patentProject.json
  20. 7 4
      src/main/resources/jsons/reportProject.json

+ 11 - 0
src/main/java/cn/cslg/pas/common/dto/AddProjectPersonDTO.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AddProjectPersonDTO {
+    private List<String> personIds;
+    private Integer projectId;
+}

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

@@ -0,0 +1,12 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+import org.junit.Test;
+
+@Data
+public class QueryProjectPersonDTO {
+    private Integer projectId;
+    private  String personName;
+    private Long size;
+    private Long current;
+}

+ 1 - 1
src/main/java/cn/cslg/pas/common/dto/QueryScratchWordsDTO.java

@@ -17,6 +17,6 @@ public class QueryScratchWordsDTO {
     private String markSelectText;
     private Long current;
     private Long size;
-
+    private Integer projectId;
 
     }

+ 34 - 0
src/main/java/cn/cslg/pas/common/vo/ProjectPersonVO.java

@@ -0,0 +1,34 @@
+package cn.cslg.pas.common.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import org.joda.time.DateTime;
+
+import java.util.Date;
+
+@Data
+public class ProjectPersonVO {
+
+    /**
+     * 人员id
+     */
+    private String personId;
+
+    private String personName;
+    /**
+     * 人员角色
+     * 0管理员1查看人员2禁止查看人员3分享人员
+     */
+    private Integer role;
+
+    /**
+     * 创建人id
+     */
+    private String createId;
+    private String createName;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+}

+ 89 - 0
src/main/java/cn/cslg/pas/controller/ProjectShareController.java

@@ -0,0 +1,89 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.AddProjectPersonDTO;
+import cn.cslg.pas.common.dto.QueryProjectPersonDTO;
+import cn.cslg.pas.common.dto.business.AvoidDesignInsertDTO;
+import cn.cslg.pas.common.dto.business.GetFeatureSplitDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.business.AvoidDesignWholeVO;
+import cn.cslg.pas.exception.ConditionException;
+import cn.cslg.pas.exception.UnLoginException;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.service.business.AssoProjectPersonService;
+import cn.cslg.pas.service.business.AvoidDesignService;
+import cn.cslg.pas.service.business.AvoidDesignWholeService;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 项目分享管理
+ *
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/patentShare")
+@RestController
+public class ProjectShareController {
+    @Autowired
+    private AssoProjectPersonService assoProjectPersonService;
+
+
+    @Operation(summary = "新增项目分享")
+    @PostMapping("/addProjectShare")
+    public Response addProjectShare(@RequestBody AddProjectPersonDTO addProjectPersonDTO) throws Exception {
+        if (addProjectPersonDTO == null) {
+            return Response.error("入参为null");
+        }
+            Records records =new Records();
+            try {
+              List<Integer>  ids = assoProjectPersonService.addProjectShare(addProjectPersonDTO);
+              records.setData(ids);
+            }
+            catch (Exception e) {
+                return Response.error(e.getMessage());
+          }
+            return Response.success(records);
+
+    }
+
+    @Operation(summary = "删除分享记录")
+    @PostMapping("/removeProjectShare")
+    public Response removeProjectShare(@RequestBody List<Integer> ids) throws Exception {
+        Records records = new Records();
+        try {
+            List<Integer> reIds = assoProjectPersonService.removeProjectShare(ids);
+            records.setData(reIds);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+
+        }
+
+        return Response.success(records);
+    }
+
+
+    @Operation(summary = "查询分享记录")
+    @PostMapping("/queryProjectShare")
+    public Response queryProjectShare(@RequestBody QueryProjectPersonDTO queryProjectPersonDTO) throws Exception {
+        Records records = new Records();
+        try {
+            records = assoProjectPersonService.queryProjectShare(queryProjectPersonDTO);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+
+        }
+
+        return Response.success(records);
+    }
+}

+ 29 - 0
src/main/java/cn/cslg/pas/controller/ReportDocumentController.java

@@ -0,0 +1,29 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.service.ReportExportService;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.extern.slf4j.Slf4j;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/reportDocument")
+@RestController
+public class ReportDocumentController {
+    @Autowired
+    private ReportExportService reportExportService;
+    @GetMapping(value = "/exportReport")
+    @Operation(summary = "导出报告")
+    public Response exportReport(Integer projectId, Integer templeId) throws IOException {
+        Records records =new Records();
+        String guid =reportExportService.exportReport(projectId, templeId);
+        records.setData(guid);
+        return Response.success(records);
+    }
+}

+ 1 - 1
src/main/java/cn/cslg/pas/controller/ScratchWordsController.java

@@ -57,7 +57,7 @@ public class ScratchWordsController {
 
     @Operation(summary = "删除标注")
     @PostMapping("/removeScratchWords")
-    public Response removeScratchWrods(@RequestBody List<String> ids) {
+    public Response removeScratchWords(@RequestBody List<String> ids) {
         if (ids != null && !ids.isEmpty()) {
             List<String> deleteIds = scratchWordsService.removeById(ids);
             Records records = new Records();

+ 1 - 1
src/main/java/cn/cslg/pas/domain/business/AssoProjectPerson.java

@@ -16,7 +16,7 @@ import org.joda.time.DateTime;
 public class AssoProjectPerson extends BaseEntity<AssoProjectPerson> {
 
     /**
-     * 产品id
+     * 项目id
      */
     @TableField(value = "project_id")
     private Integer projectId;

+ 7 - 6
src/main/java/cn/cslg/pas/domain/es/Marking.java

@@ -26,13 +26,13 @@ public class Marking {
     /**
      * 标注颜色
      */
-    @JsonProperty("mark_Color")
+    @JsonProperty("mark_color")
     private  String markColor;
 
     /**
      * 标注备注
      */
-    @JsonProperty("mark_noteText")
+    @JsonProperty("mark_note_text")
     private String markOteText;
 
     /**
@@ -44,13 +44,13 @@ public class Marking {
     /**
      * 标注栏位
      */
-    @JsonProperty("mark_selectField")
+    @JsonProperty("mark_select_field")
     private String markSelectField;
 
     /**
      * 标注选择文本
      */
-    @JsonProperty("mark_selectText")
+    @JsonProperty("mark_select_text")
     private  String markSelectText;
 
     @JsonProperty("mark_site")
@@ -75,7 +75,7 @@ public class Marking {
     private Integer publicScope;
 
     /**
-     * 标注专利数据库id/报告id
+     * 标注专利数据库id/报告id/0接口检索/-1本地检索
      */
     @JsonProperty("public_project_id")
     private Integer projectId;
@@ -85,5 +85,6 @@ public class Marking {
      */
     @JsonProperty("public_tenant_id")
     private Integer publicTenantId;
-
+  @JsonProperty("patent_no")
+  private String patentNo;
 }

+ 1 - 5
src/main/java/cn/cslg/pas/domain/es/Patent.java

@@ -414,11 +414,7 @@ public class Patent {
     @JsonProperty("legal_status")
     List<String> legalStatus;
 
-    /**
-     * 标注
-     */
-    @JsonProperty("markings")
-    Marking markings;
+
     @JsonProperty("patent_join")
     PatentJoin patentJoin;
 

+ 82 - 83
src/main/java/cn/cslg/pas/service/ReportExportService.java

@@ -98,15 +98,14 @@ public class ReportExportService {
             throw new XiaoShiException("报告不存在");
         }
         XWPFTemplate template = null;
-        template = this.avoidDesignTemplate(projectId);
         if (report.getReportType() == 0 || report.getReportType() == 2) {
 //           template = this.getstabilityTemplate(report, filePath);
         } else if (report.getReportType() == 3) {
             template = this.FTOTemplate(projectId, templateFilePath, templeId);
         } else if (report.getReportType() == 4) {
-//         template = this.Torttemplate(reportId, filePath, templeId);
+         template = this.Torttemplate(projectId, templateFilePath);
         } else if (report.getReportType() == 5) {
-//           template = this.avoidDesignTemplate(reportId, filePath);
+         template = this.avoidDesignTemplate(projectId, templateFilePath);
         } else if (report.getReportType() == 1) {
 //          template = this.getThirdTemplate(report, filePath);
         }
@@ -137,89 +136,89 @@ public class ReportExportService {
         if (file.exists()) {
             file.delete();
         }
-        return "";
+        return ids.get(0);
     }
 
 
-//    private XWPFTemplate Torttemplate(Integer reportId, String filePath, Integer templateId) throws IOException {
-//        //根据报告Id查询标的专利号
-//        ReportProject report = reportProjectService.getById(reportId);
-//        String patentNo = report.getSignPatentNo();
-////        PatentVO patentVO = new PatentVO();
-////        patentVO.setPatentNos(Arrays.asList(patentNo));
-////        //根据专利号查询专利详细信息
-////        String resBody = outInterfaceService.getPatentDTOListForRMS(patentVO);
-////        JSONObject jsonObject = JSONObject.parseObject(resBody);
-////        List<JSONObject> patentDTOS = JSON.parseArray(jsonObject.get("data").toString(), JSONObject.class);
-////        //装载单个专利的信息
-//        Map<String, Object> patentMap = new HashMap<>();
-////        JSONObject patent = patentDTOS.get(0);
-////        List<JSONObject> applicantJSONs = JSON.parseArray(patent.get("applicant").toString(), JSONObject.class);
-////        StringBuilder applicants = new StringBuilder();
-////        StringBuilder rightPerson = new StringBuilder();
-////        applicantJSONs.forEach(tem -> {
-////            if (Integer.parseInt(tem.get("dataType").toString()) == 1) {
-////                applicants.append(tem.get("name") + "\r");
-////            } else {
-////                rightPerson.append(tem.get("name") + "\r");
-////            }
-////        });
-////        //装载同族信息
-////        JSONObject familys = JSONObject.parseObject(patent.get("family").toString());
-////        List<String> patSnaps = JSON.parseArray(familys.get("patSnap").toString(), String.class);
-////        List<String> simples = JSON.parseArray(familys.get("simple").toString(), String.class);
-////        List<String> inpadocs = JSON.parseArray(familys.get("inpadoc").toString(), String.class);
-////        patSnaps.addAll(simples);
-////        patSnaps.addAll(inpadocs);
-////        String familyStr = StringUtils.join(patSnaps, ",");
-////        //装载法律状态
-////        StringBuilder affair = new StringBuilder();
-////        List<JSONObject> affaires = JSON.parseArray(patent.get("affair").toString(), JSONObject.class);
-////        affaires.forEach(item -> {
-////                    affair.append(item.get("status") + "\r");
-////                }
-////        );
-////        //同族专利
-////        patentMap.put("simpleFamilys", familyStr);
-////        //引用专利
-////        patentMap.put("quotePatents", patent.get("quote"));
-////        //申请日
-////        patentMap.put("applicationDate", patent.get("applicationDate"));
-////        //公开日
-////        patentMap.put("publicDate", patent.get("publicDate"));
-////        //专利号
-////        patentMap.put("publicNo", patent.get("publicNo"));
-////        patentMap.put("firstPublicDate", patent.get("firstPublicDate"));
-////        patentMap.put("applicant", applicants);
-////        patentMap.put("rightPerson", rightPerson);
-////        patentMap.put("affair", affair);
-////        patentMap.put("name", patent.get("name"));
-//        //图示
-//        patentMap.put("abstractPath", "");
-//        //获得专利对比记录的信息
-////        Map<String, Object> temMap = compareMessageService.queryforTemplate(patent.get("patentNo").toString(), reportId);
-////        List<CompareMessageVO> compareMessageVOS = (List<CompareMessageVO>) temMap.get("compareMessageVOs");
-//        //装载对比记录的信息
-////        patentMap.put("cM", compareMessageVOS);
-////        patentMap.put("rightNum", temMap.get("right"));
-////        patentMap.put("mainRightNum", temMap.get("mainRight"));
-//        Map<String, Object> map = new HashMap<>();
-//        String date = DateUtils.formatDate(new Date(), DateUtils.YYYY_MM_DD);
-//        String[] ds = date.split("-");
-//        map.put("sys", new SystemMO(ds[0], ds[1], ds[2], "", "reportName"));
-//        map.put("patentMap", patentMap);
-//        map.put("", patentNo);
-//        // 为表格的显示绑定行循环
-//        LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
-//        HtmlRenderPolicy htmlRenderPolicy = new HtmlRenderPolicy();
-//        // 将bz设置为行循环绑定的数据源的key,即key是bz的value会在模板中的{{bz}}处进行解析
-//        Configure configure = Configure.builder().bind("cM", policy).bind("targetDescription", htmlRenderPolicy).build();
-//        XWPFTemplate template = XWPFTemplate.compile(filePath, configure).render(map);
-//        return template;
-//    }
-
-    private XWPFTemplate avoidDesignTemplate(Integer projectId) throws IOException {
-        String filePath = fileUtils.getPath("/11.docx");
+    private XWPFTemplate Torttemplate(Integer reportId, String filePath) throws IOException {
+        //根据报告Id查询标的专利号
+        ReportProject report = reportProjectService.getById(reportId);
+        String patentNo = report.getSignPatentNo();
+//        PatentVO patentVO = new PatentVO();
+//        patentVO.setPatentNos(Arrays.asList(patentNo));
+//        //根据专利号查询专利详细信息
+//        String resBody = outInterfaceService.getPatentDTOListForRMS(patentVO);
+//        JSONObject jsonObject = JSONObject.parseObject(resBody);
+//        List<JSONObject> patentDTOS = JSON.parseArray(jsonObject.get("data").toString(), JSONObject.class);
+//        //装载单个专利的信息
+        Map<String, Object> patentMap = new HashMap<>();
+//        JSONObject patent = patentDTOS.get(0);
+//        List<JSONObject> applicantJSONs = JSON.parseArray(patent.get("applicant").toString(), JSONObject.class);
+//        StringBuilder applicants = new StringBuilder();
+//        StringBuilder rightPerson = new StringBuilder();
+//        applicantJSONs.forEach(tem -> {
+//            if (Integer.parseInt(tem.get("dataType").toString()) == 1) {
+//                applicants.append(tem.get("name") + "\r");
+//            } else {
+//                rightPerson.append(tem.get("name") + "\r");
+//            }
+//        });
+//        //装载同族信息
+//        JSONObject familys = JSONObject.parseObject(patent.get("family").toString());
+//        List<String> patSnaps = JSON.parseArray(familys.get("patSnap").toString(), String.class);
+//        List<String> simples = JSON.parseArray(familys.get("simple").toString(), String.class);
+//        List<String> inpadocs = JSON.parseArray(familys.get("inpadoc").toString(), String.class);
+//        patSnaps.addAll(simples);
+//        patSnaps.addAll(inpadocs);
+//        String familyStr = StringUtils.join(patSnaps, ",");
+//        //装载法律状态
+//        StringBuilder affair = new StringBuilder();
+//        List<JSONObject> affaires = JSON.parseArray(patent.get("affair").toString(), JSONObject.class);
+//        affaires.forEach(item -> {
+//                    affair.append(item.get("status") + "\r");
+//                }
+//        );
+//        //同族专利
+//        patentMap.put("simpleFamilys", familyStr);
+//        //引用专利
+//        patentMap.put("quotePatents", patent.get("quote"));
+//        //申请日
+//        patentMap.put("applicationDate", patent.get("applicationDate"));
+//        //公开日
+//        patentMap.put("publicDate", patent.get("publicDate"));
+//        //专利号
+//        patentMap.put("publicNo", patent.get("publicNo"));
+//        patentMap.put("firstPublicDate", patent.get("firstPublicDate"));
+//        patentMap.put("applicant", applicants);
+//        patentMap.put("rightPerson", rightPerson);
+//        patentMap.put("affair", affair);
+//        patentMap.put("name", patent.get("name"));
+        //图示
+        patentMap.put("abstractPath", "");
+        //获得专利对比记录的信息
+//        Map<String, Object> temMap = compareMessageService.queryforTemplate(patent.get("patentNo").toString(), reportId);
+//        List<CompareMessageVO> compareMessageVOS = (List<CompareMessageVO>) temMap.get("compareMessageVOs");
+        //装载对比记录的信息
+//        patentMap.put("cM", compareMessageVOS);
+//        patentMap.put("rightNum", temMap.get("right"));
+//        patentMap.put("mainRightNum", temMap.get("mainRight"));
+        Map<String, Object> map = new HashMap<>();
+        String date = DateUtils.formatDate(new Date(), DateUtils.YYYY_MM_DD);
+        String[] ds = date.split("-");
+        map.put("sys", new SystemMO(ds[0], ds[1], ds[2], "", "reportName"));
+        map.put("patentMap", patentMap);
+        map.put("", patentNo);
+        // 为表格的显示绑定行循环
+        LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
+        HtmlRenderPolicy htmlRenderPolicy = new HtmlRenderPolicy();
+        // 将bz设置为行循环绑定的数据源的key,即key是bz的value会在模板中的{{bz}}处进行解析
+        Configure configure = Configure.builder().bind("cM", policy).bind("targetDescription", htmlRenderPolicy).build();
+        XWPFTemplate template = XWPFTemplate.compile(filePath, configure).render(map);
+        return template;
+    }
+
+    private XWPFTemplate avoidDesignTemplate(Integer projectId,String path) throws IOException {
+        String filePath = fileUtils.getPath(path);
 
         log.info("开始处理导出规避设计报告,参数为:{}, {}", projectId, filePath);
         LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();

+ 138 - 0
src/main/java/cn/cslg/pas/service/business/AssoProjectPersonService.java

@@ -1,17 +1,155 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.AddProjectPersonDTO;
+import cn.cslg.pas.common.dto.QueryProjectPersonDTO;
+import cn.cslg.pas.common.model.cronModel.Personnel;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.vo.ProjectPersonVO;
 import cn.cslg.pas.domain.business.AssoProductPerson;
 import cn.cslg.pas.domain.business.AssoProjectPerson;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.AssoProductPersonMapper;
 import cn.cslg.pas.mapper.AssoProjectPersonMapper;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 项目与可见人员关联表Service层
+ *
  * @Author lrj
  * @Date 2023/11/10
  */
 @Service
 public class AssoProjectPersonService extends ServiceImpl<AssoProjectPersonMapper, AssoProjectPerson> {
+    @Autowired
+    private PermissionService permissionService;
+
+    /**
+     * 添加分享人
+     *
+     * @param addProjectPersonDTO
+     * @return
+     */
+    public List<Integer> addProjectShare(AddProjectPersonDTO addProjectPersonDTO) {
+        List<Integer> reIds = new ArrayList<>();
+        List<String> personIds = addProjectPersonDTO.getPersonIds();
+        Integer projectId = addProjectPersonDTO.getProjectId();
+        //根据ids查询是否存在
+        LambdaQueryWrapper<AssoProjectPerson> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.select(AssoProjectPerson::getPersonId);
+        queryWrapper.in(AssoProjectPerson::getPersonId, personIds);
+        List<AssoProjectPerson> assoProjectPersonList = this.list(queryWrapper);
+        List<String> ids = assoProjectPersonList.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
+        if (ids != null) {
+            personIds.removeAll(ids);
+        }
+        if (personIds.size() != 0) {
+            for (String personId : personIds) {
+                AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
+                assoProjectPerson.setProjectId(projectId);
+                assoProjectPerson.setPersonId(personId);
+                assoProjectPerson.insert();
+                reIds.add(assoProjectPerson.getId());
+            }
+        }
+        return reIds;
+    }
+
+    /**
+     * 批量删除分享记录
+     *
+     * @param ids
+     * @return
+     */
+    public List<Integer> removeProjectShare(List<Integer> ids) {
+        if (ids == null || ids.size() == 0) {
+            throw new XiaoShiException("请选择分享记录");
+        }
+        this.removeBatchByIds(ids);
+        return ids;
+    }
+
+    /**
+     * 查询分享记录
+     *
+     * @param queryProjectPersonDTO
+     * @return
+     */
+    public Records queryProjectShare(QueryProjectPersonDTO queryProjectPersonDTO) {
+        Records records = new Records();
+        Integer projectId = queryProjectPersonDTO.getProjectId();
+        String personName = queryProjectPersonDTO.getPersonName();
+        Long current = queryProjectPersonDTO.getCurrent();
+        Long size = queryProjectPersonDTO.getSize();
+        LambdaQueryWrapper<AssoProjectPerson> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AssoProjectPerson::getProjectId, projectId);
+        List<String> ids = new ArrayList<>();
+        if (personName != null && personName.trim() != "") {
+            ids = permissionService.getPersonIdsByName(personName);
+        }
+        if (ids.size() != 0) {
+            queryWrapper.in(AssoProjectPerson::getProjectId, ids);
+        }
+        Page<AssoProjectPerson> page = this.page(new Page<>(current, size), queryWrapper);
+
+        List<AssoProjectPerson> assoProjectPersonList = page.getRecords();
+        List<ProjectPersonVO> projectPersonVOS = this.loadData(assoProjectPersonList);
+        records.setData(projectPersonVOS);
+        records.setTotal(page.getTotal());
+        records.setCurrent(current);
+        records.setSize(size);
+        return records;
+    }
+
+    private List<ProjectPersonVO> loadData(List<AssoProjectPerson> assoProjectPersonList) {
+
+        List<ProjectPersonVO> projectPersonVOS = new ArrayList<>();
+        if (assoProjectPersonList == null || assoProjectPersonList.size() == 0) {
+            return projectPersonVOS;
+        }
+        List<String> personIds = new ArrayList<>();
+        assoProjectPersonList.forEach(item -> {
+            if (item.getPersonId() != null) {
+                personIds.add(item.getPersonId());
+            }
+            if (item.getCreateId() != null) {
+                personIds.add(item.getCreateId());
+            }
+        });
+        List<Personnel> personnels = new ArrayList<>();
+        if (personIds.size() != 0) {
+            try {
+                String res = permissionService.getPersonnelByIdsFromPCS(personIds);
+                JSONObject jsonObject = JSONObject.parseObject(res);
+                personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+            } catch (Exception e) {
+
+            }
+        }
+        for (AssoProjectPerson assoProjectPerson : assoProjectPersonList) {
+            ProjectPersonVO projectPersonVO = new ProjectPersonVO();
+            Personnel personnel1 = personnels.stream().filter(item -> item.getId().equals(assoProjectPerson.getPersonId())).findFirst().orElse(null);
+            Personnel personnel2 = personnels.stream().filter(item -> item.getId().equals(assoProjectPerson.getCreateId())).findFirst().orElse(null);
+            BeanUtils.copyProperties(assoProjectPerson, projectPersonVO);
+            if (personnel1 != null) {
+                projectPersonVO.setPersonName(personnel1.getPersonnelName());
+            }
+            if (personnel2 != null) {
+                projectPersonVO.setCreateName(personnel2.getPersonnelName());
+            }
+            projectPersonVOS.add(projectPersonVO);
+        }
+        return projectPersonVOS;
+    }
 }

+ 10 - 12
src/main/java/cn/cslg/pas/service/business/ScratchWordsService.java

@@ -52,8 +52,6 @@ public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, Scratch
      * @param scratchWords
      */
     public String add(ScratchWords scratchWords) {
-
-        scratchWords = new ScratchWords();
         //获取当前登陆人信息
         PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         if (personnelVO != null) {
@@ -93,7 +91,9 @@ public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, Scratch
 
         Records records = esScratchWordsService.queryScratchWord(queryScratchWordsDTO);
         List<ScratchWordsVO> scratchWordsVOS = (List<ScratchWordsVO>) records.getData();
-        this.loadData(scratchWordsVOS);
+        if(scratchWordsVOS!=null) {
+            this.loadData(scratchWordsVOS);
+        }
         records.setData(scratchWordsVOS);
         records.setSize(queryScratchWordsDTO.getSize());
         records.setCurrent(queryScratchWordsDTO.getCurrent());
@@ -121,10 +121,10 @@ public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, Scratch
 
     private void loadData(List<ScratchWordsVO> scratchWordsVOS) {
         List<String> ids = scratchWordsVOS.stream().map(ScratchWordsVO::getMarkUserId).collect(Collectors.toList());
-        List<String> patentIds = scratchWordsVOS.stream().map(ScratchWordsVO::getPatentId).collect(Collectors.toList());
+        List<String> patentNos = scratchWordsVOS.stream().map(ScratchWordsVO::getPatentNo).collect(Collectors.toList());
         //查询创建人名称
         List<Personnel> personnels = new ArrayList<>();
-        List<Hit<Patent>> patents = new ArrayList<>();
+        List<Patent> patents = new ArrayList<>();
         if (ids.size() != 0) {
             try {
                 String res = permissionService.getPersonnelByIdsFromPCS(ids);
@@ -134,9 +134,9 @@ public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, Scratch
 
             }
         }
-        if (patentIds.size() != 0) {
+        if (patentNos.size() != 0) {
             try {
-                patents = esPatentService.getById(patentIds);
+                patents = esPatentService.getPatentsByNo(patentNos,false,null,null);
             } catch (Exception e) {
 
             }
@@ -148,12 +148,10 @@ public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, Scratch
                 scratchWordsVO.setCreateName(personnel.getPersonnelName());
             }
 
-            Hit<Patent> patentHit = patents.stream().filter(item -> item.id().equals(scratchWordsVO.getPatentId())).findFirst().orElse(null);
-            if (patentHit != null) {
-                Patent patent = patentHit.source();
-                scratchWordsVO.setPatentNo(patent.getPatentNo());
+           Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(scratchWordsVO.getPatentNo())).findFirst().orElse(null);
+            if (patent != null) {
                 if (patent.getTitle() != null && patent.getTitle().size() > 0) {
-                    scratchWordsVO.setTitle(patentHit.source().getTitle().get(0).getTextContent());
+                    scratchWordsVO.setTitle(patent.getTitle().get(0).getTextContent());
                 }
 
             }

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

@@ -354,6 +354,7 @@ public class EsPatentService {
         rePatentSource.add("public_date");
         rePatentSource.add("grant_no");
         rePatentSource.add("grant_date");
+        rePatentSource.add("title");
         return rePatentSource;
     }
 

+ 69 - 61
src/main/java/cn/cslg/pas/service/business/es/EsScratchWordsService.java

@@ -16,9 +16,7 @@ import cn.cslg.pas.service.permissions.PermissionService;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
-import co.elastic.clients.elasticsearch.core.DeleteResponse;
-import co.elastic.clients.elasticsearch.core.SearchRequest;
-import co.elastic.clients.elasticsearch.core.SearchResponse;
+import co.elastic.clients.elasticsearch.core.*;
 import co.elastic.clients.elasticsearch.core.search.Hit;
 import co.elastic.clients.json.JsonData;
 import com.alibaba.fastjson.JSON;
@@ -64,15 +62,10 @@ public class EsScratchWordsService {
         }
         Marking marking = new Marking();
         BeanUtils.copyProperties(scratchWords, marking);
-        Patent patent = new Patent();
-        patent.setMarkings(marking);
-        PatentJoin patentJoin = new PatentJoin();
-        patentJoin.setParent(patentId);
-        patentJoin.setName("marking");
-        patent.setPatentJoin(patentJoin);
+
         String id = null;
         try {
-            id = esService.addChildPatent(patent, patentId);
+            id = this.saveToEs(marking);
         } catch (Exception e) {
             throw new XiaoShiException("保存失败");
         }
@@ -81,26 +74,24 @@ public class EsScratchWordsService {
 
     public String updateScratchWords(String id, Marking marking) {
         //根据id查询
-        Patent patent = null;
+        Marking markingLast = null;
         try {
-            patent = this.getById(id);
+            markingLast = this.getById(id);
         } catch (Exception e) {
             throw new XiaoShiException("错误");
         }
-        if (patent == null) {
+        if (markingLast == null) {
             throw new XiaoShiException("划词信息不存在");
         }
-        Marking marking1 = patent.getMarkings();
-        BeanUtils.copyProperties(marking, marking1);
-        patent.setMarkings(marking1);
-        esService.updatePatent(patent, id);
+        BeanUtils.copyProperties(marking, markingLast);
+        this.updateToEs(marking, id);
         return id;
     }
 
     public Records queryScratchWord(QueryScratchWordsDTO queryScratchWordsDTO) {
         Long current = queryScratchWordsDTO.getCurrent();
         Long size = queryScratchWordsDTO.getSize();
-        Records records =new Records();
+        Records records = new Records();
         List<ScratchWordsVO> scratchWordsVOS = new ArrayList<>();
         PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         String createId = personnelVO.getId();
@@ -109,33 +100,34 @@ public class EsScratchWordsService {
         String patentNo = queryScratchWordsDTO.getPatentNo();
         String content = queryScratchWordsDTO.getMarkSelectText();
         Date marketTime = queryScratchWordsDTO.getMarkTime();
-        Integer projectId = 1;
+        Integer projectId = queryScratchWordsDTO.getProjectId();
         //公开
-        Query q1 = QueryBuilders.term(t -> t.field("markings.is_public").value(true));
+        Query q1 = QueryBuilders.term(t -> t.field("is_public").value(true));
         //不公开
-        Query q2 = QueryBuilders.term(t -> t.field("markings.is_public").value(false));
+        Query q2 = QueryBuilders.term(t -> t.field("is_public").value(false));
         //创建人id
-        Query q3 = QueryBuilders.term(t -> t.field("markings.mark_user_id").value(createId));
+        Query q3 = QueryBuilders.term(t -> t.field("mark_user_id").value(createId));
         //租户id
-        Query q4 = QueryBuilders.term(t -> t.field("markings.public_tenant_id").value(tenantId));
+        Query q4 = QueryBuilders.term(t -> t.field("public_tenant_id").value(tenantId));
         //公开范围为全部
-        Query q5 = QueryBuilders.term(t -> t.field("markings.public_scope").value(0));
+        Query q5 = QueryBuilders.term(t -> t.field("public_scope").value(0));
         //公开范围为所在地
-        Query q6 = QueryBuilders.term(t -> t.field("markings.public_scope").value(1));
+        Query q6 = QueryBuilders.term(t -> t.field("public_scope").value(1));
         //数据库id
         Query q7 = QueryBuilders.term(t -> t.field("public_project_id").value(projectId));
 
 
         //公开并且全部范围
-        Query bool1 = QueryBuilders.bool(i -> i.must(q1, q6, q4));
+        Query bool1 = QueryBuilders.bool(i -> i.must(q1, q5, q4));
         // 公开并且所在地
-        Query bool2 = QueryBuilders.bool(i -> i.must(q1, q6, q7));
-        //不公开
-        Query bool3 = QueryBuilders.bool(i -> i.must(q2, q3, q7));
+        Query bool2 = QueryBuilders.bool(i -> i.must(q1, q6, q7, q4));
+        //不公开并且全部范围
+        Query bool3 = QueryBuilders.bool(i -> i.must(q2, q5, q3));
+        //不公开并且所在地
+        Query bool4 = QueryBuilders.bool(i -> i.must(q2, q6, q3, q7));
+        Query riBool = QueryBuilders.bool(i -> i.should(bool1, bool2, bool3, bool4));
         List<Query> queries = new ArrayList<>();
-        queries.add(bool1);
-        queries.add(bool2);
-        queries.add(bool3);
+        queries.add(riBool);
         if (patentNo != null) {
             Query query = this.getPatentNoQuery(patentNo);
             queries.add(query);
@@ -154,53 +146,52 @@ public class EsScratchWordsService {
         }
         Query searchBool = QueryBuilders.bool(i -> i.must(queries));
         SearchRequest.Builder builder = new SearchRequest.Builder();
-        builder.index("patent");
-        if (current!=null&&size!=null&&current > 0 && size > 0) {
+        builder.index("patent_marking");
+        if (current != null && size != null && current > 0 && size > 0) {
             builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
         }
         builder.query(searchBool);
 
-        long total=0;
+        long total = 0;
         try {
-            SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-            List<Hit<Patent>> hits = response.hits().hits();
+            SearchResponse<Marking> response = client.search(builder.build(), Marking.class);
+            List<Hit<Marking>> hits = response.hits().hits();
             total = response.hits().total().value();
-            for (Hit<Patent> hit : hits) {
-                Patent patent = hit.source();
+            for (Hit<Marking> hit : hits) {
+                Marking marking = hit.source();
                 ScratchWordsVO scratchWordsVO = new ScratchWordsVO();
-                BeanUtils.copyProperties(patent.getMarkings(), scratchWordsVO);
+                BeanUtils.copyProperties(marking, scratchWordsVO);
                 scratchWordsVO.setId(hit.id());
                 scratchWordsVOS.add(scratchWordsVO);
-                scratchWordsVO.setPatentId(patent.getPatentJoin().getParent());
             }
         } catch (Exception e) {
 
         }
         records.setTotal(total);
-        records.setTotal(total);
+        records.setData(scratchWordsVOS);
         return records;
     }
 
 
     //查询栏位历史
-    public Patent getById(String wordsId) throws Exception {
-        Patent patent = null;
+    public Marking getById(String wordsId) throws Exception {
+        Marking marking = null;
         SearchRequest.Builder builder = new SearchRequest.Builder();
-        builder.index("patent");
+        builder.index("patent_marking");
         Query q = QueryBuilders.ids(i -> i.values(Arrays.asList(wordsId)));
         builder.query(q);
-        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        SearchResponse<Marking> response = client.search(builder.build(), Marking.class);
         long total = response.hits().total().value();
         if (total > 0) {
-            patent = response.hits().hits().get(0).source();
+            marking = response.hits().hits().get(0).source();
         }
-        return patent;
+        return marking;
     }
 
 
     public void removeById(String id) throws IOException {
         DeleteResponse deleteResponse = client.delete(deleteRequest ->
-                deleteRequest.index("patent").id(id)
+                deleteRequest.index("patent_marking").id(id)
         );
 
     }
@@ -208,16 +199,8 @@ public class EsScratchWordsService {
 
     //获得专利号检索式
     public Query getPatentNoQuery(String patentNo) {
-        Query parentQ1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(patentNo));
-
-        //公开号
-        Query parentQ2 = QueryBuilders.term(t -> t.field("public_no.keyword").value(patentNo));
-
-        //授权号
-        Query parentQ3 = QueryBuilders.term(t -> t.field("grant_no.keyword").value(patentNo));
-        Query parentQ = QueryBuilders.bool(i -> i.should(parentQ1, parentQ2, parentQ3));
-        Query qPatent = QueryBuilders.hasParent(t -> t.parentType("patent").query(parentQ));
-        return qPatent;
+        Query query = QueryBuilders.term(t -> t.field("patent_no").value(patentNo));
+        return query;
     }
 
     //获得创建时间检索式
@@ -241,13 +224,38 @@ public class EsScratchWordsService {
             ids.add("0");
         }
         String strs = JsonData.of(ids).toString();
-        Query query = QueryBuilders.term(t -> t.field("mark_time").value(strs));
+        Query query = QueryBuilders.term(t -> t.field("mark_user_id").value(strs));
         return query;
     }
 
     //获得内容检索式
     public Query getContentQuery(String content) {
-        Query query = QueryBuilders.match(t -> t.field("mark_selectText").query(content));
+        Query query = QueryBuilders.match(t -> t.field("mark_select_text").query(content));
         return query;
     }
+
+    //保存
+    public String saveToEs(Marking marking) throws Exception {
+        IndexResponse indexResponse = client.index(i -> i
+                .index("patent_marking")
+                .document(marking)
+        );
+        return indexResponse.id();
+
+
+    }
+
+    public Integer updateToEs(Marking marking, String id) {
+        UpdateRequest<Marking, Marking> req;
+        req = UpdateRequest.of(
+                b -> b.index("patent_marking").id(id)
+                        .doc(marking)
+        );
+        try {
+            client.update(req, Marking.class);
+            return 1;
+        } catch (IOException e) {
+            return -1;
+        }
+    }
 }

+ 20 - 0
src/main/java/cn/cslg/pas/service/permissions/PermissionService.java

@@ -2,6 +2,10 @@ package cn.cslg.pas.service.permissions;
 
 import cn.cslg.pas.common.dto.ClientDTO;
 import cn.cslg.pas.common.utils.LoginUtils;
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.json.JsonData;
+import com.alibaba.fastjson.JSON;
 import com.google.gson.Gson;
 import okhttp3.MediaType;
 import okhttp3.OkHttpClient;
@@ -11,6 +15,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
@@ -252,4 +257,19 @@ public class PermissionService {
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
 
+    public List<String> getPersonIdsByName(String name){
+
+        List<String> ids = new ArrayList<>();
+        try {
+            String json = this.getPersonIdByNamePCS(name, false);
+            ids = JSON.parseArray(json, String.class);
+        } catch (Exception e) {
+        }
+        if (ids == null || ids.size() == 0) {
+            ids = new ArrayList<>();
+            ids.add("0");
+        }
+        return ids;
+
+    }
 }

+ 4 - 2
src/main/resources/jsons/event.json

@@ -142,7 +142,8 @@
     "groupClass": "getTimeGroup",
     "ifSearch": "false",
     "ifGroup": "true",
-    "ifShow": "false"
+    "ifShow": "false",
+    "ifAsCondition": "true"
   },
   {
     "name": "发生月份",
@@ -155,6 +156,7 @@
     "groupClass": "getTimeGroup",
     "ifSearch": "false",
     "ifGroup": "true",
-    "ifShow": "false"
+    "ifShow": "false",
+    "ifAsCondition": "true"
   }
 ]

+ 4 - 2
src/main/resources/jsons/patentDigProject.json

@@ -110,7 +110,8 @@
     "ifSearch": "false",
     "ifGroup": "true",
     "ifShow": "false",
-    "defaultHidden": "false"
+    "defaultHidden": "false",
+    "ifAsCondition": "true"
   },
   {
     "name": "负责人名称",
@@ -303,7 +304,8 @@
     "groupClass": "getTimeGroup",
     "ifSearch": "false",
     "ifGroup": "true",
-    "ifShow": "false"
+    "ifShow": "false",
+    "ifAsCondition": "true"
   },
   {
     "name": "调查类型",

+ 4 - 2
src/main/resources/jsons/patentProject.json

@@ -125,7 +125,8 @@
     "ifSearch": "false",
     "ifGroup": "true",
     "ifShow": "false",
-    "defaultHidden": "false"
+    "defaultHidden": "false",
+    "ifAsCondition": "true"
   },
   {
     "name": "应用场景",
@@ -276,6 +277,7 @@
     "groupClass": "getTimeGroup",
     "ifSearch": "false",
     "ifGroup": "true",
-    "ifShow": "false"
+    "ifShow": "false",
+    "ifAsCondition": "true"
   }
 ]

+ 7 - 4
src/main/resources/jsons/reportProject.json

@@ -22,7 +22,8 @@
     "groupClass":"getTimeGroup",
     "ifSearch":"false",
     "ifGroup": "true",
-    "ifShow":"false"
+    "ifShow":"false",
+    "ifAsCondition": "true"
   },
   {"name":"报告名称",
   "type":"String",
@@ -107,7 +108,8 @@
     "ifSearch":"false",
     "ifGroup": "true",
     "ifShow":"false",
-    "defaultHidden": "false"
+    "defaultHidden": "false",
+    "ifAsCondition": "true"
   },
   {"name":"创建时间",
     "type":"DateTime",
@@ -144,7 +146,8 @@
     "groupClass":"getReportTypeGroup",
     "ifSearch":"false",
     "ifGroup": "true",
-    "ifShow":"true"
+    "ifShow":"true",
+    "ifAsCondition": "true"
   },
   {"name":"报告类型",
     "type":"Array",
@@ -292,6 +295,6 @@
     "ifSearch":"true",
     "ifGroup": "true",
     "ifShow":"true",
-    "ifAsCondition": "true",
+    "ifAsCondition": "true"
   }
 ]