evaluation_template.go 3.9 KB
package domain

import (
	"time"
)

const (
	TemplateStateWaitConfig int = 0 // 模板状态-待完成配置
	TemplateStateWaitActive int = 1 // 模板状态-待启用
	TemplateStateEnable     int = 2 // 模板状态-启用
	TemplateStateDisable    int = 3 // 模板状态-停用
)

const (
	//LinkNodeSelfAssessment     int = 1 // 环节-填写反馈自评
	//LinkNodeAllInvite          int = 2 // 环节-360°邀请
	//LinkNodeAllAssessment      int = 3 // 环节-360°评估
	//LinkNodeSuperiorAssessment int = 4 // 环节-上级评估
	//LinkNodeViewResult         int = 5 // 环节-绩效结果查看

	LinkNodeAssessment int = 1 // 环节-评估(自评、360°评估、上级评估)
	LinkNodeAllInvite  int = 2 // 环节-360°邀请
	LinkNodeViewResult int = 3 // 环节-绩效结果查看

)

const (
	KpiCycleDay   int = 0 // 考核周期-日
	KpiCycleWeek  int = 1 // 考核周期-周
	KpiCycleMonth int = 2 // 考核周期-月
)

type EntryItem struct {
	Title    string `json:"title" comment:"填写标题"`
	HintText string `json:"hintText" comment:"文本内容提示"`
}

// NodeContent 评估内容
type NodeContent struct {
	Category    string      `json:"category" comment:"类别"`
	Name        string      `json:"name" comment:"名称"`
	RuleId      int64       `json:"ruleId" comment:"评估规则ID"`
	PromptTitle string      `json:"promptTitle" comment:"提示项标题"`
	PromptText  string      `json:"promptText" comment:"提示项正文"`
	EntryItems  []EntryItem `json:"entryItems" comment:"填写项"`
}

// NodeAllInvite 360°邀请
type NodeAllInvite struct {
}

// NodeKpiResult 绩效结果查看
type NodeKpiResult struct {
}

type LinkNode struct {
	Type          int            `json:"type" comment:"环节类型(1评估、2邀请、3绩效结果)"`
	Name          string         `json:"name" comment:"环节名称"`
	Describe      string         `json:"describe" comment:"环节描述"`
	NodeContents  []NodeContent  `json:"nodeContents" comment:"环节-评估内容"`
	NodeAllInvite *NodeAllInvite `json:"nodeAllInvite" comment:"环节-360°邀请"`
	NodeKpiResult *NodeKpiResult `json:"nodeKpiResult" comment:"环节-绩效结果"`
	TimeStart     *time.Time     `json:"timeStart" comment:"起始时间"`
	TimeEnd       *time.Time     `json:"timeEnd" comment:"截至时间"`
	KpiCycle      int            `json:"state" comment:"考核周期(0日、1周、2月)"`
}

type EvaluationTemplate struct {
	Id        int64      `json:"id,string" comment:"ID"`
	Name      string     `json:"name" comment:"名称"`
	Describe  string     `json:"describe" comment:"描述"`
	CompanyId int64      `json:"companyId,string" comment:"公司ID"`
	CreatorId int64      `json:"creatorId,string" comment:"创建人ID"`
	State     int        `json:"state" comment:"状态(0待完成配置、1待启用、2启用、3停用)"`
	LinkNodes []LinkNode `json:"linkNodes" comment:"评估流程"`
	CreatedAt time.Time  `json:"createdAt" comment:"创建时间"`
	UpdatedAt time.Time  `json:"updatedAt" comment:"更新时间"`
	DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"`
}

//type EvaluationLink struct {
//	NodeSelfAssessment     *LinkNode `json:"nodeSelfAssessment" comment:"填写反馈自评"`
//	NodeAllInvite          *LinkNode `json:"nodeAllInvite" comment:"360°邀请"`
//	NodeAllAssessment      *LinkNode `json:"nodeAllAssessment" comment:"360°评估"`
//	NodeSuperiorAssessment *LinkNode `json:"nodeSuperiorAssessment" comment:"上级评估"`
//	NodeViewResult         *LinkNode `json:"nodeViewResult" comment:"绩效结果查看"`
//}

type EvaluationTemplateRepository interface {
	Insert(template *EvaluationTemplate) (*EvaluationTemplate, error)
	Remove(template *EvaluationTemplate) (*EvaluationTemplate, error)
	FindOne(queryOptions map[string]interface{}) (*EvaluationTemplate, error)
	Find(queryOptions map[string]interface{}, simplify bool) (int64, []*EvaluationTemplate, error)
	Count(queryOptions map[string]interface{}) (int64, error)
}