From e59e5559dd03fa19030a7a54a26e5870791cfbbd Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Wed, 20 Mar 2024 18:15:28 +0800 Subject: [PATCH 1/7] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE-=E7=9F=A9=E9=98=B5-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A7=86?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1115260319137792]系统设置-矩阵-数据源增加自定义视图 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1115260319137792 --- .../cmdb/matrix/constvalue/MatrixType.java | 4 +- .../CmdbCustomViewDataSourceHandler.java | 145 ++++++++++++++++++ 2 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java diff --git a/src/main/java/neatlogic/module/cmdb/matrix/constvalue/MatrixType.java b/src/main/java/neatlogic/module/cmdb/matrix/constvalue/MatrixType.java index 63d42ce4..1c625703 100644 --- a/src/main/java/neatlogic/module/cmdb/matrix/constvalue/MatrixType.java +++ b/src/main/java/neatlogic/module/cmdb/matrix/constvalue/MatrixType.java @@ -23,7 +23,9 @@ import neatlogic.framework.util.$; * @since 2021/11/16 15:21 **/ public enum MatrixType implements IMatrixType { - CMDBCI("cmdbci", "配置项", "ciId", 4); + CMDBCI("cmdbci", "配置项", "ciId", 4), + CMDBCUSTOMVIEW("cmdbcustomview", "自定义视图", "customViewId", 5) + ; private String value; private String name; diff --git a/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java b/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java new file mode 100644 index 00000000..31e22525 --- /dev/null +++ b/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java @@ -0,0 +1,145 @@ +/* + * Copyright (C) 2024 深圳极向量科技有限公司 All Rights Reserved. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package neatlogic.module.cmdb.matrix.handler; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.cmdb.dto.customview.CustomViewVo; +import neatlogic.framework.exception.type.ParamNotExistsException; +import neatlogic.framework.matrix.core.MatrixDataSourceHandlerBase; +import neatlogic.framework.matrix.dto.MatrixAttributeVo; +import neatlogic.framework.matrix.dto.MatrixDataVo; +import neatlogic.framework.matrix.dto.MatrixVo; +import neatlogic.module.cmdb.dao.mapper.customview.CustomViewMapper; +import neatlogic.module.cmdb.matrix.constvalue.MatrixType; +import neatlogic.module.cmdb.service.customview.CustomViewDataService; +import neatlogic.module.cmdb.workerdispatcher.exception.CmdbDispatcherDispatchFailedException; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +@Component +public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase { + + private final static Logger logger = LoggerFactory.getLogger(CmdbCustomViewDataSourceHandler.class); + + @Resource + private CustomViewMapper customViewMapper; + + @Resource + private CustomViewDataService customViewDataService; + + @Override + public String getHandler() { + return MatrixType.CMDBCUSTOMVIEW.getValue(); + } + + @Override + protected boolean mySaveMatrix(MatrixVo matrixVo) throws Exception { + Long customViewId = matrixVo.getCustomViewId(); + if (customViewId != null) { + throw new ParamNotExistsException("customViewId"); + } + CustomViewVo customView = customViewMapper.getCustomViewById(customViewId); + if (customView == null) { + throw new CmdbDispatcherDispatchFailedException(customViewId); + } + JSONObject config = matrixVo.getConfig(); + if (MapUtils.isEmpty(config)) { + throw new ParamNotExistsException("config"); + } + JSONArray showAttributeLabelArray = config.getJSONArray("showAttributeLabelList"); + if (CollectionUtils.isEmpty(showAttributeLabelArray)) { + throw new ParamNotExistsException("config.showAttributeLabelList"); + } + return false; + } + + @Override + protected void myGetMatrix(MatrixVo matrixVo) { + + } + + @Override + protected void myDeleteMatrix(String uuid) { + + } + + @Override + protected void myCopyMatrix(String sourceUuid, MatrixVo matrixVo) { + + } + + @Override + protected JSONObject myImportMatrix(MatrixVo matrixVo, MultipartFile multipartFile) throws IOException { + return null; + } + + @Override + protected MatrixVo myExportMatrix(MatrixVo matrixVo) { + return null; + } + + @Override + protected void myImportMatrix(MatrixVo matrixVo) { + + } + + @Override + protected void mySaveAttributeList(String matrixUuid, List matrixAttributeList) { + + } + + @Override + protected List myGetAttributeList(MatrixVo matrixVo) { + return null; + } + + @Override + protected JSONObject myExportAttribute(MatrixVo matrixVo) { + return null; + } + + @Override + protected JSONObject myTableDataSearch(MatrixDataVo dataVo) { + return null; + } + + @Override + protected JSONObject mySaveTableRowData(String matrixUuid, JSONObject rowData) { + return null; + } + + @Override + protected Map myGetTableRowData(MatrixDataVo matrixDataVo) { + return null; + } + + @Override + protected void myDeleteTableRowData(String matrixUuid, List uuidList) { + + } +} -- Gitee From b8f1ac69be337b42e99329a81fec6f5ca7cedbcb Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Thu, 21 Mar 2024 16:20:00 +0800 Subject: [PATCH 2/7] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE-=E7=9F=A9=E9=98=B5-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A7=86?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1115260319137792]系统设置-矩阵-数据源增加自定义视图 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1115260319137792 --- .../CmdbCustomViewDataSourceHandler.java | 237 +++++++++++++++++- 1 file changed, 229 insertions(+), 8 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java b/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java index 31e22525..9e4d9698 100644 --- a/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java +++ b/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java @@ -20,17 +20,24 @@ package neatlogic.module.cmdb.matrix.handler; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import neatlogic.framework.cmdb.dto.customview.CustomViewVo; +import neatlogic.framework.cmdb.exception.customview.CustomViewNotFoundException; +import neatlogic.framework.dependency.core.DependencyManager; import neatlogic.framework.exception.type.ParamNotExistsException; import neatlogic.framework.matrix.core.MatrixDataSourceHandlerBase; import neatlogic.framework.matrix.dto.MatrixAttributeVo; +import neatlogic.framework.matrix.dto.MatrixCmdbCustomViewVo; import neatlogic.framework.matrix.dto.MatrixDataVo; import neatlogic.framework.matrix.dto.MatrixVo; +import neatlogic.framework.matrix.exception.MatrixCmdbCustomViewNotFoundException; +import neatlogic.framework.util.UuidUtil; import neatlogic.module.cmdb.dao.mapper.customview.CustomViewMapper; import neatlogic.module.cmdb.matrix.constvalue.MatrixType; import neatlogic.module.cmdb.service.customview.CustomViewDataService; import neatlogic.module.cmdb.workerdispatcher.exception.CmdbDispatcherDispatchFailedException; +import neatlogic.module.framework.dependency.handler.CiAttr2MatrixAttrDependencyHandler; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @@ -38,8 +45,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.IOException; -import java.util.List; -import java.util.Map; +import java.util.*; @Component public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase { @@ -75,17 +81,127 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase if (CollectionUtils.isEmpty(showAttributeLabelArray)) { throw new ParamNotExistsException("config.showAttributeLabelList"); } - return false; + Map oldShowAttributeUuidMap = new HashMap<>(); + MatrixCmdbCustomViewVo oldMatrixCmdbCustomViewVo = matrixMapper.getMatrixCmdbCustomViewByMatrixUuid(matrixVo.getUuid()); + if (oldMatrixCmdbCustomViewVo != null) { + if (customViewId.equals(oldMatrixCmdbCustomViewVo.getCustomViewId())) { + JSONObject oldConfig = oldMatrixCmdbCustomViewVo.getConfig(); + if (MapUtils.isNotEmpty(oldConfig)) { + JSONArray oldShowAttributeUuidArray = oldConfig.getJSONArray("showAttributeLabelList"); + if (CollectionUtils.isNotEmpty(oldShowAttributeUuidArray)) { + if (CollectionUtils.isEqualCollection(oldShowAttributeUuidArray, showAttributeLabelArray)) { + return false; + } + JSONArray showAttributeArray = oldConfig.getJSONArray("showAttributeList"); + if (CollectionUtils.isNotEmpty(showAttributeArray)) { + for (int i = 0; i < showAttributeArray.size(); i++) { + JSONObject showAttributeObj = showAttributeArray.getJSONObject(i); + if (MapUtils.isNotEmpty(showAttributeObj)) { + String uuid = showAttributeObj.getString("uuid"); + if (uuid != null) { + oldShowAttributeUuidMap.put(showAttributeObj.getString("label"), uuid); + DependencyManager.delete(CiAttr2MatrixAttrDependencyHandler.class, uuid); + } + } + } + } + } + } + } + } +// CiViewVo searchVo = new CiViewVo(); +// searchVo.setCiId(ciId); +// Map ciViewMap = new HashMap<>(); +// List ciViewList = RelUtil.ClearCiViewRepeatRel(ciViewMapper.getCiViewByCiId(searchVo)); +// for (CiViewVo ciview : ciViewList) { +// switch (ciview.getType()) { +// case "attr": +// ciViewMap.put("attr_" + ciview.getItemId(), ciview); +// break; +// case "relfrom": +// ciViewMap.put("relfrom_" + ciview.getItemId(), ciview); +// break; +// case "relto": +// ciViewMap.put("relto_" + ciview.getItemId(), ciview); +// break; +// case "const": +// //固化属性需要特殊处理 +// ciViewMap.put("const_" + ciview.getItemName().replace("_", ""), ciview); +// break; +// } +// } + JSONArray showAttributeArray = new JSONArray(); + if (!showAttributeLabelArray.contains("const_id")) { + showAttributeLabelArray.add(0, "const_id"); + } + Iterator iterator = showAttributeLabelArray.iterator(); + while (iterator.hasNext()) { + String showAttributeLabel = (String) iterator.next(); + JSONObject showAttributeObj = new JSONObject(); + String showAttributeUuid = oldShowAttributeUuidMap.get(showAttributeLabel); + if (showAttributeUuid == null) { + showAttributeUuid = UuidUtil.randomUuid(); + } + showAttributeObj.put("uuid", showAttributeUuid); +// CiViewVo ciViewVo = ciViewMap.get(showAttributeLabel); +// if (ciViewVo == null) { +// iterator.remove(); +// continue; +// } +// showAttributeObj.put("name", ciViewVo.getItemLabel()); + showAttributeObj.put("label", showAttributeLabel); + showAttributeArray.add(showAttributeObj); + if (showAttributeLabel.startsWith("const_")) { + continue; + } +// JSONObject dependencyConfig = new JSONObject(); +// dependencyConfig.put("matrixUuid", matrixVo.getUuid()); +// dependencyConfig.put("customViewId", customViewId); +// DependencyManager.insert(CiAttr2MatrixAttrDependencyHandler.class, showAttributeLabel.split("_")[1], showAttributeUuid, dependencyConfig); + } + config.put("showAttributeList", showAttributeArray); + MatrixCmdbCustomViewVo matrixCmdbCustomViewVo = new MatrixCmdbCustomViewVo(matrixVo.getUuid(), customViewId, config); + matrixMapper.replaceMatrixCmdbCustomView(matrixCmdbCustomViewVo); + return true; } @Override protected void myGetMatrix(MatrixVo matrixVo) { - + MatrixCmdbCustomViewVo matrixCmdbCustomViewVo = matrixMapper.getMatrixCmdbCustomViewByMatrixUuid(matrixVo.getUuid()); + if (matrixCmdbCustomViewVo == null) { + throw new MatrixCmdbCustomViewNotFoundException(matrixVo.getUuid()); + } + matrixVo.setCustomViewId(matrixCmdbCustomViewVo.getCustomViewId()); + JSONObject config = matrixCmdbCustomViewVo.getConfig(); + CustomViewVo customView = customViewMapper.getCustomViewById(matrixCmdbCustomViewVo.getCustomViewId()); + if (customView != null) { + config.put("customViewName", customView.getName()); +// config.put("ciLabel", customView.getLabel()); + } + matrixVo.setConfig(config); } @Override protected void myDeleteMatrix(String uuid) { - + MatrixCmdbCustomViewVo matrixCmdbCustomViewVo = matrixMapper.getMatrixCmdbCustomViewByMatrixUuid(uuid); + if (matrixCmdbCustomViewVo != null) { + matrixMapper.deleteMatrixCmdbCustomViewByMatrixUuid(uuid); + JSONObject config = matrixCmdbCustomViewVo.getConfig(); + if (MapUtils.isNotEmpty(config)) { + JSONArray showAttributeArray = config.getJSONArray("showAttributeList"); + if (CollectionUtils.isNotEmpty(showAttributeArray)) { + for (int i = 0; i < showAttributeArray.size(); i++) { + JSONObject showAttributeObj = showAttributeArray.getJSONObject(i); + if (MapUtils.isNotEmpty(showAttributeObj)) { + Long id = showAttributeObj.getLong("id"); + if (id != null) { +// DependencyManager.delete(CiAttr2MatrixAttrDependencyHandler.class, id); + } + } + } + } + } + } } @Override @@ -100,12 +216,15 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase @Override protected MatrixVo myExportMatrix(MatrixVo matrixVo) { - return null; + myGetMatrix(matrixVo); + return matrixVo; } @Override protected void myImportMatrix(MatrixVo matrixVo) { - + matrixMapper.deleteMatrixCmdbCustomViewByMatrixUuid(matrixVo.getUuid()); + MatrixCmdbCustomViewVo matrixCmdbCustomViewVo = new MatrixCmdbCustomViewVo(matrixVo.getUuid(), matrixVo.getCustomViewId(), matrixVo.getConfig()); + matrixMapper.replaceMatrixCmdbCustomView(matrixCmdbCustomViewVo); } @Override @@ -115,7 +234,104 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase @Override protected List myGetAttributeList(MatrixVo matrixVo) { - return null; + Long customViewId = null; + Map showAttributeUuidMap = new HashMap<>(); + String matrixUuid = matrixVo.getUuid(); + if (StringUtils.isNotBlank(matrixUuid)) { + MatrixCmdbCustomViewVo matrixCmdbCustomViewVo = matrixMapper.getMatrixCmdbCustomViewByMatrixUuid(matrixUuid); + if (matrixCmdbCustomViewVo == null) { + throw new MatrixCmdbCustomViewNotFoundException(matrixUuid); + } + customViewId = matrixCmdbCustomViewVo.getCustomViewId(); + JSONObject config = matrixCmdbCustomViewVo.getConfig(); + JSONArray showAttributeArray = config.getJSONArray("showAttributeList"); + for (int i = 0; i < showAttributeArray.size(); i++) { + JSONObject showAttributeObj = showAttributeArray.getJSONObject(i); + showAttributeUuidMap.put(showAttributeObj.getString("label"), showAttributeObj.getString("uuid")); + } + } else { + customViewId = matrixVo.getCustomViewId(); + } + CustomViewVo customView = customViewMapper.getCustomViewById(customViewId); + if (customView == null) { + throw new CustomViewNotFoundException(customViewId); + } + int sort = 0; + List matrixAttributeList = new ArrayList<>(); +// CiViewVo ciViewVo = new CiViewVo(); +// ciViewVo.setCiId(ciId); +// List ciViewList = RelUtil.ClearCiViewRepeatRel(ciViewMapper.getCiViewByCiId(ciViewVo)); +// if (CollectionUtils.isNotEmpty(ciViewList)) { +// List attrList = attrMapper.getAttrByCiId(ciId); +// Map attrMap = attrList.stream().collect(Collectors.toMap(AttrVo::getId, e -> e)); +// List relList = RelUtil.ClearRepeatRel(relMapper.getRelByCiId(ciId)); +// Map fromRelMap = relList.stream().filter(rel -> rel.getDirection().equals("from")).collect(Collectors.toMap(RelVo::getId, e -> e)); +// Map toRelMap = relList.stream().filter(rel -> rel.getDirection().equals("to")).collect(Collectors.toMap(RelVo::getId, e -> e)); +// for (CiViewVo ciview : ciViewList) { +// MatrixAttributeVo matrixAttributeVo = new MatrixAttributeVo(); +// matrixAttributeVo.setMatrixUuid(matrixUuid); +// matrixAttributeVo.setName(ciview.getItemLabel()); +// matrixAttributeVo.setType(MatrixAttributeType.INPUT.getValue()); +// matrixAttributeVo.setIsDeletable(0); +// matrixAttributeVo.setSort(sort++); +// matrixAttributeVo.setIsRequired(0); +// switch (ciview.getType()) { +// case "attr": +// matrixAttributeVo.setLabel("attr_" + ciview.getItemId()); +// AttrVo attrVo = attrMap.get(ciview.getItemId()); +// JSONObject attrConfig = new JSONObject(); +// attrConfig.put("attr", attrVo); +// matrixAttributeVo.setConfig(attrConfig); +// break; +// case "relfrom": +// matrixAttributeVo.setLabel("relfrom_" + ciview.getItemId()); +// RelVo fromRelVo = fromRelMap.get(ciview.getItemId()); +// JSONObject fromRelConfig = new JSONObject(); +// fromRelConfig.put("rel", fromRelVo); +// matrixAttributeVo.setConfig(fromRelConfig); +// break; +// case "relto": +// matrixAttributeVo.setLabel("relto_" + ciview.getItemId()); +// RelVo toRelVo = toRelMap.get(ciview.getItemId()); +// JSONObject toRelConfig = new JSONObject(); +// toRelConfig.put("rel", toRelVo); +// matrixAttributeVo.setConfig(toRelConfig); +// break; +// case "const": +// //固化属性需要特殊处理 +// String itemName = ciview.getItemName().replace("_", ""); +// matrixAttributeVo.setLabel("const_" + itemName); +// if ("id".equals(itemName)) { +// matrixAttributeVo.setPrimaryKey(1); +// } else if ("ciLabel".equals(itemName)) { +// // 不是虚拟模型的模型属性不能搜索 +// if (Objects.equals(ciVo.getIsAbstract(), 0)) { +// matrixAttributeVo.setIsSearchable(0); +// } +// JSONObject config = new JSONObject(); +// config.put("ciId", ciId); +// matrixAttributeVo.setConfig(config); +// } else { +// matrixAttributeVo.setIsSearchable(0); +// } +// break; +// default: +// break; +// } +// if (StringUtils.isBlank(matrixAttributeVo.getLabel())) { +// continue; +// } +// if (MapUtils.isNotEmpty(showAttributeUuidMap)) { +// String uuid = showAttributeUuidMap.get(matrixAttributeVo.getLabel()); +// if (uuid == null && Objects.equals(matrixAttributeVo.getPrimaryKey(), 0)) { +// continue; +// } +// matrixAttributeVo.setUuid(uuid); +// } +// matrixAttributeList.add(matrixAttributeVo); +// } +// } + return matrixAttributeList; } @Override @@ -128,6 +344,11 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase return null; } + @Override + protected List> mySearchTableDataNew(MatrixDataVo dataVo) { + return null; + } + @Override protected JSONObject mySaveTableRowData(String matrixUuid, JSONObject rowData) { return null; -- Gitee From d94c519edf32e417250658a4017d58f1c5a5b31e Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Sat, 23 Mar 2024 19:08:12 +0800 Subject: [PATCH 3/7] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE-=E7=9F=A9=E9=98=B5-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A7=86?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1115260319137792]系统设置-矩阵-数据源增加自定义视图 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1115260319137792 --- .../CmdbCustomViewDataSourceHandler.java | 170 +++++++++--------- 1 file changed, 87 insertions(+), 83 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java b/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java index 9e4d9698..d2fef6c9 100644 --- a/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java +++ b/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java @@ -19,10 +19,13 @@ package neatlogic.module.cmdb.matrix.handler; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.cmdb.dto.customview.CustomViewAttrVo; +import neatlogic.framework.cmdb.dto.customview.CustomViewConditionVo; +import neatlogic.framework.cmdb.dto.customview.CustomViewConstAttrVo; import neatlogic.framework.cmdb.dto.customview.CustomViewVo; import neatlogic.framework.cmdb.exception.customview.CustomViewNotFoundException; -import neatlogic.framework.dependency.core.DependencyManager; import neatlogic.framework.exception.type.ParamNotExistsException; +import neatlogic.framework.matrix.constvalue.MatrixAttributeType; import neatlogic.framework.matrix.core.MatrixDataSourceHandlerBase; import neatlogic.framework.matrix.dto.MatrixAttributeVo; import neatlogic.framework.matrix.dto.MatrixCmdbCustomViewVo; @@ -34,7 +37,6 @@ import neatlogic.module.cmdb.dao.mapper.customview.CustomViewMapper; import neatlogic.module.cmdb.matrix.constvalue.MatrixType; import neatlogic.module.cmdb.service.customview.CustomViewDataService; import neatlogic.module.cmdb.workerdispatcher.exception.CmdbDispatcherDispatchFailedException; -import neatlogic.module.framework.dependency.handler.CiAttr2MatrixAttrDependencyHandler; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; @@ -46,6 +48,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.IOException; import java.util.*; +import java.util.stream.Collectors; @Component public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase { @@ -100,7 +103,7 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase String uuid = showAttributeObj.getString("uuid"); if (uuid != null) { oldShowAttributeUuidMap.put(showAttributeObj.getString("label"), uuid); - DependencyManager.delete(CiAttr2MatrixAttrDependencyHandler.class, uuid); +// DependencyManager.delete(CiAttr2MatrixAttrDependencyHandler.class, uuid); } } } @@ -131,9 +134,9 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase // } // } JSONArray showAttributeArray = new JSONArray(); - if (!showAttributeLabelArray.contains("const_id")) { - showAttributeLabelArray.add(0, "const_id"); - } +// if (!showAttributeLabelArray.contains("const_id")) { +// showAttributeLabelArray.add(0, "const_id"); +// } Iterator iterator = showAttributeLabelArray.iterator(); while (iterator.hasNext()) { String showAttributeLabel = (String) iterator.next(); @@ -151,9 +154,9 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase // showAttributeObj.put("name", ciViewVo.getItemLabel()); showAttributeObj.put("label", showAttributeLabel); showAttributeArray.add(showAttributeObj); - if (showAttributeLabel.startsWith("const_")) { - continue; - } +// if (showAttributeLabel.startsWith("const_")) { +// continue; +// } // JSONObject dependencyConfig = new JSONObject(); // dependencyConfig.put("matrixUuid", matrixVo.getUuid()); // dependencyConfig.put("customViewId", customViewId); @@ -258,79 +261,42 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase } int sort = 0; List matrixAttributeList = new ArrayList<>(); -// CiViewVo ciViewVo = new CiViewVo(); -// ciViewVo.setCiId(ciId); -// List ciViewList = RelUtil.ClearCiViewRepeatRel(ciViewMapper.getCiViewByCiId(ciViewVo)); -// if (CollectionUtils.isNotEmpty(ciViewList)) { -// List attrList = attrMapper.getAttrByCiId(ciId); -// Map attrMap = attrList.stream().collect(Collectors.toMap(AttrVo::getId, e -> e)); -// List relList = RelUtil.ClearRepeatRel(relMapper.getRelByCiId(ciId)); -// Map fromRelMap = relList.stream().filter(rel -> rel.getDirection().equals("from")).collect(Collectors.toMap(RelVo::getId, e -> e)); -// Map toRelMap = relList.stream().filter(rel -> rel.getDirection().equals("to")).collect(Collectors.toMap(RelVo::getId, e -> e)); -// for (CiViewVo ciview : ciViewList) { -// MatrixAttributeVo matrixAttributeVo = new MatrixAttributeVo(); -// matrixAttributeVo.setMatrixUuid(matrixUuid); -// matrixAttributeVo.setName(ciview.getItemLabel()); -// matrixAttributeVo.setType(MatrixAttributeType.INPUT.getValue()); -// matrixAttributeVo.setIsDeletable(0); -// matrixAttributeVo.setSort(sort++); -// matrixAttributeVo.setIsRequired(0); -// switch (ciview.getType()) { -// case "attr": -// matrixAttributeVo.setLabel("attr_" + ciview.getItemId()); -// AttrVo attrVo = attrMap.get(ciview.getItemId()); -// JSONObject attrConfig = new JSONObject(); -// attrConfig.put("attr", attrVo); -// matrixAttributeVo.setConfig(attrConfig); -// break; -// case "relfrom": -// matrixAttributeVo.setLabel("relfrom_" + ciview.getItemId()); -// RelVo fromRelVo = fromRelMap.get(ciview.getItemId()); -// JSONObject fromRelConfig = new JSONObject(); -// fromRelConfig.put("rel", fromRelVo); -// matrixAttributeVo.setConfig(fromRelConfig); -// break; -// case "relto": -// matrixAttributeVo.setLabel("relto_" + ciview.getItemId()); -// RelVo toRelVo = toRelMap.get(ciview.getItemId()); -// JSONObject toRelConfig = new JSONObject(); -// toRelConfig.put("rel", toRelVo); -// matrixAttributeVo.setConfig(toRelConfig); -// break; -// case "const": -// //固化属性需要特殊处理 -// String itemName = ciview.getItemName().replace("_", ""); -// matrixAttributeVo.setLabel("const_" + itemName); -// if ("id".equals(itemName)) { -// matrixAttributeVo.setPrimaryKey(1); -// } else if ("ciLabel".equals(itemName)) { -// // 不是虚拟模型的模型属性不能搜索 -// if (Objects.equals(ciVo.getIsAbstract(), 0)) { -// matrixAttributeVo.setIsSearchable(0); -// } -// JSONObject config = new JSONObject(); -// config.put("ciId", ciId); -// matrixAttributeVo.setConfig(config); -// } else { -// matrixAttributeVo.setIsSearchable(0); -// } -// break; -// default: -// break; -// } -// if (StringUtils.isBlank(matrixAttributeVo.getLabel())) { -// continue; -// } -// if (MapUtils.isNotEmpty(showAttributeUuidMap)) { -// String uuid = showAttributeUuidMap.get(matrixAttributeVo.getLabel()); -// if (uuid == null && Objects.equals(matrixAttributeVo.getPrimaryKey(), 0)) { -// continue; -// } -// matrixAttributeVo.setUuid(uuid); -// } -// matrixAttributeList.add(matrixAttributeVo); -// } -// } + CustomViewConstAttrVo customViewConstAttrVo = new CustomViewConstAttrVo(customViewId); + CustomViewAttrVo customViewAttrVo = new CustomViewAttrVo(customViewId); + List constAttrList = customViewMapper.getCustomViewConstAttrByCustomViewId(customViewConstAttrVo); + for (CustomViewConstAttrVo constAttrVo : constAttrList) { + String uuid = showAttributeUuidMap.get(constAttrVo.getUuid()); + if (uuid == null) { + continue; + } + MatrixAttributeVo matrixAttributeVo = new MatrixAttributeVo(); + matrixAttributeVo.setUuid(uuid); + matrixAttributeVo.setLabel(constAttrVo.getUuid()); + matrixAttributeVo.setName(constAttrVo.getAlias()); + matrixAttributeVo.setMatrixUuid(matrixUuid); + matrixAttributeVo.setType(MatrixAttributeType.INPUT.getValue()); + matrixAttributeVo.setIsDeletable(0); + matrixAttributeVo.setSort(sort++); + matrixAttributeVo.setIsRequired(0); + matrixAttributeList.add(matrixAttributeVo); + } + List attrList = customViewMapper.getCustomViewAttrByCustomViewId(customViewAttrVo); + for (CustomViewAttrVo attrVo : attrList) { + String uuid = showAttributeUuidMap.get(attrVo.getUuid()); + if (uuid == null) { + continue; + } + MatrixAttributeVo matrixAttributeVo = new MatrixAttributeVo(); + matrixAttributeVo.setUuid(uuid); + matrixAttributeVo.setLabel(attrVo.getUuid()); + matrixAttributeVo.setName(attrVo.getAlias()); + matrixAttributeVo.setMatrixUuid(matrixUuid); + matrixAttributeVo.setType(MatrixAttributeType.INPUT.getValue()); + matrixAttributeVo.setIsDeletable(0); + matrixAttributeVo.setSort(sort++); + matrixAttributeVo.setIsRequired(0); + matrixAttributeList.add(matrixAttributeVo); + } return matrixAttributeList; } @@ -346,7 +312,45 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase @Override protected List> mySearchTableDataNew(MatrixDataVo dataVo) { - return null; + String matrixUuid = dataVo.getMatrixUuid(); + MatrixCmdbCustomViewVo matrixCmdbCustomViewVo = matrixMapper.getMatrixCmdbCustomViewByMatrixUuid(matrixUuid); + if (matrixCmdbCustomViewVo == null) { + throw new MatrixCmdbCustomViewNotFoundException(matrixUuid); + } + List> resultList = new ArrayList<>(); + MatrixVo matrixVo = matrixMapper.getMatrixByUuid(matrixUuid); + List matrixAttributeList = myGetAttributeList(matrixVo); + if (CollectionUtils.isEmpty(matrixAttributeList)) { + return resultList; + } + Map attributeLabelMap = matrixAttributeList.stream().collect(Collectors.toMap(e -> e.getUuid(), e -> e.getLabel())); + List attributeList = matrixAttributeList.stream().map(MatrixAttributeVo::getUuid).collect(Collectors.toList()); + Map attributeUuidMap = matrixAttributeList.stream().collect(Collectors.toMap(e -> e.getLabel(), e -> e.getUuid())); + CustomViewConditionVo customViewConditionVo = new CustomViewConditionVo(); + customViewConditionVo.setCustomViewId(matrixCmdbCustomViewVo.getCustomViewId()); + List> mapList = customViewDataService.searchCustomViewData(customViewConditionVo); + for (Map map : mapList) { + if (MapUtils.isEmpty(map)) { + continue; + } + Map rowDataMap = new HashMap<>(); + for (Map.Entry entry : map.entrySet()) { + String uuid = attributeUuidMap.get(entry.getKey()); + if (StringUtils.isBlank(uuid)) { + continue; + } + JSONObject resultObj = new JSONObject(); + resultObj.put("type", MatrixAttributeType.INPUT.getValue()); + resultObj.put("value", entry.getValue()); + resultObj.put("text", entry.getValue()); + rowDataMap.put(uuid, resultObj); +// if ("const_id".equals(entry.getKey())) { +// rowDataMap.put("uuid", matrixAttributeValueHandle(null, entry.getValue())); +// } + } + resultList.add(rowDataMap); + } + return resultList; } @Override -- Gitee From 741f4ab24cafebfe89821f769eeb0503b1822647 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Mon, 25 Mar 2024 16:19:22 +0800 Subject: [PATCH 4/7] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE-=E7=9F=A9=E9=98=B5-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A7=86?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1115260319137792]系统设置-矩阵-数据源增加自定义视图 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1115260319137792 --- .../handler/CmdbCustomViewDataSourceHandler.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java b/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java index d2fef6c9..69827ac1 100644 --- a/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java +++ b/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java @@ -69,7 +69,7 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase @Override protected boolean mySaveMatrix(MatrixVo matrixVo) throws Exception { Long customViewId = matrixVo.getCustomViewId(); - if (customViewId != null) { + if (customViewId == null) { throw new ParamNotExistsException("customViewId"); } CustomViewVo customView = customViewMapper.getCustomViewById(customViewId); @@ -265,12 +265,11 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase CustomViewAttrVo customViewAttrVo = new CustomViewAttrVo(customViewId); List constAttrList = customViewMapper.getCustomViewConstAttrByCustomViewId(customViewConstAttrVo); for (CustomViewConstAttrVo constAttrVo : constAttrList) { + MatrixAttributeVo matrixAttributeVo = new MatrixAttributeVo(); String uuid = showAttributeUuidMap.get(constAttrVo.getUuid()); - if (uuid == null) { - continue; + if (uuid != null) { + matrixAttributeVo.setUuid(uuid); } - MatrixAttributeVo matrixAttributeVo = new MatrixAttributeVo(); - matrixAttributeVo.setUuid(uuid); matrixAttributeVo.setLabel(constAttrVo.getUuid()); matrixAttributeVo.setName(constAttrVo.getAlias()); matrixAttributeVo.setMatrixUuid(matrixUuid); @@ -282,12 +281,11 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase } List attrList = customViewMapper.getCustomViewAttrByCustomViewId(customViewAttrVo); for (CustomViewAttrVo attrVo : attrList) { + MatrixAttributeVo matrixAttributeVo = new MatrixAttributeVo(); String uuid = showAttributeUuidMap.get(attrVo.getUuid()); - if (uuid == null) { - continue; + if (uuid != null) { + matrixAttributeVo.setUuid(uuid); } - MatrixAttributeVo matrixAttributeVo = new MatrixAttributeVo(); - matrixAttributeVo.setUuid(uuid); matrixAttributeVo.setLabel(attrVo.getUuid()); matrixAttributeVo.setName(attrVo.getAlias()); matrixAttributeVo.setMatrixUuid(matrixUuid); -- Gitee From 250446a2238cebb020bb3820047b2351a85f0f9f Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Tue, 26 Mar 2024 09:56:27 +0800 Subject: [PATCH 5/7] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE-=E7=9F=A9=E9=98=B5-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A7=86?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1115260319137792]系统设置-矩阵-数据源增加自定义视图 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1115260319137792 --- .../CmdbCustomViewDataSourceHandler.java | 180 ++++++++++++++++-- 1 file changed, 159 insertions(+), 21 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java b/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java index 69827ac1..416fe3a7 100644 --- a/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java +++ b/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java @@ -19,18 +19,15 @@ package neatlogic.module.cmdb.matrix.handler; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.cmdb.dto.customview.CustomViewAttrVo; -import neatlogic.framework.cmdb.dto.customview.CustomViewConditionVo; -import neatlogic.framework.cmdb.dto.customview.CustomViewConstAttrVo; -import neatlogic.framework.cmdb.dto.customview.CustomViewVo; +import neatlogic.framework.cmdb.dto.customview.*; import neatlogic.framework.cmdb.exception.customview.CustomViewNotFoundException; +import neatlogic.framework.common.constvalue.Expression; import neatlogic.framework.exception.type.ParamNotExistsException; import neatlogic.framework.matrix.constvalue.MatrixAttributeType; +import neatlogic.framework.matrix.constvalue.SearchExpression; import neatlogic.framework.matrix.core.MatrixDataSourceHandlerBase; -import neatlogic.framework.matrix.dto.MatrixAttributeVo; -import neatlogic.framework.matrix.dto.MatrixCmdbCustomViewVo; -import neatlogic.framework.matrix.dto.MatrixDataVo; -import neatlogic.framework.matrix.dto.MatrixVo; +import neatlogic.framework.matrix.dto.*; +import neatlogic.framework.matrix.exception.MatrixAttributeNotFoundException; import neatlogic.framework.matrix.exception.MatrixCmdbCustomViewNotFoundException; import neatlogic.framework.util.UuidUtil; import neatlogic.module.cmdb.dao.mapper.customview.CustomViewMapper; @@ -266,8 +263,11 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase List constAttrList = customViewMapper.getCustomViewConstAttrByCustomViewId(customViewConstAttrVo); for (CustomViewConstAttrVo constAttrVo : constAttrList) { MatrixAttributeVo matrixAttributeVo = new MatrixAttributeVo(); - String uuid = showAttributeUuidMap.get(constAttrVo.getUuid()); - if (uuid != null) { + if (MapUtils.isNotEmpty(showAttributeUuidMap)) { + String uuid = showAttributeUuidMap.get(constAttrVo.getUuid()); + if (uuid == null && Objects.equals(constAttrVo.getIsPrimary(), 0)) { + continue; + } matrixAttributeVo.setUuid(uuid); } matrixAttributeVo.setLabel(constAttrVo.getUuid()); @@ -277,13 +277,17 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase matrixAttributeVo.setIsDeletable(0); matrixAttributeVo.setSort(sort++); matrixAttributeVo.setIsRequired(0); + matrixAttributeVo.setPrimaryKey(constAttrVo.getIsPrimary()); matrixAttributeList.add(matrixAttributeVo); } List attrList = customViewMapper.getCustomViewAttrByCustomViewId(customViewAttrVo); for (CustomViewAttrVo attrVo : attrList) { MatrixAttributeVo matrixAttributeVo = new MatrixAttributeVo(); - String uuid = showAttributeUuidMap.get(attrVo.getUuid()); - if (uuid != null) { + if (MapUtils.isNotEmpty(showAttributeUuidMap)) { + String uuid = showAttributeUuidMap.get(attrVo.getUuid()); + if (uuid == null && Objects.equals(attrVo.getIsPrimary(), 0)) { + continue; + } matrixAttributeVo.setUuid(uuid); } matrixAttributeVo.setLabel(attrVo.getUuid()); @@ -293,6 +297,7 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase matrixAttributeVo.setIsDeletable(0); matrixAttributeVo.setSort(sort++); matrixAttributeVo.setIsRequired(0); + matrixAttributeVo.setPrimaryKey(attrVo.getIsPrimary()); matrixAttributeList.add(matrixAttributeVo); } return matrixAttributeList; @@ -321,18 +326,76 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase if (CollectionUtils.isEmpty(matrixAttributeList)) { return resultList; } - Map attributeLabelMap = matrixAttributeList.stream().collect(Collectors.toMap(e -> e.getUuid(), e -> e.getLabel())); - List attributeList = matrixAttributeList.stream().map(MatrixAttributeVo::getUuid).collect(Collectors.toList()); + List> dataList = new ArrayList<>(); + Map label2AttributeMap = matrixAttributeList.stream().collect(Collectors.toMap(e -> e.getLabel(), e -> e)); Map attributeUuidMap = matrixAttributeList.stream().collect(Collectors.toMap(e -> e.getLabel(), e -> e.getUuid())); - CustomViewConditionVo customViewConditionVo = new CustomViewConditionVo(); - customViewConditionVo.setCustomViewId(matrixCmdbCustomViewVo.getCustomViewId()); - List> mapList = customViewDataService.searchCustomViewData(customViewConditionVo); - for (Map map : mapList) { + if (CollectionUtils.isNotEmpty(dataVo.getDefaultValue())) { + List defaultValue = dataVo.getDefaultValue().toJavaList(String.class); + for (String primaryKeyAttrUuidAndValueListStr : defaultValue) { + List primaryKeyAttrUuidAndValueList = new ArrayList<>(); + if (primaryKeyAttrUuidAndValueListStr.contains("(&&)")) { + String[] split = primaryKeyAttrUuidAndValueListStr.split("(&&)"); + for (String e : split) { + primaryKeyAttrUuidAndValueList.add(e); + } + } else { + primaryKeyAttrUuidAndValueList.add(primaryKeyAttrUuidAndValueListStr); + } + List filterList = new ArrayList<>(); + for (String primaryKeyAttrUuidAndValue : primaryKeyAttrUuidAndValueList) { + String[] split = primaryKeyAttrUuidAndValue.split("#"); + String uuid = split[0]; + String value = split[1]; + filterList.add(new MatrixFilterVo(uuid, SearchExpression.EQ.getExpression(), Arrays.asList(value))); + } + CustomViewConditionVo customViewConditionVo = new CustomViewConditionVo(); + customViewConditionVo.setCustomViewId(matrixCmdbCustomViewVo.getCustomViewId()); + List attrFilterList = convertAttrFilter(matrixCmdbCustomViewVo.getCustomViewId(), matrixAttributeList, filterList, matrixUuid); + customViewConditionVo.setAttrFilterList(attrFilterList); + customViewConditionVo.setCurrentPage(dataVo.getCurrentPage()); + customViewConditionVo.setPageSize(dataVo.getPageSize()); + List> mapList = customViewDataService.searchCustomViewData(customViewConditionVo); + dataList.add(mapList.get(0)); + } + } else if (CollectionUtils.isNotEmpty(dataVo.getDefaultValueFilterList())) { + for (MatrixDefaultValueFilterVo defaultValueFilterVo : dataVo.getDefaultValueFilterList()) { + List filterList = new ArrayList<>(); + MatrixKeywordFilterVo valueFieldFilter = defaultValueFilterVo.getValueFieldFilter(); + if (valueFieldFilter != null) { + filterList.add(new MatrixFilterVo(valueFieldFilter.getUuid(), valueFieldFilter.getExpression(), Arrays.asList(valueFieldFilter.getValue()))); + } + MatrixKeywordFilterVo textFieldFilter = defaultValueFilterVo.getTextFieldFilter(); + if (textFieldFilter != null && (valueFieldFilter == null || !Objects.equals(valueFieldFilter.getUuid(), textFieldFilter.getUuid()))) { + filterList.add(new MatrixFilterVo(textFieldFilter.getUuid(), textFieldFilter.getExpression(), Arrays.asList(textFieldFilter.getValue()))); + } + CustomViewConditionVo customViewConditionVo = new CustomViewConditionVo(); + customViewConditionVo.setCustomViewId(matrixCmdbCustomViewVo.getCustomViewId()); + List attrFilterList = convertAttrFilter(matrixCmdbCustomViewVo.getCustomViewId(), matrixAttributeList, filterList, matrixUuid); + customViewConditionVo.setAttrFilterList(attrFilterList); + customViewConditionVo.setCurrentPage(dataVo.getCurrentPage()); + customViewConditionVo.setPageSize(dataVo.getPageSize()); + List> mapList = customViewDataService.searchCustomViewData(customViewConditionVo); + dataList.addAll(mapList); + } + } else { + CustomViewConditionVo customViewConditionVo = new CustomViewConditionVo(); + customViewConditionVo.setCustomViewId(matrixCmdbCustomViewVo.getCustomViewId()); + List attrFilterList = convertAttrFilter(matrixCmdbCustomViewVo.getCustomViewId(), matrixAttributeList, dataVo.getFilterList(), matrixUuid); + customViewConditionVo.setAttrFilterList(attrFilterList); + customViewConditionVo.setCurrentPage(dataVo.getCurrentPage()); + customViewConditionVo.setPageSize(dataVo.getPageSize()); + dataList = customViewDataService.searchCustomViewData(customViewConditionVo); + dataVo.setRowNum(customViewConditionVo.getRowNum()); + } + + for (Map map : dataList) { if (MapUtils.isEmpty(map)) { continue; } + List primaryKeyAttrUuidAndValueList = new ArrayList<>(); Map rowDataMap = new HashMap<>(); for (Map.Entry entry : map.entrySet()) { + MatrixAttributeVo attributeVo = label2AttributeMap.get(entry.getKey()); String uuid = attributeUuidMap.get(entry.getKey()); if (StringUtils.isBlank(uuid)) { continue; @@ -342,9 +405,30 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase resultObj.put("value", entry.getValue()); resultObj.put("text", entry.getValue()); rowDataMap.put(uuid, resultObj); -// if ("const_id".equals(entry.getKey())) { -// rowDataMap.put("uuid", matrixAttributeValueHandle(null, entry.getValue())); -// } + if (Objects.equals(attributeVo.getPrimaryKey(), 1)) { + primaryKeyAttrUuidAndValueList.add(uuid + "#" + entry.getValue()); + } + } + if (CollectionUtils.isNotEmpty(primaryKeyAttrUuidAndValueList)) { + String value = String.join("&&", primaryKeyAttrUuidAndValueList); + JSONObject resultObj = new JSONObject(); + resultObj.put("type", MatrixAttributeType.INPUT.getValue()); + resultObj.put("value", value); + resultObj.put("text", value); + rowDataMap.put("uuid", resultObj); + } else { + // 没有设置主键时取第一个属性作为主键列 + MatrixAttributeVo attributeVo = matrixAttributeList.get(0); + Object value = map.get(attributeVo.getLabel()); + if (value == null) { + value = ""; + } + value = attributeVo.getUuid() + "#" + value; + JSONObject resultObj = new JSONObject(); + resultObj.put("type", MatrixAttributeType.INPUT.getValue()); + resultObj.put("value", value); + resultObj.put("text", value); + rowDataMap.put("uuid", resultObj); } resultList.add(rowDataMap); } @@ -365,4 +449,58 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase protected void myDeleteTableRowData(String matrixUuid, List uuidList) { } + + private List convertAttrFilter(Long customViewId, List matrixAttributeList, List filterList, String matrixUuid) { + List customViewConditionFilterList = new ArrayList<>(); + Map attributeLabelMap = matrixAttributeList.stream().collect(Collectors.toMap(e -> e.getUuid(), e -> e.getLabel())); + List attributeList = matrixAttributeList.stream().map(MatrixAttributeVo::getUuid).collect(Collectors.toList()); + Map uuid2TypeMap = new HashMap<>(); + CustomViewConstAttrVo customViewConstAttrVo = new CustomViewConstAttrVo(customViewId); + CustomViewAttrVo customViewAttrVo = new CustomViewAttrVo(customViewId); + List constAttrList = customViewMapper.getCustomViewConstAttrByCustomViewId(customViewConstAttrVo); + for (CustomViewConstAttrVo constAttrVo : constAttrList) { + uuid2TypeMap.put(constAttrVo.getUuid(), "constattr"); + } + List attrList = customViewMapper.getCustomViewAttrByCustomViewId(customViewAttrVo); + for (CustomViewAttrVo attrVo : attrList) { + uuid2TypeMap.put(attrVo.getUuid(), "attr"); + } + for (MatrixFilterVo matrixFilterVo : filterList) { + if (matrixFilterVo == null) { + continue; + } + String uuid = matrixFilterVo.getUuid(); + if (StringUtils.isBlank(uuid)) { + continue; + } + if (!attributeList.contains(uuid)) { + throw new MatrixAttributeNotFoundException(matrixUuid, uuid); + } + String attrUuid = attributeLabelMap.get(uuid); + List valueList = matrixFilterVo.getValueList(); + if (CollectionUtils.isEmpty(valueList)) { + if (!Objects.equals(matrixFilterVo.getExpression(), SearchExpression.NULL.getExpression()) + && !Objects.equals(matrixFilterVo.getExpression(), SearchExpression.NOTNULL.getExpression())) { + continue; + } + } + JSONArray valueArray = new JSONArray(); + for (String value : valueList) { + if (StringUtils.isNotBlank(value)) { + valueArray.add(value); + } + } + String expression = matrixFilterVo.getExpression(); + if (StringUtils.isBlank(expression)) { + expression = Expression.EQUAL.getExpression(); + } + CustomViewConditionFilterVo customViewConditionFilterVo = new CustomViewConditionFilterVo(); + customViewConditionFilterVo.setAttrUuid(attrUuid); + customViewConditionFilterVo.setType(uuid2TypeMap.get(attrUuid)); + customViewConditionFilterVo.setExpression(expression); + customViewConditionFilterVo.setValueList(valueArray); + customViewConditionFilterList.add(customViewConditionFilterVo); + } + return customViewConditionFilterList; + } } -- Gitee From f11f613d00087902d88f93b7b62551968c4a5435 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Tue, 26 Mar 2024 11:27:12 +0800 Subject: [PATCH 6/7] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE-=E7=9F=A9=E9=98=B5-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A7=86?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1115260319137792]系统设置-矩阵-数据源增加自定义视图 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1115260319137792 --- .../CmdbCustomViewDataSourceHandler.java | 67 +++++-------------- 1 file changed, 15 insertions(+), 52 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java b/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java index 416fe3a7..0a86aa30 100644 --- a/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java +++ b/src/main/java/neatlogic/module/cmdb/matrix/handler/CmdbCustomViewDataSourceHandler.java @@ -109,31 +109,8 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase } } } -// CiViewVo searchVo = new CiViewVo(); -// searchVo.setCiId(ciId); -// Map ciViewMap = new HashMap<>(); -// List ciViewList = RelUtil.ClearCiViewRepeatRel(ciViewMapper.getCiViewByCiId(searchVo)); -// for (CiViewVo ciview : ciViewList) { -// switch (ciview.getType()) { -// case "attr": -// ciViewMap.put("attr_" + ciview.getItemId(), ciview); -// break; -// case "relfrom": -// ciViewMap.put("relfrom_" + ciview.getItemId(), ciview); -// break; -// case "relto": -// ciViewMap.put("relto_" + ciview.getItemId(), ciview); -// break; -// case "const": -// //固化属性需要特殊处理 -// ciViewMap.put("const_" + ciview.getItemName().replace("_", ""), ciview); -// break; -// } -// } + JSONArray showAttributeArray = new JSONArray(); -// if (!showAttributeLabelArray.contains("const_id")) { -// showAttributeLabelArray.add(0, "const_id"); -// } Iterator iterator = showAttributeLabelArray.iterator(); while (iterator.hasNext()) { String showAttributeLabel = (String) iterator.next(); @@ -143,21 +120,8 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase showAttributeUuid = UuidUtil.randomUuid(); } showAttributeObj.put("uuid", showAttributeUuid); -// CiViewVo ciViewVo = ciViewMap.get(showAttributeLabel); -// if (ciViewVo == null) { -// iterator.remove(); -// continue; -// } -// showAttributeObj.put("name", ciViewVo.getItemLabel()); showAttributeObj.put("label", showAttributeLabel); showAttributeArray.add(showAttributeObj); -// if (showAttributeLabel.startsWith("const_")) { -// continue; -// } -// JSONObject dependencyConfig = new JSONObject(); -// dependencyConfig.put("matrixUuid", matrixVo.getUuid()); -// dependencyConfig.put("customViewId", customViewId); -// DependencyManager.insert(CiAttr2MatrixAttrDependencyHandler.class, showAttributeLabel.split("_")[1], showAttributeUuid, dependencyConfig); } config.put("showAttributeList", showAttributeArray); MatrixCmdbCustomViewVo matrixCmdbCustomViewVo = new MatrixCmdbCustomViewVo(matrixVo.getUuid(), customViewId, config); @@ -176,7 +140,6 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase CustomViewVo customView = customViewMapper.getCustomViewById(matrixCmdbCustomViewVo.getCustomViewId()); if (customView != null) { config.put("customViewName", customView.getName()); -// config.put("ciLabel", customView.getLabel()); } matrixVo.setConfig(config); } @@ -186,21 +149,21 @@ public class CmdbCustomViewDataSourceHandler extends MatrixDataSourceHandlerBase MatrixCmdbCustomViewVo matrixCmdbCustomViewVo = matrixMapper.getMatrixCmdbCustomViewByMatrixUuid(uuid); if (matrixCmdbCustomViewVo != null) { matrixMapper.deleteMatrixCmdbCustomViewByMatrixUuid(uuid); - JSONObject config = matrixCmdbCustomViewVo.getConfig(); - if (MapUtils.isNotEmpty(config)) { - JSONArray showAttributeArray = config.getJSONArray("showAttributeList"); - if (CollectionUtils.isNotEmpty(showAttributeArray)) { - for (int i = 0; i < showAttributeArray.size(); i++) { - JSONObject showAttributeObj = showAttributeArray.getJSONObject(i); - if (MapUtils.isNotEmpty(showAttributeObj)) { - Long id = showAttributeObj.getLong("id"); - if (id != null) { +// JSONObject config = matrixCmdbCustomViewVo.getConfig(); +// if (MapUtils.isNotEmpty(config)) { +// JSONArray showAttributeArray = config.getJSONArray("showAttributeList"); +// if (CollectionUtils.isNotEmpty(showAttributeArray)) { +// for (int i = 0; i < showAttributeArray.size(); i++) { +// JSONObject showAttributeObj = showAttributeArray.getJSONObject(i); +// if (MapUtils.isNotEmpty(showAttributeObj)) { +// Long id = showAttributeObj.getLong("id"); +// if (id != null) { // DependencyManager.delete(CiAttr2MatrixAttrDependencyHandler.class, id); - } - } - } - } - } +// } +// } +// } +// } +// } } } -- Gitee From 51f0adc49090da2ecb9043b812041c3aea749bb6 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Tue, 26 Mar 2024 11:29:16 +0800 Subject: [PATCH 7/7] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE-=E7=9F=A9=E9=98=B5-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A7=86?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1115260319137792]系统设置-矩阵-数据源增加自定义视图 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1115260319137792 --- .../neatlogic/module/cmdb/matrix/constvalue/MatrixType.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/matrix/constvalue/MatrixType.java b/src/main/java/neatlogic/module/cmdb/matrix/constvalue/MatrixType.java index 1c625703..9872eea2 100644 --- a/src/main/java/neatlogic/module/cmdb/matrix/constvalue/MatrixType.java +++ b/src/main/java/neatlogic/module/cmdb/matrix/constvalue/MatrixType.java @@ -23,8 +23,8 @@ import neatlogic.framework.util.$; * @since 2021/11/16 15:21 **/ public enum MatrixType implements IMatrixType { - CMDBCI("cmdbci", "配置项", "ciId", 4), - CMDBCUSTOMVIEW("cmdbcustomview", "自定义视图", "customViewId", 5) + CMDBCI("cmdbci", "nmcfe.cmdbfulltextindextype.cientity", "ciId", 4), + CMDBCUSTOMVIEW("cmdbcustomview", "nmcmc.matrixtype.cmdbcustomview", "customViewId", 5) ; private String value; -- Gitee