正在显示
12 个修改的文件
包含
550 行增加
和
85 行删除
@@ -173,6 +173,19 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i | @@ -173,6 +173,19 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i | ||
173 | ruleRepository := factory.CreateEvaluationRuleRepository(map[string]interface{}{"transactionContext": transactionContext}) | 173 | ruleRepository := factory.CreateEvaluationRuleRepository(map[string]interface{}{"transactionContext": transactionContext}) |
174 | userRepository := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext}) | 174 | userRepository := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext}) |
175 | 175 | ||
176 | + // 查询系统默认规则 | ||
177 | + _, sysRules, err := ruleRepository.Find(map[string]interface{}{"companyId": in.CompanyId, "sysType": domain.EvaluationSysTypeSystem, "limit": 1}) | ||
178 | + if err != nil { | ||
179 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
180 | + } | ||
181 | + // 不存在,生成默认规则 | ||
182 | + if len(sysRules) == 0 { | ||
183 | + newRule := domain.GenerateSysRule(in.CompanyId) | ||
184 | + if _, err := ruleRepository.Insert(newRule); err != nil { | ||
185 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
186 | + } | ||
187 | + } | ||
188 | + | ||
176 | total, rules, err := ruleRepository.Find(tool_funs.SimpleStructToMap(in)) | 189 | total, rules, err := ruleRepository.Find(tool_funs.SimpleStructToMap(in)) |
177 | if err != nil { | 190 | if err != nil { |
178 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 191 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
@@ -180,31 +193,11 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i | @@ -180,31 +193,11 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i | ||
180 | 193 | ||
181 | ras := make([]*adapter.RuleAdapter, 0) | 194 | ras := make([]*adapter.RuleAdapter, 0) |
182 | creatorIds := make([]int64, 0) | 195 | creatorIds := make([]int64, 0) |
183 | - var havaSystemType = false | ||
184 | for i := range rules { | 196 | for i := range rules { |
185 | ra := &adapter.RuleAdapter{} | 197 | ra := &adapter.RuleAdapter{} |
186 | ra.EvaluationRule = rules[i] | 198 | ra.EvaluationRule = rules[i] |
187 | ras = append(ras, ra) | 199 | ras = append(ras, ra) |
188 | creatorIds = append(creatorIds, rules[i].CreatorId) | 200 | creatorIds = append(creatorIds, rules[i].CreatorId) |
189 | - | ||
190 | - if rules[i].SysType == domain.EvaluationSysTypeSystem { | ||
191 | - havaSystemType = true | ||
192 | - break | ||
193 | - } | ||
194 | - } | ||
195 | - | ||
196 | - // 如果不存在系统默认就生成一个 | ||
197 | - if !havaSystemType { | ||
198 | - newRule := domain.GenerateSysRule(in.CompanyId) | ||
199 | - rule, err := ruleRepository.Insert(newRule) | ||
200 | - if err != nil { | ||
201 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
202 | - } | ||
203 | - ra := &adapter.RuleAdapter{} | ||
204 | - ra.EvaluationRule = rule | ||
205 | - ras = append(ras, ra) | ||
206 | - | ||
207 | - total += 1 | ||
208 | } | 201 | } |
209 | 202 | ||
210 | _, users, _ := userRepository.Find(map[string]interface{}{"ids": creatorIds, "limit": len(creatorIds)}) | 203 | _, users, _ := userRepository.Find(map[string]interface{}{"ids": creatorIds, "limit": len(creatorIds)}) |
@@ -218,7 +211,6 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i | @@ -218,7 +211,6 @@ func (rs *EvaluationRuleService) ListRelCreator(in *command.QueryRuleCommand) (i | ||
218 | if v, ok := userNameMap[ras[i].CreatorId]; ok { | 211 | if v, ok := userNameMap[ras[i].CreatorId]; ok { |
219 | ras[i].CreatorName = v | 212 | ras[i].CreatorName = v |
220 | } | 213 | } |
221 | - | ||
222 | } | 214 | } |
223 | 215 | ||
224 | if err := transactionContext.CommitTransaction(); err != nil { | 216 | if err := transactionContext.CommitTransaction(); err != nil { |
@@ -99,16 +99,16 @@ func (rs *NodeTaskService) SendEvaluationNode() error { | @@ -99,16 +99,16 @@ func (rs *NodeTaskService) SendEvaluationNode() error { | ||
99 | task.NextSentAt = &nextTime | 99 | task.NextSentAt = &nextTime |
100 | } | 100 | } |
101 | 101 | ||
102 | - // 下个周期的起始时间=当前周期的截止时间 | 102 | + // 周期的截至时间=下一个周期的开始时间-1秒 |
103 | if task.NextSentAt == nil { | 103 | if task.NextSentAt == nil { |
104 | cycleTimeEnd = maxTime | 104 | cycleTimeEnd = maxTime |
105 | } else { | 105 | } else { |
106 | - cycleTimeEnd = task.NextSentAt.Local() | 106 | + cycleTimeEnd = task.NextSentAt.Local().Add(-1 * time.Second) |
107 | } | 107 | } |
108 | 108 | ||
109 | // 格式化周期的起始和截止时间 | 109 | // 格式化周期的起始和截止时间 |
110 | - fmCycleStartTime := cycleTimeStart.Format("2006-1-2 15:04:05") | ||
111 | - fmCycleTimeEnd := cycleTimeEnd.Format("2006-1-2 15:04:05") | 110 | + fmCycleStartTime := cycleTimeStart.Format("2006-01-02 15:04:05") |
111 | + fmCycleTimeEnd := cycleTimeEnd.Format("2006-01-02 15:04:05") | ||
112 | 112 | ||
113 | csat := &command.CreateStaffAssessTask{ | 113 | csat := &command.CreateStaffAssessTask{ |
114 | CompanyId: int(project.CompanyId), | 114 | CompanyId: int(project.CompanyId), |
1 | package query | 1 | package query |
2 | 2 | ||
3 | type ListAssessContentCycleDay struct { | 3 | type ListAssessContentCycleDay struct { |
4 | - CompanyId int `json:"companyId"` | ||
5 | - OperaterId int `json:"operaterId"` | ||
6 | - CycleId int `json:"cycleId,string"` | ||
7 | - BeginDay string `json:"beginDay"` | ||
8 | - TargetUserName string `json:"targetUserName"` | ||
9 | - PageNumber int `json:"pageNumber"` | ||
10 | - PageSize int `json:"pageSize"` | 4 | + CompanyId int `json:"companyId"` |
5 | + OperaterId int `json:"operaterId"` | ||
6 | + CycleId int `json:"cycleId,string"` | ||
7 | + BeginDay string `json:"beginDay"` | ||
8 | + TargetUserName string `json:"targetUserName"` | ||
9 | + TargetUserId []string `json:"targetUserId"` | ||
10 | + PageNumber int `json:"pageNumber"` | ||
11 | + PageSize int `json:"pageSize"` | ||
11 | } | 12 | } |
1 | package service | 1 | package service |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | + "fmt" | ||
5 | + "strconv" | ||
6 | + "strings" | ||
7 | + | ||
4 | "github.com/linmadan/egglib-go/core/application" | 8 | "github.com/linmadan/egglib-go/core/application" |
9 | + "github.com/xuri/excelize/v2" | ||
5 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | 10 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" |
11 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/adapter" | ||
6 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/query" | 12 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/query" |
13 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | ||
7 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao" | 14 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao" |
8 | ) | 15 | ) |
9 | 16 | ||
@@ -67,8 +74,142 @@ func (srv StaffAssessServeice) ListAllAssessCycleDay(param *query.ListAssessCycl | @@ -67,8 +74,142 @@ func (srv StaffAssessServeice) ListAllAssessCycleDay(param *query.ListAssessCycl | ||
67 | } | 74 | } |
68 | 75 | ||
69 | //根据周期id和日期获取 员工填写评估内容 | 76 | //根据周期id和日期获取 员工填写评估内容 |
70 | -// 有过滤查看权限 | ||
71 | -func (srv StaffAssessServeice) ListAllAssessContentCycleDay(param *query.ListAssessContentCycleDay) (map[string]interface{}, error) { | 77 | +//有过滤查看权限 |
78 | +func (srv StaffAssessServeice) ListUserAssessContentCycleDay(param *query.ListAssessContentCycleDay) (*adapter.ListUserAssessContent, error) { | ||
79 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
80 | + if err != nil { | ||
81 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
82 | + } | ||
83 | + if err := transactionContext.StartTransaction(); err != nil { | ||
84 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
85 | + } | ||
86 | + defer func() { | ||
87 | + _ = transactionContext.RollbackTransaction() | ||
88 | + }() | ||
89 | + | ||
90 | + roleRepo := factory.CreateRoleRepository(map[string]interface{}{ | ||
91 | + "transactionContext": transactionContext, | ||
92 | + }) | ||
93 | + roleUserRepo := factory.CreateRoleUserRepository(map[string]interface{}{ | ||
94 | + "transactionContext": transactionContext, | ||
95 | + }) | ||
96 | + _, roleList, err := roleRepo.Find(map[string]interface{}{ | ||
97 | + "type": domain.RoleTypeSystem, | ||
98 | + "companyId": param.CompanyId, | ||
99 | + }) | ||
100 | + if err != nil { | ||
101 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取角色信息列表"+err.Error()) | ||
102 | + } | ||
103 | + _, userRoleList, err := roleUserRepo.Find(map[string]interface{}{ | ||
104 | + "companyId": param.CompanyId, | ||
105 | + "userId": param.OperaterId, | ||
106 | + }) | ||
107 | + if err != nil { | ||
108 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取用户的角色信息列表"+err.Error()) | ||
109 | + } | ||
110 | + hrbp := -1 | ||
111 | + for _, v := range userRoleList { | ||
112 | + for _, v2 := range roleList { | ||
113 | + if v.RoleId == v2.Id { | ||
114 | + hrbp = 1 | ||
115 | + break | ||
116 | + } | ||
117 | + } | ||
118 | + if hrbp == 1 { | ||
119 | + break | ||
120 | + } | ||
121 | + } | ||
122 | + assessDao := dao.NewStaffAssessDao(map[string]interface{}{ | ||
123 | + "transactionContext": transactionContext, | ||
124 | + }) | ||
125 | + | ||
126 | + limit := param.PageSize | ||
127 | + offset := (param.PageNumber - 1) * limit | ||
128 | + cnt, err := assessDao.CountUserAssess(dao.SearchConditin1{ | ||
129 | + CompanyId: param.CompanyId, | ||
130 | + CycleId: param.CycleId, | ||
131 | + BeginDay: param.BeginDay, | ||
132 | + TargetUserName: param.TargetUserName, | ||
133 | + Limit: 5000, | ||
134 | + Offset: 0, | ||
135 | + OperaterId: param.OperaterId, | ||
136 | + Hrbp: hrbp, | ||
137 | + }) | ||
138 | + if err != nil { | ||
139 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "统计总数"+err.Error()) | ||
140 | + } | ||
141 | + contentList, err := assessDao.SearchUserAssessContent(dao.SearchConditin1{ | ||
142 | + CompanyId: param.CompanyId, | ||
143 | + CycleId: param.CycleId, | ||
144 | + BeginDay: param.BeginDay, | ||
145 | + TargetUserName: param.TargetUserName, | ||
146 | + Limit: limit, | ||
147 | + Offset: offset, | ||
148 | + OperaterId: param.OperaterId, | ||
149 | + Hrbp: hrbp, | ||
150 | + }) | ||
151 | + if err != nil { | ||
152 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取数据列表"+err.Error()) | ||
153 | + } | ||
154 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
155 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
156 | + } | ||
157 | + | ||
158 | + //可变的表格列 | ||
159 | + changeableHeader := []adapter.ListTableHeader{ | ||
160 | + {Key: "targetUserName", Name: "姓名"}, //固定列 | ||
161 | + } | ||
162 | + //过滤重复的列 | ||
163 | + headerMap := map[string]string{} | ||
164 | + // 获取已经填报的内容 | ||
165 | + changeableRows := map[string]map[string]string{} | ||
166 | + tableSort := []string{} //确定列表行数据的顺序 | ||
167 | + for i, v := range contentList { | ||
168 | + if _, ok := changeableRows[v.TargetUserId]; !ok { | ||
169 | + changeableRows[v.TargetUserId] = map[string]string{} | ||
170 | + tableSort = append(tableSort, v.TargetUserId) | ||
171 | + } | ||
172 | + changeableRows[v.TargetUserId]["targetUserName"] = v.TargetUserName | ||
173 | + changeableRows[v.TargetUserId]["targetUserId"] = v.TargetUserId | ||
174 | + if v.ContentId > 0 { | ||
175 | + name := fmt.Sprintf("%s-%s", v.Category, v.ContentName) | ||
176 | + key := fmt.Sprintf("k%d", i) | ||
177 | + if _, ok := headerMap[name]; !ok { | ||
178 | + changeableHeader = append(changeableHeader, adapter.ListTableHeader{ | ||
179 | + Key: key, Name: name, | ||
180 | + }) | ||
181 | + headerMap[name] = key | ||
182 | + } | ||
183 | + key = headerMap[name] | ||
184 | + changeableRows[v.TargetUserId][key] = v.Value | ||
185 | + } | ||
186 | + } | ||
187 | + list := []map[string]string{} | ||
188 | + for _, v := range tableSort { | ||
189 | + for _, v2 := range changeableHeader { | ||
190 | + if _, ok := changeableRows[v][v2.Key]; ok { | ||
191 | + continue | ||
192 | + } | ||
193 | + changeableRows[v][v2.Key] = "" | ||
194 | + } | ||
195 | + list = append(list, changeableRows[v]) | ||
196 | + } | ||
197 | + result := adapter.ListUserAssessContent{ | ||
198 | + TableHeader: changeableHeader, | ||
199 | + Total: cnt, | ||
200 | + List: list, | ||
201 | + } | ||
202 | + return &result, nil | ||
203 | +} | ||
204 | + | ||
205 | +type excelTableHeader struct { | ||
206 | + Level1 string | ||
207 | + Level2 string | ||
208 | + Level3 string | ||
209 | + Level4 string | ||
210 | +} | ||
211 | + | ||
212 | +func (srv StaffAssessServeice) ExportUserAssess(param *query.ListAssessContentCycleDay) (*excelize.File, error) { | ||
72 | transactionContext, err := factory.CreateTransactionContext(nil) | 213 | transactionContext, err := factory.CreateTransactionContext(nil) |
73 | if err != nil { | 214 | if err != nil { |
74 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 215 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
@@ -79,11 +220,220 @@ func (srv StaffAssessServeice) ListAllAssessContentCycleDay(param *query.ListAss | @@ -79,11 +220,220 @@ func (srv StaffAssessServeice) ListAllAssessContentCycleDay(param *query.ListAss | ||
79 | defer func() { | 220 | defer func() { |
80 | _ = transactionContext.RollbackTransaction() | 221 | _ = transactionContext.RollbackTransaction() |
81 | }() | 222 | }() |
82 | - // assessDao := dao.NewStaffAssessDao(map[string]interface{}{ | ||
83 | - // "transactionContext": transactionContext, | ||
84 | - // }) | 223 | + |
224 | + roleRepo := factory.CreateRoleRepository(map[string]interface{}{ | ||
225 | + "transactionContext": transactionContext, | ||
226 | + }) | ||
227 | + roleUserRepo := factory.CreateRoleUserRepository(map[string]interface{}{ | ||
228 | + "transactionContext": transactionContext, | ||
229 | + }) | ||
230 | + _, roleList, err := roleRepo.Find(map[string]interface{}{ | ||
231 | + "type": domain.RoleTypeSystem, | ||
232 | + "companyId": param.CompanyId, | ||
233 | + }) | ||
234 | + if err != nil { | ||
235 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取角色信息列表"+err.Error()) | ||
236 | + } | ||
237 | + _, userRoleList, err := roleUserRepo.Find(map[string]interface{}{ | ||
238 | + "companyId": param.CompanyId, | ||
239 | + "userId": param.OperaterId, | ||
240 | + }) | ||
241 | + if err != nil { | ||
242 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取用户的角色信息列表"+err.Error()) | ||
243 | + } | ||
244 | + hrbp := -1 | ||
245 | + for _, v := range userRoleList { | ||
246 | + for _, v2 := range roleList { | ||
247 | + if v.RoleId == v2.Id { | ||
248 | + hrbp = 1 | ||
249 | + break | ||
250 | + } | ||
251 | + } | ||
252 | + if hrbp == 1 { | ||
253 | + break | ||
254 | + } | ||
255 | + } | ||
256 | + assessDao := dao.NewStaffAssessDao(map[string]interface{}{ | ||
257 | + "transactionContext": transactionContext, | ||
258 | + }) | ||
259 | + contentList, err := assessDao.ExportDataUserAssess(dao.SearchConditin1{ | ||
260 | + CompanyId: param.CompanyId, | ||
261 | + CycleId: param.CycleId, | ||
262 | + BeginDay: param.BeginDay, | ||
263 | + TargetUserName: param.TargetUserName, | ||
264 | + Limit: 5000, | ||
265 | + Offset: 0, | ||
266 | + OperaterId: param.OperaterId, | ||
267 | + Hrbp: hrbp, | ||
268 | + }) | ||
269 | + if err != nil { | ||
270 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取数据列表"+err.Error()) | ||
271 | + } | ||
272 | + | ||
85 | if err := transactionContext.CommitTransaction(); err != nil { | 273 | if err := transactionContext.CommitTransaction(); err != nil { |
86 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 274 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
87 | } | 275 | } |
88 | - return nil, nil | 276 | + |
277 | + //处理查询到的数据 | ||
278 | + //汇总 Excel表格的表头描述 | ||
279 | + level1 := []string{} //分类 | ||
280 | + level3 := map[string][]string{} // key=分类+得分项类型 val=名称 | ||
281 | + level4 := map[string]string{} //key=分类+名称 val=评估标准 | ||
282 | + for _, v := range contentList { | ||
283 | + if v.ContentId == 0 { | ||
284 | + continue | ||
285 | + } | ||
286 | + level1Item := "" | ||
287 | + for _, v1 := range level1 { | ||
288 | + if v.Category == v1 { | ||
289 | + level1Item = v1 | ||
290 | + } | ||
291 | + } | ||
292 | + if len(level1Item) == 0 { | ||
293 | + level1 = append(level1, v.Category) | ||
294 | + } | ||
295 | + if v.Weight == 0 { | ||
296 | + level3Key := v.Category + "-加分项" | ||
297 | + if _, ok := level3[level3Key]; !ok { | ||
298 | + level3[level3Key] = []string{} | ||
299 | + } | ||
300 | + level3Item := "" | ||
301 | + for _, v3 := range level3[level3Key] { | ||
302 | + if v3 == v.ContentName { | ||
303 | + level3Item = v.ContentName | ||
304 | + } | ||
305 | + } | ||
306 | + if len(level3Item) == 0 { | ||
307 | + level3[level3Key] = append(level3[level3Key], v.ContentName) | ||
308 | + } | ||
309 | + } | ||
310 | + if v.Weight > 0 { | ||
311 | + level3Key := v.Category + "-得分项" | ||
312 | + if _, ok := level3[level3Key]; !ok { | ||
313 | + level3[level3Key] = []string{} | ||
314 | + } | ||
315 | + level3Item := "" | ||
316 | + for _, v3 := range level3[level3Key] { | ||
317 | + if v3 == v.ContentName { | ||
318 | + level3Item = v.ContentName | ||
319 | + } | ||
320 | + } | ||
321 | + if len(level3Item) == 0 { | ||
322 | + level3[level3Key] = append(level3[level3Key], v.ContentName) | ||
323 | + } | ||
324 | + } | ||
325 | + | ||
326 | + level4Key := v.Category + "+" + v.ContentName | ||
327 | + if _, ok := level4[level4Key]; !ok { | ||
328 | + level4[level4Key] = v.PromptText | ||
329 | + } | ||
330 | + } | ||
331 | + //汇总表头,按列 | ||
332 | + headerList := []excelTableHeader{ | ||
333 | + { | ||
334 | + Level1: "日期", | ||
335 | + Level2: "", | ||
336 | + Level3: "", | ||
337 | + Level4: "评估标准", | ||
338 | + }, { | ||
339 | + Level1: "姓名", | ||
340 | + Level2: "", | ||
341 | + Level3: "", | ||
342 | + Level4: "", | ||
343 | + }, | ||
344 | + } | ||
345 | + for _, v := range level1 { | ||
346 | + item := excelTableHeader{ | ||
347 | + Level1: v, | ||
348 | + } | ||
349 | + level3Key := v + "-加分项" | ||
350 | + if _, ok := level3[level3Key]; ok { | ||
351 | + for _, v2 := range level3[level3Key] { | ||
352 | + item.Level2 = "加分项" | ||
353 | + item.Level3 = v2 | ||
354 | + level4Key := v + "+" + v2 | ||
355 | + item.Level4 = level4[level4Key] | ||
356 | + headerList = append(headerList, item) | ||
357 | + } | ||
358 | + } | ||
359 | + level3Key = v + "-得分项" | ||
360 | + if _, ok := level3[level3Key]; ok { | ||
361 | + for _, v2 := range level3[level3Key] { | ||
362 | + item.Level2 = "得分项" | ||
363 | + item.Level3 = v2 | ||
364 | + level4Key := v + "+" + v2 | ||
365 | + item.Level4 = level4[level4Key] | ||
366 | + headerList = append(headerList, item) | ||
367 | + } | ||
368 | + } | ||
369 | + } | ||
370 | + //数据形式 进行 行列转换 | ||
371 | + tableRows := map[string]map[string]string{} | ||
372 | + tableRowSort := []string{} | ||
373 | + for _, v := range contentList { | ||
374 | + if _, ok := tableRows[v.TargetUserId]; !ok { | ||
375 | + tableRows[v.TargetUserId] = map[string]string{} | ||
376 | + tableRowSort = append(tableRowSort, v.TargetUserId) | ||
377 | + } | ||
378 | + tableRows[v.TargetUserId]["TargetUserName"] = v.TargetUserName | ||
379 | + tableRows[v.TargetUserId]["BeginDay"] = v.BeginDay | ||
380 | + if v.ContentId > 0 { | ||
381 | + value := []string{v.Value} | ||
382 | + for _, v2 := range v.Remark { | ||
383 | + value = append(value, v2.RemarkText) | ||
384 | + } | ||
385 | + key := v.Category + "+" + v.ContentName | ||
386 | + tableRows[v.TargetUserId][key] = strings.Join(value, "\n") | ||
387 | + } | ||
388 | + } | ||
389 | + //将数据写入xlsx | ||
390 | + xlsxFile := excelize.NewFile() | ||
391 | + sheetIndex := xlsxFile.GetActiveSheetIndex() | ||
392 | + sheetName := xlsxFile.GetSheetName(sheetIndex) | ||
393 | + //写入第一行 | ||
394 | + xlsxFile.SetCellStr(sheetName, "A1", "每日绩效汇总") | ||
395 | + //写入二到五行 | ||
396 | + for k, v := range headerList { | ||
397 | + colName, _ := excelize.ColumnNumberToName(k + 1) | ||
398 | + xlsxFile.SetCellStr(sheetName, colName+"2", v.Level1) | ||
399 | + xlsxFile.SetCellStr(sheetName, colName+"3", v.Level2) | ||
400 | + xlsxFile.SetCellStr(sheetName, colName+"4", v.Level3) | ||
401 | + xlsxFile.SetCellStr(sheetName, colName+"5", v.Level4) | ||
402 | + } | ||
403 | + //从第六行开始写入用户填写的评估数据 | ||
404 | + for k, v := range tableRowSort { | ||
405 | + rowNum := strconv.Itoa(k + 6) | ||
406 | + row := tableRows[v] | ||
407 | + for k2, v2 := range headerList { | ||
408 | + if k2 == 0 { | ||
409 | + xlsxFile.SetCellStr(sheetName, "A"+rowNum, row["BeginDay"]) | ||
410 | + continue | ||
411 | + } | ||
412 | + if k2 == 1 { | ||
413 | + xlsxFile.SetCellStr(sheetName, "B"+rowNum, row["TargetUserName"]) | ||
414 | + continue | ||
415 | + } | ||
416 | + colName, _ := excelize.ColumnNumberToName(k2 + 1) | ||
417 | + key := v2.Level1 + "+" + v2.Level3 | ||
418 | + if mVal, ok := row[key]; ok { | ||
419 | + xlsxFile.SetCellStr(sheetName, colName+rowNum, mVal) | ||
420 | + } | ||
421 | + } | ||
422 | + } | ||
423 | + //TODO 调整样式 | ||
424 | + xlsxFile.MergeCell(sheetName, "A2", "A4") | ||
425 | + xlsxFile.MergeCell(sheetName, "B2", "B4") | ||
426 | + xlsxFile.MergeCell(sheetName, "B5", "B5") | ||
427 | + //设置行高 | ||
428 | + for i := range tableRowSort { | ||
429 | + xlsxFile.SetRowHeight(sheetName, i+5, 50) | ||
430 | + } | ||
431 | + //设置列宽 | ||
432 | + for i := range headerList { | ||
433 | + colName, _ := excelize.ColumnNumberToName(i + 1) | ||
434 | + if i == 0 { | ||
435 | + xlsxFile.SetColWidth(sheetName, colName, colName, 30) | ||
436 | + } | ||
437 | + } | ||
438 | + return xlsxFile, nil | ||
89 | } | 439 | } |
@@ -124,7 +124,7 @@ func (d *StaffAssessDao) AllAssessCycleList(companyId int) ([]AssessCycle, error | @@ -124,7 +124,7 @@ func (d *StaffAssessDao) AllAssessCycleList(companyId int) ([]AssessCycle, error | ||
124 | companyId, | 124 | companyId, |
125 | } | 125 | } |
126 | result := []AssessCycle{} | 126 | result := []AssessCycle{} |
127 | - _, err := tx.QueryOne(&result, sqlStr, condition...) | 127 | + _, err := tx.Query(&result, sqlStr, condition...) |
128 | return result, err | 128 | return result, err |
129 | } | 129 | } |
130 | 130 | ||
@@ -149,12 +149,14 @@ func (d *StaffAssessDao) AllAssessCycleDayList(companyId int, cycleId int) ([]As | @@ -149,12 +149,14 @@ func (d *StaffAssessDao) AllAssessCycleDayList(companyId int, cycleId int) ([]As | ||
149 | cycleId, companyId, | 149 | cycleId, companyId, |
150 | } | 150 | } |
151 | result := []AssessCycleDay{} | 151 | result := []AssessCycleDay{} |
152 | - _, err := tx.QueryOne(&result, sqlStr, condition...) | 152 | + _, err := tx.Query(&result, sqlStr, condition...) |
153 | return result, err | 153 | return result, err |
154 | } | 154 | } |
155 | 155 | ||
156 | //获取员工填写评估内容 | 156 | //获取员工填写评估内容 |
157 | type UserAssessContent struct { | 157 | type UserAssessContent struct { |
158 | + AssessId string `json:"assessId"` | ||
159 | + ContentId int `json:"contentId"` | ||
158 | TargetUserId string `json:"targetUserId"` //被评估人的id | 160 | TargetUserId string `json:"targetUserId"` //被评估人的id |
159 | TargetUserName string `json:"targetUserName"` //被评估人的名称 | 161 | TargetUserName string `json:"targetUserName"` //被评估人的名称 |
160 | BeginDay string `json:"beginDay"` //评估的日期 | 162 | BeginDay string `json:"beginDay"` //评估的日期 |
@@ -167,17 +169,19 @@ type UserAssessContent struct { | @@ -167,17 +169,19 @@ type UserAssessContent struct { | ||
167 | } | 169 | } |
168 | 170 | ||
169 | type SearchConditin1 struct { | 171 | type SearchConditin1 struct { |
170 | - CompanyId int //公司id | ||
171 | - CycleId int //周期id | ||
172 | - BeginDay string //评估的日期 | ||
173 | - TargetUserName string //被评估人的名称 | ||
174 | - Limit int //分页 | ||
175 | - Offset int //分页 | ||
176 | - OperaterId int //用户的id是谁在搜索数据 | ||
177 | - Hrbp int // | 172 | + CompanyId int //公司id |
173 | + AssessId int //评估任务id | ||
174 | + CycleId int //周期id | ||
175 | + BeginDay string //评估的日期 | ||
176 | + TargetUserName string //被评估人的名称 | ||
177 | + TargetUserId []string //查询指定的人 | ||
178 | + Limit int //分页 | ||
179 | + Offset int //分页 | ||
180 | + OperaterId int //用户的id是谁在搜索数据 | ||
181 | + Hrbp int // | ||
178 | } | 182 | } |
179 | 183 | ||
180 | -//根据周期的id和日期获取员工填写的评估内容 | 184 | +//项目管理-成员列表 根据周期的id和日期获取员工填写的评估内容 |
181 | //companyId int 公司id | 185 | //companyId int 公司id |
182 | //cycleId int, 评估周期id | 186 | //cycleId int, 评估周期id |
183 | //userId int, 用户id,谁要查看数据 | 187 | //userId int, 用户id,谁要查看数据 |
@@ -186,18 +190,26 @@ type SearchConditin1 struct { | @@ -186,18 +190,26 @@ type SearchConditin1 struct { | ||
186 | //limit int, 分页条数 | 190 | //limit int, 分页条数 |
187 | //offset int 分页偏移 | 191 | //offset int 分页偏移 |
188 | func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserAssessContent, error) { | 192 | func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserAssessContent, error) { |
193 | + if param.Offset < 0 { | ||
194 | + param.Offset = 0 | ||
195 | + } | ||
196 | + if param.Limit < 0 { | ||
197 | + param.Limit = 20 | ||
198 | + } | ||
189 | sqlStr := ` select | 199 | sqlStr := ` select |
190 | t_staff_assess_1.target_user_id,t_staff_assess_1.target_user_name,t_staff_assess_1.begin_day, | 200 | t_staff_assess_1.target_user_id,t_staff_assess_1.target_user_name,t_staff_assess_1.begin_day, |
201 | + t_staff_assess_1.assess_id,staff_assess_content.id as content_id, | ||
191 | staff_assess_content.value ,staff_assess_content.sort_by , | 202 | staff_assess_content.value ,staff_assess_content.sort_by , |
192 | staff_assess_content.category ,staff_assess_content."name" as content_name , | 203 | staff_assess_content.category ,staff_assess_content."name" as content_name , |
193 | staff_assess_content.weight | 204 | staff_assess_content.weight |
194 | from t_staff_assess_1 | 205 | from t_staff_assess_1 |
195 | left join staff_assess_content on t_staff_assess_1.assess_id = staff_assess_content.staff_assess_id | 206 | left join staff_assess_content on t_staff_assess_1.assess_id = staff_assess_content.staff_assess_id |
207 | + where 1=1 | ||
196 | ` | 208 | ` |
197 | condition := []interface{}{} | 209 | condition := []interface{}{} |
198 | if len(param.TargetUserName) > 0 { | 210 | if len(param.TargetUserName) > 0 { |
199 | - sqlStr += ` where t_staff_assess_1.target_user_name like ? ` | ||
200 | - condition = append(condition, param.TargetUserName) | 211 | + sqlStr += ` and t_staff_assess_1.target_user_name like ? ` |
212 | + condition = append(condition, "%"+param.TargetUserName+"%") | ||
201 | } | 213 | } |
202 | //加入排序 | 214 | //加入排序 |
203 | sqlStr += ` order by convert_to(t_staff_assess_1.target_user_name,'GBK'),staff_assess_content.sort_by ` | 215 | sqlStr += ` order by convert_to(t_staff_assess_1.target_user_name,'GBK'),staff_assess_content.sort_by ` |
@@ -206,11 +218,11 @@ func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserA | @@ -206,11 +218,11 @@ func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserA | ||
206 | sqlStr = sqlStr0 + sqlStr | 218 | sqlStr = sqlStr0 + sqlStr |
207 | tx := d.transactionContext.PgTx | 219 | tx := d.transactionContext.PgTx |
208 | var result []UserAssessContent | 220 | var result []UserAssessContent |
209 | - _, err := tx.QueryOne(&result, sqlStr, condition...) | 221 | + _, err := tx.Query(&result, sqlStr, condition...) |
210 | return result, err | 222 | return result, err |
211 | } | 223 | } |
212 | 224 | ||
213 | -//根据周期的id和日期获取员工填写的评估内容,数量统计 | 225 | +//项目管理-成员列表 根据周期的id和日期获取员工填写的评估内容,数量统计 |
214 | //companyId int 公司id | 226 | //companyId int 公司id |
215 | //cycleId int, 评估周期id | 227 | //cycleId int, 评估周期id |
216 | //userId int, 用户id,谁要查看数据 | 228 | //userId int, 用户id,谁要查看数据 |
@@ -218,28 +230,19 @@ func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserA | @@ -218,28 +230,19 @@ func (d *StaffAssessDao) SearchUserAssessContent(param SearchConditin1) ([]UserA | ||
218 | //hrbp 是否搜索HRBP角色的用户可以查看,1:是;-1:否 | 230 | //hrbp 是否搜索HRBP角色的用户可以查看,1:是;-1:否 |
219 | //limit int, 分页条数 | 231 | //limit int, 分页条数 |
220 | //offset int 分页偏移 | 232 | //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 | - ` | 233 | +func (d *StaffAssessDao) CountUserAssess(param SearchConditin1) (int, error) { |
234 | + sqlStr := ` select count(*) from t_staff_assess_1 where 1=1 ` | ||
230 | condition := []interface{}{} | 235 | condition := []interface{}{} |
231 | if len(param.TargetUserName) > 0 { | 236 | if len(param.TargetUserName) > 0 { |
232 | - sqlStr += ` where t_staff_assess_1.target_user_name like ? ` | ||
233 | - condition = append(condition, param.TargetUserName) | 237 | + sqlStr += ` and t_staff_assess_1.target_user_name like ? ` |
238 | + condition = append(condition, "%"+param.TargetUserName+"%") | ||
234 | } | 239 | } |
235 | - //加入排序 | ||
236 | - sqlStr += ` order by convert_to(t_staff_assess_1.target_user_name,'GBK'),staff_assess_content.sort_by ` | ||
237 | //获取前置sql语句 | 240 | //获取前置sql语句 |
238 | - sqlStr0 := d.useTStaffAssess(param.CompanyId, param.CycleId, param.OperaterId, param.BeginDay, param.Hrbp, param.Limit, param.Offset) | 241 | + sqlStr0 := d.useTStaffAssess(param.CompanyId, param.CycleId, param.OperaterId, param.BeginDay, param.Hrbp, 5000, 0) |
239 | sqlStr = sqlStr0 + sqlStr | 242 | sqlStr = sqlStr0 + sqlStr |
240 | tx := d.transactionContext.PgTx | 243 | tx := d.transactionContext.PgTx |
241 | - var result []UserAssessContent | ||
242 | - _, err := tx.QueryOne(&result, sqlStr, condition...) | 244 | + var result int |
245 | + _, err := tx.QueryOne(pg.Scan(&result), sqlStr, condition...) | ||
243 | return result, err | 246 | return result, err |
244 | } | 247 | } |
245 | 248 | ||
@@ -323,3 +326,57 @@ func (d *StaffAssessDao) useTStaffAssess(companyId int, cycleId int, userId int, | @@ -323,3 +326,57 @@ func (d *StaffAssessDao) useTStaffAssess(companyId int, cycleId int, userId int, | ||
323 | sqlstr = fmt.Sprintf(sqlstr, params...) | 326 | sqlstr = fmt.Sprintf(sqlstr, params...) |
324 | return sqlstr | 327 | return sqlstr |
325 | } | 328 | } |
329 | + | ||
330 | +type ExportData1 struct { | ||
331 | + AssessId string | ||
332 | + ContentId int | ||
333 | + TargetUserId string //被评估人的id | ||
334 | + TargetUserName string //被评估人的名称 | ||
335 | + BeginDay string //评估的日期 | ||
336 | + EvaluationProjectId string //项目id | ||
337 | + Value string //评估填写的值 | ||
338 | + SortBy int //评估项顺序 | ||
339 | + Category string //评估项分类 | ||
340 | + ContentName string //评估项名称 | ||
341 | + Weight int //权重 | ||
342 | + PromptText string //评估标准 | ||
343 | + Remark []domain.AssessContemtRemark | ||
344 | +} | ||
345 | + | ||
346 | +//项目管理-成员列表 导出数据 | ||
347 | +func (d *StaffAssessDao) ExportDataUserAssess(param SearchConditin1) ([]ExportData1, error) { | ||
348 | + if param.Offset < 0 { | ||
349 | + param.Offset = 0 | ||
350 | + } | ||
351 | + if param.Limit < 0 { | ||
352 | + param.Limit = 5000 | ||
353 | + } | ||
354 | + sqlStr := ` select | ||
355 | + t_staff_assess_1.target_user_id,t_staff_assess_1.target_user_name,t_staff_assess_1.begin_day, | ||
356 | + t_staff_assess_1.assess_id,staff_assess_content.id as content_id, | ||
357 | + staff_assess_content.value ,staff_assess_content.sort_by , | ||
358 | + staff_assess_content.category ,staff_assess_content."name" as content_name , | ||
359 | + staff_assess_content.weight,staff_assess_content.prompt_text ,staff_assess_content.remark | ||
360 | + from t_staff_assess_1 | ||
361 | + left join staff_assess_content on t_staff_assess_1.assess_id = staff_assess_content.staff_assess_id | ||
362 | + where 1=1 | ||
363 | + ` | ||
364 | + condition := []interface{}{} | ||
365 | + if len(param.TargetUserName) > 0 { | ||
366 | + sqlStr += ` and t_staff_assess_1.target_user_name like ? ` | ||
367 | + condition = append(condition, "%"+param.TargetUserName+"%") | ||
368 | + } | ||
369 | + if len(param.TargetUserId) > 0 { | ||
370 | + sqlStr += ` and t_staff_assess_1.target_user_id in (?) ` | ||
371 | + condition = append(condition, pg.In(param.TargetUserId)) | ||
372 | + } | ||
373 | + //加入排序 | ||
374 | + sqlStr += ` order by convert_to(t_staff_assess_1.target_user_name,'GBK'),staff_assess_content.sort_by ` | ||
375 | + //获取前置sql语句 | ||
376 | + sqlStr0 := d.useTStaffAssess(param.CompanyId, param.CycleId, param.OperaterId, param.BeginDay, param.Hrbp, param.Limit, param.Offset) | ||
377 | + sqlStr = sqlStr0 + sqlStr | ||
378 | + tx := d.transactionContext.PgTx | ||
379 | + var result []ExportData1 | ||
380 | + _, err := tx.Query(&result, sqlStr, condition...) | ||
381 | + return result, err | ||
382 | +} |
@@ -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 | } |
1 | package controllers | 1 | package controllers |
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 | "github.com/linmadan/egglib-go/web/beego" | 7 | "github.com/linmadan/egglib-go/web/beego" |
6 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/command" | 8 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/command" |
@@ -283,15 +285,7 @@ func (c *StaffAssessController) ListTargetUserMeSupperAssess() { | @@ -283,15 +285,7 @@ func (c *StaffAssessController) ListTargetUserMeSupperAssess() { | ||
283 | //获取周期列表 | 285 | //获取周期列表 |
284 | func (c *StaffAssessController) ListAssessCycle() { | 286 | func (c *StaffAssessController) ListAssessCycle() { |
285 | srv := service.NewStaffAssessServeice() | 287 | 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) | 288 | userReq := middlewares.GetUser(c.Ctx) |
294 | - | ||
295 | data, err := srv.ListAllAssessCycle(int(userReq.CompanyId)) | 289 | data, err := srv.ListAllAssessCycle(int(userReq.CompanyId)) |
296 | c.Response(data, err) | 290 | c.Response(data, err) |
297 | } | 291 | } |
@@ -311,3 +305,46 @@ func (c *StaffAssessController) ListAssessCycleDay() { | @@ -311,3 +305,46 @@ func (c *StaffAssessController) ListAssessCycleDay() { | ||
311 | data, err := srv.ListAllAssessCycleDay(paramReq) | 305 | data, err := srv.ListAllAssessCycleDay(paramReq) |
312 | c.Response(data, err) | 306 | c.Response(data, err) |
313 | } | 307 | } |
308 | + | ||
309 | +//根据周期里的考核日期,获取员工填写评估内容列表 | ||
310 | +func (c *StaffAssessController) ListAssessContentCycleDay() { | ||
311 | + srv := service.NewStaffAssessServeice() | ||
312 | + paramReq := &query.ListAssessContentCycleDay{} | ||
313 | + err := c.BindJSON(paramReq) | ||
314 | + if err != nil { | ||
315 | + e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error()) | ||
316 | + c.Response(nil, e) | ||
317 | + return | ||
318 | + } | ||
319 | + userReq := middlewares.GetUser(c.Ctx) | ||
320 | + paramReq.CompanyId = int(userReq.CompanyId) | ||
321 | + paramReq.OperaterId = int(userReq.UserId) | ||
322 | + data, err := srv.ListUserAssessContentCycleDay(paramReq) | ||
323 | + c.Response(data, err) | ||
324 | +} | ||
325 | + | ||
326 | +//根据周期里的考核日期,获取员工填写评估内容列表,导出为xlsx文件 | ||
327 | +func (c *StaffAssessController) ExportAssessContentCycleDay() { | ||
328 | + srv := service.NewStaffAssessServeice() | ||
329 | + paramReq := &query.ListAssessContentCycleDay{} | ||
330 | + err := c.BindJSON(paramReq) | ||
331 | + if err != nil { | ||
332 | + e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error()) | ||
333 | + c.Response(nil, e) | ||
334 | + return | ||
335 | + } | ||
336 | + userReq := middlewares.GetUser(c.Ctx) | ||
337 | + paramReq.CompanyId = int(userReq.CompanyId) | ||
338 | + paramReq.OperaterId = int(userReq.UserId) | ||
339 | + data, err := srv.ExportUserAssess(paramReq) | ||
340 | + if err != nil { | ||
341 | + c.Response(nil, err) | ||
342 | + } | ||
343 | + fileName := fmt.Sprintf("每日绩效汇总%s", paramReq.BeginDay) | ||
344 | + c.Ctx.Output.Header("Content-Disposition", "attachment;filename="+fileName) | ||
345 | + c.Ctx.Output.Header("Content-Description", "FileTransfer") | ||
346 | + c.Ctx.Output.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") | ||
347 | + c.Ctx.Output.Header("Content-Transfer-Encoding", "binary") | ||
348 | + c.Ctx.Output.Header("Expires", "0") | ||
349 | + data.Write(c.Ctx.ResponseWriter) | ||
350 | +} |
1 | package middlewares | 1 | package middlewares |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | + "strings" | ||
5 | + | ||
4 | "github.com/beego/beego/v2/server/web/context" | 6 | "github.com/beego/beego/v2/server/web/context" |
5 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/constant" | 7 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/constant" |
6 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | 8 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" |
@@ -8,7 +10,17 @@ import ( | @@ -8,7 +10,17 @@ import ( | ||
8 | 10 | ||
9 | func CheckFontToken() func(ctx *context.Context) { | 11 | func CheckFontToken() func(ctx *context.Context) { |
10 | return func(ctx *context.Context) { | 12 | return func(ctx *context.Context) { |
11 | - adminToken := ctx.Input.Header("x-font-token") | 13 | + // adminToken := ctx.Input.Header("x-font-token") |
14 | + // Bearer authorization_token | ||
15 | + adminToken := ctx.Input.Header("Authorization") | ||
16 | + //以一个空格" ",做切分 | ||
17 | + strList := strings.Split(adminToken, " ") | ||
18 | + if len(strList) > 1 { | ||
19 | + adminToken = strList[1] | ||
20 | + } | ||
21 | + if len(strList) == 1 { | ||
22 | + adminToken = strList[0] | ||
23 | + } | ||
12 | userAuth, err := (&domain.UserAuth{}).ParseAccessToken(adminToken) | 24 | userAuth, err := (&domain.UserAuth{}).ParseAccessToken(adminToken) |
13 | if err != nil || userAuth.UserId <= 0 { | 25 | if err != nil || userAuth.UserId <= 0 { |
14 | forbidden(ctx) | 26 | forbidden(ctx) |
@@ -10,11 +10,13 @@ import ( | @@ -10,11 +10,13 @@ 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), //根据周期里的考核日期,获取员工填写评估内容列表 | ||
19 | + web.NSCtrlPost("/cycle/day/content/export", (*controllers.StaffAssessController).ExportAssessContentCycleDay), //根据周期里的考核日期,导出员工填写评估内容列表 | ||
18 | ) | 20 | ) |
19 | // /v1/staff-assess/self/me/list | 21 | // /v1/staff-assess/self/me/list |
20 | assessNS := web.NewNamespace("/v1/staff-assess", | 22 | assessNS := web.NewNamespace("/v1/staff-assess", |
sql/2022-11-28.sql
0 → 100644
-
请 注册 或 登录 后发表评论