|
|
|
@ -3,15 +3,9 @@ package com.xydl.cac.thermal;
|
|
|
|
|
import com.hcsdk.HCNetSDK;
|
|
|
|
|
import com.sun.jna.Pointer;
|
|
|
|
|
import com.xydl.cac.entity.NSensor;
|
|
|
|
|
import com.xydl.cac.entity.ThermalConfig;
|
|
|
|
|
import com.xydl.cac.model.StaticVariable;
|
|
|
|
|
import com.xydl.cac.service.DataService;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class HCRemoteConfigCallBack implements HCNetSDK.FRemoteConfigCallBack {
|
|
|
|
@ -19,43 +13,38 @@ public class HCRemoteConfigCallBack implements HCNetSDK.FRemoteConfigCallBack {
|
|
|
|
|
public boolean done;
|
|
|
|
|
public NSensor item;
|
|
|
|
|
public String time;
|
|
|
|
|
public ThermalConfig config;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
DataService dataService;
|
|
|
|
|
public HCThermalService service;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void invoke(int dwType, Pointer lpBuffer, int dwBufLen, Pointer pUserData) {
|
|
|
|
|
if (done) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
HCNetSDK.NET_DVR_THERMOMETRY_UPLOAD data = new HCNetSDK.NET_DVR_THERMOMETRY_UPLOAD();
|
|
|
|
|
Pointer pointer = data.getPointer();
|
|
|
|
|
pointer.write(0, lpBuffer.getByteArray(0, data.size()), 0, data.size());
|
|
|
|
|
data.read();
|
|
|
|
|
float fAverageTemperature = data.struLinePolygonThermCfg.fAverageTemperature;
|
|
|
|
|
float fMinTemperature = data.struLinePolygonThermCfg.fMinTemperature;
|
|
|
|
|
float fMaxTemperature = data.struLinePolygonThermCfg.fMaxTemperature;
|
|
|
|
|
log.info("海康热成像采集到max=" + fMaxTemperature + ", min=" + fMinTemperature + ", aver=" + fAverageTemperature);
|
|
|
|
|
float max, min, aver;
|
|
|
|
|
if (0 == data.byRuleCalibType) {
|
|
|
|
|
max = data.struPointThermCfg.fTemperature;
|
|
|
|
|
min = max;
|
|
|
|
|
aver = max;
|
|
|
|
|
log.info("海康热成像采集到max=" + max + ", min=" + min + ", aver=" + aver);
|
|
|
|
|
service.save(item.getTableName(), item.getDevId(),
|
|
|
|
|
max, min, aver, time);
|
|
|
|
|
done = true;
|
|
|
|
|
} else if (1 == data.byRuleCalibType || 2 == data.byRuleCalibType) {
|
|
|
|
|
max = data.struLinePolygonThermCfg.fAverageTemperature;
|
|
|
|
|
min = data.struLinePolygonThermCfg.fMinTemperature;
|
|
|
|
|
aver = data.struLinePolygonThermCfg.fMaxTemperature;
|
|
|
|
|
log.info("海康热成像采集到max=" + max + ", min=" + min + ", aver=" + aver);
|
|
|
|
|
service.save(item.getTableName(), item.getDevId(),
|
|
|
|
|
max, min, aver, time);
|
|
|
|
|
done = true;
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(config.getMaxtemp())) {
|
|
|
|
|
String value = String.valueOf(fMaxTemperature);
|
|
|
|
|
dataService.insertData(item.getTableName(), item.getDevId(), time, config.getMaxtemp(), value);
|
|
|
|
|
// 更新最新数据缓存
|
|
|
|
|
StaticVariable.updateLastData(item.getDevId(), config.getMaxtemp(), value, time);
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isNotBlank(config.getMintemp())) {
|
|
|
|
|
String value = String.valueOf(fMinTemperature);
|
|
|
|
|
dataService.insertData(item.getTableName(), item.getDevId(), time, config.getMintemp(), value);
|
|
|
|
|
// 更新最新数据缓存
|
|
|
|
|
StaticVariable.updateLastData(item.getDevId(), config.getMintemp(), value, time);
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isNotBlank(config.getAvertemp())) {
|
|
|
|
|
String value = String.valueOf(fAverageTemperature);
|
|
|
|
|
dataService.insertData(item.getTableName(), item.getDevId(), time, config.getAvertemp(), value);
|
|
|
|
|
// 更新最新数据缓存
|
|
|
|
|
StaticVariable.updateLastData(item.getDevId(), config.getAvertemp(), value, time);
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
log.error("HCRemoteConfigCallBack异常", ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|