package com.bonus.material.push.domain;

import com.bonus.common.core.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author : 阮世耀
 * @version : 1.0
 * @PackagePath: com.bonus.material.push.domain
 * @CreateTime: 2025-01-23  10:01
 * @Description: i皖送费用推送
 */
@Data
@Accessors(chain = true)
public class IwsCostPushBean implements Serializable {

    private static final long serialVersionUID = -1473066593962126100L;

    private String id;

    private Long parentId;
    // 协议号
    @Excel(name = "协议号", sort = 1)
    private String agreementCode;

    // 协议id
    private Long agreementId;

    private String projectId;

    private String unitId;

    @Excel(name = "工程名称", sort = 3)
    private String projectName;

    @Excel(name = "工程编号", sort = 4)
    private String projectCode;

    @Excel(name = "单位名称", sort = 2)
    private String unitName;

    // 物资类型
    private String typeName;

    // 规格型号
    private String modelName;

    // 物资类型id
    private Integer typeId;

    // 数量
    private String num;

    // 领用数量
    private BigDecimal leaseNum;

    // 领料日期
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime leaseDate;

    // 领用天数
    private Integer leaseDays;

    // 退料日期
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime backDate;

    private BigDecimal leaseMoney;

    private BigDecimal consumeMoney;

    private BigDecimal lostMoney;

    private BigDecimal scrapMoney;

    private BigDecimal repairMoney;

    private BigDecimal leasePrice;

    /**
     * 总费用（统计领料 丢失 报废 维修费用）
     */
    private BigDecimal totalMoney;

    private String time;

    // 月份
    @NotBlank(message = "月份不能为空")
    private String month;

    // 月份数据库对应ID
    @ApiModelProperty(value = "结算月份表主键ID")
    private Integer taskId;

    private String type;

    /**
     * 原值
     */
    private String buyPrice;

    @Excel(name = "是否推送", readConverterExp = "0=未推送,1=已推送")
    private String isPush;

    private String money;

    /**
     * 年 yyyy
     */
    private String year;

    @Excel(name = "是否结算", readConverterExp = "0=未结算,1=已结算", sort = 6)
    private Byte isSettlement = 0;

    @ApiModelProperty(value = "安全工器具是否结算, 0未结算，1=已结算")
    private Byte safetyIsSettlement = 0;

    @Excel(name = "结算类型", readConverterExp = "1=工器具,2=安全工器具")
    private Byte settlementType;

    // 结算时间
    @Excel(name = "结算时间", dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 7)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime settlementTime;

    @ApiModelProperty(value = "安全工器具结算时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime safetySettlementTime;

    // 签订时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime signTime;

    // 是否匹配
    @Excel(name = "是否匹配", readConverterExp = "0=未匹配,1=已匹配", sort = 5)
    private Byte isMatch = 0;

    private String userName;

    @ApiModelProperty(value = "审核状态")
    private Byte checkStatus;

    // 推送备注
    private String pushRemark;

    private String companyId;

    // 开始时间
    private String startTime;

    // 结束时间
    private String endTime;

    // 是否删除 false未删除 true已删除
    private boolean delFlag = false;

    @ApiModelProperty(value = "预领料数")
    private BigDecimal preNum;

    @ApiModelProperty(value = "待出库数量")
    private BigDecimal pendingNum;

    @ApiModelProperty(value = "出库数量")
    @Excel(name = "出库数量")
    private BigDecimal outNum;
    // 工程id数组
    private String[] projectIds;

    private String deviceName;
    private String deviceModel;
    private String deviceStatus;
    private String maType;

    private String maTypeName;
    private String maModelName;
}
