| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539 |
- 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;
- using System.Text.RegularExpressions;
- namespace HySoft.BaseCallCenter.Web.workordermanage.workorder
- {
- public partial class orderchuli : 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"];//工单编号
- txtF_WORKORDERID.Value = workorderid;
- this.GetModelValue(workorderid);
- LoginUser p_LoginUser = new LoginUser(this.Context);
- txtZhu.Value = "1";
- string sql = "select * from T_Wo_WorkOrderConstructor where F_WORKORDERID=" + workorderid + " and F_USERID=" + p_LoginUser.UserID + " and F_ISMAIN=1";
- DataTable dt = DbHelperSQL.Query(sql).Tables[0];
- if (dt.Rows.Count < 1)
- {
- txtZhu.Value = "0";
- }
- BLL.T_Wo_WorkOrderTask bll_task = new BLL.T_Wo_WorkOrderTask();
- userId = p_LoginUser.UserID.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);
- }
- }
- AddCancelBtn();
- if (!Page.IsPostBack)
- {
- Session["orderwenjian"] = "";
- }
- }
- [WebMethod]
- public static string Get(string id)
- {
- string panduan = "0";
- try
- {
- DataTable dt = DBUtility.DbHelperSQL.Query("select F_USERID from T_Wo_WorkOrderConstructor where F_WORKORDERID="+id+" and F_ISMAIN=0").Tables[0];
- if (dt.Rows.Count < 1)
- {
- return "1";
- }
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- DataTable dt1 = DBUtility.DbHelperSQL.Query(" select * from T_Wo_WorkOrderHistory where F_WORKORDERSTATEID=7 and F_INSTANCEID=(select F_INSTANCEID from T_Wo_WorkOrderBase where F_WORKORDERID="+id+") and F_OPTUSERID=" + dt.Rows[0]["F_USERID"] + "").Tables[0];
- if (dt1.Rows.Count > 0)
- {
- panduan = "1";
- }
- else
- {
- panduan = "0";
- return "0";
- }
- }
- return panduan;
- }
- catch (Exception e) { return "0"; }
- }
- #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")
- {
- runSavebtn.OnClientClick = "return Confirm('" + idcount.ToString() + "');";
- }
- else
- {
- //runSavebtn.OnClientClick = "return checkUserDataAddOther();";
- }
- runSavebtn.Text = dr["F_Name"].ToString().Trim();
- runSavebtn.CommandArgument = dr["F_ButtonId"].ToString();
- runSavebtn.Click += new EventHandler(runSavebtn_Click);
- 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)
- {
- Common.LoginUser user = new Common.LoginUser(this.Context);
- LinkButton btn = (LinkButton)sender;
- try
- {
- //保存表单信息
- bool rbl = SaveForm();
- if (rbl)
- {
- string sql = "select * from T_Wo_WorkOrderConstructor where F_WORKORDERID=" + workorderid + " and F_USERID=" + user.UserID+ " and F_ISMAIN=1";
- DataTable dt = DbHelperSQL.Query(sql).Tables[0];
- if (dt.Rows.Count < 1)
- {
- SaveHistoryInfo();
- InsertOptLogs(0, 0, "操作成功!orderchuli.aspx页面,辅助人员(" + user.UserName + ")回复内容:" + F_CONTENT.Text, 0);
- MessageBoxToWindow("保存成功", "保存提示!", "success");
- return;
- }
- //顺序操作事件(未能指派)
- 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, null, dealContent, out errinfo);
- }
- if (bl.ToString() == "OK")
- {
- SaveHistoryInfo();
- Model.T_Wo_WorkOrderFiles model_file = new Model.T_Wo_WorkOrderFiles();
- BLL.T_Wo_WorkOrderFiles bll_file = new BLL.T_Wo_WorkOrderFiles();
- BLL.T_Wo_WorkOrderHistory bll_lishi = new BLL.T_Wo_WorkOrderHistory();
- DataTable dtlishi = bll_lishi.GetList(" F_INSTANCEID='" + txtF_INSTANCEID.Value + "' order by F_HISTORYID desc").Tables[0];
- if (Session["orderwenjian"] != null)
- {
- string wenjian = Session["orderwenjian"].ToString();
- string[] wenjian1 = new string[] { };
- wenjian1 = Regex.Split(wenjian, "xgxjw");
- for (int i = 0; i < wenjian1.Length - 1; i++)
- {
- string ss = wenjian1[i].ToString();
- string[] id = Regex.Split(ss, "xgxidname");
- string fileid = id[0];
- model_file.F_FILEID = Convert.ToInt32(fileid);
- model_file.F_WORKORDERID = Convert.ToInt32(workorderid);
- if (dtlishi.Rows.Count > 0)
- {
- model_file.F_HOISTYID = dtlishi.Rows[0]["F_HISTORYID"].ToString();
- }
- bll_file.Update1(model_file);
- }
- }
- InsertOptLogs(0, 0, "操作成功!orderchuli.aspx页面" + dealContent, 0);
- MessageBoxToWindow("保存成功", "保存提示!", "success");
- }
- else
- {
- InsertOptLogs(0, 0, "操作失败!orderchuli.aspx页面" + "(" + user.UserName + ")执行了" + btn.Text.Trim() + "操作,描述:" + F_CONTENT.Text + "。", 1);
- MessageBoxToWindow("保存失败", "保存提示!", "error");
- }
- }
- }
- catch(Exception e1)
- {
- InsertOptLogs(0, 0, "操作异常!orderchuli.aspx页面" + "(" + user.UserName + ")执行了" + btn.Text.Trim() + "操作,描述:" + F_CONTENT.Text + "。异常信息:" + e1.ToString(), 2);
- MessageBoxToWindow("保存失败", "保存提示!", "error");
- }
- }
- private AssignParticipator[] GetAssignParticipatorListCXZP()
- {
- 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=(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)");
- 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 AssignParticipator[] GetAssignParticipatorList()
- {
- AssignParticipator[] arr = new AssignParticipator[1];
- arr[0] = new AssignParticipator();
- arr[0].NodeID = "9";
- 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=" + 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 void SaveHistoryInfo()
- {
- try
- {
- Common.LoginUser user = new Common.LoginUser(this.Context);
- Model.T_Wo_WorkOrderHistoryInfo modelHistoryInfo = new Model.T_Wo_WorkOrderHistoryInfo();
- string sql = "select * from T_Wo_WorkOrderHistory where F_INSTANCEID=" + txtF_INSTANCEID.Value + " and F_OPTUSERID=" + user.UserID + " order by F_HISTORYID desc";
- DataTable dt = DbHelperSQL.Query(sql).Tables[0];
- if (dt.Rows.Count > 0)
- {
- modelHistoryInfo.F_HISTORYID = Convert.ToInt32(dt.Rows[0]["F_HISTORYID"]);
- }
- modelHistoryInfo.F_OPTUSERID = user.UserID;
- modelHistoryInfo.F_REMARK = F_CONTENT.Text.Trim();
- modelHistoryInfo.F_INSTANCEID = Convert.ToInt32(txtF_INSTANCEID.Value);
- modelHistoryInfo.F_OPTDATE = DateTime.Now;
- modelHistoryInfo.F_SERVICETYPE = F_SERVICETYPE.Text.Trim();
- modelHistoryInfo.F_ORDERTYPE = F_ORDERTYPE.Text.Trim();
- modelHistoryInfo.F_SERVICENATURE = F_SERVICENATURE.Text.Trim();
- modelHistoryInfo.F_SERVICEMETHOD = F_SERVICEMETHOD.Text.Trim();
- modelHistoryInfo.F_VISITOPINION = F_VISITOPINION.Text.Trim();
- modelHistoryInfo.F_COEFFICIENT = F_COEFFICIENT.Text.Trim();
- modelHistoryInfo.F_DECLARATION = F_DECLARATION.Text.Trim();
- if (RadioButton1.Checked)
- {
- modelHistoryInfo.F_ALREADYKNOWLEDGE = 0;
- }
- else { modelHistoryInfo.F_ALREADYKNOWLEDGE = 1; }
- modelHistoryInfo.F_KNOWLEDGENAME = F_KNOWLEDGENAME.Text.Trim();
- BLL.T_Wo_WorkOrderHistoryInfo bll_addHistory = new BLL.T_Wo_WorkOrderHistoryInfo();
- bll_addHistory.Add(modelHistoryInfo);
- }
- catch { }
- }
- private bool SaveForm()
- {
- Common.LoginUser user = new Common.LoginUser(this.Context);
- bool bl = true;
- string sql = "select * from T_Wo_WorkOrderConstructor where F_WORKORDERID=" + workorderid + " and F_USERID=" + user.UserID + " and F_ISMAIN=1";
- DataTable dt = DbHelperSQL.Query(sql).Tables[0];
- if (dt.Rows.Count < 1)
- {
- txtZhu.Value = "0";
- Model.T_Wo_WorkOrderHistory modelHistory = new Model.T_Wo_WorkOrderHistory();
- modelHistory.F_INSTANCEID = Convert.ToInt32(instanceId);
- modelHistory.F_WORKORDERSTATEID = 7;
- modelHistory.F_OPTUSERID = user.UserID;//操作人ID
- modelHistory.F_OPTDATE = DateTime.Now;
- modelHistory.F_REMARK = "(" + user.UserName + ")回复内容:" + F_CONTENT.Text;
- modelHistory.F_OPTBTNID = 15;
- BLL.T_Wo_WorkOrderHistory bll_addHistory = new BLL.T_Wo_WorkOrderHistory();
- if (bll_addHistory.Add(modelHistory) > 0)
- { bl = true; }
- else { bl = false; }
- }
- 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
- }
- }
|