Commit efd7bba6 authored by ZWT's avatar ZWT

feat(零碳): 长庆演示系统新增功能

1.新建油田配置表同时生成相关代码及mapper文件,修改部分第三方数据抽取定时任务,增加针对不同井场开关控制逻辑,同时修改首页页面展示逻辑,通过油田配置功能区分不同首页展示功能;
2.新建定时任务配置表同时生成相关代码及mapper文件,定时任务模块增加mybatis配置,用以操作数据库,修改部分第三方数据抽取定时任务,修改使用方式使其脱离框架方便动态控制;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 816f75cd
......@@ -13,9 +13,7 @@ public class TraceHelper {
public static final String FORM_DATA_TRACE_BUILDER = "TRACE_LOG_BUILDER";
public static final int TITLE_LENGTH = 30;
public static final String PUSH_TAG = "2022-09-01 12:21:07";
// private static final Boolean ENABLETRACE = Boolean.TRUE;
private static final ConcurrentHashMap<String, TraceBuilder> traceBuilders = new ConcurrentHashMap<String, TraceBuilder>();
private static final ConcurrentHashMap<String, TraceBuilder> traceBuilders = new ConcurrentHashMap<>();
private static TimeSpanChecker timeSpanChecker = new TimeSpanChecker(300, true);
private static AtomicLong builtTraceTotalCount = new AtomicLong(0);
private static AtomicLong removedTraceTotalCount = new AtomicLong(0);
......@@ -35,27 +33,12 @@ public class TraceHelper {
public static int getTraceCount() {
return traceBuilders.size();
}
//
// public static ConcurrentLinkedQueue<String> getLastTraceIds() {
// return lastTraceIds;
// }
//
// public static void setLastTraceIds(ConcurrentLinkedQueue<String> lastTraceIds) {
// TraceHelper.lastTraceIds = lastTraceIds;
// }
public static TraceBuilder buildTraceBuilder(XContext context) {
return buildTraceBuilder(context.getTraceId(), context);
}
public static TraceBuilder buildTraceBuilder(String traceId, XContext context) {
// Boolean enableTraceLog = TraceLogConfig.checkEnableTraceLog(context);// TraceLogConfig.enableTraceLog != null ? TraceLogConfig.enableTraceLog.getValue(context) : null;
// if (context != null && enableTraceLog != null && !enableTraceLog.booleanValue()) {
// traceBuilders.clear();
// return null;
// }
if (timeSpanChecker.checkNow()) {
cleanTraceBuilder();
}
......@@ -165,9 +148,7 @@ public class TraceHelper {
return;
}
String detailStr = detail == null ? "" : ("====> " + detail.toString());
// detailStr = detailStr.replace("\\\"","\"");
// String latestTime = DateUtil.getCurrentDateTimeWithMs();
String detailStr = detail == null ? "" : ("====> " + detail);
long latestTime = System.currentTimeMillis();
traceBuilder.getItems().add("[" + DateUtil.getCurrentDateTimeWithMs() + "]" + StringAlignHelper.alignRight(title, TITLE_LENGTH, '=') + "|" + detailStr);
traceBuilder.setLatestTime(latestTime);
......@@ -219,11 +200,6 @@ public class TraceHelper {
traceBuilder.setLatestTime(latestTime);
}
//
// public static void appendTraceLogCurrentTime(XContext context) {
// appendTraceLogCurrentTime(context, false);
// }
//
public static void appendTraceLogUsed(XContext context) {
TraceHelper.TraceBuilder traceBuilder = getTraceBuilder(context);
appendTraceLogUsed(traceBuilder);
......@@ -303,12 +279,11 @@ public class TraceHelper {
}
public static class TraceBuilder {
private static final String NEW_LINE = System.getProperty("line.separator");
private final String traceId;
private final Long traceTime = System.currentTimeMillis();
private final List<Object> items = new ArrayList<Object>();
private final List<Object> items = new ArrayList<>();
private long latestTime = 0;
public TraceBuilder(String traceId) {
......
package pps.core.base.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import com.google.common.base.Splitter;
import pps.core.base.service.data.MyCounterOutput;
import pps.core.common.job.CounterJob5S;
import pps.core.common.utils.*;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.XStartup;
import xstartup.base.util.XJsonUtils;
import xstartup.data.XSingleResult;
import xstartup.feature.api.annotation.XApiGet;
import java.util.List;
import java.util.Set;
@XService
public class CounterService {
public static final String LINE_SEPERATOR = System.getProperty("line.separator");
/**
* 读取全局计数器,用于问题排查与诊断
*
* @param context
* @return
*/
@XText("获取全局计数器")
@XApiGet
public XSingleResult<MyCounterOutput> getGlobalCounter(XContext context) {
CounterBuilder.globalCounterBuilder.setFieldValue("__TASKS_RUNNING__", GlobalExecutorService.INSTANCE.getRunningTasksCount() + "");
CounterBuilder.globalCounterBuilder.setFieldValue("__TASKS_DONE__", GlobalExecutorService.INSTANCE.getTasksCount() + "");
CounterBuilder.globalCounterBuilder.setFieldValue("__TASKS_RUNNING(SCADA)___", ScadaExecutorService.INSTANCE.getRunningTasksCount() + "");
CounterBuilder.globalCounterBuilder.setFieldValue("__TASKS_DONE(SCADA)__", ScadaExecutorService.INSTANCE.getTasksCount() + "");
CounterBuilder.globalCounterBuilder.setFieldValue("__TRACEBUILDERS__", TraceHelper.getTraceBuildersCount() + "");
MyCounterOutput output = new MyCounterOutput();
output.put("__Time__", DateUtil.date().toString());
output.merge(CounterBuilder.globalCounterBuilder.toDynObj());
output.put("__IPS__", IpUtils.getHostIPs(true));
output.put("__THREADS__", ThreadHelper.buildThreadsSimpleInfos(null));
output.put("__ComponentInfo__", XJsonUtils.toJson(ManifestComponentInfoHelper.getManifestComponentInfo("pps", "pps-core-base")).replace("\"", ""));
return XSingleResult.success(output);
}
/**
* 读取集群计数器
*
* @param context
* @return
*/
@XText("获取集群全局计数器")
@XApiGet
public XSingleResult<MyCounterOutput> getClusterGlobalCounter(XContext context) {
try {
MyCounterOutput finalOutput = new MyCounterOutput();
String cacheType = XStartup.getCurrent().getProperty("x.cache.type");
String appClusterName = CounterJob5S.getAppClusterName();
String appClusterLockName = CounterJob5S.getAppClusterLockName();
if ("redis-cluster".equals(cacheType)) {
JedisHelper.consumeDefalutJedisCluster(jedis -> {
Set<String> nodeKeys = jedis.smembers(appClusterName);
finalOutput.put("NODES", XJsonUtils.toJson(nodeKeys));
finalOutput.put("MASTER", jedis.get(appClusterLockName));
nodeKeys.forEach(k -> {
if (jedis.exists(k)) {
String dynObjJson = jedis.get(k);
DynObj dynObj = XJsonUtils.toObject(dynObjJson, DynObj.class);
String owner = dynObj.getString(CounterBuilder.COUNTER_NAME_OWNER);
if (CharSequenceUtil.isBlank(owner)) {
owner = dynObj.getString(CounterBuilder.COUNTER_NAME_INSTANCE);
}
finalOutput.put(owner, dynObj);
}
});
});
} else {
JedisHelper.consumeDefalutJedis(jedis -> {
Set<String> nodeKeys = jedis.smembers(appClusterName);
finalOutput.put("NODES", XJsonUtils.toJson(nodeKeys));
finalOutput.put("MASTER", jedis.get(appClusterLockName));
nodeKeys.forEach(k -> {
if (jedis.exists(k)) {
String dynObjJson = jedis.get(k);
DynObj dynObj = XJsonUtils.toObject(dynObjJson, DynObj.class);
String owner = dynObj.getString(CounterBuilder.COUNTER_NAME_OWNER);
if (CharSequenceUtil.isBlank(owner)) {
owner = dynObj.getString(CounterBuilder.COUNTER_NAME_INSTANCE);
}
finalOutput.put(owner, dynObj);
}
});
});
}
return XSingleResult.success(finalOutput);
} catch (Exception ex) {
CounterBuilder.globalCounterBuilder.addCounter(ex, this.getClass());
return XSingleResult.error(200, ex.getMessage());
}
}
@XText("threads")
@XApiGet
public XSingleResult<MyCounterOutput> getThreads(XContext context) {
StringBuilder sb = new StringBuilder();
ThreadHelper.buildThreadsInfos(sb);
List<String> list = Splitter.on(LINE_SEPERATOR).splitToList(sb.toString());
MyCounterOutput output = new MyCounterOutput();
output.put("threads", list);
return XSingleResult.success(output);
}
}
\ No newline at end of file
package pps.core.base.service.data;
import pps.core.common.service.data.CounterOutput;
public class MyCounterOutput extends CounterOutput {
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment