liujiandao
2024-04-22 20af882d5a8b59f4c4a5645fd2e4fd4a244609f2
controllers/attendance_controller.go
@@ -6,12 +6,14 @@
   "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"
)
@@ -185,6 +187,59 @@
   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(&params)
   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      考勤管理