作者 郑周

周期统计项目 人员和部门数量

@@ -7,7 +7,6 @@ import ( @@ -7,7 +7,6 @@ import (
7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_cycle/command" 7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_cycle/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 - "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/utils"  
11 "strconv" 10 "strconv"
12 ) 11 )
13 12
@@ -174,14 +173,13 @@ func (rs *EvaluationCycleService) Update(in *command.UpdateCycleCommand) (interf @@ -174,14 +173,13 @@ func (rs *EvaluationCycleService) Update(in *command.UpdateCycleCommand) (interf
174 } 173 }
175 174
176 func (rs *EvaluationCycleService) Get(in *command.GetCycleCommand) (interface{}, error) { 175 func (rs *EvaluationCycleService) Get(in *command.GetCycleCommand) (interface{}, error) {
177 - // Get 不需要事务  
178 - if err := utils.ValidateCommand(in); err != nil {  
179 - return nil, application.ThrowError(application.ARG_ERROR, err.Error())  
180 - }  
181 - transactionContext, err := factory.CreateTransactionContext(nil) 176 + transactionContext, err := factory.ValidateStartTransaction(in)
182 if err != nil { 177 if err != nil {
183 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 178 + return nil, err
184 } 179 }
  180 + defer func() {
  181 + transactionContext.RollbackTransaction()
  182 + }()
185 cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext}) 183 cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext})
186 cycleTemplateRepository := factory.CreateEvaluationCycleTemplateRepository(map[string]interface{}{"transactionContext": transactionContext}) 184 cycleTemplateRepository := factory.CreateEvaluationCycleTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})
187 185
@@ -204,6 +202,10 @@ func (rs *EvaluationCycleService) Get(in *command.GetCycleCommand) (interface{}, @@ -204,6 +202,10 @@ func (rs *EvaluationCycleService) Get(in *command.GetCycleCommand) (interface{},
204 CreatedAt: cycleTemplates[i].CreatedAt, 202 CreatedAt: cycleTemplates[i].CreatedAt,
205 }) 203 })
206 } 204 }
  205 +
  206 + if err := transactionContext.CommitTransaction(); err != nil {
  207 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  208 + }
207 return ctAdapter, nil 209 return ctAdapter, nil
208 } 210 }
209 211
@@ -247,12 +249,8 @@ func (rs *EvaluationCycleService) List(in *command.QueryCycleCommand) (interface @@ -247,12 +249,8 @@ func (rs *EvaluationCycleService) List(in *command.QueryCycleCommand) (interface
247 transactionContext.RollbackTransaction() 249 transactionContext.RollbackTransaction()
248 }() 250 }()
249 cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext}) 251 cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext})
250 - inMap := tool_funs.SimpleStructToMap(in)  
251 - if len(in.Name) > 0 {  
252 - inMap["name"] = "%" + in.Name + "%"  
253 - }  
254 // FIXME 总数量是否使用Count获取一个总数量 252 // FIXME 总数量是否使用Count获取一个总数量
255 - count, cycles, err := cycleRepository.Find(inMap) 253 + count, cycles, err := cycleRepository.Find(tool_funs.SimpleStructToMap(in))
256 if err != nil { 254 if err != nil {
257 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 255 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
258 } 256 }
@@ -17,3 +17,12 @@ func (in *QueryProjectCommand) Valid(validation *validation.Validation) { @@ -17,3 +17,12 @@ func (in *QueryProjectCommand) Valid(validation *validation.Validation) {
17 return 17 return
18 } 18 }
19 } 19 }
  20 +
  21 +type StatisticCycleProjectUserCommand struct {
  22 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  23 + CycleId int64 `cname:"周期ID" json:"cycleId,string"`
  24 +}
  25 +
  26 +func (in *StatisticCycleProjectUserCommand) Valid(*validation.Validation) {
  27 +
  28 +}
@@ -42,7 +42,7 @@ func (in *UpdateProjectCommand) Valid(validation *validation.Validation) { @@ -42,7 +42,7 @@ func (in *UpdateProjectCommand) Valid(validation *validation.Validation) {
42 42
43 func (in *UpdateProjectTemplateCommand) Valid(validation *validation.Validation) { 43 func (in *UpdateProjectTemplateCommand) Valid(validation *validation.Validation) {
44 if len(in.Recipients) == 0 { 44 if len(in.Recipients) == 0 {
45 - validation.SetError("recipients", "请选择被评估人") 45 + validation.SetError("recipients", "请添加被评估人")
46 return 46 return
47 } 47 }
48 } 48 }
@@ -7,7 +7,6 @@ import ( @@ -7,7 +7,6 @@ import (
7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_project/command" 7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_project/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 - "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/utils"  
11 "strconv" 10 "strconv"
12 ) 11 )
13 12
@@ -172,16 +171,14 @@ func (rs *EvaluationProjectService) UpdateTemplateNode(in *command.UpdateProject @@ -172,16 +171,14 @@ func (rs *EvaluationProjectService) UpdateTemplateNode(in *command.UpdateProject
172 } 171 }
173 172
174 func (rs *EvaluationProjectService) Get(in *command.GetProjectCommand) (interface{}, error) { 173 func (rs *EvaluationProjectService) Get(in *command.GetProjectCommand) (interface{}, error) {
175 - // Get 不需要事务  
176 - if err := utils.ValidateCommand(in); err != nil {  
177 - return nil, application.ThrowError(application.ARG_ERROR, err.Error())  
178 - }  
179 - transactionContext, err := factory.CreateTransactionContext(nil) 174 + transactionContext, err := factory.ValidateStartTransaction(in)
180 if err != nil { 175 if err != nil {
181 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 176 + return nil, err
182 } 177 }
  178 + defer func() {
  179 + transactionContext.RollbackTransaction()
  180 + }()
183 projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext}) 181 projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext})
184 -  
185 project, err := projectRepository.FindOne(map[string]interface{}{"id": in.Id}) 182 project, err := projectRepository.FindOne(map[string]interface{}{"id": in.Id})
186 if err != nil { 183 if err != nil {
187 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 184 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
@@ -201,6 +198,9 @@ func (rs *EvaluationProjectService) Get(in *command.GetProjectCommand) (interfac @@ -201,6 +198,9 @@ func (rs *EvaluationProjectService) Get(in *command.GetProjectCommand) (interfac
201 projectAdapter.TransformRecipientAdapter(users) 198 projectAdapter.TransformRecipientAdapter(users)
202 } 199 }
203 200
  201 + if err := transactionContext.CommitTransaction(); err != nil {
  202 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  203 + }
204 return projectAdapter, nil 204 return projectAdapter, nil
205 } 205 }
206 206
@@ -317,3 +317,52 @@ func (rs *EvaluationProjectService) Copy(in *command.CopyProjectCommand) (interf @@ -317,3 +317,52 @@ func (rs *EvaluationProjectService) Copy(in *command.CopyProjectCommand) (interf
317 } 317 }
318 return project, nil 318 return project, nil
319 } 319 }
  320 +
  321 +func (rs *EvaluationProjectService) StatisticCycleUser(in *command.StatisticCycleProjectUserCommand) (interface{}, error) {
  322 + transactionContext, err := factory.ValidateStartTransaction(in)
  323 + if err != nil {
  324 + return nil, err
  325 + }
  326 + defer func() {
  327 + transactionContext.RollbackTransaction()
  328 + }()
  329 + projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext})
  330 + _, projects, err := projectRepository.Find(tool_funs.SimpleStructToMap(in), "linkNodes")
  331 + if err != nil {
  332 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  333 + }
  334 +
  335 + userIds := make([]int64, 0)
  336 + userIdMap := map[int64]int64{}
  337 + for i := range projects {
  338 + project := projects[i]
  339 + for j := range project.Recipients {
  340 + userId, _ := strconv.ParseInt(project.Recipients[j], 10, 64)
  341 + userIdMap[userId] = userId
  342 + }
  343 + }
  344 + for _, v := range userIdMap {
  345 + userIds = append(userIds, v)
  346 + }
  347 +
  348 + userTotal := 0
  349 + departmentTotal := 0
  350 + if len(userIds) > 0 {
  351 + userRepository := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext})
  352 + _, users, _ := userRepository.Find(map[string]interface{}{"ids": userIds, "limit": len(userIds)})
  353 + departmentIdMap := map[int]int{}
  354 + for i := range users {
  355 + user := users[i]
  356 + for _, v := range user.DepartmentId {
  357 + departmentIdMap[v] = v
  358 + }
  359 + }
  360 + userTotal = len(users)
  361 + departmentTotal = len(departmentIdMap)
  362 + }
  363 +
  364 + if err := transactionContext.CommitTransaction(); err != nil {
  365 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  366 + }
  367 + return map[string]interface{}{"userTotal": userTotal, "departmentTotal": departmentTotal}, nil
  368 +}
@@ -7,7 +7,6 @@ import ( @@ -7,7 +7,6 @@ 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 - "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/utils"  
11 ) 10 )
12 11
13 type EvaluationRuleService struct { 12 type EvaluationRuleService struct {
@@ -100,19 +99,22 @@ func (rs *EvaluationRuleService) Update(in *command.UpdateRuleCommand) (interfac @@ -100,19 +99,22 @@ func (rs *EvaluationRuleService) Update(in *command.UpdateRuleCommand) (interfac
100 } 99 }
101 100
102 func (rs *EvaluationRuleService) Get(in *command.GetRuleCommand) (interface{}, error) { 101 func (rs *EvaluationRuleService) Get(in *command.GetRuleCommand) (interface{}, error) {
103 - // Get 不需要事务  
104 - if err := utils.ValidateCommand(in); err != nil {  
105 - return nil, application.ThrowError(application.ARG_ERROR, err.Error())  
106 - }  
107 - transactionContext, err := factory.CreateTransactionContext(nil) 102 + transactionContext, err := factory.ValidateStartTransaction(in)
108 if err != nil { 103 if err != nil {
109 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 104 + return nil, err
110 } 105 }
  106 + defer func() {
  107 + transactionContext.RollbackTransaction()
  108 + }()
111 ruleRepository := factory.CreateEvaluationRuleRepository(map[string]interface{}{"transactionContext": transactionContext}) 109 ruleRepository := factory.CreateEvaluationRuleRepository(map[string]interface{}{"transactionContext": transactionContext})
112 rule, err := ruleRepository.FindOne(map[string]interface{}{"id": in.Id}) 110 rule, err := ruleRepository.FindOne(map[string]interface{}{"id": in.Id})
113 if err != nil { 111 if err != nil {
114 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 112 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
115 } 113 }
  114 +
  115 + if err := transactionContext.CommitTransaction(); err != nil {
  116 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  117 + }
116 return rule, nil 118 return rule, nil
117 } 119 }
118 120
@@ -6,7 +6,6 @@ import ( @@ -6,7 +6,6 @@ import (
6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_template/command" 6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_template/command"
7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" 7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
8 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" 8 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
9 - "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/utils"  
10 ) 9 )
11 10
12 type EvaluationTemplateService struct { 11 type EvaluationTemplateService struct {
@@ -124,19 +123,22 @@ func (rs *EvaluationTemplateService) Update(in *command.UpdateTemplateCommand) ( @@ -124,19 +123,22 @@ func (rs *EvaluationTemplateService) Update(in *command.UpdateTemplateCommand) (
124 } 123 }
125 124
126 func (rs *EvaluationTemplateService) Get(in *command.GetTemplateCommand) (interface{}, error) { 125 func (rs *EvaluationTemplateService) Get(in *command.GetTemplateCommand) (interface{}, error) {
127 - // Get 不需要事务  
128 - if err := utils.ValidateCommand(in); err != nil {  
129 - return nil, application.ThrowError(application.ARG_ERROR, err.Error())  
130 - }  
131 - transactionContext, err := factory.CreateTransactionContext(nil) 126 + transactionContext, err := factory.ValidateStartTransaction(in)
132 if err != nil { 127 if err != nil {
133 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 128 + return nil, err
134 } 129 }
  130 + defer func() {
  131 + transactionContext.RollbackTransaction()
  132 + }()
135 templateRepository := factory.CreateEvaluationTemplateRepository(map[string]interface{}{"transactionContext": transactionContext}) 133 templateRepository := factory.CreateEvaluationTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})
136 template, err := templateRepository.FindOne(map[string]interface{}{"id": in.Id}) 134 template, err := templateRepository.FindOne(map[string]interface{}{"id": in.Id})
137 if err != nil { 135 if err != nil {
138 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 136 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
139 } 137 }
  138 +
  139 + if err := transactionContext.CommitTransaction(); err != nil {
  140 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  141 + }
140 return template, nil 142 return template, nil
141 } 143 }
142 144
@@ -112,3 +112,14 @@ func (controller *ProjectController) CopyProject() { @@ -112,3 +112,14 @@ func (controller *ProjectController) CopyProject() {
112 controller.Response(ruService.Copy(in)) 112 controller.Response(ruService.Copy(in))
113 } 113 }
114 } 114 }
  115 +
  116 +func (controller *ProjectController) StatisticCycleUser() {
  117 + ruService := service.NewEvaluationProjectService()
  118 + in := &command.StatisticCycleProjectUserCommand{}
  119 + if err := controller.Unmarshal(in); err != nil {
  120 + controller.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
  121 + } else {
  122 + in.CompanyId = middlewares.GetCompanyId(controller.Ctx)
  123 + controller.Response(ruService.StatisticCycleUser(in))
  124 + }
  125 +}