/// <summary> /// 重新窗体消息处理函数 /// </summary> /// <param name="message">窗体消息</param> protected override void DefWndProc(ref Message message) { switch (message.Msg) { // 要求在界面上显示特定的数据内容 case WndMsgSender.ShowSpecificData: WndMsgData msg = new WndMsgData(); Type dataType = msg.GetType(); msg = (WndMsgData)message.GetLParam(dataType); // 身份证号码 string id = (string)GeneralFunction.IntPtrToClass(msg.ObjectMessage, msg.BytesOfObjectMessage); // 在界面上显示特定的数据内容 PositioningRecord(id); break; default: base.DefWndProc(ref message); break; } }
/// <summary> /// 重新窗体消息处理函数 /// </summary> /// <param name="message">窗体消息</param> protected override void DefWndProc(ref Message message) { switch (message.Msg) { case WndMsgSender.CloseMsg: break; case WndMsgSender.PositioningMsg: WndMsgData msg = new WndMsgData(); //这是创建自定义信息的结构 Type dataType = msg.GetType(); msg = (WndMsgData)message.GetLParam(dataType); //这里获取的就是作为LParam参数发送来的信息的结构 DataTable dtMessage = UniversalFunction.PositioningOneRecord(msg.MessageContent, "零星采购申请单"); if (dtMessage.Rows.Count == 0) { m_billMessageServer.DestroyMessage(msg.MessageContent); MessageDialog.ShowPromptMessage("未找到相关记录"); } else { dataGridView1.DataSource = dtMessage; dataGridView1.Rows[0].Selected = true; } break; default: base.DefWndProc(ref message); break; } }
/// <summary> /// 重新窗体消息处理函数 /// </summary> /// <param name="m">窗体消息</param> protected override void DefWndProc(ref Message m) { switch (m.Msg) { //接收自定义消息,放弃未提交的单据号 case WndMsgSender.CloseMsg: // 放弃未使用的单据号 m_billNoControl.CancelBill(); 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) { m_msgPromulgator.DestroyMessage(msg.MessageContent); MessageDialog.ShowPromptMessage("未找到相关记录"); } else { dataGridView1.DataSource = dtMessage; dataGridView1.Rows[0].Selected = true; } break; default: base.DefWndProc(ref m); break; } }
/// <summary> /// 重新窗体消息处理函数 /// </summary> /// <param name="message">窗体消息</param> protected override void DefWndProc(ref Message message) { switch (message.Msg) { case WndMsgSender.ShowSpecificData: // 显示特定数据的消息 WndMsgData msg1 = new WndMsgData(); Type dataType1 = msg1.GetType(); msg1 = (WndMsgData)message.GetLParam(dataType1); // 人员工号 string workID = (string)GeneralFunction.IntPtrToClass(msg1.ObjectMessage, msg1.BytesOfObjectMessage); PositioningRecord(workID); break; case WndMsgSender.WarningNotice: // 系统预警消息 WndMsgData msg2 = new WndMsgData(); Type dataType2 = msg2.GetType(); msg2 = (WndMsgData)message.GetLParam(dataType2); // 预警数据 List <string> lstData = (List <string>)GeneralFunction.IntPtrToClass(msg2.ObjectMessage, msg2.BytesOfObjectMessage); PositioningRecord(lstData[0]); break; case WndMsgSender.PositioningMsg: WndMsgData msg = new WndMsgData(); //这是创建自定义信息的结构 Type dataType = msg.GetType(); msg = (WndMsgData)message.GetLParam(dataType); //这里获取的就是作为LParam参数发送来的信息的结构 DataTable dtMessage = UniversalFunction.PositioningOneRecord(msg.MessageContent, "部门调动申请单"); if (dtMessage.Rows.Count == 0) { m_billMessageServer.DestroyMessage(msg.MessageContent); MessageDialog.ShowPromptMessage("未找到相关记录"); } else { dataGridView1.DataSource = dtMessage; dataGridView1.Rows[0].Selected = true; } break; default: base.DefWndProc(ref message); break; } }
/// <summary> /// 发送完成标志信息到消息提示窗体 /// </summary> /// <param name="billNo">单据编号</param> private void SendFinishedFlagToMessagePromptForm(string billNo) { WndMsgData msgData = new WndMsgData(); msgData.MessageType = MessageTypeEnum.单据消息; msgData.MessageContent = string.Format("{0},{1}", labelTitle.Text, billNo); m_wndMsgSender.SendMessage(StapleInfo.MessagePromptForm.Handle, WndMsgSender.FinishedMsg, msgData); }
/// <summary> /// 重新窗体消息处理函数 /// </summary> /// <param name="m">窗体消息</param> protected override void DefWndProc(ref Message m) { switch (m.Msg) { //接收自定义消息,放弃未提交的单据号 case WndMsgSender.CloseMsg: // 放弃未使用的单据号 m_billNoControl.CancelBill(); break; case WndMsgSender.PositioningMsg: WndMsgData msg = new WndMsgData(); //这是创建自定义信息的结构 Type dataType = msg.GetType(); msg = (WndMsgData)m.GetLParam(dataType); //这里获取的就是作为LParam参数发送来的信息的结构 DataTable dtMessage = UniversalFunction.PositioningOneRecord(msg.MessageContent, _Enum_BillType.ToString()); if (dtMessage == null || dtMessage.Rows.Count == 0) { //m_billMessageServer.DestroyMessage(msg.MessageContent); MessageDialog.ShowPromptMessage("未找到相关记录"); } else { tabControl1.SelectedTab = tabControl1.TabPages[0]; CustomDataGridView dgv = GetDataGridView(tabControl1.SelectedTab); dgv.DataSource = _ServiceFlow.ShowBusinessAllInfo(_Enum_BillType, cmbVersion.Text, new string[] { "全部" }, checkBillDateAndStatus1.dtpStartTime.Value, checkBillDateAndStatus1.dtpEndTime.Value, tabControl1.SelectedTab.Text, msg.MessageContent); Flow_BusinessInfo bussinessInfo = _ServiceFlow.GetBusinessInfo(_Enum_BillType, cmbVersion.Text); foreach (DataGridViewColumn dgvc in dgv.Columns) { if (dgvc.HeaderText == bussinessInfo.KeysName) { dgvc.Visible = false; } } dgv.Rows[0].Selected = true; } break; default: base.DefWndProc(ref m); break; } }
private void lblMsg_Click(object sender, EventArgs e) { WndMsgData sendData = new WndMsgData(); sendData.MessageType = this.MessageType; sendData.NoticeSource = this.NoticeSource; sendData.MessageContent = this.MessageID.ToString(); m_wndMsgSender.SendMessage(m_noticeForm.Handle, WndMsgSender.PositioningMsg, sendData); if (OnControlClick != null) { OnControlClick(sender, e); } }
/// <summary> /// 处理消息 /// </summary> /// <param name="msg">要处理的消息</param> private void DisposeMessage(Message msg) { Type dataType = m_msgData.GetType(); m_msgData = (WndMsgData)msg.GetLParam(dataType); if (msg.Msg == WndMsgSender.FinishedMsg) { if (m_msgData.MessageType == MessageTypeEnum.单据消息) { string[] info = m_msgData.MessageContent.Split(StapleInfo.SplitChar); string billType = info[0]; string billNo = info[1]; for (int i = 0; i < this.Controls.Count; i++) { UserControlMessageLabel msgLabel = this.Controls[i] as UserControlMessageLabel; if (msgLabel.Message.Contains(billType) && msgLabel.Message.Contains(billNo)) { this.Controls.RemoveAt(i); m_dicMsgLabel.Remove(msgLabel.Name); break; } } } else if (m_msgData.MessageType == MessageTypeEnum.知会消息) { string name = m_msgData.NoticeSource.ToString().Substring(0, 2) + m_msgData.MessageContent; for (int i = 0; i < this.Controls.Count; i++) { if (this.Controls[i].Name == name) { m_dicMsgLabel.Remove(this.Controls[i].Name); this.Controls.RemoveAt(i); //Controls[i].Dispose(); break; } } } ControlFormSize(); if (this.Controls.Count == 0) { this.Visible = false; } } }
/// <summary> /// 定位消息 /// </summary> /// <param name="msg"></param> private void PositioningMessage(WndMsgData msg) { long msgId = Convert.ToInt64(msg.MessageContent); if (msg.MessageType == MessageTypeEnum.单据消息) { treeView.SelectedNode = treeView.Nodes.Find("任务_待处理_单据", true)[0]; } else if (msg.MessageType == MessageTypeEnum.知会消息) { if (msg.NoticeSource == NoticeSource.单据处理后知会) { treeView.SelectedNode = treeView.Nodes.Find("通知_单据处理后知会", true)[0]; } else if (msg.NoticeSource == NoticeSource.日常事务) { treeView.SelectedNode = treeView.Nodes.Find("通知_日常事务", true)[0]; } } string strColName = ""; foreach (DataGridViewColumn col in dataGridView1.Columns) { if (col.Visible) { strColName = col.Name; break; } } for (int i = 0; i < dataGridView1.Rows.Count; i++) { if ((long)dataGridView1.Rows[i].Cells["序号"].Value == msgId) { dataGridView1.FirstDisplayedScrollingRowIndex = i; dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[strColName]; break; } } if (msg.MessageType == MessageTypeEnum.单据消息 || (msg.MessageType == MessageTypeEnum.知会消息 && msg.NoticeSource == NoticeSource.单据处理后知会)) { 定位单据ToolStripMenuItem_Click(null, null); } }
/// <summary> /// 重新窗体消息处理函数 /// </summary> /// <param name="m">窗体消息</param> protected override void DefWndProc(ref Message m) { switch (m.Msg) { case WndMsgSender.PositioningMsg: ////this.Activate(); WndMsgData msg = new WndMsgData(); //这是创建自定义信息的结构 Type dataType = msg.GetType(); msg = (WndMsgData)m.GetLParam(dataType); //这里获取的就是作为LParam参数发送来的信息的结构 PositioningMessage(msg); break; default: base.DefWndProc(ref m); break; } }
/// <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="message">窗体消息</param> protected override void DefWndProc(ref Message message) { switch (message.Msg) { case WndMsgSender.ShowSpecificData: // 显示特定数据的消息 WndMsgData msg1 = new WndMsgData(); Type dataType1 = msg1.GetType(); msg1 = (WndMsgData)message.GetLParam(dataType1); // 人员工号 string workID = (string)GeneralFunction.IntPtrToClass(msg1.ObjectMessage, msg1.BytesOfObjectMessage); PositioningRecord(workID); break; case WndMsgSender.WarningNotice: // 系统预警消息 WndMsgData msg2 = new WndMsgData(); Type dataType2 = msg2.GetType(); msg2 = (WndMsgData)message.GetLParam(dataType2); // 预警数据 List <string> lstData = (List <string>)GeneralFunction.IntPtrToClass(msg2.ObjectMessage, msg2.BytesOfObjectMessage); PositioningRecord(lstData[1]); break; default: base.DefWndProc(ref message); break; } }
/// <summary> /// 重新窗体消息处理函数 /// </summary> /// <param name="m">窗体消息</param> protected override void DefWndProc(ref Message m) { switch (m.Msg) { //接收自定义消息,放弃未提交的单据号 case WndMsgSender.CloseMsg: // 放弃未使用的单据号 m_billNoControl.CancelBill(); 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) { m_billMessageServer.DestroyMessage(msg.MessageContent); MessageDialog.ShowPromptMessage("未找到相关记录"); } else { RefreshDataGirdView(GlobalObject.DataConverter.DataTableToList <View_S_IsolationManageBill>(dtMessage)); dataGridView1.Rows[0].Selected = true; } break; default: base.DefWndProc(ref m); break; } }
/// <summary> /// 将通知类消息批示已阅 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnReadNotice_Click(object sender, EventArgs e) { if (CheckOperation(sender as ToolStripDropDownItem)) { try { for (int i = 0; i < dataGridView1.SelectedRows.Count; i++) { if ((dataGridView1.Tag as List <Flow_Notice>) != null) { Flow_Notice notice = (dataGridView1.Tag as List <Flow_Notice>)[dataGridView1.SelectedRows[i].Index]; m_flowNotice.ReadNotice(BasicInfo.LoginID, notice.序号); WndMsgData msgData = new WndMsgData(); msgData.MessageType = MessageTypeEnum.知会消息; msgData.NoticeSource = (NoticeSource)Enum.Parse(typeof(NoticeSource), notice.来源); msgData.MessageContent = notice.序号.ToString(); m_wndMsgSender.SendMessage(StapleInfo.MessagePromptForm.Handle, WndMsgSender.FinishedMsg, msgData); } else if ((dataGridView1.Tag as List <Flow_WarningNotice>) != null) { Flow_WarningNotice notice = (dataGridView1.Tag as List <Flow_WarningNotice>)[dataGridView1.SelectedRows[i].Index]; PlatformFactory.GetObject <IWarningNotice>().ReadWarningNotice(BasicInfo.LoginID, notice.序号); } } InitForm(InitMode.刷新数据显示, m_currentNode); } catch (Exception err) { MessageDialog.ShowErrorMessage(err.Message); } } }
/// <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) { m_msgPromulgator.DestroyMessage(msg.MessageContent); MessageDialog.ShowPromptMessage("未找到相关记录"); } else { cmbYear.Text = msg.MessageContent.ToString().Substring(0, 4); cmbMonth.Text = msg.MessageContent.ToString().Substring(4, 2); btnFind_Click(null, null); //dataGridView1.DataSource = dtMessage; } break; default: base.DefWndProc(ref m); break; } }
/// <summary> /// 重新窗体消息处理函数 /// </summary> /// <param name="m">窗体消息</param> protected override void DefWndProc(ref Message m) { switch (m.Msg) { //接收自定义消息,放弃未提交的单据号 case WndMsgSender.CloseMsg: m_serverQualityProblem.DeleteExcessSchedule(out m_strErr); // 放弃未使用的单据号 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) { m_billMessageServer.DestroyMessage(msg.MessageContent); MessageDialog.ShowPromptMessage("未找到相关记录"); } else { dataGridView1.DataSource = dtMessage; dataGridView1.Rows[0].Selected = true; } break; default: base.DefWndProc(ref m); break; } }
/// <summary> /// 检查是否有新的单据消息 /// </summary> private void CheckBillMessage() { // 发消息到主窗体的标志 bool sendMsgToMainForm = false; IQueryable <Flow_BillFlowMessage> result = m_billMsg.GetReceivedMessage(BasicInfo.LoginID); List <Flow_BillFlowMessage> dataSource = (from r in result where r.单据状态 != BillStatus.已完成.ToString() orderby r.发起时间 descending select r).Take(20).ToList(); foreach (var item in dataSource) { if (m_dicMsgLabel.ContainsKey("BillMsg" + item.序号.ToString())) { continue; } UserControlMessageLabel msgLabel = new UserControlMessageLabel(StapleInfo.MainForm, GetBillMessage(item)); msgLabel.Name = "BillMsg" + item.序号.ToString(); msgLabel.MessageID = item.序号; msgLabel.MessageType = MessageTypeEnum.单据消息; msgLabel.Date = item.发起时间; if (!GlobalObject.GeneralFunction.IsNullOrEmpty(item.发起方用户编码)) { if (!m_dicUserName.ContainsKey(item.发起方用户编码)) { m_dicUserName.Add(item.发起方用户编码, m_user.GetUser(item.发起方用户编码).姓名); } } msgLabel.UserName = m_dicUserName[item.发起方用户编码]; if (msgLabel.Message.Contains("退货")) { msgLabel.ForeColor = Color.Red; } else { msgLabel.ForeColor = Color.Blue; } msgLabel.Dock = DockStyle.Top; this.Controls.Add(msgLabel); m_dicMsgLabel.Add(msgLabel.Name, msgLabel); msgLabel.OnControlClick += new EventHandler(this.UserControlMessageLabel_Clicked); if (!sendMsgToMainForm) { sendMsgToMainForm = true; WndMsgData sendData = new WndMsgData(); sendData.MessageType = msgLabel.MessageType; sendData.NoticeSource = msgLabel.NoticeSource; sendData.MessageContent = msgLabel.MessageID.ToString(); m_wndMsgSender.SendMessage(StapleInfo.MainForm.Handle, WndMsgSender.NewFlowMsg, sendData); } } for (int i = 0; i < this.Controls.Count; i++) { Control msgLabel = this.Controls[i]; if (msgLabel.Name.Contains("BillMsg")) { if (dataSource.FindIndex(p => p.序号 == Convert.ToInt32(msgLabel.Name.Substring(7))) < 0) { this.Controls.RemoveAt(i--); m_dicMsgLabel.Remove(msgLabel.Name); msgLabel.Dispose(); } } } }
/// <summary> /// 检查是否有新的知会类消息 /// </summary> private void CheckNoticeMessage() { // 发消息到主窗体的标志 bool sendMsgToMainForm = false; foreach (NoticeSource noticeEnum in Enum.GetValues(typeof(NoticeSource))) { IQueryable <Flow_Notice> noticeData = m_flowNotice.GetNotice(BasicInfo.LoginID, noticeEnum); List <Flow_Notice> dataSource = new List <Flow_Notice>(); // 按时间顺序逆向排序 noticeData = from r in noticeData orderby r.发送时间 descending select r; // 剔除自己发送的信息 if (noticeData.Count() > 0) { dataSource = (from r in noticeData where r.发送人 != BasicInfo.LoginID select r).Take(20).ToList(); } string prefix = noticeEnum.ToString().Substring(0, 2); foreach (var item in dataSource) { if (m_dicMsgLabel.ContainsKey(prefix + item.序号.ToString())) { continue; } UserControlMessageLabel msgLabel = new UserControlMessageLabel(StapleInfo.MainForm, GetNoticeMessage(item)); msgLabel.Name = prefix + item.序号.ToString(); msgLabel.MessageID = item.序号; msgLabel.MessageType = MessageTypeEnum.知会消息; msgLabel.NoticeSource = noticeEnum; msgLabel.Date = item.发送时间; if (!GlobalObject.GeneralFunction.IsNullOrEmpty(item.发送人)) { if (!m_dicUserName.ContainsKey(item.发送人)) { m_dicUserName.Add(item.发送人, m_user.GetUser(item.发送人).姓名); } } msgLabel.UserName = m_dicUserName[item.发送人]; if (item.优先级 == "高") { msgLabel.ForeColor = Color.Red; } msgLabel.Dock = DockStyle.Top; this.Controls.Add(msgLabel); m_dicMsgLabel.Add(msgLabel.Name, msgLabel); msgLabel.OnControlClick += new EventHandler(this.UserControlMessageLabel_Clicked); if (!sendMsgToMainForm) { sendMsgToMainForm = true; WndMsgData sendData = new WndMsgData(); sendData.MessageType = msgLabel.MessageType; sendData.NoticeSource = msgLabel.NoticeSource; sendData.MessageContent = msgLabel.MessageID.ToString(); m_wndMsgSender.SendMessage(StapleInfo.MainForm.Handle, WndMsgSender.NewFlowMsg, sendData); } } for (int i = 0; i < this.Controls.Count; i++) { Control msgLabel = this.Controls[i]; if (msgLabel.Name.Contains(prefix)) { int findIndex = Convert.ToInt32(msgLabel.Name.Substring(2)); if (dataSource.FindIndex(p => p.序号 == findIndex) < 0) { this.Controls.RemoveAt(i--); m_dicMsgLabel.Remove(msgLabel.Name); msgLabel.Dispose(); } } } } }