public JsonResult GetMyWorkItem(PagerInfo pagerInfo, string FunctionCode, int State, string WorkflowCode, DateTime?StartTime, DateTime?EndTime)
 {
     return(this.ExecuteFunctionRun(() =>
     {
         WorkItem.WorkItemState workitemState = GetWorkItemState(State);
         total_Workitem total_workitem = this.GetWorkItemTable(pagerInfo, workitemState, WorkflowCode,
                                                               StartTime, EndTime);
         DataTable dtWorkitem = total_workitem.dt;
         int total = total_workitem.total;
         string[] columns = new string[] { WorkItem.WorkItem.PropertyName_OrgUnit };
         List <WorkItemViewModel> griddata = this.Getgriddata(dtWorkitem, columns);
         GridViewModel <WorkItemViewModel> result = new GridViewModel <WorkItemViewModel>(total, griddata, pagerInfo.sEcho);
         return Json(result, JsonRequestBehavior.AllowGet);
     }));
 }
        private total_Workitem GetWorkItemTable(PagerInfo pagerInfo, WorkItem.WorkItemState State, string WorkflowCode, DateTime?StartTime, DateTime?EndTime)
        {
            total_Workitem total_workitem = new total_Workitem();

            if (State == WorkItem.WorkItemState.Unspecified)
            {
                string[] conditions = Engine.PortalQuery.GetWorkItemConditions(this.UserValidator.UserID,
                                                                               StartTime == null ? DateTime.MinValue : StartTime.Value,
                                                                               EndTime == null ? DateTime.MaxValue : EndTime.Value,
                                                                               State,
                                                                               string.Empty,
                                                                               OThinker.Data.BoolMatchValue.Unspecified,
                                                                               WorkflowCode,
                                                                               true,
                                                                               WorkItem.WorkItem.TableName);
                string OrderBy = "ORDER BY " +
                                 WorkItem.WorkItem.TableName + "." + WorkItem.WorkItem.PropertyName_Priority + " DESC," +
                                 WorkItem.WorkItem.TableName + "." + WorkItem.WorkItem.PropertyName_ReceiveTime + " DESC";
                DataTable dtWorkitem = Engine.PortalQuery.QueryWorkItem(conditions, pagerInfo.StartIndex, pagerInfo.EndIndex, OrderBy, WorkItem.WorkItem.TableName);
                int       total      = Engine.PortalQuery.CountWorkItem(conditions, WorkItem.WorkItem.TableName); // 记录总数

                string[] conditions1 = Engine.PortalQuery.GetWorkItemConditions(this.UserValidator.UserID,
                                                                                StartTime == null ? DateTime.MinValue : StartTime.Value,
                                                                                EndTime == null ? DateTime.MaxValue : EndTime.Value,
                                                                                State,
                                                                                string.Empty,
                                                                                OThinker.Data.BoolMatchValue.Unspecified,
                                                                                WorkflowCode,
                                                                                true,
                                                                                WorkItem.WorkItemFinished.TableName);
                string OrderBy1 = "ORDER BY " +
                                  WorkItem.WorkItemFinished.TableName + "." + WorkItem.WorkItemFinished.PropertyName_Priority + " DESC," +
                                  WorkItem.WorkItemFinished.TableName + "." + WorkItem.WorkItemFinished.PropertyName_ReceiveTime + " DESC";
                DataTable dtWorkitem1 = Engine.PortalQuery.QueryWorkItem(conditions1, pagerInfo.StartIndex, pagerInfo.EndIndex, OrderBy1, WorkItem.WorkItemFinished.TableName);
                total = total + Engine.PortalQuery.CountWorkItem(conditions1, WorkItem.WorkItemFinished.TableName); // 记录总数
                if (dtWorkitem != null)
                {
                    dtWorkitem.Merge(dtWorkitem1);
                }
                else
                {
                    dtWorkitem = dtWorkitem1;
                }

                total_workitem.total = total;
                total_workitem.dt    = dtWorkitem;
                return(total_workitem);
            }
            else
            {
                string   TableName  = State == WorkItem.WorkItemState.Finished ? WorkItem.WorkItemFinished.TableName : WorkItem.WorkItem.TableName;
                string[] conditions = Engine.PortalQuery.GetWorkItemConditions(this.UserValidator.UserID,
                                                                               StartTime == null ? DateTime.MinValue : StartTime.Value,
                                                                               EndTime == null ? DateTime.MaxValue : EndTime.Value,
                                                                               State,
                                                                               string.Empty,
                                                                               OThinker.Data.BoolMatchValue.Unspecified,
                                                                               WorkflowCode,
                                                                               true,
                                                                               TableName);
                string OrderBy = "ORDER BY " +
                                 WorkItem.WorkItemFinished.TableName + "." + WorkItem.WorkItemFinished.PropertyName_Priority + " DESC," +
                                 WorkItem.WorkItemFinished.TableName + "." + WorkItem.WorkItemFinished.PropertyName_ReceiveTime + " DESC";
                DataTable dtWorkitem = Engine.PortalQuery.QueryWorkItem(conditions, pagerInfo.StartIndex, pagerInfo.EndIndex, OrderBy, TableName);
                int       total      = Engine.PortalQuery.CountWorkItem(conditions, TableName); // 记录总数
                var       result     = new
                {
                    total      = total,
                    dtWorkitem = dtWorkitem
                };
                total_workitem.total = total;
                total_workitem.dt    = dtWorkitem;
                return(total_workitem);
            }
        }