123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- 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 GridWarnLogService struct {
- }
- func (s *GridWarnLogService) CreateGridWarnLog(log model.GridWarnLog) (err error) {
- err = global.DB.Create(&log).Error
- if err != nil {
- return rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
- }
- return
- }
- func (s *GridWarnLogService) DeleteGridWarnLogByIds(ids common.IdsReq) (err error) {
- if err = global.DB.Delete(&[]model.GridWarnLog{}, "id in (?)", ids.IDs).Error; err != nil {
- return rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
- }
- return
- }
- func (s *GridWarnLogService) GetGridWarnLogList(info request.GridWarnLogSearch, dataPermission *BusPermission) (list []model.GridWarnLog, 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.GridWarnLog
- 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.WarnState != "" {
- db = db.Where("warn_state = ?", info.WarnState)
- }
- 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 *GridWarnLogService) GetGridWarnLogStatistics(info request.GridWarnLogStatistics) (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.WarnState != "" {
- where += " AND warn_state = ?"
- args = append(args, info.WarnState)
- }
- 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_warn_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
- }
- func (s *GridWarnLogService) GetDayGridWarnLogByDeptId(deptId int) (list []model.GridWarnLog, total int64, err error) {
- now := time.Now()
- dateStr := utils.FormatDateTime(&now)
- startTime, err := utils.ParseSecondTime(dateStr + " 00:00:00")
- endTime, err := utils.ParseSecondTime(dateStr + " 23:59:59")
- var logModel model.GridWarnLog
- err = global.DB.Model(&logModel).Where("created_at >= ?", startTime).Where("created_at <= ?", endTime).Where("department_id = ?", deptId).
- Count(&total).Order("id desc").Find(&list).Error
- if err != nil {
- return list, total, rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode])
- }
- return
- }
|