This commit is contained in:
高云鹏 2024-12-06 10:56:25 +08:00
commit 6b41784001
16 changed files with 30 additions and 35 deletions

View File

@ -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;

View File

@ -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 {

View File

@ -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;

View File

@ -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")

View File

@ -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;

View File

@ -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扩展函数 - 获取设备实时数据

View File

@ -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);

View File

@ -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;

View File

@ -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扩展函数 - 获取设备实时数据

View File

@ -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扩展函数 - 获取时间维度内最早的一条数据

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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();
} }

View File

@ -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);

View File

@ -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
} }
} }
``` ```