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.

436 lines
13 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Data;
using BP.DA;
using BP.En;
using BP.Web;
using BP.Port;
namespace BP.Cloud
{
/// <summary>
/// 部门属性
/// </summary>
public class DeptAttr : EntityTreeAttr
{
/// <summary>
/// 单位全名
/// </summary>
public const string NameOfPath = "NameOfPath";
/// <summary>
/// 管理员
/// </summary>
public const string Adminer = "Adminer";
/// <summary>
/// 组织编号
/// </summary>
public const string OrgNo = "OrgNo";
/// <summary>
/// 部门ID
/// </summary>
public const string RefID = "RefID";
/// <summary>
/// 关联的父节点ID
/// </summary>
public const string RefParentID = "RefParentID";
/// <summary>
/// 部门主管
/// </summary>
public const string Leader = "Leader";
}
/// <summary>
/// 部门
/// </summary>
public class Dept : EntityTree
{
#region 属性
/// <summary>
/// 组织编号
/// </summary>
public string OrgNo
{
get
{
return this.GetValStrByKey(DeptAttr.OrgNo);
}
set
{
this.SetValByKey(DeptAttr.OrgNo, value);
}
}
/// <summary>
/// 领导
/// </summary>
public string Leader
{
get
{
return this.GetValStrByKey(DeptAttr.Leader);
}
set
{
this.SetValByKey(DeptAttr.Leader, value);
}
}
/// <summary>
/// 部门ID
/// </summary>
public string RefID
{
get
{
return this.GetValStrByKey(DeptAttr.RefID);
}
set
{
this.SetValByKey(DeptAttr.RefID, value);
}
}
public string RefParentID
{
get
{
return this.GetValStrByKey(DeptAttr.RefParentID);
}
set
{
this.SetValByKey(DeptAttr.RefParentID, value);
}
}
/// <summary>
/// adminer
/// </summary>
public string Adminer
{
get
{
return this.GetValStrByKey(DeptAttr.Adminer);
}
set
{
this.SetValByKey(DeptAttr.Adminer, value);
}
}
/// <summary>
/// 全名
/// </summary>
public string NameOfPath
{
get
{
return this.GetValStrByKey(DeptAttr.NameOfPath);
}
set
{
this.SetValByKey(DeptAttr.NameOfPath, value);
}
}
/// <summary>
/// 父节点的ID
/// </summary>
public new string ParentNo
{
get
{
return this.GetValStrByKey(DeptAttr.ParentNo);
}
set
{
this.SetValByKey(DeptAttr.ParentNo, value);
}
}
#endregion
#region 构造函数
/// <summary>
/// 部门
/// </summary>
public Dept() { }
/// <summary>
/// 部门
/// </summary>
/// <param name="no">编号</param>
public Dept(string no) : base(no) { }
#endregion
#region 重写方法
public override UAC HisUAC
{
get
{
UAC uac = new UAC();
uac.OpenForSysAdmin();
uac.IsInsert = false;
return uac;
}
}
/// <summary>
/// Map
/// </summary>
public override Map EnMap
{
get
{
if (this._enMap != null)
return this._enMap;
Map map = new Map("Port_Dept", "部门");
map.AddTBStringPK(DeptAttr.No, null, "编号", true, true, 1, 50, 20);
map.AddTBString(DeptAttr.Name, null, "部门名称", true, false, 0, 100, 30, false);
map.AddTBString(DeptAttr.NameOfPath, null, "部门全称", true, true, 0, 100, 30, true);
map.AddTBString(DeptAttr.ParentNo, null, "父节点编号", true, true, 0, 100, 30);
map.AddTBString(DeptAttr.OrgNo, null, "组织编码", true, true, 0, 100, 30);
map.AddTBString(DeptAttr.Leader, null, "部门负责人", true, false, 0, 100, 30);
map.AddTBString(DeptAttr.Adminer, null, "管理员帐号", false, false, 0, 100, 30);
map.AddTBInt(DeptAttr.Idx, 0, "Idx", false, false); //顺序号.
//微信丁丁的第三方的ID.
map.AddTBString(DeptAttr.RefID, null, "RefID", false, true, 0, 100, 30);
map.AddTBString(DeptAttr.RefParentID, null, "RefParentID", false, true, 0, 100, 30);
////节点绑定人员. 使用树杆与叶子的模式绑定.
//map.AttrsOfOneVSM.AddBranchesAndLeaf(new DeptEmps(), new BP.Port.Emps(),
// DeptEmpAttr.FK_Dept,
// DeptEmpAttr.FK_Emp, "对应人员", EmpAttr.FK_Dept, EmpAttr.Name,
// EmpAttr.No, "@WebUser.FK_Dept");
RefMethod rm = new RefMethod();
rm.Title = "重置部门全称";
rm.ClassMethodName = this.ToString() + ".DoResetPathName";
rm.RefMethodType = RefMethodType.Func;
string msg = "当该部门名称变化后,该部门与该部门的子部门名称路径(Port_Dept.NameOfPath)将发生变化.";
msg += "\t\n 该部门与该部门的子部门的人员路径也要发生变化Port_Emp列DeptDesc.StaDesc.";
msg += "\t\n 您确定要执行吗?";
rm.Warning = msg;
map.AddRefMethod(rm);
//rm = new RefMethod();
//rm.Title = "增加同级部门";
//rm.ClassMethodName = this.ToString() + ".DoSameLevelDept";
//rm.HisAttrs.AddTBString("No", null, "同级部门编号", true, false, 0, 100, 100);
//rm.HisAttrs.AddTBString("Name", null, "部门名称", true, false, 0, 100, 100);
//map.AddRefMethod(rm);
//rm = new RefMethod();
//rm.Title = "增加下级部门";
//rm.ClassMethodName = this.ToString() + ".DoSubDept";
//rm.HisAttrs.AddTBString("No", null, "同级部门编号", true, false, 0, 100, 100);
//rm.HisAttrs.AddTBString("Name", null, "部门名称", true, false, 0, 100, 100);
//map.AddRefMethod(rm);
this._enMap = map;
return this._enMap;
}
}
#endregion
protected override bool beforeDelete()
{
DeptEmps ens = new DeptEmps();
ens.Retrieve(DeptEmpAttr.FK_Dept, this.No);
if (ens.Count > 0)
throw new Exception("err@删除部门错误,该部门下有人员。");
DeptEmpStations ensD = new DeptEmpStations();
ensD.Retrieve(DeptEmpAttr.FK_Dept, this.No);
if (ensD.Count > 0)
throw new Exception("err@删除部门错误,该部门角色下有人员。");
return base.beforeDelete();
}
protected override bool beforeInsert()
{
if (BP.DA.DataType.IsNullOrEmpty(this.No) == true)
this.No = BP.DA.DBAccess.GenerGUID(5, "Port_Dept", "No");
if (BP.DA.DataType.IsNullOrEmpty(this.OrgNo) == true)
this.OrgNo = BP.Web.WebUser.OrgNo;
this.Adminer = WebUser.No;
return base.beforeInsert();
}
/// <summary>
/// 创建下级节点.
/// </summary>
/// <returns></returns>
public string DoMyCreateSubNode()
{
Entity en = this.DoCreateSubNode();
return en.ToJson();
}
/// <summary>
/// 创建同级节点.
/// </summary>
/// <returns></returns>
public string DoMyCreateSameLevelNode()
{
Entity en = this.DoCreateSameLevelNode();
return en.ToJson();
}
public string DoSameLevelDept(string no, string name)
{
Dept en = new Dept();
en.No = no;
if (en.RetrieveFromDBSources() == 1)
return "err@编号已经存在";
en.Name = name;
en.ParentNo = this.ParentNo;
en.Insert();
return "增加成功..";
}
public string DoSubDept(string no, string name)
{
Dept en = new Dept();
en.No = no;
if (en.RetrieveFromDBSources() == 1)
return "err@编号已经存在";
en.Name = name;
en.ParentNo = this.No;
en.Insert();
return "增加成功..";
}
/// <summary>
/// 重置部门
/// </summary>
/// <returns></returns>
public string DoResetPathName()
{
this.GenerNameOfPath();
return "重置成功.";
}
/// <summary>
/// 生成部门全名称.
/// </summary>
public void GenerNameOfPath()
{
string name = this.Name;
//根目录不再处理.
if (this.IsRoot == true || this.No.Equals("100") == true)
{
this.NameOfPath = name;
this.DirectUpdate();
this.GenerChildNameOfPath(this.No);
return;
}
Dept dept = new Dept();
dept.No = this.ParentNo;
if (dept.RetrieveFromDBSources() == 0)
return;
while (true)
{
if (dept.IsRoot || dept.No == "100")
break;
name = dept.Name + "\\" + name;
dept = new Dept(dept.ParentNo);
}
//根目录
name = dept.Name + "\\" + name;
this.NameOfPath = name;
this.DirectUpdate();
this.GenerChildNameOfPath(this.No);
}
/// <summary>
/// 处理子部门全名称
/// </summary>
/// <param name="FK_Dept"></param>
public void GenerChildNameOfPath(string deptNo)
{
Depts depts = new Depts(deptNo);
// BP.Port.Depts depts = new BP.Port.Depts(deptNo);
if (depts != null && depts.Count > 0)
{
foreach (Dept dept in depts)
{
dept.GenerNameOfPath();
GenerChildNameOfPath(dept.No);
////更新人员路径信息.
//BP.Port.Emps emps = new Emps();
//emps.Retrieve(EmpAttr.FK_Dept, this.No);
//foreach (BP.Port.Emp emp in emps)
// emp.Update();
}
}
}
}
/// <summary>
///部门集合
/// </summary>
public class Depts : EntitiesTree
{
/// <summary>
/// 得到一个新实体
/// </summary>
public override Entity GetNewEntity
{
get
{
return new Dept();
}
}
/// <summary>
/// 部门集合
/// </summary>
/// <param name="parentNo">父部门No</param>
public Depts(string parentNo)
{
this.Retrieve(DeptAttr.ParentNo, parentNo);
}
/// <summary>
/// 部门集合
/// </summary>
public Depts()
{
}
public override int RetrieveAll()
{
return this.Retrieve(EmpAttr.OrgNo, BP.Web.WebUser.OrgNo);
}
#region 为了适应自动翻译成java的需要,把实体转换成IList, c#代码调用会出错误。
/// <summary>
/// 转化成 java list,C#不能调用.
/// </summary>
/// <returns>List</returns>
public System.Collections.Generic.IList<Dept> ToJavaList()
{
return (System.Collections.Generic.IList<Dept>)this;
}
/// <summary>
/// 转化成list
/// </summary>
/// <returns>List</returns>
public System.Collections.Generic.List<Dept> Tolist()
{
System.Collections.Generic.List<Dept> list = new System.Collections.Generic.List<Dept>();
for (int i = 0; i < this.Count; i++)
{
list.Add((Dept)this[i]);
}
return list;
}
#endregion 为了适应自动翻译成java的需要,把实体转换成IList, c#代码调用会出错误。
}
}