using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using DSWeb.Models; using DSWeb.EntityDA; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; namespace DSWeb.WorkFlow { public partial class StepEdit : System.Web.UI.Page { private string strWorkFlowID;//工作流GID private string strHandle; private string strUserID; private string strShowName; protected void Page_Load(object sender, EventArgs e) { if (Session["USERID"] != null) { strUserID = Session["USERID"].ToString(); } if (Session["SHOWNAME"] != null) { strShowName = Session["SHOWNAME"].ToString(); } if (Request.QueryString["handle"] != null) { strHandle = Request.QueryString["handle"].ToString().Trim().ToLower(); } if (Request.QueryString["flowid"] != null) { strWorkFlowID = Request.QueryString["flowid"].ToString().Trim(); this.h_workflowid.Value = strWorkFlowID; } if (h_post.Value.Trim() != "") { if (h_post.Value.Trim().Equals("1")) { if (h_cache.Value.Trim() != "") { saveWorkFlowStep(h_cache.Value.Trim()); } } } } private void saveWorkFlowStep(string tempStepCache) { if (tempStepCache.IndexOf("[") >= 0 && tempStepCache.IndexOf("]") > 0) { string strStepList = tempStepCache.Substring(tempStepCache.IndexOf("[") + 1, tempStepCache.IndexOf("]") - tempStepCache.IndexOf("[") - 1); IList workFlowStepEntities = new List(); string[] strFees = strStepList.Split(new string[] { "},{" }, System.StringSplitOptions.RemoveEmptyEntries); if (strFees.Length > 0) { for (int i = 0; i < strFees.Length; i++) { strFees[i] = strFees[i].ToString().Replace("{", ""); strFees[i] = strFees[i].ToString().Replace("}", ""); string[] strCell = strFees[i].Split(new char[] { ',' }); if (strCell.Length > 0) { WorkFlowStepEntity workFlowStepEntity = new WorkFlowStepEntity(); for (int j = 0; j < strCell.Length; j++) { string[] strArg = strCell[j].Split(new char[] { ':' }); switch (strArg[0].Replace("\"", "")) { case "id": workFlowStepEntity.GID = strArg[1].ToString().Replace("\"", "").Trim(); break; case "no": workFlowStepEntity.StepNO = int.Parse(strArg[1].ToString().Replace("\"", "").Trim()); break; case "name": workFlowStepEntity.Name = UnicodeToGB(strArg[1].ToString().Replace("\"", "").Trim()); break; case "desp": workFlowStepEntity.Description = UnicodeToGB(strArg[1].ToString().Replace("\"", "").Trim()); break; case "must": workFlowStepEntity.IsMust = strArg[1].ToString().Replace("\"", "").Trim().Equals("1") ? true : false; break; case "last": workFlowStepEntity.IsLast = strArg[1].ToString().Replace("\"", "").Trim().Equals("1") ? true : false; break; case "parallel": workFlowStepEntity.IsParallel = strArg[1].ToString().Replace("\"", "").Trim().Equals("1") ? true : false; break; case "dept": workFlowStepEntity.IsDepartment = strArg[1].ToString().Replace("\"", "").Trim().Equals("1") ? true : false; break; case "remark": workFlowStepEntity.Remark = strArg[1].ToString().Replace("\"", "").Trim(); break; default: break; } } workFlowStepEntity.CreateUser = this.strUserID; workFlowStepEntity.ModifiedUser = this.strUserID; workFlowStepEntity.WorkFlowID = this.strWorkFlowID; workFlowStepEntity.DefaultAuditor = ""; workFlowStepEntity.Auditor = ""; workFlowStepEntity.DepartmentID = ""; workFlowStepEntities.Add(workFlowStepEntity); } } } if (workFlowStepEntities.Count > 0) { WorkFlowStepDA workFlowStepDA = new WorkFlowStepDA(); workFlowStepDA.SaveWorkFlowStep(workFlowStepEntities); } } } public string UnicodeToGB(string text) { MatchCollection mc = Regex.Matches(text, "([\\w]+)|(\\\\u([\\w]{4}))"); if (mc != null && mc.Count > 0) { StringBuilder sb = new StringBuilder(); foreach (Match m2 in mc) { string v = m2.Value; if (v.IndexOf("\\") >= 0) { string word = v.Substring(2); byte[] codes = new byte[2]; int code = Convert.ToInt32(word.Substring(0, 2), 16); int code2 = Convert.ToInt32(word.Substring(2), 16); codes[0] = (byte)code2; codes[1] = (byte)code; sb.Append(Encoding.Unicode.GetString(codes)); } else { sb.Append(v); } } return sb.ToString(); } else { return text; } } } }