package models import "time" // 排班模板对齐方式(align_mode) // // 1 按自然周:双休 / 单休 / 大小周,day_index 0=周一 ... 6=周日 // 2 按开始日滚动:三班倒 / 做一休一,从方案开始日期起按周期顺延 // 3 按自然月:月休,按月计算休息日 const ( SchedTplAlignWeek int8 = 1 SchedTplAlignRoll int8 = 2 SchedTplAlignMonth int8 = 3 ) // 排班模板每天类型(day_type) const ( SchedTplDayWork int8 = 1 // 上班 SchedTplDayRest int8 = 2 // 休息 ) // 排班模板类型(template_type) const ( SchedTplTypeDoubleWeekend int8 = 1 // 双休 SchedTplTypeSingleWeekend int8 = 2 // 单休 SchedTplTypeBigSmallWeek int8 = 3 // 大小周 SchedTplTypeMonthRest int8 = 4 // 月休 SchedTplTypeThreeShift int8 = 5 // 三班倒 SchedTplTypeWorkRestOne int8 = 6 // 做一休一 SchedTplTypeCustom int8 = 9 // 自定义 ) // PlatformSchedTpl 平台端排班模板 yz_platform_sched_tpl // // 模板是全局数据(不按租户隔离),只有平台端可维护;系统预置模板 // (is_system=1)由平台锁定,禁止编辑 / 删除 / 停用。租户端调用模板时 // 会把规则快照进自己的排班方案(OaSchedulePlan.Pattern),之后互不影响。 type PlatformSchedTpl struct { ID uint64 `orm:"column(id);pk;auto" json:"id"` Code string `orm:"column(code);size(50);default()" json:"code"` Name string `orm:"column(name);size(50)" json:"name"` TemplateType int8 `orm:"column(template_type);default(9)" json:"template_type"` AlignMode int8 `orm:"column(align_mode);default(1)" json:"align_mode"` CycleDays int `orm:"column(cycle_days);default(7)" json:"cycle_days"` WeekOffset int8 `orm:"column(week_offset);default(0)" json:"week_offset"` MonthRestDays int8 `orm:"column(month_rest_days);default(0)" json:"month_rest_days"` MonthRestWeekday int8 `orm:"column(month_rest_weekday);default(0)" json:"month_rest_weekday"` Summary string `orm:"column(summary);size(255);default()" json:"summary"` IsSystem int8 `orm:"column(is_system);default(0)" json:"is_system"` Status int8 `orm:"column(status);default(1)" json:"status"` Sort int `orm:"column(sort);default(0)" json:"sort"` Creater string `orm:"column(creater);size(50);default()" json:"creater"` CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"` UpdateTime *time.Time `orm:"column(update_time);auto_now;type(datetime);null" json:"update_time"` DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"` } func (m *PlatformSchedTpl) TableName() string { return "yz_platform_sched_tpl" } // PlatformSchedTplDay 平台端排班模板的周期每日规则 yz_platform_sched_tpl_day // // day_index 为周期内第几天(从 0 开始)。day_type=2 表示休息, // 此时班次字段为空;day_type=1 时填写班次名称与上下班时间。 type PlatformSchedTplDay struct { ID uint64 `orm:"column(id);pk;auto" json:"id"` TemplateID uint64 `orm:"column(template_id);default(0)" json:"template_id"` DayIndex int `orm:"column(day_index);default(0)" json:"day_index"` DayType int8 `orm:"column(day_type);default(1)" json:"day_type"` ShiftName string `orm:"column(shift_name);size(50);default()" json:"shift_name"` ShiftShort string `orm:"column(shift_short);size(20);default()" json:"shift_short"` Color string `orm:"column(color);size(20);default(#409EFF)" json:"color"` WorkStart string `orm:"column(work_start);size(8);default()" json:"work_start"` WorkEnd string `orm:"column(work_end);size(8);default()" json:"work_end"` RestStart string `orm:"column(rest_start);size(8);default()" json:"rest_start"` RestEnd string `orm:"column(rest_end);size(8);default()" json:"rest_end"` WorkHours float64 `orm:"column(work_hours);type(decimal);digits(5);decimals(2);default(0)" json:"work_hours"` Remark string `orm:"column(remark);size(100);default()" json:"remark"` } func (m *PlatformSchedTplDay) TableName() string { return "yz_platform_sched_tpl_day" }