yanderong
2026-09-29 57c002c734126f647a35f8406064c27e8128fbf3
feat: 储能数据同步-字段增加
6个文件已修改
62 ■■■■■ 已修改文件
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/udan/config/UdanEmsKafkaProperties.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/udan/model/BatteryStackState.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/udan/model/PcsState.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/udan/model/TmsState.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/udan/model/UdanEmsDeviceState.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/udan/service/UdanEmsMessageProcessor.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/udan/config/UdanEmsKafkaProperties.java
@@ -16,5 +16,5 @@
    private String topic;
    private String groupId = "group-device-state";
    private String autoOffsetReset = "latest";
    private int pollSeconds = 3600; // 1个小时
    private int pollSeconds = 60; // 3600 1个小时
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/udan/model/BatteryStackState.java
@@ -23,6 +23,9 @@
    private String errorStatus;
    private String  workStatus; // 工作状态
    private String  warningStatus; // 告警状态
    private String commStatus; // 与EMS通信状态
    private String  batteryStatus; // 电池充放电使能状态
    private Double tv; // 总电压  单位V
    private Double tc; // 总电流  单位A
    private Double soh; // soh  单位%
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/udan/model/PcsState.java
@@ -31,6 +31,11 @@
    // 并网状态
    private String onGridStatus;
    // 控制模式
    private String controlMode;
    private String commStatus; // 与EMS通信状态
    // 有功功率A相
    private Double aPhaseActivePower;
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/udan/model/TmsState.java
@@ -21,15 +21,15 @@
    private String run_status; // 运行状态
    private String  error_status; // 故障状态 0 预留 1 故障 2 正常
    private String compress_status; // 压缩机状态
    private String compress_heat_status; // 压缩机加热带状态
    private String electric_heat_status; // 电加热运行状态
    private String pump_status; // 水泵状态
    private String fan_status; // 风机运行状态
    private String tms_mode; // 运行模式
    private String control_mode; // 控制模式
    private String comm_status; // 与EMS通信状态
    private Double supply_temp; // 供液温度
    private Double return_temp; // 回液温度
    private Double env_temp; // 环境温度
    private Double backwater_press; // 回水压力 回液压力
    private Double out_water_press; // 出水压力 供液压力
    private Double cool_start_temp; // 制冷开启温度
    private Double cool_stop_temp; // 制冷关闭温度
    private Double heat_start_temp; // 制热开启温度
    private Double heat_stop_temp; // 制热关闭温度
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/udan/model/UdanEmsDeviceState.java
@@ -3,6 +3,7 @@
import com.ruoyi.other.emind.dto.EmindIncomeHistoryDto;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate;
@@ -14,10 +15,10 @@
/** iems-open-v1.0.5.proto 中 IEmsAllDeviceState 对应的业务对象。 */
@Data
public class UdanEmsDeviceState {
public class UdanEmsDeviceState implements Serializable {
    private String emsSystemId;
    private long time;
    private String emsDeviceId;
    private String emsDeviceId; // 这个为电站里面填写的设备ID
    private EmsState emsState;
    private PowerMeterState powerMeterState;
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/udan/service/UdanEmsMessageProcessor.java
@@ -238,6 +238,9 @@
                case 31: value.setAPhaseActivePower((double) f32(input, type)); break;
                case 34: value.setBPhaseActivePower((double) f32(input, type)); break;
                case 37: value.setCPhaseActivePower((double) f32(input, type)); break;
                case 50: value.setControlMode(enumName(input, type, "PcsControlMode")); break;
                case 60: value.setCommStatus(enumName(input, type, "CommStatus")); break;
                default: skip(input, type);
            }
        });
@@ -263,6 +266,9 @@
                case 33: value.setCumulativeDischargeKwh(f64(input, type)); break;
                case 34: value.setCumulativeChargeKwh(f64(input, type)); break;
                case 36: value.setAvgCellTemp((double) u32(input, type) - 40D); break;
                case 52: value.setCommStatus(enumName(input, type, "CommStatus")); break;
                case 48: value.setBatteryStatus(enumName(input, type, "BatteryStatus")); break;
                default: skip(input, type);
            }
        });
@@ -299,12 +305,13 @@
                case 4: value.setSupply_temp((double) f32(input, type)); break;
                case 5: value.setReturn_temp((double) f32(input, type)); break;
                case 8: value.setEnv_temp((double) f32(input, type)); break;
                case 9: value.setBackwater_press((double) f32(input, type)); break;
                case 10: value.setOut_water_press((double) f32(input, type)); break;
                case 13: value.setCompress_status(enumName(input, type, "RunStatus")); break;
                case 14: value.setCompress_heat_status(enumName(input, type, "RunStatus")); break;
                case 15: value.setElectric_heat_status(enumName(input, type, "RunStatus")); break;
                case 16: value.setPump_status(enumName(input, type, "RunStatus")); break;
                case 21: value.setCool_start_temp((double) f32(input, type)); break;
                case 22: value.setCool_stop_temp((double) f32(input, type)); break;
                case 23: value.setHeat_start_temp((double) f32(input, type)); break;
                case 24: value.setHeat_stop_temp((double) f32(input, type)); break;
                case 6: value.setTms_mode(enumName(input, type, "TmsMode")); break;
                case 28: value.setControl_mode(enumName(input, type, "TmsControlMode")); break;
                case 25: value.setComm_status(enumName(input, type, "CommStatus")); break;
                default: skip(input, type);
            }
        });
@@ -384,6 +391,20 @@
        if ("TmsRunStatus".equals(prefix)) {
            return new String[]{"TMS_RUN_STATUS_UNKNOWN", "TMS_RUN_STATUS_IDLE", "TMS_RUN_STATUS_READY_TO_START", "TMS_RUN_STATUS_RUNNING", "TMS_RUN_STATUS_DELAYED_SHUTDOWN", "TMS_RUN_STATUS_SELF_TEST", "TMS_RUN_STATUS_ALARMING"}[number < 0 || number > 6 ? 0 : number];
        }
        if ("PcsControlMode".equals(prefix)) {
            return new String[]{"PCS_CONTROL_MODE_UNKNOWN", "PCS_CONTROL_MODE_LOCAL_CONTROL", "PCS_CONTROL_MODE_REMOTE_CONTROL"}[number < 0 || number > 3 ? 0 : number];
        }
        if ("BatteryStatus".equals(prefix)) {
            return new String[]{"Battery_Status_BAN_CHARGE_DISCHARGE", "Battery_Status_ONLY_CHARGE", "Battery_Status_ONLY_DISCHARGE","Battery_Status_NORMAL","Battery_Status_BAN_CHARGE_DISCHARGE_NEW","Battery_Status_IDLE"}[number < 0 || number > 6 ? 0 : number];
        }
        if ("TmsMode".equals(prefix)) {
            return new String[]{"TMS_MODE_UNKNOWN", "TMS_MODE_REFRIGERATION", "TMS_MODE_HEATING","TMS_MODE_SELF_LOOP","TMS_MODE_AUTOMATIC","TMS_MODE_STOP"}[number < 0 || number > 6 ? 0 : number];
        }
        if ("TmsControlMode".equals(prefix)) {
            return new String[]{"UNKNOWN", "OUTLET_WATER_TEMP", "INLET_WATER_TEMP","CELL_WEIGHT_TEMP","CELL_AVG_TEMP"}[number < 0 || number > 5 ? 0 : number];
        }
        return prefix + "_" + number;
    }
    private static <T> T enumAt(T[] values, CodedInputStream input, int type) throws IOException {