You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

613 lines
18 KiB
Plaintext

9 months ago
using System;
using System.Collections;
using BP.Sys;
using BP.DA;
using BP.En;
namespace BP.GPM
{
/// <summary>
/// 系统
/// </summary>
public class AppAttr : EntityNoNameAttr
{
/// <summary>
/// 顺序
/// </summary>
public const string Idx = "Idx";
/// <summary>
/// 应用类型
/// </summary>
public const string AppModel = "AppModel";
/// <summary>
/// UrlExt
/// </summary>
public const string UrlExt = "UrlExt";
/// <summary>
/// SubUrl
/// </summary>
public const string SubUrl = "SubUrl";
/// <summary>
/// 是否启用.
/// </summary>
public const string IsEnable = "IsEnable";
/// <summary>
/// FK_AppSort
/// </summary>
public const string FK_AppSort = "FK_AppSort";
/// <summary>
/// 关联菜单编号
/// </summary>
public const string RefMenuNo = "RefMenuNo";
/// <summary>
/// 用户控件ID
/// </summary>
public const string UidControl = "UidControl";
/// <summary>
/// 密码控件ID
/// </summary>
public const string PwdControl = "PwdControl";
/// <summary>
/// 提交方式
/// </summary>
public const string ActionType = "ActionType";
/// <summary>
/// 登录方式
/// </summary>
public const string SSOType = "SSOType";
/// <summary>
/// 备注
/// </summary>
public const string AppRemark = "AppRemark";
public const string OpenWay = "OpenWay";
}
/// <summary>
/// 系统
/// </summary>
public class App : EntityNoName
{
#region 属性
/// <summary>
/// 打开方式
/// </summary>
public string OpenWay
{
get
{
int openWay = 0;
switch (openWay)
{
case 0:
return "_blank";
case 1:
return this.No;
default:
return "";
}
}
}
/// <summary>
/// 路径
/// </summary>
public string WebPath
{
get
{
return this.GetValStringByKey("WebPath");
}
}
/// <summary>
/// ICON
/// </summary>
public string ICON
{
get
{
return this.WebPath;
}
set
{
this.SetValByKey("ICON", value);
}
}
/// <summary>
/// 连接
/// </summary>
public string Url
{
get
{
string url = this.GetValStrByKey(AppAttr.UrlExt);
if (DataType.IsNullOrEmpty(url)) return "";
if (this.SSOType.Equals("0"))//SID验证
{
string SID = DBAccess.RunSQLReturnStringIsNull("SELECT SID FROM Port_Emp WHERE No='" + Web.WebUser.No + "'", null);
if (url.Contains("?"))
url += "&UserNo=" + Web.WebUser.No + "&Token=" + SID;
else
url += "?UserNo=" + Web.WebUser.No + "&Token=" + SID;
}
return url;
}
set
{
this.SetValByKey(AppAttr.UrlExt, value);
}
}
/// <summary>
/// 跳转连接
/// </summary>
public string SubUrl
{
get
{
return this.GetValStrByKey(AppAttr.SubUrl);
}
set
{
this.SetValByKey(AppAttr.UrlExt, value);
}
}
/// <summary>
/// 是否启用
/// </summary>
public bool IsEnable
{
get
{
return this.GetValBooleanByKey(AppAttr.IsEnable);
}
set
{
this.SetValByKey(AppAttr.IsEnable, value);
}
}
/// <summary>
/// 顺序
/// </summary>
public int Idx
{
get
{
return this.GetValIntByKey(AppAttr.Idx);
}
set
{
this.SetValByKey(AppAttr.Idx, value);
}
}
/// <summary>
/// 用户控件ID
/// </summary>
public string UidControl
{
get
{
return this.GetValStrByKey(AppAttr.UidControl);
}
set
{
this.SetValByKey(AppAttr.UidControl, value);
}
}
/// <summary>
/// 密码控件ID
/// </summary>
public string PwdControl
{
get
{
return this.GetValStrByKey(AppAttr.PwdControl);
}
set
{
this.SetValByKey(AppAttr.PwdControl, value);
}
}
/// <summary>
/// 提交方式
/// </summary>
public string ActionType
{
get
{
return this.GetValStrByKey(AppAttr.ActionType);
}
set
{
this.SetValByKey(AppAttr.ActionType, value);
}
}
/// <summary>
/// 登录方式@0=SID验证@1=连接@2=表单提交
/// </summary>
public string SSOType
{
get
{
return this.GetValStrByKey(AppAttr.SSOType);
}
set
{
this.SetValByKey(AppAttr.SSOType, value);
}
}
public string FK_AppSort
{
get
{
return this.GetValStringByKey(AppAttr.FK_AppSort);
}
set
{
this.SetValByKey(AppAttr.FK_AppSort, value);
}
}
public string RefMenuNo
{
get
{
return this.GetValStringByKey(AppAttr.RefMenuNo);
}
set
{
this.SetValByKey(AppAttr.RefMenuNo, value);
}
}
#endregion
#region 按钮权限控制
public override UAC HisUAC
{
get
{
UAC uac = new UAC();
uac.OpenForAppAdmin();
return uac;
}
}
#endregion
#region 构造方法
/// <summary>
/// 系统
/// </summary>
public App()
{
}
/// <summary>
/// 系统
/// </summary>
/// <param name="no"></param>
public App(string no)
{
this.No = no;
this.Retrieve();
}
/// <summary>
/// EnMap
/// </summary>
public override Map EnMap
{
get
{
if (this._enMap != null)
return this._enMap;
Map map = new Map("GPM_App", "系统");
map.DepositaryOfEntity = Depositary.None;
map.DepositaryOfMap = Depositary.Application;
map.AddTBStringPK(AppAttr.No, null, "编号", true, false, 2, 30, 100);
map.AddDDLSysEnum(AppAttr.AppModel, 0, "应用类型", true, true, AppAttr.AppModel,
"@0=BS系统@1=CS系统");
map.AddTBString(AppAttr.Name, null, "名称", true, false, 0, 3900, 150, true);
map.AddDDLEntities(AppAttr.FK_AppSort, null, "类别", new AppSorts(), false);
map.AddBoolean(AppAttr.IsEnable, true, "启用?", true, true);
//map.AddTBString(AppAttr.UrlExt, null, "默认连接", true, false, 0, 3900, 100, true);
//map.AddTBString(AppAttr.SubUrl, null, "第二连接", true, false, 0, 3900, 100, true);
//map.AddTBString(AppAttr.UidControl, null, "用户名控件", true, false, 0, 100, 100);
//map.AddTBString(AppAttr.PwdControl, null, "密码控件", true, false, 0, 100, 100);
//map.AddDDLSysEnum(AppAttr.ActionType, 0, "提交类型", true, true, AppAttr.ActionType, "@0=GET@1=POST");
//map.AddDDLSysEnum(AppAttr.SSOType, 0, "登录方式", true, true, AppAttr.SSOType, "@0=SID验证@1=连接@2=表单提交@3=不传值");
//map.AddDDLSysEnum(AppAttr.OpenWay, 0, "打开方式", true, true, AppAttr.OpenWay,
// "@0=新窗口@1=本窗口@2=覆盖新窗口");
map.AddTBString(AppAttr.RefMenuNo, null, "关联菜单编号", true, false, 0, 300, 100);
map.AddTBString(AppAttr.AppRemark, null, "备注", true, false, 0, 500, 100, true);
map.AddTBInt(AppAttr.Idx, 0, "显示顺序", true, false);
map.AddMyFile("ICON");
//增加查询条件.
map.AddSearchAttr(AppAttr.FK_AppSort);
RefMethod rm = new RefMethod();
rm.Title = "编辑菜单";
rm.ClassMethodName = this.ToString() + ".DoMenu";
rm.RefMethodType = RefMethodType.LinkeWinOpen;
map.AddRefMethod(rm);
rm = new RefMethod();
rm.Title = "查看可访问该系统的人员";
rm.ClassMethodName = this.ToString() + ".DoWhoCanUseApp";
//map.AddRefMethod(rm);
rm = new RefMethod();
rm.Title = "刷新设置";
rm.ClassMethodName = this.ToString() + ".DoRef";
//map.AddRefMethod(rm);
rm = new RefMethod();
rm.Title = "第二连接";
//rm.Title = "第二连接:登录方式为不传值、连接不设置用户名密码转为第二连接。";
rm.ClassMethodName = this.ToString() + ".About";
// map.AddRefMethod(rm);
this._enMap = map;
return this._enMap;
}
}
#endregion
protected override bool beforeDelete()
{
Menu appMenu = new Menu(this.RefMenuNo);
if (appMenu != null && appMenu.Flag.Contains("Flow"))
throw new Exception("@删除失败,此项为工作流菜单,不能删除。");
// 删除该系统.
Menu menu = new Menu();
menu.Delete(MenuAttr.FK_App, this.No);
// 删除用户数据.
EmpMenu em = new EmpMenu();
em.Delete(MenuAttr.FK_App, this.No);
//EmpApp ea = new EmpApp();
//ea.Delete(MenuAttr.FK_App, this.No);
return base.beforeDelete();
}
protected override bool beforeUpdate()
{
if (DataType.IsNullOrEmpty(this.RefMenuNo) == false)
{
//系统类别
AppSort appSort = new AppSort(this.FK_AppSort);
Menu menu = new Menu(this.RefMenuNo);
menu.Name = this.Name;
menu.ParentNo = appSort.RefMenuNo;
menu.Update();
}
return base.beforeUpdate();
}
public void CheckPTable()
{
AppSort sort = new AppSort();
sort.CheckPhysicsTable();
App app = new App();
app.CheckPhysicsTable();
Menu en = new Menu();
en.CheckPhysicsTable();
}
protected override bool beforeInsert()
{
CheckPTable();
if (DataType.IsNullOrEmpty(this.Name) == true)
throw new Exception("err@系统名称不能为空.");
AppSort sort = new AppSort();
sort.No = this.FK_AppSort;
sort.Retrieve();
//求系统类别的菜单.
Menu menu = new Menu(sort.RefMenuNo);
// 创建子菜单. 系统的根目录.
Menu appMenu = menu.DoCreateSubNode() as Menu;
appMenu.FK_App = this.No;
appMenu.Name = this.Name;
appMenu.HisMenuType = MenuType.App;
appMenu.Update();
//设置相关的菜单编号.
this.RefMenuNo = appMenu.No;
#region 为该系统创建几个空白菜单
Menu dir = appMenu.DoCreateSubNode() as Menu;
dir.FK_App = this.No;
dir.Name = "流程管理";
dir.MenuType = MenuType.Dir;
dir.Update();
menu = dir.DoCreateSubNode() as Menu;
menu.Name = "发起";
menu.FK_App = this.No;
menu.MenuType = MenuType.Menu;
menu.UrlExt = "/WF/Start.htm";
menu.ParentNo = dir.No;
menu.Update();
menu = dir.DoCreateSubNode() as Menu;
menu.Name = "待办";
menu.FK_App = this.No;
menu.MenuType = MenuType.Menu;
menu.UrlExt = "/WF/Todolist.htm";
menu.ParentNo = dir.No;
menu.Update();
menu = dir.DoCreateSubNode() as Menu;
menu.Name = "在途";
menu.FK_App = this.No;
menu.MenuType = MenuType.Menu;
menu.UrlExt = "/WF/Runing.htm";
menu.ParentNo = dir.No;
menu.Update();
#endregion
Menu dir2 = appMenu.DoCreateSubNode() as Menu;
dir2.FK_App = this.No;
dir2.Name = "系统管理";
dir2.MenuType = MenuType.Dir;
dir2.Update();
menu = dir2.DoCreateSubNode() as Menu;
menu.Name = "部门";
menu.FK_App = this.No;
menu.MenuType = MenuType.Menu;
menu.UrlExt = "/WF/Comm/Tree.htm?EnsName=BP.GPM.Depts";
menu.ParentNo = dir2.No;
menu.Update();
menu = dir2.DoCreateSubNode() as Menu;
menu.Name = "人员";
menu.FK_App = this.No;
menu.MenuType = MenuType.Menu;
menu.UrlExt = "/WF/Comm/Search.htm?EnsName=BP.GPM.Emps";
menu.ParentNo = dir2.No;
menu.Update();
menu = dir2.DoCreateSubNode() as Menu;
menu.Name = "岗位";
menu.FK_App = this.No;
menu.MenuType = MenuType.Menu;
menu.UrlExt = "/WF/Comm/Search.htm?EnsName=BP.Port.Stations";
menu.ParentNo = dir2.No;
menu.Update();
return base.beforeInsert();
}
/// <summary>
/// 为BPM初始化菜单.
/// </summary>
public static void InitBPMMenu()
{
AppSort sort = new AppSort();
sort.No = "01";
if (sort.RetrieveFromDBSources() == 0)
{
sort.Name = "应用系统";
sort.RefMenuNo = "2000";
sort.Insert();
}
App app = new App();
app.No = "农芯BPM";
app.Name = "BPM系统";
app.FK_AppSort = "01";
app.Insert();
}
/// <summary>
/// 信息介绍
/// </summary>
/// <returns></returns>
public string About()
{
return null;
}
/// <summary>
/// 打开菜单
/// </summary>
/// <returns></returns>
public string DoMenu()
{
return "../../../WF/Comm/Tree.htm?EnsName=BP.GPM.Menus&ParentNo=" + this.RefMenuNo;
}
/// <summary>
/// 刷新数据.
/// </summary>
public void RefData()
{
//删除数据.
EmpMenus mymes = new EmpMenus();
mymes.Delete(EmpMenuAttr.FK_App, this.No);
//删除系统.
EmpApps empApps = new EmpApps();
empApps.Delete(EmpMenuAttr.FK_App, this.No);
//查询出来菜单.
Menus menus = new Menus();
menus.Retrieve(EmpMenuAttr.FK_App, this.No);
//查询出来人员.
Emps emps = new Emps();
emps.RetrieveAllFromDBSource();
foreach (Emp emp in emps)
{
#region 初始化系统访问权限.
EmpApp me = new EmpApp();
me.Copy(this);
me.FK_Emp = emp.No;
me.FK_App = this.No;
me.setMyPK(this.No + "_" + me.FK_Emp);
me.Insert();
#endregion 初始化系统访问权限.
}
}
}
/// <summary>
/// 系统s
/// </summary>
public class Apps : EntitiesNoName
{
#region 构造
/// <summary>
/// 系统s
/// </summary>
public Apps()
{
}
/// <summary>
/// 得到它的 Entity
/// </summary>
public override Entity GetNewEntity
{
get
{
return new App();
}
}
#endregion
#region 为了适应自动翻译成java的需要,把实体转换成List.
/// <summary>
/// 转化成 java list,C#不能调用.
/// </summary>
/// <returns>List</returns>
public System.Collections.Generic.IList<App> ToJavaList()
{
return (System.Collections.Generic.IList<App>)this;
}
/// <summary>
/// 转化成list
/// </summary>
/// <returns>List</returns>
public System.Collections.Generic.List<App> Tolist()
{
System.Collections.Generic.List<App> list = new System.Collections.Generic.List<App>();
for (int i = 0; i < this.Count; i++)
{
list.Add((App)this[i]);
}
return list;
}
#endregion 为了适应自动翻译成java的需要,把实体转换成List.
}
}