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
///
/// 绑定初始值
///
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 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 = 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 list = new List();
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 list = new List();
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 弹出对话框
///
/// 弹出对话框
///
///
///
///
public void MessageBoxToWindow(string title, string content, string type)
{
string script = "";
switch (type)
{
case "error"://失败
type = "error";
script = "";
break;
case "success"://成功
type = "info";
script = "";
break;
case "catch"://异常
type = "warning";
script = "";
break;
default:
type = "question";
break;
}
ClientScript.RegisterClientScriptBlock(this.GetType(), "", script);
}
#endregion
}
}