123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- package service
- import (
- "dy-admin/internal/pcmserver/bus/model"
- "dy-admin/internal/pcmserver/bus/model/request"
- "dy-admin/internal/pcmserver/common"
- "dy-admin/internal/pcmserver/global"
- "dy-admin/internal/pcmserver/pkg/code"
- systemService "dy-admin/internal/pcmserver/sys/service"
- "dy-admin/internal/pcmserver/utils"
- "dy-admin/pkg/log"
- "dy-admin/pkg/rescode"
- "go.uber.org/zap"
- "time"
- )
- type GridOpenLogService struct {
- }
- func (s *GridOpenLogService) CreateGridOpenLog(log model.GridOpenLog) (err error) {
- err = global.DB.Create(&log).Error
- if err != nil {
- return rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
- }
- return
- }
- func (s *GridOpenLogService) DeleteGridOpenLogByIds(ids common.IdsReq) (err error) {
- if err = global.DB.Delete(&[]model.GridOpenLog{}, "id in (?)", ids.IDs).Error; err != nil {
- return rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
- }
- return
- }
- func (s *GridOpenLogService) GetGridOpenLogList(info request.GridOpenLogSearch, dataPermission *BusPermission) (list []model.GridOpenLog, total int64, err error) {
- var limit, offset int
- if info.Page == 0 || info.PageSize == 0 {
- limit = -1
- offset = -1
- } else {
- limit = info.PageSize
- offset = info.PageSize * (info.Page - 1)
- }
- var (
- startTime, endTime *time.Time
- )
- if info.StartTimeStr != "" {
- startTime, err = utils.ParseSecondTime(info.StartTimeStr)
- if err != nil {
- return list, total, rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrLeaveParseTimeCode])
- }
- }
- if info.EndTimeStr != "" {
- endTime, err = utils.ParseSecondTime(info.EndTimeStr)
- if err != nil {
- return list, total, rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrLeaveParseTimeCode])
- }
- }
- var logModel model.GridOpenLog
- db := global.DB.Model(&logModel).Scopes(Permission(logModel.TableName(), dataPermission))
- if info.DepartmentName != "" {
- db = db.Where("department_name LIKE ?", "%"+info.DepartmentName+"%")
- }
- if info.StaffName != "" {
- db = db.Where("staff_name LIKE ?", "%"+info.StaffName+"%")
- }
- if info.CabinetName != "" {
- db = db.Where("cabinet_name LIKE ?", "%"+info.CabinetName+"%")
- }
- if info.OpenState != "" {
- db = db.Where("open_state = ?", info.OpenState)
- }
- if info.Year != 0 {
- db = db.Where("year = ?", info.Year)
- }
- if info.Month != 0 {
- db.Where("month = ?", info.Month)
- }
- if info.Week != 0 {
- db.Where("week = ?", info.Week)
- }
- if startTime != nil && endTime == nil {
- db = db.Where("created_at >= ?", startTime).Where("created_at <= ?", time.Now())
- }
- if endTime != nil && startTime == nil {
- db = db.Where("created_at >= ?", time.Now()).Where("created_at <= ?", endTime)
- }
- if startTime != nil && endTime != nil {
- db = db.Where("created_at >= ?", startTime).Where("created_at <= ?", endTime)
- }
- err = db.Count(&total).Error
- if err != nil {
- return
- }
- if err = db.Order("id desc").Limit(limit).Offset(offset).Find(&list).Error; err != nil {
- return list, total, rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
- }
- return
- }
- func (s *GridOpenLogService) GetGridOpenLogStatistics(info request.GridOpenLogStatistics) (list []model.LogStatistics, err error) {
- var (
- startTime, endTime *time.Time
- )
- if info.StartTimeStr != "" {
- startTime, err = utils.ParseMinuteTime(info.StartTimeStr)
- if err != nil {
- return list, rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrLeaveParseTimeCode])
- }
- }
- if info.EndTimeStr != "" {
- endTime, err = utils.ParseMinuteTime(info.EndTimeStr)
- if err != nil {
- return list, rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrLeaveParseTimeCode])
- }
- }
- var where string
- args := make([]interface{}, 0)
- deptIds, err := systemService.ServicesGroupApp.DeptService.GetSonDeptIds(info.DeptID)
- if err != nil {
- log.Warn("get son deptIds err", zap.Error(err))
- } else {
- where = "Where department_id in (?)"
- args = append(args, deptIds)
- }
- if info.Year != 0 {
- where += " AND year = ?"
- args = append(args, info.Year)
- }
- if info.Month != 0 {
- where += " AND month = ?"
- args = append(args, info.Month)
- }
- if info.Week != 0 {
- where += " AND week = ?"
- args = append(args, info.Week)
- }
- if info.OpenState != "" {
- where += " AND open_state = ?"
- args = append(args, info.OpenState)
- }
- if startTime != nil && endTime == nil {
- where += " AND start_time > ? AND end_time < ?"
- args = append(args, startTime, time.Now())
- }
- if endTime != nil && startTime == nil {
- where += " AND start_time > ? AND end_time < ?"
- args = append(args, time.Now(), endTime)
- }
- if startTime != nil && endTime != nil {
- where += " AND start_time > ? AND end_time < ?"
- args = append(args, startTime, endTime)
- }
- err = global.DB.Raw("SELECT staff_id,staff_name,COUNT(*) AS total FROM bus_grid_open_logs "+where+
- " GROUP BY staff_id,staff_name ORDER BY total DESC ", args...).Scan(&list).Error
- if err != nil {
- return list, rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
- }
- return
- }
- //SELECT
- //staff_id,
- //staff_name,
- //count(*) AS total
- //FROM
- //bus_grid_open_logs
- //WHERE
- //`year` = 2022
- //AND `month` = 12
- //GROUP BY
- //staff_id,
- //staff_name
- //ORDER BY
- //total DESC
|