/// <summary> /// 初始化未处理单据 /// </summary> /// <param name="mode">初始化模式</param> private void InitUnsettledBill(InitMode mode) { IQueryable <Flow_BillFlowMessage> result = m_billMsg.GetReceivedMessage(BasicInfo.LoginID); result = from a in result where a.单据状态 != BillStatus.已完成.ToString() && !a.单据状态.Contains("废") select a; List <string> lstBillNo = result.Select(k => k.单据号).Distinct().ToList(); m_lstMessage = (from a in m_lstMessage where lstBillNo.Contains(a.单据号) select a).ToList(); lstBillNo = m_lstMessage.Select(k => k.单据号).Distinct().ToList(); List <Flow_BillFlowMessage> dataSource = (from r in result where !lstBillNo.Contains(r.单据号) orderby r.单据类型 ascending, r.发起时间 ascending select r).ToList(); List <Flow_BillFlowMessage> bindSource = new List <Flow_BillFlowMessage>(); bindSource.AddRange(m_lstMessage); bindSource.AddRange(dataSource); treeView.BeginInvoke(new Action(delegate { treeView.Nodes.Find("任务_待处理_单据", true)[0].Text = string.Format("单据({0})", bindSource.Count); })); if (mode == InitMode.刷新数据显示) { m_curNodeType = NodeType.待处理单据节点; dataGridView1.Invoke(new Action(delegate { dataGridView1.Columns.Clear(); dataGridView1.DataSource = new BindingCollection <Flow_BillFlowMessage>(bindSource); DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn(); column.Visible = true; column.Name = "天数"; column.HeaderText = "天数"; column.ValueType = typeof(int); column.ReadOnly = true; column.Width = 40; dataGridView1.Columns["序号"].Width = 60; dataGridView1.Columns["单据类型"].Width = 120; dataGridView1.Columns["单据号"].Width = 110; dataGridView1.Columns["发起方消息"].Width = 450; dataGridView1.Columns.Insert(0, column); dataGridView1.Tag = bindSource; dataGridView1.Columns["单据流水号"].Visible = false; dataGridView1.Columns["发起方用户信息"].Visible = false; dataGridView1.Columns["初始发起方用户编码"].Visible = false; dataGridView1.Columns["发起方用户编码"].Visible = false; dataGridView1.Columns["期望的处理完成时间"].Visible = false; dataGridView1.Columns["接收方类型"].Visible = false; dataGridView1.Columns["单据状态"].Visible = false; dataGridView1.Columns["附加信息1"].Visible = false; dataGridView1.Columns["附加信息2"].Visible = false; dataGridView1.Columns["附加信息3"].Visible = false; dataGridView1.Columns["附加信息4"].Visible = false; dataGridView1.Columns["附加信息5"].Visible = false; dataGridView1.Columns["附加信息6"].Visible = false; dataGridView1.Columns["附加信息7"].Visible = false; dataGridView1.Columns["附加信息8"].Visible = false; })); for (int i = 0; i < dataGridView1.Rows.Count; i++) { dataGridView1.Rows[i].Cells["天数"].Value = (ServerModule.ServerTime.Time - (DateTime)dataGridView1.Rows[i].Cells["发起时间"].Value).Days; if (m_lstMessage.Where(k => k.单据号 == dataGridView1.Rows[i].Cells["单据号"].Value.ToString()).Count() > 0) { dataGridView1.Rows[i].DefaultCellStyle.ForeColor = Color.Red; } } } }
/// <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(); } } } }