| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416 |
- using com.hnshituo.pur.vo;
- using Core.Mes.Client.Comm.Control;
- using Core.Mes.Client.Comm.Tool;
- using CoreFS.CA06;
- using Infragistics.Win.UltraWinGrid;
- using Pur.Entity;
- using Pur.Entity.configureEntity;
- using Pur.Entity.pur_planEntity;
- using Pur.require_plan;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace Pur.pur_plan
- {
- public partial class frmPopTaskChat : FrmPmsBase
- {
- string QstrTaskId = "";
- int ChatNum = 0;//保存当前显示的记录条数
- public frmPopTaskChat(OpeBase ob,string strTaskId)
- {
- InitializeComponent();
- this.ob = ob;
- QstrTaskId = strTaskId;
- }
- protected override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
- ultraGrid7.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;
-
- }
-
- #region 获取任务单基本信息(物料、供应商、报价信息)
- /// <summary>
- /// 读取任务单
- /// </summary>
- private void doQuery()
- {
- try
- {
- this.Cursor = Cursors.WaitCursor;
- dataSet1.Clear();
- PurTaskMEntity entity = new PurTaskMEntity();
- if (txt_taskId.Text.Trim() != "")
- {
- entity.TaskId = txt_taskId.Text.Trim();
- }
- if (ck_isAll.Checked == false)
- {
- entity.Status = "1";//查询评审中和生成采购纪要
- }
- if (txt_taskName.Text.Trim() != "")
- {
- entity.TaskName = txt_taskName.Text.Trim();
- }
- entity.Validflag = "1";
- if (ck_ctime.Checked)
- {
- if (txt_createTimeStart.Text != "")
- {
- entity.CreateTime = Convert.ToDateTime(txt_createTimeStart.Value);
- }
- if (txt_createTimeEnd.Text != "")
- {
- entity.UpdateTime = Convert.ToDateTime(txt_createTimeEnd.Value);
- }
- }
- entity.DeleteName = "1";
- DataTable taskList = this.execute<DataTable>("com.hnshituo.pur.purplan.service.TaskMService", "getTaskList", new object[] { entity });
- GridHelper.CopyDataToDatatable(taskList, dataTable1, true);
- GridHelper.RefreshAndAutoSize(ultraGrid1);
- comm.doActiveSelRow(ultraGrid1, "taskid", QstrTaskId);
- }
- catch (Exception ex)
- {
- MessageUtil.ShowTips("初始化加载数据失败:" + ex.Message);
- }
- finally
- {
- this.Cursor = Cursors.Default;
- }
- }
- /// <summary>
- /// 查询供应商
- /// </summary>
- public void GetSupp()
- {
- if (QstrTaskId != "")
- {
- // 查询供应商
- PurTaskSuppsEntity M_PurTaskSupps = new PurTaskSuppsEntity();
- M_PurTaskSupps.TaskId = ultraGrid1.ActiveRow.Cells["taskid"].Value.ToString();
- M_PurTaskSupps.Validflag = "1";
- DataTable dt = this.execute<DataTable>("com.hnshituo.pur.purplan.service.TaskSuppsService", "findisBidSuppsByTaskId", new object[] { ultraGrid1.ActiveRow.Cells["taskid"].Value.ToString() });
- GridHelper.CopyDataToDatatable(ref dt, ref dataTable3, true);//绑定供应商(查看供应商个数)
- }
- }
- #endregion
- #region 发送和读取聊天记录
- /// <summary>
- /// 读取聊天信息
- /// </summary>
- private void readChatMessage()
- {
- timer1.Stop();
- //richTextBox2.Clear();
- PurTaskChatEntity ReviewBillMEntity = new PurTaskChatEntity();
- ReviewBillMEntity.TaskId = ultraGrid1.ActiveRow.Cells["taskid"].Value.ToString();
- ReviewBillMEntity.ReceiverType = "2";
- //ReviewBillMEntity.ReceiverUserid = UserInfo.GetUserID();//ReceiverUserid属性传采购商代码
- if(txt_cmbSupp.Value.ToString()!="全部")
- {
- ReviewBillMEntity.SenderUserid = txt_cmbSupp.Value.ToString();// ultraGrid7.ActiveRow.Cells["suppcode"].Value.ToString();//SenderUserid属性传供应商代码
- }
- DataTable dt_ChitChatNew = this.execute<DataTable>("com.hnshituo.pur.purplan.service.TaskChatService", "getChitChatMessege", new object[] { ReviewBillMEntity });
- //获取最大时间
- if(dt_ChitChatNew.Rows.Count>0)
- {
- ReviewBillMEntity.CreateTime=DateTime.Parse(dt_ChitChatNew.Rows[dt_ChitChatNew.Rows.Count-1]["createTime"].ToString());
- }
- //string strMessage = "";
- int[,] MassageColor = new int[(dt_ChitChatNew.Rows.Count - ChatNum) * 2, 3];//二位数组,保存聊天记录,字体显示颜色
- //判断是否有信息输入,有信息输入则增加,没有信息记录则不增加信息
- for (int j = ChatNum; j < dt_ChitChatNew.Rows.Count; j++)
- {
- if (dt_ChitChatNew.Rows[j]["SENDERTYPE"].ToString() == "2")
- {
- MassageColor[j - ChatNum, 2] = 2;
- }
- else
- {
- MassageColor[j - ChatNum, 2] = 1;
- }
- string str = "";
- if (j > 0)
- {
- str += "\n";
- }
- //str = dt_ChitChatNew.Rows[j]["SENDERUSERNAME"].ToString() + "(" + dt_ChitChatNew.Rows[j]["SENDERUSERID"].ToString() + ")" + dt_ChitChatNew.Rows[j]["CREATETIME"].ToString() + "\n";
- if (dt_ChitChatNew.Rows[j]["SENDERTYPE"].ToString() == "2")
- {
- str += "您对" + dt_ChitChatNew.Rows[j]["RECEIVERUSERNAME"].ToString()+" "+dt_ChitChatNew.Rows[j]["CREATETIME"].ToString() + "\n";
- }
- else
- {
- if (dt_ChitChatNew.Rows[j]["TYPE"].ToString() == "2")
- { str += "(群聊) "; }
- str += dt_ChitChatNew.Rows[j]["SENDERUSERNAME"].ToString() + " " + dt_ChitChatNew.Rows[j]["CREATETIME"].ToString() + "\n";
- }
- MassageColor[j - ChatNum, 0] = richTextBox2.Text.Length; ;//标记颜色起始位置
- //strMessage += str;
- richTextBox2.AppendText(str);
- MassageColor[j - ChatNum, 1] = str.Length;//标记颜色结束位置
- MassageColor[(j - ChatNum) + 1, 0] = richTextBox2.Text.Length; ;//标记颜色起始位置
- //strMessage += " " + dt_ChitChatNew.Rows[j]["MESSAGE"].ToString() + "\n";
- richTextBox2.AppendText(" " + dt_ChitChatNew.Rows[j]["MESSAGE"].ToString() + "\n");
- MassageColor[(j - ChatNum) + 1, 1] = (" " + dt_ChitChatNew.Rows[j]["MESSAGE"].ToString() + "\n").Length;//标记颜色结束位置
- MassageColor[(j - ChatNum) + 1, 2] = 3;//标记发送信息的颜色
- //rtb.SelectionStart = rtb.TextLength;//设置滚动条的位置
- //rtb.ScrollToCaret();//必须设置滚动起始标记位置
- richTextBox2.ScrollToCaret();//必须设置滚动起始标记位置
- richTextBox2.SelectionStart = richTextBox2.TextLength;
- }
- //richTextBox2.AppendText(strMessage);
- ChatNum = dt_ChitChatNew.Rows.Count;
- //Q_ChatcCount[i] = count;//保存当前供应商聊天记录条数
- //rtb.SelectionStart = rtb.TextLength;//设置滚动条的位置
- //rtb.ScrollToCaret();//必须设置滚动起始标记位置
- setChatColor(richTextBox2, MassageColor);
-
-
- if (dt_ChitChatNew.Rows.Count > 0)
- {
- int numIsRead = dt_ChitChatNew.Select("isread='0' and SENDERUSERNAME <> '" + this.UserInfo.GetUserName()+"'").Count();//查询未读的计记录
- if (numIsRead > 0)
- {
- setIsRead(ReviewBillMEntity);//标记已读
- }
- }
-
-
- timer1.Start();
- }
- /// <summary>
- /// 标记已读
- /// </summary>
- private void setIsRead(PurTaskChatEntity ReviewBillMEntity)
- {
- CoreResult re = this.execute<CoreResult>("com.hnshituo.pur.purplan.service.TaskChatService", "setIsRead", new object[] { ReviewBillMEntity });
- if (re.Resultcode != 0)
- {
- MessageUtil.ShowTips("标记为已读失败 " + re.Resultmsg);
- return;
- }
- GetSupp();//属性供应商
- }
- /// <summary>
- /// 发送信息
- /// </summary>
- private void sendMessage()
- {
- chk_IsMultiChat.Enabled = false;
- ultraGrid7.UpdateData();
- if (textBox1.Text.Trim() == "")
- {
- MessageUtil.ShowTips("发送类容不能为空");
- return;
- }
- ArrayList al = new ArrayList();
- textBox1.Text = textBox1.Text.Replace("\n", "\n ");
- for (int i = 0; i < ultraGrid7.Rows.Count; i++)
- {
- UltraGridRow ugr = ultraGrid7.Rows[i];
- if ((bool)ugr.Cells["check"].Value || chk_IsMultiChat.Checked)//群聊或者选中
- {
- PurTaskChatEntity ReviewBillMEntity = new PurTaskChatEntity();
- ReviewBillMEntity.Id = Guid.NewGuid().ToString();
- ReviewBillMEntity.TaskId = ultraGrid1.ActiveRow.Cells["taskid"].Value.ToString();
- ReviewBillMEntity.SenderType = "2";
- ReviewBillMEntity.SenderUsername = UserInfo.GetUserName();
- ReviewBillMEntity.SenderUserid = UserInfo.GetUserID();
- ReviewBillMEntity.ReceiverType = "1";
- ReviewBillMEntity.ReceiverUserid = ugr.Cells["suppcode"].Value.ToString();
- ReviewBillMEntity.ReceiverUsername = ugr.Cells["suppName"].Value.ToString();
- ReviewBillMEntity.CreateName = UserInfo.GetUserName();
- ReviewBillMEntity.CreateUserid = UserInfo.GetUserID();
- //ReviewBillMEntity.CreateTime = System.DateTime.Now;
- ReviewBillMEntity.Message = textBox1.Text;
- ReviewBillMEntity.Isread = "0";
- if (chk_IsMultiChat.Checked)
- {
- ReviewBillMEntity.Type = "2";
- }
- else
- { ReviewBillMEntity.Type = "1"; }
- al.Add(ReviewBillMEntity);
- }
- }
- chk_IsMultiChat.Enabled = true;
- if (al.Count < 1)
- {
- MessageUtil.ShowTips("请选择发送的供应商");
- }
- else
- {
- string strTips = "确定发送给以下供应商:" + "\n";
- foreach(object obj in al)
- {
- strTips += ((PurTaskChatEntity)obj).ReceiverUsername.ToString() + "\n";
- }
- if (!comm.ConfirmOption(strTips))
- { return; }
- Boolean bl = true;
- CoreResult crt = this.execute<CoreResult>("com.hnshituo.pur.purplan.service.TaskChatService", "sendChatMessage", new object[] { al });
- if (bl)
- {
- timer1.Stop();
- //timer2.Stop();
- readChatMessage();//刷新聊天信息
- timer1.Start();
- //timer2.Start();
- textBox1.Text = "";
- }
- else
- {
- MessageUtil.ShowTips("发送失败,请重新发送");
- }
- if (crt.Resultcode != 0)
- {
- MessageUtil.ShowTips("发送失败 " + crt.Resultmsg);
- return;
- }
- }
- }
- #endregion
- /// <summary>
- /// 设置聊天发送人显示颜色
- /// </summary>
- /// <param name="rtb">改变颜色RichTextBox控件</param>
- /// <param name="rows">聊天记录</param>
- protected void setChatColor(RichTextBox rtb, int[,] MassageColor)
- {
- for (int i = 0; i < MassageColor.GetLength(0); i++)
- {
- rtb.SelectionStart = MassageColor[i, 0];
- rtb.SelectionLength = MassageColor[i, 1];
- if (MassageColor[i, 2] == 1)
- {
- rtb.SelectionColor = Color.Red;
- }
- else if (MassageColor[i, 2] == 2)
- {
- rtb.SelectionColor = Color.Blue;
- }
- else
- {
- rtb.SelectionColor = Color.Black;
- }
- }
- }
- /// <summary>
- /// 选择供应商
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void ultraGrid7_AfterRowActivate(object sender, EventArgs e)
- {
- //ultraTabControl5.SelectedTab.Text = ultraGrid7.ActiveRow.Cells["suppname"].Value.ToString();
- //readChatMessage();
- //ultraGrid7.ActiveRow.Cells["check"].Value = (!(bool)ultraGrid7.ActiveRow.Cells["check"].Value) ;
- }
- /// <summary>
- /// 发送信息按钮
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btn_SendMessage_Click(object sender, EventArgs e)
- {
- sendMessage();
- }
- /// <summary>
- /// 点击群聊复选框
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void chk_IsMultiChat_CheckedChanged(object sender, EventArgs e)
- {
- //ultraGrid7.DisplayLayout.Bands[0].Columns["check"].Hidden = !chk_IsMultiChat.Checked;
- }
- /// <summary>
- /// 查询任务单
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void txt_refresh_Click(object sender, EventArgs e)
- {
- doQuery();
- }
- /// <summary>
- /// 加载界面
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void frmPopTaskChat_Load(object sender, EventArgs e)
- {
- //绑定供应商到下拉列表
- doQuery();
- comm.FilComboboxAdd(txt_cmbSupp, dataTable3, "suppcode", "suppname", "", true, "全部", "全部");
- txt_cmbSupp.SelectedIndex = 0;
- //ultraGrid7.DisplayLayout.Bands[0].Columns["check"].CellActivation = Activation.ActivateOnly;
- ultraGrid7.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;
- ultraExpandableGroupBox3.Expanded = false;
- }
- /// <summary>
- /// 选择任务单
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void ultraGrid1_AfterRowActivate(object sender, EventArgs e)
- {
- ChatNum = 0;
- richTextBox2.Clear();
- GetSupp();
- readChatMessage();
-
- }
- /// <summary>
- /// 定时器
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void timer1_Tick(object sender, EventArgs e)
- {
- readChatMessage();
- }
- private void frmPopTaskChat_FormClosing(object sender, FormClosingEventArgs e)
- {
- if (timer1 != null)
- timer1.Dispose();
- }
- private void timer2_Tick(object sender, EventArgs e)
- {
- }
- /// <summary>
- /// 选择显示聊天信息对象
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void txt_cmbSupp_ValueChanged(object sender, EventArgs e)
- {
- ChatNum = 0;
- richTextBox2.Clear();
- readChatMessage();
- }
- }
- }
|