using System; using System.Data; using System.Collections; using BP.DA; using BP.En; using BP.Port; using BP.Sys; using BP.Difference; using BP.WF.Port.Admin2Group; using BP.Web; namespace BP.WF.Template { /// /// 流程类别属性 /// public class FlowSortAttr : EntityTreeAttr { /// /// 组织编号 /// public const string OrgNo = "OrgNo"; /// /// 简称 /// public const string ShortName = "ShortName"; /// /// 域/系统编号 /// public const string Domain = "Domain"; } /// /// 流程类别 /// public class FlowSort : EntityTree { #region 属性. /// /// 组织编号 /// public string OrgNo { get { return this.GetValStrByKey(FlowSortAttr.OrgNo); } set { this.SetValByKey(FlowSortAttr.OrgNo, value); } } public string Domain { get { return this.GetValStrByKey(FlowSortAttr.Domain); } set { this.SetValByKey(FlowSortAttr.Domain, value); } } #endregion 属性. #region 构造方法 /// /// 流程类别 /// public FlowSort() { } /// /// 流程类别 /// /// public FlowSort(string _No) : base(_No) { } public override UAC HisUAC { get { UAC uac = new UAC(); uac.IsDelete = false; uac.IsInsert = false; uac.IsUpdate = true; return uac; } } #endregion /// /// 流程类别Map /// public override Map EnMap { get { if (this._enMap != null) return this._enMap; Map map = new Map("WF_FlowSort", "流程类别"); map.AddTBStringPK(FlowSortAttr.No, null, "编号", false, false, 1, 100, 20); map.AddTBString(FlowSortAttr.ParentNo, null, "父节点No", false, false, 0, 100, 30); map.AddTBString(FlowSortAttr.Name, null, "名称", true, false, 0, 200, 30, true); map.AddTBString(FlowSortAttr.ShortName, null, "简称", true, false, 0, 200, 30, true); map.AddTBString(FlowSortAttr.OrgNo, "0", "组织编号(0为系统组织)", false, false, 0, 150, 30); map.SetHelperAlert(FlowSortAttr.OrgNo, "用于区分不同组织的的流程,比如:一个集团有多个子公司,每个子公司都有自己的业务流程."); map.AddTBString(FlowSortAttr.Domain, null, "域/系统编号", true, false, 0, 100, 30); map.SetHelperAlert(FlowSortAttr.Domain, "用于区分不同系统的流程,比如:一个集团有多个子系统每个子系统都有自己的流程,就需要标记那些流程是那个子系统的."); map.AddTBInt(FlowSortAttr.Idx, 0, "目录显示顺序(发起列表)", true, false); this._enMap = map; return this._enMap; } } #region 创建节点. /// /// 创建同级目录. /// /// /// public string DoCreateSameLevelNodeMy(string name) { //EntityTree en = this.DoCreateSameLevelNode(name); FlowSort en = new FlowSort(); en.Copy(this); en.SetValByKey(FlowSortAttr.No, DBAccess.GenerGUID(10)); en.SetValByKey(FlowSortAttr.Name, name); en.Insert(); if (SystemConfig.CCBPMRunModel == CCBPMRunModel.GroupInc && SystemConfig.GroupStationModel == 2) { //如果当前人员不是部门主要管理员 BP.WF.Admin.Org org = new BP.WF.Admin.Org(BP.Web.WebUser.OrgNo); if (BP.Web.WebUser.No.Equals(org.Adminer) == false) { OAFlowSort oaSort = new OAFlowSort(); oaSort.FK_Emp = BP.Web.WebUser.No; oaSort.OrgNo = BP.Web.WebUser.OrgNo; oaSort.SetValByKey("RefOrgAdminer", oaSort.OrgNo + "_" + oaSort.FK_Emp); oaSort.SetValByKey("FlowSortNo", en.No); oaSort.Insert(); } } return en.No; } /// /// 创建下级目录. /// /// /// public string DoCreateSubNodeMy(string name) { //EntityTree en = this.DoCreateSubNode(name); FlowSort en = new FlowSort(); en.Copy(this); en.SetValByKey(FlowSortAttr.No, DBAccess.GenerGUID(10)); en.SetValByKey(FlowSortAttr.ParentNo, this.No); en.SetValByKey(FlowSortAttr.Name, name); en.Insert(); if (SystemConfig.CCBPMRunModel == CCBPMRunModel.GroupInc && SystemConfig.GroupStationModel == 2) { //如果当前人员不是部门主要管理员 BP.WF.Admin.Org org = new BP.WF.Admin.Org(BP.Web.WebUser.OrgNo); if (BP.Web.WebUser.No.Equals(org.Adminer) == false) { OAFlowSort oaSort = new OAFlowSort(); oaSort.FK_Emp = BP.Web.WebUser.No; oaSort.OrgNo = BP.Web.WebUser.OrgNo; oaSort.SetValByKey("RefOrgAdminer", oaSort.OrgNo + "_" + oaSort.FK_Emp); oaSort.SetValByKey("FlowSortNo", en.No); oaSort.Insert(); } } return en.No; } #endregion 创建节点. /// /// 创建的时候,给他增加一个OrgNo。 /// /// protected override bool beforeInsert() { if (DataType.IsNullOrEmpty(this.OrgNo) == true && Glo.CCBPMRunModel != CCBPMRunModel.Single) this.SetValByKey("OrgNo", BP.Web.WebUser.OrgNo); return base.beforeInsert(); } protected override bool beforeUpdate() { //更新流程引擎控制表. string sql = "UPDATE WF_GenerWorkFlow SET Domain='" + this.Domain + "' WHERE FK_FlowSort='" + this.No + "'"; DBAccess.RunSQL(sql); // sql = "UPDATE WF_Flow SET Domain='" + this.Domain + "' WHERE FK_FlowSort='" + this.No + "'"; //DBAccess.RunSQL(sql); if (Glo.CCBPMRunModel == CCBPMRunModel.Single) sql = "UPDATE WF_Emp SET StartFlows='' "; else sql = "UPDATE WF_Emp SET StartFlows='' "; DBAccess.RunSQL(sql); return base.beforeUpdate(); } /// /// 删除之前的逻辑 /// /// protected override bool beforeDelete() { //检查是否有流程? Paras ps = new Paras(); ps.SQL = "SELECT COUNT(*) FROM WF_Flow WHERE FK_FlowSort=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "fk_flowSort"; ps.Add("fk_flowSort", this.No); //string sql = "SELECT COUNT(*) FROM WF_Flow WHERE FK_FlowSort='" + fk_flowSort + "'"; if (DBAccess.RunSQLReturnValInt(ps) != 0) throw new Exception("err@该目录下有流程,您不能删除。"); //检查是否有子目录? ps = new Paras(); ps.SQL = "SELECT COUNT(*) FROM WF_FlowSort WHERE ParentNo=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "ParentNo"; ps.Add("ParentNo", this.No); //sql = "SELECT COUNT(*) FROM WF_FlowSort WHERE ParentNo='" + fk_flowSort + "'"; if (DBAccess.RunSQLReturnValInt(ps) != 0) throw new Exception("err@该目录下有子目录,您不能删除..."); return base.beforeDelete(); } } /// /// 流程类别 /// public class FlowSorts : EntitiesTree { /// /// 流程类别s /// public FlowSorts() { } /// /// 得到它的 Entity /// public override Entity GetNewEntity { get { return new FlowSort(); } } /// /// 初始化数据. /// private void InitData() { FlowSort fs = new FlowSort(); if (SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS) { fs.setName("流程树"); fs.setNo(BP.Web.WebUser.OrgNo); fs.setParentNo("100"); fs.SetValByKey("OrgNo", BP.Web.WebUser.OrgNo); fs.Save(); //@hongyan. fs = new FlowSort(); fs.setName("公文类"); fs.setNo(DBAccess.GenerGUID()); fs.setParentNo(BP.Web.WebUser.OrgNo); fs.SetValByKey("OrgNo", BP.Web.WebUser.OrgNo); fs.Insert(); fs = new FlowSort(); fs.setName("办公类"); fs.setNo(DBAccess.GenerGUID()); fs.setParentNo(BP.Web.WebUser.OrgNo); fs.SetValByKey("OrgNo", BP.Web.WebUser.OrgNo); fs.Insert(); return; } fs = new FlowSort(); fs.Name = "流程树"; fs.No = "100"; fs.ParentNo = "0"; fs.SetValByKey("OrgNo", BP.Web.WebUser.OrgNo); fs.Insert(); fs = new FlowSort(); fs.setName("办公类"); fs.setNo("01"); fs.setParentNo("100"); fs.SetValByKey("OrgNo", BP.Web.WebUser.OrgNo); fs.Insert(); fs = new FlowSort(); fs.setName("公文类"); fs.setNo("01"); fs.setParentNo("100"); fs.SetValByKey("OrgNo", BP.Web.WebUser.OrgNo); fs.Insert(); } /// /// 查询全部. /// /// public override int RetrieveAll() { if (BP.Web.WebUser.No.Equals("admin") == true) return this.RetrieveAll(FlowSortAttr.Idx); if (BP.Web.WebUser.IsAdmin == false) throw new Exception("err@您不是管理员."); //if (Glo.CCBPMRunModel != CCBPMRunModel.Single) //{ // OrgAdminer oa = new OrgAdminer(); // oa.MyPK = WebUser.OrgNo + "_" + WebUser.UserID; // // oa.ret //} var num = 0; if (Glo.CCBPMRunModel == CCBPMRunModel.Single) num = this.Retrieve(FlowSortAttr.Idx); if (Glo.CCBPMRunModel == CCBPMRunModel.GroupInc) num = this.Retrieve(FlowSortAttr.OrgNo, BP.Web.WebUser.OrgNo, FlowSortAttr.Idx); if (Glo.CCBPMRunModel == CCBPMRunModel.SAAS) num = this.Retrieve(FlowSortAttr.OrgNo, BP.Web.WebUser.OrgNo, FlowSortAttr.Idx); if (num == 0) { InitData(); return this.RetrieveAll(); } return num; } #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((FlowSort)this[i]); } return list; } #endregion 为了适应自动翻译成java的需要,把实体转换成List. } }