作者 tangxvhui

添加接口

  1 +package adapter
  2 +
  3 +type ListUserAssessContent struct {
  4 + TableHeader []ListTableHeader `json:"tableHeader"`
  5 + List []map[string]string `json:"list"`
  6 + Total int `json:"total"`
  7 +}
1 package service 1 package service
2 2
3 import ( 3 import (
  4 + "fmt"
  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"
  8 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/adapter"
6 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/query" 9 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/query"
  10 + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
7 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao" 11 "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao"
8 ) 12 )
9 13
@@ -67,8 +71,8 @@ func (srv StaffAssessServeice) ListAllAssessCycleDay(param *query.ListAssessCycl @@ -67,8 +71,8 @@ func (srv StaffAssessServeice) ListAllAssessCycleDay(param *query.ListAssessCycl
67 } 71 }
68 72
69 //根据周期id和日期获取 员工填写评估内容 73 //根据周期id和日期获取 员工填写评估内容
70 -// 有过滤查看权限  
71 -func (srv StaffAssessServeice) ListAllAssessContentCycleDay(param *query.ListAssessContentCycleDay) (map[string]interface{}, error) { 74 +//有过滤查看权限
  75 +func (srv StaffAssessServeice) ListUserAssessContentCycleDay(param *query.ListAssessContentCycleDay) (*adapter.ListUserAssessContent, error) {
72 transactionContext, err := factory.CreateTransactionContext(nil) 76 transactionContext, err := factory.CreateTransactionContext(nil)
73 if err != nil { 77 if err != nil {
74 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 78 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -79,11 +83,110 @@ func (srv StaffAssessServeice) ListAllAssessContentCycleDay(param *query.ListAss @@ -79,11 +83,110 @@ func (srv StaffAssessServeice) ListAllAssessContentCycleDay(param *query.ListAss
79 defer func() { 83 defer func() {
80 _ = transactionContext.RollbackTransaction() 84 _ = transactionContext.RollbackTransaction()
81 }() 85 }()
82 - // assessDao := dao.NewStaffAssessDao(map[string]interface{}{  
83 - // "transactionContext": transactionContext,  
84 - // }) 86 +
  87 + roleRepo := factory.CreateRoleRepository(map[string]interface{}{
  88 + "transactionContext": transactionContext,
  89 + })
  90 + roleUserRepo := factory.CreateRoleUserRepository(map[string]interface{}{
  91 + "transactionContext": transactionContext,
  92 + })
  93 + _, roleList, err := roleRepo.Find(map[string]interface{}{
  94 + "type": domain.RoleTypeSystem,
  95 + "companyId": param.CompanyId,
  96 + })
  97 + if err != nil {
  98 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取角色信息列表"+err.Error())
  99 + }
  100 + _, userRoleList, err := roleUserRepo.Find(map[string]interface{}{
  101 + "companyId": param.CompanyId,
  102 + "userId": param.OperaterId,
  103 + })
  104 + if err != nil {
  105 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取用户的角色信息列表"+err.Error())
  106 + }
  107 + hrbp := -1
  108 + for _, v := range userRoleList {
  109 + for _, v2 := range roleList {
  110 + if v.RoleId == v2.Id {
  111 + hrbp = 1
  112 + break
  113 + }
  114 + }
  115 + if hrbp == 1 {
  116 + break
  117 + }
  118 + }
  119 + assessDao := dao.NewStaffAssessDao(map[string]interface{}{
  120 + "transactionContext": transactionContext,
  121 + })
  122 +
  123 + limit := param.PageSize
  124 + offset := (param.PageNumber - 1) * limit
  125 + cnt, err := assessDao.CountUserAssess(dao.SearchConditin1{
  126 + CompanyId: param.CompanyId,
  127 + CycleId: param.CycleId,
  128 + BeginDay: param.BeginDay,
  129 + TargetUserName: param.TargetUserName,
  130 + Limit: 5000,
  131 + Offset: 0,
  132 + OperaterId: param.OperaterId,
  133 + Hrbp: hrbp,
  134 + })
  135 + if err != nil {
  136 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "统计总数"+err.Error())
  137 + }
  138 + contentList, err := assessDao.SearchUserAssessContent(dao.SearchConditin1{
  139 + CompanyId: param.CompanyId,
  140 + CycleId: param.CycleId,
  141 + BeginDay: param.BeginDay,
  142 + TargetUserName: param.TargetUserName,
  143 + Limit: limit,
  144 + Offset: offset,
  145 + OperaterId: param.OperaterId,
  146 + Hrbp: hrbp,
  147 + })
  148 + if err != nil {
  149 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取数据列表"+err.Error())
  150 + }
85 if err := transactionContext.CommitTransaction(); err != nil { 151 if err := transactionContext.CommitTransaction(); err != nil {
86 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 152 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
87 } 153 }
88 - return nil, nil 154 +
  155 + //可变的表格列
  156 + changeableHeader := []adapter.ListTableHeader{
  157 + {Key: "targetUserName", Name: "姓名"}, //固定列
  158 + }
  159 + //过滤重复的列
  160 + headerMap := map[string]string{}
  161 + // 获取已经填报的内容
  162 + changeableRows := map[string]map[string]string{}
  163 + tableSort := []string{} //确定列表数据的顺序
  164 + for i, v := range contentList {
  165 + name := fmt.Sprintf("%s-%s", v.Category, v.ContentName)
  166 + key := fmt.Sprintf("k%d", i)
  167 + if _, ok := headerMap[name]; !ok {
  168 + changeableHeader = append(changeableHeader, adapter.ListTableHeader{
  169 + Key: key, Name: name,
  170 + })
  171 + headerMap[name] = key
  172 + }
  173 + if _, ok := changeableRows[v.TargetUserId]; !ok {
  174 + changeableRows[v.TargetUserId] = map[string]string{}
  175 + tableSort = append(tableSort, v.TargetUserId)
  176 + }
  177 + key = headerMap[name]
  178 + changeableRows[v.TargetUserId][key] = v.Value
  179 + changeableRows[v.TargetUserId]["targetUserName"] = v.TargetUserName
  180 + changeableRows[v.TargetUserId]["targetUserId"] = v.TargetUserId
  181 + }
  182 + list := []map[string]string{}
  183 + for _, v := range tableSort {
  184 + list = append(list, changeableRows[v])
  185 + }
  186 + result := adapter.ListUserAssessContent{
  187 + TableHeader: changeableHeader,
  188 + Total: cnt,
  189 + List: list,
  190 + }
  191 + return &result, nil
89 } 192 }
@@ -186,6 +186,12 @@ type SearchConditin1 struct { @@ -186,6 +186,12 @@ type SearchConditin1 struct {
186 //limit int, 分页条数 186 //limit int, 分页条数
187 //offset int 分页偏移 187 //offset int 分页偏移
188 func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserAssessContent, error) { 188 func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserAssessContent, error) {
  189 + if param.Offset < 0 {
  190 + param.Offset = 0
  191 + }
  192 + if param.Limit < 0 {
  193 + param.Limit = 20
  194 + }
189 sqlStr := ` select 195 sqlStr := ` select
190 t_staff_assess_1.target_user_id,t_staff_assess_1.target_user_name,t_staff_assess_1.begin_day, 196 t_staff_assess_1.target_user_id,t_staff_assess_1.target_user_name,t_staff_assess_1.begin_day,
191 staff_assess_content.value ,staff_assess_content.sort_by , 197 staff_assess_content.value ,staff_assess_content.sort_by ,
@@ -206,7 +212,7 @@ func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserA @@ -206,7 +212,7 @@ func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserA
206 sqlStr = sqlStr0 + sqlStr 212 sqlStr = sqlStr0 + sqlStr
207 tx := d.transactionContext.PgTx 213 tx := d.transactionContext.PgTx
208 var result []UserAssessContent 214 var result []UserAssessContent
209 - _, err := tx.QueryOne(&result, sqlStr, condition...) 215 + _, err := tx.Query(&result, sqlStr, condition...)
210 return result, err 216 return result, err
211 } 217 }
212 218
@@ -218,28 +224,19 @@ func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserA @@ -218,28 +224,19 @@ func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserA
218 //hrbp 是否搜索HRBP角色的用户可以查看,1:是;-1:否 224 //hrbp 是否搜索HRBP角色的用户可以查看,1:是;-1:否
219 //limit int, 分页条数 225 //limit int, 分页条数
220 //offset int 分页偏移 226 //offset int 分页偏移
221 -func (d *StaffAssessDao) CountUserAssess(param SearchConditin1) ([]UserAssessContent, error) {  
222 - sqlStr := ` select  
223 - t_staff_assess_1.target_user_id,t_staff_assess_1.target_user_name,t_staff_assess_1.begin_day,  
224 - staff_assess_content.value ,staff_assess_content.sort_by ,  
225 - staff_assess_content.category ,staff_assess_content."name" as content_name ,  
226 - staff_assess_content.weight  
227 - from t_staff_assess_1  
228 - left join staff_assess_content on t_staff_assess_1.assess_id = staff_assess_content.staff_assess_id  
229 - ` 227 +func (d *StaffAssessDao) CountUserAssess(param SearchConditin1) (int, error) {
  228 + sqlStr := ` select count(*) from t_staff_assess_1 `
230 condition := []interface{}{} 229 condition := []interface{}{}
231 if len(param.TargetUserName) > 0 { 230 if len(param.TargetUserName) > 0 {
232 sqlStr += ` where t_staff_assess_1.target_user_name like ? ` 231 sqlStr += ` where t_staff_assess_1.target_user_name like ? `
233 condition = append(condition, param.TargetUserName) 232 condition = append(condition, param.TargetUserName)
234 } 233 }
235 - //加入排序  
236 - sqlStr += ` order by convert_to(t_staff_assess_1.target_user_name,'GBK'),staff_assess_content.sort_by `  
237 //获取前置sql语句 234 //获取前置sql语句
238 - sqlStr0 := d.useTStaffAssess(param.CompanyId, param.CycleId, param.OperaterId, param.BeginDay, param.Hrbp, param.Limit, param.Offset) 235 + sqlStr0 := d.useTStaffAssess(param.CompanyId, param.CycleId, param.OperaterId, param.BeginDay, param.Hrbp, 5000, 0)
239 sqlStr = sqlStr0 + sqlStr 236 sqlStr = sqlStr0 + sqlStr
240 tx := d.transactionContext.PgTx 237 tx := d.transactionContext.PgTx
241 - var result []UserAssessContent  
242 - _, err := tx.QueryOne(&result, sqlStr, condition...) 238 + var result int
  239 + _, err := tx.QueryOne(pg.Scan(&result), sqlStr, condition...)
243 return result, err 240 return result, err
244 } 241 }
245 242
@@ -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 RoleRepository struct { 16 type RoleRepository struct {
@@ -117,6 +118,10 @@ func (repo *RoleRepository) Find(queryOptions map[string]interface{}) (int64, [] @@ -117,6 +118,10 @@ func (repo *RoleRepository) Find(queryOptions map[string]interface{}) (int64, []
117 query.Where("name = ?", v) 118 query.Where("name = ?", v)
118 } 119 }
119 120
  121 + if v, ok := queryOptions["type"]; ok {
  122 + query.Where("type=?", v)
  123 + }
  124 +
120 if companyId, ok := queryOptions["companyId"]; ok { 125 if companyId, ok := queryOptions["companyId"]; ok {
121 query.Where("company_id = ?", companyId) 126 query.Where("company_id = ?", companyId)
122 } 127 }
@@ -283,15 +283,7 @@ func (c *StaffAssessController) ListTargetUserMeSupperAssess() { @@ -283,15 +283,7 @@ func (c *StaffAssessController) ListTargetUserMeSupperAssess() {
283 //获取周期列表 283 //获取周期列表
284 func (c *StaffAssessController) ListAssessCycle() { 284 func (c *StaffAssessController) ListAssessCycle() {
285 srv := service.NewStaffAssessServeice() 285 srv := service.NewStaffAssessServeice()
286 - // paramReq := &query.ListTargetUserAssessQuery{}  
287 - // err := c.BindJSON(paramReq)  
288 - // if err != nil {  
289 - // e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())  
290 - // c.Response(nil, e)  
291 - // return  
292 - // }  
293 userReq := middlewares.GetUser(c.Ctx) 286 userReq := middlewares.GetUser(c.Ctx)
294 -  
295 data, err := srv.ListAllAssessCycle(int(userReq.CompanyId)) 287 data, err := srv.ListAllAssessCycle(int(userReq.CompanyId))
296 c.Response(data, err) 288 c.Response(data, err)
297 } 289 }
@@ -311,3 +303,20 @@ func (c *StaffAssessController) ListAssessCycleDay() { @@ -311,3 +303,20 @@ func (c *StaffAssessController) ListAssessCycleDay() {
311 data, err := srv.ListAllAssessCycleDay(paramReq) 303 data, err := srv.ListAllAssessCycleDay(paramReq)
312 c.Response(data, err) 304 c.Response(data, err)
313 } 305 }
  306 +
  307 +//根据周期里的考核日期,获取员工填写评估内容列表
  308 +func (c *StaffAssessController) ListAssessContentCycleDay() {
  309 + srv := service.NewStaffAssessServeice()
  310 + paramReq := &query.ListAssessContentCycleDay{}
  311 + err := c.BindJSON(paramReq)
  312 + if err != nil {
  313 + e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
  314 + c.Response(nil, e)
  315 + return
  316 + }
  317 + userReq := middlewares.GetUser(c.Ctx)
  318 + paramReq.CompanyId = int(userReq.CompanyId)
  319 + paramReq.OperaterId = int(userReq.UserId)
  320 + data, err := srv.ListUserAssessContentCycleDay(paramReq)
  321 + c.Response(data, err)
  322 +}
@@ -10,11 +10,12 @@ import ( @@ -10,11 +10,12 @@ import (
10 func init() { 10 func init() {
11 assessTaskNS := web.NewNamespace("/v1/staff-assess-task", 11 assessTaskNS := web.NewNamespace("/v1/staff-assess-task",
12 web.NSBefore(filters.AllowCors(), middlewares.CheckFontToken()), 12 web.NSBefore(filters.AllowCors(), middlewares.CheckFontToken()),
13 - web.NSCtrlPost("/search/me", (*controllers.StaffAssessController).SearchAssessTaskMe), //获取我参与过的评估项目列表  
14 - web.NSCtrlPost("/desc/me", (*controllers.StaffAssessController).AssessTaskMeDesc), //获取我的项目评估进度描述  
15 - web.NSCtrlPost("/", (*controllers.StaffAssessController).CreateStaffAssessTask), //创建员工的评估任务  
16 - web.NSCtrlGet("/cycle", (*controllers.StaffAssessController).ListAssessCycle), //获取周期列表  
17 - web.NSCtrlPost("/cycle/day", (*controllers.StaffAssessController).ListAssessCycleDay), //获取周期中的考核日期 13 + web.NSCtrlPost("/search/me", (*controllers.StaffAssessController).SearchAssessTaskMe), //获取我参与过的评估项目列表
  14 + web.NSCtrlPost("/desc/me", (*controllers.StaffAssessController).AssessTaskMeDesc), //获取我的项目评估进度描述
  15 + web.NSCtrlPost("/", (*controllers.StaffAssessController).CreateStaffAssessTask), //创建员工的评估任务
  16 + web.NSCtrlGet("/cycle", (*controllers.StaffAssessController).ListAssessCycle), //获取周期列表
  17 + web.NSCtrlPost("/cycle/day", (*controllers.StaffAssessController).ListAssessCycleDay), //获取周期中的考核日期
  18 + web.NSCtrlPost("/cycle/day/content", (*controllers.StaffAssessController).ListAssessContentCycleDay), //根据周期里的考核日期,获取员工填写评估内容列表
18 ) 19 )
19 // /v1/staff-assess/self/me/list 20 // /v1/staff-assess/self/me/list
20 assessNS := web.NewNamespace("/v1/staff-assess", 21 assessNS := web.NewNamespace("/v1/staff-assess",