using System; using System.Data; using BP.DA; using BP.Sys; using BP.En; namespace BP.WF.Data { /// /// 我授权的流程 /// public class MyAuthtoAttr { #region 基本属性 /// /// 工作ID /// public const string WorkID = "WorkID"; /// /// 工作流 /// public const string FK_Flow = "FK_Flow"; /// /// 流程状态 /// public const string WFState = "WFState"; /// /// 流程状态(简单) /// public const string WFSta = "WFSta"; /// /// TSpan /// public const string TSpan = "TSpan"; /// /// 标题 /// public const string Title = "Title"; /// /// 发起人 /// public const string Starter = "Starter"; /// /// 产生时间 /// public const string RDT = "RDT"; /// /// 完成时间 /// public const string CDT = "CDT"; /// /// 得分 /// public const string Cent = "Cent"; /// /// 当前工作到的节点. /// public const string FK_Node = "FK_Node"; /// /// 当前工作角色 /// public const string FK_Station = "FK_Station"; /// /// 部门 /// public const string FK_Dept = "FK_Dept"; /// /// 流程ID /// public const string FID = "FID"; /// /// 是否启用 /// public const string IsEnable = "IsEnable"; /// /// 流程名称 /// public const string FlowName = "FlowName"; /// /// 发起人名称 /// public const string StarterName = "StarterName"; /// /// 节点名称 /// public const string NodeName = "NodeName"; /// /// 部门名称 /// public const string DeptName = "DeptName"; /// /// 流程类别 /// public const string FK_FlowSort = "FK_FlowSort"; /// /// 优先级 /// public const string PRI = "PRI"; /// /// 流程应完成时间 /// public const string SDTOfFlow = "SDTOfFlow"; /// /// 节点应完成时间 /// public const string SDTOfNode = "SDTOfNode"; /// /// 父流程ID /// public const string PWorkID = "PWorkID"; /// /// 父流程编号 /// public const string PFlowNo = "PFlowNo"; /// /// 父流程节点 /// public const string PNodeID = "PNodeID"; /// /// 子流程的调用人. /// public const string PEmp = "PEmp"; /// /// 客户编号(对于客户发起的流程有效) /// public const string GuestNo = "GuestNo"; /// /// 客户名称 /// public const string GuestName = "GuestName"; /// /// 单据编号 /// public const string BillNo = "BillNo"; /// /// 备注 /// public const string FlowNote = "FlowNote"; /// /// 待办人员 /// public const string TodoEmps = "TodoEmps"; /// /// 待办人员数量 /// public const string TodoEmpsNum = "TodoEmpsNum"; /// /// 任务状态 /// public const string TaskSta = "TaskSta"; /// /// 临时存放的参数 /// public const string AtPara = "AtPara"; /// /// 参与人 /// public const string Emps = "Emps"; /// /// GUID /// public const string GUID = "GUID"; #endregion } /// /// 我授权的流程 /// public class MyAuthto : Entity { #region 基本属性 public override UAC HisUAC { get { UAC uac = new UAC(); uac.Readonly(); uac.IsExp = UserRegedit.HaveRoleForExp(this.ToString()); return uac; } } /// /// 主键 /// public override string PK { get { return MyAuthtoAttr.WorkID; } } /// /// 备注 /// public string FlowNote { get { return this.GetValStrByKey(MyAuthtoAttr.FlowNote); } set { SetValByKey(MyAuthtoAttr.FlowNote, value); } } /// /// 工作流程编号 /// public string FlowNo { get { return this.GetValStrByKey(MyAuthtoAttr.FK_Flow); } set { SetValByKey(MyAuthtoAttr.FK_Flow, value); } } /// /// BillNo /// public string BillNo { get { return this.GetValStrByKey(MyAuthtoAttr.BillNo); } set { SetValByKey(MyAuthtoAttr.BillNo, value); } } /// /// 流程名称 /// public string FlowName { get { return this.GetValStrByKey(MyAuthtoAttr.FlowName); } set { SetValByKey(MyAuthtoAttr.FlowName, value); } } /// /// 优先级 /// public int PRI { get { return this.GetValIntByKey(MyAuthtoAttr.PRI); } set { SetValByKey(MyAuthtoAttr.PRI, value); } } /// /// 待办人员数量 /// public int TodoEmpsNum { get { return this.GetValIntByKey(MyAuthtoAttr.TodoEmpsNum); } set { SetValByKey(MyAuthtoAttr.TodoEmpsNum, value); } } /// /// 待办人员列表 /// public string TodoEmps { get { return this.GetValStrByKey(MyAuthtoAttr.TodoEmps); } set { SetValByKey(MyAuthtoAttr.TodoEmps, value); } } /// /// 参与人 /// public string Emps { get { return this.GetValStrByKey(MyAuthtoAttr.Emps); } set { SetValByKey(MyAuthtoAttr.Emps, value); } } /// /// 状态 /// public TaskSta TaskSta { get { return (TaskSta)this.GetValIntByKey(MyAuthtoAttr.TaskSta); } set { SetValByKey(MyAuthtoAttr.TaskSta, (int)value); } } /// /// 类别编号 /// public string FlowSortNo { get { return this.GetValStrByKey(MyAuthtoAttr.FK_FlowSort); } set { SetValByKey(MyAuthtoAttr.FK_FlowSort, value); } } /// /// 部门编号 /// public string DeptNo { get { return this.GetValStrByKey(MyAuthtoAttr.FK_Dept); } set { SetValByKey(MyAuthtoAttr.FK_Dept, value); } } /// /// 标题 /// public string Title { get { return this.GetValStrByKey(MyAuthtoAttr.Title); } set { SetValByKey(MyAuthtoAttr.Title, value); } } /// /// 客户编号 /// public string GuestNo { get { return this.GetValStrByKey(MyAuthtoAttr.GuestNo); } set { SetValByKey(MyAuthtoAttr.GuestNo, value); } } /// /// 客户名称 /// public string GuestName { get { return this.GetValStrByKey(MyAuthtoAttr.GuestName); } set { SetValByKey(MyAuthtoAttr.GuestName, value); } } /// /// 产生时间 /// public string RDT { get { return this.GetValStrByKey(MyAuthtoAttr.RDT); } set { SetValByKey(MyAuthtoAttr.RDT, value); } } /// /// 节点应完成时间 /// public string SDTOfNode { get { return this.GetValStrByKey(MyAuthtoAttr.SDTOfNode); } set { SetValByKey(MyAuthtoAttr.SDTOfNode, value); } } /// /// 流程应完成时间 /// public string SDTOfFlow { get { return this.GetValStrByKey(MyAuthtoAttr.SDTOfFlow); } set { SetValByKey(MyAuthtoAttr.SDTOfFlow, value); } } /// /// 流程ID /// public Int64 WorkID { get { return this.GetValInt64ByKey(MyAuthtoAttr.WorkID); } set { SetValByKey(MyAuthtoAttr.WorkID, value); } } /// /// 主线程ID /// public Int64 FID { get { return this.GetValInt64ByKey(MyAuthtoAttr.FID); } set { SetValByKey(MyAuthtoAttr.FID, value); } } /// /// 父节点流程编号. /// public Int64 PWorkID { get { return this.GetValInt64ByKey(MyAuthtoAttr.PWorkID); } set { SetValByKey(MyAuthtoAttr.PWorkID, value); } } /// /// 父流程调用的节点 /// public int PNodeID { get { return this.GetValIntByKey(MyAuthtoAttr.PNodeID); } set { SetValByKey(MyAuthtoAttr.PNodeID, value); } } /// /// PFlowNo /// public string PFlowNo { get { return this.GetValStrByKey(MyAuthtoAttr.PFlowNo); } set { SetValByKey(MyAuthtoAttr.PFlowNo, value); } } /// /// 吊起子流程的人员 /// public string PEmp { get { return this.GetValStrByKey(MyAuthtoAttr.PEmp); } set { SetValByKey(MyAuthtoAttr.PEmp, value); } } /// /// 发起人 /// public string Starter { get { return this.GetValStrByKey(MyAuthtoAttr.Starter); } set { SetValByKey(MyAuthtoAttr.Starter, value); } } /// /// 发起人名称 /// public string StarterName { get { return this.GetValStrByKey(MyAuthtoAttr.StarterName); } set { this.SetValByKey(MyAuthtoAttr.StarterName, value); } } /// /// 发起人部门名称 /// public string DeptName { get { return this.GetValStrByKey(MyAuthtoAttr.DeptName); } set { this.SetValByKey(MyAuthtoAttr.DeptName, value); } } /// /// 当前节点名称 /// public string NodeName { get { return this.GetValStrByKey(MyAuthtoAttr.NodeName); } set { this.SetValByKey(MyAuthtoAttr.NodeName, value); } } /// /// 当前工作到的节点 /// public int NodeID { get { return this.GetValIntByKey(MyAuthtoAttr.FK_Node); } set { SetValByKey(MyAuthtoAttr.FK_Node, value); } } /// /// 工作流程状态 /// public WFState WFState { get { return (WFState)this.GetValIntByKey(MyAuthtoAttr.WFState); } set { if (value == BP.WF.WFState.Complete) SetValByKey(MyAuthtoAttr.WFSta, (int)WFSta.Complete); else if (value == BP.WF.WFState.Delete) SetValByKey(MyAuthtoAttr.WFSta, (int)WFSta.Etc); else SetValByKey(MyAuthtoAttr.WFSta, (int)WFSta.Runing); SetValByKey(MyAuthtoAttr.WFState, (int)value); } } /// /// 状态(简单) /// public WFSta WFSta { get { return (WFSta)this.GetValIntByKey(MyAuthtoAttr.WFSta); } set { SetValByKey(MyAuthtoAttr.WFSta, (int)value); } } public string WFStateText { get { BP.WF.WFState ws = (WFState)this.WFState; switch (ws) { case WF.WFState.Complete: return "已完成"; case WF.WFState.Runing: return "在运行"; case WF.WFState.Hungup: return "挂起"; case WF.WFState.Askfor: return "加签"; default: return "未判断"; } } } /// /// GUID /// public string GUID { get { return this.GetValStrByKey(MyAuthtoAttr.GUID); } set { SetValByKey(MyAuthtoAttr.GUID, value); } } #endregion #region 参数属性. public string Paras_ToNodes { get { return this.GetParaString("ToNodes"); } set { this.SetPara("ToNodes", value); } } /// /// 加签信息 /// public string Paras_AskForReply { get { return this.GetParaString("AskForReply"); } set { this.SetPara("AskForReply", value); } } #endregion 参数属性. #region 构造函数 /// /// 我授权的流程 /// public MyAuthto() { } /// /// 我授权的流程 /// /// 工作ID public MyAuthto(Int64 workId) { this.WorkID = workId; this.Retrieve(); } /// /// 重写基类方法 /// public override Map EnMap { get { if (this._enMap != null) return this._enMap; Map map = new Map("WF_GenerWorkFlow", "我授权的流程"); map.setEnType(EnType.View); map.AddTBIntPK(MyAuthtoAttr.WorkID, 0, "WorkID", false, false); map.AddTBString(MyAuthtoAttr.Title, null, "标题", true, false, 0, 300, 200, true); map.AddDDLEntities(MyAuthtoAttr.FK_Flow, null, "流程", new Flows(), false); map.AddTBString(MyAuthtoAttr.BillNo, null, "单据编号", true, true, 0, 100, 50); map.AddTBInt(MyAuthtoAttr.FK_Node, 0, "节点编号", false, false); map.AddDDLSysEnum(MyAuthtoAttr.WFSta, 0, "状态", true, true, MyAuthtoAttr.WFSta, "@0=运行中@1=已完成@2=其他"); map.AddTBString(MyAuthtoAttr.Starter, null, "发起人", false, false, 0, 100, 100); map.AddTBDate(MyAuthtoAttr.RDT, "发起日期", true, true); map.AddTBString(MyAuthtoAttr.NodeName, null, "停留节点", true, true, 0, 100, 100, false); map.AddTBString(MyAuthtoAttr.TodoEmps, null, "当前处理人", true, false, 0, 100, 100, false); map.AddTBString(MyFlowAttr.Emps, null, "参与人", false, false, 0, 4000, 100, true); // map.AddDDLSysEnum(MyFlowAttr.TSpan, 0, "时间段", true, false, MyFlowAttr.TSpan, "@0=本周@1=上周@2=两周以前@3=三周以前@4=更早"); //隐藏字段. map.AddTBInt(MyAuthtoAttr.WFState, 0, "状态", false, false); map.AddTBInt(MyAuthtoAttr.FID, 0, "FID", false, false); map.AddTBInt(MyFlowAttr.PWorkID, 0, "PWorkID", false, false); map.AddTBString(MyFlowAttr.AtPara, null, "AtPara", false, false, 0, 4000, 100, false); map.AddSearchAttr(MyAuthtoAttr.WFSta); map.DTSearchWay = DTSearchWay.ByDate; map.DTSearchLabel = "发起日期"; map.DTSearchKey = MyAuthtoAttr.RDT; #region 增加多个隐藏条件. ////我授权的流程. //SearchNormal search = new SearchNormal(MyAuthtoAttr.Starter, "发起人", // MyAuthtoAttr.Starter, "=", BP.Web.WebUser.No, 0, true); //map.SearchNormals.Add(search); //search = new SearchNormal(MyAuthtoAttr.WFState, "流程状态", // MyAuthtoAttr.WFState, " not in", "('0')", 0, true); //map.SearchNormals.Add(search); SearchNormal search = new SearchNormal(MyAuthtoAttr.AtPara, "授权人", MyAuthtoAttr.AtPara, " LIKE ", " '%@Auth="+BP.Web.WebUser.Name+"%' ", 0, true); map.SearchNormals.Add(search); #endregion 增加多个隐藏条件. RefMethod rm = new RefMethod(); rm.Title = "轨迹"; rm.ClassMethodName = this.ToString() + ".DoTrack"; rm.RefMethodType = RefMethodType.LinkeWinOpen; rm.Icon = "../../WF/Img/Track.png"; rm.ItIsForEns = true; map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "表单"; rm.ClassMethodName = this.ToString() + ".DoForm"; rm.Icon = "../../WF/Img/Form.png"; rm.RefMethodType = RefMethodType.LinkeWinOpen; rm.ItIsForEns = true; map.AddRefMethod(rm); //rm = new RefMethod(); //rm.Title = "打印表单"; //rm.ClassMethodName = this.ToString() + ".DoPrintFrm"; //rm.RefMethodType = RefMethodType.LinkeWinOpen; //rm.ItIsForEns = false; //map.AddRefMethod(rm); this._enMap = map; return this._enMap; } } #endregion #region 执行诊断 public string DoPrintFrm() { return "../../WorkOpt/Packup.htm?FileType=zip,pdf&WorkID=" + this.WorkID + "&FK_Flow=" + this.FlowNo + "&NodeID=" + this.NodeID + "&FK_Node=" + this.NodeID; } public string DoTrack() { return "../../WFRpt.htm?CurrTab=Truck&WorkID=" + this.WorkID + "&FID=" + this.FID + "&FK_Flow=" + this.FlowNo + "&FK_Node=" + this.NodeID; } /// /// 打开表单 /// /// public string DoForm() { return "../MyViewGener.htm?HttpHandlerName=BP.WF.HttpHandler.WF_MyView&WorkID="+this.WorkID+"&NodeID="+this.NodeID+"&FK_Node=" + this.NodeID + "&FID=" + this.FID + "&UserNo="+BP.Web.WebUser.No+"&FK_Flow=" + this.FlowNo; } /// /// 打开最后一个节点表单 /// /// public string DoOpenLastForm() { Paras pss = new Paras(); pss.SQL = "SELECT MYPK FROM ND" + int.Parse(this.FlowNo) + "Track WHERE ActionType=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "ActionType AND WorkID=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "WorkID ORDER BY RDT DESC"; pss.Add("ActionType", (int)BP.WF.ActionType.Forward); pss.Add("WorkID", this.WorkID); DataTable dt = DBAccess.RunSQLReturnTable(pss); if (dt != null && dt.Rows.Count > 0) { string myPk = dt.Rows[0][0].ToString(); return "/WF/WFRpt.htm?CurrTab=Frm&WorkID=" + this.WorkID + "&FK_Flow=" + this.FlowNo + "&FK_Node=" + this.NodeID + "&DoType=View&MyPK=" + myPk + "&PWorkID=" + this.PWorkID; } Node nd = new Node(this.NodeID); nd.WorkID = this.WorkID; //为获取表单ID ( NodeFrmID )提供参数. return "/WF/CCForm/FrmGener.htm?WorkID=" + this.WorkID + "&FK_Flow=" + this.FlowNo + "&FK_MapData=" + nd.NodeFrmID + "&ReadOnly=1&IsEdit=0"; } #endregion } /// /// 我授权的流程s /// public class MyAuthtos : Entities { #region 方法. /// /// 得到它的 Entity /// public override Entity GetNewEntity { get { return new MyAuthto(); } } /// /// 我授权的流程集合 /// public MyAuthtos() { } #endregion #region 为了适应自动翻译成java的需要,把实体转换成List. /// /// 转化成 java list,C#不能调用. /// /// List public System.Collections.Generic.IList ToJavaList() { return (System.Collections.Generic.IList)this; } /// /// 转化成list /// /// List public System.Collections.Generic.List Tolist() { System.Collections.Generic.List list = new System.Collections.Generic.List(); for (int i = 0; i < this.Count; i++) { list.Add((MyAuthto)this[i]); } return list; } #endregion 为了适应自动翻译成java的需要,把实体转换成List. } }