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))); } }
public ResponseBase <PageInfoResponse <List <CommandLogListDto> > > LoadCommandQueueExecuteLog(LoadCommandQueueExecuteLogRequest req) { try { int executestatus = string.IsNullOrEmpty(req.ExecuteStatus) ? -1 : int.Parse(req.ExecuteStatus); DateTime starttime = Convert.ToDateTime(req.LogCreateTimeRange.Split('/')[0]); DateTime endtime = Convert.ToDateTime(req.LogCreateTimeRange.Split('/')[1]).AddDays(1); int pageIndex = (req.iDisplayStart / req.iDisplayLength) + 1; int totalCount = 0; List <tb_commandlog> logList = cmdLogRespository.Find(out totalCount, pageIndex, req.iDisplayLength, x => x.id.ToString(), x => x.commandqueueid == (req.CommandQueueId <= 0?x.commandqueueid:req.CommandQueueId) && x.nodeid == (req.NodeId <= 0?x.nodeid:req.NodeId) && x.commanddetailid == (req.CommandId <= 0?x.commanddetailid:req.CommandId) && x.logcreatetime >= starttime && x.logcreatetime < endtime && x.commandstate == (executestatus < 0?x.commandstate:executestatus) ).OrderByDescending(x => x.logcreatetime).ToList(); if (logList.Count <= 0) { return(ResponseToClient <PageInfoResponse <List <CommandLogListDto> > >(ResponesStatus.Failed, "暂无对应的执行日志列表")); } List <CommandLogListDto> commandloglist = new List <CommandLogListDto>(); logList.ForEach(x => { commandloglist.Add(new CommandLogListDto() { CommandDetail = commandRep.FindSingle(m => m.id == x.commanddetailid), CommandLogDetail = x, NodeDetail = noderepository.FindSingle(m => m.id == x.nodeid) }); }); return(ResponseToClient <PageInfoResponse <List <CommandLogListDto> > >(ResponesStatus.Success, "", new PageInfoResponse <List <CommandLogListDto> > { aaData = commandloglist, iTotalDisplayRecords = totalCount, iTotalRecords = totalCount, sEcho = req.sEcho })); } catch (Exception ex) { return(ResponseToClient <PageInfoResponse <List <CommandLogListDto> > >(ResponesStatus.Exception, JsonConvert.SerializeObject(ex))); } }