perf(仪表板-选项卡): 启动时自动卸载已废弃的选项卡插件

This commit is contained in:
fit2cloud-chenyw 2022-08-17 12:00:49 +08:00
parent 86c7fb015d
commit 322460ad44

View File

@ -4,23 +4,37 @@ import io.dataease.commons.utils.LogUtil;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.plugins.common.base.domain.MyPlugin;
import io.dataease.service.sys.PluginService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Component
public class PluginRunner implements ApplicationRunner {
private static final List<String> discardModules = new ArrayList<>();
@Value("${dataease.plugin.dir:/opt/dataease/plugins/}")
private String pluginDir;
@Autowired
private PluginService pluginService;
@PostConstruct
public void init() {
discardModules.add("dataease-extensions-tabs-backend");
}
@Override
@ -28,7 +42,29 @@ public class PluginRunner implements ApplicationRunner {
// 执行加载插件逻辑
BaseGridRequest request = new BaseGridRequest();
List<MyPlugin> plugins = pluginService.query(request);
if (CollectionUtils.isEmpty(plugins)) return;
Map<Boolean, List<MyPlugin>> groupMap = plugins.stream().collect(Collectors.groupingBy(this::isDiscard));
if (ObjectUtils.isEmpty(groupMap)) return;
List<MyPlugin> discardPlugins = groupMap.get(true);
if (CollectionUtils.isNotEmpty(discardPlugins)) {
try {
for (int i = 0; i < discardPlugins.size(); i++) {
MyPlugin plugin = discardPlugins.get(i);
pluginService.uninstall(plugin.getPluginId());
}
}catch (Exception e) {
LogUtil.error(e.getMessage(), e);
}
}
if (CollectionUtils.isEmpty(groupMap.get(false))) return;
plugins.stream().forEach(plugin -> {
if (isDiscard(plugin)) {
}
String store = plugin.getStore();
String version = plugin.getVersion();
String moduleName = plugin.getModuleName();
@ -52,4 +88,8 @@ public class PluginRunner implements ApplicationRunner {
}
private boolean isDiscard(MyPlugin myPlugin) {
return discardModules.contains(myPlugin.getModuleName());
}
}