|
@@ -1,13 +1,18 @@
|
|
|
package com.fjhx.listener;
|
|
|
|
|
|
+import cn.hutool.core.convert.Convert;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.fjhx.constants.RedisConstant;
|
|
|
import com.fjhx.enums.ProductEnum;
|
|
|
+import com.fjhx.enums.UpperComputerEnum;
|
|
|
import com.fjhx.params.IotData.MessageBody;
|
|
|
+import com.fjhx.params.IotData.OpcUaData;
|
|
|
import com.fjhx.params.IotData.UpperComputerData;
|
|
|
+import com.fjhx.params.IotData.ZSJDto;
|
|
|
import com.fjhx.utils.amqp.AmqpClient;
|
|
|
import com.fjhx.utils.amqp.AmqpClientOptions;
|
|
|
import com.fjhx.utils.amqp.AmqpConstants;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springblade.core.redis.cache.BladeRedis;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
@@ -16,13 +21,18 @@ import javax.annotation.Resource;
|
|
|
import javax.jms.JMSException;
|
|
|
import javax.jms.Message;
|
|
|
import javax.jms.MessageConsumer;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* iot数据推送监听器
|
|
|
*
|
|
|
* @author zlj
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Component
|
|
|
public class IotDataListener {
|
|
|
|
|
@@ -129,6 +139,13 @@ public class IotDataListener {
|
|
|
|
|
|
UpperComputerData newData = service.getProperties().toJavaObject(UpperComputerData.class);
|
|
|
|
|
|
+ UpperComputerEnum upperComputerEnum = UpperComputerEnum.getUpperComputerEnum(newData.getType());
|
|
|
+
|
|
|
+ if (upperComputerEnum == UpperComputerEnum.ZSJ) {
|
|
|
+ handleZSJ(message, newData);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
String redisKey = RedisConstant.DEVICE_PREFIX + newData.getEquipmentNo();
|
|
|
UpperComputerData oldData = redisCache.get(redisKey);
|
|
|
|
|
@@ -141,7 +158,67 @@ public class IotDataListener {
|
|
|
} catch (JMSException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 注塑机解析
|
|
|
+ */
|
|
|
+ private void handleZSJ(Message message, UpperComputerData upperComputerData) {
|
|
|
+
|
|
|
+ log.error("注塑机推送数据:{}", JSONObject.toJSONString(upperComputerData));
|
|
|
+
|
|
|
+ String redisKey = RedisConstant.DEVICE_PREFIX + upperComputerData.getEquipmentNo();
|
|
|
+ ZSJDto oldZsjDto = redisCache.get(redisKey);
|
|
|
+ if (oldZsjDto != null && upperComputerData.getCreateTime().compareTo(oldZsjDto.getDate()) > 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ ZSJDto zsjDto = createZSJDto(upperComputerData);
|
|
|
+ redisCache.set(redisKey, zsjDto);
|
|
|
+
|
|
|
+ try {
|
|
|
+ message.acknowledge();
|
|
|
+ } catch (JMSException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
+ private ZSJDto createZSJDto(UpperComputerData upperComputerData) {
|
|
|
+ List<OpcUaData> opcUaDataList = Convert.toList(OpcUaData.class, upperComputerData.getData());
|
|
|
+
|
|
|
+ Map<String, String> collect = opcUaDataList.stream().collect(Collectors.toMap(
|
|
|
+ OpcUaData::getId,
|
|
|
+ OpcUaData::getNs
|
|
|
+ ));
|
|
|
+
|
|
|
+ ZSJDto zsjDto = new ZSJDto();
|
|
|
+ zsjDto.setDate(upperComputerData.getCreateTime());
|
|
|
+ zsjDto.setTmOnlineState(Convert.toInt(collect.get("tmOnlineState")));
|
|
|
+ zsjDto.setTmOperateMode(Convert.toInt(collect.get("tmOperateMode")));
|
|
|
+ zsjDto.setTmMotorState(Convert.toInt(collect.get("tmMotorState")));
|
|
|
+ zsjDto.setTmHeatState(Convert.toInt(collect.get("tmHeatState")));
|
|
|
+ zsjDto.setTmTempOilCurrent(Convert.toBigDecimal(collect.get("tmTempOil_Current")));
|
|
|
+
|
|
|
+ BigDecimal tmTempCurrent = Convert.toBigDecimal(collect.get("tmTemp1_Current"))
|
|
|
+ .add(Convert.toBigDecimal(collect.get("tmTemp2_Current")))
|
|
|
+ .add(Convert.toBigDecimal(collect.get("tmTemp3_Current")))
|
|
|
+ .add(Convert.toBigDecimal(collect.get("tmTemp4_Current")))
|
|
|
+ .add(Convert.toBigDecimal(collect.get("tmTemp5_Current")))
|
|
|
+ .add(Convert.toBigDecimal(collect.get("tmTemp6_Current")))
|
|
|
+ .add(Convert.toBigDecimal(collect.get("tmTemp7_Current")))
|
|
|
+ .add(Convert.toBigDecimal(collect.get("tmTemp8_Current")))
|
|
|
+ .add(Convert.toBigDecimal(collect.get("tmTemp9_Current")))
|
|
|
+ .divide(new BigDecimal("9"), 1, RoundingMode.HALF_UP);
|
|
|
+ zsjDto.setTmTempCurrent(tmTempCurrent);
|
|
|
+ zsjDto.setTmChargePressB1(Convert.toBigDecimal(collect.get("tmChargePressB1")));
|
|
|
+ zsjDto.setTmChargePressB2(Convert.toBigDecimal(collect.get("tmChargePressB2")));
|
|
|
+ zsjDto.setTmChargePressB3(Convert.toBigDecimal(collect.get("tmChargePressB3")));
|
|
|
+ zsjDto.setTmChargePressB4(Convert.toBigDecimal(collect.get("tmChargePressB4")));
|
|
|
+ zsjDto.setTmChargeSpeedB1(Convert.toBigDecimal(collect.get("tmChargeSpeedB1")));
|
|
|
+ zsjDto.setTmChargeSpeedB2(Convert.toBigDecimal(collect.get("tmChargeSpeedB2")));
|
|
|
+ zsjDto.setTmChargeSpeedB3(Convert.toBigDecimal(collect.get("tmChargeSpeedB3")));
|
|
|
+ zsjDto.setTmChargeSpeedB4(Convert.toBigDecimal(collect.get("tmChargeSpeedB4")));
|
|
|
+ return zsjDto;
|
|
|
}
|
|
|
|
|
|
}
|