| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Data;
- using HySoft.DBUtility;
- using HySoft.Workflow.WFEngine;
- using WOSBusineSupporter;
- using HySoft.Common;
- using System.Web.Services;
- namespace HySoft.BaseCallCenter.Web.workordermanage.workorder
- {
- public partial class orderreply : BasePage
- {
- SimpleWFEngine engine;
- WOSBusineSupporter.WOSBusineSupporter wosBusineSupporter;
- string connStr = DBUtility.DbHelperSQL.connectionString;
- Model.T_Wo_WorkOrderTask taskobj;
- string assOpt = "";
- string instanceId = "";
- string userId = "0";
- int creatUser = 0;
- string taskId = "";
- string workorderid = "0";
- DateTime time = DateTime.Now;
- protected void Page_Load(object sender, EventArgs e)
- {
- workorderid = Request.QueryString["workorderid"];//工单编号
- HdWorkOrderId.Value = workorderid;
- this.GetModelValue(workorderid);
- BLL.T_Wo_WorkOrderTask bll_task = new BLL.T_Wo_WorkOrderTask();
- LoginUser p_LoginUser = new LoginUser(this.Context);
- userId = p_LoginUser.UserID.ToString();
- HFJueSe.Value = p_LoginUser.RoleId.ToString();
- DataSet ds = bll_task.GetList(" F_INSTANCEID='" + instanceId + "'and F_LoseFlag='0'" + " and F_OwnerId='" + userId + "'");
- if (ds.Tables[0].Rows.Count > 0)
- {
- taskId = ds.Tables[0].Rows[0]["F_TASKID"].ToString();
- taskobj = GetObj(Convert.ToInt32(taskId));
- if (taskobj != null)
- {
- InitEngine(taskobj.F_OPTBTN);
- }
- }
- #region 初始化工作流
-
- #endregion
- AddCancelBtn();
- }
- #region 初始化任务信息
- private Model.T_Wo_WorkOrderTask GetObj(int taskid)
- {
- Model.T_Wo_WorkOrderTask obj = new Model.T_Wo_WorkOrderTask();
- DataTable dt = new DataTable();
- try
- {
- dt = new BLL.T_Wo_WorkOrderTask().GetList("F_TASKID=" + taskid.ToString() + "").Tables[0];
- if (dt.Rows.Count > 0)
- {
- if (dt.Rows[0]["F_AssignParticipator"].ToString() != "null")
- {
- assOpt = dt.Rows[0]["F_AssignParticipator"].ToString();
- }
- if (dt.Rows[0]["F_WORKORDERSTATEID"] != null && dt.Rows[0]["F_WORKORDERSTATEID"].ToString() != "")
- {
- obj.F_WORKORDERSTATEID = int.Parse(dt.Rows[0]["F_WORKORDERSTATEID"].ToString());
- txtF_WORKORDERSTATEID.Value = dt.Rows[0]["F_WORKORDERSTATEID"].ToString();
- }
- if (dt.Rows[0]["F_OPTBTN"] != null)
- {
- obj.F_OPTBTN = dt.Rows[0]["F_OPTBTN"].ToString();
- }
- if (dt.Rows[0]["F_TASKFLAG"] != null)
- {
- obj.F_TASKFLAG = int.Parse(dt.Rows[0]["F_TASKFLAG"].ToString());
- }
- if (dt.Rows[0]["f_planfinishtime"] != null && dt.Rows[0]["f_planfinishtime"].ToString() != "")
- {
- time = Convert.ToDateTime(dt.Rows[0]["f_planfinishtime"].ToString());
- }
- if (dt.Rows[0]["F_OWNERID"] != null && dt.Rows[0]["F_OWNERID"].ToString() != "")
- {
- obj.F_OWNERID = int.Parse(dt.Rows[0]["F_OWNERID"].ToString());
- }
- if (dt.Rows[0]["F_INSTANCEID"] != null)
- {
- obj.F_INSTANCEID = int.Parse(dt.Rows[0]["F_INSTANCEID"].ToString());
- txtF_INSTANCEID.Value = dt.Rows[0]["F_INSTANCEID"].ToString();
- }
- }
- }
- catch
- { }
- finally
- {
- dt.Clear();
- dt.Dispose();
- }
- return obj;
- }
- #endregion
- #region 添加取消按钮
- private void AddCancelBtn()
- {
- System.Web.UI.HtmlControls.HtmlGenericControl btncancel = new System.Web.UI.HtmlControls.HtmlGenericControl("a");
- btncancel.ID = "btncancel";
- btncancel.Attributes.Add("class", "btnSearch");
- btncancel.Attributes.Add("onclick", "parent.CloseThis()");
- btncancel.InnerText = "取消";
- tdbtn.Controls.Add(btncancel);
- }
- #endregion
- /// <summary>
- /// 绑定初始值
- /// </summary>
- public void GetModelValue(string workorderid)
- {
- Common.LoginUser user = new Common.LoginUser(this.Context);
- F_USERNAME.InnerHtml = user.UserName;
- string sql = "select * from V_WorkOrderBase where F_WORKORDERID=" + workorderid + "";
- DataTable dt = DbHelperSQL.Query(sql).Tables[0];
- System.Collections.Generic.List<Model.T_Wo_WorkOrderBase> baseModel = new BLL.T_Wo_WorkOrderBase().DataTableToList(dt);
- if (baseModel.Count > 0)
- {
- if (baseModel[0].F_CREATEBY != null)
- {
- creatUser = Convert.ToInt32(baseModel[0].F_CREATEBY);
- }
- if (baseModel[0].F_INSTANCEID != null)
- {
- instanceId = baseModel[0].F_INSTANCEID.ToString();
- }
- if (baseModel[0].F_Name != null)
- {
- F_Name.InnerHtml = baseModel[0].F_Name.ToString();
- }
- if (baseModel[0].F_TypeName != null)
- {
- F_TypeName.InnerHtml = baseModel[0].F_TypeName.ToString();
- }
- if (baseModel[0].F_UserAccountName != null)
- {
- F_UserAccountName.InnerHtml = baseModel[0].F_UserAccountName.ToString();
- }
- }
- string sql1 = "select * from T_Wo_WorkOrderHistoryInfo where F_INSTANCEID=" + instanceId + " and F_KNOWLEDGE is not null order by ID desc";
- DataTable dt1 = DbHelperSQL.Query(sql1).Tables[0];
- System.Collections.Generic.List<Model.T_Wo_WorkOrderHistoryInfo> Model = new BLL.T_Wo_WorkOrderHistoryInfo().DataTableToList(dt1);
- if (Model.Count > 0)
- {
- if (Model[0].F_ESTIMATED != null)
- {
- F_ESTIMATED.InnerHtml = Model[0].F_ESTIMATED.ToString();
- }
- if (Model[0].F_KNOWLEDGE != null)
- {
- if (Model[0].F_KNOWLEDGE.ToString() == "0")
- {
- F_KNOWLEDGE.InnerHtml = "是";
- }
- else { F_KNOWLEDGE.InnerHtml = "否"; }
- }
- }
- }
- #region 初始化工作流引擎
- private void InitEngine(string optbtn)
- {
- wosBusineSupporter = new WOSBusineSupporter.WOSBusineSupporter();
- wosBusineSupporter.ConnectionString = connStr;
- /**/
- //Oracle数据库存储方式
- MSSQLDBWorkflowInstanceFactory instanceFactory = new MSSQLDBWorkflowInstanceFactory();
- instanceFactory.ConnectionString = connStr;
- MSSQLDBPersistentServer persistenServer = new MSSQLDBPersistentServer();
- persistenServer.ConnectionString = connStr;
- engine = new SimpleWFEngine(wosBusineSupporter, persistenServer, instanceFactory);
- MSSQLDBWorkflowTypeInfoSupporter sup = new MSSQLDBWorkflowTypeInfoSupporter();
- sup.ConnectionString = connStr;
- #region 顺序操作
- if (optbtn != "")
- {
- optbtn += "#@!";
- optbtn = optbtn.Replace(",#@!", "").Replace("#@!", "");
- DataTable dt = new DataTable();
- try
- {
- dt = new BLL.T_Wo_WorkOrderButton().GetList(" F_BUTTONID in (" + optbtn + ") ").Tables[0];
- if (dt.Rows.Count > 0)
- {
- int idcount = 0;
- foreach (DataRow dr in dt.Rows)
- {
- LinkButton runSavebtn = new LinkButton();
- runSavebtn.ID = "runSavebtn" + idcount.ToString();
- runSavebtn.Attributes.Add("class", "btnSearch");
- if (dr["F_Name"].ToString().Trim() != "重新指派" && dr["F_BUTTONID"].ToString() != "13")
- {
-
- }
- else
- {
- //runSavebtn.OnClientClick = "return checkUserDataAddOther();";
- }
- runSavebtn.Text = dr["F_Name"].ToString().Trim();
- runSavebtn.CommandArgument = dr["F_ButtonId"].ToString();
- runSavebtn.Click += new EventHandler(runSavebtn_Click);
- //if (runSavebtn.Text == "接单")
- //{
- // runSavebtn.Enabled = false;
- //}
- tdbtn.Controls.Add(runSavebtn);
- //添加空格间距
- System.Web.UI.HtmlControls.HtmlGenericControl spannull = new System.Web.UI.HtmlControls.HtmlGenericControl("span");
- spannull.ID = "btnnull" + idcount.ToString();
- spannull.InnerHtml = " ";
- tdbtn.Controls.Add(spannull);
- idcount++;
- }
- }
- }
- catch
- {
- }
- finally
- {
- dt.Clear();
- dt.Dispose();
- }
- }
- #endregion
- }
- #endregion
- protected void runSavebtn_Click(object sender, EventArgs e)
- {
- if (HFPanDuan.Value == "false")
- {
- MessageBoxToWindow("接单之前必须先与客户通话!", "保存提示!", "error");
- return;
- }
- Common.LoginUser user = new Common.LoginUser(this.Context);
- LinkButton btn = (LinkButton)sender;
- try
- {
- //保存表单信息
- bool rbl = SaveForm();
- if (rbl)
- {
- //顺序操作事件(未能指派)
- string errinfo = "";
- string dealContent = "";//
- WorkflowOprErr bl;
- int optOwnerId = taskobj.F_OWNERID;
- if (btn.CommandArgument == "13" || btn.Text == "重新指派")
- {
- dealContent = "(" + user.UserName + ")重新指派,指派描述:" + F_CONTENT.Text;//
- bl = engine.RunOpr(txtF_INSTANCEID.Value, optOwnerId.ToString(), txtF_WORKORDERSTATEID.Value, btn.CommandArgument, GetAssignParticipatorListCXZP(), dealContent, out errinfo);
- }
- else
- {
- dealContent = "(" + user.UserName + ")回复内容:" + F_CONTENT.Text;
- bl = engine.RunOpr(txtF_INSTANCEID.Value, optOwnerId.ToString(), txtF_WORKORDERSTATEID.Value, btn.CommandArgument, GetAssignParticipatorList(), dealContent, out errinfo);
- }
- if (bl.ToString() == "OK")
- {
- InsertOptLogs(0, 0, "操作成功!orderreply.aspx页面" + dealContent, 0);
- MessageBoxToWindow("保存成功", "保存提示!", "success");
- }
- else
- {
- InsertOptLogs(0, 0, "操作失败!orderreply.aspx页面" + "(" + user.UserName + ")执行了" + btn.Text.Trim() + "操作,描述:" + F_CONTENT.Text + "。", 1);
- MessageBoxToWindow("保存失败", "保存提示!", "error");
- }
- }
- }
- catch (Exception e1)
- {
- InsertOptLogs(0, 0, "操作异常!orderreply.aspx页面" + "(" + user.UserName + ")执行了" + btn.Text.Trim() + "操作,描述:" + F_CONTENT.Text + "。异常信息:" + e1.ToString(), 2);
- MessageBoxToWindow("保存失败", "保存提示!", "error");
- }
- }
- private AssignParticipator[] GetAssignParticipatorListCXZP()
- {
- AssignParticipator[] arr = new AssignParticipator[1];
- arr[0] = new AssignParticipator();
- arr[0].NodeID = "4";
- arr[0].NodeName = "待指派";
- ParticipatorInfo partinfo = new ParticipatorInfo();
- List<Model.T_Sys_UserAccount> list = new List<Model.T_Sys_UserAccount>();
- list = (new BLL.T_Sys_UserAccount()).GetModelList(" F_UserId=(SELECT top 1 F_OPTUSERID FROM T_Wo_WorkOrderHistory where F_WORKORDERSTATEID in(13,4) and F_INSTANCEID=" + txtF_INSTANCEID.Value + " order by F_HISTORYID desc)");
- if (list.Count == 0)
- {
- list = (new BLL.T_Sys_UserAccount()).GetModelList(" F_UserId="+creatUser+" ");
- }
- UserInfo[] userlist = new UserInfo[list.Count];
- for (int i = 0; i < userlist.Length; i++)
- {
- UserInfo user = new UserInfo();
- user.ID = list[i].F_UserId.ToString();
- user.Name = list[i].F_UserName;
- userlist[i] = user;
- }
- partinfo.UserList = userlist;
- arr[0].ParticipatorInfo = new AssembleWorkFlowTask().AssembleParticipator(partinfo).InnerXml;
- return arr;
- }
- private AssignParticipator[] GetAssignParticipatorList()
- {
- AssignParticipator[] arr = new AssignParticipator[1];
- arr[0] = new AssignParticipator();
- arr[0].NodeID = "7";
- arr[0].NodeName = "待处理";
- ParticipatorInfo partinfo = new ParticipatorInfo();
- List<Model.T_Sys_UserAccount> list = new List<Model.T_Sys_UserAccount>();
- list = (new BLL.T_Sys_UserAccount()).GetModelList(" F_UserId in(select F_USERID from T_Wo_WorkOrderConstructor where F_WORKORDERID=" + workorderid + ")");
- UserInfo[] userlist = new UserInfo[list.Count];
- for (int i = 0; i < userlist.Length; i++)
- {
- UserInfo user = new UserInfo();
- user.ID = list[i].F_UserId.ToString();
- user.Name = list[i].F_UserName;
- userlist[i] = user;
- }
- partinfo.UserList = userlist;
- arr[0].ParticipatorInfo = new AssembleWorkFlowTask().AssembleParticipator(partinfo).InnerXml;
- return arr;
- //if (assOpt != "")
- //{
- // AssignParticipator[] asslist = new Web.tools.ParseWorkFlowTask().ParseAssignParticipatorOpr(assOpt);
- // foreach (AssignParticipator ass in asslist)
- // {
- // ParticipatorInfo partinfo = new ParticipatorInfo();
- // List<Model.T_Sys_UserAccount> list = new List<Model.T_Sys_UserAccount>();
- // list = (new BLL.T_Sys_UserAccount()).GetModelList(" F_UserId in(select F_USERID from T_Wo_WorkOrderConstructor where F_WORKORDERID=" + workorderid + ")");
- // UserInfo[] userlist = new UserInfo[list.Count];
- // for (int i = 0; i < userlist.Length; i++)
- // {
- // UserInfo user = new UserInfo();
- // user.ID = list[i].F_UserId.ToString();
- // user.Name = list[i].F_UserName;
- // userlist[i] = user;
- // }
- // partinfo.UserList = userlist;
- // ass.ParticipatorInfo = new AssembleWorkFlowTask().AssembleParticipator(partinfo).InnerXml;
- // }
- // return asslist;
- //}
- //else
- //{
- // return null;
- //}
- }
- private bool SaveForm()
- {
- Common.LoginUser user = new Common.LoginUser(this.Context);
- bool bl = true;
- Model.T_Wo_WorkOrderTaskInfo model = new Model.T_Wo_WorkOrderTaskInfo();
- if (taskId != "")
- {
- model.F_TASKID = Convert.ToInt32(taskId);//任务ID
- }
- else { model.F_TASKID = 0; }
- model.F_WORKORDERID = Convert.ToInt32(workorderid);//工单ID
- model.F_OPTBY = user.UserID;//操作人ID
- model.F_ARRASSIGNUSER = hfSQDX.Value;//指派人员
- model.F_ASSIGNTYPE = 1;//指派类型
- model.F_ASSIGNDES = F_CONTENT.Text;//指派描述
- model.F_OPTDATE = DateTime.Now;
- BLL.T_Wo_WorkOrderTaskInfo bll_add = new BLL.T_Wo_WorkOrderTaskInfo();
- if (bll_add.Add(model) > 0)
- { bl = true; }
- else { bl = false; }
- return bl;
- }
- #region 弹出对话框
- /// <summary>
- /// 弹出对话框
- /// </summary>
- /// <param name="title"></param>
- /// <param name="content"></param>
- /// <param name="type"></param>
- public void MessageBoxToWindow(string title, string content, string type)
- {
- string script = "";
- switch (type)
- {
- case "error"://失败
- type = "error";
- script = "<script type='text/javascript'> parent.$.ligerDialog.alert('" + title + "','" + content + "','" + type + "');</script>";
- break;
- case "success"://成功
- type = "info";
- script = "<script type='text/javascript'> parent.$.ligerDialog.alert('" + title + "','" + content + "','" + type + "',parent.Close);</script>";
- break;
- case "catch"://异常
- type = "warning";
- script = "<script type='text/javascript'> parent.$.ligerDialog.alert('" + title + "','" + content + "','" + type + "');</script>";
- break;
- default:
- type = "question";
- break;
- }
- ClientScript.RegisterClientScriptBlock(this.GetType(), "", script);
- }
- #endregion
- [WebMethod]
- public static string Get(string id)
- {
- string panduan = "0";
- try
- {
- System.Data.DataTable dt = DBUtility.DbHelperSQL.Query("SELECT SUM( datediff(s,TalkStartTime,TalkEndTime)) as counts FROM T_Call_CallRecords where CallId in(select CallId from T_Call_WorkOrder where F_WORKORDERID=" + id + " and F_WORKORDERSTATEID=6)").Tables[0];
- if (dt.Rows.Count > 0)
- {
- if (dt.Rows[0]["counts"] != null && Convert.ToInt32(dt.Rows[0]["counts"])>4)
- {
- panduan = "1";
- }
- }
- }
- catch { return panduan; }
- return panduan;
- }
- }
- }
|