package com.ylx.massage.domain;

import java.time.LocalDateTime;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * 商户每日考勤统计表(MerchantDailyAttendance)表实体类
 *
 * @author makejava
 * @since 2026-06-05 11:16:08
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "merchant_daily_attendance", autoResultMap = true)
public class MerchantDailyAttendance implements Serializable {

    /**
     * 主键ID。
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 关联商户ID。
     */
    @TableField("merchant_id")
    private Integer merchantId;

    /**
     * 关联商户姓名。
     */
    @TableField("merchant_name")
    private String merchantName;

    /**
     * 考勤日期，对应页面中的日期。
     */
    @TableField("attendance_date")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date attendanceDate;

    /**
     * 当日首次打卡或上线时间。
     */
    @TableField("attendance_start_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date attendanceStartTime;

    /**
     * 当日末次打卡或下线时间。
     */
    @TableField("attendance_end_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date attendanceEndTime;

    /**
     * 日累计工作时长，单位：分钟。
     */
    @TableField("total_work_minutes")
    private Integer totalWorkMinutes;

    /**
     * 考勤状态，1表示正常，2表示异常。
     */
    @TableField("attendance_status")
    private Integer attendanceStatus;

    /**
     * 扣款金额。
     */
    @TableField("deduction_amount")
    private Double deductionAmount;

    /**
     * 备注。
     */
    @TableField("remark")
    private String remark;

    /**
     * 创建人。
     */
    @TableField("create_by")
    private String createBy;

    /**
     * 创建时间。
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    private LocalDateTime createTime;

    /**
     * 更新时间。
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    private LocalDateTime updateTime;

    /**
     * 修改人。
     */
    @TableField("update_by")
    private String updateBy;

    /**
     * 逻辑删除标识，0表示否，1表示是。
     */
    @TableField("is_delete")
    @TableLogic
    private Integer isDelete;

    /**
     * 页面展示日累计工作时长文本，不对应数据库字段。
     */
    @TableField(exist = false)
    private String totalWorkDurationText;
}
