package com.zd.system.api.laboratory.domain;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.zd.common.core.enums.HazardTypeEnum;
import com.zd.system.api.laboratory.domain.vo.HardwareCVO;
import com.zd.system.api.laboratory.domain.vo.LabRiskPlanVO;
import com.zd.system.api.laboratory.domain.vo.SenseValVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.util.Date;
import java.util.List;

/**
 * 实验室VO
 *
 * @Author: zhoupan
 * @Date: 2021/09/07/15:17
 * @Description:
 */
@ApiModel("实验室管理vo")
public class LabSubjectControllerVO extends LabSubject {

    @ApiModelProperty("所属部门名称")
    private String subordinateDeptName;

    @ApiModelProperty("危险级别名称")
    private String dangerName;

    @ApiModelProperty("负责人名称")
    private String adminName;

    @ApiModelProperty("所属传感器列表")
    @Deprecated
    private List<SenseValVO> senseVOList;

    @ApiModelProperty("所属测点")
    private List<SensorFunctionStatus> sensorFunctionStatusList;

    @ApiModelProperty("所属设备列表")
    private List<HardwareCVO> labHardwareVOList;

    @ApiModelProperty("实验室地址对象")
    private SubAddrr subAddrr;
    @ApiModelProperty("是否拥有完全管理权限")
    @JsonInclude(value = JsonInclude.Include.NON_NULL)
    private Boolean admin;


    @ApiModelProperty("安全分级名称")
    private String levelName;

    @ApiModelProperty("安全分级颜色编码")
    private String fiedColor;

    @ApiModelProperty("安全分类名称")
    private String typeName;

    @ApiModelProperty("信息牌数据")
    private SafeInfo safeInfo;

    @ApiModelProperty("危险源信息")
    private List<LabHazardSubVO> hazardList;

    @ApiModelProperty("预案数据")
    private List<LabRiskPlanVO> riskPlanList;

    /**
     * 实验室类型ID
     */
    @ApiModelProperty(value = "实验室类型ID")
    private Long moldId;

    private String adminNameAndPhone;

    private String safeUserNameAdminPhone;

    @ApiModel("安全信息")
    public static class SafeInfo {
        @ApiModelProperty("安全警示标示--字典")
        private List<String> safeSigns;

        @ApiModelProperty("主要危险类别--字典")
        private List<String> hazardCategory;

        @ApiModelProperty("安全防控措施--字典")
        private List<String> riskMeasure;

        @ApiModelProperty("灭火要点--字典")
        private List<String> outfire;

        @ApiModelProperty("离开检测项")
        private List<String> checkOutData;

        @ApiModelProperty("进入检查项")
        private List<String> checkInData;

        public List<String> getSafeSigns() {
            return safeSigns;
        }

        public void setSafeSigns(List<String> safeSigns) {
            this.safeSigns = safeSigns;
        }

        public List<String> getHazardCategory() {
            return hazardCategory;
        }

        public void setHazardCategory(List<String> hazardCategory) {
            this.hazardCategory = hazardCategory;
        }

        public List<String> getRiskMeasure() {
            return riskMeasure;
        }

        public void setRiskMeasure(List<String> riskMeasure) {
            this.riskMeasure = riskMeasure;
        }

        public List<String> getOutfire() {
            return outfire;
        }

        public void setOutfire(List<String> outfire) {
            this.outfire = outfire;
        }

        public List<String> getCheckOutData() {
            return checkOutData;
        }

        public void setCheckOutData(List<String> checkOutData) {
            this.checkOutData = checkOutData;
        }

        public List<String> getCheckInData() {
            return checkInData;
        }

        public void setCheckInData(List<String> checkInData) {
            this.checkInData = checkInData;
        }
    }

    @ApiModel("危险源信息")
    public static class LabHazardSubVO {
        /**
         * 危险源ID
         */
        @ApiModelProperty(value = "危险源ID")
        private Long id;

        /**
         * 危险源名称
         */
        @ApiModelProperty("危险源名称")
        private String label;

        /**
         * 危险源类型
         */
        @ApiModelProperty("危险源类型")
        private HazardTypeEnum hazardType;

        /**
         * 实验室id
         */
        @ApiModelProperty("实验室id")
        private Long subjectId;


        /**
         * X坐标点
         */
        @ApiModelProperty("X坐标点")
        private Long xPoint;

        /**
         * Y坐标点
         */
        @ApiModelProperty("Y坐标点")
        private Long yPoint;
        /**
         * 坐标ID
         */
        @ApiModelProperty(value = "坐标ID")
        private Long xyId;

        /**
         * 危险源别名
         */
        private String anotherName;

        /**
         * 编号别名
         */
        private String anotherCode;


        public Long getXyId() {
            return xyId;
        }

        public void setXyId(Long xyId) {
            this.xyId = xyId;
        }


        public LabHazardSubVO() {

        }

        public Long getId() {
            return id;
        }

        public void setId(Long id) {
            this.id = id;
        }

        public String getLabel() {
            return label;
        }

        public void setLabel(String label) {
            this.label = label;
        }

        public HazardTypeEnum getHazardType() {
            return hazardType;
        }

        public void setHazardType(HazardTypeEnum hazardType) {
            this.hazardType = hazardType;
        }

        public Long getSubjectId() {
            return subjectId;
        }

        public void setSubjectId(Long subjectId) {
            this.subjectId = subjectId;
        }

        public Long getxPoint() {
            return xPoint;
        }

        public void setxPoint(Long xPoint) {
            this.xPoint = xPoint;
        }

        public Long getyPoint() {
            return yPoint;
        }

        public void setyPoint(Long yPoint) {
            this.yPoint = yPoint;
        }

        public String getAnotherName() {
            return anotherName;
        }

        public void setAnotherName(String anotherName) {
            this.anotherName = anotherName;
        }

        public String getAnotherCode() {
            return anotherCode;
        }

        public void setAnotherCode(String anotherCode) {
            this.anotherCode = anotherCode;
        }
    }

    @Override
    public Long getAdminId() {
        return super.getAdminId() == -1L ? null : super.getAdminId();
    }

    public List<SensorFunctionStatus> getSensorFunctionStatusList() {
        return sensorFunctionStatusList;
    }

    public void setSensorFunctionStatusList(List<SensorFunctionStatus> sensorFunctionStatusList) {
        this.sensorFunctionStatusList = sensorFunctionStatusList;
    }

    public Boolean getAdmin() {
        return admin;
    }

    public void setAdmin(Boolean admin) {
        this.admin = admin;
    }

    public String getDangerName() {
        return dangerName;
    }

    public void setDangerName(String dangerName) {
        this.dangerName = dangerName;
    }

    public String getAdminName() {
        return adminName;
    }

    public void setAdminName(String adminName) {
        this.adminName = adminName;
    }

    public String getSubordinateDeptName() {
        return subordinateDeptName;
    }

    public void setSubordinateDeptName(String subordinateDeptName) {
        this.subordinateDeptName = subordinateDeptName;
    }

    public SubAddrr getSubAddrr() {
        return subAddrr;
    }

    public void setSubAddrr(SubAddrr subAddrr) {
        this.subAddrr = subAddrr;
    }


    public List<SenseValVO> getSenseVOList() {
        return senseVOList;
    }

    public void setSenseVOList(List<SenseValVO> senseVOList) {
        this.senseVOList = senseVOList;
    }

    public List<HardwareCVO> getLabHardwareVOList() {
        return labHardwareVOList;
    }

    public void setLabHardwareVOList(List<HardwareCVO> labHardwareVOList) {
        this.labHardwareVOList = labHardwareVOList;
    }


    public String getLevelName() {
        return levelName;
    }

    public void setLevelName(String levelName) {
        this.levelName = levelName;
    }

    public String getTypeName() {
        return typeName;
    }

    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }

    public String getFiedColor() {
        return fiedColor;
    }

    public void setFiedColor(String fiedColor) {
        this.fiedColor = fiedColor;
    }

    public SafeInfo getSafeInfo() {
        return safeInfo;
    }

    public void setSafeInfo(SafeInfo safeInfo) {
        this.safeInfo = safeInfo;
    }

    public List<LabHazardSubVO> getHazardList() {
        return hazardList;
    }

    public void setHazardList(List<LabHazardSubVO> hazardList) {
        this.hazardList = hazardList;
    }

    public List<LabRiskPlanVO> getRiskPlanList() {
        return riskPlanList;
    }

    public void setRiskPlanList(List<LabRiskPlanVO> riskPlanList) {
        this.riskPlanList = riskPlanList;
    }

    public Long getMoldId() {
        return moldId;
    }

    public void setMoldId(Long moldId) {
        this.moldId = moldId;
    }

    public String getAdminNameAndPhone() {
        return adminNameAndPhone;
    }

    public void setAdminNameAndPhone(String adminNameAndPhone) {
        this.adminNameAndPhone = adminNameAndPhone;
    }

    public String getSafeUserNameAdminPhone() {
        return safeUserNameAdminPhone;
    }

    public void setSafeUserNameAdminPhone(String safeUserNameAdminPhone) {
        this.safeUserNameAdminPhone = safeUserNameAdminPhone;
    }
}
