|
@@ -0,0 +1,125 @@
|
|
|
|
|
+package task
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "errors"
|
|
|
|
|
+ "go.uber.org/zap"
|
|
|
|
|
+ "gorm.io/gorm"
|
|
|
|
|
+ "log-server/global"
|
|
|
|
|
+ "log-server/model/common/request"
|
|
|
|
|
+ "log-server/model/task"
|
|
|
|
|
+ "time"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+type UrgentTaskService struct {
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (s *UrgentTaskService) CreateUrgentTask(task1 task.UrgentTaskConf) (err error) {
|
|
|
|
|
+ //根据平均期望,将故障较大的放前面可以减少查询次数。那么需要先查是否有task_id以及create_date相等的
|
|
|
|
|
+ var urgentEntity task.UrgentTaskConf
|
|
|
|
|
+ var centralEntity task.CentralControlConf
|
|
|
|
|
+ date := time.Now().Format("2006-01-02")
|
|
|
|
|
+ task1.CreateDate = date
|
|
|
|
|
+ err = global.GVA_DB.Model(&task.UrgentTaskConf{}).Where("task_id = ? and create_date = ?", task1.TaskId, date).First(&urgentEntity).Error
|
|
|
|
|
+ if !errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
|
|
+ return errors.New("任务已存在,请勿重复添加")
|
|
|
|
|
+ }
|
|
|
|
|
+ //查找中控配置是否存在
|
|
|
|
|
+ err = global.GVA_DB.Model(&task.CentralControlConf{}).Where("task_id", task1.TaskId).First(¢ralEntity).Error
|
|
|
|
|
+ //若记录不存在,则报错返回
|
|
|
|
|
+ if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
|
|
+ return errors.New("请先添加此任务中控配置")
|
|
|
|
|
+ }
|
|
|
|
|
+ //创建紧急任务
|
|
|
|
|
+ return global.GVA_DB.Model(&task.UrgentTaskConf{}).Omit("create_time", "update_time").Create(&task1).Error
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (s *UrgentTaskService) DeleteUrgentTask(task1 task.UrgentTaskConf) (err error) {
|
|
|
|
|
+ //查找此任务是否存在
|
|
|
|
|
+ var entity task.UrgentTaskConf
|
|
|
|
|
+ err = global.GVA_DB.Model(&task.UrgentTaskConf{}).Where("id", task1.Id).First(&entity).Error
|
|
|
|
|
+ if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
|
|
+ return errors.New("此任务不存在")
|
|
|
|
|
+ }
|
|
|
|
|
+ return global.GVA_DB.Model(&task.UrgentTaskConf{}).Delete(&entity).Error
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//批量删除
|
|
|
|
|
+func (s *UrgentTaskService) DeleteUrgentTaskByIds(ids []int) (err error){
|
|
|
|
|
+ err = global.GVA_DB.Model(&task.UrgentTaskConf{}).Delete("id in ?", ids).Error
|
|
|
|
|
+ return err
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (s *UrgentTaskService) UpdateUrgentTask(task1 task.UrgentTaskConf) (err error) {
|
|
|
|
|
+ //查找此task_id是否存在,如果存在不更新,否则更新
|
|
|
|
|
+ var entity task.UrgentTaskConf
|
|
|
|
|
+ err = global.GVA_DB.Model(&task.UrgentTaskConf{}).Where("task_id = ? and id != ?", task1.TaskId, task1.Id).First(&entity).Error
|
|
|
|
|
+ if !errors.Is(err , gorm.ErrRecordNotFound) {
|
|
|
|
|
+ return errors.New("已存在此task_id的任务,更新失败")
|
|
|
|
|
+ }
|
|
|
|
|
+ return global.GVA_DB.Model(&task.UrgentTaskConf{}).Where("id", task1.Id).Updates(&task1).Error
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (s *UrgentTaskService) GetUrgentTaskById(id int) (task1 task.UrgentTaskConf, err error) {
|
|
|
|
|
+ err = global.GVA_DB.Model(&task.UrgentTaskConf{}).Where("id", id).First(&task1).Error
|
|
|
|
|
+ return task1, err
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//查询空闲租机
|
|
|
|
|
+func (s *UrgentTaskService) GetUnusedPc() (unusedPcList []task.UnusedPc, err error) {
|
|
|
|
|
+ //获取当日日期
|
|
|
|
|
+ date := time.Now().Format("2006-01-02")
|
|
|
|
|
+ err = global.GVA_DB.Table("computer_status").Where("status = ? and create_date = ?", -1, date).Order("pc_code").Find(&unusedPcList).Error
|
|
|
|
|
+ return unusedPcList, err
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//获取紧急任务列表
|
|
|
|
|
+func (s *UrgentTaskService) GetUrgentTaskList(conf task.UrgentTaskConfRequest, info request.PageInfo, order string, desc bool) (confList []task.UrgentTaskConf, total int64, err error){
|
|
|
|
|
+ limit := info.PageSize
|
|
|
|
|
+ offset := info.PageSize * (info.Page - 1)
|
|
|
|
|
+ db := global.GVA_DB.Model(&task.UrgentTaskConf{})
|
|
|
|
|
+ startDate := time.Now().Format("2006-01-02")
|
|
|
|
|
+ endDate := time.Now().Format("2006-01-02")
|
|
|
|
|
+ if len(conf.Date) == 2 {
|
|
|
|
|
+ startDate = conf.Date[0]
|
|
|
|
|
+ endDate = conf.Date[1]
|
|
|
|
|
+ }
|
|
|
|
|
+ //筛选日期
|
|
|
|
|
+ db = db.Where("create_date >= ? and create_date <= ?", startDate, endDate)
|
|
|
|
|
+ if conf.TaskId != 0 {
|
|
|
|
|
+ db = db.Where("task_id = ?", conf.TaskId)
|
|
|
|
|
+ }
|
|
|
|
|
+ err = db.Count(&total).Error
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return confList, total, err
|
|
|
|
|
+ } else {
|
|
|
|
|
+ db = db.Limit(limit).Offset(offset)
|
|
|
|
|
+ if order != "" {
|
|
|
|
|
+ var OrderStr string
|
|
|
|
|
+ // 设置有效排序key 防止sql注入
|
|
|
|
|
+ // 感谢 Tom4t0 提交漏洞信息
|
|
|
|
|
+ orderMap := make(map[string]bool, 4)
|
|
|
|
|
+ orderMap["task_id"] = true
|
|
|
|
|
+ orderMap["create_date"] = true
|
|
|
|
|
+ orderMap["create_time"] = true
|
|
|
|
|
+ orderMap["update_time"] = true
|
|
|
|
|
+ if orderMap[order] {
|
|
|
|
|
+ if desc {
|
|
|
|
|
+ OrderStr = order + " desc"
|
|
|
|
|
+ } else {
|
|
|
|
|
+ OrderStr = order
|
|
|
|
|
+ }
|
|
|
|
|
+ } else { // didn't matched any order key in `orderMap`
|
|
|
|
|
+ global.GVA_LOG.Error("获取失败!", zap.Error(err))
|
|
|
|
|
+ return confList, total, err
|
|
|
|
|
+ }
|
|
|
|
|
+ err = db.Order(OrderStr).Find(&confList).Error
|
|
|
|
|
+ } else {
|
|
|
|
|
+ err = db.Order("id desc").Find(&confList).Error
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ //遍历更改日期格式
|
|
|
|
|
+ //for i, _ := range confList {
|
|
|
|
|
+ // confList[i].CreateDate = confList[i].CreateDate[:10]
|
|
|
|
|
+ //}
|
|
|
|
|
+ return confList, total, err
|
|
|
|
|
+}
|