/// <summary>
        /// 对象编辑
        /// </summary>
        /// <param name="tWfInstTaskDetail_UpdateSet">UpdateSet用户对象</param>
        /// <param name="tWfInstTaskDetail_UpdateWhere">UpdateWhere用户对象</param>
        /// <returns>是否成功</returns>
        public bool Edit(TWfInstTaskDetailVo tWfInstTaskDetail_UpdateSet, TWfInstTaskDetailVo tWfInstTaskDetail_UpdateWhere)
        {
            string strSQL = SqlHelper.BuildUpdateExpress(tWfInstTaskDetail_UpdateSet, TWfInstTaskDetailVo.T_WF_INST_TASK_DETAIL_TABLE);

            strSQL += this.BuildWhereStatement(tWfInstTaskDetail_UpdateWhere);
            return(SqlHelper.ExecuteNonQuery(CommandType.Text, strSQL) > 0 ? true : false);
        }
        /// <summary>
        /// 获取对象DataTable
        /// </summary>
        /// <param name="tWfInstTaskDetail">对象</param>
        /// <param name="iIndex">起始页码</param>
        /// <param name="iCount">每页数目</param>
        /// <returns>返回结果</returns>
        public DataTable SelectByTable(TWfInstTaskDetailVo tWfInstTaskDetail, int iIndex, int iCount)
        {
            string strSQL = " select * from T_WF_INST_TASK_DETAIL {0} ";

            strSQL = String.Format(strSQL, BuildWhereStatement(tWfInstTaskDetail));
            return(SqlHelper.ExecuteDataTable(BuildPagerExpress(strSQL, iIndex, iCount)));
        }
        /// <summary>
        /// 根据实例环节获取环节配置数据,再查看其是否为结束环节【根据实例环节编号间接判断是否为结束环节】
        /// </summary>
        /// <param name="strInstStepID">实例环节ID</param>
        /// <returns></returns>
        public bool IsEndStep(string strInstStepID)
        {
            TWfSettingTaskLogic logic  = new TWfSettingTaskLogic();
            TWfInstTaskDetailVo detail = Details(strInstStepID);

            return(logic.IsEndStep(detail.WF_ID, detail.WF_TASK_ID));
        }
    //获取信息
    private void getData()
    {
        string strUserID = base.LogInfo.UserInfo.ID;

        string strSortname  = Request.Params["sortname"];
        string strSortorder = Request.Params["sortorder"];
        //当前页面
        int intPageIndex = Convert.ToInt32(Request.Params["page"]);
        //每页记录数
        int intPageSize = Convert.ToInt32(Request.Params["pagesize"]);

        if (strSortname == null || strSortname.Length < 0)
        {
            strSortname = "WF_STARTTIME";
        }

        TWfInstTaskDetailLogic logic  = new TWfInstTaskDetailLogic();
        TWfInstTaskDetailVo    detail = new TWfInstTaskDetailVo();

        detail.SORT_FIELD = strSortname;
        detail.SORT_TYPE  = strSortorder;
        DataTable dt            = logic.SelectByTableForUserDealing_OA("2A", intPageIndex, intPageSize);
        int       intTotalCount = logic.GetSelectResultCountForUserDealing_OA("2A");
        string    strJson       = CreateToJson(dt, intTotalCount);

        Response.Write(strJson);
        Response.End();
    }
        /// <summary>
        /// 对象编辑
        /// </summary>
        /// <param name="tWfInstTaskDetail">用户对象</param>
        /// <returns>是否成功</returns>
        public bool Edit(TWfInstTaskDetailVo tWfInstTaskDetail)
        {
            string strSQL = SqlHelper.BuildUpdateExpress(tWfInstTaskDetail, TWfInstTaskDetailVo.T_WF_INST_TASK_DETAIL_TABLE);

            strSQL += string.Format(" where ID='{0}' ", tWfInstTaskDetail.ID);
            return(SqlHelper.ExecuteNonQuery(CommandType.Text, strSQL) > 0 ? true : false);
        }
        /// <summary>
        /// 对象删除
        /// </summary>
        /// <param name="Id">ID</param>
        /// <returns>是否成功</returns>
        public bool Delete(TWfInstTaskDetailVo tWfInstTaskDetail)
        {
            string strSQL = "delete from T_WF_INST_TASK_DETAIL ";

            strSQL += this.BuildWhereStatement(tWfInstTaskDetail);

            return(SqlHelper.ExecuteNonQuery(CommandType.Text, strSQL) > 0 ? true : false);
        }
        /// <summary>
        /// 获取对象List
        /// </summary>
        /// <param name="tWfInstTaskDetail">对象</param>
        /// <param name="iIndex">起始页码</param>
        /// <param name="iCount">每页数目</param>
        /// <returns>返回结果</returns>
        public List <TWfInstTaskDetailVo> SelectByObject(TWfInstTaskDetailVo tWfInstTaskDetail, int iIndex, int iCount)
        {
            string strSQL = String.Format("select * from  T_WF_INST_TASK_DETAIL " + this.BuildWhereStatement(tWfInstTaskDetail));

            //增加对排序的支持,流程排序一致以正序排列
            if (!string.IsNullOrEmpty(tWfInstTaskDetail.SORT_FIELD))
            {
                strSQL += (" ORDER BY " + tWfInstTaskDetail.SORT_FIELD + " " + (string.IsNullOrEmpty(tWfInstTaskDetail.SORT_TYPE) ? " ASC " : tWfInstTaskDetail.SORT_TYPE));
            }
            return(SqlHelper.ExecuteObjectList(tWfInstTaskDetail, BuildPagerExpress(strSQL, iIndex, iCount)));
        }
        /// <summary>
        /// 功能描述:获取指定时间范围内的任务
        /// 创建时间:2012-12-23
        /// 创建人:邵世卓
        /// </summary>
        /// <param name="tWfInstTaskDetail">任务对象</param>
        /// <param name="strINST_TASK_STARTTIME_from">时间上限</param>
        /// <param name="strINST_TASK_STARTTIME_to">时间下限</param>
        /// <returns></returns>
        public int GetSelectResultCountForDayTaskList(TWfInstTaskDetailVo tWfInstTaskDetail, string strINST_TASK_STARTTIME_from, string strINST_TASK_STARTTIME_to)
        {
            string strSQL = "select Count(*) from T_WF_INST_TASK_DETAIL " + this.BuildWhereStatement(tWfInstTaskDetail);

            if (strINST_TASK_STARTTIME_from.Length > 0)
            {
                strSQL += " and INST_TASK_STARTTIME >= '" + strINST_TASK_STARTTIME_from + " 0:00:00'";
            }
            if (strINST_TASK_STARTTIME_to.Length > 0)
            {
                strSQL += " and INST_TASK_STARTTIME <= '" + strINST_TASK_STARTTIME_to + " 23:59:59'";
            }
            return(Convert.ToInt32(SqlHelper.ExecuteScalar(strSQL)));
        }
        /// <summary>
        /// 创建实例流程(包括未处理的第一个环节)数据接口
        /// </summary>
        /// <param name="strWFID">流程代码</param>
        /// <param name="strObjectUser">目标处理人用户ID</param>
        /// <param name="strCreateUser">生成人员ID</param>
        /// <param name="strServiceCode">业务类型编码</param>
        /// <param name="strServiceName">业务类型名称</param>
        /// <returns></returns>
        public bool CreateInstWFAndFirstStep(string strWFID, string strObjectUser, string strCreateUser, string strServiceCode, string strServiceName)
        {
            TWfInstTaskDetailVo detail  = new TWfInstTaskDetailVo();
            TWfInstControlVo    control = new TWfInstControlVo();
            TWfSettingTaskVo    task    = new TWfSettingTaskLogic().GetFirstStep(strWFID);
            TWfSettingFlowVo    flow    = new TWfSettingFlowLogic().Details(new TWfSettingFlowVo()
            {
                WF_ID = strWFID
            });

            //如果不存在数据,则返回
            if (string.IsNullOrEmpty(task.ID) || string.IsNullOrEmpty(flow.ID))
            {
                return(false);
            }

            detail.ID                  = GetGUID();
            detail.INST_NOTE           = task.TASK_NOTE;
            detail.INST_TASK_CAPTION   = task.TASK_CAPTION;
            detail.INST_TASK_STARTTIME = GetDateTimeToStanString();
            detail.INST_TASK_STATE     = TWfCommDict.StepState.StateNormal;
            detail.OBJECT_USER         = strObjectUser;
            detail.SRC_USER            = strCreateUser;
            detail.WF_ID               = strWFID;
            detail.WF_INST_ID          = GetGUID();
            detail.WF_SERIAL_NO        = GetDateTimeToStringFor15();
            detail.WF_TASK_ID          = task.WF_TASK_ID;

            control.ID              = detail.WF_INST_ID;
            control.IS_SUB_FLOW     = "0";
            control.WF_CAPTION      = flow.WF_CAPTION;
            control.WF_ID           = strWFID;
            control.WF_INST_TASK_ID = detail.ID;
            control.WF_NOTE         = flow.WF_NOTE;
            control.WF_PRIORITY     = TWfCommDict.WfPriority.Priority_1;
            control.WF_SERIAL_NO    = detail.WF_SERIAL_NO;
            control.WF_SERVICE_CODE = strServiceCode;
            control.WF_SERVICE_NAME = strServiceName;
            control.WF_STARTTIME    = detail.INST_TASK_STARTTIME;
            control.WF_STATE        = TWfCommDict.WfState.StateNormal;
            control.WF_TASK_ID      = detail.WF_TASK_ID;

            bool bIsDetail  = this.Create(detail);
            bool bIsControl = new TWfInstControlLogic().Create(control);

            return(bIsDetail & bIsControl);
        }
Пример #10
0
    /// <summary>
    /// 排序,取出时间最靠后的所有环节,组成单一数据
    /// </summary>
    /// <param name="InstTaskList"></param>
    /// <returns></returns>
    private List <TWfInstTaskDetailVo> GetTrueInstStep(List <TWfInstTaskDetailVo> InstTaskList)
    {
        List <TWfInstTaskDetailVo> list = new List <TWfInstTaskDetailVo>();

        foreach (TWfInstTaskDetailVo temp in InstTaskList)
        {
            if (list.Contains(temp))
            {
                continue;
            }
            //如果没有,则开始比对
            TWfInstTaskDetailVo baidu = new TWfInstTaskDetailVo();
            bool bIsHave  = false;
            bool bIsExsit = false;
            foreach (TWfInstTaskDetailVo google in list)
            {
                if (google.WF_TASK_ID == temp.WF_TASK_ID)
                {
                    bIsExsit = true;
                    if (DateTime.Parse(google.INST_TASK_STARTTIME) < DateTime.Parse(temp.INST_TASK_STARTTIME))
                    {
                        bIsHave = true;
                        baidu   = temp;
                    }
                }
            }
            if (!bIsExsit)
            {
                list.Add(temp);
            }
            else if (bIsHave)
            {
                foreach (TWfInstTaskDetailVo tt in list)
                {
                    if (tt.WF_TASK_ID == temp.WF_TASK_ID && tt.ID != temp.ID)
                    {
                        list.Remove(tt);
                        list.Add(baidu);
                        break;
                    }
                }
            }
        }

        return(list);
    }
    public static bool SetTaskToConfirm(string strValue, bool bIsUnConfirm)
    {
        TWfInstTaskDetailVo ttdv = new TWfInstTaskDetailVo();

        ttdv.ID = strValue;
        if (!bIsUnConfirm)
        {
            ttdv.CFM_TIME        = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            ttdv.INST_TASK_STATE = TWfCommDict.StepState.StateConfirm;
            ttdv.CFM_USER        = new PageBase().LogInfo.UserInfo.ID;
        }
        else
        {
            ttdv.CFM_UNTIME      = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            ttdv.INST_TASK_STATE = TWfCommDict.StepState.StateNormal;
        }
        return(new TWfInstTaskDetailLogic().Edit(ttdv));
    }
        /// <summary>
        /// 功能描述:获取某一业务单对应所有相关的工作流属性
        /// 包括ID:WF_INST_DETAIL的ID,CONTROL_ID:WF_INST_CONTROL的ID(同一业务流程所有环节相同),OBJECT_USER:接收人,REAL_USER:实际处理人,SRC_USER:发送人,WF_ID:流程名,INST_TASK_CAPTION:环节名称
        /// INST_TASK_STARTTIME:环节开始时间,INST_TASK_ENDTIME:环节结束时间,INST_TASK_STATE:环节执行状态(2A:待办,2B:已办)
        /// TASK_ORDER:环节顺序(开始环节取最小数,结束环节取最大数)
        /// 创建时间:2013-1-8
        /// 创建人:邵世卓
        /// </summary>
        /// <param name="tWfInstTaskDetail">实例对象</param>
        /// <param name="strServiceName">业务相关名称,如Task_ID</param>
        /// <param name="strServiceValue">业务相关值,如委托书ID或监测任务ID</param>
        /// <returns></returns>
        public DataTable GetWFDetailByBusinessInfo(TWfInstTaskDetailVo tWfInstTaskDetail, string strServiceName, string strServiceValue)
        {
            string strSQL = @"select control.ID as CONTROL_ID,detail.ID,detail.OBJECT_USER,detail.REAL_USER,detail.SRC_USER,detail.WF_ID,detail.INST_TASK_CAPTION,
                                                detail.INST_TASK_STARTTIME,detail.INST_TASK_ENDTIME,detail.INST_TASK_STATE,task.TASK_ORDER
                                                from ({0}) detail
                                                JOIN T_WF_SETTING_TASK task ON detail.WF_TASK_ID=task.ID
                                                JOIN T_WF_INST_CONTROL control ON detail.WF_INST_ID=control.ID";

            string strDetail = "select * from T_WF_INST_TASK_DETAIL ";

            strDetail += BuildWhereStatement(tWfInstTaskDetail);
            if (!string.IsNullOrEmpty(strServiceName) && !string.IsNullOrEmpty(strServiceValue))
            {
                strDetail += string.Format(" and ID in (select WF_INST_TASK_ID from T_WF_INST_TASK_SERVICE where SERVICE_KEY_NAME='{0}' and SERVICE_KEY_VALUE='{1}')", strServiceName, strServiceValue);
            }

            strSQL = string.Format(strSQL, strDetail);
            strSQL = string.Format(strSQL, BuildWhereStatement(tWfInstTaskDetail));
            return(SqlHelper.ExecuteDataTable(strSQL));
        }
    /// <summary>
    /// 获取委托书流程信息
    /// </summary>
    /// <param name="strBusinessID">业务ID</param>
    /// <returns></returns>
    protected string getFlowInfo(string strBusinessID)
    {
        string strWf_ID = "RPT";//默认为报告流程

        //流程类别
        if (!string.IsNullOrEmpty(Request.QueryString["contract_type"]))
        {
            switch (Request.QueryString["contract_type"])
            {
            //自送样流程
            case "04":
                strWf_ID = "SAMPLE_WT";
                break;

            //验收流程
            case "05":
                strWf_ID = "WF_A";
                break;

            //常规委托书流程
            default:
                strWf_ID = "WT_FLOW";
                break;
            }
        }
        //构造实例明细对象
        TWfInstTaskDetailVo objTaskDetail = new TWfInstTaskDetailVo();

        objTaskDetail.WF_ID = strWf_ID;
        //获取业务流程所有环节信息
        DataTable dt = new TWfInstTaskDetailLogic().GetWFDetailByBusinessInfo(objTaskDetail, "task_id", Request.QueryString["business_id"]);

        if (dt.Rows.Count > 0)
        {
            return(dt.Rows[0]["CONTROL_ID"].ToString() + "|" + GetStepHeight(strWf_ID));
        }
        return("");
    }
Пример #14
0
    public void InitListData(string strUserID)
    {
        TWfInstTaskDetailVo detail = new TWfInstTaskDetailVo();

        TWfInstTaskDetailLogic logic = new TWfInstTaskDetailLogic();

        pager.RecordCount = logic.GetSelectResultCountForUserDealing(strUserID, "2A");
        DataTable dtControl = logic.SelectByTableForUserDealing(strUserID, "2A", pager.CurrentPageIndex, pager.PageSize);

        if (null == StepTable)
        {
            DataTable dtTask = new TWfSettingTaskLogic().SelectByTable(new TWfSettingTaskVo());
            StepTable = dtTask;
        }
        if (null == WFTable)
        {
            DataTable dtWF = new TWfSettingFlowLogic().SelectByTable(new TWfSettingFlowVo());
            WFTable = dtWF;
        }

        grdList.DataSource = dtControl.DefaultView;
        grdList.DataBind();
    }
        /// <summary>
        /// 对象添加
        /// </summary>
        /// <param name="tWfInstTaskDetail">对象</param>
        /// <returns>是否成功</returns>
        public bool Create(TWfInstTaskDetailVo tWfInstTaskDetail)
        {
            string strSQL = SqlHelper.BuildInsertExpress(tWfInstTaskDetail, TWfInstTaskDetailVo.T_WF_INST_TASK_DETAIL_TABLE);

            return(SqlHelper.ExecuteNonQuery(CommandType.Text, strSQL) > 0 ? true : false);
        }
 /// <summary>
 /// 对象编辑
 /// </summary>
 /// <param name="tWfInstTaskDetail_UpdateSet">UpdateSet用户对象</param>
 /// <param name="tWfInstTaskDetail_UpdateWhere">UpdateWhere用户对象</param>
 /// <returns>是否成功</returns>
 public bool Edit(TWfInstTaskDetailVo tWfInstTaskDetail_UpdateSet, TWfInstTaskDetailVo tWfInstTaskDetail_UpdateWhere)
 {
     return(access.Edit(tWfInstTaskDetail_UpdateSet, tWfInstTaskDetail_UpdateWhere));
 }
 /// <summary>
 /// 对象编辑
 /// </summary>
 /// <param name="tWfInstTaskDetail">用户对象</param>
 /// <returns>是否成功</returns>
 public bool Edit(TWfInstTaskDetailVo tWfInstTaskDetail)
 {
     return(access.Edit(tWfInstTaskDetail));
 }
        /// <summary>
        ///  流程实例返元的处理方法
        /// </summary>
        /// <param name="strID">实例流程的编号</param>
        /// <returns></returns>
        protected bool WFOperateGoStart(string strID)
        { //具有返元权限的操作人员可以做
            TWfInstTaskDetailLogic     instTaskLogic = new TWfInstTaskDetailLogic();
            List <TWfInstTaskDetailVo> taskInstList  = instTaskLogic.SelectByObject(new TWfInstTaskDetailVo()
            {
                WF_INST_ID = strID
            }, 0, 100);

            //如果指定的流程无实际的节点,则返回
            if (taskInstList.Count < 1)
            {
                return(false);
            }
            TWfInstTaskDetailVo     taskInstFirst   = taskInstList[0];
            TWfInstTaskDetailVo     taskInstLast    = taskInstList[taskInstList.Count - 1];
            List <TWfSettingTaskVo> taskSettingList = new TWfSettingTaskLogic().SelectByObjectListForSetp(new TWfSettingTaskVo()
            {
                WF_ID = taskInstFirst.WF_ID
            });
            TWfInstControlVo wfInst = new TWfInstControlLogic().Details(taskInstFirst.WF_INST_ID);

            //如果配置信息没有任何节点,则返回
            if (taskSettingList.Count < 1)
            {
                return(false);
            }

            TWfInstTaskDetailVo taskNew = new TWfInstTaskDetailVo();

            taskNew.ID                  = this.GetGUID();
            taskNew.INST_NOTE           = taskSettingList[0].TASK_NOTE;
            taskNew.INST_TASK_CAPTION   = taskSettingList[0].TASK_CAPTION;
            taskNew.INST_TASK_STARTTIME = this.GetDateTimeToStanString();
            taskNew.INST_TASK_STATE     = TWfCommDict.StepState.StateNormal;
            taskNew.OBJECT_USER         = taskInstFirst.OBJECT_USER; //使用上环节的目标处理人
            taskNew.PRE_INST_TASK_ID    = taskInstLast.ID;           //上一个环节的编号,将成为本环节的上环节编号
            //返元的所有新节点的前一个节点肯定是空的,直接置空即可
            //taskNew.PRE_TASK_ID = i3.ValueObject.ConstValues.SpecialCharacter.EmptyValuesFillChar;
            taskNew.WF_ID        = taskSettingList[0].WF_ID;
            taskNew.WF_INST_ID   = taskInstFirst.WF_INST_ID;
            taskNew.WF_SERIAL_NO = taskInstFirst.WF_SERIAL_NO;
            taskNew.WF_TASK_ID   = taskSettingList[0].ID;

            //将原环节表的标志位更新为完成
            taskInstLast.INST_TASK_ENDTIME    = this.GetDateTimeToStanString();
            taskInstLast.INST_TASK_STATE      = TWfCommDict.StepState.StateDown;
            taskInstLast.INST_TASK_DEAL_STATE = TWfCommDict.StepDealState.ForToZero;
            taskInstLast.REAL_USER            = (this.Page as PageBase).LogInfo.UserInfo.ID;

            //环节表更新完毕,接着更新控制表
            //更新控制表信息
            //退回时要把附件和评论信息放入数据库,业务数据也要全部退回
            //写入流程产生的新数据

            instTaskLogic.Create(taskNew);
            instTaskLogic.Edit(new TWfInstTaskDetailVo()
            {
                ID = taskInstLast.ID,
                INST_TASK_ENDTIME    = taskInstLast.INST_TASK_ENDTIME,
                INST_TASK_STATE      = taskInstLast.INST_TASK_STATE,
                INST_TASK_DEAL_STATE = taskInstLast.INST_TASK_DEAL_STATE,
                REAL_USER            = taskInstLast.REAL_USER
            });
            TWfInstControlLogic instWFLogic = new TWfInstControlLogic();

            instWFLogic.Edit(new TWfInstControlVo()
            {
                ID = wfInst.ID,
                WF_INST_TASK_ID = taskNew.ID,
                WF_TASK_ID      = taskNew.WF_TASK_ID
            });

            //附件和评论都无效

            //业务数据直接copy第一个节点时的数据即可
            TWfInstTaskServiceLogic     serviceLogic   = new TWfInstTaskServiceLogic();
            List <TWfInstTaskServiceVo> serviceList    = new List <TWfInstTaskServiceVo>();
            List <TWfInstTaskServiceVo> serviceOldList = new TWfInstTaskServiceLogic().SelectByObject(new TWfInstTaskServiceVo()
            {
                WF_INST_ID = taskInstFirst.WF_INST_ID, WF_INST_TASK_ID = taskInstFirst.ID
            }, 0, 100);

            if (null != serviceOldList)
            {
                foreach (TWfInstTaskServiceVo service in serviceOldList)
                {
                    //增加ID,流程实例编号、环节实例编号等内容,业务代码,Key和Value由业务系统自己处理
                    TWfInstTaskServiceVo stemp = new TWfInstTaskServiceVo();
                    stemp.ID                = this.GetGUID();
                    stemp.WF_INST_ID        = wfInst.ID;
                    stemp.WF_INST_TASK_ID   = taskNew.ID;
                    stemp.SERVICE_NAME      = service.SERVICE_NAME;
                    stemp.SERVICE_KEY_NAME  = service.SERVICE_KEY_NAME;
                    stemp.SERVICE_KEY_VALUE = service.SERVICE_KEY_VALUE;
                    stemp.SERVICE_ROW_SIGN  = service.SERVICE_ROW_SIGN;
                    serviceList.Add(stemp);
                }
            }

            foreach (TWfInstTaskServiceVo serviceTemp in serviceList)
            {
                serviceLogic.Create(serviceTemp);
            }

            return(true);
        }
 /// <summary>
 /// 对象删除
 /// </summary>
 /// <param name="Id">ID</param>
 /// <returns>是否成功</returns>
 public bool Delete(TWfInstTaskDetailVo tWfInstTaskDetail)
 {
     return(access.Delete(tWfInstTaskDetail));
 }
        /// <summary>
        /// 获取对象List
        /// 【大数据量慎用】
        /// </summary>
        /// <param name="tWfInstTaskDetail">对象</param>
        /// <param name="iIndex">起始页码</param>
        /// <param name="iCount">每页数目</param>
        /// <returns>返回结果</returns>
        public List <TWfInstTaskDetailVo> SelectAllByObject(TWfInstTaskDetailVo tWfInstTaskDetail)
        {
            string strSQL = String.Format("select * from  T_WF_INST_TASK_DETAIL " + this.BuildWhereStatement(tWfInstTaskDetail));

            return(SqlHelper.ExecuteObjectList(tWfInstTaskDetail, strSQL));
        }
 /// <summary>
 /// 功能描述:获取指定时间范围内的任务
 /// 创建时间:2012-12-23
 /// 创建人:邵世卓
 /// <param name="tWfInstTaskDetail">任务对象</param>
 /// <param name="strINST_TASK_STARTTIME_from">时间上限</param>
 /// <param name="strINST_TASK_STARTTIME_to">时间下限</param>
 /// <returns></returns>
 public int GetSelectResultCountForDayTaskList(TWfInstTaskDetailVo tWfInstTaskDetail, string strINST_TASK_STARTTIME_from, string strINST_TASK_STARTTIME_to)
 {
     return(access.GetSelectResultCountForDayTaskList(tWfInstTaskDetail, strINST_TASK_STARTTIME_from, strINST_TASK_STARTTIME_to));
 }
 /// <summary>
 /// 功能描述:获取某一业务单对应所有相关的工作流属性
 /// 包括ID:WF_INST_DETAIL的ID,CONTROL_ID:WF_INST_CONTROL的ID(同一业务流程所有环节相同),OBJECT_USER:接收人,REAL_USER:实际处理人,SRC_USER:发送人,WF_ID:流程名,INST_TASK_CAPTION:环节名称
 /// INST_TASK_STARTTIME:环节开始时间,INST_TASK_ENDTIME:环节结束时间,INST_TASK_STATE:环节执行状态(2A:待办,2B:已办)
 /// TASK_ORDER:环节顺序(开始环节取最小数,结束环节取最大数)
 /// 创建时间:2013-1-8
 /// 创建人:邵世卓
 /// </summary>
 /// <param name="tWfInstTaskDetail">实例对象</param>
 /// <param name="strServiceName">业务相关名称,如Task_ID</param>
 /// <param name="strServiceValue">业务相关值,如委托书ID或监测任务ID</param>
 /// <returns></returns>
 public DataTable GetWFDetailByBusinessInfo(TWfInstTaskDetailVo tWfInstTaskDetail, string strServiceName, string strServiceValue)
 {
     return(access.GetWFDetailByBusinessInfo(tWfInstTaskDetail, strServiceName, strServiceValue));
 }
        /// <summary>
        /// 根据对象构造条件语句
        /// </summary>
        /// <param name="tWfInstTaskDetail"></param>
        /// <returns></returns>
        public string BuildWhereStatement(TWfInstTaskDetailVo tWfInstTaskDetail)
        {
            StringBuilder strWhereStatement = new StringBuilder(" Where 1=1 ");

            if (null != tWfInstTaskDetail)
            {
                //环节实例编号
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.ID.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND ID = '{0}'", tWfInstTaskDetail.ID.ToString()));
                }
                //流程实例编号
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.WF_INST_ID.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND WF_INST_ID = '{0}'", tWfInstTaskDetail.WF_INST_ID.ToString()));
                }
                //流水号
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.WF_SERIAL_NO.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND WF_SERIAL_NO = '{0}'", tWfInstTaskDetail.WF_SERIAL_NO.ToString()));
                }
                //流程编号
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.WF_ID.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND WF_ID = '{0}'", tWfInstTaskDetail.WF_ID.ToString()));
                }
                //环节编号
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.WF_TASK_ID.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND WF_TASK_ID = '{0}'", tWfInstTaskDetail.WF_TASK_ID.ToString()));
                }
                //上环节实例编号
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.PRE_INST_TASK_ID.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND PRE_INST_TASK_ID = '{0}'", tWfInstTaskDetail.PRE_INST_TASK_ID.ToString()));
                }
                //上环节编号
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.PRE_TASK_ID.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND PRE_TASK_ID = '{0}'", tWfInstTaskDetail.PRE_TASK_ID.ToString()));
                }
                //此环节简述
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.INST_TASK_CAPTION.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND INST_TASK_CAPTION = '{0}'", tWfInstTaskDetail.INST_TASK_CAPTION.ToString()));
                }
                //此节点详细描述
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.INST_NOTE.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND INST_NOTE = '{0}'", tWfInstTaskDetail.INST_NOTE.ToString()));
                }
                //此环节开始时间
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.INST_TASK_STARTTIME.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND INST_TASK_STARTTIME = '{0}'", tWfInstTaskDetail.INST_TASK_STARTTIME.ToString()));
                }
                //此环节结束时间
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.INST_TASK_ENDTIME.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND INST_TASK_ENDTIME = '{0}'", tWfInstTaskDetail.INST_TASK_ENDTIME.ToString()));
                }
                //此环节状态
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.INST_TASK_STATE.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND INST_TASK_STATE = '{0}'", tWfInstTaskDetail.INST_TASK_STATE.ToString()));
                }
                //环节处理状态
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.INST_TASK_DEAL_STATE.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND INST_TASK_DEAL_STATE = '{0}'", tWfInstTaskDetail.INST_TASK_DEAL_STATE.ToString()));
                }
                //目标操作人
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.OBJECT_USER.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND OBJECT_USER = '******'", tWfInstTaskDetail.OBJECT_USER.ToString()));
                }
                //实际操作人
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.REAL_USER.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND REAL_USER = '******'", tWfInstTaskDetail.REAL_USER.ToString()));
                }
                //发送人
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.SRC_USER.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND SRC_USER = '******'", tWfInstTaskDetail.SRC_USER.ToString()));
                }
                //环节提示信息
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.INST_TASK_MSG.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND INST_TASK_MSG = '{0}'", tWfInstTaskDetail.INST_TASK_MSG.ToString()));
                }
                //是否超时
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.IS_OVERTIME.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND IS_OVERTIME = '{0}'", tWfInstTaskDetail.IS_OVERTIME.ToString()));
                }
                //是否提醒
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.IS_REMIND.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND IS_REMIND = '{0}'", tWfInstTaskDetail.IS_REMIND.ToString()));
                }

                //确认人
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.CFM_USER.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND CFM_USER = '******'", tWfInstTaskDetail.CFM_USER.ToString()));
                }
                //确认时间
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.CFM_TIME.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND CFM_TIME = '{0}'", tWfInstTaskDetail.CFM_TIME.ToString()));
                }
                //撤销时间
                if (!String.IsNullOrEmpty(tWfInstTaskDetail.CFM_UNTIME.ToString().Trim()))
                {
                    strWhereStatement.Append(string.Format(" AND CFM_UNTIME = '{0}'", tWfInstTaskDetail.CFM_UNTIME.ToString()));
                }
            }
            return(strWhereStatement.ToString());
        }
 public TWfInstTaskDetailLogic(TWfInstTaskDetailVo _tWfInstTaskDetail)
 {
     tWfInstTaskDetail = _tWfInstTaskDetail;
     access            = new TWfInstTaskDetailAccess();
 }
        /// <summary>
        /// 根据对象获取全部数据,用Table承载
        ///  数据量较小时使用【不推荐】
        /// </summary>
        /// <param name="tWfInstTaskDetail"></param>
        /// <returns></returns>
        public DataTable SelectByTable(TWfInstTaskDetailVo tWfInstTaskDetail)
        {
            string strSQL = "select * from T_WF_INST_TASK_DETAIL " + this.BuildWhereStatement(tWfInstTaskDetail);

            return(SqlHelper.ExecuteDataTable(strSQL));
        }
        /// <summary>
        /// 获得查询结果总行数,用于分页
        /// </summary>
        /// <param name="tWfInstTaskDetail">对象</param>
        /// <returns>返回行数</returns>
        public int GetSelectResultCount(TWfInstTaskDetailVo tWfInstTaskDetail)
        {
            string strSQL = "select Count(*) from T_WF_INST_TASK_DETAIL " + this.BuildWhereStatement(tWfInstTaskDetail);

            return(Convert.ToInt32(SqlHelper.ExecuteScalar(strSQL)));
        }
 /// <summary>
 /// 对象添加
 /// </summary>
 /// <param name="sysRole">对象</param>
 /// <returns>是否成功</returns>
 public bool Create(TWfInstTaskDetailVo tWfInstTaskDetail)
 {
     return(access.Create(tWfInstTaskDetail));
 }
        /// <summary>
        /// 根据对象特征获取单一对象
        /// </summary>
        /// <param name="tWfInstTaskDetail">对象</param>
        /// <returns></returns>
        public TWfInstTaskDetailVo SelectByObject(TWfInstTaskDetailVo tWfInstTaskDetail)
        {
            string strSQL = "select * from T_WF_INST_TASK_DETAIL " + this.BuildWhereStatement(tWfInstTaskDetail);

            return(SqlHelper.ExecuteObject(new TWfInstTaskDetailVo(), strSQL));
        }
Пример #29
0
    public string CreatStepHtml(List <TWfSettingTaskVo> taskList, List <TWfInstTaskDetailVo> InstTaskList)
    {
        string strJianTou = "<img src='img/down2012.gif' />";
        //string strModel = "<div " + strConstColor + ">#A1#</div>" + strJianTou;//增加向下的箭头的话,在这个里面加就行了。在最后时移除一个
        string strModel = "<div class='#DCD#'><h2>{0}</h2><p><span>环节状态:</span><strong>{1}</strong><br /><span>处理者:</span>{2}&nbsp;&nbsp;&nbsp;<span>办理时间:</span>{3}</p>" + strJianTou + "</div>";

        //string strInstStepHtml = "环节名称:{0}<br />环节状态:<span style='font-weight:bold;'>{1}</span><br />处理者:{2}";
        //<div class="{#BCD#}"><h2>{0}</h2><p><span>环节状态:</span><strong>{1}</strong><br /><span>处理者:</span>{2}</p></div>

        //update by ssz 当任务未进入工作流时直接返回 begin
        if (InstTaskList.Count <= 0)
        {
            return("");
        }
        //update end
        //获取最后一在用的环节
        TWfInstTaskDetailVo        instTaskLast = InstTaskList[InstTaskList.Count - 1];
        List <TWfInstTaskDetailVo> instHaveStep = GetTrueInstStep(InstTaskList);
        int    iStepOrder    = 0;
        string strHtmlString = "";

        foreach (TWfSettingTaskVo tsdv in taskList)
        {
            string strHeader = "";
            //设置环节颜色
            string strStepColor = "listgreen";
            //if (instTaskLast.WF_TASK_ID == tsdv.WF_TASK_ID)
            //{
            //    strStepColor = "listyellow";
            //    iStepOrder = int.Parse(tsdv.TASK_ORDER);
            //}
            if (instTaskLast.WF_TASK_ID == tsdv.WF_TASK_ID && instTaskLast.INST_TASK_STATE == "2A")
            {
                strStepColor = "listyellow";
                iStepOrder   = int.Parse(tsdv.TASK_ORDER);
            }
            if (int.Parse(tsdv.TASK_ORDER) > iStepOrder && iStepOrder != 0)
            {
                //如果是退回的节点,则要显示不同颜色
                bool bIsBack = false;
                foreach (TWfInstTaskDetailVo ttdv in InstTaskList)
                {
                    if (tsdv.WF_TASK_ID == ttdv.WF_TASK_ID && ttdv.INST_TASK_DEAL_STATE == TWfCommDict.StepDealState.ForBack)
                    {
                        bIsBack = true;
                        break;
                    }
                }
                if (bIsBack)
                {
                    strStepColor = "listred";
                }
                else
                {
                    strStepColor = "listgray";
                }
            }
            //先替换配置环节内容
            strHeader = strModel.Replace("#DCD#", strStepColor);
            //增加信号量,如果一直没有匹配上,则说明需要现实配置信息,环节配置信息也需要显示
            bool bIsHaveInstTask = false;

            foreach (TWfInstTaskDetailVo ttdv in instHaveStep)
            {
                if (ttdv.WF_TASK_ID == tsdv.WF_TASK_ID)
                {
                    bIsHaveInstTask = true;

                    string strHeaderUser = ttdv.REAL_USER.Trim().Length > 0 ? ttdv.REAL_USER : ttdv.OBJECT_USER;

                    strHeader = string.Format(strHeader,
                                              ttdv.INST_TASK_CAPTION,
                                              GetStepStateName(ttdv.INST_TASK_STATE, ttdv.INST_TASK_DEAL_STATE),
                                              GetUserNameFromID(strHeaderUser, true),
                                              ttdv.INST_TASK_ENDTIME
                                              );

                    break;
                }
            }
            if (!bIsHaveInstTask)
            {
                //只显示配置本身信息,
                strHeader = string.Format(strHeader, tsdv.TASK_CAPTION, "未启动", "", "");
            }

            strHtmlString += strHeader;
        }
        return(strHtmlString.Remove(strHtmlString.Length - strJianTou.Length - 6));
    }
 /// <summary>
 /// 根据对象特征获取单一对象
 /// </summary>
 /// <param name="tWfInstTaskDetail">对象</param>
 /// <returns></returns>
 public TWfInstTaskDetailVo SelectByObject(TWfInstTaskDetailVo tWfInstTaskDetail)
 {
     return(access.SelectByObject(tWfInstTaskDetail));
 }