/// <summary> /// 结束流消息(流程已经走完) /// </summary> /// <param name="msgContent">消息内容</param> void EndFlowMessage(string msgContent) { Flow_BillFlowMessage msg = m_billFlowMsg.GetMessage(BasicInfo.LoginID, labelTitle.Text, m_strBillID); if (msg == null) { return; } m_billFlowMsg.EndMessage(BasicInfo.LoginID, msg.序号, msgContent); SendFinishedFlagToMessagePromptForm(m_strBillID); #region 发送知会消息 StringBuilder sb = new StringBuilder(); sb.AppendFormat("{0} 号自制件工装报检已经处理完毕, ", msg.单据流水号); List <string> noticeRoles = new List <string>(); noticeRoles.Add(CE_RoleEnum.工装管理员.ToString()); List <string> noticeUsers = new List <string>(); noticeUsers.Add(msg.初始发起方用户编码); m_billMessageServer.NotifyMessage(msg.单据类型, msg.单据号, sb.ToString(), BasicInfo.LoginID, noticeRoles, noticeUsers); #endregion 发送知会消息 }
/// <summary> /// 传递流消息(走流程) /// </summary> /// <param name="msgContent">消息内容</param> /// <param name="receivedRole">接收方角色</param> void PassFlowMessage(string msgContent, CE_RoleEnum receivedRole) { try { Flow_BillFlowMessage msg = m_billFlowMsg.GetMessage(BasicInfo.LoginID, labelTitle.Text, txtBill_ID.Text); if (msg == null) { return; } msg.发起方用户编码 = BasicInfo.LoginID; msg.发起方消息 = msgContent; msg.接收方类型 = BillFlowMessage_ReceivedUserType.角色.ToString(); msg.接收方 = receivedRole.ToString(); msg.期望的处理完成时间 = null; m_billFlowMsg.ContinueMessage(BasicInfo.LoginID, msg); SendFinishedFlagToMessagePromptForm(txtBill_ID.Text); } catch (Exception exce) { Console.WriteLine(exce.Message); } }
/// <summary> /// 回退流消息 /// </summary> /// <param name="message">消息内容</param> /// <returns>操作是否成功的标志</returns> public bool RebackFlowMessage(string billNo, string message) { 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) { m_billFlowMsg.RebackMessage(BasicInfo.LoginID, msg.序号, message); SendFinishedFlagToMessagePromptForm(billNo); } return(true); } catch (Exception exce) { m_logManagement.WriteException(exce.Message + "\t\r" + exce.StackTrace, out m_error); return(false); } }
/// <summary> /// 结束流消息(流程已经走完) /// </summary> /// <param name="msgContent">消息内容</param> void EndFlowMessage(string msgContent) { try { Flow_BillFlowMessage msg = m_billFlowMsg.GetMessage(BasicInfo.LoginID, labelTitle.Text, txtBill_ID.Text); if (msg == null) { return; } m_billFlowMsg.EndMessage(BasicInfo.LoginID, msg.序号, msgContent); SendFinishedFlagToMessagePromptForm(txtBill_ID.Text); #region 发送知会消息 List <string> noticeUsers = new List <string>(); noticeUsers.Add(msg.初始发起方用户编码); m_billMessageServer.NotifyMessage(msg.单据类型, msg.单据号, msgContent, BasicInfo.LoginID, null, noticeUsers); #endregion 发送知会消息 } catch (Exception exce) { Console.WriteLine(exce.Message); } }
/// <summary> /// 结束流消息(流程已经走完) /// </summary> /// <param name="billNo">单据号</param> /// <param name="msgContent">消息内容</param> void EndFlowMessage(string billNo, string msgContent) { Flow_BillFlowMessage msg = m_billFlowMsg.GetMessage(BasicInfo.LoginID, labelTitle.Text, billNo); if (msg == null) { return; } m_billFlowMsg.EndMessage(BasicInfo.LoginID, msg.序号, msgContent); SendFinishedFlagToMessagePromptForm(billNo); #region 发送知会消息 string content = string.Format("{0} 号采购退货单已经处理完毕", msg.单据流水号); List <string> noticeRoles = new List <string>(); noticeRoles.AddRange(m_billMessageServer.GetDeptDirectorRoleName( dataGridView1.SelectedRows[0].Cells["申请部门编码"].Value.ToString())); noticeRoles.Add(CE_RoleEnum.会计.ToString()); noticeRoles.Add(CE_RoleEnum.质量总监.ToString()); noticeRoles.Add(CE_RoleEnum.质控主管.ToString()); noticeRoles.Add(CE_RoleEnum.质量工程师.ToString()); m_billMessageServer.NotifyMessage(msg.单据类型, msg.单据号, content, BasicInfo.LoginID, noticeRoles, null); #endregion 发送知会消息 }
/// <summary> /// 发送新的流消息 /// </summary> /// <param name="bill">单据内容</param> void SendNewFlowMessage(string billNo) { Flow_BillFlowMessage msg = new Flow_BillFlowMessage(); m_billMessageServer.SendNewFlowMessage(billNo, string.Format("{0}号物料扣货单已提交,请上级领导审核", billNo), BillFlowMessage_ReceivedUserType.角色, m_billMessageServer.GetSuperior(CE_RoleStyleType.级领导, BasicInfo.LoginID)); }
/// <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> void DestroyMessage(string billNo) { Flow_BillFlowMessage msg = m_billFlowMsg.GetMessage(BasicInfo.LoginID, labelTitle.Text, billNo); if (msg == null) { return; } m_billFlowMsg.DestroyMessage(BasicInfo.LoginID, msg.序号); SendFinishedFlagToMessagePromptForm(billNo); }
/// <summary> /// 添加需重新打印的单据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnAdd_Click(object sender, EventArgs e) { if (txtBill_ID.Text == string.Empty) { MessageDialog.ShowPromptMessage("请填写单据号!"); return; } if (txtPrintRemark.Text == string.Empty) { MessageDialog.ShowPromptMessage("请填写重打原因!"); return; } DataTable dt = m_serverPrintManagement.GetPrintBillTableByDJH(txtBill_ID.Text); if (dt.Rows.Count > 0) { S_AgainPrintBillTable againprint = new S_AgainPrintBillTable(); againprint.Bill_ID = txtBill_ID.Text; againprint.PrintPersonnelCode = BasicInfo.LoginID; againprint.PrintPersonnelName = BasicInfo.LoginName; againprint.PrintPersonnelDepartment = BasicInfo.DeptName; againprint.PrintDateTime = ServerTime.Time; againprint.Remark = txtPrintRemark.Text; bool b = m_serverPrintManagement.Add_S_AgainPrintBillTable(againprint, out m_strErr); if (b) { MessageBox.Show("提交成功!等待主管审核"); Flow_BillFlowMessage msg = m_billFlowMsg.GetMessage(BasicInfo.LoginID, labelTitle.Text, txtBill_ID.Text); if (msg != null) { m_billFlowMsg.DestroyMessage(BasicInfo.LoginID, msg.序号); } SendNewFlowMessage(txtBill_ID.Text); } else { MessageDialog.ShowErrorMessage(m_strErr); } } else { MessageDialog.ShowErrorMessage("单据号不正确 或 此单据号还没有打印过!"); } }
/// <summary> /// 获取消息 /// </summary> /// <param name="billNo">单据号</param> /// <returns>成功返回获取到的消息,失败返回null</returns> private Flow_BillFlowMessage GetMessage(string billNo) { if (m_billType == null || m_billType == "") { m_billType = GetBillType(billNo); } Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(m_billType), "单据类别不能为空"); Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(billNo), "单据号不能为空"); try { Flow_BillFlowMessage msg = m_billFlowMsg.GetMessage(BasicInfo.LoginID, m_billType, billNo); if (msg == null) { m_logManagement.WriteException(string.Format("没有找到对应的单据消息,类型【{0}】,单据号【{1}】,操作人【{2},{3}】", m_billType, billNo, BasicInfo.LoginID, BasicInfo.LoginName), out m_error); } //if (msg == null) //{ // StackTrace st = new StackTrace(); // for (int i = 0; i < st.FrameCount; i++) // { // if (st.GetFrame(st.FrameCount - 1 - i).GetMethod().Name.Contains("SaveData")) // { // return null; // } // } // m_logManagement.WriteException( // string.Format("没有找到对应的单据消息:{0},{1}", BasicInfo.LoginID, billNo), out m_error); // return null; //} return(msg); } catch (Exception exce) { m_logManagement.WriteException(exce.Message + "\t\r" + exce.StackTrace, out m_error); return(null); } }
/// <summary> /// 发送新的流消息 /// </summary> /// <param name="billNo">单据编号</param> /// <param name="role">消息发送到的角色</param> /// <param name="msgContent">消息内容</param> void SendNewFlowMessage(string billNo, CE_RoleEnum role, string msgContent) { Flow_BillFlowMessage msg = new Flow_BillFlowMessage(); msg.初始发起方用户编码 = BasicInfo.LoginID; msg.单据号 = billNo; msg.单据类型 = labelTitle.Text; msg.单据流水号 = billNo; msg.接收方类型 = BillFlowMessage_ReceivedUserType.角色.ToString(); msg.单据状态 = BillStatus.等待处理.ToString(); msg.发起方消息 = msgContent; msg.接收方 = role.ToString(); msg.期望的处理完成时间 = null; m_billFlowMsg.SendRequestMessage(BasicInfo.LoginID, msg); }
/// <summary> /// 传递流消息(走流程) /// </summary> /// <param name="msgContent">消息内容</param> /// <param name="receivedRole">接收方角色</param> void PassFlowMessage(string msgContent, CE_RoleEnum receivedRole) { Flow_BillFlowMessage msg = m_billFlowMsg.GetMessage(BasicInfo.LoginID, labelTitle.Text, m_strBillID); if (msg == null) { return; } msg.发起方用户编码 = BasicInfo.LoginID; msg.发起方消息 = msgContent; msg.接收方类型 = BillFlowMessage_ReceivedUserType.角色.ToString(); msg.接收方 = receivedRole.ToString(); msg.期望的处理完成时间 = null; m_billFlowMsg.ContinueMessage(BasicInfo.LoginID, msg); SendFinishedFlagToMessagePromptForm(m_strBillID); }
/// <summary> /// 回退流消息 /// </summary> /// <param name="msgContent">消息内容</param> void RebackFlowMessage(string msgContent) { try { Flow_BillFlowMessage msg = m_billFlowMsg.GetMessage(BasicInfo.LoginID, labelTitle.Text, txtBill_ID.Text); if (msg == null) { return; } m_billFlowMsg.RebackMessage(BasicInfo.LoginID, msg.序号, msgContent); SendFinishedFlagToMessagePromptForm(txtBill_ID.Text); } catch (Exception exce) { Console.WriteLine(exce.Message); } }
/// <summary> /// 发送新的流消息 /// </summary> /// <param name="bill">单据内容</param> void SendNewFlowMessage(string billNo) { Flow_BillFlowMessage msg = new Flow_BillFlowMessage(); msg.初始发起方用户编码 = BasicInfo.LoginID; msg.单据号 = billNo; msg.单据类型 = labelTitle.Text; msg.单据流水号 = billNo; msg.接收方类型 = BillFlowMessage_ReceivedUserType.角色.ToString(); msg.接收方 = CE_RoleEnum.会计.ToString(); msg.单据状态 = BillStatus.等待处理.ToString(); msg.发起方消息 = string.Format("{0}号自制件退货单已提交,请财务审核", billNo); msg.期望的处理完成时间 = null; m_billFlowMsg.SendRequestMessage(BasicInfo.LoginID, msg); }
/// <summary> /// 传递流消息(走流程) /// </summary> /// <param name="billNo">单据号</param> /// <param name="msgContent">消息内容</param> /// <param name="receivedRole">接收方角色</param> void PassFlowMessage(string billNo, string msgContent, CE_RoleEnum receivedRole) { Flow_BillFlowMessage msg = m_billFlowMsg.GetMessage(BasicInfo.LoginID, labelTitle.Text, billNo); if (msg == null) { return; } msg.发起方用户编码 = BasicInfo.LoginID; msg.发起方消息 = string.Format("【用途】:{0} 【退库类别】:{1} 【申请人】:{2} ※※※ 等待【{3}】处理", txtPurpose.Text, cmbType.Text, txtProposer.Text, receivedRole.ToString()); msg.接收方类型 = BillFlowMessage_ReceivedUserType.角色.ToString(); msg.接收方 = receivedRole.ToString(); msg.期望的处理完成时间 = null; m_billFlowMsg.ContinueMessage(BasicInfo.LoginID, msg); SendFinishedFlagToMessagePromptForm(billNo); }
/// <summary> /// 销毁消息 /// </summary> /// <param name="billNo">单据号</param> /// <returns>操作是否成功的标志</returns> public bool DestroyMessage(string billNo) { if (m_billType == null || m_billType == "") { m_billType = GetBillType(billNo); } Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(m_billType), "单据类别不能为空"); Debug.Assert(!GlobalObject.GeneralFunction.IsNullOrEmpty(billNo), "单据号不能为空"); try { Flow_BillFlowMessage msg = GetMessage(billNo); if (msg != null) { m_billFlowMsg.DestroyMessage(BasicInfo.LoginID, msg.序号); } DepotManagementDataContext ctx = CommentParameter.DepotDataContext; //添加删除单据的记录 CJB 2012.3.19 BASE_DeleteBill lnqDeleteBill = new BASE_DeleteBill(); lnqDeleteBill.Bill_ID = billNo; lnqDeleteBill.DeleteTime = ServerTime.Time; lnqDeleteBill.WorkID = BasicInfo.LoginID; ctx.BASE_DeleteBill.InsertOnSubmit(lnqDeleteBill); ctx.SubmitChanges(); SendFinishedFlagToMessagePromptForm(billNo); return(true); } catch (Exception exce) { m_logManagement.WriteException(exce.Message + "\t\r" + exce.StackTrace, out m_error); return(false); } }
/// <summary> /// 发送新的流消息 /// </summary> /// <param name="bill">单据内容</param> void SendNewFlowMessage(S_HomemadePartBill bill) { Flow_BillFlowMessage msg = new Flow_BillFlowMessage(); msg.初始发起方用户编码 = BasicInfo.LoginID; msg.单据号 = bill.Bill_ID; msg.单据类型 = labelTitle.Text; msg.单据流水号 = bill.Bill_ID; msg.接收方类型 = BillFlowMessage_ReceivedUserType.角色.ToString(); msg.单据状态 = BillStatus.等待处理.ToString(); StringBuilder sb = new StringBuilder(); sb.AppendFormat("物品【{0}】,批次号【{1}】 ※※※ 等待【检验员】处理", txtName.Text, txtBatchNo.Text); msg.发起方消息 = sb.ToString(); msg.接收方 = CE_RoleEnum.自制件检验组长.ToString(); msg.期望的处理完成时间 = null; m_billFlowMsg.SendRequestMessage(BasicInfo.LoginID, msg); }
/// <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; } }
/// <summary> /// 发送新的流消息 /// </summary> /// <param name="billNo">单据内容</param> void SendNewFlowMessage(string billNo) { try { string[] roleCodes = m_billMessageServer.GetSuperior(CE_RoleStyleType.级领导, BasicInfo.LoginID).ToArray(); Flow_BillFlowMessage msg = new Flow_BillFlowMessage(); msg.初始发起方用户编码 = BasicInfo.LoginID; msg.单据号 = billNo; msg.单据类型 = labelTitle.Text; msg.单据流水号 = billNo; msg.接收方类型 = BillFlowMessage_ReceivedUserType.角色.ToString(); msg.单据状态 = BillStatus.等待处理.ToString(); msg.发起方消息 = string.Format("【用途】:{0} 【退库类别】:{1} 【申请人】:{2} ※※※ 等待【上级领导】处理", txtPurpose.Text, cmbType.Text, txtProposer.Text); msg.接收方 = ""; if (roleCodes.Count() > 0) { foreach (string role in roleCodes) { msg.接收方 += role + ","; } } msg.接收方 = msg.接收方.Substring(0, msg.接收方.Length - 1); msg.期望的处理完成时间 = null; m_billFlowMsg.SendRequestMessage(BasicInfo.LoginID, msg); } catch (Exception exce) { MessageDialog.ShowErrorMessage(exce.Message); } }
/// <summary> /// 初始化指定单据信息的附加数据 /// </summary> /// <param name="msg">要初始化附加数据的单据信息</param> /// <param name="lstAdditionalInfo">附加信息值列表</param> private void InitAdditionalInfo(ref Flow_BillFlowMessage msg, List <string> lstAdditionalInfo) { msg.附加信息1 = ""; msg.附加信息2 = ""; msg.附加信息3 = ""; msg.附加信息4 = ""; msg.附加信息5 = ""; msg.附加信息6 = ""; msg.附加信息7 = ""; msg.附加信息8 = ""; if (lstAdditionalInfo != null) { for (int i = 1; i <= lstAdditionalInfo.Count; i++) { if (lstAdditionalInfo[i - 1] == null) { lstAdditionalInfo[i - 1] = ""; } else { lstAdditionalInfo[i - 1] = lstAdditionalInfo[i - 1].Trim(); } GlobalObject.GeneralFunction.SetValue(msg, "附加信息" + i.ToString(), lstAdditionalInfo[i - 1]); } // 附加信息1始终为重定向单据的单据类型,附加信息2始终为重定向单据的单据号 if (lstAdditionalInfo.Count >= 2) { if (GlobalObject.GeneralFunction.IsNullOrEmpty(lstAdditionalInfo[0]) && !GlobalObject.GeneralFunction.IsNullOrEmpty(lstAdditionalInfo[1])) { lstAdditionalInfo[0] = GetBillType(lstAdditionalInfo[1]); } } } }
/// <summary> /// 重新窗体消息处理函数 /// </summary> /// <param name="m">窗体消息</param> protected override void DefWndProc(ref Message m) { switch (m.Msg) { //接收自定义消息,放弃未提交的单据号 case WndMsgSender.CloseMsg: break; case WndMsgSender.PositioningMsg: WndMsgData msg = new WndMsgData(); //这是创建自定义信息的结构 Type dataType = msg.GetType(); msg = (WndMsgData)m.GetLParam(dataType); //这里获取的就是作为LParam参数发送来的信息的结构 DataTable dtMessage = UniversalFunction.PositioningOneRecord(msg.MessageContent, "重新打印"); if (dtMessage.Rows.Count == 0) { Flow_BillFlowMessage billmsg = m_billFlowMsg.GetMessage(BasicInfo.LoginID, "重新打印", msg.MessageContent); m_billFlowMsg.DestroyMessage(BasicInfo.LoginID, billmsg.序号); MessageDialog.ShowPromptMessage("未找到相关记录"); } else { dgvShowInfo.DataSource = dtMessage; dgvShowInfo.Rows[0].Selected = true; } break; default: base.DefWndProc(ref m); 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> 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; } }
/// <summary> /// 发送新的流消息 /// </summary> /// <param name="billNo">单据号</param> void SendNewFlowMessage(string billNo) { try { Flow_BillFlowMessage msg = new Flow_BillFlowMessage(); msg.初始发起方用户编码 = BasicInfo.LoginID; msg.单据号 = billNo; msg.单据类型 = labelTitle.Text; msg.单据流水号 = billNo; msg.接收方类型 = BillFlowMessage_ReceivedUserType.角色.ToString(); msg.单据状态 = BillStatus.等待处理.ToString(); msg.发起方消息 = string.Format("{0} 号单据重新打印,请主管审核", billNo); string[] roleCodes = m_billMessageServer.GetDeptDirectorRoleName(BasicInfo.DeptCode); msg.接收方 = ""; if (roleCodes.Count() > 0) { foreach (string role in roleCodes) { msg.接收方 += role + ","; } } msg.接收方 = msg.接收方.Substring(0, msg.接收方.Length - 1); msg.期望的处理完成时间 = null; m_billFlowMsg.SendRequestMessage(BasicInfo.LoginID, msg); } catch (Exception exce) { Console.WriteLine(exce.Message); } }
/// <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="message">单据消息</param> /// <returns>返回获取到的字符串</returns> private string GetBillMessage(Flow_BillFlowMessage message) { //return string.Format("{0}{1} 内容:{2}", message.单据流水号, message.单据类型, message.发起方消息); return(string.Format("{0}:{1}", message.单据类型, message.发起方消息)); }