Merge pull request #6933 from dataease/pr@dev-v2@fixDatasource

feat: 读取数据源更新频率配置
This commit is contained in:
taojinlong 2023-11-29 05:26:47 -06:00 committed by GitHub
commit 0e4667e5c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 6 deletions

View File

@ -33,14 +33,20 @@ import io.dataease.datasource.request.DatasourceRequest;
import io.dataease.engine.constant.SQLConstants; import io.dataease.engine.constant.SQLConstants;
import io.dataease.exception.DEException; import io.dataease.exception.DEException;
import io.dataease.i18n.Translator; import io.dataease.i18n.Translator;
import io.dataease.job.sechedule.CheckDsStatusJob;
import io.dataease.job.sechedule.ScheduleManager;
import io.dataease.license.config.XpackInteract; import io.dataease.license.config.XpackInteract;
import io.dataease.model.BusiNodeRequest; import io.dataease.model.BusiNodeRequest;
import io.dataease.model.BusiNodeVO; import io.dataease.model.BusiNodeVO;
import io.dataease.system.dao.auto.entity.CoreSysSetting;
import io.dataease.system.manage.CoreUserManage; import io.dataease.system.manage.CoreUserManage;
import io.dataease.utils.*; import io.dataease.utils.*;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.quartz.JobDataMap;
import org.quartz.JobKey;
import org.quartz.TriggerKey;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -85,7 +91,8 @@ public class DatasourceServer implements DatasourceApi {
@Resource @Resource
private DatasetDataManage datasetDataManage; private DatasetDataManage datasetDataManage;
@Resource
private ScheduleManager scheduleManager;
@Resource @Resource
private CoreUserManage coreUserManage; private CoreUserManage coreUserManage;
@ -605,6 +612,31 @@ public class DatasourceServer implements DatasourceApi {
return validate(coreDatasource); return validate(coreDatasource);
} }
public void addJob(List<CoreSysSetting> sysSettings) {
String type = "minute";
String interval = "30";
for (CoreSysSetting sysSetting : sysSettings) {
if (sysSetting.getPkey().equalsIgnoreCase("basic.dsExecuteTime")) {
type = sysSetting.getPval();
}
if (sysSetting.getPkey().equalsIgnoreCase("basic.dsIntervalTime")) {
interval = sysSetting.getPval();
}
}
String cron = "";
switch (type) {
case "hour":
cron = "0 0 0/hour * * ? *".replace("hour", interval.toString());
break;
default:
cron = "0 0/minute * * * ? *".replace("minute", interval.toString());
}
scheduleManager.addOrUpdateCronJob(new JobKey("Datasource", "check_status"),
new TriggerKey("Datasource", "check_status"),
CheckDsStatusJob.class,
cron, new Date(System.currentTimeMillis()), null, new JobDataMap());
}
private DatasourceDTO validate(CoreDatasource coreDatasource) { private DatasourceDTO validate(CoreDatasource coreDatasource) {
checkDatasourceStatus(coreDatasource); checkDatasourceStatus(coreDatasource);
DatasourceDTO datasourceDTO = new DatasourceDTO(); DatasourceDTO datasourceDTO = new DatasourceDTO();

View File

@ -18,9 +18,4 @@ public class Schedular {
datasourceServer.updateStopJobStatus(); datasourceServer.updateStopJobStatus();
} }
@QuartzScheduled(cron = "0 0/30 * * * ?")
public void updateDatasourceStatus() {
datasourceServer.updateDatasourceStatus();
}
} }

View File

@ -6,6 +6,8 @@ import io.dataease.datasource.provider.CalciteProvider;
import io.dataease.datasource.server.DatasourceServer; import io.dataease.datasource.server.DatasourceServer;
import io.dataease.datasource.server.DatasourceTaskServer; import io.dataease.datasource.server.DatasourceTaskServer;
import io.dataease.datasource.server.EngineServer; import io.dataease.datasource.server.EngineServer;
import io.dataease.system.dao.auto.entity.CoreSysSetting;
import io.dataease.system.manage.SysParameterManage;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.boot.context.event.ApplicationReadyEvent;
@ -29,6 +31,8 @@ public class DataSourceInitStartListener implements ApplicationListener<Applicat
private CalciteProvider calciteProvider; private CalciteProvider calciteProvider;
@Resource @Resource
private EngineServer engineServer; private EngineServer engineServer;
@Resource
private SysParameterManage sysParameterManage;
@Override @Override
public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) { public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) {
@ -62,6 +66,14 @@ public class DataSourceInitStartListener implements ApplicationListener<Applicat
e.printStackTrace(); e.printStackTrace();
} }
} }
try {
List<CoreSysSetting> coreSysSettings = sysParameterManage.groupList("basic.");
datasourceServer.addJob(coreSysSettings);
}catch (Exception e){
e.printStackTrace();
}
} }

View File

@ -2,6 +2,7 @@ package io.dataease.system.manage;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.dataease.api.system.vo.SettingItemVO; import io.dataease.api.system.vo.SettingItemVO;
import io.dataease.datasource.server.DatasourceServer;
import io.dataease.license.config.XpackInteract; import io.dataease.license.config.XpackInteract;
import io.dataease.system.dao.auto.entity.CoreSysSetting; import io.dataease.system.dao.auto.entity.CoreSysSetting;
import io.dataease.system.dao.auto.mapper.CoreSysSettingMapper; import io.dataease.system.dao.auto.mapper.CoreSysSettingMapper;
@ -31,6 +32,8 @@ public class SysParameterManage {
@Resource @Resource
private ExtCoreSysSettingMapper extCoreSysSettingMapper; private ExtCoreSysSettingMapper extCoreSysSettingMapper;
@Resource
private DatasourceServer datasourceServer;
public String singleVal(String key) { public String singleVal(String key) {
QueryWrapper<CoreSysSetting> queryWrapper = new QueryWrapper<>(); QueryWrapper<CoreSysSetting> queryWrapper = new QueryWrapper<>();
@ -100,6 +103,7 @@ public class SysParameterManage {
return sysSetting; return sysSetting;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
extCoreSysSettingMapper.saveBatch(sysSettings); extCoreSysSettingMapper.saveBatch(sysSettings);
datasourceServer.addJob(sysSettings);
} }