package com.sundot.airport.common.domain.portrait;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.sundot.airport.common.enums.portrait.UserType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * 指标计算参数
 * 用于封装指标计算所需的各种参数，便于后续扩展
 */
@Data
public class IndicatorCalculateParams {
    /**
     * 用户ID
     */
    @ApiModelProperty(value = "用户ID")
    private Long userId;

    /**
     * 部门ID
     */
    @ApiModelProperty(value = "部门ID")
    private Long deptId;

    /**
     * 用户类型
     */
    @ApiModelProperty(value = "用户类型(personal:个人 team:班级 department:科级 brigade:大队级 station:站级 )")
    private String userTypeStr;

    /**
     * 计算开始时间
     */
    @ApiModelProperty(value = "计算开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date startTime;

    /**
     * 计算结束时间
     */
    @ApiModelProperty(value = "计算结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date endTime;

    /**
     * 指定要计算的模块列表，如果为空则计算所有模块
     * system,attendance,item
     */
    @ApiModelProperty(value = "指定要计算的模块列表(system,attendance,item)")
    private List<String> modules;

    /**
     * 用户类型枚举
     */
    private UserType userType;

    /**
     * 指标类型列表，如果为空则计算所有指标
     * IndicatorType
     */
    private List<String> indicatorTypes;

    private List<Long> userIds;
}