Bläddra i källkod

标引/批量标引添加

zero 1 år sedan
förälder
incheckning
75eb55276c

+ 9 - 0
src/main/java/cn/cslg/pas/controller/CustomFieldController.java

@@ -135,4 +135,13 @@ public class CustomFieldController {
         records.setData(field);
         return Response.success(records);
     }
+
+    @PostMapping("/batchAddCustomField")
+    @Operation(summary = "标引/批量标引添加")
+    public Response batchAddCustomField(@RequestBody List<EsCustomFieldDTO> vo) throws Exception {
+        List<String> list = esCustomFieldService.batchAddCustomField(vo);
+        Records records = new Records();
+        records.setData(list);
+        return Response.success(records);
+    }
 }

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

@@ -253,6 +253,221 @@ public class EsCustomFieldService {
         return id;
     }
 
+    //批量添加自定义栏位值
+    public List<String> batchAddCustomField(List<EsCustomFieldDTO> fieldDTOS) throws Exception {
+        List<String> ids = new ArrayList<>();
+        for (EsCustomFieldDTO esCustomFieldDTO : fieldDTOS) {
+            ESCustomField esCustomField = new ESCustomField();
+            String id = "";
+            //判断类型
+            Integer fieldType = esCustomFieldDTO.getFieldType();
+            Integer taskId = esCustomFieldDTO.getTaskId();
+            Integer optionType = esCustomFieldDTO.getOptionType();
+            String patentNo = esCustomFieldDTO.getPatentNo();
+            String fieldId = esCustomFieldDTO.getFieldId();
+            String patentId = esCustomFieldDTO.getPatentId();
+            List<String> addValues = esCustomFieldDTO.getFieldValue();
+            Integer projectId = esCustomFieldDTO.getProjectId();
+            Date createDate = new Date();
+
+            if (optionType.equals(1) && (addValues == null || addValues.size() == 0)) {
+                throw new XiaoShiException("请填写值");
+            }
+
+
+            //根据专利号查询 是否专利关联过栏位
+            PatentWithIdVO patentWithIdVO = this.getEsCustomField(esCustomFieldDTO);
+            if (patentWithIdVO != null) {
+                esCustomField = patentWithIdVO.getPatent().getESCustomField();
+                id = patentWithIdVO.getId();
+            } else {
+                //设置栏位
+                esCustomField.setField(esCustomFieldDTO.getFieldId());
+                //设置专题库或报告
+                esCustomField.setProjectId(esCustomFieldDTO.getProjectId());
+                //设置创建时间
+                esCustomField.setCreateTime(createDate);
+                //设置创建人
+                esCustomField.setPersonId("1");
+                //设置类型
+                esCustomField.setFieldType(fieldType);
+                //设置任务id
+                esCustomField.setTaskId(taskId);
+            }
+            List<String> values = esCustomField.getFieldValue();
+
+            //设置值
+            switch (fieldType) {
+                case 0:
+
+                    ;
+                case 1:
+
+                    ;
+                case 2:              //文本类型
+                    if (optionType.equals(1) || optionType.equals(2)) {
+                        if (addValues != null && addValues.size() == 1)
+                            esCustomField.setFieldValue(addValues);
+                        esCustomField.setStatsValue(addValues);
+                    } else if (optionType.equals(0)) {
+                        esCustomField.setFieldValue(new ArrayList<>());
+                        esCustomField.setStatsValue(new ArrayList<>());
+                    }
+                    break;
+                case 4:     //单选
+                    if (optionType.equals(1) || optionType.equals(2)) {
+                        if (addValues != null && addValues.size() == 1) {
+                            esCustomField.setFieldValue(addValues);
+                            esCustomField.setStatsValue(addValues);
+                        }
+                    } else if (optionType.equals(0)) {
+                        esCustomField.setFieldValue(new ArrayList<>());
+                        esCustomField.setStatsValue(new ArrayList<>());
+                    }
+                    break;
+                case 5:
+                    if (optionType.equals(1)) {
+                        List<String> orgValue = esCustomField.getFieldValue();
+
+                        if (orgValue == null) {
+                            orgValue = new ArrayList<>();
+                        }
+
+                        for (String item : addValues) {
+                            if (!orgValue.contains(item)) {
+                                orgValue.add(item);
+                            }
+                        }
+                        esCustomField.setFieldValue(orgValue);
+                        esCustomField.setStatsValue(orgValue);
+                    } else if (optionType.equals(2)) {
+                        if (addValues != null && addValues.size() > 0) {
+                            esCustomField.setFieldValue(addValues);
+                            esCustomField.setStatsValue(addValues);
+                        } else {
+                            esCustomField.setFieldValue(new ArrayList<>());
+                            esCustomField.setStatsValue(new ArrayList<>());
+                        }
+                    } else if (optionType.equals(0)) {
+                        List<String> orgValue = esCustomField.getFieldValue();
+
+                        if (orgValue == null) {
+                            orgValue = new ArrayList<>();
+                        }
+
+                        for (String item : addValues) {
+                            if (orgValue.contains(item)) {
+                                orgValue.remove(item);
+                            }
+                        }
+                        esCustomField.setFieldValue(orgValue);
+                        esCustomField.setStatsValue(orgValue);
+                    }
+                    break;
+                case 6:            //树类型
+
+                case 7:
+
+                case 8:
+
+                case 9:
+                    if (optionType.equals(1)) {
+                        //根据值获得树节点
+                        List<String> reValues = FormatUtil.getDistinctList(addValues, values);
+                        esCustomField.setFieldValue(reValues);
+                        //根据 reValues获得 reStateValues
+                        List<Integer> fieldIds = FormatUtil.StringTOIntegerList(reValues);
+                        //根据树节点id查询树节点
+                        LambdaQueryWrapper<TreeNode> queryWrapper = new LambdaQueryWrapper<>();
+                        queryWrapper.in(TreeNode::getId, fieldIds);
+                        List<TreeNode> treeNodes = treeNodeService.list(queryWrapper);
+                        //遍历节点
+                        List<String> reStateValues = new ArrayList<>(reValues);
+                        treeNodes.forEach(item -> {
+                            String path = item.getPath();
+                            if (path != null && path.trim() != "") {
+                                List<String> a = Arrays.asList(path.split("/"));
+                                reStateValues.addAll(a);
+                            }
+                        });
+
+                        List<String> disReStateValues = new ArrayList<>(new HashSet<>(reStateValues));
+                        esCustomField.setStatsValue(disReStateValues);
+                    } else if (optionType.equals(0)) {
+                        if (values != null && values.size() > 0 && addValues != null && addValues.size() > 0) {
+                            values.removeAll(addValues);
+                            esCustomField.setFieldValue(values);
+                            if (values.size() > 0) {
+                                //根据 reValues获得 reStateValues
+                                List<Integer> fieldIds = FormatUtil.StringTOIntegerList(values);
+                                //根据树节点id查询树节点
+                                LambdaQueryWrapper<TreeNode> queryWrapper = new LambdaQueryWrapper<>();
+                                queryWrapper.eq(TreeNode::getId, fieldIds);
+                                List<TreeNode> treeNodes = treeNodeService.list(queryWrapper);
+                                //遍历节点
+                                List<String> reStateValues = new ArrayList<>(values);
+                                treeNodes.forEach(item -> {
+                                    String path = item.getPath();
+                                    if (path != null && path.trim() != "") {
+                                        List<String> a = Arrays.asList(path.split("/"));
+                                        reStateValues.addAll(a);
+                                    }
+                                });
+                                List<String> disReStateValues = new ArrayList<>(new HashSet<>(reStateValues));
+                                esCustomField.setStatsValue(disReStateValues);
+                            }
+                        }
+
+                    } else if (optionType.equals(2)) {
+                        esCustomField.setFieldValue(addValues);
+                        if (addValues == null || addValues.size() == 0) {
+                            esCustomField.setStatsValue(new ArrayList<>());
+                        } else {
+                            //根据 reValues获得 reStateValues
+                            List<Integer> fieldIds = FormatUtil.StringTOIntegerList(addValues);
+                            //根据树节点id查询树节点
+                            LambdaQueryWrapper<TreeNode> queryWrapper = new LambdaQueryWrapper<>();
+                            queryWrapper.eq(TreeNode::getId, fieldIds);
+                            List<TreeNode> treeNodes = treeNodeService.list(queryWrapper);
+                            //遍历节点
+                            List<String> reStateValues = new ArrayList<>(addValues);
+                            treeNodes.forEach(item -> {
+                                String path = item.getPath();
+                                if (path != null && path.trim() != "") {
+                                    List<String> a = Arrays.asList(path.split("/"));
+                                    reStateValues.addAll(a);
+                                }
+                            });
+                            List<String> disReStateValues = new ArrayList<>(new HashSet<>(reStateValues));
+                            esCustomField.setStatsValue(disReStateValues);
+                        }
+                    }
+                    break;
+            }
+            if (!id.trim().equals("")) {
+                Patent patent = patentWithIdVO.getPatent();
+                patent.setESCustomField(esCustomField);
+                esService.updatePatent(patent, patentWithIdVO.getId());
+                ESCustomFieldHistory esCustomFieldHistory = new ESCustomFieldHistory();
+                esCustomFieldHistory.setField(fieldId);
+                esCustomFieldHistory.setFieldType(fieldType);
+                esCustomFieldHistory.setCreateTime(createDate);
+                esCustomFieldHistory.setFieldValue(addValues);
+                esCustomFieldHistory.setSavedValue(esCustomField.getFieldValue());
+                esCustomFieldHistory.setHistoryType(optionType);
+                esCustomFieldHistory.setTaskId(taskId);
+                esCustomFieldHistory.setPersonId("1");
+                esCustomFieldHistory.setProjectId(projectId);
+                esCustomFieldHistory.setCustomFieldId(id);
+                this.addCustomFieldHistory(esCustomFieldHistory);
+            } else {
+                this.addEsCustomFieldToEs(esCustomField, patentNo, patentId);
+            }
+            ids.add(id);
+        }
+        return ids;
+    }
+
 
     //添加操作历史
     public String addCustomFieldHistory(ESCustomFieldHistory customFieldHistory) throws Exception {