正在显示
6 个修改的文件
包含
157 行增加
和
35 行删除
| 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", |
-
请 注册 或 登录 后发表评论