package com.njcn.gather.device.pojo.vo;

import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.annotation.JSONField;
import com.njcn.common.utils.EncryptionUtil;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * @author wr
 * @description 预检测装置报文初始化
 * @date 2024/12/12 11:21
 */
@Data
@NoArgsConstructor
public class PreDetection {

    /**
     * 装置id
     */
    @JSONField(serialize = false)
    private String devId;

    /**
     * 装置ip
     */
    @JSONField(serialize = false)
    private String devName;


    /**
     * 装置ip
     */
    @JSONField(name = "devIP")
    private String devIP;

    /**
     * 装置端口
     */
    @JSONField(name = "port")
    private Integer port;

    /**
     * 设备类型，字典表
     */
    @JSONField(name = "devType")
    private String devType;

    /**
     * icd设备类型
     */
    @JSONField(name = "icdType")
    private String icdType;

    /**
     * 是否支持相角。0：不支持，1：支持
     */
    @JSONField(serialize = false)
    private Integer angle;

    /**
     * 角型接线时是否使用相别的指标来进行检测，0表示否，1表示是
     */
    @JSONField(serialize = false)
    private Integer usePhaseIndex;

    /**
     * 装置识别码（3ds加密）
     */
    @JSONField(name = "devCode")
    private String devCode;

    /**
     * 装置秘钥（3ds加密）
     */
    @JSONField(name = "devKey")
    private String devKey;

    @JSONField(serialize = false)
    private Integer devChns;

    private Double devVolt;

    private Double devCurr;

    @JSONField(serialize = false)
    private String waveCmd;
    /**
     * 监测点信息
     */
    @JSONField(name = "monitorList")
    private List<MonitorListDTO> monitorList;


    @Data
    @NoArgsConstructor
    public static class MonitorListDTO {
        /**
         * 监测点id
         */
        @JSONField(name = "lineId")
        private String lineId;

        /**
         * 监测点线路号
         */
        @JSONField(name = "line")
        private Integer line;

        /**
         * pt
         */
        @JSONField(serialize = false)
        private String ptStr;

        /**
         * ct
         */
        @JSONField(serialize = false)
        private String ctStr;

        /**
         * pt
         */
        @JSONField(name = "pt")
        private Double pt;

        /**
         * ct
         */
        @JSONField(name = "ct")
        private Double ct;

        /**
         * 统计间隔
         */
        @JSONField(serialize = false)
        private Integer statInterval;

        /**
         * 接线方式
         */
        @JSONField(serialize = false)
        private String connection;
    }

    public String getDevKey() {
        if (StrUtil.isNotBlank(devKey)) {
            String key = EncryptionUtil.decoderString(1, devKey);
            if (StrUtil.isNotBlank(key)) {
                return key;
            }
        }
        return null;
    }

    public String getDevCode() {
        if (StrUtil.isNotBlank(devCode)) {
            String code = EncryptionUtil.decoderString(1, devCode);
            if (StrUtil.isNotBlank(code)) {
                return code;
            }
        }
        return null;
    }
}
