更新若干事项
This commit is contained in:
1 parent
68cdaf38fa
commit
9898962836
30 files changed
+7715
No files matched your search
@@ -0,0 +1,176 @@
|
||||
package models
|
||||
|
||||
import "time"
|
||||
|
||||
// OaShift OA 工作排班-班次定义表 yz_backend_oa_shift
|
||||
//
|
||||
// 班次是排班的最小单位,描述一段可被复用的工作时间(如早班 09:00-18:00)。
|
||||
// 字段中的时间均为 "HH:mm" 字符串,休息时段可为空表示不区分午休。
|
||||
type OaShift struct {
|
||||
ID uint64 `orm:"column(id);pk;auto" json:"id"`
|
||||
Tid int `orm:"column(tid)" json:"tid"`
|
||||
Name string `orm:"column(name);size(50)" json:"name"`
|
||||
ShortName string `orm:"column(short_name);size(20);default()" json:"short_name"`
|
||||
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"`
|
||||
IsDefault int8 `orm:"column(is_default);default(0)" json:"is_default"`
|
||||
Status int8 `orm:"column(status);default(1)" json:"status"`
|
||||
Sort int `orm:"column(sort);default(0)" json:"sort"`
|
||||
Remark *string `orm:"column(remark);size(255);null" json:"remark"`
|
||||
IsDeleted int8 `orm:"column(is_deleted);default(0)" json:"is_deleted"`
|
||||
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 *OaShift) TableName() string {
|
||||
return "yz_backend_oa_shift"
|
||||
}
|
||||
|
||||
// 排班方案类型(plan_type)
|
||||
const (
|
||||
OaPlanTypeRegular int8 = 1 // 常规排班:按组织范围周期性下发
|
||||
OaPlanTypeTemp int8 = 2 // 临时方案:针对单个/多个员工的短期安排
|
||||
)
|
||||
|
||||
// 排班作用范围(scope_type)
|
||||
const (
|
||||
OaScopeCompany int8 = 1 // 整个公司
|
||||
OaScopeOrg int8 = 2 // 部门 / 小组(可含下级组织)
|
||||
OaScopeEmployees int8 = 3 // 指定员工(一人或多人)
|
||||
)
|
||||
|
||||
// OaSchedulePlan 排班方案 yz_backend_oa_schedule_plan
|
||||
//
|
||||
// 方案只描述“谁、在什么时间、上什么班”的规则,发布后由后端展开成
|
||||
// yz_backend_oa_schedule_entry 明细(每人每天一条),这样看板查询与
|
||||
// 临时调配都只操作明细表,方案本身可以随时停用而不影响已下发的排班。
|
||||
//
|
||||
// 两种排班方式:
|
||||
// - 按星期(AlignMode=0):Weekdays + ShiftID,一人一天一个固定班次;
|
||||
// - 按模板(AlignMode=1/2/3):Pattern 存周期的每日规则快照,
|
||||
// 发布时按自然周 / 开始日滚动 / 自然月推算每天是否上班、上哪个班次。
|
||||
// 模板来自平台端(yz_platform_sched_tpl),调用后即固化到本方案,
|
||||
// 之后模板调整与方案无关。
|
||||
type OaSchedulePlan struct {
|
||||
ID uint64 `orm:"column(id);pk;auto" json:"id"`
|
||||
Tid int `orm:"column(tid)" json:"tid"`
|
||||
PlanName string `orm:"column(plan_name);size(100)" json:"plan_name"`
|
||||
PlanType int8 `orm:"column(plan_type);default(1)" json:"plan_type"`
|
||||
ScopeType int8 `orm:"column(scope_type);default(2)" json:"scope_type"`
|
||||
OrgID uint64 `orm:"column(org_id);default(0)" json:"org_id"`
|
||||
OrgName string `orm:"column(org_name);size(128);default()" json:"org_name"`
|
||||
IncludeChild int8 `orm:"column(include_child);default(1)" json:"include_child"`
|
||||
EmployeeIDs string `orm:"column(employee_ids);type(text);null" json:"employee_ids"`
|
||||
EmployeeNames string `orm:"column(employee_names);type(text);null" json:"employee_names"`
|
||||
StartDate string `orm:"column(start_date);type(date)" json:"start_date"`
|
||||
EndDate string `orm:"column(end_date);type(date)" json:"end_date"`
|
||||
Weekdays string `orm:"column(weekdays);size(32);default()" json:"weekdays"`
|
||||
ShiftID uint64 `orm:"column(shift_id);default(0)" json:"shift_id"`
|
||||
// 模板快照与周期规则(平台模板调用后固化到方案,见 models/sched_template.go)
|
||||
TemplateID uint64 `orm:"column(template_id);default(0)" json:"template_id"`
|
||||
TemplateCode string `orm:"column(template_code);size(50);default()" json:"template_code"`
|
||||
TemplateName string `orm:"column(template_name);size(50);default()" json:"template_name"`
|
||||
AlignMode int8 `orm:"column(align_mode);default(0)" json:"align_mode"`
|
||||
CycleDays int `orm:"column(cycle_days);default(0)" 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"`
|
||||
Pattern string `orm:"column(pattern);type(text);null" json:"pattern"`
|
||||
ShiftName string `orm:"column(shift_name);size(50);default()" json:"shift_name"`
|
||||
Color string `orm:"column(color);size(20);default(#409EFF)" json:"color"`
|
||||
Note string `orm:"column(note);size(500);default()" json:"note"`
|
||||
Status int8 `orm:"column(status);default(1)" json:"status"`
|
||||
PublishStatus int8 `orm:"column(publish_status);default(0)" json:"publish_status"`
|
||||
EntryCount int `orm:"column(entry_count);default(0)" json:"entry_count"`
|
||||
CreatedBy uint64 `orm:"column(created_by);default(0)" json:"created_by"`
|
||||
CreatedByName string `orm:"column(created_by_name);size(64);default()" json:"created_by_name"`
|
||||
IsDeleted int8 `orm:"column(is_deleted);default(0)" json:"is_deleted"`
|
||||
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 *OaSchedulePlan) TableName() string {
|
||||
return "yz_backend_oa_schedule_plan"
|
||||
}
|
||||
|
||||
// 排班明细来源(source)
|
||||
const (
|
||||
OaEntrySourcePlan int8 = 1 // 由排班方案发布生成
|
||||
OaEntrySourceTemp int8 = 2 // 临时调配 / 单人多人手工安排
|
||||
)
|
||||
|
||||
// OaScheduleEntry 排班明细 yz_backend_oa_schedule_entry
|
||||
//
|
||||
// 一人一天一条有效记录:唯一键 (tid, employee_id, schedule_date, is_deleted)。
|
||||
// 删除时把 is_deleted 写成记录 ID,既保留历史痕迹,又避免同一天重新排班
|
||||
// 与软删记录冲突(与 OA 工作日报的处理方式一致)。
|
||||
type OaScheduleEntry struct {
|
||||
ID uint64 `orm:"column(id);pk;auto" json:"id"`
|
||||
Tid int `orm:"column(tid)" json:"tid"`
|
||||
PlanID uint64 `orm:"column(plan_id);default(0)" json:"plan_id"`
|
||||
EmployeeID uint `orm:"column(employee_id)" json:"employee_id"`
|
||||
EmployeeName string `orm:"column(employee_name);size(50);default()" json:"employee_name"`
|
||||
EmployeeAccount string `orm:"column(employee_account);size(50);default()" json:"employee_account"`
|
||||
OrgID uint64 `orm:"column(org_id);default(0)" json:"org_id"`
|
||||
OrgName string `orm:"column(org_name);size(128);default()" json:"org_name"`
|
||||
Position string `orm:"column(position);size(50);default()" json:"position"`
|
||||
ScheduleDate string `orm:"column(schedule_date);type(date)" json:"schedule_date"`
|
||||
ShiftID uint64 `orm:"column(shift_id);default(0)" json:"shift_id"`
|
||||
ShiftName string `orm:"column(shift_name);size(50);default()" json:"shift_name"`
|
||||
ShortName string `orm:"column(short_name);size(20);default()" json:"short_name"`
|
||||
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"`
|
||||
Source int8 `orm:"column(source);default(1)" json:"source"`
|
||||
Note string `orm:"column(note);size(255);default()" json:"note"`
|
||||
CreatedBy uint64 `orm:"column(created_by);default(0)" json:"created_by"`
|
||||
CreatedByName string `orm:"column(created_by_name);size(64);default()" json:"created_by_name"`
|
||||
IsDeleted uint64 `orm:"column(is_deleted);default(0)" json:"is_deleted"`
|
||||
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 *OaScheduleEntry) TableName() string {
|
||||
return "yz_backend_oa_schedule_entry"
|
||||
}
|
||||
|
||||
// 排班变更类型(change_type)
|
||||
const (
|
||||
OaChangeShift int8 = 1 // 调班:换班次
|
||||
OaChangeClear int8 = 2 // 清除排班
|
||||
OaChangeManual int8 = 3 // 手工新增排班
|
||||
OaChangePublish int8 = 4 // 方案发布覆盖
|
||||
)
|
||||
|
||||
// OaScheduleChange 排班变更留痕 yz_backend_oa_schedule_change
|
||||
//
|
||||
// 只记录“人 + 日期 + 原班次 -> 新班次”的关键信息,用于回答
|
||||
// “这天谁被临时调班了、为什么调”,不做完整审计日志。
|
||||
type OaScheduleChange struct {
|
||||
ID uint64 `orm:"column(id);pk;auto" json:"id"`
|
||||
Tid int `orm:"column(tid)" json:"tid"`
|
||||
EntryID uint64 `orm:"column(entry_id);default(0)" json:"entry_id"`
|
||||
EmployeeID uint `orm:"column(employee_id)" json:"employee_id"`
|
||||
EmployeeName string `orm:"column(employee_name);size(50);default()" json:"employee_name"`
|
||||
ScheduleDate string `orm:"column(schedule_date);type(date)" json:"schedule_date"`
|
||||
ChangeType int8 `orm:"column(change_type);default(1)" json:"change_type"`
|
||||
OldShiftID uint64 `orm:"column(old_shift_id);default(0)" json:"old_shift_id"`
|
||||
OldShiftName string `orm:"column(old_shift_name);size(50);default()" json:"old_shift_name"`
|
||||
NewShiftID uint64 `orm:"column(new_shift_id);default(0)" json:"new_shift_id"`
|
||||
NewShiftName string `orm:"column(new_shift_name);size(50);default()" json:"new_shift_name"`
|
||||
Reason string `orm:"column(reason);size(255);default()" json:"reason"`
|
||||
OperatorID uint64 `orm:"column(operator_id);default(0)" json:"operator_id"`
|
||||
OperatorName string `orm:"column(operator_name);size(64);default()" json:"operator_name"`
|
||||
CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"`
|
||||
}
|
||||
|
||||
func (m *OaScheduleChange) TableName() string {
|
||||
return "yz_backend_oa_schedule_change"
|
||||
}
|
||||
Reference in new issue
Block a user