package cn.iocoder.yudao.module.smartfactory.controller.admin.staffsalary.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Schema(description = "管理后台 - 厂区员工工资 Response VO")
@Data
@ExcelIgnoreUnannotated
public class StaffSalaryRespVO {

    @Schema(description = "主键id")
    @ExcelProperty("序号")
    private Long id;

    @Schema(description = "用户编号")
    private Long staffId;

    @Schema(description = "用户姓名")
    @ExcelProperty("用户姓名")
    private String staffName;

    @Schema(description = "工种")
    private Integer workTypeId;

    @Schema(description = "所属工厂编号")
    private Long factoryId;

    @Schema(description = "所属工厂名称")
    @ExcelProperty("所属工厂")
    private String factoryName;

    @Schema(description = "工资月份 | YYYY-MM")
    @ExcelProperty("工资月份")
    private String month;

    @Schema(description = "基础工资")
    @ExcelProperty("基础工资")
    private BigDecimal salary;

    @Schema(description = "考勤天数")
    @ExcelProperty("考勤天数")
    private Integer attendanceDays;

    @Schema(description = "应发工资")
    @ExcelProperty("应发工资")
    private BigDecimal payableAmount;

    @Schema(description = "归还金额")
    @ExcelProperty("归还金额")
    private BigDecimal returnAmount;

    @Schema(description = "扣款金额")
    @ExcelProperty("扣款金额")
    private BigDecimal deductionAmount;

    @Schema(description = "实发工资")
    @ExcelProperty("实发工资")
    private BigDecimal realAmount;

    @Schema(description = "扣款明细")
    private List<DeductionItemsVO> deductionItems;

    @Schema(description = "薪资主体明细")
    private List<SalarySubjectItemsVO> salarySubjectItems;

    @Schema(description = "复核状态 | 0未复核 1已复核")
    private Integer status;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "借支金额")
    private BigDecimal loanAmount;

    @Schema(description = "是否发放工资 | 0未发放 1已发放")
    private Integer isGrant;
}