package com.fjhx.params.stock;

import com.fjhx.utils.BigDecimalUtil;
import lombok.Data;

import java.math.BigDecimal;

@Data
public class StatisticsResult {

    /**
     * 工艺
     */
    private String tech;

    /**
     * 排班面积
     */
    private BigDecimal scheduleArea;

    /**
     * 修正面积
     */
    private BigDecimal correctArea;

    /**
     * 领料金额
     */
    private BigDecimal pickingMoney;

    /**
     * 领料卷数
     */
    private Integer pickingNum;

    /**
     * 领料米数
     */
    private BigDecimal pickingMeters;

    /**
     * 领料面积
     */
    private BigDecimal pickingArea;

    /**
     * 退料金额
     */
    private BigDecimal backMoney;

    /**
     * 退料卷数
     */
    private Integer backNum;

    /**
     * 退料米数
     */
    private BigDecimal backMeters;

    /**
     * 退料面积
     */
    private BigDecimal backArea;

//    /**
//     * 转入金额
//     */
//    private BigDecimal transferInMoney;
//    /**
//     * 转入数量
//     */
//    private Integer transferInNum;
//    /**
//     * 转入米数
//     */
//    private BigDecimal transferInMeters;
    /**
     * 转入面积
     */
    private BigDecimal transferInArea;

//    /**
//     * 转出金额
//     */
//    private BigDecimal transferOutMoney;
//    /**
//     * 转出数量
//     */
//    private Integer transferOutNum;
//    /**
//     * 转出米数
//     */
//    private BigDecimal transferOutMeters;
    /**
     * 转出面积
     */
    private BigDecimal transferOutArea;

    /**
     * 布头布尾面料
     */
    private BigDecimal headTailCorrectArea;

    /**
     * 用户id
     */
    private String userId;

    /**
     * 工号
     */
    private String jobNo;

    /**
     * 用户id
     */
    private String userName;

    /**
     * 物料id
     */
    private String materialId;

    /**
     * 物料编码
     */
    private String materialCode;

    /**
     * 物料名称
     */
    private String materialName;

    /**
     * 实际使用
     */
    public BigDecimal getActualUse() {
        return getPickingArea()
                .subtract(getBackArea())
                .subtract(getCorrectArea())
                .subtract(getTransferOutArea())
                .subtract(getHeadTailCorrectArea())
                .add(getTransferInArea());
    }

    /**
     * 使用率
     */
    public BigDecimal getUseRate() {
        return BigDecimalUtil.init(getScheduleArea()).multiply(100).divideTry(getActualUse(), 2).getValue();
    }

    public BigDecimal getScheduleArea() {
        return BigDecimalUtil.keepDecimals(scheduleArea);
    }

    public BigDecimal getCorrectArea() {
        return BigDecimalUtil.keepDecimals(correctArea);
    }

    public Integer getPickingNum() {
        return pickingNum == null ? 0 : pickingNum;
    }

    public Integer getBackNum() {
        return backNum == null ? 0 : backNum;
    }

    public BigDecimal getPickingMoney() {
        return BigDecimalUtil.keepDecimals(pickingMoney);
    }

    public BigDecimal getPickingMeters() {
        return BigDecimalUtil.keepDecimals(pickingMeters);
    }

    public BigDecimal getPickingArea() {
        return BigDecimalUtil.keepDecimals(pickingArea);
    }

    public BigDecimal getBackMoney() {
        return BigDecimalUtil.keepDecimals(backMoney);
    }

    public BigDecimal getBackMeters() {
        return BigDecimalUtil.keepDecimals(backMeters);
    }

    public BigDecimal getBackArea() {
        return BigDecimalUtil.keepDecimals(backArea);
    }

    public BigDecimal getTransferInArea() {
        return BigDecimalUtil.keepDecimals(transferInArea);
    }

    public BigDecimal getTransferOutArea() {
        return BigDecimalUtil.keepDecimals(transferOutArea);
    }

    public BigDecimal getHeadTailCorrectArea() {
        return BigDecimalUtil.keepDecimals(headTailCorrectArea);
    }
}
