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; namespace BP.WF.Template { /// /// 属性 /// public class SysFormTreeAttr : EntityTreeAttr { /// /// 数据源 /// public const string DBSrc = "DBSrc"; /// /// 是否是目录 /// public const string IsDir = "IsDir"; /// /// 组织编号 /// public const string OrgNo = "OrgNo"; } /// /// 独立表单树 /// public class SysFormTree : EntityTree { #region 属性. /// /// 是否是目录 /// public bool IsDir { get { return this.GetValBooleanByKey(SysFormTreeAttr.IsDir); } set { this.SetValByKey(SysFormTreeAttr.IsDir, value); } } /// /// 序号 /// public int Idx { get { return this.GetValIntByKey(SysFormTreeAttr.Idx); } set { this.SetValByKey(SysFormTreeAttr.Idx, value); } } /// /// 父节点编号 /// public string ParentNo { get { return this.GetValStringByKey(SysFormTreeAttr.ParentNo); } set { this.SetValByKey(SysFormTreeAttr.ParentNo, value); } } /// /// 组织编号 /// public string OrgNo { get { return this.GetValStringByKey(SysFormTreeAttr.OrgNo); } set { this.SetValByKey(SysFormTreeAttr.OrgNo, value); } } #endregion 属性. #region 构造方法 /// /// 独立表单树 /// public SysFormTree() { } /// /// 独立表单树 /// /// public SysFormTree(string _No) : base(_No) { } #endregion #region 系统方法. /// /// 独立表单树Map /// public override Map EnMap { get { if (this._enMap != null) return this._enMap; Map map = new Map("Sys_FormTree", "表单树"); //map.CodeStruct = "2"; map.DepositaryOfEntity = Depositary.None; map.DepositaryOfMap = Depositary.Application; map.AddTBStringPK(SysFormTreeAttr.No, null, "编号", true, true, 1, 50, 40); map.AddTBString(SysFormTreeAttr.Name, null, "名称", true, false, 0, 100, 30); map.AddTBString(SysFormTreeAttr.ParentNo, null, "父节点编号", false, false, 0, 100, 40); map.AddTBInt(SysFormTreeAttr.Idx, 0, "Idx", false, false); map.AddTBString(SysFormTreeAttr.OrgNo, null, "组织编号", false, false, 0, 50, 30); this._enMap = map; return this._enMap; } } public string DoCreateSameLevelFormNodeMy(string name) { EntityTree en = this.DoCreateSameLevelNode(name); en.Name = name; en.Update(); return en.No; } /// /// 创建下级目录. /// /// /// public string DoCreateSubFormNodeMy(string name) { EntityTree en = this.DoCreateSubNode(name); en.Name = name; en.Update(); return en.No; } #endregion 系统方法. /// /// 组织编号 /// /// protected override bool beforeInsert() { if (Glo.CCBPMRunModel != CCBPMRunModel.Single) this.OrgNo = BP.Web.WebUser.OrgNo; if (DataType.IsNullOrEmpty(this.No) == true) this.No = DBAccess.GenerOID(this.ToString()).ToString(); return base.beforeInsert(); } protected override bool beforeDelete() { string sql = "SELECT COUNT(*) as Num FROM Sys_MapData WHERE FK_FormTree='" + this.No + "'"; int num = DBAccess.RunSQLReturnValInt(sql); if (num != 0) throw new Exception("err@您不能删除该目录,下面有表单。"); if (!DataType.IsNullOrEmpty(this.No)) DeleteChild(this.No); return base.beforeDelete(); } /// /// 删除子项 /// /// private void DeleteChild(string parentNo) { SysFormTrees formTrees = new SysFormTrees(); formTrees.RetrieveByAttr(SysFormTreeAttr.ParentNo, parentNo); foreach (SysFormTree item in formTrees) { MapData md = new MapData(); md.FK_FormTree = item.No; md.Delete(); DeleteChild(item.No); } } public string DoCreateSameLevelNodeIt(string name) { SysFormTree en = new SysFormTree(); en.Copy(this); en.No = DBAccess.GenerGUID(10); en.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) { OAFrmTree oatree = new OAFrmTree(); oatree.FK_Emp = BP.Web.WebUser.No; oatree.OrgNo = BP.Web.WebUser.OrgNo; oatree.SetValByKey("RefOrgAdminer", oatree.OrgNo + "_" + oatree.FK_Emp); oatree.SetValByKey("FrmTreeNo", en.No); oatree.Insert(); } } return en.No; } public string DoCreateSubNodeIt(string name) { SysFormTree en = new SysFormTree(); en.Copy(this); en.No = DBAccess.GenerGUID(10); en.ParentNo = this.No; en.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) { OAFrmTree oatree = new OAFrmTree(); oatree.FK_Emp = BP.Web.WebUser.No; oatree.OrgNo = BP.Web.WebUser.OrgNo; oatree.SetValByKey("RefOrgAdminer", oatree.OrgNo + "_" + oatree.FK_Emp); oatree.SetValByKey("FrmTreeNo", en.No); oatree.Insert(); } } return en.No; } public void DoUp() { this.DoOrderUp(SysFormTreeAttr.ParentNo, this.ParentNo, SysFormTreeAttr.Idx); } public void DoDown() { this.DoOrderDown(SysFormTreeAttr.ParentNo, this.ParentNo, SysFormTreeAttr.Idx); } } /// /// 独立表单树 /// public class SysFormTrees : EntitiesTree { /// /// 独立表单树s /// public SysFormTrees() { } /// /// 得到它的 Entity /// public override Entity GetNewEntity { get { return new SysFormTree(); } } public override int RetrieveAll() { if (BP.Web.WebUser.No.Equals("admin") == true) return this.Retrieve(FlowSortAttr.Idx); if (Glo.CCBPMRunModel == CCBPMRunModel.GroupInc) return this.Retrieve(FlowSortAttr.OrgNo, BP.Web.WebUser.OrgNo, FlowSortAttr.Idx); if (Glo.CCBPMRunModel == CCBPMRunModel.Single) return this.Retrieve(FlowSortAttr.Idx); if (Glo.CCBPMRunModel == CCBPMRunModel.SAAS) return this.Retrieve(FlowSortAttr.OrgNo, BP.Web.WebUser.OrgNo, FlowSortAttr.Idx); int i = base.RetrieveAll(); if (i == 0) { SysFormTree fs = new SysFormTree(); fs.Name = "公文类"; fs.No = "01"; fs.Insert(); fs = new SysFormTree(); fs.Name = "办公类"; fs.No = "02"; fs.Insert(); i = base.RetrieveAll(); } return i; } #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((SysFormTree)this[i]); } return list; } #endregion 为了适应自动翻译成java的需要,把实体转换成List. } }