添加新的解析器

This commit is contained in:
wangshilong 2024-12-10 12:27:21 +08:00
parent c17a1e1d28
commit d1b78b3277
9 changed files with 75 additions and 2 deletions

View File

@ -0,0 +1,47 @@
package com.isu.gaswellwatch.modbus.data.decode.impl;
import com.isu.gaswellwatch.modbus.data.ModbusMessage;
import com.isu.gaswellwatch.modbus.data.decode.DecodeHandler;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Map;
/**
* 本地日期时间类型解析器year + 2000
*
* @author <a href="mailto:scwsl@foxmail.com">王仕龙</a>
* 2024/12/10 12:25
*/
@Component(Base2000YearLocalDateTimeDecodeHandler.NAME + DecodeHandler.DECODE_NAME)
public class Base2000YearLocalDateTimeDecodeHandler implements DecodeHandler {
public static final String NAME = "base2000YearLocalDateTime";
public static final DateTimeFormatter IN_FORMATTER = DateTimeFormatter.ofPattern("yyyy-M-d H:m:s");
public static final DateTimeFormatter OUT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@Override
public String decode(Map<String, Object> commandPointMap, String value) {
if (StringUtils.isBlank(value)) {
return value;
}
String[] splitValues = value.split(" ");
String[] dateValues = splitValues[0].split("-");
String year = dateValues[0];
if (NumberUtils.isCreatable(year)) {
year = String.valueOf(NumberUtils.createLong(year) + 2000);
}
value = StringUtils.join(year, "-", dateValues[1], "-", dateValues[2], " ", splitValues[1]);
return LocalDateTime.parse(value, IN_FORMATTER).format(OUT_FORMATTER);
}
@Override
public void decode(Map<String, Object> commandPointMap, ModbusMessage.MessagePoint point) {
point.setValue(this.decode(commandPointMap, point.getValue()));
}
}

View File

@ -2,6 +2,7 @@ package com.isu.gaswellwatch.modbus.data.decode.impl;
import com.isu.gaswellwatch.modbus.data.ModbusMessage;
import com.isu.gaswellwatch.modbus.data.decode.DecodeHandler;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.util.Map;
@ -19,6 +20,9 @@ public class HighLowBinDecodeHandler implements DecodeHandler {
@Override
public String decode(Map<String, Object> commandPointMap, String value) {
if (StringUtils.isBlank(value)) {
return value;
}
return String.valueOf(Integer.parseInt(value, 16));
}

View File

@ -2,6 +2,7 @@ package com.isu.gaswellwatch.modbus.data.decode.impl;
import com.isu.gaswellwatch.modbus.data.ModbusMessage;
import com.isu.gaswellwatch.modbus.data.decode.DecodeHandler;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
@ -24,6 +25,9 @@ public class LocalDateDecodeHandler implements DecodeHandler {
@Override
public String decode(Map<String, Object> commandPointMap, String value) {
if (StringUtils.isBlank(value)) {
return value;
}
return LocalDate.parse(value, IN_FORMATTER).format(OUT_FORMATTER);
}

View File

@ -2,6 +2,7 @@ package com.isu.gaswellwatch.modbus.data.decode.impl;
import com.isu.gaswellwatch.modbus.data.ModbusMessage;
import com.isu.gaswellwatch.modbus.data.decode.DecodeHandler;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@ -24,6 +25,9 @@ public class LocalDateTimeDecodeHandler implements DecodeHandler {
@Override
public String decode(Map<String, Object> commandPointMap, String value) {
if (StringUtils.isBlank(value)) {
return value;
}
return LocalDateTime.parse(value, IN_FORMATTER).format(OUT_FORMATTER);
}

View File

@ -2,6 +2,7 @@ package com.isu.gaswellwatch.modbus.data.decode.impl;
import com.isu.gaswellwatch.modbus.data.ModbusMessage;
import com.isu.gaswellwatch.modbus.data.decode.DecodeHandler;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.time.LocalTime;
@ -23,6 +24,9 @@ public class LocalTimeDecodeHandler implements DecodeHandler {
@Override
public String decode(Map<String, Object> commandPointMap, String value) {
if (StringUtils.isBlank(value)) {
return value;
}
return LocalTime.parse(value, IN_FORMATTER).format(OUT_FORMATTER);
}

View File

@ -2,6 +2,7 @@ package com.isu.gaswellwatch.modbus.data.decode.impl;
import com.isu.gaswellwatch.modbus.data.ModbusMessage;
import com.isu.gaswellwatch.modbus.data.decode.DecodeHandler;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.stereotype.Component;
@ -20,7 +21,7 @@ public class SecondLocalTimeDecodeHandler implements DecodeHandler {
@Override
public String decode(Map<String, Object> commandPointMap, String value) {
if (NumberUtils.isCreatable(value)) {
if (StringUtils.isNotBlank(value) && NumberUtils.isCreatable(value)) {
long totalSeconds = NumberUtils.createLong(value);
long hours = TimeUnit.SECONDS.toHours(totalSeconds);

View File

@ -3,6 +3,8 @@ package com.isu.gaswellwatch.modbus.data.decode.impl;
import com.isu.gaswellwatch.modbus.data.ModbusMessage;
import com.isu.gaswellwatch.modbus.data.decode.DecodeHandler;
import com.isu.gaswellwatch.utils.ReverseComplementCodeUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.stereotype.Component;
import java.util.Map;
@ -19,6 +21,9 @@ public class SignedNumberDecodeHandler implements DecodeHandler {
@Override
public String decode(Map<String, Object> commandPointMap, String value) {
if (StringUtils.isBlank(value) || !NumberUtils.isCreatable(value)) {
return value;
}
int decimalNumber = Integer.parseInt(value, 16);
if (decimalNumber == 0) {
return String.valueOf(decimalNumber);

View File

@ -2,6 +2,7 @@ package com.isu.gaswellwatch.modbus.data.decode.impl;
import com.isu.gaswellwatch.modbus.data.ModbusMessage;
import com.isu.gaswellwatch.modbus.data.decode.DecodeHandler;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@ -24,6 +25,9 @@ public class SimpleLocalDateTimeDecodeHandler implements DecodeHandler {
@Override
public String decode(Map<String, Object> commandPointMap, String value) {
if (StringUtils.isBlank(value)) {
return value;
}
return LocalDateTime.parse(value, IN_FORMATTER).format(OUT_FORMATTER);
}

View File

@ -23,7 +23,7 @@ spring:
virtual-host: /
# public confirms机制用于解决生产者与Rabbitmq服务器之间消息可靠传输它在消息服务器持久化消息后通知消息生产者发送成功。
# 发送确认
publisher-confirms: true
publisher-confirms: false
listener:
simple:
# manual手动ack需要在业务代码结束后调用api发送ack。