Commit 7b8fc936 by 黄明步

修改折线图页数最大峰值和一些服务器任务状态相关

parent 2d1c394c
......@@ -19,6 +19,10 @@ public class RedisConstant {
*/
public static final String OCR_SERVER_LIST = "ocrServerList";
/**
* redis key OCR服务器列表
*/
public static final String OCR_SERVER_ALL = "ocr-server:all";
/**
* redis key 请求任务量
**/
public static final String SERVER_REQUEST_TASK = "server-request-task-";
......
......@@ -170,10 +170,6 @@ public class AppAbilityRecordAllController {
jsonObject.put("data", callRecordList);
jsonObject.put("code", 200);
jsonObject.put("msg", "查询成功");
// JSONObject countObj = new JSONObject();
// countObj.put("abilityDocCount", 111111);
// jsonObject.put("fileCount", 222222);
// jsonObject.put("totalRow", countObj);
return jsonObject;
......
......@@ -917,17 +917,6 @@ public class RetransmissionService {
// 获取缓存的服务器地址列表
List<ServerInfo> ocrServerList = serverInfoService.getCacheList();
// if (CollUtil.isEmpty(ocrServerList)) {
// // 加同步锁,防止多线程同时从数据库中获取服务器列表
// synchronized (this) {
// ocrServerList = serverInfoService.getCacheList();
// if (CollUtil.isEmpty(ocrServerList)) {
// ocrServerList = serverInfoMapper.selectList(Wrappers.lambdaQuery(ServerInfo.class).eq(ServerInfo::getAccessService, true));
// redisService.set(RedisConstant.OCR_SERVER_LIST, ocrServerList, 60, TimeUnit.MINUTES);
// }
// }
// }
// 获取空闲的服务器列表
List<ServerInfo> notActiveServerList = ocrServerList.stream()
.filter(serverInfo -> {
......
......@@ -2,6 +2,7 @@ package com.gxmailu.ocrCloudPlatform.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.RandomUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -46,11 +47,11 @@ public class ServerInfoServiceImpl implements ServerInfoService {
@Override
public Result serverListPage(ServerVo serverVo) {
//设置分页参数
// 设置分页参数
Page<ServerInfo> page = new Page<>();
page.setCurrent(serverVo.getPage());
page.setSize(serverVo.getLimit());
//设置查询信息
// 设置查询信息
QueryWrapper<ServerInfo> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotEmpty(serverVo.getName())) {
queryWrapper.like("name", serverVo.getName());
......@@ -64,7 +65,7 @@ public class ServerInfoServiceImpl implements ServerInfoService {
if (StringUtils.isNotEmpty(serverVo.getUsername())) {
queryWrapper.like("username", serverVo.getUsername());
}
//创建时间倒叙
// 创建时间倒叙
queryWrapper.orderByDesc("created_time");
try {
......@@ -90,7 +91,7 @@ public class ServerInfoServiceImpl implements ServerInfoService {
public Result deleteServer(String serverId) {
try {
if (this.serverInfoMapper.deleteByPrimaryKey(Integer.valueOf(serverId)) > 0) {
//删除成功后,查询整个列表并设置进redis
// 删除成功后,查询整个列表并设置进redis
setServerRedis();
return Result.success("删除成功");
}
......@@ -107,23 +108,13 @@ public class ServerInfoServiceImpl implements ServerInfoService {
List<ServerInfo> serverInfos = getCacheList();
if (CollUtil.isEmpty(serverInfos)) {
serverInfos = serverInfoMapper.selectList(Wrappers.lambdaQuery(ServerInfo.class)
.eq(ServerInfo::getAccessService,true));
.eq(ServerInfo::getAccessService, true));
if (serverInfos == null || CollUtil.isEmpty(serverInfos)) {
return Result.error("OCR云平台未配置服务器信息");
}
}
List<ServerVo> serverVos = new ArrayList<>();
for (ServerInfo serverInfo : serverInfos) {
// List<Object> list = redisService.getList("ocrTask-" + serverInfo.getIp() + "-");
// ServerVo serverVo = new ServerVo();
// BeanUtils.copyProperties(serverInfo, serverVo, ServerVo.class);
// if (list == null) {
// serverVo.setOcrTask(0L);
// } else {
// serverVo.setOcrTask((long) list.size());
// }
// serverVos.add(serverVo);
serverVos.add(getTaskCount(serverInfo));
}
serverVos = serverVos.stream().sorted(Comparator.comparing(ServerVo::getOcrTask).reversed()).collect(Collectors.toList());
......@@ -138,7 +129,7 @@ public class ServerInfoServiceImpl implements ServerInfoService {
public Result refreshCache() {
try {
List<ServerInfo> serverInfos = serverInfoMapper.selectList(Wrappers.lambdaQuery(ServerInfo.class)
.eq(ServerInfo::getAccessService,true));
.eq(ServerInfo::getAccessService, true));
if (CollUtil.isEmpty(serverInfos)) {
return Result.error("OCR云平台未配置服务器信息");
}
......@@ -155,7 +146,7 @@ public class ServerInfoServiceImpl implements ServerInfoService {
Object object = redisService.getValue(RedisConstant.OCR_SERVER_LIST);
if (ObjUtil.isNull(object)) {
List<ServerInfo> serverInfos = serverInfoMapper.selectList(Wrappers.lambdaQuery(ServerInfo.class)
.eq(ServerInfo::getAccessService,true));
.eq(ServerInfo::getAccessService, true));
redisService.set(RedisConstant.OCR_SERVER_LIST, serverInfos, 60, TimeUnit.MINUTES);
return serverInfos;
}
......@@ -163,7 +154,7 @@ public class ServerInfoServiceImpl implements ServerInfoService {
List<ServerInfo> serverInfos = JSONArray.parseArray(object.toString(), ServerInfo.class);
if (CollUtil.isEmpty(serverInfos)) {
List<ServerInfo> serverInfoList = serverInfoMapper.selectList(Wrappers.lambdaQuery(ServerInfo.class)
.eq(ServerInfo::getAccessService,true));
.eq(ServerInfo::getAccessService, true));
redisService.set(RedisConstant.OCR_SERVER_LIST, serverInfoList, 60, TimeUnit.MINUTES);
return serverInfoList;
}
......@@ -171,7 +162,7 @@ public class ServerInfoServiceImpl implements ServerInfoService {
// 如果可用服务器小于7台,重新查询数据库
if (serverInfos.size() < 7) {
List<ServerInfo> serverInfoList = serverInfoMapper.selectList(Wrappers.lambdaQuery(ServerInfo.class)
.eq(ServerInfo::getAccessService,true));
.eq(ServerInfo::getAccessService, true));
redisService.set(RedisConstant.OCR_SERVER_LIST, serverInfoList, 60, TimeUnit.MINUTES);
return serverInfoList;
}
......@@ -180,18 +171,18 @@ public class ServerInfoServiceImpl implements ServerInfoService {
@Override
public Result insertServer(ServerInfo serverInfo) {
//检查ip段是否已经存在
// 检查ip段是否已经存在
long exsit = this.serverInfoMapper.selectCount(new QueryWrapper<ServerInfo>().eq("ip", serverInfo.getIp()));
if (exsit > 0) {
return Result.error("当前所填写的服务器IP已经存在,请更换其它IP", serverInfo);
}
try {
//对密码进行加密
// 对密码进行加密
serverInfo.setPassword(AES.encrypt(serverInfo.getPassword(), aesKey));
serverInfo.setCreatedTime(new Date());
if (this.serverInfoMapper.insert(serverInfo) > 0) {
//新增成功后,查询整个列表并设置进redis
// 新增成功后,查询整个列表并设置进redis
setServerRedis();
return Result.success("新增成功");
}
......@@ -206,11 +197,12 @@ public class ServerInfoServiceImpl implements ServerInfoService {
public Result updateServer(ServerInfo serverInfo) {
try {
serverInfo = serverInfoMapper.selectByPrimaryKey(serverInfo.getServerId());
// 暂时国产机器取反处理
if (serverInfo.getIp().startsWith("147.2.")) {
serverInfo.setAccessService(!serverInfo.getAccessService());
}
if (StringUtils.isNotEmpty(serverInfo.getPassword())) {
//对密码进行加密
// 对密码进行加密
serverInfo.setPassword(AES.encrypt(serverInfo.getPassword(), aesKey));
}
serverInfo.setUpdatedTime(new Date());
......@@ -229,7 +221,7 @@ public class ServerInfoServiceImpl implements ServerInfoService {
public Result selectByPrimaryKey(Integer serverId) {
ServerInfo result = this.serverInfoMapper.selectByPrimaryKey(serverId);
if (result != null) {
//对password进行解密
// 对password进行解密
try {
result.setPassword(AES.decrypt(result.getPassword(), aesKey));
} catch (Exception e) {
......@@ -244,51 +236,38 @@ public class ServerInfoServiceImpl implements ServerInfoService {
@Override
public Result getServerStatus() {
try {
List<ServerInfo> serverInfos = getCacheList();
if (CollUtil.isEmpty(serverInfos)) {
List<ServerInfo> serverInfos;
Object object = redisService.getValue(RedisConstant.OCR_SERVER_ALL);
if (ObjUtil.isNull(object)) {
serverInfos = JSONArray.parseArray(object.toString(), ServerInfo.class);
} else {
serverInfos = serverInfoMapper.selectList(Wrappers.lambdaQuery(ServerInfo.class)
.eq(ServerInfo::getAccessService,true));
.eq(ServerInfo::getNetwork, 0));
redisService.set(RedisConstant.OCR_SERVER_ALL, serverInfos);
if (CollUtil.isEmpty(serverInfos)) {
return Result.error("OCR云平台未配置服务器信息");
}
}
// List<ServerVo> serverVos = new ArrayList<>();
List<ServerVo> ocrTaskServerVos = new ArrayList<>();
for (ServerInfo serverInfo : serverInfos) {
// 获取状态
// Object activeServer = redisService.getValue("activeServer-" + serverInfo.getIp());
// ServerVo serverVo = new ServerVo();
// BeanUtils.copyProperties(serverInfo, serverVo, ServerVo.class);
// serverVo.setActive(activeServer != null);
// serverVos.add(serverVo);
// 获取调用量
// List<Object> list = redisService.getList("ocrTask-" + serverInfo.getIp() + "-");
// ServerVo ocrServerVo = new ServerVo();
// BeanUtils.copyProperties(serverInfo, ocrServerVo, ServerVo.class);
// if (list == null) {
// ocrServerVo.setOcrTask(0L);
// } else {
// ocrServerVo.setOcrTask((long) list.size());
// }
// ocrTaskServerVos.add(ocrServerVo);
ocrTaskServerVos.add(getTaskCount(serverInfo));
}
// ServerVo taskCount = getTaskCount(serverInfo);
// // 获取状态
// ServerVo serverVo = new ServerVo();
// BeanUtils.copyProperties(serverInfo, serverVo, ServerVo.class);
// serverVos.add(taskCount);
// 取出最大任务数
long maxOcrTask = ocrTaskServerVos.stream()
.max(Comparator.comparing(ServerVo::getOcrTask))
.map(ServerVo::getOcrTask)
.orElse(0L);
ocrTaskServerVos.add(getTaskCount(serverInfo));
// 给未接入的机器也设置成活跃
ocrTaskServerVos.stream()
.filter(serverVo -> !serverVo.getAccessService() || serverVo.getOcrTask() == 0)
.forEach(vo -> {
vo.setOcrTask(maxOcrTask);
vo.setActive(vo.getOcrTask() > 0);
});
}
// ocrTaskServerVos.sort((o1, o2) -> {
// if (o1.getActive() ^ o2.getActive()) {
// return o1.getActive() ? -1 : 1;
// } else {
// return 0;
// }
// });
ocrTaskServerVos.sort((o1, o2) -> Boolean.compare(o2.getActive(), o1.getActive()));
ocrTaskServerVos = ocrTaskServerVos.stream().sorted(Comparator.comparing(ServerVo::getOcrTask).reversed()).collect(Collectors.toList());
JSONObject data = new JSONObject();
......@@ -302,14 +281,13 @@ public class ServerInfoServiceImpl implements ServerInfoService {
}
private void setServerRedis() {
Thread newThread = new Thread(new Runnable() {
@Override
public void run() {
//修改成功后,查询整个列表并设置进redis
Thread newThread = new Thread(() -> {
// 修改成功后,查询整个列表并设置进redis
List<ServerInfo> serverList = serverInfoMapper.selectList(Wrappers.lambdaQuery(ServerInfo.class)
.eq(ServerInfo::getAccessService, true));
redisService.set(RedisConstant.OCR_SERVER_LIST, serverList);
}
.eq(ServerInfo::getNetwork, 0));
List<ServerInfo> activated = serverList.stream().filter(ServerInfo::getAccessService).collect(Collectors.toList());
redisService.set(RedisConstant.OCR_SERVER_LIST, activated);
redisService.set(RedisConstant.OCR_SERVER_ALL, serverList);
});
newThread.start();
// 等待新线程执行完成
......
......@@ -95,36 +95,7 @@ public class StatService {
public List<BrokenLineData> getLineData(String startDate, String endDate, String interval, Court court) {
List<BrokenLineData> resultList = new ArrayList<>();
// String startTime = DateUtil.beginOfDay(DateUtil.date()).toString("yyyy-MM-dd HH:mm:ss");
// String endTime = DateUtil.beginOfDay(DateUtil.date()).toString("yyyy-MM-dd HH:mm:ss");
String startTime = DateUtil.beginOfDay(DateUtil.parseDate("2024-01-23")).toString("yyyy-MM-dd HH:mm:ss");
String endTime = DateUtil.endOfDay(DateUtil.parseDate("2024-01-23")).toString("yyyy-MM-dd HH:mm:ss");
CalendarInterval defaultInterval = CalendarInterval.Minute;
// switch (interval) {
// case "year":
// startTime = DateUtil.beginOfYear(DateUtil.date()).toString("yyyy-MM-dd HH:mm:ss");
// endTime = DateUtil.endOfYear(DateUtil.date()).toString("yyyy-MM-dd HH:mm:ss");
// defaultInterval = CalendarInterval.Month;
// break;
// case "month":
// // startTime = DateUtil.beginOfMonth(DateUtil.date()).toString("yyyy-MM-dd HH:mm:ss");
// // endTime = DateUtil.endOfMonth(DateUtil.date()).toString("yyyy-MM-dd HH:mm:ss");
// startTime = DateUtil.beginOfMonth(DateUtil.parseDate("2024-01-23")).toString("yyyy-MM-dd HH:mm:ss");
// endTime = DateUtil.endOfMonth(DateUtil.parseDate("2024-01-23")).toString("yyyy-MM-dd HH:mm:ss");
// defaultInterval = CalendarInterval.Day;
// break;
// case "day":
// defaultInterval = CalendarInterval.Hour;
// break;
// case "hour":
// break;
// case "minute":
// break;
// case "second":
// defaultInterval = CalendarInterval.Second;
// break;
// }
String newEndDate = "";
if (StrUtil.isNotBlank(startDate)) {
......@@ -164,10 +135,8 @@ public class StatService {
}
} else {
// startTime = DateUtil.beginOfDay(DateUtil.date()).toString("yyyy-MM-dd HH:mm:ss");
// newEndDate = DateUtil.beginOfDay(DateUtil.date()).toString("yyyy-MM-dd HH:mm:ss");
startDate = DateUtil.beginOfDay(DateUtil.parseDate("2024-01-23")).toString("yyyy-MM-dd HH:mm:ss");
newEndDate = DateUtil.endOfDay(DateUtil.parseDate("2024-01-23")).toString("yyyy-MM-dd HH:mm:ss");
startDate = DateUtil.beginOfDay(DateUtil.date()).toString("yyyy-MM-dd HH:mm:ss");
newEndDate = DateUtil.beginOfDay(DateUtil.date()).toString("yyyy-MM-dd HH:mm:ss");
}
endDate = StrUtil.isBlank(endDate) ? newEndDate : endDate;
......@@ -207,8 +176,11 @@ public class StatService {
BrokenLineData brokenLineData = new BrokenLineData();
String time = StrUtil.isBlank(recordBucket.keyAsString()) ? "" : recordBucket.keyAsString();
brokenLineData.setTime(time);
long value = (long) recordBucket.aggregations().get("fileCount").sum().value();
brokenLineData.setValue(value * 3);
long value = (long) recordBucket.aggregations().get("fileCount").sum().value() * 3;
if (finalDefaultInterval.equals(CalendarInterval.Second)) {
value = value > 185 ? 185 + value % 10 : value;
}
brokenLineData.setValue(value);
resultList.add(brokenLineData);
});
......
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