Esempio n. 1
0
        public ResponseBase <AddCommandQueueItemResponse> AddCommandQueueItem(AddCommandQueueItemRequest req)
        {
            try
            {
                int nid  = int.Parse(req.NodeId);
                var node = noderepository.FindSingle(x => x.id == nid);
                if (node == null)
                {
                    return(ResponseToClient <AddCommandQueueItemResponse>(ResponesStatus.Failed, "当前节点" + req.NodeId + "不存在库中!"));
                }
                if (node.nodestatus == (int)NodeStatus.NoRun)
                {
                    return(ResponseToClient <AddCommandQueueItemResponse>(ResponesStatus.Failed, "当前节点未启动,暂不能执行此操作!"));
                }
                string cmdName       = req.CommandName.ToString();
                var    commandDetail = cmdRep.FindSingle(x => x.commandmainclassname == cmdName && x.isdel == 0);
                if (commandDetail == null)
                {
                    return(ResponseToClient <AddCommandQueueItemResponse>(ResponesStatus.Failed, "未知的命令操作!"));
                }
                int r = cmdqueuerespository.Add(new tb_commandqueue()
                {
                    commanddetailid      = commandDetail.id,
                    commandmainclassname = commandDetail.commandmainclassname,
                    commandparams        = string.IsNullOrEmpty(req.CommandParam) ? "":req.CommandParam,
                    commandstate         = (int)ExecuteStatus.NoExecute,
                    createby             = int.Parse(req.AdminId),
                    createtime           = DateTime.Now,
                    failedcount          = 0,
                    nodeid        = int.Parse(req.NodeId),
                    isdel         = 0,
                    taskid        = int.Parse(req.TaskId),
                    taskversionid = int.Parse(req.TaskVersionId)
                });
                if (r <= 0)
                {
                    return(ResponseToClient <AddCommandQueueItemResponse>(ResponesStatus.Failed, "执行失败"));
                }
                if (!string.IsNullOrEmpty(req.TaskId))//如果task不为空,说明是针对任务的命令
                {
                    int tid  = int.Parse(req.TaskId);
                    var task = taskRep.FindSingle(x => x.id == tid);
                    if (req.CommandName == CommandName.StartTaskCommand)
                    {
                        task.taskschedulestatus = (int)TaskScheduleStatus.WaitSchedule;
                        taskRep.Update(task);
                    }
                }

                return(ResponseToClient <AddCommandQueueItemResponse>(ResponesStatus.Success, ""));
            }
            catch (Exception ex)
            {
                return(ResponseToClient <AddCommandQueueItemResponse>(ResponesStatus.Exception, "添加命令队列项异常:" + JsonConvert.SerializeObject(ex)));
            }
        }