diff --git a/src/main/java/com/xydl/cac/task/ClientThermalTask.java b/src/main/java/com/xydl/cac/task/ClientThermalTask.java index c07d5df..a9bc0e2 100644 --- a/src/main/java/com/xydl/cac/task/ClientThermalTask.java +++ b/src/main/java/com/xydl/cac/task/ClientThermalTask.java @@ -77,25 +77,9 @@ public class ClientThermalTask { if (CollectionUtils.isEmpty(list)) { return; } - HashMap> map = new HashMap<>(); - for (NSensor sensor : list) { sensor.setTableName(modevType.getTablename()); - if (sensor.canTempMeasure()) { - String key = sensor.getIp() + sensor.getPort() + sensor.getUsername(); - List sub = map.get(key); - if (sub == null) { - sub = new ArrayList<>(); - map.put(key, sub); - } - sub.add(sensor); - } - } - Iterator it = map.keySet().iterator(); - while (it.hasNext()) { - String key = it.next(); - List sub = map.get(key); - collectService.collectAndSave(sub, config); } + collectService.collectAndSave(list, config); } } diff --git a/src/main/java/com/xydl/cac/thermal/DHThermalService.java b/src/main/java/com/xydl/cac/thermal/DHThermalService.java new file mode 100644 index 0000000..f63f2d4 --- /dev/null +++ b/src/main/java/com/xydl/cac/thermal/DHThermalService.java @@ -0,0 +1,85 @@ +package com.xydl.cac.thermal; + +import com.netsdk.lib.NetSDKLib; +import com.netsdk.module.LoginModule; +import com.netsdk.module.ThermalCameraModule; +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 com.xydl.cac.util.DateUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.PreDestroy; +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +@Service +@Slf4j +public class DHThermalService { + + @Resource + DataService dataService; + + int shutdown = 0; + + @PreDestroy + private void preDestroy() { + shutdown = 1; + } + + public void collectAndSave(List list, ThermalConfig config) { + if (shutdown == 1) { + return; + } + try { + LoginModule.init(null, null); + NSensor sensor = list.get(0); + boolean r = LoginModule.login(sensor.getIp(), sensor.getPort(), sensor.getUsername(), sensor.getPasswd()); + if (r) { + log.info("大华热成像登入成功" + sensor.getIp() + ":" + sensor.getPort() + + ", 用户名:" + sensor.getUsername() + ", 密码:" + sensor.getPasswd()); + } else { + log.error("大华热成像登入失败" + sensor.getIp() + ":" + sensor.getPort() + + ", 用户名:" + sensor.getUsername() + ", 密码:" + sensor.getPasswd()); + return; + } + String time = DateUtil.format(new Date()); + for (NSensor item : list) { + NetSDKLib.NET_RADIOMETRYINFO data = ThermalCameraModule.queryItemTemper(0, 0, sensor.getTmId(), sensor.getTmType()); + if (data == null) { + log.warn("大华热成像没有采集到数据, 序号" + item.getTmId() + "测量项目" + sensor.getTmType()); + } else { + log.info("大华热成像采集到序号" + item.getTmId() + "测量项目" + sensor.getTmType() + "的max=" + + data.fTemperMax + ", min=" + data.fTemperMin + ", aver=" + data.fTemperAver); + if (StringUtils.isNotBlank(config.getMaxtemp())) { + String value = String.valueOf(data.fTemperMax); + 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(data.fTemperMin); + 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(data.fTemperAver); + dataService.insertData(item.getTableName(), item.getDevId(), time, config.getAvertemp(), value); + // 更新最新数据缓存 + StaticVariable.updateLastData(item.getDevId(), config.getAvertemp(), value, time); + } + } + } + LoginModule.logout(); + } catch (Exception ex) { + log.error("大华热成像测温采集异常, " + ex.getMessage(), ex); + } finally { + LoginModule.cleanup(); + } + } +} diff --git a/src/main/java/com/xydl/cac/thermal/ThermalCollectService.java b/src/main/java/com/xydl/cac/thermal/ThermalCollectService.java index 3b13272..584cd39 100644 --- a/src/main/java/com/xydl/cac/thermal/ThermalCollectService.java +++ b/src/main/java/com/xydl/cac/thermal/ThermalCollectService.java @@ -1,73 +1,39 @@ package com.xydl.cac.thermal; -import com.netsdk.lib.NetSDKLib; -import com.netsdk.module.LoginModule; -import com.netsdk.module.ThermalCameraModule; 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 com.xydl.cac.util.DateUtil; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Date; -import java.util.List; +import java.util.*; @Service @Slf4j public class ThermalCollectService { @Resource - DataService dataService; + DHThermalService thermalService; public void collectAndSave(List list, ThermalConfig config) { - try { - LoginModule.init(null, null); - NSensor sensor = list.get(0); - boolean r = LoginModule.login(sensor.getIp(), sensor.getPort(), sensor.getUsername(), sensor.getPasswd()); - if (r) { - log.info("登入成功" + sensor.getIp() + ":" + sensor.getPort() + ", 用户名:" + sensor.getUsername()); - } else { - log.error("登入失败" + sensor.getIp() + ":" + sensor.getPort() + ", 用户名:" + sensor.getUsername()); - return; - } - String time = DateUtil.format(new Date()); - for (NSensor item : list) { - NetSDKLib.NET_RADIOMETRYINFO data = ThermalCameraModule.queryItemTemper(0, 0, sensor.getTmId(), sensor.getTmType()); - if (data == null) { - log.warn("没有采集到数据, 序号" + item.getTmId() + "测量项目" + sensor.getTmType()); - } else { - log.info("采集到序号" + item.getTmId() + "测量项目" + sensor.getTmType() + "的max=" - + data.fTemperMax + ", min=" + data.fTemperMin + ", aver=" + data.fTemperAver); - if (StringUtils.isNotBlank(config.getMaxtemp())) { - String value = String.valueOf(data.fTemperMax); - 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(data.fTemperMin); - 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(data.fTemperAver); - dataService.insertData(item.getTableName(), item.getDevId(), time, config.getAvertemp(), value); - // 更新最新数据缓存 - StaticVariable.updateLastData(item.getDevId(), config.getAvertemp(), value, time); - } + HashMap> map = new HashMap<>(); + for (NSensor sensor : list) { + if (sensor.canTempMeasure()) { + String key = sensor.getIp() + sensor.getPort() + sensor.getUsername(); + List sub = map.get(key); + if (sub == null) { + sub = new ArrayList<>(); + map.put(key, sub); } + sub.add(sensor); } - - LoginModule.logout(); - } catch (Exception ex) { - log.error("热成像测温采集异常, " + ex.getMessage(), ex); - } finally { - LoginModule.cleanup(); + } + Iterator it = map.keySet().iterator(); + while (it.hasNext()) { + String key = it.next(); + List sub = map.get(key); + thermalService.collectAndSave(sub, config); } } + }