Merge branch 'main' of https://git.jsspisoft.com/ry-das
This commit is contained in:
commit
6b41784001
@ -2,8 +2,6 @@ package com.das.modules.cache.domain;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class IotModelInfoCache {
|
public class IotModelInfoCache {
|
||||||
private Long iotModelId;
|
private Long iotModelId;
|
||||||
|
@ -10,7 +10,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.CopyOnWriteArraySet;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class IotModelCacheImpl implements IotModelCache {
|
public class IotModelCacheImpl implements IotModelCache {
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
package com.das.modules.calc.controller;
|
package com.das.modules.calc.controller;
|
||||||
|
|
||||||
import cn.hutool.core.io.FileUtil;
|
|
||||||
import com.das.common.result.R;
|
import com.das.common.result.R;
|
||||||
import com.das.modules.calc.domain.vo.CalcModuleVo;
|
import com.das.modules.calc.domain.vo.CalcModuleVo;
|
||||||
import com.das.modules.calc.service.CalcService;
|
import com.das.modules.calc.service.CalcService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.quartz.SchedulerException;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
@ -13,9 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -10,7 +10,6 @@ import java.io.BufferedReader;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@TableName("sys_calc_module")
|
@TableName("sys_calc_module")
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package com.das.modules.calc.functions;
|
package com.das.modules.calc.functions;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateField;
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import com.das.modules.cache.domain.DeviceInfoCache;
|
import com.das.modules.cache.domain.DeviceInfoCache;
|
||||||
import com.das.modules.cache.service.CacheService;
|
import com.das.modules.cache.service.CacheService;
|
||||||
import com.das.modules.data.service.DataService;
|
import com.das.modules.data.service.DataService;
|
||||||
|
@ -9,7 +9,6 @@ import lombok.SneakyThrows;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aviator扩展函数 - 获取设备实时数据
|
* Aviator扩展函数 - 获取设备实时数据
|
||||||
|
@ -30,27 +30,27 @@ public class FunctionOffsetDate extends AbstractFunction {
|
|||||||
public AviatorObject call(Map<String, Object> env, AviatorObject dateData, AviatorObject dimData, AviatorObject offsetData) {
|
public AviatorObject call(Map<String, Object> env, AviatorObject dateData, AviatorObject dimData, AviatorObject offsetData) {
|
||||||
Date date = (Date) dateData.getValue(env);
|
Date date = (Date) dateData.getValue(env);
|
||||||
String dim = (String) dimData.getValue(env);
|
String dim = (String) dimData.getValue(env);
|
||||||
Integer offset = (Integer) offsetData.getValue(env);
|
Long offset = (Long) offsetData.getValue(env);
|
||||||
|
|
||||||
Date result = null;
|
Date result = null;
|
||||||
switch (dim) {
|
switch (dim) {
|
||||||
case "day":
|
case "day":
|
||||||
result = DateUtil.offset(date, DateField.DAY_OF_MONTH, offset);
|
result = DateUtil.offset(date, DateField.DAY_OF_MONTH, offset.intValue());
|
||||||
break;
|
break;
|
||||||
case "month":
|
case "month":
|
||||||
result = DateUtil.offset(date, DateField.MONTH, offset);
|
result = DateUtil.offset(date, DateField.MONTH, offset.intValue());
|
||||||
break;
|
break;
|
||||||
case "year":
|
case "year":
|
||||||
result = DateUtil.offset(date, DateField.YEAR, offset);
|
result = DateUtil.offset(date, DateField.YEAR, offset.intValue());
|
||||||
break;
|
break;
|
||||||
case "hour":
|
case "hour":
|
||||||
result = DateUtil.offset(date, DateField.HOUR, offset);
|
result = DateUtil.offset(date, DateField.HOUR, offset.intValue());
|
||||||
break;
|
break;
|
||||||
case "minute":
|
case "minute":
|
||||||
result = DateUtil.offset(date, DateField.MINUTE, offset);
|
result = DateUtil.offset(date, DateField.MINUTE, offset.intValue());
|
||||||
break;
|
break;
|
||||||
case "second":
|
case "second":
|
||||||
result = DateUtil.offset(date, DateField.SECOND, offset);
|
result = DateUtil.offset(date, DateField.SECOND, offset.intValue());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
log.error("不支持的维度: {}", dim);
|
log.error("不支持的维度: {}", dim);
|
||||||
|
@ -5,7 +5,8 @@ import com.das.modules.cache.service.CacheService;
|
|||||||
import com.das.modules.data.domain.SnapshotValueQueryParam;
|
import com.das.modules.data.domain.SnapshotValueQueryParam;
|
||||||
import com.das.modules.data.service.DataService;
|
import com.das.modules.data.service.DataService;
|
||||||
import com.googlecode.aviator.runtime.function.AbstractFunction;
|
import com.googlecode.aviator.runtime.function.AbstractFunction;
|
||||||
import com.googlecode.aviator.runtime.type.*;
|
import com.googlecode.aviator.runtime.type.AviatorObject;
|
||||||
|
import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -12,7 +12,10 @@ import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType;
|
|||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aviator扩展函数 - 获取设备实时数据
|
* Aviator扩展函数 - 获取设备实时数据
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.das.modules.calc.functions;
|
package com.das.modules.calc.functions;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import com.das.modules.cache.domain.DeviceInfoCache;
|
import com.das.modules.cache.domain.DeviceInfoCache;
|
||||||
import com.das.modules.cache.service.CacheService;
|
import com.das.modules.cache.service.CacheService;
|
||||||
import com.das.modules.data.service.DataService;
|
import com.das.modules.data.service.DataService;
|
||||||
@ -8,12 +7,10 @@ import com.googlecode.aviator.runtime.function.AbstractFunction;
|
|||||||
import com.googlecode.aviator.runtime.type.AviatorNil;
|
import com.googlecode.aviator.runtime.type.AviatorNil;
|
||||||
import com.googlecode.aviator.runtime.type.AviatorObject;
|
import com.googlecode.aviator.runtime.type.AviatorObject;
|
||||||
import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType;
|
import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType;
|
||||||
import lombok.Data;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aviator扩展函数 - 获取时间维度内最早的一条数据
|
* Aviator扩展函数 - 获取时间维度内最早的一条数据
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
package com.das.modules.calc.functions;
|
package com.das.modules.calc.functions;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUnit;
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.das.modules.cache.domain.DeviceInfoCache;
|
import com.das.modules.cache.domain.DeviceInfoCache;
|
||||||
import com.das.modules.cache.service.CacheService;
|
import com.das.modules.cache.service.CacheService;
|
||||||
import com.das.modules.data.domain.SnapshotValueQueryParam;
|
|
||||||
import com.das.modules.data.service.DataService;
|
import com.das.modules.data.service.DataService;
|
||||||
import com.googlecode.aviator.runtime.function.AbstractFunction;
|
import com.googlecode.aviator.runtime.function.AbstractFunction;
|
||||||
import com.googlecode.aviator.runtime.type.AviatorNil;
|
import com.googlecode.aviator.runtime.type.AviatorNil;
|
||||||
@ -14,8 +12,6 @@ import lombok.Data;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
@ -11,7 +11,6 @@ import com.googlecode.aviator.runtime.type.AviatorObject;
|
|||||||
import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType;
|
import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ import com.das.modules.cache.service.CacheService;
|
|||||||
import com.das.modules.calc.domain.entity.CalcModule;
|
import com.das.modules.calc.domain.entity.CalcModule;
|
||||||
import com.googlecode.aviator.AviatorEvaluatorInstance;
|
import com.googlecode.aviator.AviatorEvaluatorInstance;
|
||||||
import com.googlecode.aviator.Expression;
|
import com.googlecode.aviator.Expression;
|
||||||
import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.quartz.Job;
|
import org.quartz.Job;
|
||||||
import org.quartz.JobDataMap;
|
import org.quartz.JobDataMap;
|
||||||
|
@ -2,6 +2,7 @@ package com.das.modules.calc.service;
|
|||||||
|
|
||||||
import cn.hutool.core.codec.Base64Encoder;
|
import cn.hutool.core.codec.Base64Encoder;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.das.common.utils.AdminRedisTemplate;
|
import com.das.common.utils.AdminRedisTemplate;
|
||||||
import com.das.modules.cache.service.CacheService;
|
import com.das.modules.cache.service.CacheService;
|
||||||
import com.das.modules.calc.domain.entity.CalcModule;
|
import com.das.modules.calc.domain.entity.CalcModule;
|
||||||
@ -134,6 +135,9 @@ public class CalcService {
|
|||||||
|
|
||||||
FunctionOffsetDate offsetDate = new FunctionOffsetDate();
|
FunctionOffsetDate offsetDate = new FunctionOffsetDate();
|
||||||
aviator.addFunction(offsetDate);
|
aviator.addFunction(offsetDate);
|
||||||
|
|
||||||
|
FunctionWindSpeedFactor windSpeedFactor = new FunctionWindSpeedFactor(dataService,cacheService);
|
||||||
|
aviator.addFunction(windSpeedFactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -176,7 +180,9 @@ public class CalcService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public List<CalcModuleVo> queryCalcModules() {
|
public List<CalcModuleVo> queryCalcModules() {
|
||||||
List<CalcModule> scriptModules = calcModuleMapper.selectList(null);
|
LambdaQueryWrapper<CalcModule> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.orderByAsc(CalcModule::getLocalName);
|
||||||
|
List<CalcModule> scriptModules = calcModuleMapper.selectList(queryWrapper);
|
||||||
|
|
||||||
return scriptModules.stream().map(CalcModuleVo::of).toList();
|
return scriptModules.stream().map(CalcModuleVo::of).toList();
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ public class HeartbeatCommand implements BaseCommand{
|
|||||||
}
|
}
|
||||||
//判断是不是风机
|
//判断是不是风机
|
||||||
String keyPLCDeviceStatus = String.format("RT:%d:iturbineoperationmode", deviceId);
|
String keyPLCDeviceStatus = String.format("RT:%d:iturbineoperationmode", deviceId);
|
||||||
String keyCommFaultState = String.format("RT:%d:commfaultstate");
|
String keyCommFaultState = String.format("RT:%d:commfaultstate",deviceId);
|
||||||
Integer plcDeviceStatus = adminRedisTemplate.get(keyPLCDeviceStatus);
|
Integer plcDeviceStatus = adminRedisTemplate.get(keyPLCDeviceStatus);
|
||||||
if (plcDeviceStatus == null){
|
if (plcDeviceStatus == null){
|
||||||
adminRedisTemplate.set(keyCommFaultState, online ? 0 : 1);
|
adminRedisTemplate.set(keyCommFaultState, online ? 0 : 1);
|
||||||
|
@ -376,13 +376,16 @@ PS: 同一节点只允许建立一条连接。
|
|||||||
"dataTime": 123123123123,
|
"dataTime": 123123123123,
|
||||||
//设备ID
|
//设备ID
|
||||||
"deviceId": "1123451235464",
|
"deviceId": "1123451235464",
|
||||||
//是否存储历史数据
|
|
||||||
"isStore": true,
|
|
||||||
"values": {
|
"values": {
|
||||||
//key为属性名
|
//key为属性名
|
||||||
"Ia": 123.1,
|
"Ia": 123.1,
|
||||||
"Ib": 122.1,
|
"Ib": 122.1,
|
||||||
"Ic": 123.1
|
"Ic": 123.1
|
||||||
|
},
|
||||||
|
//需要归档的数据
|
||||||
|
"archiveValues":{
|
||||||
|
"P": 1234.12,
|
||||||
|
"Q": 12
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -402,11 +405,13 @@ PS: 同一节点只允许建立一条连接。
|
|||||||
"dataTime": 123123123123,
|
"dataTime": 123123123123,
|
||||||
//设备ID
|
//设备ID
|
||||||
"deviceId": "1123451235464",
|
"deviceId": "1123451235464",
|
||||||
//是否存储历史数据
|
|
||||||
"isStore": true,
|
|
||||||
"values": {
|
"values": {
|
||||||
//key为属性名
|
//key为属性名
|
||||||
"Switch01": 1
|
"Switch01": 1
|
||||||
|
},
|
||||||
|
//需要归档的数据
|
||||||
|
"archiveValues":{
|
||||||
|
"Fault001": 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
Loading…
Reference in New Issue
Block a user