| | |
| | | "github.com/xuri/excelize/v2" |
| | | "silkserver/constvar" |
| | | "silkserver/controllers/request" |
| | | "silkserver/controllers/response" |
| | | "silkserver/extend/code" |
| | | "silkserver/extend/util" |
| | | "silkserver/middleware" |
| | | "silkserver/models" |
| | | "silkserver/pkg/logx" |
| | | "silkserver/pkg/timex" |
| | | "strings" |
| | | "time" |
| | | ) |
| | | |
| | |
| | | util.ResponseFormatList(c, code.Success, manages, total) |
| | | } |
| | | |
| | | // GetAttendanceStatistic |
| | | // |
| | | // @Tags 考勤管理 |
| | | // @Summary 获取考勤统计 |
| | | // @Produce application/json |
| | | // @Param object body request.GetAttendanceStatistic true "参数" |
| | | // @Param Authorization header string true "token" |
| | | // @Success 200 {object} util.Response{data=response.AttendanceList} "成功" |
| | | // @Router /api-jl/v1/attendance/getAttendanceStatistic [post] |
| | | func (slf AttendanceController) GetAttendanceStatistic(c *gin.Context) { |
| | | var params request.GetAttendanceStatistic |
| | | err := c.BindJSON(¶ms) |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误") |
| | | return |
| | | } |
| | | if params.Month == "" { |
| | | util.ResponseFormat(c, code.RequestParamError, "参数不能为空") |
| | | return |
| | | } |
| | | manages, err := models.NewAttendanceManageSearch().SetMonth(params.Month).SetPreload(true).FindNotTotal() |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, err) |
| | | return |
| | | } |
| | | m := make(map[string]response.AttendanceStatistic) |
| | | for _, manage := range manages { |
| | | var as response.AttendanceStatistic |
| | | if _, ok := m[manage.WorkerId]; ok { |
| | | as = m[manage.WorkerId] |
| | | } else { |
| | | as.WorkerId = manage.WorkerId |
| | | as.WorkerName = manage.WorkerName |
| | | as.WorkType = manage.WorkType.WorkName |
| | | as.Month = params.Month |
| | | } |
| | | as.WeekdayOverTime = as.WeekdayOverTime.Add(manage.OverTimeDuration) |
| | | as.ActualAttendanceDays = as.ActualAttendanceDays + 1 |
| | | var ad response.AttendanceDetail |
| | | ad.Date = strings.ReplaceAll(manage.Date, params.Month+"-", "") |
| | | ad.Status = manage.Status |
| | | as.Details = append(as.Details, ad) |
| | | |
| | | m[manage.WorkerId] = as |
| | | } |
| | | var list response.AttendanceList |
| | | for _, statistic := range m { |
| | | list.List = append(list.List, statistic) |
| | | } |
| | | |
| | | util.ResponseFormat(c, code.Success, list) |
| | | } |
| | | |
| | | // DeleteAttendanceInfo |
| | | // |
| | | // @Tags 考勤管理 |