<%@ WebHandler Language="C#" Class="Kernel" %> using System; using System.Collections.Generic; using System.Web; using System.Data; using System.Data.Common; using System.Web.SessionState; using System.Text; using eMIS; public class Kernel : IHttpHandler , IRequiresSessionState { public void ProcessRequest (HttpContext context) { if (context.Session["userid"] == null) { LoginManager lm = new LoginManager(context); if (!lm.VerifyIdentity()) { context.Response.Write("会话丢失,请重新登陆!"); context.Response.End(); } } string ip = HttpContext.Current.Request.UserHostAddress; string userId = context.Session["userid"].ToString(); string url_dt = DateTime.Now.Ticks.ToString(); string token = DataManager.GetToken(userId, url_dt, ip); string stateKey = ""; System.Collections.Specialized.NameValueCollection queryString = context.Request.QueryString; string action = (queryString["intAction"]==null ? "0" : queryString["intAction"].ToString()); string relationFlag = (queryString["RelationFlag"]==null ? "" : queryString["RelationFlag"].ToString()); string menuId=""; string programId = (queryString["proid"]==null ? "" : queryString["proid"].ToString()); string url = ""; string nodeName="",condition="",defaultPage="",anzid="",queryCondition=""; string randpara = DateTime.Now.Ticks.ToString(); string recordId = ""; string flowId = ""; string nodeId = ""; string taskId = ""; bool isMobile = (context.Session["ismobile"].ToString() == "1" ? true : false); string[] arr; string customUrlType = ""; string customUrl = ""; int i; string s,sendType; string wwwroot = context.Request.ApplicationPath; if (wwwroot == "/") wwwroot = ""; DataManager dm = new DataManager();; InstanceManager inst = null; string popedomUserId=""; string queryauth = ""; object obj = null; DbDataReader r=null; if (queryString["taskid"] != null) { taskId = queryString["taskid"].ToString(); DataTable dt = dm.ExecuteTable("select * from xt_lcrw where id=?", taskId); if (dt.Rows.Count == 0) { context.Response.Write("该任务已完成!"); context.Response.End(); } else { menuId = dt.Rows[0]["cdid"].ToString(); flowId = dt.Rows[0]["lcid"].ToString(); nodeId = dt.Rows[0]["jdid"].ToString(); recordId = dt.Rows[0]["jlid"].ToString(); defaultPage = "0"; popedomUserId = dt.Rows[0]["bdlrid"].ToString(); if (popedomUserId == "") popedomUserId = dt.Rows[0]["JSRID"].ToString(); s = dt.Rows[0]["JLLJ"].ToString(); sendType= dt.Rows[0]["LX"].ToString(); if (s != "") context.Response.Redirect(wwwroot + s + (s.Contains("?")?"&":"?") + "="+randpara); //openjq('"+fid+"','"+nid+"','"+rid+"','"+qtid+"'); //function openjq(fid,nid,rid,eid) //{ //var url = commroot+"/Code/flow_endorse3.aspx?fid="+fid+"&nid="+nid+"&rid="+rid+"&eid="+eid; if (sendType == "加签" && queryString["src"] != null) { context.Response.Redirect(wwwroot + "/Common6/Code/flow_endorse3.aspx?fid=" + flowId + "&nid=" + nodeId + "&rid=" + recordId + "&eid=" + dt.Rows[0]["qtid"].ToString()); } queryauth = dt.Rows[0]["QUERY_AUTH"].ToString(); string gid = dt.Rows[0]["jlguid"].ToString(); if (gid != "") context.Response.Redirect("task_out.ashx?guid=" + recordId + "&sid="+gid+"&r=" + randpara); string sid = dt.Rows[0]["sysid"].ToString(); if (sid != "0" && sid != "") context.Response.Redirect("task_out_id.ashx?tid=" + recordId + "&sid="+sid+"&r=" + randpara); } } else { recordId = (queryString["varSign"] == null ? "" : queryString["varSign"].ToString()); flowId = (queryString["flowid"] == null ? "" : queryString["flowid"].ToString()); nodeId = (queryString["nodeid"] == null ? "" : queryString["nodeid"].ToString()); defaultPage = (queryString["page"] == null ? "" : queryString["page"].ToString()); popedomUserId = userId; menuId = (queryString["menuid"] == null ? "" : queryString["menuid"].ToString()); } PageIdManager pim = null; string instanceId = null; if (queryString["id"] != null) { pim = new PageIdManager(); pim.Init(queryString["id"].ToString()); menuId = pim.MenuID; instanceId = pim.Key; } if (menuId=="" && programId == "") { obj = dm.ExecuteScalar("select id from com_xtcdb where lcid='" + flowId + "' and jdid='" + nodeId + "'"); if (obj == null) { context.Response.Write("未发现该流程关联的菜单!"); context.Response.End(); } else { menuId = obj.ToString(); } } string menups = menuId; if (menuId != "") { if (!DataManager.IsNumber(menuId)) { menuId = DataManager.Decrypt(menuId); stateKey = StringHelper.GetRightString(menuId); menuId = StringHelper.GetLeftString(menuId); } r = dm.ExecuteReader("select LCID,JDID,CXID,JSTJ,XSLX,ANZID,CXTJ,JLID,zdycx,RenYuanGuoLv from COM_XTCDB where ID=" + menuId); if (r.Read()) { nodeName = r["LCID"].ToString(); if (nodeName != "") nodeName += "." + r["JDID"].ToString(); programId = r["CXID"].ToString(); condition = r["JSTJ"].ToString(); if(defaultPage=="") defaultPage = r["XSLX"].ToString(); anzid = r["anzid"].ToString(); queryCondition = r["CXTJ"].ToString(); if(recordId=="") recordId = r["JLID"].ToString(); customUrlType = r["RenYuanGuoLv"].ToString(); customUrl = r["zdycx"].ToString(); } else { url = "err"; } r.Close(); obj=dm.ExecuteScalar("select TJ from COM_XTCDB_JSTJ a,COM_YHGWDZB b where a.caidan_id=" + menuId + " and a.gangwei_id=b.gangwei_id and b.renyuan_id=" + userId + " order by a.cx"); if (obj!=null) { s=obj.ToString(); if(s!="") condition = s; } } else { anzid = queryString["anzid"].ToString(); } if (url != "") { if (url.IndexOf("?") != -1) url += "&menuid=" + menuId; else url +="?menuid=" + menuId; context.Response.Write("请检查菜单id是否错误!"); context.Response.End(); } if (customUrlType == "") { if (customUrl != "") context.Response.Redirect(wwwroot + customUrl); } else if (customUrlType == "1") { if (isMobile && customUrl != "") context.Response.Redirect(wwwroot + customUrl); } else { string[] a = customUrl.Split(','); context.Response.Redirect(wwwroot + "/Common6/Code/user_out.ashx?sid=" + a[0] + "&mid=" + a[1] + ""); } if (queryString["con"] != null) { condition = queryString["con"].ToString(); if (condition != "") { condition = DataManager.UrlDecode(condition); } } if (queryString["cond"] != null) { condition = queryString["cond"].ToString(); if (condition != "") { condition = DataManager.SqlDecode(condition); } if (queryString["condparams"] != null) { condition = DataManager.SqlDecode2(condition,queryString["condparams"].ToString()); } } //追加默认条件 if (queryString["appendcond"] != null) { s = queryString["appendcond"].ToString(); if (s != "") { s = DataManager.SqlDecode(s); if(s!="") condition += (condition == "" ? "" : " and ") + "(" + s + ")"; } } if (queryString["QueryCondition"] !=null) queryCondition = queryString["QueryCondition"].ToString(); if (queryString["qcon"] != null) { queryCondition = queryString["qcon"].ToString(); if (queryCondition != "") { queryCondition = DataManager.UrlDecode(queryCondition); } } if (queryString["qcond"] != null) { condition = queryString["qcond"].ToString(); if (condition != "") { condition = DataManager.SqlDecode(condition); } } if (queryString["anzid"] != null) anzid = queryString["anzid"].ToString(); switch(action) { case "0": inst = new InstanceManager(context,dm,menuId,programId); inst.StateKey = stateKey; url = inst.Program.Properties["DZCX"].ToString(); if (url != "") { if (url.IndexOf("?") != -1) url += "&src=" + menuId + "&cpara=" + GetQueryStringValue(queryString, "cpara") + "&r=" + randpara; else url += "?src=" + menuId + "&cpara=" + GetQueryStringValue(queryString, "cpara") + "&r=" + randpara; url = wwwroot + url; context.Response.Redirect(url); } inst.InstanceId = instanceId; s = GetQueryStringValue(queryString, "init"); if (s != "0") { inst.InitState(); } inst.SetStateValue("pid",programId); s = GetQueryStringValue(queryString, "cpara"); if (s != "") { s = DataManager.UrlDecode(s); inst.SetStateValue("vr", s); } // if (userId=="401008") { // context.Response.Write(s); // context.Response.End(); // } inst.DefaultCondition = inst.ConvertCondition(condition); inst.ButtonGroupID = anzid; inst.FlowNode = nodeName; inst.FlowNodePopedom = nodeName; inst.SqlOrder = inst.Program.Properties["MRPX"].ToString(); inst.PopedomUserID = popedomUserId; //context.Response.Cookies["pk"+menuId].Expires = DateTime.Now.AddDays(-1); HttpCookie cookie = new HttpCookie("pk"+menuId); cookie.Path = ""; cookie.Expires = DateTime.Today.AddYears(-1); context.Response.Cookies.Set(cookie); // HttpCookie cookie = context.Request.Cookies.Get("pk" + menuId); //context.Response.Write(cookie.Path); //context.Response.End(); s=GetQueryStringValue(queryString,"dbid"); if(s!="") inst.SetStateValue("db", s); s = GetQueryStringValue(queryString, "mini"); if(s!="") inst.SetStateValue("mini", s); s=GetQueryStringValue(queryString, "editmini"); if(s!="") inst.SetStateValue("emn",s ); s = GetQueryStringValue(queryString, "js"); if(s!="") inst.SetStateValue("js", s); if(taskId!="") inst.SetStateValue("tk", s); //inst.SetStateValue("qc", ""); if (queryCondition != "") inst.QueryCondition = inst.Tag.ReplaceExpression(queryCondition,""); string tree = ""; if (GetQueryStringValue(queryString, "hiddentree") != "1") { tree = inst.Program.Properties["tree"].ToString(); if (tree != "" && defaultPage != "0" ) { defaultPage = "8"; } } if (relationFlag == "true") { inst.ParentPrimaryKeyValue = GetQueryStringValue(queryString,"parentvalue"); inst.ParentID = GetQueryStringValue(queryString, "parentid"); inst.SetStateValue("fk",GetQueryStringValue(queryString, "ForeignKey")); inst.SetStateValue("fkv",GetQueryStringValue(queryString, "parentvalue")); if (inst.ParentID != "") { InstanceManager parentInst = new InstanceManager(context); parentInst.MenuID = inst.ParentID; inst.PopedomUserID = parentInst.GetStateValue("puid"); } } if(GetQueryStringValue(queryString,"task") == "1") inst.TaskUserID=userId; //stemp = aco.mt.dzcx //if stemp <> "" then // if left(stemp,1) = "/" then stemp = application("wwwroot") & stemp // strDefaultPage = "3" //end if //if treeconfig <> "" then // strDefaultPage = "7" // strCondition = aco.ConvertWhereCondition(strCondition) // varURL = "tree/default.asp?r=" & randpara & "&proid=" & proid & "&tn=" & server.urlencode(aco.getlisttablename()) & "&cfg=" & server.urlencode(treeconfig) & "&con=" & server.urlencode(strCondition) //end if switch (defaultPage) { case "2": url = "Condition.ashx?proid=" + menuId + "&r=" + randpara; break; case "1": if(isMobile && inst.DisableMobile!="1") url = "DataShow_frame.ashx?proid=" + menuId + "&r=" + randpara; else url = "Data_Show.ashx?"+(pim==null?"proid=" + menups :"id="+pim.ID)+"&r=" + randpara; break; case "0": if(isMobile && inst.DisableMobile!="1") url = "EditData_frame.ashx?varSign=" + recordId + "&proid=" + menuId + "&r=" + randpara; else url = "EditData.ashx?varSign=" + recordId + "&proid=" + menuId + "&mrid=" + GetQueryStringValue(queryString, "mrid") + "&token=" + token + "&r=" + randpara; break; case "3": if (url.IndexOf("?")==-1) url += "?recid=" + recordId + "&menuid=" + menuId + "&cpara=" + GetQueryStringValue(queryString,"var") + "&r=" + randpara; else url += "&recid=" + recordId + "&menuid=" + menuId + "&cpara=" + GetQueryStringValue(queryString, "var") + "&r=" + randpara; break; //首条记录 case "4": url = "EditData.ashx?varSign=" + inst.GetFirstRecordPrimaryKeyValue() + "&token=" + token + "&proid=" + menuId + "&r=" + randpara; //context.Response.Write(url); //context.Response.End(); break; //打印页面 case "5": url = "print.asp?r=" + randpara + "&proid=" + menuId + "&recid=0"; break; //树+列表 case "8": url = "TreeListFrame.aspx?pid=" + menuId + "&tjson=" + DataManager.Encrypt(tree) + "&did="+recordId+"&r=" + randpara; break; //查看页面 case "6": url="CustomPageDisplay.ashx?temid=&recid=" + recordId + "&proid=" + menuId + "&r=" + randpara; break; case "7": break; default: url = "Data_Show.ashx?proid=" + programId + "&r=" + randpara;; break; } context.Response.Redirect(url); break; case "16": //'修改 recordId = GetQueryStringValue(queryString,"recid"); inst = new InstanceManager(context,dm,menuId); recordId = inst.SaveMultiData(recordId); url = "EditData.asp?r=" + randpara + "&rd=1&proid=" + menuId + "&varSign=" + recordId; if (recordId != "") { url = "Error_Display.asp?Error_Text=" + recordId; } s = GetQueryStringValue(queryString,"tourl"); if (s== "") context.Response.Redirect(url); else context.Response.Redirect(wwwroot+ s + "?id=" + recordId + "&url=" + context.Server.UrlEncode(wwwroot + "/Common6/Code/" + url)); break; case "15": //'返回主表 inst = new InstanceManager(context, programId); context.Response.Redirect("Data_Show.asp?r=" + randpara + "&proid=" + inst.ParentID); break; default: break; } } private string GetQueryStringValue(System.Collections.Specialized.NameValueCollection queryString,string name) { if(queryString[name]!=null) return queryString[name].ToString(); else return ""; } private void responseJson(HttpContext context,string c) { context.Response.ContentType = "text/xml"; context.Response.Write(""); context.Response.Write(""); } private string GetItemValue(string itemsString,string itemName) { int i = itemsString.IndexOf("\"" + itemName + "\" : \"") + itemName.Length + 6; int j = itemsString.IndexOf("\"",i); return itemsString.Substring(i, j - i); } public bool IsReusable { get { return false; } } }