作者 郑周

1. 增加评估提交项 填写内容数据缓存

2. 获取【通用评估详情】和【自评详情】请求增加参数标记是否优先获取缓存
3. 通用评估数据提交后,删除缓存
4. 优化评估数据排序
@@ -168,3 +168,11 @@ func CreateStaffAssessContentTempRepository(options map[string]interface{}) doma @@ -168,3 +168,11 @@ func CreateStaffAssessContentTempRepository(options map[string]interface{}) doma
168 } 168 }
169 return repository.NewStaffAssessContentTempRepository(transactionContext) 169 return repository.NewStaffAssessContentTempRepository(transactionContext)
170 } 170 }
  171 +
  172 +func CreateStaffAssessCacheRepository(options map[string]interface{}) domain.StaffAssessCacheRepository {
  173 + var transactionContext *pg.TransactionContext
  174 + if value, ok := options["transactionContext"]; ok {
  175 + transactionContext = value.(*pg.TransactionContext)
  176 + }
  177 + return repository.NewStaffAssessCacheRepository(transactionContext)
  178 +}
  1 +package command
  2 +
  3 +import (
  4 + "github.com/beego/beego/v2/core/validation"
  5 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  6 +)
  7 +
  8 +// SaveAssessCacheCommand 保存待提交的评估数据(缓存)
  9 +type SaveAssessCacheCommand struct {
  10 + AssessId int64 `cname:"评估项ID" json:"assessId,string"`
  11 + AssessContent []domain.AssessContent `cname:"评估数据" json:"assessContent"`
  12 +}
  13 +
  14 +func (in *SaveAssessCacheCommand) Valid(validation *validation.Validation) {
  15 + if in.AssessId == 0 {
  16 + validation.SetError("assessId", "ID无效")
  17 + return
  18 + }
  19 +}
1 package command 1 package command
2 2
  3 +import "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  4 +
3 //保存员工填写评估内容 5 //保存员工填写评估内容
4 type SaveAssessInfoCommand struct { 6 type SaveAssessInfoCommand struct {
5 AssessId int `json:"assessId"` // 7 AssessId int `json:"assessId"` //
6 ExecutorId int `json:"executorId"` //填写人的id 8 ExecutorId int `json:"executorId"` //填写人的id
7 CompanyId int `json:"companyId"` //公司id 9 CompanyId int `json:"companyId"` //公司id
8 - AssessContent []AssesssContent `json:"assessContent"`  
9 -}  
10 -  
11 -type AssesssContent struct {  
12 - Category string `json:"category"`  
13 - Name string `json:"name"`  
14 - Value string `json:"value"`  
15 - Remark []RemarkText `json:"remark"` 10 + AssessContent []domain.AssessContent `json:"assessContent"`
16 } 11 }
17 12
18 -type RemarkText struct {  
19 - Title string `json:"title"`  
20 - RemarkText string `json:"remarkText"`  
21 -} 13 +//type AssessContent struct {
  14 +// Category string `json:"category"`
  15 +// Name string `json:"name"`
  16 +// Value string `json:"value"`
  17 +// Remark []RemarkText `json:"remark"`
  18 +//}
  19 +//
  20 +//type RemarkText struct {
  21 +// Title string `json:"title"`
  22 +// RemarkText string `json:"remarkText"`
  23 +//}
@@ -2,6 +2,7 @@ package query @@ -2,6 +2,7 @@ package query
2 2
3 //获取评估任务详情 3 //获取评估任务详情
4 type AssessInfoQuery struct { 4 type AssessInfoQuery struct {
5 - AssessId int `json:"assessId"` //  
6 - CompanyId int `json:"companyId"` // 5 + AssessId int `json:"assessId"` // 评估项ID
  6 + CompanyId int `json:"companyId"` // 公司ID
  7 + AcquireCache int `json:"acquireCache"` // 0不获取缓存数据,1获取缓存数据
7 } 8 }
@@ -5,5 +5,5 @@ type AssessSelfInfoQuery struct { @@ -5,5 +5,5 @@ type AssessSelfInfoQuery struct {
5 AssessTaskId int `json:"assessTaskId"` //assessTaskId 的id 5 AssessTaskId int `json:"assessTaskId"` //assessTaskId 的id
6 TargetUserId int `json:"targetUserId,string"` //被评估的人id 6 TargetUserId int `json:"targetUserId,string"` //被评估的人id
7 CompanyId int `json:"companyId"` //公司id 7 CompanyId int `json:"companyId"` //公司id
8 - 8 + AcquireCache int `json:"acquireCache"` // 0不获取缓存数据,1获取缓存数据
9 } 9 }
@@ -6,4 +6,5 @@ type GetExecutorSelfAssessQuery struct { @@ -6,4 +6,5 @@ type GetExecutorSelfAssessQuery struct {
6 TargetUserId int `json:"targetUserId,string"` //评估的执行人,必填 6 TargetUserId int `json:"targetUserId,string"` //评估的执行人,必填
7 CycleId int `json:"cycleId"` //评估周期id 必填 7 CycleId int `json:"cycleId"` //评估周期id 必填
8 BeginDay string `json:"beginDay"` //评估任务的开始日期 2006-01-02 8 BeginDay string `json:"beginDay"` //评估任务的开始日期 2006-01-02
  9 + AcquireCache int `json:"acquireCache"` // 0不获取缓存数据,1获取缓存数据
9 } 10 }
  1 +package service
  2 +
  3 +import (
  4 + "github.com/linmadan/egglib-go/core/application"
  5 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
  6 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/command"
  7 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  8 +)
  9 +
  10 +// StaffAssessCacheService 保存待提交的评估数据(缓存)
  11 +type StaffAssessCacheService struct{}
  12 +
  13 +func NewStaffAssessCacheService() *StaffAssessCacheService {
  14 + newService := &StaffAssessCacheService{}
  15 + return newService
  16 +}
  17 +
  18 +func (srv StaffAssessCacheService) SaveAssessCache(in *command.SaveAssessCacheCommand) (map[string]interface{}, error) {
  19 + transactionContext, err := factory.ValidateStartTransaction(in)
  20 + if err != nil {
  21 + return nil, err
  22 + }
  23 + defer func() {
  24 + transactionContext.RollbackTransaction()
  25 + }()
  26 + cacheRepository := factory.CreateStaffAssessCacheRepository(map[string]interface{}{"transactionContext": transactionContext})
  27 + _, caches, err := cacheRepository.Find(map[string]interface{}{"assessId": in.AssessId, "limit": 1})
  28 + if err != nil {
  29 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  30 + }
  31 + var cache *domain.StaffAssessCache
  32 + if len(caches) == 0 {
  33 + cache = &domain.StaffAssessCache{}
  34 + cache.Id = 0
  35 + cache.AssessId = in.AssessId
  36 + cache.AssessContent = in.AssessContent
  37 + } else {
  38 + cache = caches[0]
  39 + cache.AssessContent = in.AssessContent
  40 + }
  41 + if _, err = cacheRepository.Save(cache); err != nil {
  42 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  43 + }
  44 + if err := transactionContext.CommitTransaction(); err != nil {
  45 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  46 + }
  47 + return map[string]interface{}{"assessId": cache.Id}, nil
  48 +}
@@ -971,6 +971,11 @@ func (srv StaffAssessServeice) GetAssessSelfInfo(param *query.AssessSelfInfoQuer @@ -971,6 +971,11 @@ func (srv StaffAssessServeice) GetAssessSelfInfo(param *query.AssessSelfInfoQuer
971 } 971 }
972 } 972 }
973 973
  974 + // 恢复缓存数据
  975 + if param.AcquireCache != 0 {
  976 + srv.recoverAssessCache(transactionContext, assessData.Id, assessContentList)
  977 + }
  978 +
974 //获取员工描述 979 //获取员工描述
975 staffDesc, _ := srv.getStaffDescrip(transactionContext, int64(param.TargetUserId)) 980 staffDesc, _ := srv.getStaffDescrip(transactionContext, int64(param.TargetUserId))
976 if err := transactionContext.CommitTransaction(); err != nil { 981 if err := transactionContext.CommitTransaction(); err != nil {
@@ -1551,6 +1556,11 @@ func (srv StaffAssessServeice) GetAssessInfo(param *query.AssessInfoQuery) (*ada @@ -1551,6 +1556,11 @@ func (srv StaffAssessServeice) GetAssessInfo(param *query.AssessInfoQuery) (*ada
1551 } 1556 }
1552 } 1557 }
1553 1558
  1559 + // 恢复缓存数据
  1560 + if param.AcquireCache != 0 {
  1561 + srv.recoverAssessCache(transactionContext, assessData.Id, assessContentList)
  1562 + }
  1563 +
1554 targetUserDesc, err := srv.getStaffDescrip(transactionContext, int64(assessData.TargetUser.UserId)) 1564 targetUserDesc, err := srv.getStaffDescrip(transactionContext, int64(assessData.TargetUser.UserId))
1555 if err != nil { 1565 if err != nil {
1556 log.Logger.Error("获取员工描述" + err.Error()) 1566 log.Logger.Error("获取员工描述" + err.Error())
@@ -1713,7 +1723,7 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma @@ -1713,7 +1723,7 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma
1713 } 1723 }
1714 } 1724 }
1715 //处理提交上来的数据 1725 //处理提交上来的数据
1716 - paramContentMap := map[string]command.AssesssContent{} 1726 + paramContentMap := map[string]domain.AssessContent{}
1717 for i, v := range param.AssessContent { 1727 for i, v := range param.AssessContent {
1718 key := fmt.Sprintf("%s-%s", v.Category, v.Name) 1728 key := fmt.Sprintf("%s-%s", v.Category, v.Name)
1719 paramContentMap[key] = param.AssessContent[i] 1729 paramContentMap[key] = param.AssessContent[i]
@@ -1726,7 +1736,7 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma @@ -1726,7 +1736,7 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma
1726 continue 1736 continue
1727 } 1737 }
1728 v.Value = item.Value 1738 v.Value = item.Value
1729 - if v.Required == 1 { 1739 + if v.Required == domain.NodeRequiredYes {
1730 //转换填入的评估值 1740 //转换填入的评估值
1731 err = v.TransformValue() 1741 err = v.TransformValue()
1732 if err != nil { 1742 if err != nil {
@@ -1755,6 +1765,19 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma @@ -1755,6 +1765,19 @@ func (srv StaffAssessServeice) SaveAssessInfo(param *command.SaveAssessInfoComma
1755 if err != nil { 1765 if err != nil {
1756 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存评估任务"+err.Error()) 1766 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存评估任务"+err.Error())
1757 } 1767 }
  1768 +
  1769 + // 删除缓存
  1770 + cacheRepository := factory.CreateStaffAssessCacheRepository(map[string]interface{}{"transactionContext": transactionContext})
  1771 + if _, caches, err := cacheRepository.Find(map[string]interface{}{"assessId": assessData.Id, "limit": 1}); err != nil {
  1772 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  1773 + } else {
  1774 + for i := range caches {
  1775 + if err = cacheRepository.Remove(caches[i].Id); err != nil {
  1776 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  1777 + }
  1778 + }
  1779 + }
  1780 +
1758 if err := transactionContext.CommitTransaction(); err != nil { 1781 if err := transactionContext.CommitTransaction(); err != nil {
1759 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1782 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
1760 } 1783 }
@@ -1884,3 +1907,29 @@ loop: @@ -1884,3 +1907,29 @@ loop:
1884 } 1907 }
1885 return chargeUserList, nil 1908 return chargeUserList, nil
1886 } 1909 }
  1910 +
  1911 +func (srv StaffAssessServeice) recoverAssessCache(context application.TransactionContext, assessId int, dataArray []*domain.StaffAssessContent) {
  1912 + cacheRepository := factory.CreateStaffAssessCacheRepository(map[string]interface{}{"transactionContext": context})
  1913 + _, caches, err := cacheRepository.Find(map[string]interface{}{"assessId": assessId, "limit": 1})
  1914 + if err != nil || len(caches) == 0 {
  1915 + return
  1916 + }
  1917 + cacheArray := caches[0].AssessContent
  1918 + cacheLen := len(cacheArray)
  1919 +
  1920 + for i := range dataArray {
  1921 + if cacheLen > i { // 避免数组越界
  1922 + data := dataArray[i]
  1923 + cache := cacheArray[i]
  1924 +
  1925 + data.Value = cache.Value // 评估填写的值
  1926 + cacheRemarkLen := len(cache.Remark)
  1927 +
  1928 + for j := range data.Remark {
  1929 + if cacheRemarkLen > j {
  1930 + data.Remark[j].RemarkText = cache.Remark[j].RemarkText // 评估填写文本内容
  1931 + }
  1932 + }
  1933 + }
  1934 + }
  1935 +}
@@ -661,6 +661,11 @@ func (srv StaffAssessServeice) GetAssessSelfInfoV2(param *query.GetExecutorSelfA @@ -661,6 +661,11 @@ func (srv StaffAssessServeice) GetAssessSelfInfoV2(param *query.GetExecutorSelfA
661 } 661 }
662 } 662 }
663 663
  664 + // 恢复缓存数据
  665 + if param.AcquireCache != 0 {
  666 + srv.recoverAssessCache(transactionContext, assessData.Id, assessContentList)
  667 + }
  668 +
664 //获取员工描述 669 //获取员工描述
665 staffDesc, _ := srv.getStaffDescrip(transactionContext, int64(param.TargetUserId)) 670 staffDesc, _ := srv.getStaffDescrip(transactionContext, int64(param.TargetUserId))
666 if err := transactionContext.CommitTransaction(); err != nil { 671 if err := transactionContext.CommitTransaction(); err != nil {
  1 +package domain
  2 +
  3 +import "time"
  4 +
  5 +// StaffAssessCache 填写评估数据(缓存暂未提交)
  6 +type StaffAssessCache struct {
  7 + Id int64 `json:"id,string" comment:"ID"`
  8 + AssessId int64 `json:"assessId,string" comment:"评估项ID"`
  9 + AssessContent []AssessContent `json:"assessContent" comment:"评估项提交数据"`
  10 + CreatedAt time.Time `json:"createdAt" comment:"创建时间"`
  11 + UpdatedAt time.Time `json:"updatedAt" comment:"更新时间"`
  12 + DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"`
  13 +}
  14 +
  15 +type AssessContent struct {
  16 + Category string `json:"category"`
  17 + Name string `json:"name"`
  18 + Value string `json:"value"`
  19 + Remark []RemarkText `json:"remark"`
  20 +}
  21 +
  22 +type RemarkText struct {
  23 + Title string `json:"title"`
  24 + RemarkText string `json:"remarkText"`
  25 +}
  26 +
  27 +type StaffAssessCacheRepository interface {
  28 + Save(param *StaffAssessCache) (*StaffAssessCache, error)
  29 + Remove(id int64) error
  30 + FindOne(queryOptions map[string]interface{}) (*StaffAssessCache, error)
  31 + Find(queryOptions map[string]interface{}) (int, []*StaffAssessCache, error)
  32 +}
@@ -93,6 +93,12 @@ func (content *StaffAssessContent) scoreValue() error { @@ -93,6 +93,12 @@ func (content *StaffAssessContent) scoreValue() error {
93 return errors.New("评分填写的值错误") 93 return errors.New("评分填写的值错误")
94 } 94 }
95 95
  96 +//type StaffAssessContentSort []*StaffAssessContent
  97 +//
  98 +//func (a StaffAssessContentSort) Len() int { return len(a) }
  99 +//func (a StaffAssessContentSort) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
  100 +//func (a StaffAssessContentSort) Less(i, j int) bool { return a[i].SortBy < a[j].SortBy }
  101 +
96 type StaffAssessContentRepository interface { 102 type StaffAssessContentRepository interface {
97 Save(param *StaffAssessContent) (*StaffAssessContent, error) 103 Save(param *StaffAssessContent) (*StaffAssessContent, error)
98 Remove(id int) error 104 Remove(id int) error
@@ -45,6 +45,7 @@ func init() { @@ -45,6 +45,7 @@ func init() {
45 &models.StaffAssess{}, 45 &models.StaffAssess{},
46 &models.StaffAssessTask{}, 46 &models.StaffAssessTask{},
47 &models.StaffAssessContent{}, 47 &models.StaffAssessContent{},
  48 + &models.StaffAssessCache{},
48 } 49 }
49 for _, model := range tables { 50 for _, model := range tables {
50 err := DB.Model(model).CreateTable(&orm.CreateTableOptions{ 51 err := DB.Model(model).CreateTable(&orm.CreateTableOptions{
  1 +package models
  2 +
  3 +import (
  4 + "time"
  5 +
  6 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  7 +)
  8 +
  9 +// StaffAssessCache 提交评估项内容缓存
  10 +type StaffAssessCache struct {
  11 + tableName struct{} `comment:"评估项填写内容缓存" pg:"staff_assess_cache"`
  12 + Id int64 `comment:"ID" pg:",pk"`
  13 + AssessId int64 `comment:"评估项ID"`
  14 + AssessContent []domain.AssessContent `comment:"评估项提交数据"`
  15 + CreatedAt time.Time `comment:"创建时间"`
  16 + UpdatedAt time.Time `comment:"更新时间"`
  17 + DeletedAt *time.Time `comment:"删除时间"`
  18 +}
  1 +package repository
  2 +
  3 +import (
  4 + "errors"
  5 + "fmt"
  6 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/utils"
  7 + "time"
  8 +
  9 + "github.com/go-pg/pg/v10"
  10 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  11 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
  12 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/pg/models"
  13 +)
  14 +
  15 +type StaffAssessCacheRepository struct {
  16 + transactionContext *pgTransaction.TransactionContext
  17 +}
  18 +
  19 +//var _ domain.StaffAssessCacheRepository = (*StaffAssessCacheRepository)(nil)
  20 +
  21 +func NewStaffAssessCacheRepository(transactionContext *pgTransaction.TransactionContext) *StaffAssessCacheRepository {
  22 + return &StaffAssessCacheRepository{transactionContext: transactionContext}
  23 +}
  24 +
  25 +func (repo *StaffAssessCacheRepository) TransformToDomain(m *models.StaffAssessCache) domain.StaffAssessCache {
  26 + return domain.StaffAssessCache{
  27 + Id: m.Id,
  28 + AssessId: m.AssessId,
  29 + AssessContent: m.AssessContent,
  30 + CreatedAt: m.CreatedAt,
  31 + UpdatedAt: m.UpdatedAt,
  32 + DeletedAt: m.DeletedAt,
  33 + }
  34 +}
  35 +
  36 +func (repo *StaffAssessCacheRepository) TransformToModel(d *domain.StaffAssessCache) models.StaffAssessCache {
  37 + return models.StaffAssessCache{
  38 + Id: d.Id,
  39 + AssessId: d.AssessId,
  40 + AssessContent: d.AssessContent,
  41 + CreatedAt: d.CreatedAt,
  42 + UpdatedAt: d.UpdatedAt,
  43 + DeletedAt: d.DeletedAt,
  44 + }
  45 +}
  46 +
  47 +func (repo *StaffAssessCacheRepository) nextIdentify() (int64, error) {
  48 + return utils.NewSnowflakeId()
  49 +}
  50 +
  51 +func (repo *StaffAssessCacheRepository) Save(d *domain.StaffAssessCache) (*domain.StaffAssessCache, error) {
  52 + var isCreate = d.Id == 0
  53 + if isCreate {
  54 + id, err := repo.nextIdentify()
  55 + if err != nil {
  56 + return d, err
  57 + }
  58 + d.Id = id
  59 + d.CreatedAt = time.Now()
  60 + d.UpdatedAt = d.CreatedAt
  61 + } else {
  62 + d.UpdatedAt = time.Now()
  63 + }
  64 + m := repo.TransformToModel(d)
  65 + tx := repo.transactionContext.PgTx
  66 + var err error
  67 + if isCreate {
  68 + _, err = tx.Model(&m).Returning("id").Insert()
  69 + } else {
  70 + _, err = tx.Model(&m).Returning("id").WherePK().Update() // 更新和删除必须增加条件
  71 + }
  72 + if err != nil {
  73 + return nil, err
  74 + }
  75 + d.Id = m.Id
  76 + return d, nil
  77 +}
  78 +
  79 +func (repo *StaffAssessCacheRepository) Remove(id int64) error {
  80 + tx := repo.transactionContext.PgTx
  81 + nowTime := time.Now()
  82 + _, err := tx.Model(&models.StaffAssessCache{}).Where("id=?", id).Set("deleted_at=?", nowTime).Update()
  83 + return err
  84 +}
  85 +
  86 +func (repo *StaffAssessCacheRepository) FindOne(queryOptions map[string]interface{}) (*domain.StaffAssessCache, error) {
  87 + tx := repo.transactionContext.PgTx
  88 + m := new(models.StaffAssessCache)
  89 + query := tx.Model(m)
  90 + query.Where("deleted_at isnull")
  91 + if id, ok := queryOptions["id"]; ok {
  92 + query.Where("id=?", id)
  93 + }
  94 + if err := query.First(); err != nil {
  95 + if errors.Is(err, pg.ErrNoRows) {
  96 + return nil, fmt.Errorf("没有此资源")
  97 + } else {
  98 + return nil, err
  99 + }
  100 + }
  101 + u := repo.TransformToDomain(m)
  102 + return &u, nil
  103 +}
  104 +
  105 +func (repo *StaffAssessCacheRepository) Find(queryOptions map[string]interface{}) (int, []*domain.StaffAssessCache, error) {
  106 + tx := repo.transactionContext.PgTx
  107 + var m []*models.StaffAssessCache
  108 + query := tx.Model(&m).Where("deleted_at isnull")
  109 +
  110 + if v, ok := queryOptions["assessId"]; ok {
  111 + query.Where("assess_id=?", v)
  112 + }
  113 +
  114 + if v, ok := queryOptions["limit"].(int); ok {
  115 + query.Limit(v)
  116 + }
  117 +
  118 + if v, ok := queryOptions["offset"].(int); ok {
  119 + query.Offset(v)
  120 + }
  121 +
  122 + count, err := query.SelectAndCount()
  123 + if err != nil {
  124 + return 0, nil, err
  125 + }
  126 + var arrays []*domain.StaffAssessCache
  127 + for _, v := range m {
  128 + d := repo.TransformToDomain(v)
  129 + arrays = append(arrays, &d)
  130 + }
  131 + return count, arrays, nil
  132 +}
@@ -128,6 +128,8 @@ func (repo *StaffAssessContentRepository) Find(queryOptions map[string]interface @@ -128,6 +128,8 @@ func (repo *StaffAssessContentRepository) Find(queryOptions map[string]interface
128 if v, ok := queryOptions["staffAssessId"]; ok { 128 if v, ok := queryOptions["staffAssessId"]; ok {
129 query.Where("staff_assess_id=?", v) 129 query.Where("staff_assess_id=?", v)
130 } 130 }
  131 +
  132 + query.Order("sort_by ASC")
131 count, err := query.SelectAndCount() 133 count, err := query.SelectAndCount()
132 if err != nil { 134 if err != nil {
133 return 0, nil, err 135 return 0, nil, err
@@ -348,3 +348,14 @@ func (c *StaffAssessController) ExportAssessContentCycleDay() { @@ -348,3 +348,14 @@ func (c *StaffAssessController) ExportAssessContentCycleDay() {
348 c.Ctx.Output.Header("Expires", "0") 348 c.Ctx.Output.Header("Expires", "0")
349 data.Write(c.Ctx.ResponseWriter) 349 data.Write(c.Ctx.ResponseWriter)
350 } 350 }
  351 +
  352 +// SaveAssessCache 保存评估内容(缓存)
  353 +func (c *StaffAssessController) SaveAssessCache() {
  354 + cacheService := service.NewStaffAssessCacheService()
  355 + in := &command.SaveAssessCacheCommand{}
  356 + if err := c.Unmarshal(in); err != nil {
  357 + c.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
  358 + } else {
  359 + c.Response(cacheService.SaveAssessCache(in))
  360 + }
  361 +}
@@ -30,6 +30,7 @@ func init() { @@ -30,6 +30,7 @@ func init() {
30 web.NSCtrlPost("/me/execute/supper/list", (*controllers.StaffAssessController).ListMeSupperAssess), //我要执行的360评估的用户列表 30 web.NSCtrlPost("/me/execute/supper/list", (*controllers.StaffAssessController).ListMeSupperAssess), //我要执行的360评估的用户列表
31 web.NSCtrlPost("/info", (*controllers.StaffAssessController).GetAssessInfo), //通用获取员工评估的详情 31 web.NSCtrlPost("/info", (*controllers.StaffAssessController).GetAssessInfo), //通用获取员工评估的详情
32 web.NSCtrlPut("/info", (*controllers.StaffAssessController).SaveAssessInfo), //通用保存员工评估的详情 32 web.NSCtrlPut("/info", (*controllers.StaffAssessController).SaveAssessInfo), //通用保存员工评估的详情
  33 + web.NSCtrlPut("/info-cache", (*controllers.StaffAssessController).SaveAssessCache), //通用保存员工评估的详情(缓存)
33 web.NSCtrlPost("/target-user/invite/list", (*controllers.StaffAssessController).ListTargetUserInviteAssess), //获取被评估员工360评估的列表 34 web.NSCtrlPost("/target-user/invite/list", (*controllers.StaffAssessController).ListTargetUserInviteAssess), //获取被评估员工360评估的列表
34 web.NSCtrlPost("/me/target-user/supper/list", (*controllers.StaffAssessController).ListTargetUserMeSupperAssess), //获取我的上级评估的列表 35 web.NSCtrlPost("/me/target-user/supper/list", (*controllers.StaffAssessController).ListTargetUserMeSupperAssess), //获取我的上级评估的列表
35 web.NSCtrlPost("/target-user/self/info", (*controllers.StaffAssessController).GetAssessTargetUserSelfInfo), //获取被评估员工的自评反馈详情 36 web.NSCtrlPost("/target-user/self/info", (*controllers.StaffAssessController).GetAssessTargetUserSelfInfo), //获取被评估员工的自评反馈详情