|
@@ -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 {
|