using System; using System.Collections; using System.Data; using System.Text; using BP.DA; using BP.Sys; using BP.Web; using BP.Port; using BP.En; using BP.WF.Port.Admin2Group; using BP.Difference; using BP.CCFast.CCMenu; namespace BP.WF.HttpHandler { /// /// 页面功能实体 /// public class CCMobile : DirectoryPageBase { /// /// 构造函数 /// public CCMobile() { BP.Web.WebUser.SheBei = "Mobile"; } #region 执行父类的重写方法. /// /// 默认执行的方法 /// /// protected override string DoDefaultMethod() { switch (this.DoType) { case "DtlFieldUp": //字段上移 return "执行成功."; default: break; } //找不不到标记就抛出异常. throw new Exception("@标记[" + this.DoType + "],没有找到."); } #endregion 执行父类的重写方法. public string Login_Init() { BP.WF.HttpHandler.WF ace = new WF(); return ace.Login_Init(); } public string Login_Submit() { string userNo = this.GetRequestVal("TB_No"); if (DataType.IsNullOrEmpty(userNo) == true) userNo = this.GetRequestVal("TB_UserNo"); string pass = this.GetRequestVal("TB_PW"); if (DataType.IsNullOrEmpty(pass) == true) pass = this.GetRequestVal("TB_Pass"); if(SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS) { Emp saemp = null; if (DataType.IsNullOrEmpty(this.OrgNo) == false) { string empNo = this.OrgNo + "_" + userNo; saemp.No = empNo; if (saemp.RetrieveFromDBSources() == 0) return "err@账号" + userNo + "在组织" + this.OrgNo + "还未注册"; } else { //获取当前用户 Emps emps = new Emps(); emps.Retrieve(EmpAttr.UserID, userNo, EmpAttr.EmpSta, 1); if (emps.Count == 0) return "err@还未注册该账号或该账号已经禁用"; saemp = emps[0] as Emp; } if (saemp.CheckPass(pass) == false) return "err@用户名或者密码错误."; //调用登录方法. BP.WF.Dev2Interface.Port_Login(saemp.UserID, saemp.OrgNo); return "url@Home.htm?Token=" + BP.WF.Dev2Interface.Port_GenerToken("PC") + "&UserNo=" + saemp.UserID; } BP.Port.Emp emp = new Emp(); emp.UserID = userNo; if (emp.RetrieveFromDBSources() == 0) { if (DBAccess.IsExitsTableCol("Port_Emp", "NikeName") == true) { /*如果包含昵称列,就检查昵称是否存在.*/ Paras ps = new Paras(); ps.SQL = "SELECT " + BP.Sys.Base.Glo.UserNo + " FROM Port_Emp WHERE NikeName=" + SystemConfig.AppCenterDBVarStr + "userNo"; ps.Add("userNo", userNo); string no = DBAccess.RunSQLReturnStringIsNull(ps, null); if (no == null) return "err@用户名或者密码错误."; emp.UserID = no; int i = emp.RetrieveFromDBSources(); if (i == 0) return "err@用户名或者密码错误."; } else if (DBAccess.IsExitsTableCol("Port_Emp", "Tel") == true) { /*如果包含昵称列,就检查昵称是否存在.*/ Paras ps = new Paras(); ps.SQL = "SELECT " + BP.Sys.Base.Glo.UserNo + " FROM Port_Emp WHERE Tel=" + SystemConfig.AppCenterDBVarStr + "userNo"; ps.Add("userNo", userNo); //string sql = "SELECT No FROM Port_Emp WHERE NikeName='" + userNo + "'"; string no = DBAccess.RunSQLReturnStringIsNull(ps, null); if (no == null) return "err@用户名或者密码错误."; emp.UserID = no; int i = emp.RetrieveFromDBSources(); if (i == 0) return "err@用户名或者密码错误."; } else { return "err@用户名或者密码错误."; } } if (emp.CheckPass(pass) == false) return "err@用户名或者密码错误."; if (Glo.CCBPMRunModel == CCBPMRunModel.Single) { //调用登录方法. BP.WF.Dev2Interface.Port_Login(emp.UserID); if (DBAccess.IsExitsTableCol("Port_Emp", "EmpSta") == true) { string sql = "SELECT EmpSta FROM Port_Emp WHERE No='" + emp.No + "'"; if (DBAccess.RunSQLReturnValInt(sql, 1) == 1) return "err@该用户已经被禁用."; } return "url@/FastMobilePortal/Default.htm?Token=" + BP.WF.Dev2Interface.Port_GenerToken("PC") + "&UserNo=" + emp.UserID; } if (Glo.CCBPMRunModel == CCBPMRunModel.Single) { //调用登录方法. BP.WF.Dev2Interface.Port_Login(emp.UserID); if (DBAccess.IsExitsTableCol("Port_Emp", "EmpSta") == true) { string sql = "SELECT EmpSta FROM Port_Emp WHERE No='" + emp.No + "'"; if (DBAccess.RunSQLReturnValInt(sql, 1) == 1) return "err@该用户已经被禁用."; } return "url@/FastMobilePortal/Default.htm?Token=" + BP.WF.Dev2Interface.Port_GenerToken("PC") + "&UserNo=" + emp.UserID; } //获得当前管理员管理的组织数量. OrgAdminers adminers = null; //查询他管理多少组织. adminers = new OrgAdminers(); adminers.Retrieve(OrgAdminerAttr.FK_Emp, emp.UserID); if (adminers.Count == 0) { BP.WF.Port.Admin2Group.Orgs orgs = new Orgs(); int i = orgs.Retrieve("Adminer", this.GetRequestVal("TB_No")); if (i == 0) { //调用登录方法. BP.WF.Dev2Interface.Port_Login(emp.UserID, emp.OrgNo); return "url@/FastMobilePortal/Default.htm?Token=" + BP.WF.Dev2Interface.Port_GenerToken("PC") + "&UserNo=" + emp.UserID + "&OrgNo=" + emp.OrgNo; } foreach (BP.WF.Port.Admin2Group.Org org in orgs) { OrgAdminer oa = new OrgAdminer(); oa.FK_Emp = WebUser.No; oa.OrgNo = org.No; oa.Save(); } adminers.Retrieve(OrgAdminerAttr.FK_Emp, emp.UserID); } //设置他的组织,信息. WebUser.No = emp.UserID; //登录帐号. WebUser.FK_Dept = emp.FK_Dept; WebUser.FK_DeptName = emp.FK_DeptText; //执行登录. BP.WF.Dev2Interface.Port_Login(emp.UserID, emp.OrgNo); string token = BP.WF.Dev2Interface.Port_GenerToken("PC"); //判断是否是多个组织的情况. if (adminers.Count == 1) return "url@/FastMobilePortal/Default.htm?Token=" + token + "&UserNo=" + emp.UserID + "&OrgNo=" + emp.OrgNo; return "url@SelectOneOrg.htm?Token=" + token + "&UserNo=" + emp.UserID + "&OrgNo=" + emp.OrgNo; return "登录成功."; } public string Login_SubmitSingle() { string userNo = this.GetRequestVal("TB_No"); string pass = this.GetRequestVal("TB_PW"); BP.Port.Emp emp = new Emp(); emp.No = userNo; if (emp.RetrieveFromDBSources() == 0) { if (DBAccess.IsExitsTableCol("Port_Emp", "NikeName") == true) { /*如果包含昵称列,就检查昵称是否存在.*/ Paras ps = new Paras(); ps.SQL = "SELECT " + BP.Sys.Base.Glo.UserNo + " FROM Port_Emp WHERE NikeName=" + SystemConfig.AppCenterDBVarStr + "userNo"; ps.Add("userNo", userNo); //string sql = "SELECT No FROM Port_Emp WHERE NikeName='" + userNo + "'"; string no = DBAccess.RunSQLReturnStringIsNull(ps, null); if (no == null) return "err@用户名或者密码错误."; emp.UserID = no; int i = emp.RetrieveFromDBSources(); if (i == 0) return "err@用户名或者密码错误."; } else if (DBAccess.IsExitsTableCol("Port_Emp", "Tel") == true) { /*如果包含昵称列,就检查昵称是否存在.*/ Paras ps = new Paras(); ps.SQL = "SELECT " + BP.Sys.Base.Glo.UserNo + " FROM Port_Emp WHERE Tel=" + SystemConfig.AppCenterDBVarStr + "userNo"; ps.Add("userNo", userNo); //string sql = "SELECT No FROM Port_Emp WHERE NikeName='" + userNo + "'"; string no = DBAccess.RunSQLReturnStringIsNull(ps, null); if (no == null) return "err@用户名或者密码错误."; emp.UserID = no; int i = emp.RetrieveFromDBSources(); if (i == 0) return "err@用户名或者密码错误."; } else { return "err@用户名或者密码错误."; } } if (emp.CheckPass(pass) == false) return "err@用户名或者密码错误."; //调用登录方法. BP.WF.Dev2Interface.Port_Login(emp.UserID); return "登录成功."; } /// /// 会签列表 /// /// public string HuiQianList_Init() { WF wf = new WF(); return wf.HuiQianList_Init(); } public string GetUserInfo() { if (WebUser.No == null) return "{err:'nologin'}"; StringBuilder append = new StringBuilder(); append.Append("{"); string userPath = SystemConfig.PathOfWebApp + "DataUser/UserIcon/"; string userIcon = userPath + BP.Web.WebUser.No + "Biger.png"; if (System.IO.File.Exists(userIcon)) { append.Append("UserIcon:'" + BP.Web.WebUser.No + "Biger.png'"); } else { append.Append("UserIcon:'DefaultBiger.png'"); } append.Append(",UserName:'" + BP.Web.WebUser.Name + "'"); append.Append(",UserDeptName:'" + BP.Web.WebUser.FK_DeptName + "'"); append.Append("}"); return append.ToString(); } public string StartGuide_MulitSend() { WF_MyFlow en = new WF_MyFlow(); return en.StartGuide_MulitSend(); } public string Home_Init() { Hashtable ht = new Hashtable(); ht.Add("UserNo", BP.Web.WebUser.No); ht.Add("UserName", BP.Web.WebUser.Name); //系统名称. ht.Add("SysName", SystemConfig.SysName); ht.Add("CustomerName", SystemConfig.CustomerName); ht.Add("Todolist_EmpWorks", BP.WF.Dev2Interface.Todolist_EmpWorks); ht.Add("Todolist_Runing", BP.WF.Dev2Interface.Todolist_Runing); ht.Add("Todolist_Complete", BP.WF.Dev2Interface.Todolist_Complete); ht.Add("Todolist_CCWorks", BP.WF.Dev2Interface.Todolist_CCWorks); ht.Add("Todolist_HuiQian", BP.WF.Dev2Interface.Todolist_HuiQian); //会签数量. ht.Add("Todolist_Drafts", BP.WF.Dev2Interface.Todolist_Draft); //会签数量. return BP.Tools.Json.ToJsonEntityModel(ht); } public string Default_Init() { DataSet ds = new DataSet(); //获取最近发起的流程 string sql = ""; int top = GetRequestValInt("Top"); if (top == 0) top = 8; switch (BP.Difference.SystemConfig.AppCenterDBType) { case DBType.MSSQL: sql = " SELECT TOP " + top + " FK_Flow,FlowName,F.Icon FROM WF_GenerWorkFlow G ,WF_Flow F WHERE F.IsCanStart=1 AND F.No=G.FK_Flow AND Starter='" + WebUser.No + "' ORDER By SendDT DESC"; break; case DBType.MySQL: case DBType.PostgreSQL: case DBType.UX: sql = "SELECT DISTINCT * From (SELECT FK_Flow,FlowName,F.Icon FROM WF_GenerWorkFlow G ,WF_Flow F WHERE F.IsCanStart=1 AND F.No=G.FK_Flow AND Starter='" + WebUser.No + "' Order By SendDT limit " + (top*2)+ ") A limit " + top; break; case DBType.Oracle: case DBType.DM: case DBType.KingBaseR3: case DBType.KingBaseR6: sql = " SELECT * FROM (SELECT DISTINCT FK_Flow as \"FK_Flow\",FlowName as \"FlowName\",F.Icon FROM WF_GenerWorkFlow G ,WF_Flow F WHERE F.IsCanStart=1 AND F.No=G.FK_Flow AND Starter='" + WebUser.No + "' GROUP BY FK_Flow,FlowName,ICON Order By SendDT) WHERE rownum <=" + top; break; default: throw new Exception("err@系统暂时还未开发使用" + BP.Difference.SystemConfig.AppCenterDBType + "数据库"); } DataTable dt = DBAccess.RunSQLReturnTable(sql); dt.TableName = "Flows"; ds.Tables.Add(dt); //应用中心 MySystems systems = new MySystems(); systems.RetrieveAll(); MySystems systemsCopy = new MySystems(); //权限中心. BP.CCFast.CCMenu.PowerCenters pcs = new BP.CCFast.CCMenu.PowerCenters(); pcs.RetrieveAll(); string mydepts = "" + WebUser.FK_Dept + ","; //我的部门. string mystas = ""; //我的角色. DataTable mydeptsDT = DBAccess.RunSQLReturnTable("SELECT FK_Dept,FK_Station FROM Port_DeptEmpStation WHERE FK_Emp='" + WebUser.No + "'"); foreach (DataRow dr in mydeptsDT.Rows) { mydepts += dr[0].ToString() + ","; mystas += dr[1].ToString() + ","; } //首先解决系统的权限. string ids = ""; foreach (MySystem item in systems) { //如果被禁用了. if (item.IsEnable == false) continue; //找到关于系统的控制权限集合. PowerCenters mypcs = pcs.GetEntitiesByKey(PowerCenterAttr.CtrlPKVal, item.No) as PowerCenters; //如果没有权限控制的描述,就默认有权限. if (mypcs == null) { systemsCopy.AddEntity(item); continue; } //控制遍历权限. foreach (PowerCenter pc in mypcs) { if (pc.CtrlModel.Equals("Anyone") == true) { systemsCopy.AddEntity(item); break; } if (pc.CtrlModel.Equals("Adminer") == true && BP.Web.WebUser.No.Equals("admin") == true) { systemsCopy.AddEntity(item); break; } if (pc.CtrlModel.Equals("AdminerAndAdmin2") == true && BP.Web.WebUser.IsAdmin == true) { systemsCopy.AddEntity(item); break; } ids = "," + pc.IDs + ","; if (pc.CtrlModel.Equals("Emps") == true && ids.Contains("," + BP.Web.WebUser.No + ",") == true) { systemsCopy.AddEntity(item); break; } //是否包含部门? if (pc.CtrlModel.Equals("Depts") == true && BP.DA.DataType.IsHaveIt(pc.IDs, mydepts) == true) { systemsCopy.AddEntity(item); break; } //是否包含角色? if (pc.CtrlModel.Equals("Stations") == true && BP.DA.DataType.IsHaveIt(pc.IDs, mystas) == true) { systemsCopy.AddEntity(item); break; } //SQL? if (pc.CtrlModel.Equals("SQL") == true) { sql = BP.WF.Glo.DealExp(pc.IDs, null, ""); if (DBAccess.RunSQLReturnValFloat(sql) > 0) { systemsCopy.AddEntity(item); } break; } } } ds.Tables.Add(systemsCopy.ToDataTableField("Systems")); return BP.Tools.Json.ToJson(ds); } /// /// 查询 /// /// public string Home_Init_WorkCount() { Paras ps = new Paras(); ps.SQL = "SELECT TSpan as No, '' as Name, COUNT(WorkID) as Num, FROM WF_GenerWorkFlow WHERE Emps LIKE '%" + SystemConfig.AppCenterDBVarStr + "Emps%' GROUP BY TSpan"; ps.Add("Emps", WebUser.No); //string sql = "SELECT TSpan as No, '' as Name, COUNT(WorkID) as Num, FROM WF_GenerWorkFlow WHERE Emps LIKE '%" + WebUser.No + "%' GROUP BY TSpan"; DataSet ds = new DataSet(); DataTable dt = DBAccess.RunSQLReturnTable(ps); ds.Tables.Add(dt); dt.Columns[0].ColumnName = "TSpan"; dt.Columns[1].ColumnName = "Num"; string sql = "SELECT IntKey as No, Lab as Name FROM " + BP.Sys.Base.Glo.SysEnum() + " WHERE EnumKey='TSpan'"; DataTable dt1 = DBAccess.RunSQLReturnTable(sql); foreach (DataRow dr in dt.Rows) { foreach (DataRow mydr in dt1.Rows) { } } return BP.Tools.Json.ToJson(dt); } public string MyFlow_Init() { BP.WF.HttpHandler.WF_MyFlow wfPage = new BP.WF.HttpHandler.WF_MyFlow(); return wfPage.MyFlow_Init(); } public string Runing_Init() { WF wfPage = new WF(); return wfPage.Runing_Init(); } /// /// 新版本. /// /// public string Todolist_Init() { string fk_node = this.GetRequestVal("FK_Node"); string showWhat = this.GetRequestVal("ShowWhat"); string orderBy = this.GetRequestVal("OrderBy"); DataTable dt = BP.WF.Dev2Interface.DB_GenerEmpWorksOfDataTable(WebUser.No, this.FK_Node, showWhat,null,null, orderBy); dt.Columns.Add("WFStateLabel"); foreach (DataRow dr in dt.Rows) { int sta = int.Parse(dr["WFState"].ToString()); dr["WFStateLabel"] = "待办"; if (sta == 5) { dr["WFStateLabel"] = "退回"; } if (sta == 4) { string atpara = dr["AtPara"].ToString(); if (atpara.Contains("@HungupSta=2") == true) dr["WFStateLabel"] = "拒绝挂起"; if (atpara.Contains("@HungupSta=1") == true) dr["WFStateLabel"] = "同意挂起"; if (atpara.Contains("@HungupSta=0") == true) dr["WFStateLabel"] = "挂起等待审批"; } } return BP.Tools.Json.ToJson(dt); } /// /// 查询已完成. /// /// public string Complete_Init() { DataTable dt = null; dt = BP.WF.Dev2Interface.DB_FlowComplete(); return BP.Tools.Json.ToJson(dt); } public string DB_GenerReturnWorks() { /* 如果工作节点退回了*/ BP.WF.ReturnWorks rws = new BP.WF.ReturnWorks(); rws.Retrieve(BP.WF.ReturnWorkAttr.ReturnToNode, this.FK_Node, BP.WF.ReturnWorkAttr.WorkID, this.WorkID, BP.WF.ReturnWorkAttr.RDT); StringBuilder append = new StringBuilder(); append.Append("["); return BP.Tools.Json.ToJson(rws.ToDataTableField()); } public string Start_Init() { WF wfPage = new WF(); return wfPage.Start_Init(); } public string HandlerMapExt() { WF_CCForm en = new WF_CCForm(); return en.HandlerMapExt(); } /// /// 打开手机端 /// /// public string Do_OpenFlow() { string sid = this.GetRequestVal("Token"); string[] strs = sid.Split('_'); GenerWorkerList wl = new GenerWorkerList(); int i = wl.Retrieve(GenerWorkerListAttr.FK_Emp, strs[0], GenerWorkerListAttr.WorkID, strs[1], GenerWorkerListAttr.IsPass, 0); if (i == 0) { return "err@提示:此工作已经被别人处理或者此流程已删除。"; } BP.Port.Emp empOF = new BP.Port.Emp(wl.FK_Emp); Web.WebUser.SignInOfGener(empOF); return "MyFlow.htm?FK_Flow=" + wl.FK_Flow + "&WorkID=" + wl.WorkID + "&FK_Node=" + wl.FK_Node + "&FID=" + wl.FID; } /// /// 流程单表单查看. /// /// json public string FrmView_Init() { WF wf = new WF(); return wf.FrmView_Init(); } /// /// 撤销发送 /// /// public string FrmView_UnSend() { WF_WorkOpt_OneWork en = new WF_WorkOpt_OneWork(); return en.OP_UnSend(); } public string AttachmentUpload_Down() { WF_CCForm ccform = new WF_CCForm(); return ccform.AttachmentUpload_Down(); } public string AttachmentUpload_DownByStream() { WF_CCForm ccform = new WF_CCForm(); return ccform.AttachmentUpload_DownByStream(); } #region 关键字查询. /// /// 执行查询 /// /// public string SearchKey_Query() { WF_RptSearch search = new WF_RptSearch(); return search.KeySearch_Query(); } #endregion 关键字查询. #region 查询. /// /// 初始化 /// /// public string Search_Init() { DataSet ds = new DataSet(); string sql = ""; string sqlOrgNoWhere = ""; if (SystemConfig.CCBPMRunModel != CCBPMRunModel.Single) sqlOrgNoWhere = " AND OrgNo='" + BP.Web.WebUser.OrgNo + "'"; string tSpan = this.GetRequestVal("TSpan"); if (tSpan == "") tSpan = null; #region 1、获取时间段枚举/总数. SysEnums ses = new SysEnums("TSpan"); DataTable dtTSpan = ses.ToDataTableField(); dtTSpan.TableName = "TSpan"; ds.Tables.Add(dtTSpan); if (this.FK_Flow == null) sql = "SELECT TSpan as No, COUNT(WorkID) as Num FROM WF_GenerWorkFlow WHERE (Emps LIKE '%" + WebUser.No + "%' OR Starter='" + WebUser.No + "') AND WFState > 1 " + sqlOrgNoWhere + " GROUP BY TSpan"; else sql = "SELECT TSpan as No, COUNT(WorkID) as Num FROM WF_GenerWorkFlow WHERE FK_Flow='" + this.FK_Flow + "' AND (Emps LIKE '%" + WebUser.No + "%' OR Starter='" + WebUser.No + "') AND WFState > 1 " + sqlOrgNoWhere + " GROUP BY TSpan"; DataTable dtTSpanNum = DBAccess.RunSQLReturnTable(sql); foreach (DataRow drEnum in dtTSpan.Rows) { string no = drEnum["IntKey"].ToString(); foreach (DataRow dr in dtTSpanNum.Rows) { if (dr["No"].ToString() == no) { drEnum["Lab"] = drEnum["Lab"].ToString() + "(" + dr["Num"] + ")"; break; } } } #endregion #region 2、处理流程类别列表. if (tSpan == "-1") sql = "SELECT FK_Flow as No, FlowName as Name, COUNT(WorkID) as Num FROM WF_GenerWorkFlow WHERE (Emps LIKE '%" + WebUser.No + "%' OR TodoEmps LIKE '%" + BP.Web.WebUser.No + ",%' OR Starter='" + WebUser.No + "') AND WFState > 1 AND FID = 0 " + sqlOrgNoWhere + " GROUP BY FK_Flow, FlowName"; else sql = "SELECT FK_Flow as No, FlowName as Name, COUNT(WorkID) as Num FROM WF_GenerWorkFlow WHERE TSpan=" + tSpan + " AND (Emps LIKE '%" + WebUser.No + "%' OR TodoEmps LIKE '%" + BP.Web.WebUser.No + ",%' OR Starter='" + WebUser.No + "') AND WFState > 1 AND FID = 0 " + sqlOrgNoWhere + " GROUP BY FK_Flow, FlowName"; DataTable dtFlows = DBAccess.RunSQLReturnTable(sql); dtFlows.Columns[0].ColumnName = "No"; dtFlows.Columns[1].ColumnName = "Name"; dtFlows.Columns[2].ColumnName = "Num"; dtFlows.TableName = "Flows"; ds.Tables.Add(dtFlows); #endregion #region 3、处理流程实例列表. GenerWorkFlows gwfs = new GenerWorkFlows(); string sqlWhere = ""; sqlWhere = "(1 = 1)AND (((Emps LIKE '%" + WebUser.No + "%')OR(TodoEmps LIKE '%" + WebUser.No + "%')OR(Starter = '" + WebUser.No + "')) AND (WFState > 1) " + sqlOrgNoWhere; if (tSpan != "-1") { sqlWhere += "AND (TSpan = '" + tSpan + "') "; } if (this.FK_Flow != null) { sqlWhere += "AND (FK_Flow = '" + this.FK_Flow + "')) "; } else { sqlWhere += ")"; } sqlWhere += "ORDER BY RDT DESC"; if (SystemConfig.AppCenterDBType == DBType.Oracle || SystemConfig.AppCenterDBType == DBType.KingBaseR3 || SystemConfig.AppCenterDBType == DBType.KingBaseR6) sql = "SELECT NVL(WorkID, 0) WorkID,NVL(FID, 0) FID ,FK_Flow,FlowName,Title, NVL(WFSta, 0) WFSta,WFState, Starter, StarterName,Sender,NVL(RDT, '2018-05-04 19:29') RDT,NVL(FK_Node, 0) FK_Node,NodeName, TodoEmps FROM (select * from WF_GenerWorkFlow where " + sqlWhere + ") where rownum <= 500"; else if (SystemConfig.AppCenterDBType == DBType.MSSQL) sql = "SELECT TOP 500 ISNULL(WorkID, 0) WorkID,ISNULL(FID, 0) FID ,FK_Flow,FlowName,Title, ISNULL(WFSta, 0) WFSta,WFState, Starter, StarterName,Sender,ISNULL(RDT, '2018-05-04 19:29') RDT,ISNULL(FK_Node, 0) FK_Node,NodeName, TodoEmps FROM WF_GenerWorkFlow where " + sqlWhere; else if (SystemConfig.AppCenterDBType == DBType.MySQL) sql = "SELECT IFNULL(WorkID, 0) WorkID,IFNULL(FID, 0) FID ,FK_Flow,FlowName,Title, IFNULL(WFSta, 0) WFSta,WFState, Starter, StarterName,Sender,IFNULL(RDT, '2018-05-04 19:29') RDT,IFNULL(FK_Node, 0) FK_Node,NodeName, TodoEmps FROM WF_GenerWorkFlow where " + sqlWhere + " LIMIT 500"; else if (SystemConfig.AppCenterDBType == DBType.PostgreSQL || SystemConfig.AppCenterDBType == DBType.UX) sql = "SELECT COALESCE(WorkID, 0) WorkID,COALESCE(FID, 0) FID ,FK_Flow,FlowName,Title, COALESCE(WFSta, 0) WFSta,WFState, Starter, StarterName,Sender,COALESCE(RDT, '2018-05-04 19:29') RDT,COALESCE(FK_Node, 0) FK_Node,NodeName, TodoEmps FROM WF_GenerWorkFlow where " + sqlWhere + " LIMIT 500"; DataTable mydt = DBAccess.RunSQLReturnTable(sql); mydt.Columns[0].ColumnName = "WorkID"; mydt.Columns[1].ColumnName = "FID"; mydt.Columns[2].ColumnName = "FK_Flow"; mydt.Columns[3].ColumnName = "FlowName"; mydt.Columns[4].ColumnName = "Title"; mydt.Columns[5].ColumnName = "WFSta"; mydt.Columns[6].ColumnName = "WFState"; mydt.Columns[7].ColumnName = "Starter"; mydt.Columns[8].ColumnName = "StarterName"; mydt.Columns[9].ColumnName = "Sender"; mydt.Columns[10].ColumnName = "RDT"; mydt.Columns[11].ColumnName = "FK_Node"; mydt.Columns[12].ColumnName = "NodeName"; mydt.Columns[13].ColumnName = "TodoEmps"; mydt.TableName = "WF_GenerWorkFlow"; if (mydt != null) { mydt.Columns.Add("TDTime"); foreach (DataRow dr in mydt.Rows) { dr["TDTime"] = GetTraceNewTime(dr["FK_Flow"].ToString(), int.Parse(dr["WorkID"].ToString()), int.Parse(dr["FID"].ToString())); } } #endregion ds.Tables.Add(mydt); return BP.Tools.Json.ToJson(ds); } public static string GetTraceNewTime(string fk_flow, Int64 workid, Int64 fid) { #region 获取track数据. string sqlOfWhere2 = ""; string sqlOfWhere1 = ""; string dbStr = SystemConfig.AppCenterDBVarStr; Paras ps = new Paras(); if (fid == 0) { sqlOfWhere1 = " WHERE (FID=" + dbStr + "WorkID11 OR WorkID=" + dbStr + "WorkID12 ) "; ps.Add("WorkID11", workid); ps.Add("WorkID12", workid); } else { sqlOfWhere1 = " WHERE (FID=" + dbStr + "FID11 OR WorkID=" + dbStr + "FID12 ) "; ps.Add("FID11", fid); ps.Add("FID12", fid); } string sql = ""; sql = "SELECT MAX(RDT) FROM ND" + int.Parse(fk_flow) + "Track " + sqlOfWhere1; sql = "SELECT RDT FROM ND" + int.Parse(fk_flow) + "Track WHERE RDT=(" + sql + ")"; ps.SQL = sql; try { return DBAccess.RunSQLReturnString(ps); } catch { // 处理track表. Track.CreateOrRepairTrackTable(fk_flow); return DBAccess.RunSQLReturnString(ps); } #endregion 获取track数据. } /// /// 查询 /// /// public string Search_Search() { string TSpan = this.GetRequestVal("TSpan"); string FK_Flow = this.GetRequestVal("FK_Flow"); GenerWorkFlows gwfs = new GenerWorkFlows(); QueryObject qo = new QueryObject(gwfs); qo.AddWhere(GenerWorkFlowAttr.Emps, " LIKE ", "%" + BP.Web.WebUser.No + "%"); if (!DataType.IsNullOrEmpty(TSpan)) { qo.addAnd(); qo.AddWhere(GenerWorkFlowAttr.TSpan, this.GetRequestVal("TSpan")); } if (!DataType.IsNullOrEmpty(FK_Flow)) { qo.addAnd(); qo.AddWhere(GenerWorkFlowAttr.FK_Flow, this.GetRequestVal("FK_Flow")); } qo.Top = 50; if (SystemConfig.AppCenterDBType == DBType.Oracle || SystemConfig.AppCenterDBType == DBType.PostgreSQL || SystemConfig.AppCenterDBType == DBType.UX || SystemConfig.AppCenterDBType == DBType.KingBaseR3 || SystemConfig.AppCenterDBType == DBType.KingBaseR6) { qo.DoQuery(); DataTable dt = gwfs.ToDataTableField("Ens"); return BP.Tools.Json.ToJson(dt); } else { DataTable dt = qo.DoQueryToTable(); return BP.Tools.Json.ToJson(dt); } } #endregion } }