diff --git a/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/CiViewRebuildHandler.java b/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/CiViewRebuildHandler.java
index b99c67fd152721ca6c466d8dc2f8eb1bdab8d356..e34a1e8adaf199ff35fdc3e200f940241faaf4b3 100644
--- a/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/CiViewRebuildHandler.java
+++ b/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/CiViewRebuildHandler.java
@@ -15,8 +15,10 @@ along with this program. If not, see .*/
package neatlogic.module.cmdb.rebuilddatabaseview.handler;
+import neatlogic.framework.asynchronization.threadlocal.TenantContext;
import neatlogic.framework.cmdb.dto.ci.CiVo;
import neatlogic.framework.common.dto.BasePageVo;
+import neatlogic.framework.dao.mapper.SchemaMapper;
import neatlogic.framework.rebuilddatabaseview.core.IRebuildDataBaseView;
import neatlogic.framework.rebuilddatabaseview.core.ViewStatusInfo;
import neatlogic.module.cmdb.dao.mapper.ci.CiMapper;
@@ -26,6 +28,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
@Component
public class CiViewRebuildHandler implements IRebuildDataBaseView {
@@ -36,39 +39,77 @@ public class CiViewRebuildHandler implements IRebuildDataBaseView {
@Resource
private CiService ciService;
+ @Resource
+ private SchemaMapper schemaMapper;
+
@Override
public String getDescription() {
return "重建配置项中虚拟模型视图";
}
@Override
- public List execute() {
+ public List createViewIfNotExists() {
List resultList = new ArrayList<>();
int rowNum = ciMapper.getVirtualCiCount();
- if (rowNum == 0) {
- return resultList;
+ if (rowNum > 0) {
+ BasePageVo searchVo = new BasePageVo();
+ searchVo.setRowNum(rowNum);
+ searchVo.setPageSize(100);
+ int pageCount = searchVo.getPageCount();
+ for (int currentPage = 1; currentPage <= pageCount; currentPage++) {
+ searchVo.setCurrentPage(currentPage);
+ List ciList = ciMapper.getVirtualCiList(searchVo);
+ for (CiVo ciVo : ciList) {
+ String tableType = schemaMapper.checkTableOrViewIsExists(TenantContext.get().getDataDbName(), "cmdb_" + ciVo.getId());
+ if (Objects.equals(tableType, "VIEW")) {
+ continue;
+ }
+ ViewStatusInfo viewStatusInfo = new ViewStatusInfo();
+ viewStatusInfo.setName("cmdb_" + ciVo.getId());
+ viewStatusInfo.setLabel(ciVo.getLabel() + "(" + ciVo.getName() + ")");
+ String viewXml = ciMapper.getCiViewXmlById(ciVo.getId());
+ ciVo.setViewXml(viewXml);
+ try {
+ ciService.buildCiView(ciVo);
+ viewStatusInfo.setStatus(ViewStatusInfo.Status.SUCCESS.toString());
+ } catch (Exception e) {
+ viewStatusInfo.setStatus(ViewStatusInfo.Status.FAILURE.toString());
+ viewStatusInfo.setError(e.getMessage());
+ }
+ resultList.add(viewStatusInfo);
+ }
+ }
}
- BasePageVo searchVo = new BasePageVo();
- searchVo.setRowNum(rowNum);
- searchVo.setPageSize(100);
- int pageCount = searchVo.getPageCount();
- for (int currentPage = 1; currentPage <= pageCount; currentPage++) {
- searchVo.setCurrentPage(currentPage);
- List ciList = ciMapper.getVirtualCiList(searchVo);
- for (CiVo ciVo : ciList) {
- ViewStatusInfo viewStatusInfo = new ViewStatusInfo();
- viewStatusInfo.setName("cmdb_" + ciVo.getId());
- viewStatusInfo.setLabel(ciVo.getLabel() + "(" + ciVo.getName() + ")");
- String viewXml = ciMapper.getCiViewXmlById(ciVo.getId());
- ciVo.setViewXml(viewXml);
- try {
- ciService.buildCiView(ciVo);
- viewStatusInfo.setStatus(ViewStatusInfo.Status.SUCCESS.toString());
- } catch (Exception e) {
- viewStatusInfo.setStatus(ViewStatusInfo.Status.FAILURE.toString());
- viewStatusInfo.setError(e.getMessage());
+ return resultList;
+ }
+
+ @Override
+ public List createOrReplaceView() {
+ List resultList = new ArrayList<>();
+ int rowNum = ciMapper.getVirtualCiCount();
+ if (rowNum > 0) {
+ BasePageVo searchVo = new BasePageVo();
+ searchVo.setRowNum(rowNum);
+ searchVo.setPageSize(100);
+ int pageCount = searchVo.getPageCount();
+ for (int currentPage = 1; currentPage <= pageCount; currentPage++) {
+ searchVo.setCurrentPage(currentPage);
+ List ciList = ciMapper.getVirtualCiList(searchVo);
+ for (CiVo ciVo : ciList) {
+ ViewStatusInfo viewStatusInfo = new ViewStatusInfo();
+ viewStatusInfo.setName("cmdb_" + ciVo.getId());
+ viewStatusInfo.setLabel(ciVo.getLabel() + "(" + ciVo.getName() + ")");
+ String viewXml = ciMapper.getCiViewXmlById(ciVo.getId());
+ ciVo.setViewXml(viewXml);
+ try {
+ ciService.buildCiView(ciVo);
+ viewStatusInfo.setStatus(ViewStatusInfo.Status.SUCCESS.toString());
+ } catch (Exception e) {
+ viewStatusInfo.setStatus(ViewStatusInfo.Status.FAILURE.toString());
+ viewStatusInfo.setError(e.getMessage());
+ }
+ resultList.add(viewStatusInfo);
}
- resultList.add(viewStatusInfo);
}
}
return resultList;
diff --git a/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/CustomViewRebuildHandler.java b/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/CustomViewRebuildHandler.java
index ddf5f233cc1aafa2af1bf65d0951cd16d2f0177d..281c761cea9a511aaf3b4487603da2678fd0a9cc 100644
--- a/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/CustomViewRebuildHandler.java
+++ b/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/CustomViewRebuildHandler.java
@@ -15,7 +15,9 @@ along with this program. If not, see .*/
package neatlogic.module.cmdb.rebuilddatabaseview.handler;
+import neatlogic.framework.asynchronization.threadlocal.TenantContext;
import neatlogic.framework.cmdb.dto.customview.CustomViewVo;
+import neatlogic.framework.dao.mapper.SchemaMapper;
import neatlogic.framework.rebuilddatabaseview.core.IRebuildDataBaseView;
import neatlogic.framework.rebuilddatabaseview.core.ViewStatusInfo;
import neatlogic.module.cmdb.dao.mapper.customview.CustomViewMapper;
@@ -26,6 +28,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
@Component
public class CustomViewRebuildHandler implements IRebuildDataBaseView {
@@ -36,13 +39,43 @@ public class CustomViewRebuildHandler implements IRebuildDataBaseView {
@Resource
private CustomViewService customViewService;
+ @Resource
+ private SchemaMapper schemaMapper;
+
@Override
public String getDescription() {
return "重建配置管理中自定义视图的视图";
}
@Override
- public List execute() {
+ public List createViewIfNotExists() {
+ List resultList = new ArrayList<>();
+ List idList = customViewMapper.getAllIdList();
+ for (Long id : idList) {
+ String tableType = schemaMapper.checkTableOrViewIsExists(TenantContext.get().getDataDbName(), "customview_" + id);
+ if (Objects.equals(tableType, "VIEW")) {
+ continue;
+ }
+ CustomViewVo customViewVo = customViewMapper.getCustomViewById(id);
+ customViewService.parseConfig(customViewVo);
+ ViewStatusInfo viewStatusInfo = new ViewStatusInfo();
+ viewStatusInfo.setName("customview_" + id);
+ viewStatusInfo.setLabel(customViewVo.getName());
+ try {
+ CustomViewBuilder builder = new CustomViewBuilder(customViewVo);
+ builder.buildView();
+ viewStatusInfo.setStatus(ViewStatusInfo.Status.SUCCESS.toString());
+ } catch (Exception e) {
+ viewStatusInfo.setStatus(ViewStatusInfo.Status.FAILURE.toString());
+ viewStatusInfo.setError(e.getMessage());
+ }
+ resultList.add(viewStatusInfo);
+ }
+ return resultList;
+ }
+
+ @Override
+ public List createOrReplaceView() {
List resultList = new ArrayList<>();
List idList = customViewMapper.getAllIdList();
for (Long id : idList) {
diff --git a/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/ResourceViewRebuildHandler.java b/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/ResourceViewRebuildHandler.java
index ea63a0e2f49c2cdf6d7fdaf0a9e3a4af3e4cdf1f..aa449a5b82113c671fdda2c7bce7670af259b098 100644
--- a/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/ResourceViewRebuildHandler.java
+++ b/src/main/java/neatlogic/module/cmdb/rebuilddatabaseview/handler/ResourceViewRebuildHandler.java
@@ -15,11 +15,17 @@ along with this program. If not, see .*/
package neatlogic.module.cmdb.rebuilddatabaseview.handler;
+import neatlogic.framework.asynchronization.threadlocal.TenantContext;
import neatlogic.framework.cmdb.dto.resourcecenter.config.ResourceEntityVo;
+import neatlogic.framework.cmdb.dto.resourcecenter.config.SceneEntityVo;
import neatlogic.framework.cmdb.enums.resourcecenter.Status;
+import neatlogic.framework.cmdb.resourcecenter.sceneview.core.SceneViewDefinitionFactory;
+import neatlogic.framework.dao.mapper.SchemaMapper;
import neatlogic.framework.rebuilddatabaseview.core.IRebuildDataBaseView;
import neatlogic.framework.rebuilddatabaseview.core.ViewStatusInfo;
+import neatlogic.module.cmdb.dao.mapper.resourcecenter.ResourceEntityMapper;
import neatlogic.module.cmdb.service.resourcecenter.resource.IResourceCenterResourceService;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@@ -33,30 +39,73 @@ public class ResourceViewRebuildHandler implements IRebuildDataBaseView {
@Resource
private IResourceCenterResourceService resourceCenterResourceService;
+ @Resource
+ private ResourceEntityMapper resourceEntityMapper;
+
+ @Resource
+ private SchemaMapper schemaMapper;
+
@Override
public String getDescription() {
return "重建资源中心视图";
}
@Override
- public List execute() {
+ public List createViewIfNotExists() {
List resultList = new ArrayList<>();
- List resourceEntityList = resourceCenterResourceService.rebuildResourceEntity();
- for (ResourceEntityVo resourceEntityVo : resourceEntityList) {
- ViewStatusInfo viewStatusInfo = new ViewStatusInfo();
- viewStatusInfo.setName(resourceEntityVo.getName());
- viewStatusInfo.setLabel(resourceEntityVo.getLabel());
- viewStatusInfo.setError(resourceEntityVo.getError());
- if (Objects.equals(resourceEntityVo.getStatus(), Status.ERROR.getValue())) {
- viewStatusInfo.setStatus(ViewStatusInfo.Status.FAILURE.toString());
- } else {
- viewStatusInfo.setStatus(ViewStatusInfo.Status.SUCCESS.toString());
+ List sceneEntityList = SceneViewDefinitionFactory.getSceneEntityList();
+ for (SceneEntityVo sceneEntityVo : sceneEntityList) {
+ String tableType = schemaMapper.checkTableOrViewIsExists(TenantContext.get().getDataDbName(), sceneEntityVo.getName());
+ if (Objects.equals(tableType, "VIEW")) {
+ continue;
}
+ ViewStatusInfo viewStatusInfo = rebuildSceneEntity(sceneEntityVo);
+ resultList.add(viewStatusInfo);
+ }
+ return resultList;
+ }
+
+ @Override
+ public List createOrReplaceView() {
+ List resultList = new ArrayList<>();
+ List sceneEntityList = SceneViewDefinitionFactory.getSceneEntityList();
+ for (SceneEntityVo sceneEntityVo : sceneEntityList) {
+ ViewStatusInfo viewStatusInfo = rebuildSceneEntity(sceneEntityVo);
resultList.add(viewStatusInfo);
}
return resultList;
}
+ private ViewStatusInfo rebuildSceneEntity(SceneEntityVo sceneEntityVo) {
+ ResourceEntityVo resourceEntityVo = new ResourceEntityVo();
+ resourceEntityVo.setName(sceneEntityVo.getName());
+ resourceEntityVo.setLabel(sceneEntityVo.getLabel());
+ String config = resourceEntityMapper.getResourceEntityConfigByName(resourceEntityVo.getName());
+ if (StringUtils.isNotBlank(config)) {
+ resourceEntityVo.setConfigStr(config);
+ String error = resourceCenterResourceService.buildResourceView(resourceEntityVo.getName(), resourceEntityVo.getConfig());
+ resourceEntityVo.setError(error);
+ if (StringUtils.isNotBlank(error)) {
+ resourceEntityVo.setStatus(Status.ERROR.getValue());
+ } else {
+ resourceEntityVo.setStatus(Status.READY.getValue());
+ }
+ resourceEntityMapper.updateResourceEntityStatusAndError(resourceEntityVo);
+ } else {
+ resourceEntityVo.setStatus(Status.PENDING.getValue());
+ }
+ ViewStatusInfo viewStatusInfo = new ViewStatusInfo();
+ viewStatusInfo.setName(resourceEntityVo.getName());
+ viewStatusInfo.setLabel(resourceEntityVo.getLabel());
+ viewStatusInfo.setError(resourceEntityVo.getError());
+ if (Objects.equals(resourceEntityVo.getStatus(), Status.ERROR.getValue())) {
+ viewStatusInfo.setStatus(ViewStatusInfo.Status.FAILURE.toString());
+ } else {
+ viewStatusInfo.setStatus(ViewStatusInfo.Status.SUCCESS.toString());
+ }
+ return viewStatusInfo;
+ }
+
@Override
public int getSort() {
return 4;
diff --git a/src/main/java/neatlogic/module/cmdb/startup/handler/CreateResourceViewStartupHandler.java b/src/main/java/neatlogic/module/cmdb/startup/handler/CreateResourceViewStartupHandler.java
deleted file mode 100644
index e2f2e3851cf7ac00ae4d58582a1b305c20d66094..0000000000000000000000000000000000000000
--- a/src/main/java/neatlogic/module/cmdb/startup/handler/CreateResourceViewStartupHandler.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*Copyright (C) $today.year 深圳极向量科技有限公司 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.startup.handler;
-
-import neatlogic.framework.rebuilddatabaseview.core.RebuildDataBaseViewManager;
-import neatlogic.framework.tenantinit.TenantInitBase;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-/**
- * @author linbq
- * @since 2022/2/9 12:12
- **/
-@Component
-public class CreateResourceViewStartupHandler extends TenantInitBase {
- private final Logger logger = LoggerFactory.getLogger(CreateResourceViewStartupHandler.class);
-
- /**
- * 作业名称
- *
- * @return 字符串
- */
- @Override
- public String getName() {
- return "创建资源中心视图";
- }
-
- /**
- * 每个租户分别执行
- */
- @Override
- public void execute() {
- RebuildDataBaseViewManager.execute();
- }
-
- /**
- * 排序
- *
- * @return 顺序
- */
- @Override
- public int sort() {
- return 4;
- }
-}