/// <summary>
        /// 获得人员选择的数据集
        /// </summary>
        /// <param name="type">查询类型</param>
        /// <param name="info"></param>
        /// <returns>返回Table</returns>
        public DataTable GetInfo_Find(BillFlowMessage_ReceivedUserType type, string info)
        {
            string strSql = "";

            switch (type)
            {
            case BillFlowMessage_ReceivedUserType.用户:
                strSql = "select 员工编号,员工姓名 from View_HR_PersonnelArchive where 人员状态 = '在职'";

                if (info != "")
                {
                    strSql += " and (员工编号 like '%" + info + "%' or 员工姓名 like '%" + info + "%')";
                }

                strSql += " order by 员工编号";
                break;

            case BillFlowMessage_ReceivedUserType.角色:

                strSql = "select RoleCode as 角色编码, RoleName as 角色名称 from PlatformService.dbo.Auth_Role where 1=1 ";

                if (info != "")
                {
                    strSql += " and (RoleName like '%" + info + "%' or RoleCode like '%" + info + "%')";
                }

                strSql += " order by RoleName";
                break;

            default:
                break;
            }

            return(GlobalObject.DatabaseServer.QueryInfo(strSql));
        }
        /// <summary>
        /// 传递流消息到指定角色或用户(走流程)
        /// </summary>
        /// <param name="billNo">单据号</param>
        /// <param name="message">消息内容</param>
        /// <param name="receivedUserType">接收方类别,角色或用户</param>
        /// <param name="receiver">接收方代码,角色编码或用户编码</param>
        /// <returns>操作是否成功的标志</returns>
        public bool PassFlowMessage(string billNo, string message, BillFlowMessage_ReceivedUserType receivedUserType, string receiver)
        {
            List <string> lstReceiver = new List <string>();

            lstReceiver.Add(receiver);

            return(PassFlowMessage(billNo, message, receivedUserType, lstReceiver));
        }
        /// <summary>
        /// 发送新的流消息
        /// </summary>
        /// <param name="billNo">单据号</param>
        /// <param name="message">单据消息</param>
        /// <param name="receivedUserType">接收用户类别,角色或用户</param>
        /// <param name="receiver">接收消息的角色或用户</param>
        public void SendNewFlowMessage(string billNo, string message, BillFlowMessage_ReceivedUserType receivedUserType, string receiver)
        {
            List <string> lstReceiver = new List <string>();

            lstReceiver.Add(receiver);

            SendNewFlowMessage(billNo, message, receivedUserType, lstReceiver);
        }
Exemplo n.º 4
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            GetData();

            if (m_lnqRevisedAbolishedBill.BillStatus == "单据已完成")
            {
                MessageDialog.ShowPromptMessage("流程状态错误");
                return;
            }

            MessageDialog.ShowPromptMessage("请选择下一步流程操作人员");

            FormSelectPersonnel2 frm = new FormSelectPersonnel2();

            if (frm.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            if (!m_serverRevisedAbolishedBill.AddInfo(m_lnqRevisedAbolishedBill, out m_strErr))
            {
                MessageDialog.ShowPromptMessage(m_strErr);
            }
            else
            {
                m_strBillNo = txtBillNo.Text;

                BillFlowMessage_ReceivedUserType userType =
                    GlobalObject.GeneralFunction.StringConvertToEnum <BillFlowMessage_ReceivedUserType>(frm.SelectedNotifyPersonnelInfo.UserType);

                List <string> notifyList = new List <string>();

                foreach (PersonnelBasicInfo pbi in frm.SelectedNotifyPersonnelInfo.PersonnelBasicInfoList)
                {
                    switch (userType)
                    {
                    case BillFlowMessage_ReceivedUserType.用户:
                        notifyList.Add(pbi.工号);
                        break;

                    case BillFlowMessage_ReceivedUserType.角色:
                        notifyList.Add(pbi.角色);
                        break;

                    default:
                        break;
                    }
                }

                m_billMessageServer.DestroyMessage(m_lnqRevisedAbolishedBill.BillNo);
                m_billMessageServer.SendNewFlowMessage(m_lnqRevisedAbolishedBill.BillNo,
                                                       string.Format("{0}号文件修订废止申请单已提交,请审核", m_lnqRevisedAbolishedBill.BillNo),
                                                       userType, notifyList);

                MessageDialog.ShowPromptMessage("提交成功");
                this.Close();
            }
        }
        /// <summary>
        /// 发送传递流消息
        /// </summary>
        /// <param name="billNo">单据号</param>
        /// <param name="message">单据消息</param>
        /// <param name="receivedUserType">接收用户类别,角色或用户</param>
        /// <param name="receiver">接收消息的角色或用户组</param>
        /// <param name="lstAdditionalInfo">
        /// 附加信息,用于重定向及数据定位等功能(列表第1个位置始终为重定向单据的单据类型,列表第2个位置始终为重定向单据的单据号)
        /// </param>
        public void SendMessage(string billNo, string message, BillFlowMessage_ReceivedUserType receivedUserType,
                                List <string> receiver, List <string> lstAdditionalInfo)
        {
            if (m_billType == null || m_billType == "")
            {
                m_billType = GetBillType(billNo);
            }

            Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(m_billType), "单据类别不能为空");
            Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(billNo), "单据号不能为空");
            Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(message), "消息不能为空");

            try
            {
                Flow_BillFlowMessage msg = GetMessage(billNo);

                if (msg != null)
                {
                    msg.发起方用户编码 = BasicInfo.LoginID;
                    msg.发起方消息   = message;
                    msg.接收方类型   = receivedUserType.ToString();
                    msg.接收方     = StapleFunction.CreateSplitString(",", receiver);

                    msg.期望的处理完成时间 = null;

                    InitAdditionalInfo(ref msg, lstAdditionalInfo);

                    m_billFlowMsg.ContinueMessage(BasicInfo.LoginID, msg);

                    SendFinishedFlagToMessagePromptForm(billNo);
                }
                else
                {
                    msg = new Flow_BillFlowMessage();

                    msg.初始发起方用户编码 = BasicInfo.LoginID;
                    msg.单据号       = billNo;
                    msg.单据类型      = m_billType;
                    msg.单据流水号     = billNo;
                    msg.接收方类型     = receivedUserType.ToString();
                    msg.单据状态      = BillStatus.等待处理.ToString();
                    msg.发起方消息     = message;
                    msg.接收方       = StapleFunction.CreateSplitString(",", receiver);

                    msg.期望的处理完成时间 = null;

                    InitAdditionalInfo(ref msg, lstAdditionalInfo);

                    m_billFlowMsg.SendRequestMessage(BasicInfo.LoginID, msg);
                }
            }
            catch (Exception exce)
            {
                m_logManagement.WriteException(exce.Message + "\t\r" + exce.StackTrace, out m_error);
            }
        }
        /// <summary>
        /// 传递流消息到指定角色(走流程)
        /// </summary>
        /// <param name="billNo">单据号</param>
        /// <param name="message">消息内容</param>
        /// <param name="receiver">消息接收方, 角色编码或用户编码</param>
        /// <param name="flag">True 为角色:False 为用户</param>
        /// <returns>操作是否成功的标志</returns>
        public bool PassFlowMessage(string billNo, string message, string receiver, bool flag)
        {
            BillFlowMessage_ReceivedUserType receivedUserType = BillFlowMessage_ReceivedUserType.角色;

            if (!flag)
            {
                receivedUserType = BillFlowMessage_ReceivedUserType.用户;
            }

            return(PassFlowMessage(billNo, message, receivedUserType, receiver));
        }
Exemplo n.º 7
0
        private void btnFind_Click(object sender, EventArgs e)
        {
            m_receivedUserType =
                GlobalObject.GeneralFunction.StringConvertToEnum <BillFlowMessage_ReceivedUserType>(tabControl1.SelectedTab.Name);

            switch (m_receivedUserType)
            {
            case BillFlowMessage_ReceivedUserType.用户:
                dataGridView2.DataSource = m_personnelInfo.GetInfo_Find(m_receivedUserType, txtFind.Text.Trim());
                break;

            case BillFlowMessage_ReceivedUserType.角色:
                customDataGridView1.DataSource = m_personnelInfo.GetInfo_Find(m_receivedUserType, txtFind.Text.Trim());
                break;

            default:
                break;
            }
        }
Exemplo n.º 8
0
        private void btnOut_Click(object sender, EventArgs e)
        {
            m_receivedUserType =
                GlobalObject.GeneralFunction.StringConvertToEnum <BillFlowMessage_ReceivedUserType>(tabControl1.SelectedTab.Name);

            switch (m_receivedUserType)
            {
            case BillFlowMessage_ReceivedUserType.用户:
                UserOut();
                break;

            case BillFlowMessage_ReceivedUserType.角色:
                RoleOut();
                break;

            default:
                break;
            }
        }
        /// <summary>
        /// 传递流消息到多个角色或用户(走流程)
        /// </summary>
        /// <param name="billNo">单据号</param>
        /// <param name="message">消息内容</param>
        /// <param name="receivedUserType">接收方类别,角色或用户</param>
        /// <param name="receiver">接收方代码数组,角色编码或用户编码</param>
        /// <param name="lstAdditionalInfo">
        /// 附加信息,用于重定向及数据定位等功能(列表第1个位置始终为重定向单据的单据类型,列表第2个位置始终为重定向单据的单据号)
        /// </param>
        /// <returns>操作是否成功的标志</returns>
        public bool PassFlowMessage(string billNo, string message, BillFlowMessage_ReceivedUserType receivedUserType,
                                    List <string> receiver, List <string> lstAdditionalInfo)
        {
            if (m_billType == null || m_billType == "")
            {
                m_billType = GetBillType(billNo);
            }

            Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(m_billType), "单据类别不能为空");
            Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(billNo), "单据号不能为空");
            Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(message), "消息不能为空");

            try
            {
                Flow_BillFlowMessage msg = GetMessage(billNo);

                if (msg != null)
                {
                    msg.发起方用户编码 = BasicInfo.LoginID;
                    msg.发起方消息   = message;
                    msg.接收方类型   = receivedUserType.ToString();
                    msg.接收方     = StapleFunction.CreateSplitString(",", receiver);

                    msg.期望的处理完成时间 = null;

                    InitAdditionalInfo(ref msg, lstAdditionalInfo);

                    m_billFlowMsg.ContinueMessage(BasicInfo.LoginID, msg);

                    SendFinishedFlagToMessagePromptForm(billNo);
                }

                return(true);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemplo n.º 10
0
        void InitForm()
        {
            m_receivedUserType =
                GlobalObject.GeneralFunction.StringConvertToEnum <BillFlowMessage_ReceivedUserType>(tabControl1.SelectedTab.Name);

            DataTable tempTable = new DataTable();

            switch (m_receivedUserType)
            {
            case BillFlowMessage_ReceivedUserType.用户:
                tempTable = ((DataTable)dataGridView2.DataSource).Clone();
                break;

            case BillFlowMessage_ReceivedUserType.角色:
                tempTable = ((DataTable)customDataGridView1.DataSource).Clone();
                break;

            default:
                break;
            }

            dataGridView1.DataSource = tempTable;
        }
        /// <summary>
        /// 发送新的流消息
        /// </summary>
        /// <param name="billNo">单据号</param>
        /// <param name="message">单据消息</param>
        /// <param name="receivedUserType">接收用户类别,角色或用户</param>
        /// <param name="receiver">接收消息的角色或用户组</param>
        /// <param name="lstAdditionalInfo">
        /// 附加信息,用于重定向及数据定位等功能(列表第1个位置始终为重定向单据的单据类型,列表第2个位置始终为重定向单据的单据号)
        /// </param>
        public void SendNewFlowMessage(string billNo, string message, BillFlowMessage_ReceivedUserType receivedUserType,
                                       List <string> receiver, List <string> lstAdditionalInfo)
        {
            if (m_billType == null || m_billType == "")
            {
                m_billType = GetBillType(billNo);
            }

            Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(m_billType), "单据类别不能为空");
            Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(billNo), "单据号不能为空");
            Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(message), "消息不能为空");

            try
            {
                Flow_BillFlowMessage msg = new Flow_BillFlowMessage();

                msg.初始发起方用户编码 = BasicInfo.LoginID;
                msg.单据号       = billNo;
                msg.单据类型      = m_billType;
                msg.单据流水号     = billNo;
                msg.接收方类型     = receivedUserType.ToString();
                msg.单据状态      = BillStatus.等待处理.ToString();
                msg.发起方消息     = message;
                msg.接收方       = StapleFunction.CreateSplitString(",", receiver);

                msg.期望的处理完成时间 = null;

                InitAdditionalInfo(ref msg, lstAdditionalInfo);

                m_billFlowMsg.SendRequestMessage(BasicInfo.LoginID, msg);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemplo n.º 12
0
        private void btnImport_Click(object sender, EventArgs e)
        {
            DataTable dtTemp = ExcelHelperP.RenderFromExcel(openFileDialog1);

            if (dtTemp == null)
            {
                return;
            }

            m_receivedUserType =
                GlobalObject.GeneralFunction.StringConvertToEnum <BillFlowMessage_ReceivedUserType>(tabControl1.SelectedTab.Name);

            switch (m_receivedUserType)
            {
            case BillFlowMessage_ReceivedUserType.用户:

                if (!dtTemp.Columns.Contains("员工姓名") && !dtTemp.Columns.Contains("员工编号"))
                {
                    MessageDialog.ShowPromptMessage("无【员工编号】或【员工姓名】列");
                    return;
                }

                DataTable tempTable = ((DataTable)dataGridView2.DataSource).Clone();

                foreach (DataRow dr in dtTemp.Rows)
                {
                    DataRow newRow = tempTable.NewRow();

                    View_HR_Personnel personnel = new View_HR_Personnel();

                    object obj = "";

                    if (dtTemp.Columns.Contains("员工编号"))
                    {
                        obj = dr["员工编号"];
                    }
                    else
                    {
                        obj = dr["员工姓名"];
                    }

                    if (obj == null)
                    {
                        MessageDialog.ShowPromptMessage("有一行记录为空,请重新检查");
                        return;
                    }

                    personnel = UniversalFunction.GetPersonnelInfo(obj.ToString());

                    if (personnel == null)
                    {
                        MessageDialog.ShowPromptMessage("【员工编号】/【员工姓名】: " + obj.ToString() + " 数据错误,请重新检查");
                        return;
                    }

                    newRow["员工编号"] = personnel.工号;
                    newRow["员工姓名"] = personnel.姓名;

                    tempTable.Rows.Add(newRow);
                }

                dataGridView1.DataSource = tempTable;

                break;

            case BillFlowMessage_ReceivedUserType.角色:
                break;

            default:
                break;
            }
        }
Exemplo n.º 13
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            if ((DataTable)dataGridView1.DataSource == null || ((DataTable)dataGridView1.DataSource).Rows.Count == 0)
            {
                MessageDialog.ShowPromptMessage("请选择人员");
                return;
            }

            if (dataGridView1.Rows.Count > 1 && !_IsMultiSelect)
            {
                MessageDialog.ShowPromptMessage("无法选择多条记录");
                return;
            }

            m_receivedUserType =
                GlobalObject.GeneralFunction.StringConvertToEnum <BillFlowMessage_ReceivedUserType>(tabControl1.SelectedTab.Name);

            DataTable tempTable = new DataTable();

            switch (m_receivedUserType)
            {
            case BillFlowMessage_ReceivedUserType.用户:

                DataTable tempPersonnel = (DataTable)dataGridView1.DataSource;

                m_listSelectedPersonnels = new List <PersonnelBasicInfo>();

                foreach (DataRow dr in tempPersonnel.Rows)
                {
                    PersonnelBasicInfo entityInfo = new PersonnelBasicInfo();

                    entityInfo.工号 = dr["员工编号"].ToString();
                    entityInfo.姓名 = dr["员工姓名"].ToString();

                    m_listSelectedPersonnels.Add(entityInfo);
                }
                break;

            case BillFlowMessage_ReceivedUserType.角色:

                DataTable tempRole = (DataTable)dataGridView1.DataSource;

                m_listSelectedPersonnels = new List <PersonnelBasicInfo>();

                foreach (DataRow dr in tempRole.Rows)
                {
                    PersonnelBasicInfo entityInfo = new PersonnelBasicInfo();

                    entityInfo.角色 = dr["角色名称"].ToString();

                    m_listSelectedPersonnels.Add(entityInfo);
                }
                break;

            default:
                break;
            }

            m_notifyPersonnelInfo.UserType = m_receivedUserType.ToString();
            m_notifyPersonnelInfo.PersonnelBasicInfoList = m_listSelectedPersonnels;

            #region 2013-11-18 如果选择人员有问题则返回
            if (OnCheckSelectedPersonnel != null)
            {
                if (!OnCheckSelectedPersonnel(m_listSelectedPersonnels))
                {
                    return;
                }
            }
            #endregion

            this.DialogResult = DialogResult.OK;
            this.Close();
        }
        /// <summary>
        /// 结束流消息(流程已经走完)
        /// </summary>
        /// <param name="billNo">单据号</param>
        /// <param name="message">消息内容</param>
        /// <param name="noticeRoles">要知会的角色列表</param>
        /// <param name="noticeUsers">要知会的用户列表</param>
        /// <returns>操作是否成功的标志</returns>
        public bool EndFlowMessage(string billNo, string message, List <string> noticeRoles, List <string> noticeUsers)
        {
            if (m_billType == null || m_billType == "")
            {
                m_billType = GetBillType(billNo);
            }

            Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(m_billType), "单据类别不能为空");
            Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(billNo), "单据号不能为空");
            Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(message), "消息不能为空");
            //Debug.Assert(noticeRoles != null, "要知会的角色列表不能为空");

            try
            {
                m_logManagement.WriteException(string.Format("进入EndFlowMessage, BillNo:{0},Msg:{1}", billNo, message), out m_error);

                Flow_BillFlowMessage msg = GetMessage(billNo);

                if (msg != null)
                {
                    m_billFlowMsg.EndMessage(BasicInfo.LoginID, msg.序号, message);

                    // 2014-11-17 14:55 增加判断,如果没有角色和知会用户时不发送知会消息
                    if ((noticeRoles != null && noticeRoles.Count > 0) || (noticeUsers != null && noticeUsers.Count > 0))
                    {
                        // 获取要知会的用户编码
                        List <string> lstNoticeUser = GetUserCodes(noticeRoles, noticeUsers);

                        if (!lstNoticeUser.Contains(msg.初始发起方用户编码))
                        {
                            lstNoticeUser.Add(msg.初始发起方用户编码);
                        }

                        // 发送知会消息
                        NotifyMessage(msg.单据类型, msg.单据号, message, BasicInfo.LoginID, noticeRoles, lstNoticeUser);
                    }

                    SendFinishedFlagToMessagePromptForm(billNo);
                }
                else
                {
                    m_logManagement.WriteException(string.Format("没有找到单据消息,主动添加消息。EndFlowMessage, BillNo:{0},Msg:{1}", billNo, message), out m_error);

                    BillFlowMessage_ReceivedUserType receivedUserType = BillFlowMessage_ReceivedUserType.用户;

                    if (noticeRoles != null && noticeRoles.Count > 0)
                    {
                        receivedUserType = BillFlowMessage_ReceivedUserType.角色;
                    }

                    msg = new Flow_BillFlowMessage();

                    msg.初始发起方用户编码 = BasicInfo.LoginID;
                    msg.单据号       = billNo;
                    msg.单据类型      = m_billType;
                    msg.单据流水号     = billNo;
                    msg.接收方类型     = receivedUserType.ToString();
                    msg.单据状态      = BillStatus.已完成.ToString();
                    msg.发起方消息     = message;
                    msg.接收方       = StapleFunction.CreateSplitString(",",
                                                                     receivedUserType == BillFlowMessage_ReceivedUserType.角色 ? noticeRoles : noticeUsers);

                    msg.期望的处理完成时间 = null;

                    m_billFlowMsg.SendRequestMessage(BasicInfo.LoginID, msg);
                }

                return(true);
            }
            catch (Exception)
            {
                throw;
            }
        }
 /// <summary>
 /// 传递流消息到多个角色或用户(走流程)
 /// </summary>
 /// <param name="billNo">单据号</param>
 /// <param name="message">消息内容</param>
 /// <param name="receivedUserType">接收方类别,角色或用户</param>
 /// <param name="receiver">接收方代码数组,角色编码或用户编码</param>
 /// <returns>操作是否成功的标志</returns>
 public bool PassFlowMessage(string billNo, string message, BillFlowMessage_ReceivedUserType receivedUserType, List <string> receiver)
 {
     return(PassFlowMessage(billNo, message, receivedUserType, receiver, null));
 }
 /// <summary>
 /// 发送新的流消息
 /// </summary>
 /// <param name="billNo">单据号</param>
 /// <param name="message">单据消息</param>
 /// <param name="receivedUserType">接收用户类别,角色或用户</param>
 /// <param name="receiver">接收消息的角色或用户组</param>
 public void SendNewFlowMessage(string billNo, string message, BillFlowMessage_ReceivedUserType receivedUserType, List <string> receiver)
 {
     SendNewFlowMessage(billNo, message, receivedUserType, receiver, null);
 }