Merge remote-tracking branch 'origin/test' into test
正在显示
5 个修改的文件
包含
89 行增加
和
12 行删除
@@ -2,6 +2,7 @@ package service | @@ -2,6 +2,7 @@ package service | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "fmt" | 4 | "fmt" |
5 | + "strconv" | ||
5 | "strings" | 6 | "strings" |
6 | 7 | ||
7 | "github.com/linmadan/egglib-go/core/application" | 8 | "github.com/linmadan/egglib-go/core/application" |
@@ -206,7 +207,7 @@ type excelTableHeader struct { | @@ -206,7 +207,7 @@ type excelTableHeader struct { | ||
206 | Level4 string | 207 | Level4 string |
207 | } | 208 | } |
208 | 209 | ||
209 | -func (srv StaffAssessServeice) ExportUserAssess(param *query.ListAssessContentCycleDay) ([]byte, error) { | 210 | +func (srv StaffAssessServeice) ExportUserAssess(param *query.ListAssessContentCycleDay) (*excelize.File, error) { |
210 | transactionContext, err := factory.CreateTransactionContext(nil) | 211 | transactionContext, err := factory.CreateTransactionContext(nil) |
211 | if err != nil { | 212 | if err != nil { |
212 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 213 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
@@ -382,7 +383,7 @@ func (srv StaffAssessServeice) ExportUserAssess(param *query.ListAssessContentCy | @@ -382,7 +383,7 @@ func (srv StaffAssessServeice) ExportUserAssess(param *query.ListAssessContentCy | ||
382 | xlsxFile := excelize.NewFile() | 383 | xlsxFile := excelize.NewFile() |
383 | sheetIndex := xlsxFile.GetActiveSheetIndex() | 384 | sheetIndex := xlsxFile.GetActiveSheetIndex() |
384 | sheetName := xlsxFile.GetSheetName(sheetIndex) | 385 | sheetName := xlsxFile.GetSheetName(sheetIndex) |
385 | - // 写入第一行 | 386 | + //写入第一行 |
386 | xlsxFile.SetCellStr(sheetName, "A1", "每日绩效汇总") | 387 | xlsxFile.SetCellStr(sheetName, "A1", "每日绩效汇总") |
387 | //写入二到五行 | 388 | //写入二到五行 |
388 | for k, v := range headerList { | 389 | for k, v := range headerList { |
@@ -393,5 +394,39 @@ func (srv StaffAssessServeice) ExportUserAssess(param *query.ListAssessContentCy | @@ -393,5 +394,39 @@ func (srv StaffAssessServeice) ExportUserAssess(param *query.ListAssessContentCy | ||
393 | xlsxFile.SetCellStr(sheetName, colName+"5", v.Level4) | 394 | xlsxFile.SetCellStr(sheetName, colName+"5", v.Level4) |
394 | } | 395 | } |
395 | //从第六行开始写入用户填写的评估数据 | 396 | //从第六行开始写入用户填写的评估数据 |
396 | - return nil, nil | 397 | + for k, v := range tableRowSort { |
398 | + rowNum := strconv.Itoa(k + 6) | ||
399 | + row := tableRows[v] | ||
400 | + for k2, v2 := range headerList { | ||
401 | + if k2 == 0 { | ||
402 | + xlsxFile.SetCellStr(sheetName, "A"+rowNum, row["BeginDay"]) | ||
403 | + continue | ||
404 | + } | ||
405 | + if k2 == 1 { | ||
406 | + xlsxFile.SetCellStr(sheetName, "B"+rowNum, row["TargetUserName"]) | ||
407 | + continue | ||
408 | + } | ||
409 | + colName, _ := excelize.ColumnNumberToName(k2 + 1) | ||
410 | + key := v2.Level1 + "+" + v2.Level3 | ||
411 | + if mVal, ok := row[key]; ok { | ||
412 | + xlsxFile.SetCellStr(sheetName, colName+rowNum, mVal) | ||
413 | + } | ||
414 | + } | ||
415 | + } | ||
416 | + //TODO 调整样式 | ||
417 | + xlsxFile.MergeCell(sheetName, "A2", "A4") | ||
418 | + xlsxFile.MergeCell(sheetName, "B2", "B4") | ||
419 | + xlsxFile.MergeCell(sheetName, "B5", "B5") | ||
420 | + //设置行高 | ||
421 | + for i := range tableRowSort { | ||
422 | + xlsxFile.SetRowHeight(sheetName, i+6, 50) | ||
423 | + } | ||
424 | + //设置列宽 | ||
425 | + for i := range headerList { | ||
426 | + colName, _ := excelize.ColumnNumberToName(i + 1) | ||
427 | + if i == 0 { | ||
428 | + xlsxFile.SetColWidth(sheetName, colName, colName, 70) | ||
429 | + } | ||
430 | + } | ||
431 | + return xlsxFile, nil | ||
397 | } | 432 | } |
@@ -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,13 @@ func (d *StaffAssessDao) AllAssessCycleDayList(companyId int, cycleId int) ([]As | @@ -149,12 +149,13 @@ 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"` | ||
158 | TargetUserId string `json:"targetUserId"` //被评估人的id | 159 | TargetUserId string `json:"targetUserId"` //被评估人的id |
159 | TargetUserName string `json:"targetUserName"` //被评估人的名称 | 160 | TargetUserName string `json:"targetUserName"` //被评估人的名称 |
160 | BeginDay string `json:"beginDay"` //评估的日期 | 161 | BeginDay string `json:"beginDay"` //评估的日期 |
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" |
@@ -320,3 +322,29 @@ func (c *StaffAssessController) ListAssessContentCycleDay() { | @@ -320,3 +322,29 @@ func (c *StaffAssessController) ListAssessContentCycleDay() { | ||
320 | data, err := srv.ListUserAssessContentCycleDay(paramReq) | 322 | data, err := srv.ListUserAssessContentCycleDay(paramReq) |
321 | c.Response(data, err) | 323 | c.Response(data, err) |
322 | } | 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,12 +10,13 @@ import ( | @@ -10,12 +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), //获取周期中的考核日期 | ||
18 | - web.NSCtrlPost("/cycle/day/content", (*controllers.StaffAssessController).ListAssessContentCycleDay), //根据周期里的考核日期,获取员工填写评估内容列表 | 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), //根据周期里的考核日期,导出员工填写评估内容列表 | ||
19 | ) | 20 | ) |
20 | // /v1/staff-assess/self/me/list | 21 | // /v1/staff-assess/self/me/list |
21 | assessNS := web.NewNamespace("/v1/staff-assess", | 22 | assessNS := web.NewNamespace("/v1/staff-assess", |
-
请 注册 或 登录 后发表评论