Esempio n. 1
0
 public ResponseBase <PageInfoResponse <List <NodeDetailDto> > > LoadNodeList(LoadNodeListRequest req)
 {
     try
     {
         DateTime starttime  = Convert.ToDateTime(req.NodeCreateTimeRange.Split('/')[0]);
         DateTime endtime    = Convert.ToDateTime(req.NodeCreateTimeRange.Split('/')[1]).AddDays(1);
         int      pageIndex  = (req.iDisplayStart / req.iDisplayLength) + 1;
         int      totalCount = 0;
         var      node       = noderepository.Find(out totalCount, pageIndex, req.iDisplayLength, x => x.id.ToString(), x =>
                                                   x.id == (req.NodeId <= 0 ? x.id : req.NodeId) &&
                                                   x.refreshcommandqueuestatus == (req.ListenCommandQueueStatus < 0 ? x.refreshcommandqueuestatus : req.ListenCommandQueueStatus) &&
                                                   x.nodestatus == (req.NodeRunStatus < 0 ? x.nodestatus : req.NodeRunStatus) &&
                                                   x.createtime >= starttime && x.createtime < endtime &&
                                                   x.createby == (req.CreateBy <= 0?x.createby:req.CreateBy) &&
                                                   x.alarmtype == (req.AlarmType < 0?x.alarmtype:req.AlarmType)
                                                   ).ToList();
         if (node == null || node.Count <= 0)
         {
             return(ResponseToClient <PageInfoResponse <List <NodeDetailDto> > >(ResponesStatus.Failed, "当前未查到任何节点"));
         }
         List <NodeDetailDto> nodelist = new List <NodeDetailDto>();
         //LoadNodeListResponse data = new LoadNodeListResponse() { NodeList=nodelist };
         node.ForEach(x =>
         {
             NodeDetailDto detail     = new NodeDetailDto();
             detail.TotalCommandCount = commandQueueRep.Find(m => m.nodeid == x.id).ToList().Count;  //命令总数量
             int waitExecute          = (int)ExecuteStatus.NoExecute;
             // int execute=(int)ExecuteStatus.NoExecute;
             detail.WaitCommandCount = commandQueueRep.Find(m => m.nodeid == x.id && m.commandstate == waitExecute).ToList().Count;  //命令总数量
             detail.TotalTaskCount   = taskversionRep.Find(m => m.nodeid == x.id).Select(m => m.taskid).Distinct().Count();
             nodelist.Add(detail);
             detail.NodeDetail = x;
             //detail.RunningTaskCount = tasklogRep.Find(m => m.nodeid == x.id && m.taskstatus ==).Select(m => m.taskid).Distinct().Count();
         });
         //data.NodeList = nodelist;
         return(ResponseToClient <PageInfoResponse <List <NodeDetailDto> > >(ResponesStatus.Success, "", new PageInfoResponse <List <NodeDetailDto> >()
         {
             aaData = nodelist, iTotalDisplayRecords = totalCount, iTotalRecords = totalCount, sEcho = req.sEcho
         }));
     }
     catch (Exception ex)
     {
         return(ResponseToClient <PageInfoResponse <List <NodeDetailDto> > >(ResponesStatus.Exception, ex.Message));
     }
 }
Esempio n. 2
0
        public ResponseBase <LoadCommandQueueListResponse> LoadCommandQueueList(LoadCommandQueueListRequest req)
        {
            try
            {
                int nodeid = req.NodeId;
                var node   = noderepository.FindSingle(x => x.id == nodeid);
                if (node == null)
                {
                    return(ResponseToClient <LoadCommandQueueListResponse>(ResponesStatus.Failed, "当前节点" + req.NodeId + "不存在库中!"));
                }
                // node.lastmaxid = req.LastMaxId;
                // node.lastrefreshcommandqueuetime = DateTime.Now;
                try
                {
                    noderepository.UpdateNodeById(node.id, new Dictionary <string, string>()
                    {
                        { "lastmaxid", req.LastMaxId.ToString() }, { "lastrefreshcommandqueuetime", DateTime.Now.ToString() }
                    });                                                                                                                                                                                    //, { "refreshcommandqueuestatus", ((int)RefreshCommandQueueStatus.NoRefresh).ToString() }
                    // noderepository.Update(node);
                }
                catch (Exception ex)
                {
                    log.Error("更新节点(" + node.id.ToString() + ")上次获取的最大命令队列编号(" + req.LastMaxId.ToString() + ")异常:" + JsonConvert.SerializeObject(ex));
                }
                int queueStatus = (int)req.CommandStatus;
                List <tb_commandqueue> cmdqueuelist = cmdqueuerespository.Find(x => x.nodeid == (nodeid <= 0 ?x.nodeid:nodeid) && ((x.id > req.LastMaxId && x.commandstate == queueStatus) || x.commandstate == (int)ExecuteStatus.NoExecute)).ToList().Take(node.maxrefreshcommandqueuecount).ToList();
                if (cmdqueuelist.Count <= 0)
                {
                    return(ResponseToClient <LoadCommandQueueListResponse>(ResponesStatus.Failed, "当前没有分配给该节点的命令"));
                }

                return(ResponseToClient <LoadCommandQueueListResponse>(ResponesStatus.Success, "", new LoadCommandQueueListResponse()
                {
                    CommandQueueList = cmdqueuelist
                }));
            }
            catch (Exception ex)
            {
                return(ResponseToClient <LoadCommandQueueListResponse>(ResponesStatus.Exception, "刷新命令队列异常:" + JsonConvert.SerializeObject(ex)));
            }
        }
Esempio n. 3
0
        public ResponseBase <PlatformStatisResponse> PlatformStatis(PlatformStatisRequest req)
        {
            try
            {
                PlatformStatisResponse platformrep = new PlatformStatisResponse();
                #region 统计节点
                List <tb_node> node = noderepository.Find(x => x.isdel == 0).ToList();
                platformrep.NodeInfo.TotalNodeCount = node.Count;
                int RunningNodeCount = node.Where(x => x.nodestatus == (int)NodeStatus.Running).Count();
                int NoRunNodeCount   = node.Where(x => x.nodestatus == (int)NodeStatus.NoRun).Count();
                platformrep.NodeInfo.NodeDic.Add(NodeStatus.NoRun.description(), NoRunNodeCount);
                platformrep.NodeInfo.NodeDic.Add(NodeStatus.Running.description(), RunningNodeCount);
                #endregion

                #region 统计任务
                List <tb_task> task = taskrep.Find(x => x.isdel == 0).ToList();
                platformrep.TaskInfo.TotalTaskCount = task.Count;
                int TotalScheduleTaskCount = task.Where(x => x.tasktype == (int)TaskType.SchedulingTask).Count();
                int TotalOnceTaskCount     = task.Where(x => x.tasktype == (int)TaskType.OnceTask).Count();

                platformrep.TaskInfo.TaskTypeDic.Add(TaskType.SchedulingTask.description() + "_#3c8dbc", TotalScheduleTaskCount);
                platformrep.TaskInfo.TaskTypeDic.Add(TaskType.OnceTask.description() + "_#f39c12", TotalOnceTaskCount);

                int WaitScheduleCount      = task.Where(x => x.taskschedulestatus == (int)TaskScheduleStatus.WaitSchedule).Count();
                int NoScheduleCount        = task.Where(x => x.taskschedulestatus == (int)TaskScheduleStatus.NoSchedule).Count();
                int PauseScheduleTaskCount = task.Where(x => x.taskschedulestatus == (int)TaskScheduleStatus.PauseSchedule).Count();
                int SchedulingTaskCount    = task.Where(x => x.taskschedulestatus == (int)TaskScheduleStatus.Scheduling).Count();
                int StopScheduleTaskCount  = task.Where(x => x.taskschedulestatus == (int)TaskScheduleStatus.StopSchedule).Count();

                platformrep.TaskInfo.ScheduleDic.Add(TaskScheduleStatus.NoSchedule.description() + "_#f39c12", NoScheduleCount);
                platformrep.TaskInfo.ScheduleDic.Add(TaskScheduleStatus.WaitSchedule.description() + "_#3c8dbc", WaitScheduleCount);
                platformrep.TaskInfo.ScheduleDic.Add(TaskScheduleStatus.Scheduling.description() + "_#00c0ef", SchedulingTaskCount);
                platformrep.TaskInfo.ScheduleDic.Add(TaskScheduleStatus.PauseSchedule.description() + "_#ff3bd9", PauseScheduleTaskCount);
                platformrep.TaskInfo.ScheduleDic.Add(TaskScheduleStatus.StopSchedule.description() + "_#dd4b39", StopScheduleTaskCount);

                #endregion

                #region 命令队列统计
                List <tb_commandqueue> cmdqueue = cmdqueuerespository.Find(x => x.isdel == 0).ToList();
                platformrep.CommandQueueInfo.TotalCommandQueueCount = cmdqueue.Count;
                int NoExecuteCommandQueueCount        = cmdqueue.Where(x => x.commandstate == (int)(ExecuteStatus.NoExecute)).Count();
                int ExecuteExceptionCommandQueueCount = cmdqueue.Where(x => x.commandstate == (int)(ExecuteStatus.ExecuteException)).Count();
                int ExecuteFailedCommandQueueCount    = cmdqueue.Where(x => x.commandstate == (int)(ExecuteStatus.ExecuteFailed)).Count();
                int ExecuteSucessCommandQueueCount    = cmdqueue.Where(x => x.commandstate == (int)(ExecuteStatus.ExecuteSucess)).Count();
                int ExecutingCommandQueueCount        = cmdqueue.Where(x => x.commandstate == (int)(ExecuteStatus.Executing)).Count();

                platformrep.CommandQueueInfo.CommandQueueDic.Add(ExecuteStatus.NoExecute.description() + "_#f39c12", NoExecuteCommandQueueCount);
                platformrep.CommandQueueInfo.CommandQueueDic.Add(ExecuteStatus.Executing.description() + "_#00c0ef", ExecutingCommandQueueCount);
                platformrep.CommandQueueInfo.CommandQueueDic.Add(ExecuteStatus.ExecuteSucess.description() + "_#00a65a", ExecuteSucessCommandQueueCount);
                platformrep.CommandQueueInfo.CommandQueueDic.Add(ExecuteStatus.ExecuteFailed.description() + "_#dd4b39", ExecuteFailedCommandQueueCount);
                platformrep.CommandQueueInfo.CommandQueueDic.Add(ExecuteStatus.ExecuteException.description() + "_#ff3bd9", ExecuteExceptionCommandQueueCount);

                #endregion

                #region 用户统计

                List <tb_user> user = userrepository.Find(x => x.isdel == 0).ToList();
                platformrep.UserInfo.TotalUserCount = user.Count;
                #endregion

                #region 命令统计
                List <tb_commandlibdetail> cmd = cmdrespository.Find(x => x.isdel == 0).ToList();
                platformrep.CommandInfo.CommandCount = cmd.Count;
                #endregion
                return(ResponseToClient <PlatformStatisResponse>(ResponesStatus.Success, "", platformrep));
            }
            catch (Exception ex)
            {
                return(ResponseToClient <PlatformStatisResponse>(ResponesStatus.Exception, ex.Message));
            }
        }