opt:优化秒级接口查询;

This commit is contained in:
2024-10-11 21:42:05 +08:00
parent 3ddf71077e
commit e8c507fe11
7 changed files with 122 additions and 92 deletions

View File

@@ -501,38 +501,52 @@ public class CockpitServiceImpl implements CockpitService {
return item;
};
// AGV
JSONArray agvInfos = (JSONArray) redisUtils.get("AGV1");
int agvFaultNum = (int) agvInfos.stream()
.map(object -> (JSONObject) object)
.filter(jsonObject -> AcsDefineEnum.AGV_STATUS.code("故障中").equals(jsonObject.getString("device_status")))
.count();
int agvNormalNum = agvInfos.size() - agvFaultNum;
JSONArray agvInfos = (JSONArray) redisUtils.get("agv");
int agvFaultNum = 0;
int agvNormalNum = 0;
if (ObjectUtil.isNotEmpty(agvInfos)) {
agvFaultNum = (int) agvInfos.stream()
.map(object -> (JSONObject) object)
.filter(jsonObject -> AcsDefineEnum.AGV_STATUS.code("故障中").equals(jsonObject.getString("device_status")))
.count();
agvNormalNum = agvInfos.size() - agvFaultNum;
}
List<Map<String, Object>> agv_info = Arrays.asList(
createItem.apply("0").apply(agvNormalNum),
createItem.apply("1").apply(agvFaultNum)
);
// RGV
JSONArray rgvInfos = (JSONArray) redisUtils.get("RGV1");
int rgvFaultNum = (int) rgvInfos.stream()
.map(object -> (JSONObject) object)
.filter(jsonObject -> StringUtils.isNotBlank(jsonObject.getString("Error")))
.count();
int rgvNormalNum = rgvInfos.size() - rgvFaultNum;
int rgvFaultNum = 0;
int rgvNormalNum = 0;
JSONArray rgvInfos = (JSONArray) redisUtils.get("rgv");
if (ObjectUtil.isNotEmpty(rgvInfos)) {
rgvFaultNum = (int) rgvInfos.stream()
.map(object -> (JSONObject) object)
.filter(jsonObject -> StringUtils.isNotBlank(jsonObject.getString("Error")))
.count();
rgvNormalNum = rgvInfos.size() - rgvFaultNum;
}
List<Map<String, Object>> rgv_info = Arrays.asList(
createItem.apply("0").apply(rgvNormalNum),
createItem.apply("1").apply(rgvFaultNum)
);
// 输送线
JSONArray conveyorInfos = (JSONArray) redisUtils.get("site1");
int ptConveyorNum = (int) conveyorInfos.stream()
.map(object -> (JSONObject) object)
.filter(jsonObject -> AcsDefineEnum.VEHICLE_TYPE.code("普涂").equals(jsonObject.getString("pallet_type")))
.count();
int ltConveyorNum = (int) conveyorInfos.stream()
.map(object -> (JSONObject) object)
.filter(jsonObject -> AcsDefineEnum.VEHICLE_TYPE.code("连涂").equals(jsonObject.getString("pallet_type")))
.count();
int emptyConveyorNum = conveyorInfos.size() - ptConveyorNum - ltConveyorNum;
int ptConveyorNum = 0;
int ltConveyorNum = 0;
int emptyConveyorNum = 0;
JSONArray conveyorInfos = (JSONArray) redisUtils.get("site");
if (ObjectUtil.isNotEmpty(conveyorInfos)) {
ptConveyorNum = (int) conveyorInfos.stream()
.map(object -> (JSONObject) object)
.filter(jsonObject -> AcsDefineEnum.VEHICLE_TYPE.code("普涂").equals(jsonObject.getString("pallet_type")))
.count();
ltConveyorNum = (int) conveyorInfos.stream()
.map(object -> (JSONObject) object)
.filter(jsonObject -> AcsDefineEnum.VEHICLE_TYPE.code("连涂").equals(jsonObject.getString("pallet_type")))
.count();
emptyConveyorNum = conveyorInfos.size() - ptConveyorNum - ltConveyorNum;
}
List<Map<String, Object>> conveyor_info = Arrays.asList(
createItem.apply("2").apply(ltConveyorNum),
createItem.apply("3").apply(ptConveyorNum),
@@ -543,7 +557,7 @@ public class CockpitServiceImpl implements CockpitService {
device_status.put("conveyor_info", conveyor_info);
//实时故障告警
List<Map<String, Object>> fault_alarm = cockpitMapper.faultAlarm();
faultAlarmDefault(fault_alarm, "AGV08");
//faultAlarmDefault(fault_alarm, "AGV08");
//近30日故障统计
JSONArray monthly_fault_statistics = cockpitMapper.monthlyFaultStatistics();
//测试数据,上线后删除
@@ -576,7 +590,7 @@ public class CockpitServiceImpl implements CockpitService {
switch (type) {
case RegionCodeConstant.COATED_PLATE_LINE_AREA:
// 涂板线区域涂板线是作为一整台设备显示point设备点
JSONArray baoshijian = (JSONArray) redisUtils.get("baoshijian1");
JSONArray baoshijian = (JSONArray) redisUtils.get("baoshijian");
points = pointService.getSubSites(deviceCode);
res.put("device_code", deviceCode);
//todo 运行状态,信号缺失
@@ -653,7 +667,7 @@ public class CockpitServiceImpl implements CockpitService {
case RegionCodeConstant.CURING_ZONE:
//固化室,需要显示整个设备+内部位置明细
points = pointService.getSubSites(deviceCode); // 小固化位置以及进出口(入口是不管的)
JSONArray guhuashi = (JSONArray) redisUtils.get("guhuashi1");
JSONArray guhuashi = (JSONArray) redisUtils.get("guhuashi");
for (Object object : guhuashi) {
res.put("device_code", deviceCode);
res.put("device_name", point.getPoint_name());
@@ -707,7 +721,7 @@ public class CockpitServiceImpl implements CockpitService {
res.put("device_name", point.getPoint_name());
res.put("material_type", ObjectUtil.isNotEmpty(point.getVehicle_type()) ? point.getVehicle_type() : "-");
res.put("end_time", "-");
JSONArray ssxInfos = (JSONArray) redisUtils.get("site1");
JSONArray ssxInfos = (JSONArray) redisUtils.get("site");
JSONArray ssxArray = new JSONArray();
for (int i = 0; i < points.size(); i++) {
SchBasePoint pointObj = points.get(i);
@@ -748,8 +762,11 @@ public class CockpitServiceImpl implements CockpitService {
}
break;
case RegionCodeConstant.VEHICLEINFO:
JSONArray agvInfos = (JSONArray) redisUtils.get("AGV1");
JSONArray rgvInfos = (JSONArray) redisUtils.get("RGV1");
JSONArray agvInfos = (JSONArray) redisUtils.get("agv");
JSONArray rgvInfos = (JSONArray) redisUtils.get("rgv");
if (ObjectUtil.isEmpty(agvInfos)) {
return res;
}
JSONObject vehicleInfo = agvInfos.stream()
.map(object -> (JSONObject) object)
.filter(jsonObject -> deviceCode.equals(jsonObject.getString("device_code")))
@@ -758,6 +775,9 @@ public class CockpitServiceImpl implements CockpitService {
if (ObjectUtil.isNotEmpty(vehicleInfo)) {
vehicleInfo.put("type", "AGV");
} else {
if (ObjectUtil.isEmpty(rgvInfos)) {
return res;
}
vehicleInfo = rgvInfos.stream()
.map(object -> (JSONObject) object)
.filter(jsonObject -> deviceCode.equals(jsonObject.getString("vehicle")))
@@ -893,8 +913,10 @@ public class CockpitServiceImpl implements CockpitService {
if (ObjectUtil.isNotEmpty(result)) {
JSONObject ghsDetailInfo = new JSONObject();
JSONArray ghsDetails = new JSONArray();
JSONArray guHuaShi = (JSONArray) redisUtils.get("guhuashi1");
array.add(guHuaShi);
JSONArray guHuaShi = (JSONArray) redisUtils.get("guhuashi");
if(ObjectUtil.isNotEmpty(guHuaShi)) {
array.add(guHuaShi);
}
// for (Object object : result) {
// //设备状态 按照lms点位管理来 1-无货2-有货3-进料4固化5出料6故障
// JSONObject d = (JSONObject) object;
@@ -917,13 +939,17 @@ public class CockpitServiceImpl implements CockpitService {
});
//查询保湿间信息
CompletableFuture<List<Map<String, Object>>> task2 = CompletableFuture.supplyAsync(() -> {
JSONArray baoShiJian = (JSONArray) redisUtils.get("baoshijian1");
JSONArray baoShiJian = (JSONArray) redisUtils.get("baoshijian");
//todo 设备状态待补充信号逻辑
for (Object object : baoShiJian) {
JSONObject jsonObject = (JSONObject) object;
if (StringUtils.isBlank(jsonObject.getString("device_status"))) {
jsonObject.put("device_status", "1");
if (ObjectUtil.isNotEmpty(baoShiJian)) {
for (Object object : baoShiJian) {
JSONObject jsonObject = (JSONObject) object;
if (StringUtils.isBlank(jsonObject.getString("device_status"))) {
jsonObject.put("device_status", "1");
}
}
} else {
array.add(new JSONArray());
}
array.add(baoShiJian);
return null;
@@ -934,14 +960,18 @@ public class CockpitServiceImpl implements CockpitService {
});
//查询检测站点数据
CompletableFuture<List<Map<String, Object>>> task3 = CompletableFuture.supplyAsync(() -> {
JSONArray site = (JSONArray) redisUtils.get("site1");
JSONArray site = (JSONArray) redisUtils.get("site");
//todo 待补充信号逻辑
for (Object object : site) {
JSONObject jsonObject = (JSONObject) object;
if (StringUtils.isBlank(jsonObject.getString("device_status"))) {
//0故障1正常
jsonObject.put("device_status", "1");
if (ObjectUtil.isNotEmpty(site)) {
for (Object object : site) {
JSONObject jsonObject = (JSONObject) object;
if (StringUtils.isBlank(jsonObject.getString("device_status"))) {
//0故障1正常
jsonObject.put("device_status", "1");
}
}
} else {
array.add(new JSONArray());
}
array.add(site);
return null;
@@ -952,19 +982,23 @@ public class CockpitServiceImpl implements CockpitService {
});
//查询AGV数据
CompletableFuture<List<Map<String, Object>>> task4 = CompletableFuture.supplyAsync(() -> {
JSONArray agv = (JSONArray) redisUtils.get("AGV1");
//todo 待补充信号逻辑
for (Object object : agv) {
JSONObject jsonObject = (JSONObject) object;
if (StringUtils.isBlank(jsonObject.getString("move"))) {
jsonObject.put("move", "0");
}
if (StringUtils.isBlank(jsonObject.getString("full"))) {
jsonObject.put("full", "0");
}
if (StringUtils.isBlank(jsonObject.getString("vehicle_type"))) {
jsonObject.put("vehicle_type", "0");
JSONArray agv = (JSONArray) redisUtils.get("agv");
if (ObjectUtil.isNotEmpty(agv)) {
//todo 待补充信号逻辑
for (Object object : agv) {
JSONObject jsonObject = (JSONObject) object;
if (StringUtils.isBlank(jsonObject.getString("move"))) {
jsonObject.put("move", "0");
}
if (StringUtils.isBlank(jsonObject.getString("full"))) {
jsonObject.put("full", "0");
}
if (StringUtils.isBlank(jsonObject.getString("vehicle_type"))) {
jsonObject.put("vehicle_type", "0");
}
}
} else {
agv = new JSONArray();
}
array.add(agv);
return null;
@@ -975,22 +1009,26 @@ public class CockpitServiceImpl implements CockpitService {
});
//查询RGV设备信息
CompletableFuture<List<Map<String, Object>>> task5 = CompletableFuture.supplyAsync(() -> {
JSONArray rgv = (JSONArray) redisUtils.get("RGV1");
//todo 待补充信号逻辑
for (Object object : rgv) {
JSONObject jsonObject = (JSONObject) object;
//todo 正式环境可以去除在ACS端处理运行状态
String device_status = StringUtils.isNotBlank(jsonObject.getString("status")) ? AcsDefineEnum.RGV_STATUS.check1(jsonObject.getString("status")) : "4";
jsonObject.put("device_status", device_status);
if (StringUtils.isBlank(jsonObject.getString("move"))) {
jsonObject.put("move", "0");
}
if (StringUtils.isBlank(jsonObject.getString("full"))) {
jsonObject.put("full", "0");
}
if (StringUtils.isBlank(jsonObject.getString("vehicle_type"))) {
jsonObject.put("vehicle_type", "0");
JSONArray rgv = (JSONArray) redisUtils.get("rgv");
if (ObjectUtil.isNotEmpty(rgv)) {
//todo 待补充信号逻辑
for (Object object : rgv) {
JSONObject jsonObject = (JSONObject) object;
//todo 正式环境可以去除在ACS端处理运行状态
String device_status = StringUtils.isNotBlank(jsonObject.getString("status")) ? AcsDefineEnum.RGV_STATUS.check1(jsonObject.getString("status")) : "4";
jsonObject.put("device_status", device_status);
if (StringUtils.isBlank(jsonObject.getString("move"))) {
jsonObject.put("move", "0");
}
if (StringUtils.isBlank(jsonObject.getString("full"))) {
jsonObject.put("full", "0");
}
if (StringUtils.isBlank(jsonObject.getString("vehicle_type"))) {
jsonObject.put("vehicle_type", "0");
}
}
} else {
rgv = new JSONArray();
}
array.add(rgv);
return null;

View File

@@ -6,7 +6,7 @@ spring:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3307}/${DB_NAME:lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
# url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:stand_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root}
password: ${DB_PWD:123456}
@@ -55,7 +55,8 @@ spring:
redis:
#数据库索引
database: ${REDIS_DB:2}
host: ${REDIS_HOST:127.0.0.1}
# host: ${REDIS_HOST:10.44.101.112}
host: ${REDIS_HOST:10.44.101.19}
port: ${REDIS_PORT:6379}
password: ${REDIS_PWD:}
@@ -152,9 +153,9 @@ sa-token:
token-session-check-login: false
alone-redis:
# Redis数据库索引默认为0
database: 2
database: 5
# Redis服务器地址
host: 127.0.0.1
host: 10.44.101.19
# Redis服务器连接端口
port: 6379
# Redis服务器连接密码默认为空

View File

@@ -112,6 +112,6 @@ mybatis-plus:
id-type: INPUT
lucene:
index:
path: C:\lucene\index
path: D:\lucene\index
tlog:
enable-invoke-time-print: true
enable-invoke-time-print: true