package com.ruoyi.web.calculate.domain;

import java.math.BigDecimal;
import java.math.RoundingMode;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 非平行差改正计算对象 cmc_nonparallelism_correction
 * 
 * @author qyx
 * @date 2026-06-22
 */
public class CmcNonparallelismCorrection extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 起点号 */
    @Excel(name = "起点号")
    private String startPointNo;

    /** 终点号 */
    @Excel(name = "终点号")
    private String endPointNo;

    /** 站数 */
    @Excel(name = "站数", cellType = ColumnType.NUMERIC)
    private Integer stationCount;

    /** 距离（m） */
    @Excel(name = "距离（m）", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double distance;

    /** 高差值（m） */
    @Excel(name = "高差值（m）", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double heightDifference;

    /** 标尺真长（m） */
    @Excel(name = "标尺真长（m）", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double scaleTrueLength;

    /** 平均距离（km） */
    @Excel(name = "平均距离（km）", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double averageDistance;

    /** 尺改高差(m) */
    @Excel(name = "尺改高差(m)", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double scaleCorrectedHeightDiff;

    /** 平均尺改高差(m) */
    @Excel(name = "平均尺改高差(m)", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double averageScaleCorrectedHeightDiff;

    /** 往返较差(mm) */
    @Excel(name = "往返较差(mm)", cellType = ColumnType.NUMERIC, numberFormat = "0.000")
    private Double roundTripDifference;

    /** 限差(mm) */
    @Excel(name = "限差(mm)", cellType = ColumnType.NUMERIC, numberFormat = "0.000")
    private Double tolerance;

    /** 精度统计 */
    @Excel(name = "精度统计", cellType = ColumnType.NUMERIC, numberFormat = "0.000")
    private double precisionStatistics;

    /** 质量评分 */
    @Excel(name = "质量评分", cellType = ColumnType.NUMERIC, numberFormat = "0.00")
    private Double qualityScore;

    /** 待求点 */
    @Excel(name = "待求点")
    private String pendingPoint;

    /** 纵坐标X(m) */
    @Excel(name = "纵坐标X(m)", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double coordinateX;

    /** 横坐标Y(m) */
    @Excel(name = "横坐标Y(m)", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double coordinateY;

    /** 高程H(m) */
    @Excel(name = "高程H(m)", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double heightH;

    /** 坐标系 */
    @Excel(name = "坐标系")
    private String coordinateSystem;

    /** 带号 */
    @Excel(name = "带号", cellType = ColumnType.NUMERIC)
    private Double zoneNo;

    /** 带宽（°） */
    @Excel(name = "带宽（°）", cellType = ColumnType.NUMERIC, numberFormat = "0.0")
    private Double bandWidth;

    /** 大地经度(° ′ ″) */
    @Excel(name = "大地经度(° ′ ″)")
    private double geodeticLongitude;

    /** 大地纬度(° ′ ″) */
    @Excel(name = "大地纬度(° ′ ″)")
    private double geodeticLatitude;

    /** 点间改正ε(m) */
    @Excel(name = "点间改正ε(m)", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double pointCorrection;

    /** 改正后高差(m) */
    @Excel(name = "改正后高差(m)", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double correctedHeightDifference;

    /** 高程(m) */
    @Excel(name = "高程(m)", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double elevation;

    /** 起点距(km) */
    @Excel(name = "起点距(km)", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double distanceFromStart;

    /** 高程中误差(mm) */
    @Excel(name = "高程中误差(mm)", cellType = ColumnType.NUMERIC, numberFormat = "0.000")
    private Double heightMiddleError;

    /** 水准等级 */
    @Excel(name = "水准等级", cellType = ColumnType.NUMERIC)
    private int level;

    /** 纬度位置 */
    @Excel(name = "纬度位置")
    private String latitudePosition;

    /** 经度位置 */
    @Excel(name = "经度位置")
    private String longitudePosition;

    /**投影面高程(m) */
    @Excel(name = "投影面高程(m)", cellType = ColumnType.NUMERIC, numberFormat = "0.000000")
    private Double projectionHeight;

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

    public Long getId() 
    {
        return id;
    }
    
    public void setStartPointNo(String startPointNo) 
    {
        this.startPointNo = startPointNo;
    }

    public String getStartPointNo() 
    {
        return startPointNo;
    }

    public void setEndPointNo(String endPointNo) 
    {
        this.endPointNo = endPointNo;
    }

    public String getEndPointNo() 
    {
        return endPointNo;
    }

    public void setStationCount(Integer stationCount) 
    {
        this.stationCount = stationCount;
    }

    public Integer getStationCount() 
    {
        return stationCount;
    }

    public void setDistance(Double distance) 
    {
        this.distance = distance;
    }

    public Double getDistance() 
    {
        return distance;
    }

    public void setHeightDifference(Double heightDifference) 
    {
        this.heightDifference = heightDifference;
    }

    public Double getHeightDifference() 
    {
        return heightDifference;
    }

    public void setScaleTrueLength(Double scaleTrueLength) 
    {
        this.scaleTrueLength = scaleTrueLength;
    }

    public Double getScaleTrueLength() 
    {
        return scaleTrueLength;
    }

    public void setAverageDistance(Double averageDistance) 
    {
        this.averageDistance = averageDistance;
    }

    public Double getAverageDistance() 
    {
        return averageDistance;
    }

    public void setScaleCorrectedHeightDiff(Double scaleCorrectedHeightDiff) 
    {
        this.scaleCorrectedHeightDiff = scaleCorrectedHeightDiff;
    }

    public Double getScaleCorrectedHeightDiff() 
    {
        return scaleCorrectedHeightDiff;
    }

    public void setAverageScaleCorrectedHeightDiff(Double averageScaleCorrectedHeightDiff) 
    {
        this.averageScaleCorrectedHeightDiff = averageScaleCorrectedHeightDiff;
    }

    public Double getAverageScaleCorrectedHeightDiff() 
    {
        return averageScaleCorrectedHeightDiff;
    }

    public void setRoundTripDifference(Double roundTripDifference) 
    {
        this.roundTripDifference = roundTripDifference;
    }

    public Double getRoundTripDifference() 
    {
        return roundTripDifference;
    }

    public void setTolerance(Double tolerance) 
    {
        this.tolerance = tolerance;
    }

    public Double getTolerance() 
    {
        return tolerance;
    }

    public void setPrecisionStatistics(double precisionStatistics) 
    {
        this.precisionStatistics = precisionStatistics;
    }

    public double getPrecisionStatistics() 
    {
        return precisionStatistics;
    }

    public void setQualityScore(Double qualityScore) 
    {
        this.qualityScore = qualityScore;
    }

    public Double getQualityScore() 
    {
        return qualityScore;
    }

    public void setPendingPoint(String pendingPoint) 
    {
        this.pendingPoint = pendingPoint;
    }

    public String getPendingPoint() 
    {
        return pendingPoint;
    }

    public void setCoordinateX(Double coordinateX) 
    {
        this.coordinateX = coordinateX;
    }

    public Double getCoordinateX() 
    {
        return coordinateX;
    }

    public void setCoordinateY(Double coordinateY) 
    {
        this.coordinateY = coordinateY;
    }

    public Double getCoordinateY() 
    {
        return coordinateY;
    }

    public void setHeightH(Double heightH) 
    {
        this.heightH = heightH;
    }

    public Double getHeightH() 
    {
        return heightH;
    }

    public void setCoordinateSystem(String coordinateSystem) 
    {
        this.coordinateSystem = coordinateSystem;
    }

    public String getCoordinateSystem() 
    {
        return coordinateSystem;
    }

    public void setZoneNo(Double zoneNo) 
    {
        this.zoneNo = zoneNo;
    }

    public Double getZoneNo() 
    {
        return zoneNo;
    }

    public void setBandWidth(Double bandWidth) 
    {
        this.bandWidth = bandWidth;
    }

    public Double getBandWidth() 
    {
        return bandWidth;
    }

    public void setGeodeticLongitude(double geodeticLongitude) 
    {
        this.geodeticLongitude = geodeticLongitude;
    }

    public double getGeodeticLongitude() 
    {
        return geodeticLongitude;
    }

    public void setGeodeticLatitude(double geodeticLatitude) 
    {
        this.geodeticLatitude = geodeticLatitude;
    }

    public double getGeodeticLatitude() 
    {
        return geodeticLatitude;
    }

    public void setPointCorrection(double pointCorrection) 
    {
        this.pointCorrection = pointCorrection;
    }

    public Double getPointCorrection() 
    {
        return pointCorrection;
    }

    public void setCorrectedHeightDifference(Double correctedHeightDifference) 
    {
        this.correctedHeightDifference = correctedHeightDifference;
    }

    public Double getCorrectedHeightDifference() 
    {
        return correctedHeightDifference;
    }

    public void setElevation(Double elevation) 
    {
        this.elevation = elevation;
    }

    public Double getElevation() 
    {
        return elevation;
    }

    public void setDistanceFromStart(Double distanceFromStart) 
    {
        this.distanceFromStart = distanceFromStart;
    }

    public Double getDistanceFromStart() 
    {
        return distanceFromStart;
    }

    public void setHeightMiddleError(Double heightMiddleError) 
    {
        this.heightMiddleError = heightMiddleError;
    }

    public Double getHeightMiddleError() 
    {
        return heightMiddleError;
    }

    public void setLevel(int level) 
    {
        this.level = level;
    }

    public int getLevel() 
    {
        return level;
    }

    public void setLatitudePosition(String latitudePosition) 
    {
        this.latitudePosition = latitudePosition;
    }

    public String getLatitudePosition() 
    {
        return latitudePosition;
    }

    public void setLongitudePosition(String longitudePosition) 
    {
        this.longitudePosition = longitudePosition;
    }

    public String getLongitudePosition() 
    {
        return longitudePosition;
    }
    
    public void setProjectionHeight(Double projectionHeight) 
    {
        this.projectionHeight = projectionHeight;
    }

    public Double getProjectionHeight() 
    {
        return projectionHeight;
    }

    
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("startPointNo", getStartPointNo())
            .append("endPointNo", getEndPointNo())
            .append("stationCount", getStationCount())
            .append("distance", getDistance())
            .append("heightDifference", getHeightDifference())
            .append("scaleTrueLength", getScaleTrueLength())
            .append("averageDistance", getAverageDistance())
            .append("scaleCorrectedHeightDiff", getScaleCorrectedHeightDiff())
            .append("averageScaleCorrectedHeightDiff", getAverageScaleCorrectedHeightDiff())
            .append("roundTripDifference", getRoundTripDifference())
            .append("tolerance", getTolerance())
            .append("precisionStatistics", getPrecisionStatistics())
            .append("qualityScore", getQualityScore())
            .append("pendingPoint", getPendingPoint())
            .append("coordinateX", getCoordinateX())
            .append("coordinateY", getCoordinateY())
            .append("heightH", getHeightH())
            .append("coordinateSystem", getCoordinateSystem())
            .append("zoneNo", getZoneNo())
            .append("bandWidth", getBandWidth())
            .append("geodeticLongitude", getGeodeticLongitude())
            .append("geodeticLatitude", getGeodeticLatitude())
            .append("pointCorrection", getPointCorrection())
            .append("correctedHeightDifference", getCorrectedHeightDifference())
            .append("elevation", getElevation())
            .append("distanceFromStart", getDistanceFromStart())
            .append("heightMiddleError", getHeightMiddleError())
            .append("level", getLevel())
            .append("latitudePosition", getLatitudePosition())
            .append("longitudePosition", getLongitudePosition())
            .append("projectionHeight", getProjectionHeight())
            .append("createTime", getCreateTime())
            .append("createBy", getCreateBy())
            .append("updateTime", getUpdateTime())
            .append("updateBy", getUpdateBy())
            .toString();
    }
}
