yeg
2026-09-02 c2dd019c1fddaeae412e2b6f44fb86ff0dc635d4
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TestConsoleDataServiceImpl.java
@@ -134,7 +134,8 @@
            List<Map<String, Object>> changes = (List<Map<String, Object>>) (List<?>) JSON.parseArray(action.getChangesSummary(), Map.class);
            Set<String> editable = switch (action.getDataType())
            {
                case "REALTIME" -> Set.of("voltage", "current", "capacity", "energy");
                case "REALTIME" -> Set.of("voltage", "current", "capacity", "energy", "metricValue",
                        "temperature", "positivePotential", "negativePotential");
                case "STEP" -> Set.of("stepDuration", "capacity", "energy", "startVoltage", "endVoltage",
                        "chargePeakVoltage", "dischargeValleyVoltage");
                case "CYCLE" -> Set.of("chargeCapacity", "dischargeCapacity", "efficiency", "chargeEnergy",
@@ -215,7 +216,8 @@
    {
        return switch (dataType)
        {
            case "REALTIME" -> Set.of("voltage", "current", "capacity", "energy");
            case "REALTIME" -> Set.of("voltage", "current", "capacity", "energy", "metricValue",
                    "temperature", "positivePotential", "negativePotential");
            case "STEP" -> Set.of("stepDuration", "capacity", "energy", "startVoltage", "endVoltage",
                    "chargePeakVoltage", "dischargeValleyVoltage");
            case "CYCLE" -> Set.of("chargeCapacity", "dischargeCapacity", "efficiency", "chargeEnergy",
@@ -227,16 +229,36 @@
    private Long[] parseDeleteIdentity(String value, String dataType)
    {
        String[] parts = value.split(":", -1);
        int expectedLength = "STEP".equals(dataType) ? 5 : "CYCLE".equals(dataType) ? 4 : 3;
        if (parts.length != expectedLength) return null;
        if ("REALTIME".equals(dataType) && parts.length == 5 && "collector".equals(parts[0])
                && !parts[2].isBlank() && !parts[4].isBlank())
        {
            try { return new Long[] { Long.valueOf(parts[1]), Long.valueOf(parts[3]) }; }
            catch (NumberFormatException exception) { return null; }
        }
        if ("REALTIME".equals(dataType) && parts.length == 2 && "snapshot".equals(parts[0]))
        {
            try { return new Long[] { Long.valueOf(parts[1]) }; }
            catch (NumberFormatException exception) { return null; }
        }
        int expectedLength = "STEP".equals(dataType) ? 8 : "CYCLE".equals(dataType) ? 7 : 6;
        int legacyLength = "STEP".equals(dataType) ? 5 : "CYCLE".equals(dataType) ? 4 : 3;
        if (parts.length != expectedLength && parts.length != legacyLength) return null;
        int offset = "REALTIME".equals(dataType) ? 0 : 1;
        try
        {
            if (parts.length == legacyLength && "STEP".equals(dataType))
                return new Long[] { Long.valueOf(parts[1]), Long.valueOf(parts[2]),
                        Long.valueOf(parts[3]), Long.valueOf(parts[4]) };
            if (parts.length == legacyLength)
                return new Long[] { Long.valueOf(parts[0]), Long.valueOf(parts[1]), Long.valueOf(parts[2]) };
            if ("STEP".equals(dataType))
                return new Long[] { Long.valueOf(parts[offset]), Long.valueOf(parts[offset + 1]),
                        Long.valueOf(parts[offset + 2]), Long.valueOf(parts[offset + 3]) };
                        Long.valueOf(parts[offset + 2]), Long.valueOf(parts[offset + 3]),
                        Long.valueOf(parts[offset + 4]), Long.valueOf(parts[offset + 5]),
                        Long.valueOf(parts[offset + 6]) };
            return new Long[] { Long.valueOf(parts[offset]), Long.valueOf(parts[offset + 1]),
                    Long.valueOf(parts[offset + 2]) };
                    Long.valueOf(parts[offset + 2]), Long.valueOf(parts[offset + 3]),
                    Long.valueOf(parts[offset + 4]), Long.valueOf(parts[offset + 5]) };
        }
        catch (NumberFormatException exception) { return null; }
    }