package com.punchsettle.server.atomic.entity; import java.io.Serial; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.util.Date; import com.punchsettle.server.common.pojo.BaseEntity; import com.punchsettle.server.constant.ConsecutiveStatusEnum; import jakarta.persistence.Column; import jakarta.persistence.Table; import lombok.Data; import lombok.EqualsAndHashCode; /** * @author tyuio * @version 1.0.0 * @description 打卡任务状态记录表 * @date 2025/04/08 09:49 */ @Data @EqualsAndHashCode(callSuper = true) @Table(name = "pi_status_history") public class PiStatusHistory extends BaseEntity implements Serializable { @Serial private static final long serialVersionUID = 4985644914965499020L; /** * 用户ID */ @Column(name = "user_id") private Long userId; /** * 打卡多任务唯一ID */ @Column(name = "multi_task_unique_id") private Long multiTaskUniqueId; /** * 打卡任务唯一ID */ @Column(name = "task_unique_id") private Long taskUniqueId; /** * 记录状态的时间 */ @Column(name = "status_date") private String statusDate; /** * 任务连续打卡状态(连续打卡-CONTINUE、中断-INTERRUPTED) * @see ConsecutiveStatusEnum */ @Column(name = "task_continue_status") private ConsecutiveStatusEnum taskContinueStatus; /** * 任务连续天数,第一天开始就等于1 */ @Column(name = "task_continue_day") private Integer taskContinueDay; /** * 连续阶段(宽限期-GRACE_STAGE,正常打卡期-NORMAL_STAGE,惩罚期-PENALTY_STAGE) */ @Column(name = "continue_stage") private String continueStage; /** * 阶段开始日期 */ @Column(name = "stage_start_date") private LocalDate stageStartDate; /** * 结束日期 */ @Column(name = "stage_end_date") private LocalDate stageEndDate; /** * 连续中断次数 */ @Column(name = "连续中断次数") private Integer continueInterruptedCount; /** * 统计时间(格式:yyyy-W周数) */ @Column(name = "stats_time_in_week") private String statTimeInWeek; /** * 本周需打卡数 */ @Column(name = "punch_in_total_count_in_week") private Integer punchInTotalCountInWeek; /** * 本周已打卡数 */ @Column(name = "punch_in_count_in_week") private Integer punchInCountInWeek; /** * 本周完成打卡数 */ @Column(name = "punch_in_done_count_in_week") private Integer punchInDoneCountInWeek; /** * 本周打卡率 */ @Column(name = "punch_in_rate_in_week") private BigDecimal punchInRateInWeek; /** * 本周打卡完成率 */ @Column(name = "punch_in_done_rate_in_week") private BigDecimal punchInDoneRateInWeek; /** * 本周获取积分数 */ @Column(name = "points_in_week") private Integer pointsInWeek; /** * 统计时间(格式:yyyy-W周数) */ @Column(name = "stats_time_in_month") private String statTimeInMonth; /** * 本周需打卡数 */ @Column(name = "punch_in_total_count_in_month") private Integer punchInTotalCountInMonth; /** * 本周已打卡数 */ @Column(name = "punch_in_count_in_month") private Integer punchInCountInMonth; /** * 本周完成打卡数 */ @Column(name = "punch_in_done_count_in_month") private Integer punchInDoneCountInMonth; /** * 本周打卡率 */ @Column(name = "punch_in_rate_in_month") private BigDecimal punchInRateInMonth; /** * 本周打卡完成率 */ @Column(name = "punch_in_done_rate_in_month") private BigDecimal punchInDoneRateInMonth; /** * 本周获取积分数 */ @Column(name = "points_in_month") private Integer pointsInMonth; }