作者 tangxvhui

暂存

@@ -160,3 +160,11 @@ func CreateStaffAssessTaskRepository(options map[string]interface{}) domain.Staf @@ -160,3 +160,11 @@ func CreateStaffAssessTaskRepository(options map[string]interface{}) domain.Staf
160 } 160 }
161 return repository.NewStaffAssessTaskRepository(transactionContext) 161 return repository.NewStaffAssessTaskRepository(transactionContext)
162 } 162 }
  163 +
  164 +func CreateStaffAssessContentTempRepository(options map[string]interface{}) domain.StaffAssessContentTempRepository {
  165 + var transactionContext *pg.TransactionContext
  166 + if value, ok := options["transactionContext"]; ok {
  167 + transactionContext = value.(*pg.TransactionContext)
  168 + }
  169 + return repository.NewStaffAssessContentTempRepository(transactionContext)
  170 +}
1 package service 1 package service
2 2
3 import ( 3 import (
  4 + "time"
  5 +
4 "github.com/linmadan/egglib-go/core/application" 6 "github.com/linmadan/egglib-go/core/application"
5 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" 7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/adapter" 8 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/adapter"
7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/command" 9 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/command"
  10 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
8 ) 11 )
9 12
10 //调试用,手动调用CreateStaffAssessTask 13 //调试用,手动调用CreateStaffAssessTask
@@ -31,9 +34,72 @@ func (srv StaffAssessServeice) InvokCreateStaffAssessTask(param *command.CreateS @@ -31,9 +34,72 @@ func (srv StaffAssessServeice) InvokCreateStaffAssessTask(param *command.CreateS
31 } 34 }
32 35
33 //保存员工绩效评估填写过程中即写即存的内容 36 //保存员工绩效评估填写过程中即写即存的内容
34 -func (srv StaffAssessServeice) SaveAssessContentTemp(param *command.SaveAssessInfoCommand) error { 37 +func (srv StaffAssessServeice) SaveAssessContentTemp(param *command.SaveAssessInfoCommand) (map[string]interface{}, error) {
  38 +
  39 + transactionContext, err := factory.CreateTransactionContext(nil)
  40 + if err != nil {
  41 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  42 + }
  43 + if err := transactionContext.StartTransaction(); err != nil {
  44 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  45 + }
  46 + defer func() {
  47 + _ = transactionContext.RollbackTransaction()
  48 + }()
  49 + //获取旧的临时数据内容
  50 + contentTempRepo := factory.CreateStaffAssessContentTempRepository(map[string]interface{}{
  51 + "transactionContext": transactionContext,
  52 + })
  53 + //获取评估填写的内容
  54 + // assessContentRepo := factory.CreateStaffAssessContentRepository(map[string]interface{}{
  55 + // "transactionContext": transactionContext,
  56 + // })
  57 + assessRepo := factory.CreateStaffAssessRepository(map[string]interface{}{
  58 + "transactionContext": transactionContext,
  59 + })
  60 + assessData, err := assessRepo.FindOne(map[string]interface{}{
  61 + "id": param.AssessId,
  62 + })
  63 + if err != nil {
  64 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取评估任务"+err.Error())
  65 + }
35 66
36 - return nil 67 + // staffAssessId
  68 + _, contentTempList, err := contentTempRepo.Find(map[string]interface{}{
  69 + "staffAssessId": param.AssessId,
  70 + })
  71 + if err != nil {
  72 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取临时保存的内容"+err.Error())
  73 + }
  74 + nowTime := time.Now()
  75 + if len(contentTempList) == 0 {
  76 + //获取评估模板
  77 + assessContentList, err := srv.getAssessSelfInfoUncompleted(transactionContext, assessData)
  78 + if err != nil {
  79 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取评估模板,"+err.Error())
  80 + }
  81 + //转填入临时的数据
  82 + for _, v := range assessContentList {
  83 + item := &domain.StaffAssessContentTemp{
  84 + Id: 0,
  85 + StaffAssessId: v.StaffAssessId,
  86 + SortBy: v.SortBy,
  87 + Category: v.Category,
  88 + Name: v.Name,
  89 + Remark: v.Remark,
  90 + Value: "",
  91 + CreatedAt: nowTime,
  92 + UpdatedAt: nowTime,
  93 + }
  94 + contentTempList = append(contentTempList, item)
  95 + }
  96 + }
  97 + //更新assessConten
  98 +
  99 + if err := transactionContext.CommitTransaction(); err != nil {
  100 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  101 + }
  102 + return nil, nil
37 } 103 }
38 104
39 //获取员工绩效评估填写内容 105 //获取员工绩效评估填写内容
@@ -13,7 +13,6 @@ type StaffAssessContentTemp struct { @@ -13,7 +13,6 @@ type StaffAssessContentTemp struct {
13 Value string `json:"value"` //评估填写的值 13 Value string `json:"value"` //评估填写的值
14 CreatedAt time.Time `json:"createdAt"` //数据创建时间 14 CreatedAt time.Time `json:"createdAt"` //数据创建时间
15 UpdatedAt time.Time `json:"updatedAt"` //数据更新时间 15 UpdatedAt time.Time `json:"updatedAt"` //数据更新时间
16 - DeletedAt *time.Time `json:"deletedAt"`  
17 } 16 }
18 17
19 type StaffAssessContentTempRepository interface { 18 type StaffAssessContentTempRepository interface {
@@ -8,20 +8,14 @@ import ( @@ -8,20 +8,14 @@ import (
8 8
9 // 填写的评估内容 9 // 填写的评估内容
10 type StaffAssessContentTemp struct { 10 type StaffAssessContentTemp struct {
11 - tableName struct{} `pg:"staff_assess_content_temp" comment:"填写的评估项"`  
12 - Id int `pg:",pk"` //id  
13 - StaffAssessId int //用户需要的评估项id  
14 - SortBy int //排序  
15 - Category string //类别  
16 - Name string //名称  
17 - PromptTitle string //问题标题  
18 - PromptText string //提示项正文  
19 - Value string //评估填写的值  
20 - ReteResult string //评估的结果  
21 - Rule domain.EvaluationRule  
22 - Remark []domain.AssessContemtRemark  
23 - Weight int //权重  
24 - CreatedAt time.Time //数据创建时间  
25 - UpdatedAt time.Time //数据更新时间  
26 - DeletedAt *time.Time 11 + tableName struct{} `pg:"staff_assess_content_temp" comment:"临时填写的评估项"`
  12 + Id int `pg:",pk"` //id
  13 + StaffAssessId int `json:"staffAssessId"` //用户需要的评估项id
  14 + SortBy int `json:"sortBy"` //排序
  15 + Category string `json:"category"` //类别
  16 + Name string `json:"name"` //名称
  17 + Remark []domain.AssessContemtRemark `json:"remark"` //填写的反馈
  18 + Value string `json:"value"` //评估填写的值
  19 + CreatedAt time.Time `json:"createdAt"` //数据创建时间
  20 + UpdatedAt time.Time `json:"updatedAt"` //数据更新时间
27 } 21 }
@@ -3,7 +3,6 @@ package repository @@ -3,7 +3,6 @@ package repository
3 import ( 3 import (
4 "errors" 4 "errors"
5 "fmt" 5 "fmt"
6 - "time"  
7 6
8 "github.com/go-pg/pg/v10" 7 "github.com/go-pg/pg/v10"
9 pgTransaction "github.com/linmadan/egglib-go/transaction/pg" 8 pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
@@ -15,49 +14,37 @@ type StaffAssessContentTempRepository struct { @@ -15,49 +14,37 @@ type StaffAssessContentTempRepository struct {
15 transactionContext *pgTransaction.TransactionContext 14 transactionContext *pgTransaction.TransactionContext
16 } 15 }
17 16
18 -// var _ domain.StaffAssessContentRepository = (*StaffAssessContentTempRepository)(nil) 17 +var _ domain.StaffAssessContentTempRepository = (*StaffAssessContentTempRepository)(nil)
19 18
20 func NewStaffAssessContentTempRepository(transactionContext *pgTransaction.TransactionContext) *StaffAssessContentTempRepository { 19 func NewStaffAssessContentTempRepository(transactionContext *pgTransaction.TransactionContext) *StaffAssessContentTempRepository {
21 return &StaffAssessContentTempRepository{transactionContext: transactionContext} 20 return &StaffAssessContentTempRepository{transactionContext: transactionContext}
22 } 21 }
23 22
24 -func (repo *StaffAssessContentTempRepository) TransformToDomain(d *models.StaffAssessContent) *domain.StaffAssessContent {  
25 - return &domain.StaffAssessContent{ 23 +func (repo *StaffAssessContentTempRepository) TransformToDomain(d *models.StaffAssessContentTemp) *domain.StaffAssessContentTemp {
  24 + return &domain.StaffAssessContentTemp{
26 Id: d.Id, 25 Id: d.Id,
27 StaffAssessId: d.StaffAssessId, 26 StaffAssessId: d.StaffAssessId,
28 SortBy: d.SortBy, 27 SortBy: d.SortBy,
29 Category: d.Category, 28 Category: d.Category,
30 Name: d.Name, 29 Name: d.Name,
31 - PromptTitle: d.PromptTitle,  
32 - PromptText: d.PromptText,  
33 Remark: d.Remark, 30 Remark: d.Remark,
34 Value: d.Value, 31 Value: d.Value,
35 - ReteResult: d.ReteResult,  
36 - Rule: d.Rule,  
37 - Weight: d.Weight,  
38 CreatedAt: d.CreatedAt, 32 CreatedAt: d.CreatedAt,
39 UpdatedAt: d.UpdatedAt, 33 UpdatedAt: d.UpdatedAt,
40 - DeletedAt: nil,  
41 } 34 }
42 } 35 }
43 36
44 -func (repo *StaffAssessContentTempRepository) Save(d *domain.StaffAssessContent) (*domain.StaffAssessContent, error) {  
45 - saveModel := models.StaffAssessContent{ 37 +func (repo *StaffAssessContentTempRepository) Save(d *domain.StaffAssessContentTemp) (*domain.StaffAssessContentTemp, error) {
  38 + saveModel := models.StaffAssessContentTemp{
46 Id: d.Id, 39 Id: d.Id,
47 StaffAssessId: d.StaffAssessId, 40 StaffAssessId: d.StaffAssessId,
48 SortBy: d.SortBy, 41 SortBy: d.SortBy,
49 Category: d.Category, 42 Category: d.Category,
50 Name: d.Name, 43 Name: d.Name,
51 - PromptTitle: d.PromptTitle,  
52 - PromptText: d.PromptText,  
53 Remark: d.Remark, 44 Remark: d.Remark,
54 Value: d.Value, 45 Value: d.Value,
55 - ReteResult: d.ReteResult,  
56 - Rule: d.Rule,  
57 CreatedAt: d.CreatedAt, 46 CreatedAt: d.CreatedAt,
58 UpdatedAt: d.UpdatedAt, 47 UpdatedAt: d.UpdatedAt,
59 - Weight: d.Weight,  
60 - DeletedAt: nil,  
61 } 48 }
62 tx := repo.transactionContext.PgTx 49 tx := repo.transactionContext.PgTx
63 var err error 50 var err error
@@ -78,19 +65,15 @@ func (repo *StaffAssessContentTempRepository) Save(d *domain.StaffAssessContent) @@ -78,19 +65,15 @@ func (repo *StaffAssessContentTempRepository) Save(d *domain.StaffAssessContent)
78 65
79 func (repo *StaffAssessContentTempRepository) Remove(id int) error { 66 func (repo *StaffAssessContentTempRepository) Remove(id int) error {
80 tx := repo.transactionContext.PgTx 67 tx := repo.transactionContext.PgTx
81 - nowTime := time.Now()  
82 - _, err := tx.Model(&models.StaffAssessContent{}).  
83 - Where("id=?", id).  
84 - Set("deleted_at=?", nowTime).  
85 - Update() 68 + _, err := tx.Model(&models.StaffAssessContentTemp{}).
  69 + Where("id=?", id).Delete()
86 return err 70 return err
87 } 71 }
88 72
89 -func (repo *StaffAssessContentTempRepository) FindOne(queryOptions map[string]interface{}) (*domain.StaffAssessContent, error) { 73 +func (repo *StaffAssessContentTempRepository) FindOne(queryOptions map[string]interface{}) (*domain.StaffAssessContentTemp, error) {
90 tx := repo.transactionContext.PgTx 74 tx := repo.transactionContext.PgTx
91 - m := new(models.StaffAssessContent) 75 + m := new(models.StaffAssessContentTemp)
92 query := tx.Model(m) 76 query := tx.Model(m)
93 - query.Where("deleted_at isnull")  
94 if id, ok := queryOptions["id"]; ok { 77 if id, ok := queryOptions["id"]; ok {
95 query.Where("id=?", id) 78 query.Where("id=?", id)
96 } 79 }
@@ -105,20 +88,13 @@ func (repo *StaffAssessContentTempRepository) FindOne(queryOptions map[string]in @@ -105,20 +88,13 @@ func (repo *StaffAssessContentTempRepository) FindOne(queryOptions map[string]in
105 return u, nil 88 return u, nil
106 } 89 }
107 90
108 -func (repo *StaffAssessContentTempRepository) Find(queryOptions map[string]interface{}) (int, []*domain.StaffAssessContent, error) { 91 +func (repo *StaffAssessContentTempRepository) Find(queryOptions map[string]interface{}) (int, []*domain.StaffAssessContentTemp, error) {
109 tx := repo.transactionContext.PgTx 92 tx := repo.transactionContext.PgTx
110 - var m []*models.StaffAssessContent  
111 - query := tx.Model(&m).  
112 - Where("deleted_at isnull") 93 + var m []*models.StaffAssessContentTemp
  94 + query := tx.Model(&m)
113 if companyId, ok := queryOptions["companyId"]; ok { 95 if companyId, ok := queryOptions["companyId"]; ok {
114 query.Where("company_id = ?", companyId) 96 query.Where("company_id = ?", companyId)
115 } 97 }
116 - if v, ok := queryOptions["limit"].(int); ok {  
117 - query.Limit(v)  
118 - }  
119 - if v, ok := queryOptions["offset"].(int); ok {  
120 - query.Offset(v)  
121 - }  
122 if v, ok := queryOptions["staffAssessId"]; ok { 98 if v, ok := queryOptions["staffAssessId"]; ok {
123 query.Where("staff_assess_id=?", v) 99 query.Where("staff_assess_id=?", v)
124 } 100 }
@@ -126,7 +102,7 @@ func (repo *StaffAssessContentTempRepository) Find(queryOptions map[string]inter @@ -126,7 +102,7 @@ func (repo *StaffAssessContentTempRepository) Find(queryOptions map[string]inter
126 if err != nil { 102 if err != nil {
127 return 0, nil, err 103 return 0, nil, err
128 } 104 }
129 - var arrays []*domain.StaffAssessContent 105 + var arrays []*domain.StaffAssessContentTemp
130 for _, v := range m { 106 for _, v := range m {
131 d := repo.TransformToDomain(v) 107 d := repo.TransformToDomain(v)
132 arrays = append(arrays, d) 108 arrays = append(arrays, d)