This commit is contained in:
@@ -0,0 +1,441 @@
|
||||
package jnpf.entity.attendance;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldStrategy;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import jnpf.base.entity.SuperBaseEntity;
|
||||
import jnpf.enums.attendance.AttendanceTypeEnum;
|
||||
import jnpf.model.attendance.vo.attendance.OvertimeRuleDetailVo;
|
||||
import jnpf.util.DateDetail;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 考勤组-每日出勤规则
|
||||
*
|
||||
* @author yanwenfu
|
||||
* @create 2023-11-22
|
||||
*/
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName(value = "ftb_attendance_daily_rule")
|
||||
public class FtbAttendanceDailyRule extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 7692755431988353300L;
|
||||
|
||||
/**
|
||||
* 考勤组id
|
||||
*/
|
||||
@TableField(value = "F_GroupId")
|
||||
private String groupId;
|
||||
|
||||
/**
|
||||
* 班次类型 0全天班次 1上午班次 2下午班次
|
||||
*/
|
||||
@TableField(value = "F_SchedulesType")
|
||||
private Integer schedulesType;
|
||||
/**
|
||||
* 是否自己的考勤组(0未产生借调 1被借调 2借调)
|
||||
*/
|
||||
@TableField(value = "F_SelfGroup")
|
||||
private Integer selfGroup;
|
||||
|
||||
/**
|
||||
* 班次时段id
|
||||
*/
|
||||
@TableField(value = "F_PeriodId")
|
||||
private String periodId;
|
||||
/**
|
||||
* 班次时段信息
|
||||
*/
|
||||
@TableField(value = "F_PeriodInfo")
|
||||
private String periodInfo;
|
||||
/**
|
||||
* 班次id
|
||||
*/
|
||||
@TableField(value = "F_ShiftId")
|
||||
private String shiftId;
|
||||
|
||||
/**
|
||||
* 日期
|
||||
*/
|
||||
@TableField(value = "F_Day")
|
||||
private Date day;
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
@TableField(value = "F_UserId")
|
||||
private String userId;
|
||||
|
||||
/**
|
||||
* 允许迟到(0否 1是)
|
||||
*/
|
||||
@TableField(value = "F_LateEnable")
|
||||
private Integer lateEnable;
|
||||
|
||||
/**
|
||||
* 允许早退(0否 1是)
|
||||
*/
|
||||
@TableField(value = "F_EarlyEnable")
|
||||
private Integer earlyEnable;
|
||||
|
||||
/**
|
||||
* 允许休息时间(0否 1是)
|
||||
*/
|
||||
@TableField(value = "F_BreakEnable")
|
||||
private Integer breakEnable;
|
||||
|
||||
/**
|
||||
* 允许次日下班(0否 1是)
|
||||
*/
|
||||
@TableField(value = "F_NextDayEnable")
|
||||
private Integer nextDayEnable;
|
||||
|
||||
/**
|
||||
* 打卡开始时间点
|
||||
*/
|
||||
@TableField(value = "F_ClockStartPoint")
|
||||
private Date clockStartPoint;
|
||||
|
||||
/**
|
||||
* 上班时间点
|
||||
*/
|
||||
@TableField(value = "F_InPoint")
|
||||
private Date inPoint;
|
||||
/**
|
||||
* 是否上班边界覆盖(0未覆盖 1加班覆盖 2借调覆盖 3请假覆盖)
|
||||
*/
|
||||
@TableField(value = "F_InUnbounded")
|
||||
private Integer inUnbounded;
|
||||
/**
|
||||
* 上班是否被外出覆盖(0未覆盖 1覆盖)
|
||||
*/
|
||||
@TableField(value = "F_InStepOutType")
|
||||
private Integer inStepOutType;
|
||||
/**
|
||||
* 上班被外出覆盖申请id
|
||||
*/
|
||||
@TableField(value = "F_InStepOutApplyId")
|
||||
private String inStepOutApplyId;
|
||||
/**
|
||||
* 原上班时间点
|
||||
*/
|
||||
@TableField(value = "F_OriginInPoint")
|
||||
private Date originInPoint;
|
||||
|
||||
/**
|
||||
* 迟到时间点
|
||||
*/
|
||||
@TableField(value = "F_LatePoint")
|
||||
private Date latePoint;
|
||||
/**
|
||||
* 是否晚走晚到
|
||||
*/
|
||||
@TableField(value = "F_IsLateOutLateIn")
|
||||
private Integer isLateOutLateIn;
|
||||
/**
|
||||
* 原始迟到时间点
|
||||
*/
|
||||
@TableField(value = "F_OriginalLatePoint")
|
||||
private Date originalLatePoint;
|
||||
|
||||
|
||||
/**
|
||||
* 上班缺卡时间点
|
||||
*/
|
||||
@TableField(value = "F_InLackPoint")
|
||||
private Date inLackPoint;
|
||||
|
||||
public Date getOriginBreakStartPoint() {
|
||||
return Objects.nonNull(originBreakStartPoint) ? originBreakStartPoint : breakStartPoint;
|
||||
}
|
||||
|
||||
public Date getOriginBreakEndPoint() {
|
||||
return Objects.nonNull(originBreakEndPoint)? originBreakEndPoint : breakEndPoint;
|
||||
}
|
||||
|
||||
public Date getOriginOutPoint() {
|
||||
return Objects.nonNull(originOutPoint)? originOutPoint : outPoint;
|
||||
}
|
||||
|
||||
public Date getOriginInPoint() {
|
||||
return Objects.nonNull(originInPoint)? originInPoint : inPoint;
|
||||
}
|
||||
|
||||
/**
|
||||
* 休息开始时间点
|
||||
*/
|
||||
@TableField(value = "F_BreakStartPoint", updateStrategy = FieldStrategy.IGNORED)
|
||||
private Date breakStartPoint;
|
||||
/**
|
||||
* 休息开始时间点
|
||||
*/
|
||||
@TableField(value = "F_OriginBreakStartPoint", updateStrategy = FieldStrategy.IGNORED)
|
||||
private Date originBreakStartPoint;
|
||||
|
||||
/**
|
||||
* 休息结束时间点
|
||||
*/
|
||||
@TableField(value = "F_BreakEndPoint", updateStrategy = FieldStrategy.IGNORED)
|
||||
private Date breakEndPoint;
|
||||
/**
|
||||
* 休息结束时间点
|
||||
*/
|
||||
@TableField(value = "F_OriginBreakEndPoint", updateStrategy = FieldStrategy.IGNORED)
|
||||
private Date originBreakEndPoint;
|
||||
|
||||
/**
|
||||
* 早退时间点
|
||||
*/
|
||||
@TableField(value = "F_EarlyPoint")
|
||||
private Date earlyPoint;
|
||||
|
||||
/**
|
||||
* 下班时间点
|
||||
*/
|
||||
@TableField(value = "F_OutPoint")
|
||||
private Date outPoint;
|
||||
/**
|
||||
* 是否下班边界覆盖(0未覆盖 1加班覆盖 2借调覆盖 3请假覆盖)
|
||||
*/
|
||||
@TableField(value = "F_OutUnbounded")
|
||||
private Integer outUnbounded;
|
||||
/**
|
||||
* 下班是否被外出覆盖(0未覆盖 1覆盖)
|
||||
*/
|
||||
@TableField(value = "F_OutStepOutType")
|
||||
private Integer outStepOutType;
|
||||
/**
|
||||
* 下班被外出覆盖申请id
|
||||
*/
|
||||
@TableField(value = "F_OutStepOutApplyId")
|
||||
private String outStepOutApplyId;
|
||||
/**
|
||||
* 原下班时间点
|
||||
*/
|
||||
@TableField(value = "F_OriginOutPoint")
|
||||
private Date originOutPoint;
|
||||
|
||||
/**
|
||||
* 下班缺卡时间点
|
||||
*/
|
||||
@TableField(value = "F_OutLackPoint")
|
||||
private Date outLackPoint;
|
||||
|
||||
/**
|
||||
* 出勤类型(1: 普班, 2: 休, 3: 假, 4: 假(带薪), 5: 加班)
|
||||
*/
|
||||
@TableField(value = "F_AttendanceType")
|
||||
private Integer attendanceType;
|
||||
/**
|
||||
* 申请id
|
||||
*/
|
||||
@TableField(value = "F_ApplyId")
|
||||
private String applyId;
|
||||
/**
|
||||
* 审核数据展示标识(1 起效,0 失效,2 打卡不展示,3 考勤组剔除人员待删除,9 标识出差,10 标识外出)
|
||||
*/
|
||||
@TableField(value = "F_ApplyViewEnable")
|
||||
private Integer applyViewEnable;
|
||||
/**
|
||||
* 申请事件开始时间
|
||||
*/
|
||||
@TableField(value = "F_ApplyStart")
|
||||
private Date applyStart;
|
||||
/**
|
||||
* 请假天数
|
||||
*/
|
||||
@TableField(value = "F_LeaveDay")
|
||||
private BigDecimal leaveDay;
|
||||
/**
|
||||
* 申请单位(1小时 2日 3半日)
|
||||
*/
|
||||
@TableField(value = "F_ApplyUnit")
|
||||
private Integer applyUnit;
|
||||
/**
|
||||
* 请假申请参数
|
||||
*/
|
||||
@TableField(value = "F_LeaveParam")
|
||||
private String leaveParam;
|
||||
|
||||
|
||||
public void setInPoint(Date inPoint) {
|
||||
this.inPoint = inPoint;
|
||||
calValidDuration();
|
||||
}
|
||||
|
||||
public void calInLackPoint(Date inLackPoint) {
|
||||
if (Objects.isNull(inLackPoint)) {
|
||||
return;
|
||||
}
|
||||
this.inLackPoint = inLackPoint.after(this.outPoint) ? this.outPoint : inLackPoint;
|
||||
}
|
||||
|
||||
public void calLatePoint(Date latePoint) {
|
||||
if (Objects.isNull(latePoint)) {
|
||||
return;
|
||||
}
|
||||
this.latePoint = latePoint.after(this.outPoint) ? this.outPoint : latePoint;
|
||||
}
|
||||
|
||||
public void setBreakStartPoint(Date breakStartPoint) {
|
||||
this.breakStartPoint = breakStartPoint;
|
||||
calValidDuration();
|
||||
}
|
||||
|
||||
public void setBreakEndPoint(Date breakEndPoint) {
|
||||
this.breakEndPoint = breakEndPoint;
|
||||
calValidDuration();
|
||||
}
|
||||
|
||||
public void setOutPoint(Date outPoint) {
|
||||
this.outPoint = outPoint;
|
||||
calValidDuration();
|
||||
}
|
||||
|
||||
/**
|
||||
* 申请事件结束时间
|
||||
*/
|
||||
@TableField(value = "F_ApplyEnd")
|
||||
private Date applyEnd;
|
||||
/**
|
||||
* 有效时长
|
||||
*/
|
||||
@TableField(value = "F_ValidDuration")
|
||||
private Integer validDuration;
|
||||
/**
|
||||
* 时段工时
|
||||
*/
|
||||
@TableField(value = "F_PeriodWorkDay")
|
||||
private BigDecimal periodWorkDay;
|
||||
/**
|
||||
* 计薪工时
|
||||
*/
|
||||
@TableField(value = "F_PayrollHours")
|
||||
private BigDecimal payrollHours;
|
||||
/**
|
||||
* 原始有效时长
|
||||
*/
|
||||
@TableField(value = "F_OriginValidDuration")
|
||||
private Integer originValidDuration;
|
||||
|
||||
public BigDecimal getPayrollHours() {
|
||||
if(Objects.nonNull(payrollHours)) {
|
||||
return payrollHours;
|
||||
}
|
||||
if (Objects.isNull(validDuration)) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
return BigDecimal.valueOf(validDuration).divide(BigDecimal.valueOf(60), 4, RoundingMode.HALF_UP);
|
||||
}
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@TableField(value = "F_Sort")
|
||||
private Integer sort;
|
||||
/**
|
||||
* 是否固定班 3自动排休调休上班 2为划线排班
|
||||
*/
|
||||
@TableField(value = "F_FixedMark")
|
||||
private Integer fixedMark;
|
||||
|
||||
/** 隐藏(0:不隐藏, 1:上班隐藏) */
|
||||
@TableField(exist = false)
|
||||
private String inHideStatus = "0";
|
||||
/** 隐藏(0:不隐藏, 1:下班隐藏) */
|
||||
@TableField(exist = false)
|
||||
private String outHideStatus = "0";
|
||||
/** 上班无需打卡(true:是, false:否) */
|
||||
@TableField(exist = false)
|
||||
private boolean onWorkIgnore = false;
|
||||
/** 下班无需打卡(true:是, false:否) */
|
||||
@TableField(exist = false)
|
||||
private boolean offWorkIgnore = false;
|
||||
/** 行号 */
|
||||
@TableField(exist = false)
|
||||
private Integer rn;
|
||||
/** 消息(离岗、回岗) */
|
||||
@TableField(exist = false)
|
||||
private String msg;
|
||||
/** 加班规则 */
|
||||
@TableField(exist = false)
|
||||
private OvertimeRuleDetailVo overtimeRuleDetail;
|
||||
/** 无审批加班 */
|
||||
@TableField(exist = false)
|
||||
private Integer overtime = 0;
|
||||
/** 目标日期 */
|
||||
@TableField(exist = false)
|
||||
private String targetDate;
|
||||
/** 实际日期(目标日期/目标日期-1) */
|
||||
@TableField(exist = false)
|
||||
private String queryDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Boolean isInsert = Boolean.FALSE;
|
||||
@TableField(exist = false)
|
||||
private Boolean isDelete = Boolean.FALSE;
|
||||
public void delete(){
|
||||
this.isDelete = true;
|
||||
}
|
||||
|
||||
public void calValidDuration() {
|
||||
if (Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.LEAVE.getCode()) || Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.ORDINARY.getCode())|| Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.REST.getCode()) || Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.WORKOVERTIME.getCode())) {
|
||||
if (Objects.isNull(this.getInPoint())) {
|
||||
return;
|
||||
}
|
||||
if (Objects.isNull(this.getOutPoint())) {
|
||||
return;
|
||||
}
|
||||
this.setValidDuration(DateDetail.calculateMinuteDiff(this.getInPoint(), this.getOutPoint()));
|
||||
if (Objects.isNull(this.getBreakEnable()) || this.getBreakEnable() == 0) {
|
||||
return;
|
||||
}
|
||||
if (Objects.isNull(this.getBreakStartPoint())) {
|
||||
return;
|
||||
}
|
||||
if (Objects.isNull(this.getBreakEndPoint())) {
|
||||
return;
|
||||
}
|
||||
this.setValidDuration(this.getValidDuration() - DateDetail.calculateMinuteDiff(this.getBreakStartPoint(), this.getBreakEndPoint()));
|
||||
}
|
||||
}
|
||||
public void calOriginValidDuration() {
|
||||
if (Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.LEAVE.getCode()) || Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.ORDINARY.getCode())|| Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.REST.getCode()) || Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.WORKOVERTIME.getCode())) {
|
||||
if (Objects.isNull(this.getOriginInPoint())) {
|
||||
return;
|
||||
}
|
||||
if (Objects.isNull(this.getOriginOutPoint())) {
|
||||
return;
|
||||
}
|
||||
this.setOriginValidDuration(DateDetail.calculateMinuteDiff(this.getOriginInPoint(), this.getOriginOutPoint()));
|
||||
if (Objects.isNull(this.getBreakEnable()) || this.getBreakEnable() == 0) {
|
||||
return;
|
||||
}
|
||||
if (Objects.isNull(this.getOriginBreakStartPoint())) {
|
||||
return;
|
||||
}
|
||||
if (Objects.isNull(this.getOriginBreakEndPoint())) {
|
||||
return;
|
||||
}
|
||||
this.setOriginValidDuration(this.getOriginValidDuration() - DateDetail.calculateMinuteDiff(this.getOriginBreakStartPoint(), this.getOriginBreakEndPoint()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void insertTrue() {
|
||||
this.isInsert = Boolean.TRUE;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user