<%@ WebHandler Language="C#" Class="Kernel" %> using System; using System.Collections.Generic; using System.Web; using System.Data; using System.Web.SessionState; using System.Text; using eMIS; public class Kernel : IHttpHandler , IRequiresSessionState { public void ProcessRequest (HttpContext context) { if (context.Session["userid"]==null) context.Response.End(); DataManager dm = new DataManager(); try { dm.Operator.BeginTrans(); string nodeId = context.Request.QueryString["nid"].ToString(); string recordId = context.Request.QueryString["rid"].ToString(); string flowId = context.Request.QueryString["fid"].ToString(); string currUserId = context.Session["userid"].ToString(); string currUserCnName = context.Session["usercnname"].ToString(); string yj = context.Request.QueryString["yj"].ToString(); //string fromId = context.Request.QueryString["fromid"].ToString(); string endorseId = context.Request.QueryString["eid"].ToString(); string result = context.Request.QueryString["jg"].ToString(); string rwbz = yj; string menuId=""; string sql,newId; //兼容性考虑,获取hqid object obj = dm.ExecuteScalar("select hqid from XT_LCSL_HQ where id=" + endorseId); string hqid = obj.ToString(); obj = dm.ExecuteScalar("select id from XT_LCRW where qtid='" + hqid + "'"); if (obj == null) throw new Exception("该工作已经处理!"); dm.ExecuteNonQuery("delete XT_LCRW where id='" + obj.ToString() + "'"); obj = dm.ExecuteScalar("select id from com_xtcdb where lcid='" + flowId + "' and jdid='" + nodeId + "'"); if(obj!=null) { menuId = obj.ToString(); } InstanceManager im = new InstanceManager(context,dm,menuId); im.FlowNode = flowId+"."+nodeId; im.Flow.Init(recordId); string state = im.Flow.GetFlowState(recordId); //修改加签状态 DataTable dt = dm.Operator.ExecuteTable("select * from XT_LCSL_HQ where id='" + endorseId + "'"); //DataTable dt = dm.Operator.ExecuteTable("select * from XT_LCSL_HQ where jlid='" + recordId + "' and jd1='" + nodeId + "' and ryid='" + currUserId + "'"); string id = dt.Rows[0]["id"].ToString(); string cx = dt.Rows[0]["cx"].ToString(); int nt = int.Parse(dt.Rows[0]["nt"].ToString()); string toUserId = dt.Rows[0]["ryid2"].ToString();//加签发起人id string fromId = dt.Rows[0]["fromid"].ToString(); string bdlrid = dt.Rows[0]["ryid3"].ToString(); string dl = "1"; if (bdlrid=="" || bdlrid == toUserId) { bdlrid = toUserId; dl = "0"; } dt.Rows[0]["zt"] = 1; dm.Operator.Save(dt,"XT_LCSL_HQ","id"); //流程日志 string toUserCnName = UserManager.GetUserCnName(dm,toUserId); newId = dm.GetNewID(); rwbz = rwbz.Replace("\r\n", " "); rwbz = rwbz.Replace("'", "''"); if (nt == 1) { string fromhqid = dm.Operator.ExecuteScalar("select fromid from XT_LCSL_HQ where id ='" + fromId + "'").ToString(); sql = "insert into XT_LCRW (ID,CDID,LCID,JDID,JLID,JSSJ,JSRID,FSRID,LX,CXMC,dl,bdlrid,bz,jdms,qtid,fsr,jsr,SYSTEM_ID) values ("; sql += newId + ",null," + flowId + "," + nodeId + "," + recordId + ",getdate()," + toUserId + "," + currUserId + ",'加签','加签(" + im.Flow.FlowInstance.Description + ")',"+dl+"," + bdlrid + ",'" + rwbz + "','" + im.Flow.GetNodeProperty(nodeId, "JDMC") + "','" + fromhqid + "','" + currUserCnName + "','" + toUserCnName + "','"+DataManager.GetSystemID()+"')"; dm.ExecuteNonQuery(sql); string title = "加签(" + im.Flow.FlowInstance.Description + ")"; im.Messaging.EmailSend(title, im.Flow.GetTaskEmailContent(title, newId, toUserId), toUserId); im.Flow.EndorseSendMessage("加签(" + im.Flow.FlowInstance.Description + ")", recordId, toUserId, newId); //im.Flow.SaveApprovalOpinion("发送", recordId, currUserId, nodeId, nodeId, toUserId, yj, result, nt, im.Flow.GetNodeProperty(nodeId,"JDMC")+"加签","0","0"); } else { string url = "/Common6/Code/ObjectDisplayPage.ashx?rid=" + recordId + "&oid=" + im.Flow.BusinessObjectID + "&" + DateTime.Now.Ticks.ToString(); string message = "【转发审批返回】:" + currUserCnName + result + "" + im.Flow.FlowInstance.Description + "" + yj; im.Messaging.MisSend(im.Flow.FlowInstance.Description + " 转发评审", message, toUserId, "系统", "0",url); //im.Flow.SaveApprovalOpinion("发送", recordId, currUserId, nodeId,null, toUserId, yj, result, nt,null,"0","0"); } im.Flow.UpdateApprovalOpinion(hqid,yj, result); im.Flow.XT_TASKS_DONE_SAVE(); WriteLog(dm, im, yj, recordId, currUserId, toUserCnName, toUserId); if (context.Session["loginguid"] != null) im.Flow.DeleteTaskValidate(context.Session["loginguid"].ToString()); dm.Operator.CommitTrans(); if (context.Request.QueryString["m"] == null) { context.Response.Write(""); } else { context.Response.Write("ok"); } } catch (Exception e) { dm.Operator.RollbackTrans(); string ret = e.Message; if (context.Request.QueryString["m"] == null) context.Response.Write(""); else context.Response.Write(ret.Replace("\r\n", " ")); } finally { dm.Operator.CloseConnection(); } } public bool GetCurrentIscompleted(DataManager dm, string recordId, string nodeId, string currendIndex) { bool b = false; string sql = "select count(*) from XT_LCSL_HQ where nt=1 and jlid='" + recordId + "' and jd1='" + nodeId + "' and zt=0 and cx=" + currendIndex; object obj = dm.Operator.ExecuteScalar(sql); if (obj != null) { b = ((int)obj == 0); } return b; } public string GetNextIndex(DataManager dm, string recordId,string nodeId,string currendIndex) { string nextIndex = ""; string sql = "select min(cx) from XT_LCSL_HQ where nt=1 and jlid='" + recordId + "' and jd1='" + nodeId + "' and zt=0 and cx>" + currendIndex; object obj = dm.Operator.ExecuteScalar(sql); if (obj != null) { nextIndex = obj.ToString(); } return nextIndex; } public void WriteLog(DataManager dm, InstanceManager instance, string remark, string recordId, string fromUserId,string toUserCnName,string toUserId) { DataTable dt = dm.ExecuteTable("select * from XT_LCRZ where 1=2"); DataRow row = dt.NewRow(); row["ID"] = instance.GetNewID(); row["CXMC"] = instance.Flow.FlowInstanceDescription; object obj = dm.ExecuteScalar("select max(czsj) from XT_LCRZ where jlid=" + recordId + " and jdid_d=" + instance.Flow.CurrentNodeID); if (obj!=null) row["jssj"] = obj.ToString(); row["LCID"] = instance.Flow.FlowID; row["JDID"] = instance.Flow.CurrentNodeID; row["JDMC"] = "加签"; //instance.Flow.GetNodeProperty(instance.Flow.CurrentNodeID, "JDMC"); row["JLID"] = recordId; row["LX"] = "加签"; row["CZSJ"] = DateTime.Now; row["CZRID"] = fromUserId; row["BZ"] = remark; row["JDID_D"] = instance.Flow.CurrentNodeID; row["ZT"] = 1; row["JSR"] = toUserCnName; dt.Rows.Add(row); instance.SystemDbOperator.Append(dt, "XT_LCRZ"); int i = instance.SystemDbOperator.ExecuteNonQuery("update xt_lcsl_czr set lasttime=getdate() where jlid=" + recordId + " and ryid=" + fromUserId); if (i == 0) instance.SystemDbOperator.ExecuteNonQuery("insert into xt_lcsl_czr (jlid,ryid,lasttime) values (" + recordId + "," + fromUserId + ",getdate())"); } public bool IsReusable { get { return false; } } }