Ejemplo n.º 1
0
        /// <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();
                    }
                }
            }
        }