package com.hdkj.fhzg.optimization.response;

/**
 * @author rj
 * @date 2026/5/23 18:51
 * @description
 */

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * 电网运行分析结果
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FeederMetrics {

    /**
     * 运行问题
     */
    private OperationIssue operationIssue;

    /**
     * 可靠性
     */
    private Reliability reliability;

    /**
     * 网损影响
     */
    private NetworkLossImpact networkLossImpact;

    /**
     * 网架结构问题
     */
    private NetworkStructureIssue networkStructureIssue;

    /**
     * 运行问题
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class OperationIssue {

        //运行问题得分
        private BigDecimal operationIssueScore;
        /**
         * 线路当前负载率
         */
        private BigDecimal currentLineLoadRate;

        /**
         * 电流越限线段数
         */
        private Integer currentOverlimitSegmentCount;

        /**
         * 电压越限节点数
         */
        private Integer voltageViolationNodeCount;

        /**
         * 转供裕度不足的对侧线路数
         */
        private Integer insufficientTransferCapacityLineCount;

        /**
         * 线路N-1校验
         */
        private Boolean lineN1Check;
    }

    /**
     * 可靠性
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Reliability {

        /**
         * 可靠性得分
         */
        private BigDecimal reliabilityScore;

        /**
         * 线路状态
         */
        private String lineStatus;

        /**
         * 停电配变数
         */
        private BigDecimal outageTransformerCount;

        /**
         * 理论可靠性
         */
        private BigDecimal theoreticalReliability;

        /**
         * 影响低压用户总数
         */
        private Integer affectedLowVoltageUserCount;

        /**
         * 重要/敏感用户失电数
         */
        private Integer importantSensitiveUserLossCount;
    }

    /**
     * 网损影响
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class NetworkLossImpact {

        //网损影响得分
        private BigDecimal networkLossImpactScore;
        /**
         * 有功网损值
         */
        private BigDecimal activePowerLoss;

        /**
         * 网损率
         */
        private BigDecimal lossRate;


        /**
         * 出口功率因数
         */
        private BigDecimal exportPowerFactor;

    }

    /**
     * 网架结构问题
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class NetworkStructureIssue {

        //网架结构问题得分
        private BigDecimal networkStructureIssueScore;

        /**
         * 线路接线类型
         */
        private String lineConnectionType;

        /**
         * 线路联络开关数量
         */
        private Integer lineContactSwitchCount;

        /**
         * 整线装机容量
         */
        private BigDecimal totalInstalledCapacity;


        /**
         * 整线挂接用户总数
         */
        private Integer lineUserCount;


        /**
         * 负荷组用户数或容量异常
         */
        private String abnormalLoadGroupCount;

        /**
         * 负荷组分段数
         */
        private Integer loadGroupSegmentCount;


        /**
         * 大分支数量
         */
        private Integer largeBranchCount;

        /**
         * 线路供电半径
         */
        private BigDecimal linePowerSupplyRadius;

    }
}
