zero 1 vuosi sitten
vanhempi
commit
9d28199680

+ 4 - 2
src/main/java/cn/cslg/pas/common/vo/QueryNoveltyProjectVO.java

@@ -44,6 +44,10 @@ public class QueryNoveltyProjectVO {
 
     private String applicationRemark;
 
+    private String replenishMeans;
+
+    private String writeAdvice;
+
     private String ipc;
 
     private String solvedProblem;
@@ -52,8 +56,6 @@ public class QueryNoveltyProjectVO {
 
     private String remark;
 
-    private String picture;
-
     private String inventionPoint;
 
     private List<SystemFile> systemFileList;

+ 3 - 3
src/main/java/cn/cslg/pas/controller/NoveltyProjectController.java

@@ -78,13 +78,13 @@ public class NoveltyProjectController {
     @Operation(summary = "添加或更新技术方案信息")
     @PostMapping("/addOrUpdateTechnicalCase")
     public Response addOrUpdateTechnicalCase(@RequestBody AddTechnicalCaseDTO caseDTO) throws Exception {
-        Integer noveltyProjectId = null;
+        TechnicalCaseIdDTO caseIdDTO = new TechnicalCaseIdDTO();
         try {
-            noveltyProjectId = technicalCaseService.addOrUpdateTechnicalCase(caseDTO);
+            caseIdDTO = technicalCaseService.addOrUpdateTechnicalCase(caseDTO);
         } catch (Exception e) {
             return Response.error(e.getMessage());
         }
-        return Response.success(noveltyProjectId);
+        return Response.success(caseIdDTO);
     }
 
     @Operation(summary = "查询技术方案信息")

+ 2 - 2
src/main/java/cn/cslg/pas/domain/business/NoveltyProject.java

@@ -71,9 +71,9 @@ public class NoveltyProject extends BaseEntity<NoveltyProject> {
 
     //需要补充资料
     @TableField(value = "replenish_means")
-    private Integer replenishMeans;
+    private String replenishMeans;
 
     //撰写要点建议
     @TableField(value = "write_advice")
-    private Integer writeAdvice;
+    private String writeAdvice;
 }

+ 27 - 0
src/main/java/cn/cslg/pas/domain/es/TechnicalCasePatent.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.domain.es;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.stereotype.Component;
+
+@Component
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TechnicalCasePatent {
+
+    /**
+     * 查新报告id
+     */
+    @JsonProperty("project_id")
+    private Integer projectId;
+
+    /**
+     * 发明点
+     */
+    @JsonProperty("invention_point")
+    private String inventionPoint;
+
+}

+ 28 - 6
src/main/java/cn/cslg/pas/service/business/NoveltyProjectService.java

@@ -10,9 +10,11 @@ import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.DepartmentVO;
 import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
 import cn.cslg.pas.domain.business.AssoProjectFile;
+import cn.cslg.pas.domain.business.AssoTechnicalCaseFile;
 import cn.cslg.pas.domain.business.NoveltyProject;
 import cn.cslg.pas.domain.business.Project;
 import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.AssoTechnicalCaseFileMapper;
 import cn.cslg.pas.mapper.NoveltyProjectMapper;
 import cn.cslg.pas.mapper.ProjectMapper;
 import cn.cslg.pas.service.common.FileManagerService;
@@ -36,6 +38,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 @Service
@@ -57,6 +60,9 @@ public class NoveltyProjectService extends ServiceImpl<NoveltyProjectMapper, Nov
     @Autowired
     private NoveltyProjectMapper noveltyProjectMapper;
 
+    @Autowired
+    private AssoTechnicalCaseFileMapper assoTechnicalCaseFileMapper;
+
 
     public Records queryNoveltyProject(QueryNoveltyProjectDTO vo) throws IOException {
         vo.setCurrent(vo.getCurrent() - 1);
@@ -78,6 +84,7 @@ public class NoveltyProjectService extends ServiceImpl<NoveltyProjectMapper, Nov
             List<String> createIds = new ArrayList<>();
             List<String> departmentIds = new ArrayList<>();
             List<Integer> clientIds = new ArrayList<>();
+            List<Integer> technicalCaseIds = new ArrayList<>();
             List<DepartmentVO> departmentVOS = new ArrayList<>();
             List<Personnel> personnels = new ArrayList<>();
             List<Client> clients = new ArrayList<>();
@@ -86,6 +93,10 @@ public class NoveltyProjectService extends ServiceImpl<NoveltyProjectMapper, Nov
                     createIds.add(item.getCreateId());
                 }
 
+                if (item.getTechnicalCaseId() != null) {
+                    technicalCaseIds.add(item.getTechnicalCaseId());
+                }
+
                 if (item.getHeadId() != null) {
                     createIds.add(item.getHeadId());
                 }
@@ -124,8 +135,17 @@ public class NoveltyProjectService extends ServiceImpl<NoveltyProjectMapper, Nov
             }
 
             List<SystemFile> systemFiles = new ArrayList<>();
-            List<String> guids = noveltyProjectVOS.stream().map(QueryNoveltyProjectVO::getPicture).collect(Collectors.toList());
+            List<String> guids = new ArrayList<>();
+            List<AssoTechnicalCaseFile> caseFileList = new ArrayList<>();
             //查询文件
+            if (!CollectionUtils.isEmpty(technicalCaseIds)) {
+                caseFileList = assoTechnicalCaseFileMapper.selectList(new LambdaQueryWrapper<AssoTechnicalCaseFile>()
+                        .in(AssoTechnicalCaseFile::getTechnicalCaseId, technicalCaseIds));
+                if (!CollectionUtils.isEmpty(caseFileList)) {
+                    guids = caseFileList.stream().map(AssoTechnicalCaseFile::getFileGuid).collect(Collectors.toList());
+                }
+            }
+
             if (!CollectionUtils.isEmpty(guids)) {
                 String res = fileManagerService.getSystemFileFromFMS(guids);
                 systemFiles = JSON.parseArray(res, SystemFile.class);
@@ -167,11 +187,13 @@ public class NoveltyProjectService extends ServiceImpl<NoveltyProjectMapper, Nov
                     }
                 }
                 //装载文件信息
-                if (StringUtils.isNotEmpty(noveltyProjectVO.getPicture())) {
-                    SystemFile systemFile = systemFiles.stream().filter(i -> i.getGuid().equals(noveltyProjectVO.getPicture())).findFirst().orElse(null);
-                    List<SystemFile> systemFileList = new ArrayList<>();
-                    systemFileList.add(systemFile);
-                    noveltyProjectVO.setSystemFileList(systemFileList);
+                List<AssoTechnicalCaseFile> caseFiles = caseFileList.stream().filter(i -> i.getTechnicalCaseId().equals(noveltyProjectVO.getTechnicalCaseId())).collect(Collectors.toList());
+                if (!CollectionUtils.isEmpty(caseFiles)) {
+                    List<String> guidList = caseFiles.stream().map(AssoTechnicalCaseFile::getFileGuid).collect(Collectors.toList());
+                    if (!CollectionUtils.isEmpty(guidList) && !CollectionUtils.isEmpty(systemFiles)) {
+                        List<SystemFile> systemFileList = systemFiles.stream().filter(i -> guidList.contains(i.getGuid())).collect(Collectors.toList());
+                        noveltyProjectVO.setSystemFileList(systemFileList);
+                    }
                 }
             }
         }

+ 79 - 7
src/main/java/cn/cslg/pas/service/business/TechnicalCaseService.java

@@ -10,9 +10,23 @@ import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.TechnicalCaseVO;
 import cn.cslg.pas.domain.BaseEntity;
 import cn.cslg.pas.domain.business.*;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.TechnicalCasePatent;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.AssoTechnicalCaseFileMapper;
 import cn.cslg.pas.mapper.TechnicalCaseMapper;
 import cn.cslg.pas.service.common.FileManagerService;
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.elasticsearch._types.SortOptions;
+import co.elastic.clients.elasticsearch._types.SortOrder;
+import co.elastic.clients.elasticsearch._types.query_dsl.IdsQuery;
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.elasticsearch.core.IndexResponse;
+import co.elastic.clients.elasticsearch.core.SearchRequest;
+import co.elastic.clients.elasticsearch.core.SearchResponse;
+import co.elastic.clients.elasticsearch.core.UpdateRequest;
+import co.elastic.clients.elasticsearch.core.search.Hit;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -40,6 +54,7 @@ import java.util.stream.Collectors;
 public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, TechnicalCase> {
     private final CacheUtils cacheUtils;
     private final LoginUtils loginUtils;
+    private final ElasticsearchClient client;
 
     @Autowired
     private FileManagerService fileManagerService;
@@ -54,9 +69,9 @@ public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, Techn
     private TechnicalCaseMapper technicalCaseMapper;
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
-    public Integer addOrUpdateTechnicalCase(AddTechnicalCaseDTO vo) {
+    public TechnicalCaseIdDTO addOrUpdateTechnicalCase(AddTechnicalCaseDTO vo) throws Exception {
         PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-        Integer technicalCaseId = null;
+        TechnicalCaseIdDTO caseIdDTO = new TechnicalCaseIdDTO();
         if (vo.getTechnicalCaseId() == null) {
             if (vo.getProjectId() == null) {
                 Project project = new Project();
@@ -72,16 +87,37 @@ public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, Techn
             TechnicalCase technicalCase = new TechnicalCase();
             BeanUtils.copyProperties(vo, technicalCase);
             technicalCase.insert();
-            technicalCaseId = technicalCase.getId();
+            caseIdDTO.setProjectId(vo.getProjectId());
+            caseIdDTO.setTechnicalCaseId(technicalCase.getId());
+
+            //保存es
+            TechnicalCasePatent casePatent = new TechnicalCasePatent();
+            casePatent.setProjectId(vo.getProjectId());
+            casePatent.setInventionPoint(technicalCase.getInventionPoint());
+            String technicalCasePatentId = this.addTechnicalCasePatent(casePatent);
+            if (StringUtils.isEmpty(technicalCasePatentId)) {
+                throw new XiaoShiException("发明点保存Es失败");
+            }
         } else {
             TechnicalCase technicalCase = technicalCaseMapper.selectById(vo.getTechnicalCaseId());
             BeanUtils.copyProperties(vo, technicalCase);
             technicalCase.updateById();
-            technicalCaseId = technicalCase.getId();
+            caseIdDTO.setTechnicalCaseId(technicalCase.getId());
+            caseIdDTO.setProjectId(technicalCase.getProjectId());
+
+            //保存es
+            String technicalCasePatentId = this.selectTechnicalCasePatent(technicalCase.getProjectId());
+            TechnicalCasePatent casePatent = new TechnicalCasePatent();
+            casePatent.setProjectId(vo.getProjectId());
+            casePatent.setInventionPoint(technicalCase.getInventionPoint());
+            Integer count = this.updateTechnicalCasePatent(casePatent, technicalCasePatentId);
+            if (count > 0) {
+                throw new XiaoShiException("发明点更新Es失败");
+            }
         }
 
         List<AssoTechnicalCaseFile> technicalCaseFiles = assoTechnicalCaseFileMapper.selectList(new LambdaQueryWrapper<AssoTechnicalCaseFile>()
-                .eq(AssoTechnicalCaseFile::getTechnicalCaseId, technicalCaseId));
+                .eq(AssoTechnicalCaseFile::getTechnicalCaseId, caseIdDTO.getTechnicalCaseId()));
         if (!CollectionUtils.isEmpty(technicalCaseFiles)) {
             List<Integer> collect = technicalCaseFiles.stream().map(BaseEntity::getId).collect(Collectors.toList());
             assoTechnicalCaseFileMapper.deleteBatchIds(collect);
@@ -92,7 +128,7 @@ public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, Techn
         if (!CollectionUtils.isEmpty(fileGuids)) {
             for (String fileGuid : fileGuids) {
                 AssoTechnicalCaseFile assoTechnicalCaseFile = new AssoTechnicalCaseFile();
-                assoTechnicalCaseFile.setTechnicalCaseId(technicalCaseId);
+                assoTechnicalCaseFile.setTechnicalCaseId(caseIdDTO.getTechnicalCaseId());
                 assoTechnicalCaseFile.setFileGuid(fileGuid);
                 assoTechnicalCaseFile.setCreateId(personnelVO.getId());
                 assoTechnicalCaseFiles.add(assoTechnicalCaseFile);
@@ -101,7 +137,7 @@ public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, Techn
                 assoTechnicalCaseFileService.saveBatch(assoTechnicalCaseFiles);
             }
         }
-        return technicalCaseId;
+        return caseIdDTO;
     }
 
     public TechnicalCaseVO queryTechnicalCase(TechnicalCaseIdDTO vo) {
@@ -135,4 +171,40 @@ public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, Techn
 
         this.removeById(vo.getTechnicalCaseId());
     }
+
+    //查询TechnicalCasePatent
+    public String selectTechnicalCasePatent(Integer projectId) throws Exception {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("technical_case_patent");
+        Query query = QueryBuilders.term(i -> i.field("project_id").value(projectId));
+        builder.query(query);
+        SearchResponse<TechnicalCasePatent> response = client.search(builder.build(), TechnicalCasePatent.class);
+        List<Hit<TechnicalCasePatent>> hits = response.hits().hits();
+        return hits.get(0).id();
+    }
+
+    //添加TechnicalCasePatent
+    public String addTechnicalCasePatent(TechnicalCasePatent casePatent) throws Exception {
+        IndexResponse indexResponse = client.index(i -> i
+                .index("technical_case_patent")
+                //传入user对象
+                .document(casePatent)
+        );
+        return indexResponse.id();
+    }
+
+    //更新TechnicalCasePatent
+    public Integer updateTechnicalCasePatent(TechnicalCasePatent patent, String id) {
+        UpdateRequest<TechnicalCasePatent, TechnicalCasePatent> req;
+        req = UpdateRequest.of(
+                b -> b.index("technical_case_patent").id(id)
+                        .doc(patent));
+        try {
+            client.update(req, TechnicalCasePatent.class);
+            return 1;
+        } catch (IOException e) {
+            return -1;
+        }
+    }
 }

+ 2 - 1
src/main/resources/mapper/NoveltyProjectMapper.xml

@@ -27,11 +27,12 @@
         np.if_patentability,
         np.application_advice,
         np.application_remark,
+        np.replenish_means,
+        np.write_advice,
         tc.ipc,
         tc.solved_problem,
         tc.technical_field,
         tc.remark,
-        tc.picture,
         tc.invention_point
         from novelty_project np
         left join project p on p.id = np.project_id