Example #1
0
 public static void ComBindDT(DataTable dtSource, ref DataTable dtResult, string queryCol, string computeCol)
 {
     if (dtSource != null)
     {
         foreach (DataRow dr in dtSource.Rows)
         {
             string    queryValue = SystemDataExtension.GetString(dr, queryCol);
             string    rowFilter  = string.Format("{0} = '{1}'", queryCol, queryValue);
             DataRow[] drs        = dtResult.Select(rowFilter);
             if (drs.Length > 0)
             {
                 DataRow drResult = drs[0];
                 drResult.BeginEdit();
                 drResult[computeCol] = SystemDataExtension.GetInt32(dr, computeCol) + SystemDataExtension.GetInt32(drResult, computeCol);
                 drResult.EndEdit();
                 drResult.AcceptChanges();
             }
             else
             {
                 DataRow drResult = dtResult.Rows.Add();
                 drResult.BeginEdit();
                 drResult[queryCol]   = SystemDataExtension.GetString(dr, queryCol);
                 drResult[computeCol] = SystemDataExtension.GetInt32(dr, computeCol);
                 drResult.EndEdit();
                 drResult.AcceptChanges();
             }
         }
         dtResult.AcceptChanges();
     }
 }
Example #2
0
 /// <summary>
 /// 获取指定项目的所有任务集合
 /// </summary>
 /// <param name="projectId">项目ID</param>
 /// <param name="dtTasks">所有任务</param>
 /// <param name="parentCol">表的父子关联字段</param>
 /// <param name="dtReturn">子任务集合表</param>
 /// <returns></returns>
 public static void GetTasksByProjectID(long projectId, DataTable dtTasks, ref DataTable dtReturn)
 {
     DataRow[] drsTasks = dtTasks.Select(string.Format("{0}={1}", "PID", projectId));
     if (drsTasks.Length <= 0)
     {
         return;
     }
     for (int i = 0; i < drsTasks.Length; i++)
     {
         DataRow drTasks = drsTasks[i];
         dtReturn.Rows.Add(drTasks.ItemArray);
         projectId = SystemDataExtension.GetInt32(drTasks, "TaskID");
         GetTasksByProjectID(projectId, dtTasks, ref dtReturn);
     }
 }
Example #3
0
        /// <summary>
        /// 筛选哪些未在计划中的操作
        /// </summary>
        /// <param name="dtPlans"></param>
        /// <param name="dtActions"></param>
        /// <returns></returns>
        private DataTable GetActionsNotInPlan(DataTable dtPlans, DataTable dtActions)
        {
            DataTable dtMayPlanActions = dtActions.Copy();

            foreach (DataRow drPlan in dtPlans.Rows)
            {
                int actionId = SystemDataExtension.GetInt32(drPlan, "ActionID");
                if (dtMayPlanActions.Select("ActionID=" + actionId).Length > 0)
                {
                    DataRow drAction = dtMayPlanActions.Select("ActionID=" + actionId)[0];
                    dtMayPlanActions.Rows.Remove(drAction);
                    dtMayPlanActions.AcceptChanges();
                }
            }
            return(dtMayPlanActions);
        }
Example #4
0
        /// <summary>
        /// 根据计划ID获取计划的类型:(操作)单操作计划、(计划)多操作计划、(已删除)已删除计划、(计划操作)计划的操作
        /// </summary>
        /// <param name="planId">计划ID</param>
        /// <param name="dtPlans">计划表</param>
        /// <param name="dtActions">操作表</param>
        /// <returns></returns>
        private string GetPlanTypeByPlanID(long planId, DataTable dtPlans, DataTable dtActions)
        {
            string planType = "";

            DataRow[] drsPlan = dtPlans.Select("PlanID=" + planId);
            if (drsPlan.Length <= 0)
            {
                planType = "已删除";
            }
            else
            {
                DataRow drPlan   = drsPlan[0];
                long    actionId = SystemDataExtension.GetInt32(drPlan, "ActionID"); //计划对应的操作ID
                long    parentId = SystemDataExtension.GetInt32(drPlan, "ParentID"); //计划的父级ID,若为0,则为计划,否则为多操作计划关联的某一个操作
                if (parentId == 0)
                {
                    DataRow[] drsActions = dtActions.Select("ActionID=" + actionId);
                    if (drsActions.Length > 0)
                    {
                        DataRow drAction = drsActions[0];
                        int     typeId   = SystemDataExtension.GetInt16(drAction, "ItemTypeID");
                        if (typeId != 0)
                        {
                            //获取元数据集合
                            DataSet dsMetaData = MetaDataDAL.GetGroupMetaData();
                            ViewState["dsMetaData"] = dsMetaData;
                            DataTable dtActionType  = MetaDataBLL.GetMetaDataByGroup("Action", dsMetaData);
                            DataRow[] drsActionType = dtActionType.Select("ItemID=" + typeId);
                            if (drsActionType.Length > 0)
                            {
                                planType = SystemDataExtension.GetString(drsActionType[0], "Title");
                            }
                        }
                    }
                }
                else
                {
                    planType = "计划操作";
                }
            }
            return(planType);
        }
Example #5
0
        /// <summary>
        /// 获取指定任务的所属项目ID
        /// </summary>
        /// <param name="taskId">指定任务ID</param>
        /// <param name="dtTasks">所有任务</param>
        /// <param name="drProject">返回的项目行</param>
        /// <param name="keyCol">表的筛选字段</param>
        /// <param name="parentCol">表的父子关联字段</param>
        /// <returns></returns>
        public static void GetProjectByTaskID(long taskId, DataTable dtTasks, ref DataRow drProject)
        {
            DataRow[] drsTasks = dtTasks.Select(string.Format("{0}={1}", "TaskID", taskId));
            if (drsTasks.Length <= 0)
            {
                return;
            }
            DataRow drTasks = drsTasks[0];

            drProject = drTasks;
            taskId    = SystemDataExtension.GetInt32(drTasks, "PID");
            if (taskId == 0)
            {
                return;
            }
            else
            {
                GetProjectByTaskID(taskId, dtTasks, ref drProject);
            }
        }
Example #6
0
        /// <summary>
        /// 绑定多操作计划的多选框,并将计划已选择的操作条目设置选中
        /// </summary>
        /// <param name="actionId">操作ID</param>
        /// <param name="planId">计划ID</param>
        /// <param name="dtPlans">计划表</param>
        /// <param name="dtActions">操作表</param>
        private void BindPlanActions(long actionId, long planId, DataTable dtPlans, DataTable dtActions)
        {
            DataTable dtRelations = (DataTable)ViewState["dtRelations"];
            int       relationId  = 2;

            DataRow[] drSysActions = dtRelations.Select(string.Format("ItemID={0} and RelationID ={1}", actionId, relationId));
            if (drSysActions.Length > 0)
            {
                cblPlanActions.Items.Clear();
                foreach (DataRow dr in drSysActions)
                {
                    long     sysactionId = SystemDataExtension.GetInt32(dr, "RelateditemID");
                    ListItem item        = new ListItem
                    {
                        Value = sysactionId.ToString(),
                        Text  = SystemDataExtension.GetString(dtActions.Select("ActionID=" + sysactionId)[0], "Title")
                    };
                    cblPlanActions.Items.Add(item);
                }
                if (planId != 0)//有计划ID传入,表示这是编辑多操作计划,此时需要查询该计划对应的操作哪些已选中
                {
                    DataRow[] drMyActions = dtPlans.Select("ParentID=" + planId);
                    if (drMyActions.Length > 0)
                    {
                        string selectedValue = "";
                        var    builder       = new StringBuilder();
                        builder.Append(selectedValue);
                        foreach (DataRow dr in drMyActions)
                        {
                            builder.Append(SystemDataExtension.GetInt32(dr, "ActionID") + ";");
                        }
                        selectedValue = builder.ToString();
                        SetCBListChecked(cblPlanActions, selectedValue, ";");
                    }
                }
            }
        }
Example #7
0
        /// <summary>
        /// 根据计划类型设置计划的备选数据列表
        /// </summary>
        /// <param name="planType">计划类型</param>
        /// <param name="initValue">选择初始值</param>
        private void BindActions(string planType, string initValue)
        {
            try
            {
                hdfPlanType.Value = planType;

                DataSet   dsMetaData    = (DataSet)ViewState["dsMetaData"];
                DataTable dtActionType  = MetaDataBLL.GetMetaDataByGroup("Action", dsMetaData);
                DataRow[] drsActionType = dtActionType.Select(string.Format("Title='{0}'", planType));
                ddlPlanAction.Items.Clear();
                ddlPlanAction.Items.Add(new ListItem("--请选择计划--", "0"));
                if (drsActionType.Length > 0)
                {
                    int       typeId    = SystemDataExtension.GetInt16(drsActionType[0], "ItemID");
                    DataTable dtActions = (DataTable)ViewState["dtActions"];
                    DataRow[] drActions = dtActions.Select("ItemTypeID=" + typeId);
                    if (drActions.Length > 0)
                    {
                        foreach (DataRow dr in drActions)
                        {
                            ListItem item = new ListItem
                            {
                                Value = SystemDataExtension.GetInt32(dr, "ActionID").ToString(),
                                Text  = SystemDataExtension.GetString(dr, "Title")
                            };
                            ddlPlanAction.Items.Add(item);
                        }
                        ddlPlanAction.SelectedValue = initValue;
                    }
                }
            }
            catch (Exception ex)
            {
                lbErr.Text = ex.ToString();
            }
        }
Example #8
0
        /// <summary>
        /// 计划列表行命令事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GvPlans_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName == "DelPlan")
                {
                    long planId = long.Parse(e.CommandArgument.ToString());
                    DeletePlanByPlanID(planId);
                }
                else if (e.CommandName == "EditPlan")
                {
                    lbErr.Text = "";
                    #region 修改计划
                    lbPTitle.Text = "修改计划";
                    string planId = e.CommandArgument.ToString();
                    hdfID.Value       = planId;
                    hdfParentID.Value = "0";
                    DataTable dt       = (DataTable)ViewState["dtPlans"];
                    DataTable dtPlans  = dt.Copy();
                    DataRow   dr       = dtPlans.Select("PlanID=" + long.Parse(planId))[0];
                    long      actionId = SystemDataExtension.GetInt32(dr, "ActionID");

                    //开始日期
                    tbStart.Text = SystemDataExtension.GetDateTime(dr, "StartDate").ToShortDateString();
                    //截止日期
                    tbDue.Text = SystemDataExtension.GetDateTime(dr, "DueDate").ToShortDateString();
                    //时长目标
                    tbDuring.Text = SystemDataExtension.GetString(dr, "During");
                    //数量目标
                    tbQuantity.Text = SystemDataExtension.GetString(dr, "Quantity");
                    //描述
                    tbDesc.Text = SystemDataExtension.GetString(dr, "Description");

                    DataTable dtActions = (DataTable)ViewState["dtActions"];
                    string    planType  = GetPlanTypeByPlanID(long.Parse(planId), dtPlans, dtActions);
                    hdfPlanType.Value = planType;
                    BindActions(planType, actionId.ToString());
                    if (planType == "计划")//是包含多个操作的计划
                    {
                        lbPlanActions.Visible  = true;
                        cblPlanActions.Visible = true;
                        //btnSetAction.Visible = true;
                        BindPlanActions(actionId, long.Parse(planId), dtPlans, dtActions);
                    }
                    else
                    {
                        lbPlanActions.Visible  = false;
                        cblPlanActions.Visible = false;
                        //btnSetAction.Visible = false;
                    }
                    //计划标题,不可更改
                    ddlPlanAction.Enabled = false;

                    divList.Visible   = false;
                    divPlan.Visible   = true;
                    divAction.Visible = false;

                    #endregion
                }
            }
            catch (Exception ex)
            {
                lbErr.Text = ex.ToString();
            }
        }
        /// <summary>
        /// 任务列表行命令:删除、修改、添加
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gvTasks_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName == "DelTask")
                {
                    long taskId = long.Parse(e.CommandArgument.ToString());
                    DeleteTaskByTaskID(taskId);
                }
                else if (e.CommandName == "EditTask")
                {
                    #region 编辑任务
                    string taskId = e.CommandArgument.ToString();
                    hdfID.Value = taskId;

                    DataTable dt      = (DataTable)ViewState["dtTasks"];
                    DataTable dtTasks = dt.Copy();
                    DataRow   dr      = dtTasks.Select("TaskID=" + long.Parse(taskId))[0];
                    string    tTitle  = SystemDataExtension.GetString(dr, "Title");
                    //标题
                    tbTitle.Text = tTitle;
                    //英文标题
                    tbTitle_EN.Text = SystemDataExtension.GetString(dr, "Title_en");
                    //开始日期
                    tbStart.Text = SystemDataExtension.GetString(dr, "StartDate");
                    //截止日期
                    tbDue.Text = SystemDataExtension.GetString(dr, "DueDate");
                    //预估工作量
                    tbDuring.Text = SystemDataExtension.GetString(dr, "During");
                    //百分比
                    tbPercent.Text = SystemDataExtension.GetString(dr, "PercentComplete");
                    //描述
                    tbDesc.Text = SystemDataExtension.GetString(dr, "Description");
                    //状态
                    int tStatus = SystemDataExtension.GetInt16(dr, "Status");
                    ddlStatus.SelectedValue = tStatus.ToString();
                    long parentId = SystemDataExtension.GetInt32(dr, "PID");
                    hdfPID.Value = parentId.ToString();
                    if (parentId == 0)//当前任务就是一个项目
                    {
                        lbPTitle.Text           = "编辑项目";
                        lbTitle.Text            = "项目名称:";
                        lbTitle_EN.Visible      = true;
                        lbTitle_ENValid.Visible = true;
                        tbTitle_EN.Visible      = true;
                        lbDesc.Text             = "项目描述:";
                        lbParentTitle.Visible   = false;
                        lbParent.Visible        = false;
                        ddlParent.Visible       = false;
                        lbStatus.Text           = "项目状态:";
                        tbDesc.Rows             = 5;
                    }
                    else
                    {
                        lbTitle_EN.Visible      = false;
                        lbTitle_ENValid.Visible = false;
                        tbTitle_EN.Visible      = false;
                        lbTitle.Text            = "任务名称:";
                        DataRow drProject = dr;
                        TaskBLL.GetProjectByTaskID(parentId, dtTasks, ref drProject);
                        lbPTitle.Text     = "编辑任务";
                        lbDesc.Text       = "任务描述:";
                        lbStatus.Text     = "任务状态:";
                        lbParent.Visible  = true;
                        ddlParent.Visible = true;
                        DataRow drParentTask = dtTasks.Select("TaskID=" + parentId)[0];
                        lbParentTitle.Visible = true;
                        lbParentTitle.Text    = string.Format("所属项目:{0};父级任务:{1}", SystemDataExtension.GetString(drProject, "Title"), SystemDataExtension.GetString(drParentTask, "Title"));
                        //父级任务列表:dtTasks除去当前任务dr以及其下级任务,其他任务均可作为父级任务使用
                        dtTasks.Rows.Remove(dr);
                        dtTasks.AcceptChanges();
                        dtTasks.TableName = "父级任务";
                        long      projectId  = SystemDataExtension.GetInt32(drProject, "TaskID");
                        DataTable dtReturn   = dtTasks.Clone();
                        DataRow[] drPrarents = dtTasks.Select("TaskID=" + projectId);
                        if (drPrarents.Length > 0)
                        {
                            dtReturn.Rows.Add(drPrarents[0].ItemArray);
                        }
                        TaskBLL.GetTasksByProjectID(projectId, dtTasks, ref dtReturn);
                        DataTable dtLTasks = TaskBLL.GetTasksWithLevel(dtReturn, "Title", "PID", false);
                        dtLTasks.TableName = "父级任务";
                        DDLBind(ddlParent, dtLTasks, parentId.ToString(), "ID", "Title");
                        ddlParent.Enabled = true;
                        tbDesc.Rows       = 3;
                    }


                    divList.Visible   = false;
                    divModify.Visible = true;
                    #endregion
                }
                else//添加子任务
                {
                    lbTitle_EN.Visible      = false;
                    lbTitle_ENValid.Visible = false;
                    tbTitle_EN.Visible      = false;
                    #region 添加任务
                    string    taskId  = e.CommandArgument.ToString();
                    DataTable dt      = (DataTable)ViewState["dtTasks"];
                    DataTable dtTasks = dt.Copy();
                    hdfID.Value     = "0";
                    lbTitle.Text    = "任务名称:";
                    tbTitle.Text    = "";
                    tbTitle_EN.Text = "";
                    tbStart.Text    = "";
                    tbDue.Text      = "";
                    tbDuring.Text   = "";
                    tbPercent.Text  = "";
                    lbDesc.Text     = "任务描述:";
                    tbDesc.Text     = "";
                    tbDesc.Rows     = 3;
                    lbPTitle.Text   = "添加任务";

                    //父级任务处理,在新增子任务时,确认了父级任务就不可更改了
                    hdfPID.Value = taskId;
                    DataRow drProject = dtTasks.Select("TaskID=" + taskId)[0];
                    TaskBLL.GetProjectByTaskID(long.Parse(taskId), dtTasks, ref drProject);
                    DataRow drParentTask = dtTasks.Select("TaskID=" + taskId)[0];
                    lbParentTitle.Visible = true;
                    lbParentTitle.Text    = string.Format("所属项目:{0};父级任务:{1}", SystemDataExtension.GetString(drProject, "Title"), SystemDataExtension.GetString(drParentTask, "Title"));
                    lbParent.Visible      = false;
                    ddlParent.Visible     = false;

                    //ddlParent.Enabled = true;
                    //dtTasks.TableName = "父级任务";
                    //DataTable dtLTasks = TaskBLL.GetTasksWithLevel(dtTasks,"Title","PID", false);
                    //dtLTasks.TableName = "分级任务";
                    //DDLBind(ddlParent, dtLTasks, taskId, "ID", "Title");
                    //ddlParent.Enabled = false;

                    lbStatus.Text           = "任务状态:";
                    ddlStatus.SelectedValue = "0";
                    divList.Visible         = false;
                    divModify.Visible       = true;
                    #endregion
                }
            }
            catch (Exception ex)
            {
                lbErr.Text = ex.ToString();
            }
        }
Example #10
0
        /// <summary>
        /// 根据当前用户ID,获取操作设置数据
        /// </summary>
        /// <param name="myActions">我的操作设置表</param>
        /// <param name="sysActions">系统操作表</param>
        /// <param name="dsMetaData">元数据常量表数据集</param>
        /// <param name="dsActionStruct">Action表结构数据集</param>
        /// <param name="userId">当前用户ID</param>
        /// <param name="dsMyActionStruct">User_Action表结构数据集</param>
        /// <returns></returns>
        private DataTable GetBindData(int userId, DataSet myActions, DataSet sysActions, DataSet dsMetaData, DataSet dsActionStruct, DataSet dsMyActionStruct)
        {
            DataTable dt = InitSouceTable();

            try
            {
                DataTable dtMyActions = myActions.Tables[0];
                //int myCount = dtMyActions.Rows.Count;
                DataTable dtSysActions = sysActions.Tables[0];
                int       sysCount     = dtSysActions.Rows.Count;
                for (int i = 0; i < sysCount; i++)
                {
                    DataRow   dr       = dt.NewRow();
                    DataRow   drSys    = dtSysActions.Rows[i];
                    int       actionId = SystemDataExtension.GetInt32(drSys, "ActionID");
                    DataRow[] drsMy    = dtMyActions.Select("ActionID=" + actionId);
                    dr["ActionID"] = actionId;
                    dr["Title"]    = drSys["Title"];
                    string[] myflds = new string[] { "MinDuring", "MaxDuring", "NormalDuring", "FrequencyID", "ShiDuanID", "Healthy", "Interaction", "Description", "Probability" };
                    if (drsMy.Length > 0)//该操作已有个性化设置
                    {
                        DataRow drMy = drsMy[0];
                        dr["IsMy"] = 1;
                        for (int k = 0; k < myflds.Length; k++)
                        {
                            string fldName = myflds[k];
                            dr[fldName] = drMy[fldName];
                        }
                    }
                    else
                    {
                        dr["IsMy"] = 0;
                        for (int k = 0; k < myflds.Length; k++)
                        {
                            string fldName = myflds[k];
                            dr[fldName] = null;
                        }
                    }
                    dr["Url"] = string.Format("{0}?uid={1}&aid={2}", webObj.ActionDetailsUrl, userId, actionId);

                    //系统设置

                    //系统的操作频度设置
                    string fldValue = SystemDataExtension.GetString(drSys, "FrequencyID");
                    dr["SysFrequencyID"] = GetToolTip(dsMetaData, dsActionStruct, "Frequency", fldValue, 1);
                    //系统的操作时段设置
                    fldValue           = SystemDataExtension.GetString(drSys, "ShiDuanID");
                    dr["SysShiduanID"] = GetToolTip(dsMetaData, dsActionStruct, "ShiDuan", fldValue, 1);
                    //系统健康相关度设置
                    fldValue         = SystemDataExtension.GetString(drSys, "Healthy");
                    dr["SysHealthy"] = GetToolTip(dsMetaData, dsActionStruct, "Healthy", fldValue, 0);
                    //系统的互动值相关度设置
                    fldValue             = SystemDataExtension.GetString(drSys, "Interaction");
                    dr["SysInteraction"] = GetToolTip(dsMetaData, dsActionStruct, "Interaction", fldValue, 0);
                    //系统的使用概率的设置
                    fldValue             = SystemDataExtension.GetString(drSys, "Probability");
                    dr["SysProbability"] = GetToolTip(dsMetaData, dsActionStruct, "Probability", fldValue, 0);
                    //系统的操作说明的设置
                    fldValue             = SystemDataExtension.GetString(drSys, "Description");
                    dr["SysDescription"] = GetToolTip(dsMetaData, dsActionStruct, "Description", fldValue, 0);

                    string jiliang = "时长计量单位:分钟" + Environment.NewLine;
                    fldValue = SystemDataExtension.GetString(drSys, "Measurement");
                    if (fldValue != string.Empty)
                    {
                        jiliang += string.Format("数量计量方式:{0}{1}", fldValue, Environment.NewLine);
                    }
                    fldValue = SystemDataExtension.GetString(drSys, "MUnits");
                    if (fldValue != string.Empty)
                    {
                        jiliang += string.Format("数量计量单位:{0}{1}", fldValue, Environment.NewLine);
                    }

                    DataRow[] drs = dsMyActionStruct.Tables[0].Select("字段名='MinDuring'");
                    if (drs.Length > 0)
                    {
                        dr["SysMinDuring"] = SystemDataExtension.GetString(drs[0], "说明") + Environment.NewLine + jiliang;
                    }
                    drs = dsMyActionStruct.Tables[0].Select("字段名='MaxDuring'");
                    if (drs.Length > 0)
                    {
                        dr["SysMaxDuring"] = SystemDataExtension.GetString(drs[0], "说明") + Environment.NewLine + jiliang;
                    }
                    drs = dsMyActionStruct.Tables[0].Select("字段名='NormalDuring'");
                    if (drs.Length > 0)
                    {
                        dr["SysNormalDuring"] = SystemDataExtension.GetString(drs[0], "说明") + Environment.NewLine + jiliang;
                    }
                    dt.Rows.Add(dr);
                }
            }
            catch (Exception)
            {
                dt = null;
                throw;
            }
            return(dt);
        }