作者 庄敏学
正在显示 76 个修改的文件 包含 2696 行增加623 行删除
@@ -11,7 +11,7 @@ type CreateCycleCommand struct { @@ -11,7 +11,7 @@ type CreateCycleCommand struct {
11 Name string `cname:"周期名称" json:"name" valid:"Required"` 11 Name string `cname:"周期名称" json:"name" valid:"Required"`
12 TimeStart *time.Time `cname:"起始时间" json:"timeStart"` 12 TimeStart *time.Time `cname:"起始时间" json:"timeStart"`
13 TimeEnd *time.Time `cname:"截至时间" json:"timeEnd"` 13 TimeEnd *time.Time `cname:"截至时间" json:"timeEnd"`
14 - KpiCycle int `cname:"考核周期(0日、1周、2月)" json:"kpiCycle" valid:"Required"` 14 + KpiCycle int `cname:"考核周期" json:"kpiCycle" valid:"Required"`
15 TemplateIds []string `cname:"周期使用模板ID" json:"templateIds"` 15 TemplateIds []string `cname:"周期使用模板ID" json:"templateIds"`
16 } 16 }
17 17
@@ -15,3 +15,12 @@ func (in *QueryCycleCommand) Valid(validation *validation.Validation) { @@ -15,3 +15,12 @@ func (in *QueryCycleCommand) Valid(validation *validation.Validation) {
15 return 15 return
16 } 16 }
17 } 17 }
  18 +
  19 +type StatisticCycleProjectUserCommand struct {
  20 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  21 + CycleId int64 `cname:"周期ID" json:"cycleId,string"`
  22 +}
  23 +
  24 +func (in *StatisticCycleProjectUserCommand) Valid(*validation.Validation) {
  25 +
  26 +}
@@ -30,6 +30,7 @@ func (rs *EvaluationCycleService) Create(in *command.CreateCycleCommand) (interf @@ -30,6 +30,7 @@ func (rs *EvaluationCycleService) Create(in *command.CreateCycleCommand) (interf
30 cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext}) 30 cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext})
31 cycleTemplateRepository := factory.CreateEvaluationCycleTemplateRepository(map[string]interface{}{"transactionContext": transactionContext}) 31 cycleTemplateRepository := factory.CreateEvaluationCycleTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})
32 templateRepository := factory.CreateEvaluationTemplateRepository(map[string]interface{}{"transactionContext": transactionContext}) 32 templateRepository := factory.CreateEvaluationTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})
  33 + ruleRepository := factory.CreateEvaluationRuleRepository(map[string]interface{}{"transactionContext": transactionContext})
33 34
34 // 检测名称重复 35 // 检测名称重复
35 count, err := cycleRepository.Count(map[string]interface{}{"name": in.Name, "companyId": in.CompanyId}) 36 count, err := cycleRepository.Count(map[string]interface{}{"name": in.Name, "companyId": in.CompanyId})
@@ -48,6 +49,7 @@ func (rs *EvaluationCycleService) Create(in *command.CreateCycleCommand) (interf @@ -48,6 +49,7 @@ func (rs *EvaluationCycleService) Create(in *command.CreateCycleCommand) (interf
48 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "模板不存在, 请重新选择") 49 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "模板不存在, 请重新选择")
49 } 50 }
50 51
  52 + // 生成新周期数据
51 newCycle := &domain.EvaluationCycle{ 53 newCycle := &domain.EvaluationCycle{
52 Id: 0, 54 Id: 0,
53 Name: in.Name, 55 Name: in.Name,
@@ -62,8 +64,41 @@ func (rs *EvaluationCycleService) Create(in *command.CreateCycleCommand) (interf @@ -62,8 +64,41 @@ func (rs *EvaluationCycleService) Create(in *command.CreateCycleCommand) (interf
62 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 64 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
63 } 65 }
64 66
  67 + // 获取所有模板中的规则对象数据
  68 + ruleIds := make([]int64, 0)
  69 + ruleMap := map[int64]*domain.EvaluationRule{}
65 for i := range templates { 70 for i := range templates {
66 v := templates[i] 71 v := templates[i]
  72 + for j := range v.LinkNodes {
  73 + node := v.LinkNodes[j]
  74 + for k := range node.NodeContents {
  75 + nodeContent := node.NodeContents[k]
  76 + ruleIds = append(ruleIds, nodeContent.RuleId)
  77 + }
  78 + }
  79 + }
  80 + _, rules, err := ruleRepository.Find(map[string]interface{}{"ids": ruleIds, "companyId": in.CompanyId})
  81 + for i := range rules {
  82 + ruleMap[rules[i].Id] = rules[i]
  83 + }
  84 +
  85 + ctAdapter := &adapter.CycleTemplateAdapter{}
  86 + ctAdapter.EvaluationCycle = cycle
  87 + for i := range templates {
  88 + v := templates[i]
  89 +
  90 + // 对评估模板中的评估规则进行数据赋值
  91 + for j := range v.LinkNodes {
  92 + node := v.LinkNodes[j]
  93 + for k := range node.NodeContents {
  94 + nodeContent := node.NodeContents[k]
  95 + if rule, ok := ruleMap[nodeContent.RuleId]; ok {
  96 + nodeContent.Rule = rule
  97 + }
  98 + }
  99 + }
  100 +
  101 + // 插入周期中的模板数据
67 cycleTemplate := &domain.EvaluationCycleTemplate{ 102 cycleTemplate := &domain.EvaluationCycleTemplate{
68 Id: 0, 103 Id: 0,
69 Name: v.Name, 104 Name: v.Name,
@@ -74,12 +109,19 @@ func (rs *EvaluationCycleService) Create(in *command.CreateCycleCommand) (interf @@ -74,12 +109,19 @@ func (rs *EvaluationCycleService) Create(in *command.CreateCycleCommand) (interf
74 if err != nil { 109 if err != nil {
75 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 110 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
76 } 111 }
  112 +
  113 + // 输出模板简单信息
  114 + ctAdapter.TemplateSimples = append(ctAdapter.TemplateSimples, &domain.TemplateSimple{
  115 + Id: cycleTemplate.Id,
  116 + Name: cycleTemplate.Name,
  117 + CreatedAt: cycleTemplate.CreatedAt,
  118 + })
77 } 119 }
78 120
79 if err := transactionContext.CommitTransaction(); err != nil { 121 if err := transactionContext.CommitTransaction(); err != nil {
80 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 122 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
81 } 123 }
82 - return cycle, nil 124 + return ctAdapter, nil
83 125
84 } 126 }
85 127
@@ -166,10 +208,26 @@ func (rs *EvaluationCycleService) Update(in *command.UpdateCycleCommand) (interf @@ -166,10 +208,26 @@ func (rs *EvaluationCycleService) Update(in *command.UpdateCycleCommand) (interf
166 if err != nil { 208 if err != nil {
167 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 209 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
168 } 210 }
  211 +
  212 + _, cycleTemplates, err := cycleTemplateRepository.Find(map[string]interface{}{"cycleId": cycle.Id}, "template")
  213 + if err != nil {
  214 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  215 + }
  216 +
  217 + ctAdapter := &adapter.CycleTemplateAdapter{}
  218 + ctAdapter.EvaluationCycle = cycle
  219 + for i := range cycleTemplates {
  220 + ctAdapter.TemplateSimples = append(ctAdapter.TemplateSimples, &domain.TemplateSimple{
  221 + Id: cycleTemplates[i].Id,
  222 + Name: cycleTemplates[i].Name,
  223 + CreatedAt: cycleTemplates[i].CreatedAt,
  224 + })
  225 + }
  226 +
169 if err := transactionContext.CommitTransaction(); err != nil { 227 if err := transactionContext.CommitTransaction(); err != nil {
170 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 228 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
171 } 229 }
172 - return cycle, nil 230 + return ctAdapter, nil
173 } 231 }
174 232
175 func (rs *EvaluationCycleService) Get(in *command.GetCycleCommand) (interface{}, error) { 233 func (rs *EvaluationCycleService) Get(in *command.GetCycleCommand) (interface{}, error) {
@@ -249,10 +307,57 @@ func (rs *EvaluationCycleService) List(in *command.QueryCycleCommand) (interface @@ -249,10 +307,57 @@ func (rs *EvaluationCycleService) List(in *command.QueryCycleCommand) (interface
249 transactionContext.RollbackTransaction() 307 transactionContext.RollbackTransaction()
250 }() 308 }()
251 cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext}) 309 cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext})
252 - // FIXME 总数量是否使用Count获取一个总数量  
253 - count, cycles, err := cycleRepository.Find(tool_funs.SimpleStructToMap(in)) 310 + total, cycles, err := cycleRepository.Find(tool_funs.SimpleStructToMap(in))
  311 + if err != nil {
  312 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  313 + }
  314 + return tool_funs.SimpleWrapGridMap(total, cycles), nil
  315 +}
  316 +
  317 +func (rs *EvaluationCycleService) StatisticCycleUser(in *command.StatisticCycleProjectUserCommand) (interface{}, error) {
  318 + transactionContext, err := factory.ValidateStartTransaction(in)
  319 + if err != nil {
  320 + return nil, err
  321 + }
  322 + defer func() {
  323 + transactionContext.RollbackTransaction()
  324 + }()
  325 + projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext})
  326 + _, projects, err := projectRepository.Find(tool_funs.SimpleStructToMap(in), "linkNodes")
254 if err != nil { 327 if err != nil {
255 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 328 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
256 } 329 }
257 - return tool_funs.SimpleWrapGridMap(count, cycles), nil 330 +
  331 + userIds := make([]int64, 0)
  332 + userIdMap := map[int64]int64{}
  333 + for i := range projects {
  334 + project := projects[i]
  335 + for j := range project.Recipients {
  336 + userId, _ := strconv.ParseInt(project.Recipients[j], 10, 64)
  337 + userIdMap[userId] = userId
  338 + }
  339 + }
  340 + for _, v := range userIdMap {
  341 + userIds = append(userIds, v)
  342 + }
  343 +
  344 + userTotal := 0
  345 + departmentTotal := 0
  346 + if len(userIds) > 0 {
  347 + userRepository := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext})
  348 + _, users, _ := userRepository.Find(map[string]interface{}{"ids": userIds, "limit": len(userIds)})
  349 + departmentIdMap := map[int]int{}
  350 + for i := range users {
  351 + for _, v := range users[i].DepartmentId {
  352 + departmentIdMap[v] = v
  353 + }
  354 + }
  355 + userTotal = len(users)
  356 + departmentTotal = len(departmentIdMap)
  357 + }
  358 +
  359 + if err := transactionContext.CommitTransaction(); err != nil {
  360 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  361 + }
  362 + return map[string]interface{}{"userTotal": userTotal, "departmentTotal": departmentTotal}, nil
258 } 363 }
@@ -2,25 +2,19 @@ package command @@ -2,25 +2,19 @@ package command
2 2
3 import ( 3 import (
4 "github.com/beego/beego/v2/core/validation" 4 "github.com/beego/beego/v2/core/validation"
5 - "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"  
6 ) 5 )
7 6
8 -type StateProjectCommand struct {  
9 - Id int64 `cname:"项目ID" json:"id,string" valid:"Required"`  
10 - State int `cname:"项目状态" json:"state"` 7 +type ActivateProjectCommand struct {
  8 + Id int64 `cname:"项目ID" json:"id,string" valid:"Required"`
11 } 9 }
12 10
13 type CopyProjectCommand struct { 11 type CopyProjectCommand struct {
14 - Id int64 `cname:"模板ID" json:"id,string" valid:"Required"` 12 + CreatorId int64 `cname:"创建人ID" json:"creatorId"`
  13 + Id int64 `cname:"模板ID" json:"id,string" valid:"Required"`
15 } 14 }
16 15
17 -func (in *StateProjectCommand) Valid(validation *validation.Validation) {  
18 - switch in.State {  
19 - case domain.ProjectStateWaitConfig, domain.ProjectStateWaitActive, domain.ProjectStateEnable, domain.ProjectStateDisable:  
20 - default:  
21 - validation.SetError("state", "状态设置错误")  
22 - return  
23 - } 16 +func (in *ActivateProjectCommand) Valid(validation *validation.Validation) {
  17 +
24 } 18 }
25 19
26 func (in *CopyProjectCommand) Valid(*validation.Validation) { 20 func (in *CopyProjectCommand) Valid(*validation.Validation) {
@@ -18,12 +18,3 @@ func (in *QueryProjectCommand) Valid(validation *validation.Validation) { @@ -18,12 +18,3 @@ func (in *QueryProjectCommand) Valid(validation *validation.Validation) {
18 return 18 return
19 } 19 }
20 } 20 }
21 -  
22 -type StatisticCycleProjectUserCommand struct {  
23 - CompanyId int64 `cname:"公司ID" json:"companyId"`  
24 - CycleId int64 `cname:"周期ID" json:"cycleId,string"`  
25 -}  
26 -  
27 -func (in *StatisticCycleProjectUserCommand) Valid(*validation.Validation) {  
28 -  
29 -}  
@@ -2,7 +2,7 @@ package command @@ -2,7 +2,7 @@ package command
2 2
3 import ( 3 import (
4 "github.com/beego/beego/v2/core/validation" 4 "github.com/beego/beego/v2/core/validation"
5 - "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" 5 + "time"
6 ) 6 )
7 7
8 type UpdateProjectCommand struct { 8 type UpdateProjectCommand struct {
@@ -17,22 +17,25 @@ type UpdateProjectCommand struct { @@ -17,22 +17,25 @@ type UpdateProjectCommand struct {
17 } 17 }
18 18
19 type UpdateProjectTemplateCommand struct { 19 type UpdateProjectTemplateCommand struct {
  20 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  21 + CycleId int64 `cname:"周期ID" json:"cycleId,string" valid:"Required"`
  22 + Id int64 `cname:"项目ID" json:"id,string" valid:"Required"`
  23 + TemplateId int64 `cname:"模板ID" json:"templateId,string"`
  24 + Recipients []string `cname:"被评估人ID" json:"recipients"`
  25 + TimeStart *time.Time `cname:"自评起始时间" json:"timeStart" valid:"Required"`
  26 + TimeEnd *time.Time `cname:"自评截止时间" json:"timeEnd" valid:"Required"`
  27 + KpiCycle int `cname:"评估周期" json:"kpiCycle" valid:"Required"`
  28 + KpiResultStart *time.Time `cname:"绩效结果开始查看时间" json:"kpiResultStart"`
  29 + Activate int `cname:"启动项目" json:"activate"`
  30 +}
  31 +
  32 +type CheckRecipientCommand struct {
20 CompanyId int64 `cname:"公司ID" json:"companyId"` 33 CompanyId int64 `cname:"公司ID" json:"companyId"`
21 CycleId int64 `cname:"周期ID" json:"cycleId,string" valid:"Required"` 34 CycleId int64 `cname:"周期ID" json:"cycleId,string" valid:"Required"`
22 Id int64 `cname:"项目ID" json:"id,string" valid:"Required"` 35 Id int64 `cname:"项目ID" json:"id,string" valid:"Required"`
23 - TemplateId int64 `cname:"模板ID" json:"templateId,string"`  
24 Recipients []string `cname:"被评估人ID" json:"recipients"` 36 Recipients []string `cname:"被评估人ID" json:"recipients"`
25 } 37 }
26 38
27 -type UpdateProjectTemplateNodeCommand struct {  
28 - CompanyId int64 `cname:"公司ID" json:"companyId"`  
29 - CycleId int64 `cname:"周期ID" json:"cycleId,string" valid:"Required"`  
30 - Id int64 `cname:"项目ID" json:"id,string" valid:"Required"`  
31 - TemplateId int64 `cname:"模板ID" json:"templateId,string" valid:"Required"`  
32 - LinkNodes []*domain.LinkNode `cname:"评估流程" json:"linkNodes"`  
33 - Activate int `cname:"启动项目" json:"activate"`  
34 -}  
35 -  
36 func (in *UpdateProjectCommand) Valid(validation *validation.Validation) { 39 func (in *UpdateProjectCommand) Valid(validation *validation.Validation) {
37 if len(in.Name) > 40 { 40 if len(in.Name) > 40 {
38 validation.SetError("name", "项目名称最大长度40个字符") 41 validation.SetError("name", "项目名称最大长度40个字符")
@@ -46,10 +49,3 @@ func (in *UpdateProjectTemplateCommand) Valid(validation *validation.Validation) @@ -46,10 +49,3 @@ func (in *UpdateProjectTemplateCommand) Valid(validation *validation.Validation)
46 return 49 return
47 } 50 }
48 } 51 }
49 -  
50 -func (in *UpdateProjectTemplateNodeCommand) Valid(validation *validation.Validation) {  
51 - if len(in.LinkNodes) == 0 {  
52 - validation.SetError("linkNodes", "请添加评估流程")  
53 - return  
54 - }  
55 -}  
@@ -55,10 +55,19 @@ func (rs *EvaluationProjectService) Create(in *command.CreateProjectCommand) (in @@ -55,10 +55,19 @@ func (rs *EvaluationProjectService) Create(in *command.CreateProjectCommand) (in
55 if err != nil { 55 if err != nil {
56 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 56 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
57 } 57 }
  58 +
  59 + projectAdapter := &adapter.EvaluationProjectAdapter{}
  60 + projectAdapter.EvaluationProject = project
  61 + if len(project.PmpIds) > 0 {
  62 + userRepository := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext})
  63 + _, users, _ := userRepository.Find(map[string]interface{}{"ids": project.PmpIds, "limit": len(project.PmpIds)})
  64 + projectAdapter.TransformPmpAdapter(users)
  65 + }
  66 +
58 if err := transactionContext.CommitTransaction(); err != nil { 67 if err := transactionContext.CommitTransaction(); err != nil {
59 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 68 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
60 } 69 }
61 - return project, nil 70 + return projectAdapter, nil
62 71
63 } 72 }
64 73
@@ -96,10 +105,19 @@ func (rs *EvaluationProjectService) Update(in *command.UpdateProjectCommand) (in @@ -96,10 +105,19 @@ func (rs *EvaluationProjectService) Update(in *command.UpdateProjectCommand) (in
96 if err != nil { 105 if err != nil {
97 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 106 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
98 } 107 }
  108 +
  109 + projectAdapter := &adapter.EvaluationProjectAdapter{}
  110 + projectAdapter.EvaluationProject = project
  111 + if len(project.PmpIds) > 0 {
  112 + userRepository := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext})
  113 + _, users, _ := userRepository.Find(map[string]interface{}{"ids": project.PmpIds, "limit": len(project.PmpIds)})
  114 + projectAdapter.TransformPmpAdapter(users)
  115 + }
  116 +
99 if err := transactionContext.CommitTransaction(); err != nil { 117 if err := transactionContext.CommitTransaction(); err != nil {
100 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 118 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
101 } 119 }
102 - return project, nil 120 + return projectAdapter, nil
103 } 121 }
104 122
105 func (rs *EvaluationProjectService) UpdateTemplate(in *command.UpdateProjectTemplateCommand) (interface{}, error) { 123 func (rs *EvaluationProjectService) UpdateTemplate(in *command.UpdateProjectTemplateCommand) (interface{}, error) {
@@ -145,48 +163,33 @@ func (rs *EvaluationProjectService) UpdateTemplate(in *command.UpdateProjectTemp @@ -145,48 +163,33 @@ func (rs *EvaluationProjectService) UpdateTemplate(in *command.UpdateProjectTemp
145 if err != nil { 163 if err != nil {
146 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 164 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
147 } 165 }
148 - cycleTemplate, err := cycleTemplateRepository.FindOne(map[string]interface{}{"id": in.TemplateId, "includeDeleted": true})  
149 - if err != nil {  
150 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
151 - }  
152 -  
153 - project.Recipients = in.Recipients  
154 - project.Template = cycleTemplate.Template  
155 -  
156 - project, err = projectRepository.Insert(project)  
157 - if err != nil {  
158 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
159 - }  
160 - if err := transactionContext.CommitTransaction(); err != nil {  
161 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())  
162 - }  
163 - return project, nil  
164 -}  
165 166
166 -func (rs *EvaluationProjectService) UpdateTemplateNode(in *command.UpdateProjectTemplateNodeCommand) (interface{}, error) {  
167 - transactionContext, err := factory.ValidateStartTransaction(in)  
168 - if err != nil {  
169 - return nil, err  
170 - }  
171 - defer func() {  
172 - transactionContext.RollbackTransaction()  
173 - }()  
174 -  
175 - projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext})  
176 -  
177 - project, err := projectRepository.FindOne(map[string]interface{}{"id": in.Id}) 167 + cycleTemplate, err := cycleTemplateRepository.FindOne(map[string]interface{}{"id": in.TemplateId, "includeDeleted": true})
178 if err != nil { 168 if err != nil {
179 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 169 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
180 } 170 }
181 171
182 // FIXME 启动时,需要激活定时任务 172 // FIXME 启动时,需要激活定时任务
183 if in.Activate == 1 { 173 if in.Activate == 1 {
  174 + if len(in.Recipients) == 0 {
  175 + return nil, application.ThrowError(application.BUSINESS_ERROR, "请添加被评估人")
  176 + }
184 project.State = domain.ProjectStateEnable 177 project.State = domain.ProjectStateEnable
185 } 178 }
186 - for i := range in.LinkNodes {  
187 - project.Template.LinkNodes[i].TimeStart = in.LinkNodes[i].TimeStart  
188 - project.Template.LinkNodes[i].TimeEnd = in.LinkNodes[i].TimeEnd  
189 - project.Template.LinkNodes[i].KpiCycle = in.LinkNodes[i].KpiCycle 179 +
  180 + project.Recipients = in.Recipients
  181 + project.Template = cycleTemplate.Template
  182 + for i := range project.Template.LinkNodes {
  183 + node := project.Template.LinkNodes[i]
  184 + node.KpiCycle = in.KpiCycle // 设置周期
  185 + if node.Type == domain.LinkNodeViewResult {
  186 + if in.KpiResultStart != nil {
  187 + node.TimeStart = in.KpiResultStart
  188 + }
  189 + } else {
  190 + node.TimeStart = in.TimeStart
  191 + node.TimeEnd = in.TimeEnd
  192 + }
190 } 193 }
191 194
192 project, err = projectRepository.Insert(project) 195 project, err = projectRepository.Insert(project)
@@ -268,8 +271,7 @@ func (rs *EvaluationProjectService) List(in *command.QueryProjectCommand) (inter @@ -268,8 +271,7 @@ func (rs *EvaluationProjectService) List(in *command.QueryProjectCommand) (inter
268 }() 271 }()
269 272
270 projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext}) 273 projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext})
271 - // FIXME 总数量是否使用Count获取一个总数量  
272 - count, projects, err := projectRepository.Find(tool_funs.SimpleStructToMap(in), "linkNodes") 274 + total, projects, err := projectRepository.Find(tool_funs.SimpleStructToMap(in), "linkNodes")
273 if err != nil { 275 if err != nil {
274 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 276 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
275 } 277 }
@@ -288,10 +290,10 @@ func (rs *EvaluationProjectService) List(in *command.QueryProjectCommand) (inter @@ -288,10 +290,10 @@ func (rs *EvaluationProjectService) List(in *command.QueryProjectCommand) (inter
288 pmpUsers = users 290 pmpUsers = users
289 } 291 }
290 projectAdapters := adapter.TransformProjectListAdapter(projects, pmpUsers) 292 projectAdapters := adapter.TransformProjectListAdapter(projects, pmpUsers)
291 - return tool_funs.SimpleWrapGridMap(count, projectAdapters), nil 293 + return tool_funs.SimpleWrapGridMap(total, projectAdapters), nil
292 } 294 }
293 295
294 -func (rs *EvaluationProjectService) State(in *command.StateProjectCommand) (interface{}, error) { 296 +func (rs *EvaluationProjectService) Activate(in *command.ActivateProjectCommand) (interface{}, error) {
295 transactionContext, err := factory.ValidateStartTransaction(in) 297 transactionContext, err := factory.ValidateStartTransaction(in)
296 if err != nil { 298 if err != nil {
297 return nil, err 299 return nil, err
@@ -301,13 +303,20 @@ func (rs *EvaluationProjectService) State(in *command.StateProjectCommand) (inte @@ -301,13 +303,20 @@ func (rs *EvaluationProjectService) State(in *command.StateProjectCommand) (inte
301 }() 303 }()
302 304
303 projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext}) 305 projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext})
304 -  
305 project, err := projectRepository.FindOne(map[string]interface{}{"id": in.Id}) 306 project, err := projectRepository.FindOne(map[string]interface{}{"id": in.Id})
306 if err != nil { 307 if err != nil {
307 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 308 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
308 } 309 }
309 310
310 - project.State = in.State 311 + if project.Template == nil {
  312 + return nil, application.ThrowError(application.BUSINESS_ERROR, "请添加评估模板")
  313 + }
  314 +
  315 + if len(project.Recipients) == 0 {
  316 + return nil, application.ThrowError(application.BUSINESS_ERROR, "请添加被评估人")
  317 + }
  318 +
  319 + project.State = domain.TemplateStateEnable
311 project, err = projectRepository.Insert(project) 320 project, err = projectRepository.Insert(project)
312 if err != nil { 321 if err != nil {
313 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 322 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
@@ -333,6 +342,10 @@ func (rs *EvaluationProjectService) Copy(in *command.CopyProjectCommand) (interf @@ -333,6 +342,10 @@ func (rs *EvaluationProjectService) Copy(in *command.CopyProjectCommand) (interf
333 } 342 }
334 // ID重置 343 // ID重置
335 project.Id = 0 344 project.Id = 0
  345 + project.Name = project.Name + " 副本"
  346 + project.CreatorId = in.CreatorId
  347 + project.Recipients = make([]string, 0) // 重置被评估人
  348 +
336 // 如果拷贝已经启用的模板,默认先设置为待启用 349 // 如果拷贝已经启用的模板,默认先设置为待启用
337 if project.State == domain.ProjectStateEnable { 350 if project.State == domain.ProjectStateEnable {
338 project.State = domain.ProjectStateWaitActive 351 project.State = domain.ProjectStateWaitActive
@@ -347,7 +360,7 @@ func (rs *EvaluationProjectService) Copy(in *command.CopyProjectCommand) (interf @@ -347,7 +360,7 @@ func (rs *EvaluationProjectService) Copy(in *command.CopyProjectCommand) (interf
347 return project, nil 360 return project, nil
348 } 361 }
349 362
350 -func (rs *EvaluationProjectService) StatisticCycleUser(in *command.StatisticCycleProjectUserCommand) (interface{}, error) { 363 +func (rs *EvaluationProjectService) CheckRecipients(in *command.CheckRecipientCommand) (interface{}, error) {
351 transactionContext, err := factory.ValidateStartTransaction(in) 364 transactionContext, err := factory.ValidateStartTransaction(in)
352 if err != nil { 365 if err != nil {
353 return nil, err 366 return nil, err
@@ -355,42 +368,41 @@ func (rs *EvaluationProjectService) StatisticCycleUser(in *command.StatisticCycl @@ -355,42 +368,41 @@ func (rs *EvaluationProjectService) StatisticCycleUser(in *command.StatisticCycl
355 defer func() { 368 defer func() {
356 transactionContext.RollbackTransaction() 369 transactionContext.RollbackTransaction()
357 }() 370 }()
  371 +
358 projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext}) 372 projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext})
359 - _, projects, err := projectRepository.Find(tool_funs.SimpleStructToMap(in), "linkNodes") 373 +
  374 + _, projects, err := projectRepository.Find(map[string]interface{}{"companyId": in.CompanyId, "cycleId": in.CycleId}, "linkNodes")
360 if err != nil { 375 if err != nil {
361 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 376 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
362 } 377 }
363 378
364 - userIds := make([]int64, 0)  
365 - userIdMap := map[int64]int64{} 379 + // 周期内的所有项目,员工不能重复被评估
  380 + rids := map[string]bool{}
366 for i := range projects { 381 for i := range projects {
367 - project := projects[i]  
368 - for j := range project.Recipients {  
369 - userId, _ := strconv.ParseInt(project.Recipients[j], 10, 64)  
370 - userIdMap[userId] = userId 382 + // 排除当前项目
  383 + if in.Id != projects[i].Id {
  384 + ids := projects[i].Recipients
  385 + for j := range ids {
  386 + rids[ids[j]] = true
  387 + }
371 } 388 }
372 } 389 }
373 - for _, v := range userIdMap {  
374 - userIds = append(userIds, v)  
375 - }  
376 -  
377 - userTotal := 0  
378 - departmentTotal := 0  
379 - if len(userIds) > 0 {  
380 - userRepository := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext})  
381 - _, users, _ := userRepository.Find(map[string]interface{}{"ids": userIds, "limit": len(userIds)})  
382 - departmentIdMap := map[int]int{}  
383 - for i := range users {  
384 - for _, v := range users[i].DepartmentId {  
385 - departmentIdMap[v] = v  
386 - } 390 + repeatNum := 0
  391 + for i := range in.Recipients {
  392 + id := in.Recipients[i]
  393 + if _, ok := rids[id]; ok {
  394 + repeatNum++
387 } 395 }
388 - userTotal = len(users)  
389 - departmentTotal = len(departmentIdMap)  
390 } 396 }
  397 + //if repeatNum > 0 {
  398 + // return nil, application.ThrowError(application.BUSINESS_ERROR, fmt.Sprintf("有%d人已经在本周期其他项目内,需要将他们移除", repeatNum))
  399 + //}
391 400
  401 + if err != nil {
  402 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  403 + }
392 if err := transactionContext.CommitTransaction(); err != nil { 404 if err := transactionContext.CommitTransaction(); err != nil {
393 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 405 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
394 } 406 }
395 - return map[string]interface{}{"userTotal": userTotal, "departmentTotal": departmentTotal}, nil 407 + return repeatNum, nil
396 } 408 }
@@ -6,13 +6,13 @@ import ( @@ -6,13 +6,13 @@ import (
6 ) 6 )
7 7
8 type CreateRuleCommand struct { 8 type CreateRuleCommand struct {
9 - CompanyId int64 `cname:"公司ID" json:"companyId"`  
10 - CreatorId int64 `cname:"创建人ID" json:"creatorId"`  
11 - Name string `cname:"规则名称" json:"name" valid:"Required"`  
12 - Remark string `cname:"规则备注" json:"remark"`  
13 - Type int `cname:"评估方式" json:"type"`  
14 - Rating *domain.Rating `cname:"评级" json:"rating"`  
15 - Score *domain.Score `cname:"评分" json:"score"` 9 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  10 + CreatorId int64 `cname:"创建人ID" json:"creatorId"`
  11 + Name string `cname:"规则名称" json:"name" valid:"Required"`
  12 + Remark string `cname:"规则备注" json:"remark"`
  13 + Type int `cname:"评估方式" json:"type"`
  14 + Rating domain.Rating `cname:"评级" json:"rating"`
  15 + Score domain.Score `cname:"评分" json:"score"`
16 } 16 }
17 17
18 func (in *CreateRuleCommand) Valid(validation *validation.Validation) { 18 func (in *CreateRuleCommand) Valid(validation *validation.Validation) {
@@ -26,20 +26,23 @@ func (in *CreateRuleCommand) Valid(validation *validation.Validation) { @@ -26,20 +26,23 @@ func (in *CreateRuleCommand) Valid(validation *validation.Validation) {
26 } 26 }
27 27
28 if len(in.Name) > 40 { 28 if len(in.Name) > 40 {
29 - validation.SetError("name", "角色名称最大长度40个字符") 29 + validation.SetError("name", "名称最大长度40个字符")
  30 + return
  31 + }
  32 +
  33 + if len(in.Remark) > 100 {
  34 + validation.SetError("remark", "备注不能超过100个字符")
30 return 35 return
31 } 36 }
32 37
33 if in.Type == domain.EvaluationTypeRating { 38 if in.Type == domain.EvaluationTypeRating {
34 - if nil == in.Rating || len(in.Rating.Levels) == 0 { 39 + if len(in.Rating.Levels) == 0 {
35 validation.SetError("rating", "评级内容不能为空") 40 validation.SetError("rating", "评级内容不能为空")
36 return 41 return
37 } 42 }
38 - }  
39 -  
40 - if in.Type == domain.EvaluationTypeScore {  
41 - if nil == in.Score {  
42 - validation.SetError("rating", "评分内容不能为空") 43 + } else if in.Type == domain.EvaluationTypeScore {
  44 + if len(in.Score.Levels) == 0 {
  45 + validation.SetError("score", "评分内容不能为空")
43 return 46 return
44 } 47 }
45 } 48 }
@@ -5,6 +5,8 @@ import "github.com/beego/beego/v2/core/validation" @@ -5,6 +5,8 @@ import "github.com/beego/beego/v2/core/validation"
5 type QueryRuleCommand struct { 5 type QueryRuleCommand struct {
6 CompanyId int64 `cname:"公司ID" json:"companyId"` 6 CompanyId int64 `cname:"公司ID" json:"companyId"`
7 NameOrRemark string `cname:"规则名称或备注" json:"nameOrRemark"` 7 NameOrRemark string `cname:"规则名称或备注" json:"nameOrRemark"`
  8 + Type int `cname:"评估方式(0评级、1评分)" json:"type"`
  9 + CreatorId int64 `cname:"创建人ID" json:"creatorId,string"`
8 PageNumber int `cname:"分页页码" json:"pageNumber" valid:"Required"` 10 PageNumber int `cname:"分页页码" json:"pageNumber" valid:"Required"`
9 PageSize int `cname:"分页数量" json:"pageSize" valid:"Required"` 11 PageSize int `cname:"分页数量" json:"pageSize" valid:"Required"`
10 } 12 }
@@ -6,14 +6,14 @@ import ( @@ -6,14 +6,14 @@ import (
6 ) 6 )
7 7
8 type UpdateRuleCommand struct { 8 type UpdateRuleCommand struct {
9 - Id int64 `cname:"规则ID" json:"id,string" valid:"Required"`  
10 - CompanyId int64 `cname:"公司ID" json:"companyId"`  
11 - CreatorId int64 `cname:"创建人ID" json:"creatorId"`  
12 - Name string `cname:"规则名称" json:"name" valid:"Required"`  
13 - Remark string `cname:"规则备注" json:"remark"`  
14 - Type int `cname:"评估方式" json:"type"`  
15 - Rating *domain.Rating `cname:"评级" json:"rating"`  
16 - Score *domain.Score `cname:"评分" json:"score"` 9 + Id int64 `cname:"规则ID" json:"id,string" valid:"Required"`
  10 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  11 + CreatorId int64 `cname:"创建人ID" json:"creatorId"`
  12 + Name string `cname:"规则名称" json:"name" valid:"Required"`
  13 + Remark string `cname:"规则备注" json:"remark"`
  14 + Type int `cname:"评估方式" json:"type"`
  15 + Rating domain.Rating `cname:"评级" json:"rating"`
  16 + Score domain.Score `cname:"评分" json:"score"`
17 } 17 }
18 18
19 func (in *UpdateRuleCommand) Valid(validation *validation.Validation) { 19 func (in *UpdateRuleCommand) Valid(validation *validation.Validation) {
@@ -27,20 +27,23 @@ func (in *UpdateRuleCommand) Valid(validation *validation.Validation) { @@ -27,20 +27,23 @@ func (in *UpdateRuleCommand) Valid(validation *validation.Validation) {
27 } 27 }
28 28
29 if len(in.Name) > 40 { 29 if len(in.Name) > 40 {
30 - validation.SetError("name", "角色名称最大长度40个字符") 30 + validation.SetError("name", "名称最大长度40个字符")
  31 + return
  32 + }
  33 +
  34 + if len(in.Remark) > 100 {
  35 + validation.SetError("remark", "备注不能超过100个字符")
31 return 36 return
32 } 37 }
33 38
34 if in.Type == domain.EvaluationTypeRating { 39 if in.Type == domain.EvaluationTypeRating {
35 - if nil == in.Rating || len(in.Rating.Levels) == 0 { 40 + if len(in.Rating.Levels) == 0 {
36 validation.SetError("rating", "评级内容不能为空") 41 validation.SetError("rating", "评级内容不能为空")
37 return 42 return
38 } 43 }
39 - }  
40 -  
41 - if in.Type == domain.EvaluationTypeScore {  
42 - if nil == in.Score {  
43 - validation.SetError("rating", "评分内容不能为空") 44 + } else if in.Type == domain.EvaluationTypeScore {
  45 + if len(in.Score.Levels) == 0 {
  46 + validation.SetError("score", "评分内容不能为空")
44 return 47 return
45 } 48 }
46 } 49 }
@@ -7,6 +7,7 @@ import ( @@ -7,6 +7,7 @@ import (
7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_rule/command" 7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_rule/command"
8 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" 8 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
9 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" 9 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  10 + "sort"
10 ) 11 )
11 12
12 type EvaluationRuleService struct { 13 type EvaluationRuleService struct {
@@ -36,6 +37,13 @@ func (rs *EvaluationRuleService) Create(in *command.CreateRuleCommand) (interfac @@ -36,6 +37,13 @@ func (rs *EvaluationRuleService) Create(in *command.CreateRuleCommand) (interfac
36 if count > 0 { 37 if count > 0 {
37 return nil, application.ThrowError(application.BUSINESS_ERROR, "名称已存在") 38 return nil, application.ThrowError(application.BUSINESS_ERROR, "名称已存在")
38 } 39 }
  40 +
  41 + if in.Type == domain.EvaluationTypeRating { // 按等级量化值排序
  42 + sort.SliceStable(in.Rating.Levels, func(i, j int) bool {
  43 + return in.Rating.Levels[i].QuantizedValue < in.Rating.Levels[j].QuantizedValue
  44 + })
  45 + }
  46 +
39 newRule := &domain.EvaluationRule{ 47 newRule := &domain.EvaluationRule{
40 Id: 0, 48 Id: 0,
41 Name: in.Name, 49 Name: in.Name,
@@ -82,6 +90,12 @@ func (rs *EvaluationRuleService) Update(in *command.UpdateRuleCommand) (interfac @@ -82,6 +90,12 @@ func (rs *EvaluationRuleService) Update(in *command.UpdateRuleCommand) (interfac
82 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 90 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
83 } 91 }
84 92
  93 + if in.Type == domain.EvaluationTypeRating { // 按等级量化值排序
  94 + sort.SliceStable(in.Rating.Levels, func(i, j int) bool {
  95 + return in.Rating.Levels[i].QuantizedValue < in.Rating.Levels[j].QuantizedValue
  96 + })
  97 + }
  98 +
85 rule.Name = in.Name 99 rule.Name = in.Name
86 rule.Remark = in.Remark 100 rule.Remark = in.Remark
87 rule.Type = in.Type 101 rule.Type = in.Type
@@ -143,22 +157,22 @@ func (rs *EvaluationRuleService) Remove(in *command.DeleteRuleCommand) (interfac @@ -143,22 +157,22 @@ func (rs *EvaluationRuleService) Remove(in *command.DeleteRuleCommand) (interfac
143 return rule, nil 157 return rule, nil
144 } 158 }
145 159
146 -func (rs *EvaluationRuleService) List(in *command.QueryRuleCommand) (interface{}, error) {  
147 - transactionContext, err := factory.StartTransaction()  
148 - if err != nil {  
149 - return nil, err  
150 - }  
151 - defer func() {  
152 - transactionContext.RollbackTransaction()  
153 - }()  
154 - ruleRepository := factory.CreateEvaluationRuleRepository(map[string]interface{}{"transactionContext": transactionContext})  
155 - // FIXME 总数量是否使用Count获取一个总数量  
156 - count, rules, err := ruleRepository.Find(tool_funs.SimpleStructToMap(in))  
157 - if err != nil {  
158 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
159 - }  
160 - return tool_funs.SimpleWrapGridMap(count, rules), nil  
161 -} 160 +//func (rs *EvaluationRuleService) List(in *command.QueryRuleCommand) (interface{}, error) {
  161 +// transactionContext, err := factory.StartTransaction()
  162 +// if err != nil {
  163 +// return nil, err
  164 +// }
  165 +// defer func() {
  166 +// transactionContext.RollbackTransaction()
  167 +// }()
  168 +// ruleRepository := factory.CreateEvaluationRuleRepository(map[string]interface{}{"transactionContext": transactionContext})
  169 +//
  170 +// total, rules, err := ruleRepository.Find(tool_funs.SimpleStructToMap(in))
  171 +// if err != nil {
  172 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  173 +// }
  174 +// return tool_funs.SimpleWrapGridMap(total, rules), nil
  175 +//}
162 176
163 func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (interface{}, error) { 177 func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (interface{}, error) {
164 transactionContext, err := factory.StartTransaction() 178 transactionContext, err := factory.StartTransaction()
@@ -171,8 +185,7 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i @@ -171,8 +185,7 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i
171 ruleRepository := factory.CreateEvaluationRuleRepository(map[string]interface{}{"transactionContext": transactionContext}) 185 ruleRepository := factory.CreateEvaluationRuleRepository(map[string]interface{}{"transactionContext": transactionContext})
172 userRepository := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext}) 186 userRepository := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext})
173 187
174 - // FIXME 总数量是否使用Count获取一个总数量  
175 - count, rules, err := ruleRepository.Find(tool_funs.SimpleStructToMap(in)) 188 + total, rules, err := ruleRepository.Find(tool_funs.SimpleStructToMap(in))
176 if err != nil { 189 if err != nil {
177 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 190 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
178 } 191 }
@@ -197,5 +210,5 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i @@ -197,5 +210,5 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i
197 ras[i].CreatorName = v 210 ras[i].CreatorName = v
198 } 211 }
199 } 212 }
200 - return tool_funs.SimpleWrapGridMap(count, ras), nil 213 + return tool_funs.SimpleWrapGridMap(total, ras), nil
201 } 214 }
@@ -8,7 +8,7 @@ type CreateTemplateCommand struct { @@ -8,7 +8,7 @@ type CreateTemplateCommand struct {
8 CompanyId int64 `cname:"公司ID" json:"companyId"` 8 CompanyId int64 `cname:"公司ID" json:"companyId"`
9 CreatorId int64 `cname:"创建人ID" json:"creatorId"` 9 CreatorId int64 `cname:"创建人ID" json:"creatorId"`
10 Name string `cname:"模板名称" json:"name" valid:"Required"` 10 Name string `cname:"模板名称" json:"name" valid:"Required"`
11 - Describe string `cname:"模板描述" json:"remark"` 11 + Describe string `cname:"模板描述" json:"describe"`
12 } 12 }
13 13
14 func (in *CreateTemplateCommand) Valid(validation *validation.Validation) { 14 func (in *CreateTemplateCommand) Valid(validation *validation.Validation) {
@@ -25,4 +25,9 @@ func (in *CreateTemplateCommand) Valid(validation *validation.Validation) { @@ -25,4 +25,9 @@ func (in *CreateTemplateCommand) Valid(validation *validation.Validation) {
25 validation.SetError("name", "模板名称最大长度40个字符") 25 validation.SetError("name", "模板名称最大长度40个字符")
26 return 26 return
27 } 27 }
  28 +
  29 + if len(in.Describe) > 100 {
  30 + validation.SetError("describe", "备注最大长度100个字符")
  31 + return
  32 + }
28 } 33 }
@@ -6,12 +6,15 @@ import ( @@ -6,12 +6,15 @@ import (
6 ) 6 )
7 7
8 type StateTemplateCommand struct { 8 type StateTemplateCommand struct {
9 - Id int64 `cname:"模板ID" json:"id,string" valid:"Required"`  
10 - State int `cname:"模板状态" json:"state"` 9 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  10 + Id int64 `cname:"模板ID" json:"id,string" valid:"Required"`
  11 + State int `cname:"模板状态" json:"state"`
11 } 12 }
12 13
13 type CopyTemplateCommand struct { 14 type CopyTemplateCommand struct {
14 - Id int64 `cname:"模板ID" json:"id,string" valid:"Required"` 15 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  16 + CreatorId int64 `cname:"创建人ID" json:"creatorId"`
  17 + Id int64 `cname:"模板ID" json:"id,string" valid:"Required"`
15 } 18 }
16 19
17 func (in *StateTemplateCommand) Valid(validation *validation.Validation) { 20 func (in *StateTemplateCommand) Valid(validation *validation.Validation) {
1 package command 1 package command
2 2
3 -import "github.com/beego/beego/v2/core/validation" 3 +import (
  4 + "github.com/beego/beego/v2/core/validation"
  5 + "time"
  6 +)
4 7
5 type QueryTemplateCommand struct { 8 type QueryTemplateCommand struct {
6 - CompanyId int64 `cname:"公司ID" json:"companyId"`  
7 - Name string `cname:"模板名称" json:"name"`  
8 - PageNumber int `cname:"分页页码" json:"pageNumber" valid:"Required"`  
9 - PageSize int `cname:"分页数量" json:"pageSize" valid:"Required"` 9 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  10 + Name string `cname:"模板名称" json:"name"`
  11 + State int `cname:"模板状态" json:"state"`
  12 + CreatedAt *time.Time `cname:"创建时间" json:"createdAt"`
  13 + PageNumber int `cname:"分页页码" json:"pageNumber" valid:"Required"`
  14 + PageSize int `cname:"分页数量" json:"pageSize" valid:"Required"`
10 } 15 }
11 16
12 func (in *QueryTemplateCommand) Valid(validation *validation.Validation) { 17 func (in *QueryTemplateCommand) Valid(validation *validation.Validation) {
@@ -16,14 +21,14 @@ func (in *QueryTemplateCommand) Valid(validation *validation.Validation) { @@ -16,14 +21,14 @@ func (in *QueryTemplateCommand) Valid(validation *validation.Validation) {
16 } 21 }
17 } 22 }
18 23
19 -// AllEnableTemplateCommand 查询所有已启用的模板  
20 -type AllEnableTemplateCommand struct {  
21 - CompanyId int64 `cname:"公司ID" json:"companyId"`  
22 -}  
23 -  
24 -func (in *AllEnableTemplateCommand) Valid(validation *validation.Validation) {  
25 - if in.CompanyId == 0 {  
26 - validation.SetError("companyId", "公司ID无效")  
27 - return  
28 - }  
29 -} 24 +//// AllEnableTemplateCommand 查询所有已启用的模板
  25 +//type AllEnableTemplateCommand struct {
  26 +// CompanyId int64 `cname:"公司ID" json:"companyId"`
  27 +//}
  28 +//
  29 +//func (in *AllEnableTemplateCommand) Valid(validation *validation.Validation) {
  30 +// if in.CompanyId == 0 {
  31 +// validation.SetError("companyId", "公司ID无效")
  32 +// return
  33 +// }
  34 +//}
@@ -9,7 +9,7 @@ type UpdateTemplateCommand struct { @@ -9,7 +9,7 @@ type UpdateTemplateCommand struct {
9 Id int64 `cname:"模板ID" json:"id,string" valid:"Required"` 9 Id int64 `cname:"模板ID" json:"id,string" valid:"Required"`
10 CompanyId int64 `cname:"公司ID" json:"companyId"` 10 CompanyId int64 `cname:"公司ID" json:"companyId"`
11 Name string `cname:"模板名称" json:"name" valid:"Required"` 11 Name string `cname:"模板名称" json:"name" valid:"Required"`
12 - Describe string `cname:"模板描述" json:"remark"` 12 + Describe string `cname:"模板描述" json:"describe"`
13 LinkNodes []*domain.LinkNode `cname:"评估流程" json:"linkNodes"` 13 LinkNodes []*domain.LinkNode `cname:"评估流程" json:"linkNodes"`
14 } 14 }
15 15
@@ -24,6 +24,11 @@ func (in *UpdateTemplateCommand) Valid(validation *validation.Validation) { @@ -24,6 +24,11 @@ func (in *UpdateTemplateCommand) Valid(validation *validation.Validation) {
24 return 24 return
25 } 25 }
26 26
  27 + if len(in.Describe) > 100 {
  28 + validation.SetError("describe", "备注最大长度100个字符")
  29 + return
  30 + }
  31 +
27 if len(in.LinkNodes) == 0 { 32 if len(in.LinkNodes) == 0 {
28 validation.SetError("linkNodes", "评估模板流程不能为空") 33 validation.SetError("linkNodes", "评估模板流程不能为空")
29 return 34 return
@@ -184,35 +184,14 @@ func (rs *EvaluationTemplateService) List(in *command.QueryTemplateCommand) (int @@ -184,35 +184,14 @@ func (rs *EvaluationTemplateService) List(in *command.QueryTemplateCommand) (int
184 transactionContext.RollbackTransaction() 184 transactionContext.RollbackTransaction()
185 }() 185 }()
186 templateRepository := factory.CreateEvaluationTemplateRepository(map[string]interface{}{"transactionContext": transactionContext}) 186 templateRepository := factory.CreateEvaluationTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})
187 -  
188 - // FIXME 总数量是否使用Count获取一个总数量  
189 - count, templates, err := templateRepository.Find(tool_funs.SimpleStructToMap(in), "linkNodes") 187 + total, templates, err := templateRepository.Find(tool_funs.SimpleStructToMap(in), "linkNodes")
190 if err != nil { 188 if err != nil {
191 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 189 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
192 } 190 }
193 - return tool_funs.SimpleWrapGridMap(count, templates), nil  
194 -}  
195 -  
196 -func (rs *EvaluationTemplateService) ListForEnable(in *command.AllEnableTemplateCommand) (interface{}, error) {  
197 - transactionContext, err := factory.StartTransaction()  
198 - if err != nil {  
199 - return nil, err  
200 - }  
201 - defer func() {  
202 - transactionContext.RollbackTransaction()  
203 - }()  
204 - templateRepository := factory.CreateEvaluationTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})  
205 -  
206 - count, templates, err := templateRepository.Find(map[string]interface{}{  
207 - "companyId": in.CompanyId,  
208 - "state": domain.TemplateStateEnable,  
209 - "offset": 0,  
210 - "limit": 9999999,  
211 - }, "linkNodes")  
212 - if err != nil {  
213 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 191 + if err := transactionContext.CommitTransaction(); err != nil {
  192 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
214 } 193 }
215 - return tool_funs.SimpleWrapGridMap(count, templates), nil 194 + return tool_funs.SimpleWrapGridMap(total, templates), nil
216 } 195 }
217 196
218 func (rs *EvaluationTemplateService) State(in *command.StateTemplateCommand) (interface{}, error) { 197 func (rs *EvaluationTemplateService) State(in *command.StateTemplateCommand) (interface{}, error) {
@@ -257,10 +236,20 @@ func (rs *EvaluationTemplateService) Copy(in *command.CopyTemplateCommand) (inte @@ -257,10 +236,20 @@ func (rs *EvaluationTemplateService) Copy(in *command.CopyTemplateCommand) (inte
257 } 236 }
258 // ID重置 237 // ID重置
259 template.Id = 0 238 template.Id = 0
  239 + template.Name = template.Name + " 副本"
  240 + template.CreatorId = in.CreatorId
  241 +
260 // 如果拷贝已经启用的模板,默认先设置为待启用 242 // 如果拷贝已经启用的模板,默认先设置为待启用
261 if template.State == domain.TemplateStateEnable { 243 if template.State == domain.TemplateStateEnable {
262 template.State = domain.TemplateStateWaitActive 244 template.State = domain.TemplateStateWaitActive
263 } 245 }
  246 +
  247 + // 流程环节ID重置
  248 + sid, _ := utils.NewSnowflakeId()
  249 + for i := range template.LinkNodes {
  250 + template.LinkNodes[i].Id = sid + int64(i+1)
  251 + }
  252 +
264 template, err = templateRepository.Insert(template) 253 template, err = templateRepository.Insert(template)
265 if err != nil { 254 if err != nil {
266 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 255 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
@@ -128,3 +128,27 @@ func CreateEvaluationProjectRepository(options map[string]interface{}) domain.Ev @@ -128,3 +128,27 @@ func CreateEvaluationProjectRepository(options map[string]interface{}) domain.Ev
128 } 128 }
129 return repository.NewEvaluationProjectRepository(transactionContext) 129 return repository.NewEvaluationProjectRepository(transactionContext)
130 } 130 }
  131 +
  132 +func CreateStaffAssessRepository(options map[string]interface{}) domain.StaffAssessRepository {
  133 + var transactionContext *pg.TransactionContext
  134 + if value, ok := options["transactionContext"]; ok {
  135 + transactionContext = value.(*pg.TransactionContext)
  136 + }
  137 + return repository.NewStaffAssessRepository(transactionContext)
  138 +}
  139 +
  140 +func CreateStaffAssessContentRepository(options map[string]interface{}) domain.StaffAssessContentRepository {
  141 + var transactionContext *pg.TransactionContext
  142 + if value, ok := options["transactionContext"]; ok {
  143 + transactionContext = value.(*pg.TransactionContext)
  144 + }
  145 + return repository.NewStaffAssessContentRepository(transactionContext)
  146 +}
  147 +
  148 +func CreateStaffAssessTaskRepository(options map[string]interface{}) domain.StaffAssessTaskRepository {
  149 + var transactionContext *pg.TransactionContext
  150 + if value, ok := options["transactionContext"]; ok {
  151 + transactionContext = value.(*pg.TransactionContext)
  152 + }
  153 + return repository.NewStaffAssessTaskRepository(transactionContext)
  154 +}
@@ -6,7 +6,6 @@ import ( @@ -6,7 +6,6 @@ import (
6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" 6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/role/adapter" 7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/role/adapter"
8 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/role/command" 8 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/role/command"
9 - "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"  
10 ) 9 )
11 10
12 type RoleService struct { 11 type RoleService struct {
@@ -17,122 +16,122 @@ func NewRoleService() *RoleService { @@ -17,122 +16,122 @@ func NewRoleService() *RoleService {
17 return newRoleService 16 return newRoleService
18 } 17 }
19 18
20 -// Create 创建  
21 -func (rs *RoleService) Create(in *command.CreateRoleCommand) (interface{}, error) {  
22 - transactionContext, err := factory.ValidateStartTransaction(in)  
23 - if err != nil {  
24 - return nil, err  
25 - }  
26 - defer func() {  
27 - transactionContext.RollbackTransaction()  
28 - }()  
29 - roleRepository := factory.CreateRoleRepository(map[string]interface{}{"transactionContext": transactionContext})  
30 -  
31 - // 检测名称重复  
32 - count, err := roleRepository.Count(map[string]interface{}{"name": in.Name, "companyId": in.CompanyId})  
33 - if err != nil {  
34 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
35 - }  
36 - if count > 0 {  
37 - return nil, application.ThrowError(application.BUSINESS_ERROR, "角色名称已存在")  
38 - }  
39 - newRole := &domain.Role{  
40 - Id: 0,  
41 - Name: in.Name,  
42 - Type: domain.RoleTypeCommon,  
43 - Description: in.Description,  
44 - CompanyId: in.CompanyId,  
45 - }  
46 - role, err := roleRepository.Insert(newRole)  
47 - if err != nil {  
48 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
49 - }  
50 - if err := transactionContext.CommitTransaction(); err != nil {  
51 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())  
52 - }  
53 - return role, nil  
54 -  
55 -}  
56 -  
57 -func (rs *RoleService) Update(in *command.UpdateRoleCommand) (interface{}, error) {  
58 - transactionContext, err := factory.ValidateStartTransaction(in)  
59 - if err != nil {  
60 - return nil, err  
61 - }  
62 - defer func() {  
63 - transactionContext.RollbackTransaction()  
64 - }()  
65 -  
66 - roleRepository := factory.CreateRoleRepository(map[string]interface{}{"transactionContext": transactionContext})  
67 -  
68 - // 检测名称重复(排除自己)  
69 - count, err := roleRepository.Count(map[string]interface{}{"name": in.Name, "companyId": in.CompanyId, "notId": in.Id})  
70 - if err != nil {  
71 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
72 - }  
73 - if count > 0 {  
74 - return nil, application.ThrowError(application.BUSINESS_ERROR, "角色名称已存在")  
75 - }  
76 -  
77 - role, err := roleRepository.FindOne(map[string]interface{}{"id": in.Id})  
78 - if err != nil {  
79 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
80 - }  
81 -  
82 - role.Name = in.Name  
83 - role.Name = in.Description  
84 -  
85 - role, err = roleRepository.Insert(role)  
86 - if err != nil {  
87 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
88 - }  
89 - if err := transactionContext.CommitTransaction(); err != nil {  
90 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())  
91 - }  
92 - return role, nil  
93 -}  
94 -  
95 -func (rs *RoleService) Remove(in *command.DeleteRoleCommand) (interface{}, error) {  
96 - transactionContext, err := factory.ValidateStartTransaction(in)  
97 - if err != nil {  
98 - return nil, err  
99 - }  
100 - defer func() {  
101 - transactionContext.RollbackTransaction()  
102 - }()  
103 -  
104 - roleRepository := factory.CreateRoleRepository(map[string]interface{}{"transactionContext": transactionContext})  
105 - roleUserRepository := factory.CreateRoleUserRepository(map[string]interface{}{"transactionContext": transactionContext})  
106 -  
107 - role, err := roleRepository.FindOne(map[string]interface{}{"id": in.Id})  
108 - if err != nil {  
109 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
110 - }  
111 - if _, err := roleRepository.Remove(role); err != nil {  
112 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
113 - }  
114 -  
115 - // 获取角色所有关联的用户,并删除  
116 - _, roleUsers, err := roleUserRepository.Find(map[string]interface{}{"roleId": in.Id, "companyId": in.CompanyId})  
117 - if err != nil {  
118 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
119 - }  
120 - ids := make([]int64, 0)  
121 - for i := range roleUsers {  
122 - ids = append(ids, roleUsers[i].Id)  
123 - }  
124 - if len(ids) > 0 {  
125 - err := roleUserRepository.BatchDeleteById(ids)  
126 - if err != nil {  
127 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
128 - }  
129 - }  
130 -  
131 - if err := transactionContext.CommitTransaction(); err != nil {  
132 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())  
133 - }  
134 - return role, nil  
135 -} 19 +//// Create 创建
  20 +//func (rs *RoleService) Create(in *command.CreateRoleCommand) (interface{}, error) {
  21 +// transactionContext, err := factory.ValidateStartTransaction(in)
  22 +// if err != nil {
  23 +// return nil, err
  24 +// }
  25 +// defer func() {
  26 +// transactionContext.RollbackTransaction()
  27 +// }()
  28 +// roleRepository := factory.CreateRoleRepository(map[string]interface{}{"transactionContext": transactionContext})
  29 +//
  30 +// // 检测名称重复
  31 +// count, err := roleRepository.Count(map[string]interface{}{"name": in.Name, "companyId": in.CompanyId})
  32 +// if err != nil {
  33 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  34 +// }
  35 +// if count > 0 {
  36 +// return nil, application.ThrowError(application.BUSINESS_ERROR, "角色名称已存在")
  37 +// }
  38 +// newRole := &domain.Role{
  39 +// Id: 0,
  40 +// Name: in.Name,
  41 +// Type: domain.RoleTypeCommon,
  42 +// Description: in.Description,
  43 +// CompanyId: in.CompanyId,
  44 +// }
  45 +// role, err := roleRepository.Insert(newRole)
  46 +// if err != nil {
  47 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  48 +// }
  49 +// if err := transactionContext.CommitTransaction(); err != nil {
  50 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  51 +// }
  52 +// return role, nil
  53 +//
  54 +//}
  55 +//
  56 +//func (rs *RoleService) Update(in *command.UpdateRoleCommand) (interface{}, error) {
  57 +// transactionContext, err := factory.ValidateStartTransaction(in)
  58 +// if err != nil {
  59 +// return nil, err
  60 +// }
  61 +// defer func() {
  62 +// transactionContext.RollbackTransaction()
  63 +// }()
  64 +//
  65 +// roleRepository := factory.CreateRoleRepository(map[string]interface{}{"transactionContext": transactionContext})
  66 +//
  67 +// // 检测名称重复(排除自己)
  68 +// count, err := roleRepository.Count(map[string]interface{}{"name": in.Name, "companyId": in.CompanyId, "notId": in.Id})
  69 +// if err != nil {
  70 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  71 +// }
  72 +// if count > 0 {
  73 +// return nil, application.ThrowError(application.BUSINESS_ERROR, "角色名称已存在")
  74 +// }
  75 +//
  76 +// role, err := roleRepository.FindOne(map[string]interface{}{"id": in.Id})
  77 +// if err != nil {
  78 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  79 +// }
  80 +//
  81 +// role.Name = in.Name
  82 +// role.Description = in.Description
  83 +//
  84 +// role, err = roleRepository.Insert(role)
  85 +// if err != nil {
  86 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  87 +// }
  88 +// if err := transactionContext.CommitTransaction(); err != nil {
  89 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  90 +// }
  91 +// return role, nil
  92 +//}
  93 +//
  94 +//func (rs *RoleService) Remove(in *command.DeleteRoleCommand) (interface{}, error) {
  95 +// transactionContext, err := factory.ValidateStartTransaction(in)
  96 +// if err != nil {
  97 +// return nil, err
  98 +// }
  99 +// defer func() {
  100 +// transactionContext.RollbackTransaction()
  101 +// }()
  102 +//
  103 +// roleRepository := factory.CreateRoleRepository(map[string]interface{}{"transactionContext": transactionContext})
  104 +// roleUserRepository := factory.CreateRoleUserRepository(map[string]interface{}{"transactionContext": transactionContext})
  105 +//
  106 +// role, err := roleRepository.FindOne(map[string]interface{}{"id": in.Id})
  107 +// if err != nil {
  108 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  109 +// }
  110 +// if _, err := roleRepository.Remove(role); err != nil {
  111 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  112 +// }
  113 +//
  114 +// // 获取角色所有关联的用户,并删除
  115 +// _, roleUsers, err := roleUserRepository.Find(map[string]interface{}{"roleId": in.Id, "companyId": in.CompanyId})
  116 +// if err != nil {
  117 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  118 +// }
  119 +// ids := make([]int64, 0)
  120 +// for i := range roleUsers {
  121 +// ids = append(ids, roleUsers[i].Id)
  122 +// }
  123 +// if len(ids) > 0 {
  124 +// err := roleUserRepository.BatchDeleteById(ids)
  125 +// if err != nil {
  126 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  127 +// }
  128 +// }
  129 +//
  130 +// if err := transactionContext.CommitTransaction(); err != nil {
  131 +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  132 +// }
  133 +// return role, nil
  134 +//}
136 135
137 func (rs *RoleService) ListForUser(in *command.QueryRoleUserCommand) (interface{}, error) { 136 func (rs *RoleService) ListForUser(in *command.QueryRoleUserCommand) (interface{}, error) {
138 transactionContext, err := factory.StartTransaction() 137 transactionContext, err := factory.StartTransaction()
@@ -171,6 +170,5 @@ func (rs *RoleService) ListForUser(in *command.QueryRoleUserCommand) (interface{ @@ -171,6 +170,5 @@ func (rs *RoleService) ListForUser(in *command.QueryRoleUserCommand) (interface{
171 roleUser.Users = tempList 170 roleUser.Users = tempList
172 adapterList = append(adapterList, roleUser) 171 adapterList = append(adapterList, roleUser)
173 } 172 }
174 -  
175 - return map[string]interface{}{"list": adapterList}, nil 173 + return tool_funs.SimpleWrapGridMap(int64(len(adapterList)), adapterList), nil
176 } 174 }
@@ -2,6 +2,7 @@ package service @@ -2,6 +2,7 @@ package service
2 2
3 import ( 3 import (
4 "github.com/linmadan/egglib-go/core/application" 4 "github.com/linmadan/egglib-go/core/application"
  5 + "github.com/linmadan/egglib-go/utils/tool_funs"
5 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" 6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/role/command" 7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/role/command"
7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" 8 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
@@ -88,47 +89,25 @@ func (rs *RoleUserService) Remove(in *command.UserRoleDeleteCommand) (interface{ @@ -88,47 +89,25 @@ func (rs *RoleUserService) Remove(in *command.UserRoleDeleteCommand) (interface{
88 return rus, nil 89 return rus, nil
89 } 90 }
90 91
91 -//func (rs *RoleUserService) ListForUser(in *command.UserRoleQueryCommand) (interface{}, error) {  
92 -// transactionContext, err := factory.StartTransaction()  
93 -// if err != nil {  
94 -// return nil, err  
95 -// }  
96 -// defer func() {  
97 -// transactionContext.RollbackTransaction()  
98 -// }()  
99 -// roleRepository := factory.CreateRoleUserRepository(map[string]interface{}{"transactionContext": transactionContext})  
100 -// userRepository := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext})  
101 -//  
102 -// in.PageNumber = 1  
103 -// in.PageSize = 9999999  
104 -//  
105 -// conditionMap := tool_funs.SimpleStructToMap(in)  
106 -// _, roles, err := roleRepository.Find(conditionMap)  
107 -// if err != nil {  
108 -// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
109 -// }  
110 -// if len(roles) == 0 {  
111 -// return nil, application.ThrowError(application.BUSINESS_ERROR, "未找到角色数据")  
112 -// }  
113 -//  
114 -// ids := make([]int64, 0)  
115 -// for i := range roles {  
116 -// ids = append(ids, roles[i].Id)  
117 -// }  
118 -//  
119 -// _, users, err := userRepository.Find(conditionMap)  
120 -// if err != nil {  
121 -// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
122 -// }  
123 -//  
124 -// //for i := range users {  
125 -// // users[i].RoleUserIds  
126 -// //}  
127 -//  
128 -// //if err := transactionContext.CommitTransaction(); err != nil {  
129 -// // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())  
130 -// //}  
131 -// //groupAdapter := &adapter.RoleUserAdapter{}  
132 -// //newList := groupAdapter.TransformTree(groups)  
133 -// return map[string]interface{}{"list": users}, nil  
134 -//} 92 +func (rs *RoleUserService) ListRole(in *command.UserRoleQueryCommand) (interface{}, error) {
  93 + transactionContext, err := factory.StartTransaction()
  94 + if err != nil {
  95 + return nil, err
  96 + }
  97 + defer func() {
  98 + transactionContext.RollbackTransaction()
  99 + }()
  100 + ruRepository := factory.CreateRoleUserRepository(map[string]interface{}{"transactionContext": transactionContext})
  101 +
  102 + in.PageNumber = 1
  103 + in.PageSize = 9999999
  104 +
  105 + tempList, err := ruRepository.FindAllContainUser(1, 10, in.CompanyId, in.RoleId)
  106 + if err != nil {
  107 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  108 + }
  109 + if err := transactionContext.CommitTransaction(); err != nil {
  110 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  111 + }
  112 + return tool_funs.SimpleWrapGridMap(int64(len(tempList)), tempList), nil
  113 +}
  1 +package adapter
  2 +
  3 +import "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  4 +
  5 +//评估内容详情
  6 +type AssessInfoResp struct {
  7 + CycleId int64 `json:"cycleId"` //周期id
  8 + CycleName string `json:"cycleName"` //周期名称
  9 + EvaluationProjectId int `json:"evaluationProjectId"` //项目id
  10 + EvaluationProjectName string `json:"evaluationProjectName"` //项目名称
  11 + BeginTime string `json:"beginTime"` //开始时间 2006-01-02 15:04:05
  12 + EndTime string `json:"endTime"` //结束时间 2006-01-02 15:04:05
  13 + Status string `json:"status"` //完成状态
  14 + TargetUserId int `json:"targetUser"` //
  15 + TargetUserName string `json:"targetUserName"` //
  16 + AssessContent []AssessContent `json:"assessContent"` //评估内容
  17 +}
  18 +
  19 +type AssessContent struct {
  20 + Category string `json:"category" comment:"类别"`
  21 + Name string `json:"name" comment:"名称"`
  22 + PromptTitle string `json:"promptTitle" comment:"提示项标题"`
  23 + PromptText string `json:"promptText" comment:"提示项正文"`
  24 + EntryItems []*domain.EntryItem `json:"entryItems" comment:"填写项"`
  25 +}
  1 +package adapter
  2 +
  3 +import "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  4 +
  5 +type AssessInviteUserResp struct {
  6 + LinkNodeId int `json:"linkNodeId"`
  7 + LinkNodeName string `json:"linkNodeName"`
  8 + BeginTime string `json:"beginTime"`
  9 + EndTime string `json:"endTime"`
  10 + AssessTaskId int `json:"assessTaskId"`
  11 + InviteSameSuper []domain.StaffDesc `json:"inviteSameSuper"`
  12 + InviteDiffSuper []domain.StaffDesc `json:"inviteDiffSuper"`
  13 +}
  1 +package adapter
  2 +
  3 +type AssessSelfList struct {
  4 + AssessId int `json:"assessId"` //用户执行的评估项id
  5 + BeginTime string `json:"beginTime"` //开始时间 2006-01-02 15:04:05
  6 + EndTime string `json:"endTime"` //开始时间 2006-01-02 15:04:05
  7 + CycleId int64 `json:"cycleId"` //周期id
  8 + CycleName string `json:"cycleName"` //周期名称
  9 + EvaluationProjectId int `json:"evaluationProjectId"` //项目id
  10 + EvaluationProjectName string `json:"evaluationProjectName"` //项目名称
  11 +}
  12 +
  13 +type StaffInfo struct {
  14 + UserName string `json:"userName"` //员工名称
  15 + CompanyName string `json:"companyName"` //公司名称
  16 + SupperUserName string `json:"supperUserName"` //上级名称
  17 + DutyTime string `json:"dutyTime"` //上岗时间
  18 +}
  1 +package adapter
  2 +
  3 +type AssessTaskDescResp struct {
  4 + AssessTaskId int `json:"assessTaskId"` //
  5 + EvaluationProjectId int `json:"evaluationProjectId"` //项目id
  6 + EvaluationProjectName string `json:"evaluationProjectName"` //项目名称
  7 + CycleName string `json:"cycleName"` //周期名称
  8 + BeginTime string `json:"beginTime"` //开始时间 2006-01-02 15:04:05
  9 + EndTime string `json:"endTime"` //结束时间 2006-01-02 15:04:05
  10 + StepList []AssessTaskStep `json:"stepList"` // 考评流程
  11 +}
  12 +
  13 +type AssessTaskStep struct {
  14 + SortBy int `json:"sortBy"` //排序
  15 + LinkNodeName string `json:"linkNodeName"` //流程名称
  16 + BeginTime string `json:"beginTime"` //开始时间时间
  17 + EndTime string `json:"endTime"` //结束时间
  18 + LinkNodeType int `json:"linkNodeType"` //流程类型
  19 + Desc string `json:"desc"` //情况描述
  20 + Status string `json:"status"` //流程是否完成 "":未参加,"uncompleted":未完成,"completed":完成
  21 +}
  1 +package adapter
  2 +
  3 +type SearchAssessMeResp struct {
  4 + AssessTaskId int `json:"assessTaskId"`
  5 + BeginTime string `json:"beginTime"`
  6 + EndTime string `json:"endTime"`
  7 + CycleId int64 `json:"cycleId"`
  8 + CycleName string `json:"cycleName"`
  9 + EvaluationProjectId int `json:"evaluationProjectId"`
  10 + EvaluationProjectName string `json:"evaluationProjectName"`
  11 +}
  1 +package command
  2 +
  3 +type CreateStaffAssessTask struct {
  4 + CompanyId int `json:"companyId"` //公司id
  5 + EvaluationProjectId int `json:"evaluationProjectId"` //项目id
  6 + EvaluationProjectName string `json:"evaluationProjectName"` //项目名称
  7 + CycleId int64 `json:"cycleId"` //对应的周期id
  8 + CycleName string `json:"cycleName"` //对应周期的名称
  9 + BeginTime string `json:"beginTime"` //绩效考核开始时间
  10 + EndTime string `json:"endTime"` //绩效考核截止时间
  11 + StepList []AssessTaskStep `json:"steps"` //考评的流程
  12 + ExecutorId []int `json:"executorId"` //参与此次考评的人
  13 +}
  14 +
  15 +type AssessTaskStep struct {
  16 + SortBy int `json:"sortBy"` //排序
  17 + LinkNodeId int `json:"linkNodeId"` //考评的流程id
  18 + LinkNodeName string `json:"linkNodeName"` //流程名称
  19 + LinkNodeType int `json:"linkNodeType"` //流程类型 同evaluation_template.go->LinkNode.Type
  20 + BeginTime string `json:"beginTime"` //绩效考核开始时间
  21 + EndTime string `json:"endTime"` //绩效考核截止时间
  22 +}
  1 +package command
  2 +
  3 +type SaveAssessInvite struct {
  4 + InviteSameSuper []string `json:"inviteSameSuper"` //相同上级同事
  5 + InviteDiffSuper []string `json:"inviteDiffSuper"` //不同上级同事
  6 + AssessTaskId int `json:"assessTaskId"` //评估任务id
  7 + TargetUserId int `json:"targetUserId"` //被评估的员工id
  8 +}
  1 +package query
  2 +
  3 +type AssessInfoQuery struct {
  4 + AssessTaskId int `json:"assessTaskId"` //StaffAssess 的id
  5 + TargetUserId int `json:"targetUserId"` //被评估的人id
  6 + CompanyId int `json:"companyId"` //公司id
  7 +
  8 +}
  1 +package query
  2 +
  3 +type AssessSelfListQuery struct {
  4 + UserId int `json:"userId"` //用户id
  5 + CompanyId int `json:"companyId"` //公司Id
  6 + PageSize int `json:"pageSize"` //每页的记录数
  7 + PageNumber int `json:"pageNumber"` //页码
  8 +}
  1 +package query
  2 +
  3 +type AssessTaskDescQuery struct {
  4 + AssessTaskId int `json:"assessTaskId"` //评估任务的id
  5 + UserId int `json:"userId"` //当前登录人的id
  6 + CompanyId int `json:"companyId"` //当前登录的公司
  7 +}
  1 +package query
  2 +
  3 +type GetAssessInviteUserQuery struct {
  4 + CompanyId int `json:"companyId"` //对公司
  5 + UsrId int `json:"usrId"` //被评估的员工id
  6 + AssessTaskId int `json:"assessTaskId"` //评估任务的id
  7 +}
  1 +package query
  2 +
  3 +type SearchAssessMeQuery struct {
  4 + UserId int `json:"userId"` // 当前登录人的用户id
  5 + CompanyId int `json:"companyId"` //当前登录人的公司Id
  6 + PageSize int `json:"pageSize"` //每页的记录数
  7 + PageNumber int `json:"pageNumber"` //页码
  8 +}
  1 +package service
  2 +
  3 +import (
  4 + "fmt"
  5 + "strconv"
  6 + "time"
  7 +
  8 + "github.com/linmadan/egglib-go/core/application"
  9 + "github.com/linmadan/egglib-go/utils/tool_funs"
  10 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
  11 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/adapter"
  12 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/command"
  13 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/query"
  14 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  15 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/log"
  16 +)
  17 +
  18 +// 员工评绩效评估
  19 +type StaffAssessServeice struct {
  20 +}
  21 +
  22 +func NewStaffAssessServeice() *StaffAssessServeice {
  23 + newService := &StaffAssessServeice{}
  24 + return newService
  25 +}
  26 +
  27 +// 获取我参与过的评估任务列表
  28 +func (srv StaffAssessServeice) SearchAssessTaskMe(param *query.SearchAssessMeQuery) (map[string]interface{}, error) {
  29 + transactionContext, err := factory.CreateTransactionContext(nil)
  30 + if err != nil {
  31 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  32 + }
  33 + if err := transactionContext.StartTransaction(); err != nil {
  34 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  35 + }
  36 + defer func() {
  37 + _ = transactionContext.RollbackTransaction()
  38 + }()
  39 + staffAssessTaskRepo := factory.CreateStaffAssessTaskRepository(map[string]interface{}{
  40 + "transactionContext": transactionContext,
  41 + })
  42 + var limit int = 20
  43 + var offset int = 0
  44 + if param.PageSize > 0 {
  45 + limit = param.PageSize
  46 + }
  47 + offset = (param.PageNumber - 1) * param.PageSize
  48 + condition := map[string]interface{}{
  49 + "executorId": param.UserId,
  50 + "companyId": param.CompanyId,
  51 + "limit": limit,
  52 + }
  53 + if offset > 0 {
  54 + condition["offset"] = offset
  55 + }
  56 + cnt, assessTaskList, err := staffAssessTaskRepo.Find(condition)
  57 + if err != nil {
  58 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "查询周期"+err.Error())
  59 + }
  60 + if err := transactionContext.CommitTransaction(); err != nil {
  61 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  62 + }
  63 + listData := make([]adapter.SearchAssessMeResp, 0, len(assessTaskList))
  64 + var temp adapter.SearchAssessMeResp
  65 + for _, v := range assessTaskList {
  66 + temp = adapter.SearchAssessMeResp{
  67 + AssessTaskId: v.Id,
  68 + BeginTime: v.BeginTime.Format("2006-01-02 15:04:05"),
  69 + EndTime: v.EndTime.Format("2006-01-02 15:04:05"),
  70 + CycleId: v.CycleId,
  71 + CycleName: v.CycleName,
  72 + EvaluationProjectId: v.EvaluationProjectId,
  73 + EvaluationProjectName: v.EvaluationProjectName,
  74 + }
  75 + listData = append(listData, temp)
  76 + }
  77 + return tool_funs.SimpleWrapGridMap(int64(cnt), listData), nil
  78 +}
  79 +
  80 +// 获取项目评估进度描述
  81 +func (srv StaffAssessServeice) AssessTaskDesc(param *query.AssessTaskDescQuery) (*adapter.AssessTaskDescResp, error) {
  82 + transactionContext, err := factory.CreateTransactionContext(nil)
  83 + if err != nil {
  84 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  85 + }
  86 + if err := transactionContext.StartTransaction(); err != nil {
  87 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  88 + }
  89 + defer func() {
  90 + _ = transactionContext.RollbackTransaction()
  91 + }()
  92 + // 获取评估任务
  93 + staffAssessTaskRepo := factory.CreateStaffAssessTaskRepository(map[string]interface{}{
  94 + "transactionContext": transactionContext,
  95 + })
  96 + //获取个人参与的评估流程
  97 + staffAssessRepo := factory.CreateStaffAssessRepository(map[string]interface{}{
  98 + "transactionContext": transactionContext,
  99 + })
  100 + assessTaskData, err := staffAssessTaskRepo.FindOne(map[string]interface{}{
  101 + "id": param.AssessTaskId,
  102 + })
  103 + if err != nil {
  104 + return nil, application.ThrowError(application.TRANSACTION_ERROR, "评估任务不存在,"+err.Error())
  105 + }
  106 + //返回的数据结果
  107 + result := adapter.AssessTaskDescResp{
  108 + AssessTaskId: assessTaskData.Id,
  109 + EvaluationProjectId: assessTaskData.EvaluationProjectId,
  110 + EvaluationProjectName: assessTaskData.EvaluationProjectName,
  111 + CycleName: assessTaskData.CycleName,
  112 + BeginTime: assessTaskData.BeginTime.Local().Format("2006-01-02 15:04-05"),
  113 + EndTime: assessTaskData.EndTime.Local().Format("2006-01-02 15:04-05"),
  114 + StepList: []adapter.AssessTaskStep{},
  115 + }
  116 +
  117 + for _, v := range assessTaskData.StepList {
  118 + stepItem := adapter.AssessTaskStep{
  119 + SortBy: v.SortBy,
  120 + LinkNodeName: v.LinkNodeName,
  121 + BeginTime: v.BeginTime.Local().Format("2006-01-02 15:04:05"),
  122 + EndTime: v.EndTime.Local().Format("2006-01-02 15:04:05"),
  123 + LinkNodeType: v.LinkNodeType,
  124 + Desc: fmt.Sprintf("截止日期:%s", v.EndTime.Local().Format("2006-01-02 15:04:05")),
  125 + Status: "",
  126 + }
  127 + switch v.LinkNodeType {
  128 + case domain.LinkNodeSelfAssessment:
  129 + //个人自评完成情况
  130 + _, assessSelfData, err := staffAssessRepo.Find(map[string]interface{}{
  131 + "staffAssessTaskId": assessTaskData.Id,
  132 + "executorId": param.UserId,
  133 + "typesList": []string{string(domain.AssessSelf)},
  134 + })
  135 + if err != nil {
  136 + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取个人的评估环节"+err.Error())
  137 + }
  138 + if len(assessSelfData) > 0 {
  139 + stepItem.Status = string(assessSelfData[0].Status)
  140 + }
  141 + stepItem.Desc = fmt.Sprintf("截止日期:%s", stepItem.EndTime)
  142 + case domain.LinkNodeAllInvite:
  143 + //邀请别人评估自己
  144 + _, assessInviteData, err := staffAssessRepo.Find(map[string]interface{}{
  145 + "staffAssessTaskId": assessTaskData.Id,
  146 + "targetUserId": param.UserId,
  147 + "typesList": []string{string(domain.AssessInviteDiffSuper), string(domain.AssessInviteSameSuper)},
  148 + "limit": 5,
  149 + })
  150 + if err != nil {
  151 + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取个人的评估环节"+err.Error())
  152 + }
  153 + //待邀请人数,为5人减去已邀请的人数。若邀请人数已等于或大于5人,则只显示截止日期即可
  154 + if len(assessInviteData) > 5 {
  155 + stepItem.Desc = fmt.Sprintf("截止日期:%s", stepItem.EndTime)
  156 + stepItem.Status = string(domain.StaffAssessCompleted)
  157 + } else {
  158 + stepItem.Desc = fmt.Sprintf("截止日期:%s 待邀请%d人", stepItem.EndTime, 5-len(assessInviteData))
  159 + stepItem.Status = string(domain.StaffAssessUncompleted)
  160 + }
  161 + case domain.LinkNodeAllAssessment:
  162 + //我评估别人,被邀请评估
  163 + _, assessInviteList, err := staffAssessRepo.Find(map[string]interface{}{
  164 + "staffAssessTaskId": assessTaskData.Id,
  165 + "executorId": param.UserId,
  166 + "typesList": []string{string(domain.AssessInviteDiffSuper), string(domain.AssessInviteSameSuper)},
  167 + })
  168 + if err != nil {
  169 + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取个人的评估环节"+err.Error())
  170 + }
  171 +
  172 + if len(assessInviteList) > 0 {
  173 + stepItem.Status = string(domain.StaffAssessCompleted)
  174 + stepItem.Desc = fmt.Sprintf("截止日期:%s", stepItem.EndTime)
  175 + for _, v := range assessInviteList {
  176 + if v.Status == domain.StaffAssessUncompleted {
  177 + stepItem.Status = string(domain.StaffAssessUncompleted)
  178 + break
  179 + }
  180 + }
  181 + }
  182 + case domain.LinkNodeSuperiorAssessment:
  183 + //我评估别人,上级评估
  184 + _, assessSupperList, err := staffAssessRepo.Find(map[string]interface{}{
  185 + "staffAssessTaskId": assessTaskData.Id,
  186 + "executorId": param.UserId,
  187 + "typesList": []string{string(domain.AssessSuper)},
  188 + })
  189 + if err != nil {
  190 + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取个人的评估环节"+err.Error())
  191 + }
  192 + if len(assessSupperList) > 0 {
  193 + stepItem.Status = string(domain.StaffAssessCompleted)
  194 + stepItem.Desc = fmt.Sprintf("截止日期:%s", stepItem.EndTime)
  195 + uncompletedNum := 0
  196 + for _, v := range assessSupperList {
  197 + if v.Status == domain.StaffAssessUncompleted {
  198 + uncompletedNum += 1
  199 + }
  200 + }
  201 + if uncompletedNum > 0 {
  202 + stepItem.Desc = fmt.Sprintf("截止日期:%s 待评估%d人", stepItem.EndTime, uncompletedNum)
  203 + }
  204 + }
  205 + }
  206 + result.StepList = append(result.StepList, stepItem)
  207 + }
  208 + if err := transactionContext.CommitTransaction(); err != nil {
  209 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  210 + }
  211 + return &result, nil
  212 +}
  213 +
  214 +// 获取个人的自评反馈历史记录列表
  215 +func (srv StaffAssessServeice) AssessSelfList(param *query.AssessSelfListQuery) (map[string]interface{}, error) {
  216 + transactionContext, err := factory.CreateTransactionContext(nil)
  217 + if err != nil {
  218 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  219 + }
  220 + if err := transactionContext.StartTransaction(); err != nil {
  221 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  222 + }
  223 + defer func() {
  224 + _ = transactionContext.RollbackTransaction()
  225 + }()
  226 + //获取个人参与的评估流程
  227 + staffAssessRepo := factory.CreateStaffAssessRepository(map[string]interface{}{
  228 + "transactionContext": transactionContext,
  229 + })
  230 + var limit int = 20
  231 + var offset int = 0
  232 + if param.PageSize > 0 {
  233 + limit = param.PageSize
  234 + }
  235 + offset = (param.PageNumber - 1) * param.PageSize
  236 + condition := map[string]interface{}{
  237 + "executorId": param.UserId,
  238 + "companyId": param.CompanyId,
  239 + "typesList": []string{string(domain.AssessSelf)},
  240 + "limit": limit,
  241 + "status": string(domain.StaffAssessCompleted),
  242 + }
  243 + if offset > 0 {
  244 + condition["offset"] = offset
  245 + }
  246 + //获取历史列表
  247 + cnt, assessList, err := staffAssessRepo.Find(condition)
  248 + if err != nil {
  249 + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取评估任务列表,"+err.Error())
  250 + }
  251 +
  252 + //获取公司数据
  253 + companyRep := factory.CreateCompanyRepository(map[string]interface{}{
  254 + "transactionContext": transactionContext,
  255 + })
  256 +
  257 + companyData, err := companyRep.FindOne(map[string]interface{}{
  258 + "id": param.CompanyId,
  259 + })
  260 + if err != nil {
  261 + log.Logger.Error("获取公司信息," + err.Error())
  262 + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取公司信息,"+err.Error())
  263 + }
  264 +
  265 + //获取用户数据
  266 + userRepo := factory.CreateUserRepository(map[string]interface{}{
  267 + "transactionContext": transactionContext,
  268 + })
  269 + userData, err := userRepo.FindOne(map[string]interface{}{
  270 + "id": param.UserId,
  271 + })
  272 + if err != nil {
  273 + log.Logger.Error("获取用户信息," + err.Error())
  274 + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取用户信息,"+err.Error())
  275 + }
  276 + departmentRepo := factory.CreateDepartmentRepository(map[string]interface{}{
  277 + "transactionContext": transactionContext,
  278 + })
  279 + var supperUserList []*domain.User
  280 + if len(userData.DepartmentId) > 0 {
  281 + _, departmentList, err := departmentRepo.Find(map[string]interface{}{
  282 + "ids": userData.DepartmentId,
  283 + })
  284 + if err != nil {
  285 + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取部门信息,"+err.Error())
  286 + }
  287 + var chargeUserIds []int64
  288 + for _, v := range departmentList {
  289 + chargeUserIds = append(chargeUserIds, v.ChargeUserIds...)
  290 + }
  291 + if len(chargeUserIds) > 0 {
  292 + _, supperUserList, err = userRepo.Find(map[string]interface{}{
  293 + "ids": chargeUserIds,
  294 + })
  295 + if err != nil {
  296 + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取员工上级信息,"+err.Error())
  297 + }
  298 + }
  299 + }
  300 + if err := transactionContext.CommitTransaction(); err != nil {
  301 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  302 + }
  303 + listData := make([]adapter.AssessSelfList, 0, len(assessList))
  304 + var itemTemp adapter.AssessSelfList
  305 + for _, v := range assessList {
  306 + itemTemp = adapter.AssessSelfList{
  307 + AssessId: v.Id,
  308 + BeginTime: v.BeginTime.Local().Format("2006-01-02 15:04:05"),
  309 + EndTime: v.EndTime.Local().Format("2006-01-02 15:04:05"),
  310 + CycleId: v.CycleId,
  311 + CycleName: v.CycleName,
  312 + EvaluationProjectId: v.EvaluationProjectId,
  313 + EvaluationProjectName: v.EvaluationProjectName,
  314 + }
  315 + listData = append(listData, itemTemp)
  316 + }
  317 + userInfo := adapter.StaffInfo{
  318 + UserName: userData.Name,
  319 + CompanyName: companyData.Name,
  320 + SupperUserName: "",
  321 + DutyTime: userData.CreatedAt.Local().Format("2006-01-02 15:04:05"),
  322 + }
  323 + for _, v := range supperUserList {
  324 + userInfo.SupperUserName = userInfo.SupperUserName + v.Name + ";"
  325 + }
  326 + result := tool_funs.SimpleWrapGridMap(int64(cnt), listData)
  327 + result["userInfo"] = userInfo
  328 + return result, nil
  329 +}
  330 +
  331 +// 更具项目评估的配置,创建员工的评估任务
  332 +func (srv StaffAssessServeice) CreateStaffAssessTask(param *command.CreateStaffAssessTask) (map[string]interface{}, error) {
  333 +
  334 + transactionContext, err := factory.CreateTransactionContext(nil)
  335 + if err != nil {
  336 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  337 + }
  338 + if err := transactionContext.StartTransaction(); err != nil {
  339 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  340 + }
  341 + defer func() {
  342 + _ = transactionContext.RollbackTransaction()
  343 + }()
  344 +
  345 + taskBeginTime, err := time.ParseInLocation("2006-01-02 15:04:05", param.BeginTime, time.Local)
  346 + if err != nil {
  347 + return nil, application.ThrowError(application.ARG_ERROR, "任务开始时间填写错误,"+param.BeginTime)
  348 + }
  349 + taskEndTime, err := time.ParseInLocation("2006-01-02 15:04:05", param.EndTime, time.Local)
  350 + if err != nil {
  351 + return nil, application.ThrowError(application.ARG_ERROR, "任务结束时间填写错误,"+param.EndTime)
  352 + }
  353 + nowTime := time.Now()
  354 + //建立评估任务
  355 + assessTask := domain.StaffAssessTask{
  356 + Id: 0,
  357 + CompanyId: param.CompanyId,
  358 + EvaluationProjectId: param.EvaluationProjectId,
  359 + EvaluationProjectName: param.EvaluationProjectName,
  360 + CycleId: param.CycleId,
  361 + CycleName: param.CycleName,
  362 + BeginTime: taskBeginTime,
  363 + EndTime: taskEndTime,
  364 + StepList: []domain.AssessTaskStep{},
  365 + ExecutorId: nil,
  366 + CreatedAt: nowTime,
  367 + UpdatedAt: nowTime,
  368 + DeletedAt: nil,
  369 + }
  370 + //填充评估环节
  371 + for _, v := range param.StepList {
  372 + stepBeginTime, err := time.ParseInLocation("2006-01-02 15:04:05", param.BeginTime, time.Local)
  373 + if err != nil {
  374 + return nil, application.ThrowError(application.ARG_ERROR, "评估环节开始时间填写错误,"+param.BeginTime)
  375 + }
  376 + stepEndTime, err := time.ParseInLocation("2006-01-02 15:04:05", param.EndTime, time.Local)
  377 + if err != nil {
  378 + return nil, application.ThrowError(application.ARG_ERROR, "评估环节结束时间填写错误,"+param.EndTime)
  379 + }
  380 + step := domain.AssessTaskStep{
  381 + SortBy: v.SortBy,
  382 + LinkNodeId: v.LinkNodeId,
  383 + LinkNodeName: v.LinkNodeName,
  384 + LinkNodeType: v.LinkNodeType,
  385 + BeginTime: stepBeginTime,
  386 + EndTime: stepEndTime,
  387 + }
  388 + assessTask.StepList = append(assessTask.StepList, step)
  389 + }
  390 +
  391 + assessTaskRepo := factory.CreateStaffAssessTaskRepository(map[string]interface{}{
  392 + "transactionContext": transactionContext,
  393 + })
  394 + _, err = assessTaskRepo.Save(&assessTask)
  395 + if err != nil {
  396 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存评估任务"+err.Error())
  397 + }
  398 +
  399 + assessList, err := srv.createStaffAssess(transactionContext, &assessTask)
  400 + if err != nil {
  401 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "生成个人评估项"+err.Error())
  402 + }
  403 +
  404 + assessRepo := factory.CreateStaffAssessRepository(map[string]interface{}{
  405 + "transactionContext": transactionContext,
  406 + })
  407 +
  408 + for i := range assessList {
  409 + _, err = assessRepo.Save(&assessList[i])
  410 + if err != nil {
  411 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存个人评估项"+err.Error())
  412 + }
  413 + }
  414 + if err := transactionContext.CommitTransaction(); err != nil {
  415 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  416 + }
  417 + return map[string]interface{}{
  418 + "assessTaskId": assessTask.Id,
  419 + }, nil
  420 +}
  421 +
  422 +// 添加自评节点任务
  423 +func (srv StaffAssessServeice) createStaffAssess(transactionContext application.TransactionContext, param *domain.StaffAssessTask) ([]domain.StaffAssess, error) {
  424 + //评估的参与人
  425 + selfUserId := []int{}
  426 + userIdMap := map[int]struct{}{} //过滤重复的用户
  427 + for _, v := range param.ExecutorId {
  428 + if _, ok := userIdMap[v]; ok {
  429 + continue
  430 + }
  431 + selfUserId = append(selfUserId, v)
  432 + }
  433 + // 获取用户的信息
  434 + if len(selfUserId) == 0 {
  435 + return nil, application.ThrowError(application.ARG_ERROR, "未填写评估任务的执行人")
  436 + }
  437 + userRepo := factory.CreateUserRepository(map[string]interface{}{
  438 + "transactionContext": transactionContext,
  439 + })
  440 + //获取员工信息
  441 + _, userList, err := userRepo.Find(map[string]interface{}{
  442 + "ids": selfUserId,
  443 + })
  444 + if err != nil {
  445 + return nil, application.ThrowError(application.ARG_ERROR, "获取员工信息"+err.Error())
  446 + }
  447 + departmentRepo := factory.CreateDepartmentRepository(map[string]interface{}{
  448 + "transactionContext": transactionContext,
  449 + })
  450 + //获取用户的部门
  451 + userDepartmentMap := map[int64][]*domain.Department{}
  452 + for _, v := range userList {
  453 + _, departmemtList, err := departmentRepo.Find(map[string]interface{}{
  454 + "ids": v.DepartmentId,
  455 + })
  456 + if err != nil {
  457 + return nil, application.ThrowError(application.ARG_ERROR, "获取员工的部门信息"+err.Error())
  458 + }
  459 + userDepartmentMap[v.Id] = departmemtList
  460 + }
  461 + assessList := []domain.StaffAssess{}
  462 + //数据样板
  463 + stepSelfTemp := domain.StaffAssess{
  464 + Id: 0,
  465 + CompanyId: param.CompanyId,
  466 + EvaluationProjectId: param.EvaluationProjectId,
  467 + EvaluationProjectName: param.EvaluationProjectName,
  468 + CycleId: param.CycleId,
  469 + CycleName: param.CycleName,
  470 + StaffAssessTaskId: param.Id,
  471 + // TargetUser: domain.StaffDesc{},
  472 + // TargetDepartment: nil,
  473 + // Executor: domain.StaffDesc{},
  474 + Types: domain.AssessSelf,
  475 + // LinkNodeId: v.LinkNodeId,
  476 + Status: domain.StaffAssessUncompleted,
  477 + // BeginTime: time.Time{},
  478 + // EndTime: time.Time{},
  479 + CreatedAt: param.CreatedAt,
  480 + UpdatedAt: param.UpdatedAt,
  481 + DeletedAt: nil,
  482 + }
  483 + for _, v := range param.StepList {
  484 + if v.LinkNodeType == domain.LinkNodeSelfAssessment {
  485 + //员工自评
  486 + stepSelfTemp.BeginTime = v.BeginTime
  487 + stepSelfTemp.EndTime = v.EndTime
  488 + stepSelfTemp.LinkNodeId = v.LinkNodeId
  489 + stepSelfTemp.LinkNodeName = v.LinkNodeName
  490 + assessListTemp := srv.createStaffAssessSelf(stepSelfTemp, userList, userDepartmentMap)
  491 + assessList = append(assessList, assessListTemp...)
  492 + }
  493 + if v.LinkNodeType == domain.LinkNodeSuperiorAssessment {
  494 + // TODO
  495 + stepSelfTemp.BeginTime = v.BeginTime
  496 + stepSelfTemp.EndTime = v.EndTime
  497 + stepSelfTemp.LinkNodeId = v.LinkNodeId
  498 + stepSelfTemp.LinkNodeName = v.LinkNodeName
  499 + assessListTemp, err := srv.createStaffAssessSupper(transactionContext, stepSelfTemp, userList, userDepartmentMap)
  500 + if err != nil {
  501 + return nil, err
  502 + }
  503 + assessList = append(assessList, assessListTemp...)
  504 + }
  505 + }
  506 + return assessList, nil
  507 +}
  508 +
  509 +// 构建员工自评
  510 +func (srv StaffAssessServeice) createStaffAssessSelf(assessTemp domain.StaffAssess,
  511 + userList []*domain.User, userDepartmentMap map[int64][]*domain.Department) []domain.StaffAssess {
  512 + result := []domain.StaffAssess{}
  513 + for _, usr := range userList {
  514 + assessTemp.TargetUser = domain.StaffDesc{
  515 + UserId: int(usr.Id),
  516 + Account: usr.Account,
  517 + UserName: usr.Account,
  518 + }
  519 + assessTemp.Executor = domain.StaffDesc{
  520 + UserId: int(usr.Id),
  521 + Account: usr.Account,
  522 + UserName: usr.Account,
  523 + }
  524 + if depList, ok := userDepartmentMap[usr.Id]; ok {
  525 + for _, dep := range depList {
  526 + assessTemp.TargetDepartment = append(assessTemp.TargetDepartment, domain.StaffDepartment{
  527 + DepartmentId: int(dep.Id),
  528 + DepartmentName: dep.Name,
  529 + })
  530 + }
  531 + }
  532 + result = append(result, assessTemp)
  533 + }
  534 + return result
  535 +}
  536 +
  537 +// 构建员工上级评估
  538 +func (srv StaffAssessServeice) createStaffAssessSupper(
  539 + transactionContext application.TransactionContext,
  540 + assessTemp domain.StaffAssess,
  541 + userList []*domain.User, userDepartmentMap map[int64][]*domain.Department,
  542 +) ([]domain.StaffAssess, error) {
  543 +
  544 + // 获取员工的上级用户
  545 +
  546 + return nil, nil
  547 +}
  548 +
  549 +// 获取某个员工360邀请的人员
  550 +func (srv StaffAssessServeice) GetAssessInviteUser(param *query.GetAssessInviteUserQuery) (*adapter.AssessInviteUserResp, error) {
  551 + transactionContext, err := factory.CreateTransactionContext(nil)
  552 + if err != nil {
  553 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  554 + }
  555 + if err := transactionContext.StartTransaction(); err != nil {
  556 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  557 + }
  558 + defer func() {
  559 + _ = transactionContext.RollbackTransaction()
  560 + }()
  561 +
  562 + assessReps := factory.CreateStaffAssessRepository(map[string]interface{}{
  563 + "transactionContext": transactionContext,
  564 + })
  565 +
  566 + assessTaskReps := factory.CreateStaffAssessTaskRepository(map[string]interface{}{
  567 + "transactionContext": transactionContext,
  568 + })
  569 + assessTaskData, err := assessTaskReps.FindOne(map[string]interface{}{
  570 + "id": param.AssessTaskId,
  571 + })
  572 + if err != nil {
  573 + return nil, application.ThrowError(application.ARG_ERROR, "获取评估任务"+err.Error())
  574 + }
  575 + _, assessList, err := assessReps.Find(map[string]interface{}{
  576 + "typesList": []string{string(domain.AssessInviteDiffSuper), string(domain.AssessInviteSameSuper)},
  577 + "staffAssessTaskId": param.AssessTaskId,
  578 + "targetUserId": param.UsrId,
  579 + })
  580 + if err != nil {
  581 + return nil, application.ThrowError(application.ARG_ERROR, "获取个人评估任务"+err.Error())
  582 + }
  583 + if err := transactionContext.CommitTransaction(); err != nil {
  584 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  585 + }
  586 +
  587 + result := adapter.AssessInviteUserResp{
  588 + AssessTaskId: assessTaskData.Id,
  589 + }
  590 + for _, v := range assessTaskData.StepList {
  591 + if v.LinkNodeType != domain.LinkNodeAllInvite {
  592 + continue
  593 + }
  594 + result.LinkNodeId = v.LinkNodeId
  595 + result.LinkNodeName = v.LinkNodeName
  596 + result.BeginTime = v.BeginTime.Local().Format("2006-01-02 15:04:05")
  597 + result.EndTime = v.EndTime.Local().Format("2006-01-02 15:04:05")
  598 + break
  599 + }
  600 + for _, v := range assessList {
  601 + if v.Types == domain.AssessInviteDiffSuper {
  602 + result.InviteDiffSuper = append(result.InviteDiffSuper, v.Executor)
  603 + }
  604 + if v.Types == domain.AssessInviteSameSuper {
  605 + result.InviteSameSuper = append(result.InviteDiffSuper, v.Executor)
  606 + }
  607 + }
  608 + return &result, nil
  609 +}
  610 +
  611 +// 获取某个员工360邀请的人员
  612 +func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInvite) (*adapter.AssessInviteUserResp, error) {
  613 + inviteSameSuperId := []int{}
  614 + InviteDiffSuperId := []int{}
  615 + for _, v := range param.InviteDiffSuper {
  616 + id, err := strconv.Atoi(v)
  617 + if err != nil {
  618 + return nil, application.ThrowError(application.ARG_ERROR, "用户填写错误")
  619 + }
  620 + InviteDiffSuperId = append(InviteDiffSuperId, id)
  621 + }
  622 + for _, v := range param.InviteSameSuper {
  623 + id, err := strconv.Atoi(v)
  624 + if err != nil {
  625 + return nil, application.ThrowError(application.ARG_ERROR, "用户填写错误")
  626 + }
  627 + inviteSameSuperId = append(inviteSameSuperId, id)
  628 + }
  629 + transactionContext, err := factory.CreateTransactionContext(nil)
  630 + if err != nil {
  631 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  632 + }
  633 + if err := transactionContext.StartTransaction(); err != nil {
  634 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  635 + }
  636 + defer func() {
  637 + _ = transactionContext.RollbackTransaction()
  638 + }()
  639 +
  640 + assessReps := factory.CreateStaffAssessRepository(map[string]interface{}{
  641 + "transactionContext": transactionContext,
  642 + })
  643 + userRepo := factory.CreateUserRepository(map[string]interface{}{
  644 + "transactionContext": transactionContext,
  645 + })
  646 + departmentRepo := factory.CreateDepartmentRepository(map[string]interface{}{
  647 + "transactionContext": transactionContext,
  648 + })
  649 +
  650 + assessTaskReps := factory.CreateStaffAssessTaskRepository(map[string]interface{}{
  651 + "transactionContext": transactionContext,
  652 + })
  653 + assessTaskData, err := assessTaskReps.FindOne(map[string]interface{}{
  654 + "id": param.AssessTaskId,
  655 + })
  656 + if err != nil {
  657 + return nil, application.ThrowError(application.ARG_ERROR, "获取评估任务"+err.Error())
  658 + }
  659 +
  660 + targetUser, err := userRepo.FindOne(map[string]interface{}{
  661 + "id": param.TargetUserId,
  662 + })
  663 + if err != nil {
  664 + return nil, application.ThrowError(application.ARG_ERROR, "获取被评估员工"+err.Error())
  665 + }
  666 + //被评估人的部门
  667 + var targetUserDepartment []domain.StaffDepartment
  668 + if len(targetUser.DepartmentId) > 0 {
  669 + _, departmentList, err := departmentRepo.Find(map[string]interface{}{
  670 + "ids": targetUser.DepartmentId,
  671 + })
  672 + if err != nil {
  673 + return nil, application.ThrowError(application.ARG_ERROR, "获取部门信息"+err.Error())
  674 + }
  675 + for _, v := range departmentList {
  676 + targetUserDepartment = append(targetUserDepartment, domain.StaffDepartment{
  677 + DepartmentId: int(v.Id),
  678 + DepartmentName: v.Name,
  679 + })
  680 + }
  681 + }
  682 + //邀请的相同上级的员工
  683 + var inviteSameSuper []domain.StaffDesc
  684 + if len(inviteSameSuperId) > 0 {
  685 + _, userList, err := userRepo.Find(map[string]interface{}{
  686 + "ids": inviteSameSuperId,
  687 + })
  688 + if err != nil {
  689 + return nil, application.ThrowError(application.ARG_ERROR, "获取用户信息"+err.Error())
  690 + }
  691 + for _, v := range userList {
  692 + inviteSameSuper = append(inviteSameSuper, domain.StaffDesc{
  693 + UserId: int(v.Id),
  694 + UserName: v.Name,
  695 + Account: v.Account,
  696 + })
  697 + }
  698 + }
  699 + //邀请的不同上级的员工
  700 + var inviteDiffSuper []domain.StaffDesc
  701 + if len(InviteDiffSuperId) > 0 {
  702 + _, userList, err := userRepo.Find(map[string]interface{}{
  703 + "ids": InviteDiffSuperId,
  704 + })
  705 + if err != nil {
  706 + return nil, application.ThrowError(application.ARG_ERROR, "获取用户信息"+err.Error())
  707 + }
  708 + for _, v := range userList {
  709 + inviteDiffSuper = append(inviteDiffSuper, domain.StaffDesc{
  710 + UserId: int(v.Id),
  711 + UserName: v.Name,
  712 + Account: v.Account,
  713 + })
  714 + }
  715 + }
  716 + _ = assessReps
  717 + _ = inviteSameSuper
  718 + _ = inviteDiffSuper
  719 + _ = targetUserDepartment
  720 + // _, assessList, err := assessReps.Find(map[string]interface{}{
  721 + // "typesList": []string{string(domain.AssessInviteDiffSuper), string(domain.AssessInviteSameSuper)},
  722 + // "staffAssessTaskId": param.AssessTaskId,
  723 + // "targetUserId": param.TargetUserId,
  724 + // })
  725 + // if err != nil {
  726 + // return nil, application.ThrowError(application.ARG_ERROR, "获取个人评估任务"+err.Error())
  727 + // }
  728 + // TODO
  729 +
  730 + if err := transactionContext.CommitTransaction(); err != nil {
  731 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  732 + }
  733 +
  734 + result := adapter.AssessInviteUserResp{
  735 + AssessTaskId: assessTaskData.Id,
  736 + }
  737 + // for _, v := range assessTaskData.StepList {
  738 + // if v.LinkNodeType != domain.LinkNodeAllInvite {
  739 + // continue
  740 + // }
  741 + // result.LinkNodeId = v.LinkNodeId
  742 + // result.LinkNodeName = v.LinkNodeName
  743 + // result.BeginTime = v.BeginTime.Local().Format("2006-01-02 15:04:05")
  744 + // result.EndTime = v.EndTime.Local().Format("2006-01-02 15:04:05")
  745 + // break
  746 + // }
  747 + // for _, v := range assessList {
  748 + // if v.Types == domain.AssessInviteDiffSuper {
  749 + // result.InviteDiffSuper = append(result.InviteDiffSuper, v.Executor)
  750 + // }
  751 + // if v.Types == domain.AssessInviteSameSuper {
  752 + // result.InviteSameSuper = append(result.InviteDiffSuper, v.Executor)
  753 + // }
  754 + // }
  755 + return &result, nil
  756 +}
  757 +
  758 +// 获取员工自评的评估内容详情
  759 +func (srv StaffAssessServeice) GetAssessSelfInfo(param *query.AssessInfoQuery) (*adapter.AssessInfoResp, error) {
  760 + transactionContext, err := factory.CreateTransactionContext(nil)
  761 + if err != nil {
  762 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  763 + }
  764 + if err := transactionContext.StartTransaction(); err != nil {
  765 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  766 + }
  767 + defer func() {
  768 + _ = transactionContext.RollbackTransaction()
  769 + }()
  770 + assessReps := factory.CreateStaffAssessRepository(map[string]interface{}{
  771 + "transactionContext": transactionContext,
  772 + })
  773 +
  774 + //获取员工的评估
  775 + _, assessList, err := assessReps.Find(map[string]interface{}{
  776 + "companyId": param.CompanyId,
  777 + "staffAssessTaskId": param.AssessTaskId,
  778 + "targetUserId": param.TargetUserId,
  779 + "typesList": []string{string(domain.AssessSelf)},
  780 + })
  781 + if err != nil {
  782 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取员工的评估"+err.Error())
  783 + }
  784 + if len(assessList) == 0 {
  785 + return &adapter.AssessInfoResp{}, nil
  786 + }
  787 + assessData := assessList[0]
  788 + projectRepo := factory.CreateEvaluationProjectRepository(map[string]interface{}{
  789 + "transactionContext": transactionContext,
  790 + })
  791 + projectData, err := projectRepo.FindOne(map[string]interface{}{
  792 + "id": assessData.EvaluationProjectId,
  793 + })
  794 + if err != nil {
  795 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取项目评估配置"+err.Error())
  796 + }
  797 + if projectData.Template == nil {
  798 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "未获取到项目评估配置模板")
  799 + }
  800 + var selfLinkNode *domain.LinkNode
  801 + for _, v := range projectData.Template.LinkNodes {
  802 + if v.Type == domain.LinkNodeSelfAssessment {
  803 + selfLinkNode = v
  804 + break
  805 + }
  806 + }
  807 + if selfLinkNode == nil {
  808 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "未获取到项目评估自评配置")
  809 + }
  810 + //获取员工评估的填写内容
  811 + // assessContentReps := factory.CreateStaffAssessContentRepository(map[string]interface{}{
  812 + // "transactionContext": transactionContext,
  813 + // })
  814 + // _, assessContentList, err := assessContentReps.Find(map[string]interface{}{
  815 + // "staffAssessId": assessData.Id,
  816 + // })
  817 + // if err != nil {
  818 + // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取项目评估员工填写的内容"+err.Error())
  819 + // }
  820 + if err := transactionContext.CommitTransaction(); err != nil {
  821 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  822 + }
  823 +
  824 + result := adapter.AssessInfoResp{
  825 + CycleId: assessData.CycleId,
  826 + CycleName: assessData.CycleName,
  827 + EvaluationProjectId: assessData.EvaluationProjectId,
  828 + EvaluationProjectName: assessData.EvaluationProjectName,
  829 + BeginTime: assessData.BeginTime.Local().Format("2006-01-02 15:04:05"),
  830 + EndTime: assessData.EndTime.Local().Format("2006-01-02 15:04:05"),
  831 + Status: string(assessData.Status),
  832 + TargetUserId: assessData.TargetUser.UserId,
  833 + TargetUserName: assessData.TargetUser.UserName,
  834 + AssessContent: nil,
  835 + }
  836 + assessContent := make([]adapter.AssessContent, 0)
  837 + for _, v := range selfLinkNode.NodeContents {
  838 + assessContent = append(assessContent, adapter.AssessContent{
  839 + Category: v.Category,
  840 + Name: v.Name,
  841 + PromptTitle: v.PromptTitle,
  842 + PromptText: v.PromptText,
  843 + EntryItems: v.EntryItems,
  844 + })
  845 + }
  846 + result.AssessContent = assessContent
  847 + return &result, nil
  848 +}
@@ -4,6 +4,16 @@ import ( @@ -4,6 +4,16 @@ import (
4 "time" 4 "time"
5 ) 5 )
6 6
  7 +const (
  8 + KpiCycleDay int = 1 // 考核周期-日
  9 + KpiCycleWeek int = 2 // 考核周期-周
  10 + KpiCycleOneMonth int = 3 // 考核周期-月
  11 + KpiCycleTwoMonth int = 4 // 考核周期-双月
  12 + KpiCycleThreeMonth int = 5 // 考核周期-季度
  13 + KpiCycleSixMonth int = 6 // 考核周期-半年
  14 + KpiCycleYear int = 7 // 考核周期-年
  15 +)
  16 +
7 type TemplateSimple struct { 17 type TemplateSimple struct {
8 Id int64 `json:"id,string" comment:"模板ID"` 18 Id int64 `json:"id,string" comment:"模板ID"`
9 Name string `json:"name" comment:"模板名称"` 19 Name string `json:"name" comment:"模板名称"`
@@ -17,7 +27,7 @@ type EvaluationCycle struct { @@ -17,7 +27,7 @@ type EvaluationCycle struct {
17 TimeEnd *time.Time `json:"timeEnd" comment:"截至时间"` 27 TimeEnd *time.Time `json:"timeEnd" comment:"截至时间"`
18 CompanyId int64 `json:"companyId,string" comment:"公司ID"` 28 CompanyId int64 `json:"companyId,string" comment:"公司ID"`
19 CreatorId int64 `json:"creatorId,string" comment:"创建人ID"` 29 CreatorId int64 `json:"creatorId,string" comment:"创建人ID"`
20 - KpiCycle int `json:"state" comment:"考核周期(0日、1周、2月)"` 30 + KpiCycle int `json:"kpiCycle" comment:"考核周期(1日、2周、3月)"`
21 CreatedAt time.Time `json:"createdAt" comment:"创建时间"` 31 CreatedAt time.Time `json:"createdAt" comment:"创建时间"`
22 UpdatedAt time.Time `json:"updatedAt" comment:"更新时间"` 32 UpdatedAt time.Time `json:"updatedAt" comment:"更新时间"`
23 DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"` 33 DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"`
@@ -42,8 +42,8 @@ type EvaluationRule struct { @@ -42,8 +42,8 @@ type EvaluationRule struct {
42 CompanyId int64 `json:"companyId,string" comment:"公司ID"` 42 CompanyId int64 `json:"companyId,string" comment:"公司ID"`
43 CreatorId int64 `json:"creatorId,string" comment:"创建人ID"` 43 CreatorId int64 `json:"creatorId,string" comment:"创建人ID"`
44 Type int `json:"type" comment:"评估方式(0评级、1评分)"` 44 Type int `json:"type" comment:"评估方式(0评级、1评分)"`
45 - Rating *Rating `json:"rating" comment:"评级"`  
46 - Score *Score `json:"score" comment:"评分"` 45 + Rating Rating `json:"rating" comment:"评级"`
  46 + Score Score `json:"score" comment:"评分"`
47 CreatedAt time.Time `json:"createdAt" comment:"创建时间"` 47 CreatedAt time.Time `json:"createdAt" comment:"创建时间"`
48 UpdatedAt time.Time `json:"updatedAt" comment:"更新时间"` 48 UpdatedAt time.Time `json:"updatedAt" comment:"更新时间"`
49 DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"` 49 DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"`
@@ -24,12 +24,6 @@ const ( @@ -24,12 +24,6 @@ const (
24 24
25 ) 25 )
26 26
27 -const (  
28 - KpiCycleDay int = 0 // 考核周期-日  
29 - KpiCycleWeek int = 1 // 考核周期-周  
30 - KpiCycleMonth int = 2 // 考核周期-月  
31 -)  
32 -  
33 type EntryItem struct { 27 type EntryItem struct {
34 Title string `json:"title" comment:"填写标题"` 28 Title string `json:"title" comment:"填写标题"`
35 HintText string `json:"hintText" comment:"文本内容提示"` 29 HintText string `json:"hintText" comment:"文本内容提示"`
@@ -37,19 +31,20 @@ type EntryItem struct { @@ -37,19 +31,20 @@ type EntryItem struct {
37 31
38 // NodeContent 评估内容 32 // NodeContent 评估内容
39 type NodeContent struct { 33 type NodeContent struct {
40 - Category string `json:"category" comment:"类别"`  
41 - Name string `json:"name" comment:"名称"`  
42 - RuleId int64 `json:"ruleId" comment:"评估规则ID"`  
43 - PromptTitle string `json:"promptTitle" comment:"提示项标题"`  
44 - PromptText string `json:"promptText" comment:"提示项正文"`  
45 - EntryItems []*EntryItem `json:"entryItems" comment:"填写项"` 34 + Category string `json:"category" comment:"类别"`
  35 + Name string `json:"name" comment:"名称"`
  36 + RuleId int64 `json:"ruleId" comment:"评估规则ID"`
  37 + Rule *EvaluationRule `json:"rule" comment:"评估规则对象"`
  38 + PromptTitle string `json:"promptTitle" comment:"提示项标题"`
  39 + PromptText string `json:"promptText" comment:"提示项正文"`
  40 + EntryItems []*EntryItem `json:"entryItems" comment:"填写项"`
46 } 41 }
47 42
48 -// NodeAllInvite 360°邀请  
49 -type NodeAllInvite struct {  
50 - ParentDifferentIds []int64 `json:"parentDifferentIds" comment:"不同上级同事ID"`  
51 - ParentSameIds []int64 `json:"parentSameIds" comment:"相同上级同事ID"`  
52 -} 43 +//// NodeAllInvite 360°邀请
  44 +//type NodeAllInvite struct {
  45 +// ParentDifferentIds []string `json:"parentDifferentIds" comment:"不同上级同事ID"`
  46 +// ParentSameIds []string `json:"parentSameIds" comment:"相同上级同事ID"`
  47 +//}
53 48
54 //// NodeKpiResult 绩效结果查看 49 //// NodeKpiResult 绩效结果查看
55 //type NodeKpiResult struct { 50 //type NodeKpiResult struct {
@@ -57,15 +52,16 @@ type NodeAllInvite struct { @@ -57,15 +52,16 @@ type NodeAllInvite struct {
57 52
58 // 评估流程、环节 53 // 评估流程、环节
59 type LinkNode struct { 54 type LinkNode struct {
60 - Id int64 `json:"id,string" comment:"环节ID"`  
61 - Type int `json:"type" comment:"环节类型"`  
62 - Name string `json:"name" comment:"环节名称"`  
63 - Describe string `json:"describe" comment:"环节描述"`  
64 - NodeContents []*NodeContent `json:"nodeContents" comment:"环节-评估内容"`  
65 - NodeAllInvite *NodeAllInvite `json:"nodeAllInvite" comment:"360°邀请人员"`  
66 - TimeStart *time.Time `json:"timeStart" comment:"起始时间"`  
67 - TimeEnd *time.Time `json:"timeEnd" comment:"截至时间"`  
68 - KpiCycle int `json:"state" comment:"考核周期(0日、1周、2月)"` 55 + Id int64 `json:"id,string" comment:"环节ID"`
  56 + Type int `json:"type" comment:"环节类型"`
  57 + Name string `json:"name" comment:"环节名称"`
  58 + Describe string `json:"describe" comment:"环节描述"`
  59 + NodeContents []*NodeContent `json:"nodeContents" comment:"环节-评估内容"`
  60 + TimeStart *time.Time `json:"timeStart" comment:"起始时间"`
  61 + TimeEnd *time.Time `json:"timeEnd" comment:"截至时间"`
  62 + KpiCycle int `json:"state" comment:"考核周期(1日、2周、3月)"`
  63 + //NodeAllInvite *NodeAllInvite `json:"nodeAllInvite" comment:"360°邀请人员"`
  64 +
69 } 65 }
70 66
71 // 评估模板 67 // 评估模板
  1 +package domain
  2 +
  3 +import "time"
  4 +
  5 +//填写评估的类型
  6 +type StaffAssessType string
  7 +
  8 +const (
  9 + AssessSelf StaffAssessType = "self" //自评
  10 + AssessSuper StaffAssessType = "super" //上级评估
  11 + AssessInviteSameSuper StaffAssessType = "invite_same_super" //360 邀请评估-相同上级的同事
  12 + AssessInviteDiffSuper StaffAssessType = "invite_diff_super" //360 邀请评估-不同上级的同事
  13 +)
  14 +
  15 +//填写评估的状态
  16 +type StaffAssessStatus string
  17 +
  18 +const (
  19 + StaffAssessUnstart StaffAssessStatus = "unstart" //未开始
  20 + StaffAssessUncompleted StaffAssessStatus = "uncompleted" //未完成
  21 + StaffAssessCompleted StaffAssessStatus = "completed" //已完成
  22 +)
  23 +
  24 +// 记录用户需要的评估项目
  25 +type StaffAssess struct {
  26 + Id int `json:"id"` //id
  27 + CompanyId int `json:"companyId"` //公司id
  28 + EvaluationProjectId int `json:"evaluationProjectId"` //对应的项目id
  29 + EvaluationProjectName string `json:"evaluationProjectName"` //对应的项目名称
  30 + CycleId int64 `json:"cycleId"` //对应的周期id
  31 + CycleName string `json:"cycleName"` //对应的周期名称
  32 + StaffAssessTaskId int `json:"staffAssessTaskId"` //执行评估的任务id
  33 + TargetUser StaffDesc `json:"targetUser"` //被评估的目标用户
  34 + TargetDepartment []StaffDepartment `json:"targetDepartment"` //被评估的目标用户所在的部门
  35 + Executor StaffDesc `json:"executor"` //填写评估的用户
  36 + Types StaffAssessType `json:"types"` //填写评估对应的类型
  37 + LinkNodeId int `json:"linkNodeId"` //评估环节对应的id,用于调取评估模板
  38 + LinkNodeName string `json:"linkNodeName"` //评估环节对应的id,用于调取评估模板
  39 + Status StaffAssessStatus `json:"status"` //评估的填写状态
  40 + BeginTime time.Time `json:"beginTime"` //开始时间
  41 + EndTime time.Time `json:"endTime"` //截止时间
  42 + CreatedAt time.Time `json:"createdAt"` //数据创建时间
  43 + UpdatedAt time.Time `json:"updatedAt"` //数据更新时间
  44 + DeletedAt *time.Time `json:"deletedAt"` //数据删除时间
  45 +}
  46 +
  47 +type StaffAssessRepository interface {
  48 + Save(param *StaffAssess) (*StaffAssess, error)
  49 + Remove(id int) error
  50 + FindOne(queryOptions map[string]interface{}) (*StaffAssess, error)
  51 + Find(queryOptions map[string]interface{}) (int, []*StaffAssess, error)
  52 +}
  1 +package domain
  2 +
  3 +import "time"
  4 +
  5 +//填写的评估内容
  6 +type StaffAssessContent struct {
  7 + Id int `json:"id"` //id
  8 + StaffAssessId int `json:"staffAssessId"` //用户需要的评估项id
  9 + SortBy int `json:"sortBy"` //排序
  10 + Category string `json:"category"` //类别
  11 + Title string `json:"title"` //问题标题
  12 + Remark string `json:"remark"` //填写的反馈
  13 + Rate string `json:"rate"` //评估填写的值
  14 + ReteResult string `json:"reteResult"` //评估的结果
  15 + CreatedAt time.Time `json:"createdAt"` //数据创建时间
  16 + UpdatedAt time.Time `json:"updatedAt"` //数据更新时间
  17 + //TODO
  18 +}
  19 +
  20 +type AssessContemtRemark struct {
  21 + Title string `json:"title"` //comment:"填写标题"
  22 + RemarkText string `json:"hintText"` // comment:"填写文本内容"
  23 +}
  24 +
  25 +type StaffAssessContentRepository interface {
  26 + Save(param *StaffAssessContent) (*StaffAssessContent, error)
  27 + Remove(id int) error
  28 + FindOne(queryOptions map[string]interface{}) (*StaffAssessContent, error)
  29 + Find(queryOptions map[string]interface{}) (int, []*StaffAssessContent, error)
  30 +}
  1 +package domain
  2 +
  3 +import "time"
  4 +
  5 +//评估任务重复执行的方式
  6 +// type AssessTaskRepeatWay string
  7 +
  8 +// const (
  9 +// AssessTaskRepeatDay AssessTaskRepeatWay = "day" //按天重复
  10 +// AssessTaskRepeatWeek AssessTaskRepeatWay = "week" //按周重复
  11 +// AssessTaskRepeatMonth AssessTaskRepeatWay = "month" //按月
  12 +// AssessTaskRepeatMonthDouble AssessTaskRepeatWay = "month_double" //按双月
  13 +// AssessTaskRepeatQuarter AssessTaskRepeatWay = "quarter" //按季度
  14 +// AssessTaskRepeatYearHalf AssessTaskRepeatWay = "year_half" //按半年
  15 +// AssessTaskRepeatYear AssessTaskRepeatWay = "year" //按年
  16 +// )
  17 +
  18 +// 执行评估的任务列表
  19 +type StaffAssessTask struct {
  20 + Id int `json:"id"`
  21 + CompanyId int `json:"companyId"` //公司id
  22 + EvaluationProjectId int `json:"evaluationProjectId"` //项目id
  23 + EvaluationProjectName string `json:"evaluationProjectName"` //项目名称
  24 + CycleId int64 `json:"cycleId"` //对应的周期id
  25 + CycleName string `json:"cycleName"` //对应周期的名称
  26 + BeginTime time.Time `json:"beginTime"` //绩效考核开始时间
  27 + EndTime time.Time `json:"endTime"` //绩效考核截止时间
  28 + StepList []AssessTaskStep `json:"stepList"` //考评的流程
  29 + ExecutorId []int `json:"executorId"` //参与此次考评的人
  30 + CreatedAt time.Time `json:"createdAt"` //数据创建时间
  31 + UpdatedAt time.Time `json:"updatedAt"` //数据更新时间
  32 + DeletedAt *time.Time `json:"deletedAt"` //数据删除时间
  33 +}
  34 +
  35 +//考评的流程
  36 +type AssessTaskStep struct {
  37 + SortBy int `json:"sortBy"` //排序
  38 + LinkNodeId int `json:"linkNodeId"` //考评的流程id
  39 + LinkNodeName string `json:"linkNodeName"` //流程名称
  40 + LinkNodeType int `json:"linkNodeType"` //流程类型 同evaluation_template.go->LinkNode.Type
  41 + BeginTime time.Time `json:"beginTime"` //绩效考核开始时间
  42 + EndTime time.Time `json:"endTime"` //绩效考核截止时间
  43 +}
  44 +
  45 +type StaffAssessTaskRepository interface {
  46 + Save(param *StaffAssessTask) (*StaffAssessTask, error)
  47 + Remove(id int) error
  48 + FindOne(queryOptions map[string]interface{}) (*StaffAssessTask, error)
  49 + Find(queryOptions map[string]interface{}) (int, []*StaffAssessTask, error)
  50 +}
  1 +package domain
  2 +
  3 +//员工基本信息描述
  4 +type StaffDesc struct {
  5 + UserId int `json:"userId"` //用户id
  6 + Account string `json:"account"` //用户的账号
  7 + UserName string `json:"userName"` //用户的名称
  8 +}
  9 +
  10 +//员工的部门
  11 +type StaffDepartment struct {
  12 + DepartmentId int `json:"departmentId"` //部门id
  13 + DepartmentName string `json:"departmentName"` //部门名称
  14 +}
1 -package domain  
2 -  
3 -import "time"  
4 -  
5 -type StaffEvaluationType string  
6 -  
7 -const (  
8 - EvaluationSelf StaffEvaluationType = "self" //自评  
9 - EvaluationSuper StaffEvaluationType = "super" //上级评估  
10 - EvaluationOverall StaffEvaluationType = "overall" //360评估  
11 -)  
12 -  
13 -// 需要填写评估的用户  
14 -type StaffEvaluation struct {  
15 - Id int //id  
16 - EvaluationProjectId int //对应的项目id  
17 - CycleId int64 //对应的周期id  
18 - TargetUserId int //被评估的目标用户  
19 - ExecutorId int //填写评估的用户  
20 - Types StaffEvaluationType //填写评估对应的类型  
21 - BeginTime time.Time //开始时间  
22 - EndTime time.Time //截止时间  
23 - CreatedAt time.Time //数据创建时间  
24 - UpdatedAt time.Time //数据更新时间  
25 -}  
26 -  
27 -//用户填写的评估  
28 -type StaffEvaluationContent struct {  
29 -}  
@@ -2,6 +2,7 @@ package pg @@ -2,6 +2,7 @@ package pg
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 +
5 "github.com/go-pg/pg/v10" 6 "github.com/go-pg/pg/v10"
6 "github.com/go-pg/pg/v10/orm" 7 "github.com/go-pg/pg/v10/orm"
7 "github.com/linmadan/egglib-go/persistent/pg/comment" 8 "github.com/linmadan/egglib-go/persistent/pg/comment"
@@ -34,6 +35,13 @@ func init() { @@ -34,6 +35,13 @@ func init() {
34 &models.Role{}, 35 &models.Role{},
35 &models.RoleUser{}, 36 &models.RoleUser{},
36 &models.Position{}, 37 &models.Position{},
  38 + &models.EvaluationRule{},
  39 + &models.EvaluationTemplate{},
  40 + &models.EvaluationCycle{},
  41 + &models.EvaluationCycleTemplate{},
  42 + &models.EvaluationProject{},
  43 + &models.StaffAssess{},
  44 + &models.StaffAssessTask{},
37 } 45 }
38 for _, model := range tables { 46 for _, model := range tables {
39 err := DB.Model(model).CreateTable(&orm.CreateTableOptions{ 47 err := DB.Model(model).CreateTable(&orm.CreateTableOptions{
@@ -5,14 +5,14 @@ import ( @@ -5,14 +5,14 @@ import (
5 ) 5 )
6 6
7 type EvaluationCycle struct { 7 type EvaluationCycle struct {
8 - tableName struct{} `pg:"evaluation_cycle" comment:"评估周期"`  
9 - Id int64 `pg:"pk:id" comment:"周期ID"` 8 + tableName struct{} `comment:"评估周期" pg:"evaluation_cycle"`
  9 + Id int64 `comment:"周期ID" pg:"pk:id"`
10 Name string `comment:"名称"` 10 Name string `comment:"名称"`
11 TimeStart *time.Time `comment:"起始时间"` 11 TimeStart *time.Time `comment:"起始时间"`
12 TimeEnd *time.Time `comment:"截至时间"` 12 TimeEnd *time.Time `comment:"截至时间"`
13 CompanyId int64 `comment:"公司ID"` 13 CompanyId int64 `comment:"公司ID"`
14 CreatorId int64 `comment:"创建人ID"` 14 CreatorId int64 `comment:"创建人ID"`
15 - KpiCycle int `comment:"考核周期(0日、1周、2月)"` 15 + KpiCycle int `comment:"考核周期(1日、2周、3月)"`
16 CreatedAt time.Time `comment:"创建时间"` 16 CreatedAt time.Time `comment:"创建时间"`
17 UpdatedAt time.Time `comment:"更新时间"` 17 UpdatedAt time.Time `comment:"更新时间"`
18 DeletedAt *time.Time `comment:"删除时间"` 18 DeletedAt *time.Time `comment:"删除时间"`
@@ -6,8 +6,8 @@ import ( @@ -6,8 +6,8 @@ import (
6 ) 6 )
7 7
8 type EvaluationCycleTemplate struct { 8 type EvaluationCycleTemplate struct {
9 - tableName struct{} `pg:"evaluation_cycle_template" comment:"评估周期模板"`  
10 - Id int64 `pg:"pk:id" comment:"模板ID"` 9 + tableName struct{} `comment:"评估周期模板" pg:"evaluation_cycle_template"`
  10 + Id int64 `comment:"模板ID" pg:"pk:id"`
11 Name string `comment:"模板名称"` 11 Name string `comment:"模板名称"`
12 Template *domain.EvaluationTemplate `comment:"模板数据"` 12 Template *domain.EvaluationTemplate `comment:"模板数据"`
13 CycleId int64 `comment:"周期ID"` 13 CycleId int64 `comment:"周期ID"`
@@ -6,14 +6,14 @@ import ( @@ -6,14 +6,14 @@ import (
6 ) 6 )
7 7
8 type EvaluationProject struct { 8 type EvaluationProject struct {
9 - tableName struct{} `pg:"evaluation_project" comment:"评估项目"`  
10 - Id int64 `pg:"pk:id" comment:"ID"` 9 + tableName struct{} `comment:"评估项目" pg:"evaluation_project"`
  10 + Id int64 `comment:"ID" pg:"pk:id"`
11 Name string `comment:"名称"` 11 Name string `comment:"名称"`
12 Describe string `comment:"描述"` 12 Describe string `comment:"描述"`
13 CompanyId int64 `comment:"公司ID"` 13 CompanyId int64 `comment:"公司ID"`
14 CycleId int64 `comment:"周期ID"` 14 CycleId int64 `comment:"周期ID"`
15 CreatorId int64 `comment:"创建人ID"` 15 CreatorId int64 `comment:"创建人ID"`
16 - State int `comment:"状态(0待完成配置、1待启用、2启用、3停用)"` 16 + State int `comment:"状态(0待完成配置、1待启用、2启用、3停用)" pg:",use_zero"`
17 HrBp int `comment:"HR角色权限"` 17 HrBp int `comment:"HR角色权限"`
18 Pmp int `comment:"PM角色权限"` 18 Pmp int `comment:"PM角色权限"`
19 PmpIds []string `comment:"项目管理员ID"` 19 PmpIds []string `comment:"项目管理员ID"`
@@ -6,16 +6,16 @@ import ( @@ -6,16 +6,16 @@ import (
6 ) 6 )
7 7
8 type EvaluationRule struct { 8 type EvaluationRule struct {
9 - tableName struct{} `pg:"evaluation_rule" comment:"评估规则"`  
10 - Id int64 `pg:"pk:id" comment:"ID"`  
11 - Name string `comment:"名称"`  
12 - Remark string `comment:"备注"`  
13 - CompanyId int64 `comment:"公司ID"`  
14 - CreatorId int64 `comment:"创建人ID"`  
15 - Type int `comment:"评估方式(0评级、1评分)"`  
16 - Rating *domain.Rating `comment:"评级"`  
17 - Score *domain.Score `comment:"评分"`  
18 - CreatedAt time.Time `comment:"创建时间"`  
19 - UpdatedAt time.Time `comment:"更新时间"`  
20 - DeletedAt *time.Time `comment:"删除时间"` 9 + tableName struct{} `comment:"评估规则" pg:"evaluation_rule"`
  10 + Id int64 `comment:"ID" pg:"pk:id"`
  11 + Name string `comment:"名称"`
  12 + Remark string `comment:"备注"`
  13 + CompanyId int64 `comment:"公司ID"`
  14 + CreatorId int64 `comment:"创建人ID"`
  15 + Type int `comment:"评估方式(0评级、1评分)" pg:",use_zero"`
  16 + Rating domain.Rating `comment:"评级"`
  17 + Score domain.Score `comment:"评分"`
  18 + CreatedAt time.Time `comment:"创建时间"`
  19 + UpdatedAt time.Time `comment:"更新时间"`
  20 + DeletedAt *time.Time `comment:"删除时间" pg:",soft_delete"`
21 } 21 }
@@ -6,13 +6,13 @@ import ( @@ -6,13 +6,13 @@ import (
6 ) 6 )
7 7
8 type EvaluationTemplate struct { 8 type EvaluationTemplate struct {
9 - tableName struct{} `pg:"evaluation_template" comment:"评估模板"`  
10 - Id int64 `comment:"ID"` 9 + tableName struct{} `comment:"评估模板" pg:"evaluation_template"`
  10 + Id int64 `comment:"ID" pg:"pk:id"`
11 Name string `comment:"名称"` 11 Name string `comment:"名称"`
12 Describe string `comment:"描述"` 12 Describe string `comment:"描述"`
13 CompanyId int64 `comment:"公司ID"` 13 CompanyId int64 `comment:"公司ID"`
14 CreatorId int64 `comment:"创建人ID"` 14 CreatorId int64 `comment:"创建人ID"`
15 - State int `comment:"状态(0待完成配置、1待启用、2启用、3停用)"` 15 + State int `comment:"状态(0待完成配置、1待启用、2启用、3停用)" pg:",use_zero"`
16 LinkNodes []*domain.LinkNode `comment:"评估流程"` 16 LinkNodes []*domain.LinkNode `comment:"评估流程"`
17 CreatedAt time.Time `comment:"创建时间"` 17 CreatedAt time.Time `comment:"创建时间"`
18 UpdatedAt time.Time `comment:"更新时间"` 18 UpdatedAt time.Time `comment:"更新时间"`
@@ -6,7 +6,7 @@ type Role struct { @@ -6,7 +6,7 @@ type Role struct {
6 tableName struct{} `pg:"role" comment:"角色"` 6 tableName struct{} `pg:"role" comment:"角色"`
7 Id int64 `pg:"pk:id" comment:"ID"` 7 Id int64 `pg:"pk:id" comment:"ID"`
8 Name string `comment:"角色名称"` 8 Name string `comment:"角色名称"`
9 - Type int `comment:"角色类型(0角色可删、1系统预置角色不可删)"` 9 + Type int `comment:"角色类型(0角色可删、1系统预置角色不可删)" pg:",use_zero"`
10 Description string `comment:"角色描述"` 10 Description string `comment:"角色描述"`
11 CompanyId int64 `comment:"公司ID"` 11 CompanyId int64 `comment:"公司ID"`
12 CreatedAt time.Time `comment:"创建时间"` 12 CreatedAt time.Time `comment:"创建时间"`
  1 +package models
  2 +
  3 +import (
  4 + "time"
  5 +
  6 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  7 +)
  8 +
  9 +// 记录用户需要的评估项
  10 +type StaffAssess struct {
  11 + tableName struct{} `pg:"staff_assess" comment:"记录用户需要的评估项"`
  12 + Id int `pg:",pk"` //id
  13 + CompanyId int `comment:"公司id"` //公司id
  14 + EvaluationProjectId int `comment:"对应的项目id"` //对应的项目id
  15 + EvaluationProjectName string
  16 + CycleId int64 `comment:"对应的周期id"` //对应的周期id
  17 + CycleName string
  18 + StaffAssessTaskId int
  19 + TargetUser domain.StaffDesc `comment:"被评估的目标用户"` //被评估的目标用户
  20 + TargetDepartment []domain.StaffDepartment `comment:"被评估的用户所在的部门"` //被评估的用户所在的部门
  21 + Executor domain.StaffDesc `comment:"填写评估的用户"` //填写评估的用户
  22 + Types string `comment:"填写评估对应的类型"` //填写评估对应的类型
  23 + LinkNodeId int `comment:"评估环节id"`
  24 + LinkNodeName string
  25 + Status string `comment:"评估的填写状态"` //评估的填写状态
  26 + BeginTime time.Time `comment:"开始时间"` //开始时间
  27 + EndTime time.Time `comment:"截止时间"` //截止时间
  28 + CreatedAt time.Time `comment:"数据创建时间"` //数据创建时间
  29 + UpdatedAt time.Time `comment:"数据更新时间"` //数据更新时间
  30 + DeletedAt *time.Time `comment:"数据删除时间"` //数据删除时间
  31 +}
  1 +package models
  2 +
  3 +import "time"
  4 +
  5 +//填写的评估内容
  6 +type StaffAssessContent struct {
  7 + tableName struct{} `pg:"staff_assess_content" comment:"填写的评估项"`
  8 + Id int `pg:",pk"` //id
  9 + StaffAssessId int //用户需要的评估项id
  10 + SortBy int //排序
  11 + Category string //类别
  12 + Title string //问题标题
  13 + Remark string //填写的反馈
  14 + Rate string //评估填写的值
  15 + ReteResult string //评估的结果
  16 + CreatedAt time.Time //数据创建时间
  17 + UpdatedAt time.Time //数据更新时间
  18 +}
  19 +
  20 +type StaffAssessContentRepository interface {
  21 + Save(param *StaffAssessContent) (*StaffAssessContent, error)
  22 + Remove(id int) error
  23 + FindOne(queryOptions map[string]interface{}) (*StaffAssessContent, error)
  24 + Find(queryOptions map[string]interface{}) (int, []*StaffAssessContent, error)
  25 +}
  1 +package models
  2 +
  3 +import (
  4 + "time"
  5 +
  6 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  7 +)
  8 +
  9 +// 执行评估的任务列表
  10 +type StaffAssessTask struct {
  11 + tableName struct{} `pg:"staff_assess_task" comment:"执行评估的任务列表"`
  12 + Id int `pg:",pk"`
  13 + CompanyId int `` //公司id
  14 + EvaluationProjectId int `` //项目id
  15 + EvaluationProjectName string `` //项目名称
  16 + CycleId int64 //对应的周期id
  17 + CycleName string //对应周期的名称
  18 + ExecutorId []int //参与考评的人
  19 + StepList []domain.AssessTaskStep `` //考评的流程
  20 + BeginTime time.Time //开始时间
  21 + EndTime time.Time //截止时间
  22 + CreatedAt time.Time //数据创建时间
  23 + UpdatedAt time.Time //数据更新时间
  24 + DeletedAt *time.Time //数据删除时间
  25 +}
@@ -91,9 +91,8 @@ func (repo *DepartmentRepository) FindOne(queryOptions map[string]interface{}) ( @@ -91,9 +91,8 @@ func (repo *DepartmentRepository) FindOne(queryOptions map[string]interface{}) (
91 91
92 func (repo *DepartmentRepository) Find(queryOptions map[string]interface{}) (int, []*domain.Department, error) { 92 func (repo *DepartmentRepository) Find(queryOptions map[string]interface{}) (int, []*domain.Department, error) {
93 tx := repo.transactionContext.PgTx 93 tx := repo.transactionContext.PgTx
94 - var dparmentModel []models.Department  
95 - query := tx.Model(&dparmentModel).  
96 - Limit(20) 94 + dparmentModel := []models.Department{}
  95 + query := tx.Model(&dparmentModel).Where("delete_at isnull")
97 if v, ok := queryOptions["id"]; ok { 96 if v, ok := queryOptions["id"]; ok {
98 query.Where("id=?", v) 97 query.Where("id=?", v)
99 } 98 }
@@ -3,13 +3,14 @@ package repository @@ -3,13 +3,14 @@ package repository
3 import ( 3 import (
4 "errors" 4 "errors"
5 "fmt" 5 "fmt"
  6 + "time"
  7 +
6 "github.com/go-pg/pg/v10" 8 "github.com/go-pg/pg/v10"
7 "github.com/linmadan/egglib-go/persistent/pg/sqlbuilder" 9 "github.com/linmadan/egglib-go/persistent/pg/sqlbuilder"
8 pgTransaction "github.com/linmadan/egglib-go/transaction/pg" 10 pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
9 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" 11 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
10 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/pg/models" 12 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/pg/models"
11 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/utils" 13 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/utils"
12 - "time"  
13 ) 14 )
14 15
15 type EvaluationCycleRepository struct { 16 type EvaluationCycleRepository struct {
@@ -133,6 +134,16 @@ func (repo *EvaluationCycleRepository) Find(queryOptions map[string]interface{}) @@ -133,6 +134,16 @@ func (repo *EvaluationCycleRepository) Find(queryOptions map[string]interface{})
133 query.Offset(v) 134 query.Offset(v)
134 } 135 }
135 136
  137 + if v, ok := queryOptions["timeStart"]; ok {
  138 + t := v.(time.Time)
  139 + query.Where("time_start<=?", t)
  140 + }
  141 +
  142 + if v, ok := queryOptions["timeEnd"]; ok {
  143 + t := v.(time.Time)
  144 + query.Where("time_end>=?", t)
  145 + }
  146 +
136 count, err := query.SelectAndCount() 147 count, err := query.SelectAndCount()
137 if err != nil { 148 if err != nil {
138 return 0, nil, err 149 return 0, nil, err
@@ -58,9 +58,14 @@ func (repo *EvaluationCycleTemplateRepository) Insert(d *domain.EvaluationCycleT @@ -58,9 +58,14 @@ func (repo *EvaluationCycleTemplateRepository) Insert(d *domain.EvaluationCycleT
58 d.Id = id 58 d.Id = id
59 d.CreatedAt = time.Now() 59 d.CreatedAt = time.Now()
60 d.UpdatedAt = d.CreatedAt 60 d.UpdatedAt = d.CreatedAt
  61 + // 模板对象ID也更新
  62 + if d.Template != nil {
  63 + d.Template.Id = id
  64 + }
61 } else { 65 } else {
62 d.UpdatedAt = time.Now() 66 d.UpdatedAt = time.Now()
63 } 67 }
  68 +
64 m := repo.TransformToModel(d) 69 m := repo.TransformToModel(d)
65 tx := repo.transactionContext.PgTx 70 tx := repo.transactionContext.PgTx
66 var err error 71 var err error
@@ -123,6 +123,10 @@ func (repo *EvaluationRuleRepository) Find(queryOptions map[string]interface{}) @@ -123,6 +123,10 @@ func (repo *EvaluationRuleRepository) Find(queryOptions map[string]interface{})
123 query.Where("name LIKE ? or remark LIKE ?", v, v) 123 query.Where("name LIKE ? or remark LIKE ?", v, v)
124 } 124 }
125 125
  126 + if v, ok := queryOptions["ids"]; ok {
  127 + query.Where("id in(?)", pg.In(v))
  128 + }
  129 +
126 if v, ok := queryOptions["name"]; ok { 130 if v, ok := queryOptions["name"]; ok {
127 query.Where("name = ?", v) 131 query.Where("name = ?", v)
128 } 132 }
@@ -131,6 +135,14 @@ func (repo *EvaluationRuleRepository) Find(queryOptions map[string]interface{}) @@ -131,6 +135,14 @@ func (repo *EvaluationRuleRepository) Find(queryOptions map[string]interface{})
131 query.Where("company_id = ?", v) 135 query.Where("company_id = ?", v)
132 } 136 }
133 137
  138 + if v, ok := queryOptions["creatorId"]; ok && v.(int64) > 0 {
  139 + query.Where("creator_id = ?", v)
  140 + }
  141 +
  142 + if v, ok := queryOptions["type"]; ok && v.(int) >= 0 {
  143 + query.Where("type = ?", v)
  144 + }
  145 +
134 if v, ok := queryOptions["limit"].(int); ok { 146 if v, ok := queryOptions["limit"].(int); ok {
135 query.Limit(v) 147 query.Limit(v)
136 } 148 }
@@ -125,6 +125,10 @@ func (repo *EvaluationTemplateRepository) Find(queryOptions map[string]interface @@ -125,6 +125,10 @@ func (repo *EvaluationTemplateRepository) Find(queryOptions map[string]interface
125 query.Where("id in(?)", pg.In(v)) 125 query.Where("id in(?)", pg.In(v))
126 } 126 }
127 127
  128 + if v, ok := queryOptions["notId"]; ok {
  129 + query.Where("id != ?", v)
  130 + }
  131 +
128 if v, ok := queryOptions["name"]; ok && len(v.(string)) > 0 { 132 if v, ok := queryOptions["name"]; ok && len(v.(string)) > 0 {
129 query.Where("name LIKE ?", v) 133 query.Where("name LIKE ?", v)
130 } 134 }
@@ -133,10 +137,14 @@ func (repo *EvaluationTemplateRepository) Find(queryOptions map[string]interface @@ -133,10 +137,14 @@ func (repo *EvaluationTemplateRepository) Find(queryOptions map[string]interface
133 query.Where("company_id = ?", v) 137 query.Where("company_id = ?", v)
134 } 138 }
135 139
136 - if v, ok := queryOptions["state"]; ok { 140 + if v, ok := queryOptions["state"]; ok && v.(int) >= 0 {
137 query.Where("state = ?", v) 141 query.Where("state = ?", v)
138 } 142 }
139 143
  144 + if v, ok := queryOptions["createdAt"]; ok {
  145 + query.Where("created_at = ?", v)
  146 + }
  147 +
140 if v, ok := queryOptions["limit"].(int); ok { 148 if v, ok := queryOptions["limit"].(int); ok {
141 query.Limit(v) 149 query.Limit(v)
142 } 150 }
  1 +package repository
  2 +
  3 +import (
  4 + "errors"
  5 + "fmt"
  6 + "time"
  7 +
  8 + "github.com/go-pg/pg/v10"
  9 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  10 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  11 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/pg/models"
  12 +)
  13 +
  14 +type StaffAssessContentRepository struct {
  15 + transactionContext *pgTransaction.TransactionContext
  16 +}
  17 +
  18 +var _ domain.StaffAssessContentRepository = (*StaffAssessContentRepository)(nil)
  19 +
  20 +func NewStaffAssessContentRepository(transactionContext *pgTransaction.TransactionContext) *StaffAssessContentRepository {
  21 + return &StaffAssessContentRepository{transactionContext: transactionContext}
  22 +}
  23 +
  24 +func (repo *StaffAssessContentRepository) TransformToDomain(d *models.StaffAssessContent) *domain.StaffAssessContent {
  25 + return &domain.StaffAssessContent{}
  26 +}
  27 +
  28 +func (repo *StaffAssessContentRepository) Save(d *domain.StaffAssessContent) (*domain.StaffAssessContent, error) {
  29 + saveModel := models.StaffAssess{
  30 + Id: d.Id,
  31 + }
  32 + tx := repo.transactionContext.PgTx
  33 + var err error
  34 + if saveModel.Id == 0 {
  35 + _, err = tx.Model(&saveModel).Insert()
  36 + if err != nil {
  37 + return nil, err
  38 + }
  39 + } else {
  40 + _, err = tx.Model(&saveModel).WherePK().Update()
  41 + if err != nil {
  42 + return nil, err
  43 + }
  44 + }
  45 + d.Id = saveModel.Id
  46 + return d, nil
  47 +}
  48 +
  49 +func (repo *StaffAssessContentRepository) Remove(id int) error {
  50 + tx := repo.transactionContext.PgTx
  51 + nowTime := time.Now()
  52 + _, err := tx.Model(&models.StaffAssessContent{}).
  53 + Where("id=?", id).
  54 + Set("deleted_at=?", nowTime).
  55 + Update()
  56 + return err
  57 +}
  58 +
  59 +func (repo *StaffAssessContentRepository) FindOne(queryOptions map[string]interface{}) (*domain.StaffAssessContent, error) {
  60 + tx := repo.transactionContext.PgTx
  61 + m := new(models.StaffAssessContent)
  62 + query := tx.Model(m)
  63 + query.Where("deleted_at isnull")
  64 + if id, ok := queryOptions["id"]; ok {
  65 + query.Where("id=?", id)
  66 + }
  67 + if err := query.First(); err != nil {
  68 + if errors.Is(err, pg.ErrNoRows) {
  69 + return nil, fmt.Errorf("没有此资源")
  70 + } else {
  71 + return nil, err
  72 + }
  73 + }
  74 + u := repo.TransformToDomain(m)
  75 + return u, nil
  76 +}
  77 +
  78 +func (repo *StaffAssessContentRepository) Find(queryOptions map[string]interface{}) (int, []*domain.StaffAssessContent, error) {
  79 + tx := repo.transactionContext.PgTx
  80 + var m []*models.StaffAssessContent
  81 + query := tx.Model(&m).
  82 + Where("deleted_at isnull").Limit(20)
  83 + if companyId, ok := queryOptions["companyId"]; ok {
  84 + query.Where("company_id = ?", companyId)
  85 + }
  86 + if v, ok := queryOptions["limit"].(int); ok {
  87 + query.Limit(v)
  88 + }
  89 + if v, ok := queryOptions["offset"].(int); ok {
  90 + query.Offset(v)
  91 + }
  92 + if v, ok := queryOptions["staffAssessId"]; ok {
  93 + query.Where("staff_assess_id=?", v)
  94 + }
  95 + count, err := query.SelectAndCount()
  96 + if err != nil {
  97 + return 0, nil, err
  98 + }
  99 + var arrays []*domain.StaffAssessContent
  100 + for _, v := range m {
  101 + d := repo.TransformToDomain(v)
  102 + arrays = append(arrays, d)
  103 + }
  104 + return count, arrays, nil
  105 +}
  1 +package repository
  2 +
  3 +import (
  4 + "errors"
  5 + "fmt"
  6 + "time"
  7 +
  8 + "github.com/go-pg/pg/v10"
  9 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  10 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  11 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/pg/models"
  12 +)
  13 +
  14 +type StaffAssessRepository struct {
  15 + transactionContext *pgTransaction.TransactionContext
  16 +}
  17 +
  18 +var _ domain.StaffAssessRepository = (*StaffAssessRepository)(nil)
  19 +
  20 +func NewStaffAssessRepository(transactionContext *pgTransaction.TransactionContext) *StaffAssessRepository {
  21 + return &StaffAssessRepository{transactionContext: transactionContext}
  22 +}
  23 +
  24 +func (repo *StaffAssessRepository) TransformToDomain(d *models.StaffAssess) *domain.StaffAssess {
  25 + return &domain.StaffAssess{
  26 + Id: d.Id,
  27 + CompanyId: d.CompanyId,
  28 + EvaluationProjectId: d.EvaluationProjectId,
  29 + EvaluationProjectName: d.EvaluationProjectName,
  30 + CycleId: d.CycleId,
  31 + CycleName: d.CycleName,
  32 + StaffAssessTaskId: d.StaffAssessTaskId,
  33 + TargetUser: d.TargetUser,
  34 + TargetDepartment: d.TargetDepartment,
  35 + Executor: d.Executor,
  36 + Types: domain.StaffAssessType(d.Types),
  37 + LinkNodeId: d.LinkNodeId,
  38 + LinkNodeName: d.LinkNodeName,
  39 + Status: domain.StaffAssessStatus(d.Status),
  40 + BeginTime: d.BeginTime,
  41 + EndTime: d.EndTime,
  42 + CreatedAt: d.EndTime,
  43 + UpdatedAt: d.CreatedAt,
  44 + DeletedAt: d.DeletedAt,
  45 + }
  46 +}
  47 +
  48 +func (repo *StaffAssessRepository) Save(d *domain.StaffAssess) (*domain.StaffAssess, error) {
  49 + saveModel := models.StaffAssess{
  50 + Id: d.Id,
  51 + CompanyId: d.CompanyId,
  52 + EvaluationProjectId: d.EvaluationProjectId,
  53 + EvaluationProjectName: d.EvaluationProjectName,
  54 + CycleId: d.CycleId,
  55 + CycleName: d.CycleName,
  56 + StaffAssessTaskId: d.StaffAssessTaskId,
  57 + TargetUser: d.TargetUser,
  58 + TargetDepartment: d.TargetDepartment,
  59 + Executor: d.Executor,
  60 + Types: string(d.Types),
  61 + LinkNodeId: d.LinkNodeId,
  62 + LinkNodeName: d.LinkNodeName,
  63 + Status: string(d.Status),
  64 + BeginTime: d.BeginTime,
  65 + EndTime: d.EndTime,
  66 + CreatedAt: d.EndTime,
  67 + UpdatedAt: d.CreatedAt,
  68 + DeletedAt: d.DeletedAt,
  69 + }
  70 + tx := repo.transactionContext.PgTx
  71 + var err error
  72 + if saveModel.Id == 0 {
  73 + _, err = tx.Model(&saveModel).Insert()
  74 + if err != nil {
  75 + return nil, err
  76 + }
  77 + } else {
  78 + _, err = tx.Model(&saveModel).WherePK().Update()
  79 + if err != nil {
  80 + return nil, err
  81 + }
  82 + }
  83 + d.Id = saveModel.Id
  84 + return d, nil
  85 +}
  86 +
  87 +func (repo *StaffAssessRepository) Remove(id int) error {
  88 + tx := repo.transactionContext.PgTx
  89 + nowTime := time.Now()
  90 + _, err := tx.Model(&models.StaffAssess{}).
  91 + Where("id=?", id).
  92 + Set("deleted_at=?", nowTime).
  93 + Update()
  94 + return err
  95 +}
  96 +
  97 +func (repo *StaffAssessRepository) FindOne(queryOptions map[string]interface{}) (*domain.StaffAssess, error) {
  98 + tx := repo.transactionContext.PgTx
  99 + m := new(models.StaffAssess)
  100 + query := tx.Model(m)
  101 + query.Where("deleted_at isnull")
  102 + if id, ok := queryOptions["id"]; ok {
  103 + query.Where("id=?", id)
  104 + }
  105 + if err := query.First(); err != nil {
  106 + if errors.Is(err, pg.ErrNoRows) {
  107 + return nil, fmt.Errorf("没有此资源")
  108 + } else {
  109 + return nil, err
  110 + }
  111 + }
  112 + u := repo.TransformToDomain(m)
  113 + return u, nil
  114 +}
  115 +
  116 +func (repo *StaffAssessRepository) Find(queryOptions map[string]interface{}) (int, []*domain.StaffAssess, error) {
  117 + tx := repo.transactionContext.PgTx
  118 + var m []*models.StaffAssess
  119 + query := tx.Model(&m).
  120 + Where("deleted_at isnull")
  121 + if companyId, ok := queryOptions["companyId"]; ok {
  122 + query.Where("company_id = ?", companyId)
  123 + }
  124 + if v, ok := queryOptions["limit"].(int); ok {
  125 + query.Limit(v)
  126 + }
  127 + if v, ok := queryOptions["offset"].(int); ok {
  128 + query.Offset(v)
  129 + }
  130 + if v, ok := queryOptions["targetUserId"].(int); ok && v > 0 {
  131 + query.Where(`target_user->>'userId'='?'`, v)
  132 + }
  133 + if v, ok := queryOptions["executorId"].(int); ok && v > 0 {
  134 + query.Where(`executor->>'userId'='?'`, v)
  135 + }
  136 +
  137 + if v, ok := queryOptions["cycleId"].(int64); ok && v > 0 {
  138 + query.Where(`cycle_id=?`, v)
  139 + }
  140 + if v, ok := queryOptions["staffAssessTaskId"]; ok {
  141 + query.Where(`staff_assess_task_id=?`, v)
  142 + }
  143 +
  144 + if v, ok := queryOptions["typesList"].([]string); ok && len(v) > 0 {
  145 + query.Where("types in(?)", pg.In(v))
  146 + }
  147 + if v, ok := queryOptions["status"].(string); ok && len(v) > 0 {
  148 + query.Where("status=?", v)
  149 + }
  150 + count, err := query.SelectAndCount()
  151 + if err != nil {
  152 + return 0, nil, err
  153 + }
  154 + var arrays []*domain.StaffAssess
  155 + for _, v := range m {
  156 + d := repo.TransformToDomain(v)
  157 + arrays = append(arrays, d)
  158 + }
  159 + return count, arrays, nil
  160 +}
  1 +package repository
  2 +
  3 +import (
  4 + "errors"
  5 + "fmt"
  6 + "time"
  7 +
  8 + "github.com/go-pg/pg/v10"
  9 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  10 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  11 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/pg/models"
  12 +)
  13 +
  14 +type StaffAssessTaskRepository struct {
  15 + transactionContext *pgTransaction.TransactionContext
  16 +}
  17 +
  18 +var _ domain.StaffAssessTaskRepository = (*StaffAssessTaskRepository)(nil)
  19 +
  20 +func NewStaffAssessTaskRepository(transactionContext *pgTransaction.TransactionContext) *StaffAssessTaskRepository {
  21 + return &StaffAssessTaskRepository{transactionContext: transactionContext}
  22 +}
  23 +
  24 +func (repo *StaffAssessTaskRepository) TransformToDomain(d *models.StaffAssessTask) *domain.StaffAssessTask {
  25 + return &domain.StaffAssessTask{
  26 + Id: d.Id,
  27 + CompanyId: d.CompanyId,
  28 + EvaluationProjectId: d.EvaluationProjectId,
  29 + EvaluationProjectName: d.EvaluationProjectName,
  30 + CycleId: d.CycleId,
  31 + CycleName: d.CycleName,
  32 + BeginTime: d.BeginTime,
  33 + EndTime: d.EndTime,
  34 + StepList: d.StepList,
  35 + ExecutorId: d.ExecutorId,
  36 + CreatedAt: d.EndTime,
  37 + UpdatedAt: d.CreatedAt,
  38 + DeletedAt: d.DeletedAt,
  39 + }
  40 +}
  41 +
  42 +func (repo *StaffAssessTaskRepository) Save(d *domain.StaffAssessTask) (*domain.StaffAssessTask, error) {
  43 + saveModel := models.StaffAssessTask{
  44 + Id: d.Id,
  45 + CompanyId: d.CompanyId,
  46 + EvaluationProjectId: d.EvaluationProjectId,
  47 + EvaluationProjectName: d.EvaluationProjectName,
  48 + CycleId: d.CycleId,
  49 + CycleName: d.CycleName,
  50 + ExecutorId: d.ExecutorId,
  51 + StepList: d.StepList,
  52 + BeginTime: d.BeginTime,
  53 + EndTime: d.EndTime,
  54 + CreatedAt: d.EndTime,
  55 + UpdatedAt: d.CreatedAt,
  56 + DeletedAt: d.DeletedAt,
  57 + }
  58 + tx := repo.transactionContext.PgTx
  59 + var err error
  60 + if saveModel.Id == 0 {
  61 + _, err = tx.Model(&saveModel).Insert()
  62 + if err != nil {
  63 + return nil, err
  64 + }
  65 + } else {
  66 + _, err = tx.Model(&saveModel).WherePK().Update()
  67 + if err != nil {
  68 + return nil, err
  69 + }
  70 + }
  71 + d.Id = saveModel.Id
  72 + return d, nil
  73 +}
  74 +
  75 +func (repo *StaffAssessTaskRepository) Remove(id int) error {
  76 + tx := repo.transactionContext.PgTx
  77 + nowTime := time.Now()
  78 + _, err := tx.Model(&models.StaffAssessTask{}).
  79 + Where("id=?", id).
  80 + Set("deleted_at=?", nowTime).
  81 + Update()
  82 + return err
  83 +}
  84 +
  85 +func (repo *StaffAssessTaskRepository) FindOne(queryOptions map[string]interface{}) (*domain.StaffAssessTask, error) {
  86 + tx := repo.transactionContext.PgTx
  87 + m := new(models.StaffAssessTask)
  88 + query := tx.Model(m)
  89 + query.Where("deleted_at isnull")
  90 + if id, ok := queryOptions["id"]; ok {
  91 + query.Where("id=?", id)
  92 + }
  93 + if err := query.First(); err != nil {
  94 + if errors.Is(err, pg.ErrNoRows) {
  95 + return nil, fmt.Errorf("没有此资源")
  96 + } else {
  97 + return nil, err
  98 + }
  99 + }
  100 + u := repo.TransformToDomain(m)
  101 + return u, nil
  102 +}
  103 +
  104 +func (repo *StaffAssessTaskRepository) Find(queryOptions map[string]interface{}) (int, []*domain.StaffAssessTask, error) {
  105 + tx := repo.transactionContext.PgTx
  106 + var m []*models.StaffAssessTask
  107 + query := tx.Model(&m).
  108 + Where("deleted_at isnull").Limit(20)
  109 + if companyId, ok := queryOptions["companyId"]; ok {
  110 + query.Where("company_id = ?", companyId)
  111 + }
  112 + if v, ok := queryOptions["limit"].(int); ok {
  113 + query.Limit(v)
  114 + }
  115 + if v, ok := queryOptions["offset"].(int); ok {
  116 + query.Offset(v)
  117 + }
  118 + if v, ok := queryOptions["executorId"].(int); ok && v > 0 {
  119 + query.Where(`executor_id @>'[?]'`, v)
  120 + }
  121 + count, err := query.SelectAndCount()
  122 + if err != nil {
  123 + return 0, nil, err
  124 + }
  125 + var arrays []*domain.StaffAssessTask
  126 + for _, v := range m {
  127 + d := repo.TransformToDomain(v)
  128 + arrays = append(arrays, d)
  129 + }
  130 + return count, arrays, nil
  131 +}
@@ -77,7 +77,7 @@ func (repo *UserRepository) Remove(userId []int64) error { @@ -77,7 +77,7 @@ func (repo *UserRepository) Remove(userId []int64) error {
77 func (repo *UserRepository) FindOne(queryOptions map[string]interface{}) (*domain.User, error) { 77 func (repo *UserRepository) FindOne(queryOptions map[string]interface{}) (*domain.User, error) {
78 tx := repo.transactionContext.PgTx 78 tx := repo.transactionContext.PgTx
79 userModel := models.User{} 79 userModel := models.User{}
80 - query := tx.Model(&userModel) 80 + query := tx.Model(&userModel).Where("deleted_at isnull")
81 if v, ok := queryOptions["id"]; ok { 81 if v, ok := queryOptions["id"]; ok {
82 query.Where("id=?", v) 82 query.Where("id=?", v)
83 } 83 }
@@ -12,14 +12,17 @@ type CycleController struct { @@ -12,14 +12,17 @@ type CycleController struct {
12 beego.BaseController 12 beego.BaseController
13 } 13 }
14 14
15 -func (controller *RoleController) CreateCycle() { 15 +func (controller *CycleController) CreateCycle() {
16 ruService := service.NewEvaluationCycleService() 16 ruService := service.NewEvaluationCycleService()
17 in := &command.CreateCycleCommand{} 17 in := &command.CreateCycleCommand{}
18 if err := controller.Unmarshal(in); err != nil { 18 if err := controller.Unmarshal(in); err != nil {
19 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 19 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
20 } else { 20 } else {
21 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx)  
22 - in.CreatorId = middlewares.GetUserId(controller.Ctx) 21 + ua := middlewares.GetUser(controller.Ctx)
  22 + in.CompanyId = ua.CompanyId
  23 + in.CreatorId = ua.UserId
  24 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  25 + //in.CreatorId = middlewares.GetUserId(controller.Ctx)
23 controller.Response(ruService.Create(in)) 26 controller.Response(ruService.Create(in))
24 } 27 }
25 } 28 }
@@ -30,7 +33,9 @@ func (controller *CycleController) UpdateCycle() { @@ -30,7 +33,9 @@ func (controller *CycleController) UpdateCycle() {
30 if err := controller.Unmarshal(in); err != nil { 33 if err := controller.Unmarshal(in); err != nil {
31 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 34 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
32 } else { 35 } else {
33 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx) 36 + ua := middlewares.GetUser(controller.Ctx)
  37 + in.CompanyId = ua.CompanyId
  38 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
34 controller.Response(ruService.Update(in)) 39 controller.Response(ruService.Update(in))
35 } 40 }
36 } 41 }
@@ -65,7 +70,20 @@ func (controller *CycleController) ListCycle() { @@ -65,7 +70,20 @@ func (controller *CycleController) ListCycle() {
65 if len(in.Name) > 0 { 70 if len(in.Name) > 0 {
66 in.Name = "%" + in.Name + "%" 71 in.Name = "%" + in.Name + "%"
67 } 72 }
68 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx) 73 + ua := middlewares.GetUser(controller.Ctx)
  74 + in.CompanyId = ua.CompanyId
69 controller.Response(ruService.List(in)) 75 controller.Response(ruService.List(in))
70 } 76 }
71 } 77 }
  78 +
  79 +func (controller *CycleController) StatisticCycleUser() {
  80 + ruService := service.NewEvaluationCycleService()
  81 + in := &command.StatisticCycleProjectUserCommand{}
  82 + if err := controller.Unmarshal(in); err != nil {
  83 + controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
  84 + } else {
  85 + ua := middlewares.GetUser(controller.Ctx)
  86 + in.CompanyId = ua.CompanyId
  87 + controller.Response(ruService.StatisticCycleUser(in))
  88 + }
  89 +}
@@ -12,14 +12,17 @@ type ProjectController struct { @@ -12,14 +12,17 @@ type ProjectController struct {
12 beego.BaseController 12 beego.BaseController
13 } 13 }
14 14
15 -func (controller *RoleController) CreateProject() { 15 +func (controller *ProjectController) CreateProject() {
16 ruService := service.NewEvaluationProjectService() 16 ruService := service.NewEvaluationProjectService()
17 in := &command.CreateProjectCommand{} 17 in := &command.CreateProjectCommand{}
18 if err := controller.Unmarshal(in); err != nil { 18 if err := controller.Unmarshal(in); err != nil {
19 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 19 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
20 } else { 20 } else {
21 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx)  
22 - in.CreatorId = middlewares.GetUserId(controller.Ctx) 21 + ua := middlewares.GetUser(controller.Ctx)
  22 + in.CompanyId = ua.CompanyId
  23 + in.CreatorId = ua.UserId
  24 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  25 + //in.CreatorId = middlewares.GetUserId(controller.Ctx)
23 controller.Response(ruService.Create(in)) 26 controller.Response(ruService.Create(in))
24 } 27 }
25 } 28 }
@@ -30,7 +33,9 @@ func (controller *ProjectController) UpdateProject() { @@ -30,7 +33,9 @@ func (controller *ProjectController) UpdateProject() {
30 if err := controller.Unmarshal(in); err != nil { 33 if err := controller.Unmarshal(in); err != nil {
31 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 34 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
32 } else { 35 } else {
33 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx) 36 + ua := middlewares.GetUser(controller.Ctx)
  37 + in.CompanyId = ua.CompanyId
  38 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
34 controller.Response(ruService.Update(in)) 39 controller.Response(ruService.Update(in))
35 } 40 }
36 } 41 }
@@ -41,22 +46,13 @@ func (controller *ProjectController) UpdateProjectForTemplate() { @@ -41,22 +46,13 @@ func (controller *ProjectController) UpdateProjectForTemplate() {
41 if err := controller.Unmarshal(in); err != nil { 46 if err := controller.Unmarshal(in); err != nil {
42 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 47 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
43 } else { 48 } else {
44 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx) 49 + ua := middlewares.GetUser(controller.Ctx)
  50 + in.CompanyId = ua.CompanyId
  51 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
45 controller.Response(ruService.UpdateTemplate(in)) 52 controller.Response(ruService.UpdateTemplate(in))
46 } 53 }
47 } 54 }
48 55
49 -func (controller *ProjectController) UpdateProjectForTemplateNode() {  
50 - ruService := service.NewEvaluationProjectService()  
51 - in := &command.UpdateProjectTemplateNodeCommand{}  
52 - if err := controller.Unmarshal(in); err != nil {  
53 - controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))  
54 - } else {  
55 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx)  
56 - controller.Response(ruService.UpdateTemplateNode(in))  
57 - }  
58 -}  
59 -  
60 func (controller *ProjectController) GetProject() { 56 func (controller *ProjectController) GetProject() {
61 ruService := service.NewEvaluationProjectService() 57 ruService := service.NewEvaluationProjectService()
62 in := &command.GetProjectCommand{} 58 in := &command.GetProjectCommand{}
@@ -88,18 +84,20 @@ func (controller *ProjectController) ListProject() { @@ -88,18 +84,20 @@ func (controller *ProjectController) ListProject() {
88 if len(in.Name) > 0 { 84 if len(in.Name) > 0 {
89 in.Name = "%" + in.Name + "%" 85 in.Name = "%" + in.Name + "%"
90 } 86 }
91 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx) 87 + ua := middlewares.GetUser(controller.Ctx)
  88 + in.CompanyId = ua.CompanyId
  89 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
92 controller.Response(ruService.List(in)) 90 controller.Response(ruService.List(in))
93 } 91 }
94 } 92 }
95 93
96 -func (controller *ProjectController) StateProject() { 94 +func (controller *ProjectController) ActivateProject() {
97 ruService := service.NewEvaluationProjectService() 95 ruService := service.NewEvaluationProjectService()
98 - in := &command.StateProjectCommand{} 96 + in := &command.ActivateProjectCommand{}
99 if err := controller.Unmarshal(in); err != nil { 97 if err := controller.Unmarshal(in); err != nil {
100 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 98 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
101 } else { 99 } else {
102 - controller.Response(ruService.State(in)) 100 + controller.Response(ruService.Activate(in))
103 } 101 }
104 } 102 }
105 103
@@ -109,17 +107,20 @@ func (controller *ProjectController) CopyProject() { @@ -109,17 +107,20 @@ func (controller *ProjectController) CopyProject() {
109 if err := controller.Unmarshal(in); err != nil { 107 if err := controller.Unmarshal(in); err != nil {
110 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 108 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
111 } else { 109 } else {
  110 + ua := middlewares.GetUser(controller.Ctx)
  111 + in.CreatorId = ua.UserId
112 controller.Response(ruService.Copy(in)) 112 controller.Response(ruService.Copy(in))
113 } 113 }
114 } 114 }
115 115
116 -func (controller *ProjectController) StatisticCycleUser() { 116 +func (controller *ProjectController) CheckRecipients() {
117 ruService := service.NewEvaluationProjectService() 117 ruService := service.NewEvaluationProjectService()
118 - in := &command.StatisticCycleProjectUserCommand{} 118 + in := &command.CheckRecipientCommand{}
119 if err := controller.Unmarshal(in); err != nil { 119 if err := controller.Unmarshal(in); err != nil {
120 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 120 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
121 } else { 121 } else {
122 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx)  
123 - controller.Response(ruService.StatisticCycleUser(in)) 122 + ua := middlewares.GetUser(controller.Ctx)
  123 + in.CompanyId = ua.CompanyId
  124 + controller.Response(ruService.CheckRecipients(in))
124 } 125 }
125 } 126 }
@@ -12,14 +12,17 @@ type RuleController struct { @@ -12,14 +12,17 @@ type RuleController struct {
12 beego.BaseController 12 beego.BaseController
13 } 13 }
14 14
15 -func (controller *RoleController) CreateRule() { 15 +func (controller *RuleController) CreateRule() {
16 ruService := service.NewEvaluationRuleService() 16 ruService := service.NewEvaluationRuleService()
17 in := &command.CreateRuleCommand{} 17 in := &command.CreateRuleCommand{}
18 if err := controller.Unmarshal(in); err != nil { 18 if err := controller.Unmarshal(in); err != nil {
19 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 19 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
20 } else { 20 } else {
21 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx)  
22 - in.CreatorId = middlewares.GetUserId(controller.Ctx) 21 + ua := middlewares.GetUser(controller.Ctx)
  22 + in.CompanyId = ua.CompanyId
  23 + in.CreatorId = ua.UserId
  24 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  25 + //in.CreatorId = middlewares.GetUserId(controller.Ctx)
23 controller.Response(ruService.Create(in)) 26 controller.Response(ruService.Create(in))
24 } 27 }
25 } 28 }
@@ -30,8 +33,11 @@ func (controller *RuleController) UpdateRule() { @@ -30,8 +33,11 @@ func (controller *RuleController) UpdateRule() {
30 if err := controller.Unmarshal(in); err != nil { 33 if err := controller.Unmarshal(in); err != nil {
31 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 34 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
32 } else { 35 } else {
33 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx)  
34 - in.CreatorId = middlewares.GetUserId(controller.Ctx) 36 + ua := middlewares.GetUser(controller.Ctx)
  37 + in.CompanyId = ua.CompanyId
  38 + in.CreatorId = ua.UserId
  39 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  40 + //in.CreatorId = middlewares.GetUserId(controller.Ctx)
35 controller.Response(ruService.Update(in)) 41 controller.Response(ruService.Update(in))
36 } 42 }
37 } 43 }
@@ -57,27 +63,34 @@ func (controller *RuleController) RemoveRule() { @@ -57,27 +63,34 @@ func (controller *RuleController) RemoveRule() {
57 } 63 }
58 } 64 }
59 65
60 -func (controller *RuleController) ListRule() { 66 +//func (controller *RuleController) ListRule() {
  67 +// ruService := service.NewEvaluationRuleService()
  68 +// in := &command.QueryRuleCommand{}
  69 +// in.Type = -1
  70 +// if err := controller.Unmarshal(in); err != nil {
  71 +// controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
  72 +// } else {
  73 +// if len(in.NameOrRemark) > 0 {
  74 +// in.NameOrRemark = "%" + in.NameOrRemark + "%"
  75 +// }
  76 +// in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  77 +// controller.Response(ruService.List(in))
  78 +// }
  79 +//}
  80 +
  81 +func (controller *RuleController) ListRuleRelCreator() {
61 ruService := service.NewEvaluationRuleService() 82 ruService := service.NewEvaluationRuleService()
62 in := &command.QueryRuleCommand{} 83 in := &command.QueryRuleCommand{}
  84 + in.Type = -1
63 if err := controller.Unmarshal(in); err != nil { 85 if err := controller.Unmarshal(in); err != nil {
64 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 86 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
65 } else { 87 } else {
66 if len(in.NameOrRemark) > 0 { 88 if len(in.NameOrRemark) > 0 {
67 in.NameOrRemark = "%" + in.NameOrRemark + "%" 89 in.NameOrRemark = "%" + in.NameOrRemark + "%"
68 } 90 }
69 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx)  
70 - controller.Response(ruService.List(in))  
71 - }  
72 -}  
73 -  
74 -func (controller *RuleController) ListRuleRelCreator() {  
75 - ruService := service.NewEvaluationRuleService()  
76 - in := &command.QueryRuleCommand{}  
77 - if err := controller.Unmarshal(in); err != nil {  
78 - controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))  
79 - } else {  
80 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx) 91 + ua := middlewares.GetUser(controller.Ctx)
  92 + in.CompanyId = ua.CompanyId
  93 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
81 controller.Response(ruService.ListRelCreator(in)) 94 controller.Response(ruService.ListRelCreator(in))
82 } 95 }
83 } 96 }
@@ -5,6 +5,7 @@ import ( @@ -5,6 +5,7 @@ import (
5 "github.com/linmadan/egglib-go/web/beego" 5 "github.com/linmadan/egglib-go/web/beego"
6 service "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_template" 6 service "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_template"
7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_template/command" 7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_template/command"
  8 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
8 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/middlewares" 9 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/middlewares"
9 ) 10 )
10 11
@@ -12,14 +13,17 @@ type TemplateController struct { @@ -12,14 +13,17 @@ type TemplateController struct {
12 beego.BaseController 13 beego.BaseController
13 } 14 }
14 15
15 -func (controller *RoleController) CreateTemplate() { 16 +func (controller *TemplateController) CreateTemplate() {
16 ruService := service.NewEvaluationTemplateService() 17 ruService := service.NewEvaluationTemplateService()
17 in := &command.CreateTemplateCommand{} 18 in := &command.CreateTemplateCommand{}
18 if err := controller.Unmarshal(in); err != nil { 19 if err := controller.Unmarshal(in); err != nil {
19 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 20 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
20 } else { 21 } else {
21 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx)  
22 - in.CreatorId = middlewares.GetUserId(controller.Ctx) 22 + ua := middlewares.GetUser(controller.Ctx)
  23 + in.CompanyId = ua.CompanyId
  24 + in.CreatorId = ua.UserId
  25 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  26 + //in.CreatorId = middlewares.GetUserId(controller.Ctx)
23 controller.Response(ruService.Create(in)) 27 controller.Response(ruService.Create(in))
24 } 28 }
25 } 29 }
@@ -30,7 +34,9 @@ func (controller *TemplateController) UpdateTemplate() { @@ -30,7 +34,9 @@ func (controller *TemplateController) UpdateTemplate() {
30 if err := controller.Unmarshal(in); err != nil { 34 if err := controller.Unmarshal(in); err != nil {
31 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 35 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
32 } else { 36 } else {
33 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx) 37 + ua := middlewares.GetUser(controller.Ctx)
  38 + in.CompanyId = ua.CompanyId
  39 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
34 controller.Response(ruService.Update(in)) 40 controller.Response(ruService.Update(in))
35 } 41 }
36 } 42 }
@@ -59,25 +65,33 @@ func (controller *TemplateController) RemoveTemplate() { @@ -59,25 +65,33 @@ func (controller *TemplateController) RemoveTemplate() {
59 func (controller *TemplateController) ListTemplate() { 65 func (controller *TemplateController) ListTemplate() {
60 ruService := service.NewEvaluationTemplateService() 66 ruService := service.NewEvaluationTemplateService()
61 in := &command.QueryTemplateCommand{} 67 in := &command.QueryTemplateCommand{}
  68 + in.State = -1
62 if err := controller.Unmarshal(in); err != nil { 69 if err := controller.Unmarshal(in); err != nil {
63 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 70 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
64 } else { 71 } else {
65 if len(in.Name) > 0 { 72 if len(in.Name) > 0 {
66 in.Name = "%" + in.Name + "%" 73 in.Name = "%" + in.Name + "%"
67 } 74 }
68 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx) 75 + ua := middlewares.GetUser(controller.Ctx)
  76 + in.CompanyId = ua.CompanyId
  77 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
69 controller.Response(ruService.List(in)) 78 controller.Response(ruService.List(in))
70 } 79 }
71 } 80 }
72 81
73 func (controller *TemplateController) ListEnableTemplate() { 82 func (controller *TemplateController) ListEnableTemplate() {
74 ruService := service.NewEvaluationTemplateService() 83 ruService := service.NewEvaluationTemplateService()
75 - in := &command.AllEnableTemplateCommand{} 84 + in := &command.QueryTemplateCommand{}
  85 + in.State = domain.TemplateStateEnable
  86 + in.PageNumber = 1
  87 + in.PageSize = 999999
76 if err := controller.Unmarshal(in); err != nil { 88 if err := controller.Unmarshal(in); err != nil {
77 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 89 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
78 } else { 90 } else {
79 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx)  
80 - controller.Response(ruService.ListForEnable(in)) 91 + ua := middlewares.GetUser(controller.Ctx)
  92 + in.CompanyId = ua.CompanyId
  93 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  94 + controller.Response(ruService.List(in))
81 } 95 }
82 } 96 }
83 97
@@ -87,6 +101,9 @@ func (controller *TemplateController) StateTemplate() { @@ -87,6 +101,9 @@ func (controller *TemplateController) StateTemplate() {
87 if err := controller.Unmarshal(in); err != nil { 101 if err := controller.Unmarshal(in); err != nil {
88 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 102 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
89 } else { 103 } else {
  104 + ua := middlewares.GetUser(controller.Ctx)
  105 + in.CompanyId = ua.CompanyId
  106 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
90 controller.Response(ruService.State(in)) 107 controller.Response(ruService.State(in))
91 } 108 }
92 } 109 }
@@ -97,6 +114,11 @@ func (controller *TemplateController) CopyTemplate() { @@ -97,6 +114,11 @@ func (controller *TemplateController) CopyTemplate() {
97 if err := controller.Unmarshal(in); err != nil { 114 if err := controller.Unmarshal(in); err != nil {
98 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 115 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
99 } else { 116 } else {
  117 + ua := middlewares.GetUser(controller.Ctx)
  118 + in.CompanyId = ua.CompanyId
  119 + in.CreatorId = ua.UserId
  120 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  121 + //in.CreatorId = middlewares.GetUserId(controller.Ctx)
100 controller.Response(ruService.Copy(in)) 122 controller.Response(ruService.Copy(in))
101 } 123 }
102 } 124 }
1 -package controllers  
2 -  
3 -import (  
4 - "github.com/beego/beego/v2/server/web"  
5 - "github.com/beego/beego/v2/server/web/context"  
6 -)  
7 -  
8 -type HelloController struct {  
9 - web.Controller  
10 -}  
11 -  
12 -func (c *HelloController) Say() {  
13 - c.JSONResp(map[string]string{  
14 - "msg": "hello",  
15 - })  
16 -}  
17 -  
18 -func SayHello(c *context.Context) {  
19 - c.JSONResp(map[string]string{  
20 - "msg": "hello",  
21 - })  
22 -}  
@@ -12,35 +12,48 @@ type RoleController struct { @@ -12,35 +12,48 @@ type RoleController struct {
12 beego.BaseController 12 beego.BaseController
13 } 13 }
14 14
15 -func (controller *RoleController) CreateRole() {  
16 - ruService := service.NewRoleService()  
17 - in := &command.CreateRoleCommand{}  
18 - if err := controller.Unmarshal(in); err != nil {  
19 - controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))  
20 - } else {  
21 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx)  
22 - controller.Response(ruService.Create(in))  
23 - }  
24 -}  
25 -  
26 -func (controller *RoleController) UpdateRole() {  
27 - ruService := service.NewRoleService()  
28 - in := &command.UpdateRoleCommand{}  
29 - if err := controller.Unmarshal(in); err != nil {  
30 - controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))  
31 - } else {  
32 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx)  
33 - controller.Response(ruService.Update(in))  
34 - }  
35 -} 15 +//func (controller *RoleController) CreateRole() {
  16 +// ruService := service.NewRoleService()
  17 +// in := &command.CreateRoleCommand{}
  18 +// if err := controller.Unmarshal(in); err != nil {
  19 +// controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
  20 +// } else {
  21 +// in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  22 +// controller.Response(ruService.Create(in))
  23 +// }
  24 +//}
  25 +//
  26 +//func (controller *RoleController) UpdateRole() {
  27 +// ruService := service.NewRoleService()
  28 +// in := &command.UpdateRoleCommand{}
  29 +// if err := controller.Unmarshal(in); err != nil {
  30 +// controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
  31 +// } else {
  32 +// in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  33 +// controller.Response(ruService.Update(in))
  34 +// }
  35 +//}
  36 +//
  37 +//func (controller *RoleController) RemoveRole() {
  38 +// ruService := service.NewRoleService()
  39 +// in := &command.DeleteRoleCommand{}
  40 +// if err := controller.Unmarshal(in); err != nil {
  41 +// controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
  42 +// } else {
  43 +// in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  44 +// controller.Response(ruService.Remove(in))
  45 +// }
  46 +//}
36 47
37 -func (controller *RoleController) RemoveRole() { 48 +func (controller *RoleController) ListForUserRole() {
38 ruService := service.NewRoleService() 49 ruService := service.NewRoleService()
39 - in := &command.DeleteRoleCommand{} 50 + in := &command.QueryRoleUserCommand{}
40 if err := controller.Unmarshal(in); err != nil { 51 if err := controller.Unmarshal(in); err != nil {
41 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 52 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
42 } else { 53 } else {
43 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx)  
44 - controller.Response(ruService.Remove(in)) 54 + ua := middlewares.GetUser(controller.Ctx)
  55 + in.CompanyId = ua.CompanyId
  56 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  57 + controller.Response(ruService.ListForUser(in))
45 } 58 }
46 } 59 }
@@ -18,7 +18,9 @@ func (controller *RoleUserController) CreateRoleUser() { @@ -18,7 +18,9 @@ func (controller *RoleUserController) CreateRoleUser() {
18 if err := controller.Unmarshal(in); err != nil { 18 if err := controller.Unmarshal(in); err != nil {
19 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 19 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
20 } else { 20 } else {
21 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx) 21 + ua := middlewares.GetUser(controller.Ctx)
  22 + in.CompanyId = ua.CompanyId
  23 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
22 controller.Response(ruService.Create(in)) 24 controller.Response(ruService.Create(in))
23 } 25 }
24 } 26 }
@@ -29,7 +31,22 @@ func (controller *RoleUserController) RemoveRoleUser() { @@ -29,7 +31,22 @@ func (controller *RoleUserController) RemoveRoleUser() {
29 if err := controller.Unmarshal(in); err != nil { 31 if err := controller.Unmarshal(in); err != nil {
30 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error())) 32 controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
31 } else { 33 } else {
32 - in.CompanyId = middlewares.GetCompanyId(controller.Ctx) 34 + ua := middlewares.GetUser(controller.Ctx)
  35 + in.CompanyId = ua.CompanyId
  36 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
33 controller.Response(ruService.Remove(in)) 37 controller.Response(ruService.Remove(in))
34 } 38 }
35 } 39 }
  40 +
  41 +func (controller *RoleUserController) ListRoleUser() {
  42 + ruService := service.NewRoleUserService()
  43 + in := &command.UserRoleQueryCommand{}
  44 + if err := controller.Unmarshal(in); err != nil {
  45 + controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
  46 + } else {
  47 + ua := middlewares.GetUser(controller.Ctx)
  48 + in.CompanyId = ua.CompanyId
  49 + //in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  50 + controller.Response(ruService.ListRole(in))
  51 + }
  52 +}
  1 +package controllers
  2 +
  3 +import (
  4 + "github.com/linmadan/egglib-go/core/application"
  5 + "github.com/linmadan/egglib-go/web/beego"
  6 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/command"
  7 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/query"
  8 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/service"
  9 +)
  10 +
  11 +type StaffAssessController struct {
  12 + beego.BaseController
  13 +}
  14 +
  15 +// 获取我的绩效任务列表
  16 +func (c *StaffAssessController) SearchAssessTaskMe() {
  17 + srv := service.NewStaffAssessServeice()
  18 + paramReq := &query.SearchAssessMeQuery{}
  19 + err := c.BindJSON(paramReq)
  20 + if err != nil {
  21 + e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
  22 + c.Response(nil, e)
  23 + return
  24 + }
  25 + //TODO 获取当前用户信息
  26 + paramReq.CompanyId = 1
  27 + paramReq.UserId = 1
  28 + data, err := srv.SearchAssessTaskMe(paramReq)
  29 + c.Response(data, err)
  30 +}
  31 +
  32 +// 获取我的绩效任务各环节完成情况
  33 +func (c *StaffAssessController) AssessTaskMeDesc() {
  34 + srv := service.NewStaffAssessServeice()
  35 + paramReq := &query.AssessTaskDescQuery{}
  36 + err := c.BindJSON(paramReq)
  37 + if err != nil {
  38 + e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
  39 + c.Response(nil, e)
  40 + return
  41 + }
  42 + //TODO 获取当前用户信息
  43 + paramReq.CompanyId = 1
  44 + paramReq.UserId = 1
  45 + data, err := srv.AssessTaskDesc(paramReq)
  46 + c.Response(data, err)
  47 +}
  48 +
  49 +// 获取个人的自评反馈历史记录列表
  50 +func (c *StaffAssessController) AssessSelfMeList() {
  51 + srv := service.NewStaffAssessServeice()
  52 + paramReq := &query.AssessSelfListQuery{}
  53 + err := c.BindJSON(paramReq)
  54 + if err != nil {
  55 + e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
  56 + c.Response(nil, e)
  57 + return
  58 + }
  59 + //TODO 获取当前用户信息
  60 + paramReq.CompanyId = 1
  61 + paramReq.UserId = 1
  62 + data, err := srv.AssessSelfList(paramReq)
  63 + c.Response(data, err)
  64 +}
  65 +
  66 +// 更具项目评估的配置,创建员工的评估任务,(调试用)
  67 +func (c *StaffAssessController) CreateStaffAssessTask() {
  68 + srv := service.NewStaffAssessServeice()
  69 + paramReq := &command.CreateStaffAssessTask{}
  70 + err := c.BindJSON(paramReq)
  71 + if err != nil {
  72 + e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
  73 + c.Response(nil, e)
  74 + return
  75 + }
  76 + //服务调用,实际由定时任务触发
  77 + data, err := srv.CreateStaffAssessTask(paramReq)
  78 + c.Response(data, err)
  79 +}
  80 +
  81 +//获取员工自评详情
  82 +
  83 +//保存员工自评填写内容
  84 +
  85 +//获取员工邀请的人
  86 +
  87 +//保持员工邀请的人
@@ -6,6 +6,14 @@ import ( @@ -6,6 +6,14 @@ import (
6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" 6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
7 ) 7 )
8 8
  9 +func GetUser(ctx *context.Context) *domain.UserAuth {
  10 + user := ctx.Input.GetData(domain.UserAuth{})
  11 + if user != nil {
  12 + return user.(*domain.UserAuth)
  13 + }
  14 + return nil
  15 +}
  16 +
9 func CheckAdminToken() func(ctx *context.Context) { 17 func CheckAdminToken() func(ctx *context.Context) {
10 return func(ctx *context.Context) { 18 return func(ctx *context.Context) {
11 adminToken := ctx.Input.Header("x-admin-token") 19 adminToken := ctx.Input.Header("x-admin-token")
1 package middlewares 1 package middlewares
2 2
3 -import (  
4 - "github.com/beego/beego/v2/server/web/context"  
5 -)  
6 -  
7 -func setUserId(userId int64, ctx *context.Context) {  
8 - ctx.Input.SetData("_UserId", userId)  
9 -}  
10 -  
11 -func GetUserId(ctx *context.Context) int64 {  
12 - userId := ctx.Input.GetData("_UserId")  
13 - return userId.(int64)  
14 -}  
15 -  
16 -func setCompanyId(companyId int64, ctx *context.Context) {  
17 - ctx.Input.SetData("_CompanyId", companyId)  
18 -}  
19 -  
20 -func GetCompanyId(ctx *context.Context) int64 {  
21 - companyId := ctx.Input.GetData("_CompanyId")  
22 - return companyId.(int64)  
23 -}  
24 -  
25 -func setCompanyType(companyId int, ctx *context.Context) {  
26 - ctx.Input.SetData("_CompanyType", companyId)  
27 -}  
28 -  
29 -func GetCompanyType(ctx *context.Context) int {  
30 - companyId := ctx.Input.GetData("_CompanyType")  
31 - return companyId.(int)  
32 -}  
33 -  
34 -func invalidOrExpired(ctx *context.Context) {  
35 - resp := map[string]interface{}{  
36 - "code": 902,  
37 - "msg": "Authorization过期或无效,需要进行重新获取令牌",  
38 - }  
39 - _ = ctx.Output.JSON(resp, false, false)  
40 -}  
41 -  
42 -func CheckToken() func(ctx *context.Context) {  
43 - return func(ctx *context.Context) {  
44 - tokenStr := ctx.Input.Header("x-mmm-accesstoken")  
45 - if tokenStr == "" { //没有带token  
46 - invalidOrExpired(ctx)  
47 - return  
48 - }  
49 -  
50 - //userServe := service.UserService{}  
51 - //userTk, err := userServe.ValidLoginToken(tokenStr)  
52 - //if err != nil {  
53 - // invalidOrExpired(ctx)  
54 - // return  
55 - //}  
56 - //setUserId(userTk.UserId, ctx)  
57 - //setCompanyId(userTk.CompanyId, ctx)  
58 - //setCompanyType(userTk.CompanyType, ctx)  
59 - }  
60 -} 3 +//
  4 +//import (
  5 +// "github.com/beego/beego/v2/server/web/context"
  6 +//)
  7 +//
  8 +//func setUserId(userId int64, ctx *context.Context) {
  9 +// ctx.Input.SetData("_UserId", userId)
  10 +//}
  11 +//
  12 +//func GetUserId(ctx *context.Context) int64 {
  13 +// userId := ctx.Input.GetData("_UserId")
  14 +// return userId.(int64)
  15 +//}
  16 +//
  17 +//func setCompanyId(companyId int64, ctx *context.Context) {
  18 +// ctx.Input.SetData("_CompanyId", companyId)
  19 +//}
  20 +//
  21 +//func GetCompanyId(ctx *context.Context) int64 {
  22 +// companyId := ctx.Input.GetData("_CompanyId")
  23 +// return companyId.(int64)
  24 +//}
  25 +//
  26 +//func setCompanyType(companyId int, ctx *context.Context) {
  27 +// ctx.Input.SetData("_CompanyType", companyId)
  28 +//}
  29 +//
  30 +//func GetCompanyType(ctx *context.Context) int {
  31 +// companyId := ctx.Input.GetData("_CompanyType")
  32 +// return companyId.(int)
  33 +//}
  34 +//
  35 +//func invalidOrExpired(ctx *context.Context) {
  36 +// resp := map[string]interface{}{
  37 +// "code": 902,
  38 +// "msg": "Authorization过期或无效,需要进行重新获取令牌",
  39 +// }
  40 +// _ = ctx.Output.JSON(resp, false, false)
  41 +//}
  42 +//
  43 +//func CheckToken() func(ctx *context.Context) {
  44 +// return func(ctx *context.Context) {
  45 +// tokenStr := ctx.Input.Header("x-mmm-accesstoken")
  46 +// if tokenStr == "" { //没有带token
  47 +// invalidOrExpired(ctx)
  48 +// return
  49 +// }
  50 +//
  51 +// //userServe := service.UserService{}
  52 +// //userTk, err := userServe.ValidLoginToken(tokenStr)
  53 +// //if err != nil {
  54 +// // invalidOrExpired(ctx)
  55 +// // return
  56 +// //}
  57 +// //setUserId(userTk.UserId, ctx)
  58 +// //setCompanyId(userTk.CompanyId, ctx)
  59 +// //setCompanyType(userTk.CompanyType, ctx)
  60 +// }
  61 +//}
  1 +package routers
  2 +
  3 +import (
  4 + "github.com/beego/beego/v2/server/web"
  5 + "github.com/linmadan/egglib-go/web/beego/filters"
  6 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/controllers"
  7 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/middlewares"
  8 +)
  9 +
  10 +func init() {
  11 + ns := web.NewNamespace("/v1/evaluation-cycle",
  12 + web.NSBefore(filters.AllowCors(), middlewares.CheckAdminToken()),
  13 + web.NSRouter("/", &controllers.CycleController{}, "Post:CreateCycle"),
  14 + web.NSRouter("/", &controllers.CycleController{}, "Put:UpdateCycle"),
  15 + web.NSRouter("/", &controllers.CycleController{}, "Delete:RemoveCycle"),
  16 + web.NSRouter("/:Id", &controllers.CycleController{}, "Get:GetCycle"),
  17 + web.NSRouter("/list", &controllers.CycleController{}, "Post:ListCycle"),
  18 + web.NSRouter("/statistic", &controllers.CycleController{}, "Post:StatisticCycleUser"),
  19 + )
  20 + web.AddNamespace(ns)
  21 +}
  1 +package routers
  2 +
  3 +import (
  4 + "github.com/beego/beego/v2/server/web"
  5 + "github.com/linmadan/egglib-go/web/beego/filters"
  6 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/controllers"
  7 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/middlewares"
  8 +)
  9 +
  10 +func init() {
  11 + ns := web.NewNamespace("/v1/evaluation-project",
  12 + web.NSBefore(filters.AllowCors(), middlewares.CheckAdminToken()),
  13 + web.NSRouter("/", &controllers.ProjectController{}, "Post:CreateProject"),
  14 + web.NSRouter("/", &controllers.ProjectController{}, "Put:UpdateProject"),
  15 + web.NSRouter("/", &controllers.ProjectController{}, "Delete:RemoveProject"),
  16 + web.NSRouter("/:Id", &controllers.ProjectController{}, "Get:GetProject"),
  17 + web.NSRouter("/list", &controllers.ProjectController{}, "Post:ListProject"),
  18 + web.NSRouter("/detail", &controllers.ProjectController{}, "Put:UpdateProjectForTemplate"),
  19 + web.NSRouter("/check-recipients", &controllers.ProjectController{}, "Post:CheckRecipients"),
  20 + web.NSRouter("/copy", &controllers.ProjectController{}, "Post:CopyProject"),
  21 + web.NSRouter("/activate", &controllers.ProjectController{}, "Post:ActivateProject"),
  22 + )
  23 + web.AddNamespace(ns)
  24 +}
  1 +package routers
  2 +
  3 +import (
  4 + "github.com/beego/beego/v2/server/web"
  5 + "github.com/linmadan/egglib-go/web/beego/filters"
  6 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/controllers"
  7 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/middlewares"
  8 +)
  9 +
  10 +func init() {
  11 + ns := web.NewNamespace("/v1/evaluation-rule",
  12 + web.NSBefore(filters.AllowCors(), middlewares.CheckAdminToken()),
  13 + web.NSRouter("/", &controllers.RuleController{}, "Post:CreateRule"),
  14 + web.NSRouter("/", &controllers.RuleController{}, "Put:UpdateRule"),
  15 + web.NSRouter("/", &controllers.RuleController{}, "Delete:RemoveRule"),
  16 + web.NSRouter("/:Id", &controllers.RuleController{}, "Get:GetRule"),
  17 + web.NSRouter("/list", &controllers.RuleController{}, "Post:ListRuleRelCreator"),
  18 + )
  19 + web.AddNamespace(ns)
  20 +}
  1 +package routers
  2 +
  3 +import (
  4 + "github.com/beego/beego/v2/server/web"
  5 + "github.com/linmadan/egglib-go/web/beego/filters"
  6 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/controllers"
  7 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/middlewares"
  8 +)
  9 +
  10 +func init() {
  11 + ns := web.NewNamespace("/v1/evaluation-template",
  12 + web.NSBefore(filters.AllowCors(), middlewares.CheckAdminToken()),
  13 + web.NSRouter("/", &controllers.TemplateController{}, "Post:CreateTemplate"),
  14 + web.NSRouter("/", &controllers.TemplateController{}, "Put:UpdateTemplate"),
  15 + web.NSRouter("/", &controllers.TemplateController{}, "Delete:RemoveTemplate"),
  16 + web.NSRouter("/:Id", &controllers.TemplateController{}, "Get:GetTemplate"),
  17 + web.NSRouter("/list", &controllers.TemplateController{}, "Post:ListTemplate"),
  18 + web.NSRouter("/list-enable", &controllers.TemplateController{}, "Post:ListEnableTemplate"),
  19 + )
  20 + web.AddNamespace(ns)
  21 +}
  1 +package routers
  2 +
  3 +import (
  4 + "github.com/beego/beego/v2/server/web"
  5 + "github.com/linmadan/egglib-go/web/beego/filters"
  6 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/controllers"
  7 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/middlewares"
  8 +)
  9 +
  10 +func init() {
  11 + ns := web.NewNamespace("/v1/role",
  12 + web.NSBefore(filters.AllowCors(), middlewares.CheckAdminToken()),
  13 + //web.NSRouter("/", &controllers.RoleController{}, "Post:CreateRole"),
  14 + //web.NSRouter("/", &controllers.RoleController{}, "Put:UpdateRole"),
  15 + //web.NSRouter("/", &controllers.RoleController{}, "Delete:RemoveRole"),
  16 + //web.NSRouter("/:Id", &controllers.RoleController{}, "Get:GetRole"),
  17 + web.NSRouter("/all", &controllers.RoleController{}, "Post:ListForUserRole"),
  18 + )
  19 + web.AddNamespace(ns)
  20 +}
@@ -2,14 +2,17 @@ package routers @@ -2,14 +2,17 @@ package routers
2 2
3 import ( 3 import (
4 "github.com/beego/beego/v2/server/web" 4 "github.com/beego/beego/v2/server/web"
  5 + "github.com/linmadan/egglib-go/web/beego/filters"
5 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/controllers" 6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/controllers"
  7 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/middlewares"
6 ) 8 )
7 9
8 func init() { 10 func init() {
9 - h1 := web.NewNamespace("/v1/demo",  
10 - web.NSCtrlGet("/hello", (*controllers.HelloController).Say),  
11 - web.NSCtrlGet("/hello2", (*controllers.HelloController).Say),  
12 - // web.NSGet("/hello1", controllers.SayHello), 11 + ns := web.NewNamespace("/v1/role-user",
  12 + web.NSBefore(filters.AllowCors(), middlewares.CheckAdminToken()),
  13 + web.NSRouter("/", &controllers.RoleUserController{}, "Post:CreateRoleUser"),
  14 + web.NSRouter("/", &controllers.RoleUserController{}, "Delete:RemoveRoleUser"),
  15 + web.NSRouter("/all", &controllers.RoleUserController{}, "Post:ListRoleUser"),
13 ) 16 )
14 - web.AddNamespace(h1) 17 + web.AddNamespace(ns)
15 } 18 }
  1 +package routers
  2 +
  3 +import (
  4 + "github.com/beego/beego/v2/server/web"
  5 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/controllers"
  6 +)
  7 +
  8 +func init() {
  9 + assessTaskNS := web.NewNamespace("/v1/staff-assess-task",
  10 + // web.NSBefore(filters.AllowCors(), middlewares.CheckToken()),
  11 + web.NSCtrlPost("/search/me", (*controllers.StaffAssessController).SearchAssessTaskMe), //获取我参与过的评估项目列表
  12 + web.NSCtrlPost("/desc/me", (*controllers.StaffAssessController).AssessTaskMeDesc), //获取我的项目评估进度描述
  13 + web.NSCtrlPost("/", (*controllers.StaffAssessController).CreateStaffAssessTask), //创建员工的评估任务
  14 + )
  15 + // /v1/staff-assess/self/me/list
  16 + assessNS := web.NewNamespace("/v1/staff-assess",
  17 + // web.NSBefore(filters.AllowCors(), middlewares.CheckToken()),
  18 + web.NSCtrlPost("/self/me/list", (*controllers.StaffAssessController).AssessSelfMeList), //获取我的自评反馈列表
  19 + // web.NSCtrlPost("/self/me/info", (*controllers.StaffAssessController).AssessSelfMeList),
  20 + )
  21 + web.AddNamespace(assessTaskNS)
  22 + web.AddNamespace(assessNS)
  23 +}