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.
834 lines
28 KiB
Plaintext
834 lines
28 KiB
Plaintext
11 months ago
|
using System;
|
||
|
using System.Data;
|
||
|
using System.IO;
|
||
|
using System.Security.Cryptography;
|
||
|
using System.Text;
|
||
|
using BP.DA;
|
||
|
using BP.Difference;
|
||
|
using BP.En;
|
||
|
using BP.Sys;
|
||
|
using BP.Web;
|
||
|
|
||
|
namespace BP.Port
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// 操作员属性
|
||
|
/// </summary>
|
||
|
public class EmpAttr : EntityNoNameAttr
|
||
|
{
|
||
|
#region 基本属性
|
||
|
/// <summary>
|
||
|
/// UserID
|
||
|
/// </summary>
|
||
|
public const string UserID = "UserID";
|
||
|
/// <summary>
|
||
|
/// 组织编号
|
||
|
/// </summary>
|
||
|
public const string OrgNo = "OrgNo";
|
||
|
/// <summary>
|
||
|
/// 部门
|
||
|
/// </summary>
|
||
|
public const string FK_Dept = "FK_Dept";
|
||
|
/// <summary>
|
||
|
/// 手机号
|
||
|
/// </summary>
|
||
|
public const string Tel = "Tel";
|
||
|
/// <summary>
|
||
|
/// 邮箱
|
||
|
/// </summary>
|
||
|
public const string Email = "Email";
|
||
|
/// <summary>
|
||
|
/// 直属部门领导
|
||
|
/// </summary>
|
||
|
public const string Leader = "Leader";
|
||
|
/// <summary>
|
||
|
/// 部门领导编号
|
||
|
/// </summary>
|
||
|
public const string LeaderName = "LeaderName";
|
||
|
/// <summary>
|
||
|
/// 排序
|
||
|
/// </summary>
|
||
|
public const string Idx = "Idx";
|
||
|
/// <summary>
|
||
|
/// 检索拼音
|
||
|
/// </summary>
|
||
|
public const string PinYin = "PinYin";
|
||
|
|
||
|
public const string EmpSta = "EmpSta";
|
||
|
/// <summary>
|
||
|
/// 是否是联络员
|
||
|
/// </summary>
|
||
|
//public const string IsOfficer = "IsOfficer";
|
||
|
|
||
|
#endregion
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// Emp 的摘要说明。
|
||
|
/// </summary>
|
||
|
public class Emp : EntityNoName
|
||
|
{
|
||
|
#region 扩展属性
|
||
|
public string PinYin
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return this.GetValStringByKey(EmpAttr.PinYin);
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
this.SetValByKey(EmpAttr.PinYin, value);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 用户ID:SAAS模式下UserID是可以重复的.
|
||
|
/// </summary>
|
||
|
public string UserID
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
|
||
|
return this.GetValStringByKey(EmpAttr.UserID);
|
||
|
|
||
|
return this.GetValStringByKey(EmpAttr.No);
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
this.SetValByKey(EmpAttr.UserID, value);
|
||
|
|
||
|
if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
|
||
|
{
|
||
|
if (value.StartsWith(BP.Web.WebUser.OrgNo + "_") == true)
|
||
|
{
|
||
|
this.SetValByKey(EmpAttr.UserID, value.Replace(BP.Web.WebUser.OrgNo + "_", ""));
|
||
|
this.SetValByKey(EmpAttr.No, value);
|
||
|
}
|
||
|
else
|
||
|
this.SetValByKey(EmpAttr.No, BP.Web.WebUser.OrgNo + "_" + value);
|
||
|
}
|
||
|
else
|
||
|
this.SetValByKey(EmpAttr.No, value);
|
||
|
}
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 组织编号
|
||
|
/// </summary>
|
||
|
public string OrgNo
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return this.GetValStringByKey(EmpAttr.OrgNo);
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
this.SetValByKey(EmpAttr.OrgNo, value);
|
||
|
}
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 部门编号
|
||
|
/// </summary>
|
||
|
public string FK_Dept
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return this.GetValStrByKey(EmpAttr.FK_Dept);
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
this.SetValByKey(EmpAttr.FK_Dept, value);
|
||
|
}
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 部门编号
|
||
|
/// </summary>
|
||
|
public string FK_DeptText
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return this.GetValRefTextByKey(EmpAttr.FK_Dept);
|
||
|
}
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 密码
|
||
|
/// </summary>
|
||
|
public string Pass
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (DBAccess.IsExitsTableCol("Port_Emp", "Pass") == false)
|
||
|
{
|
||
|
//@qfl补充上增加密码列 长度 50.
|
||
|
}
|
||
|
return DBAccess.RunSQLReturnStringIsNull("SELECT Pass FROM Port_Emp WHERE No='" + this.No + "'", "123");
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
DBAccess.RunSQL("UPDATE Port_Emp SET Pass='" + value + "' WHERE No='" + this.No + "'");
|
||
|
}
|
||
|
}
|
||
|
public string Token
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (DBAccess.IsExitsTableCol("Port_Emp", "Token") == false)
|
||
|
{
|
||
|
//@qfl补充上增加密码列 长度 50.
|
||
|
}
|
||
|
return DBAccess.RunSQLReturnStringIsNull("SELECT Token FROM Port_Emp WHERE No='" + this.No + "'", "123");
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
DBAccess.RunSQL("UPDATE Port_Emp SET Token='" + value + "' WHERE No='" + this.No + "'");
|
||
|
}
|
||
|
}
|
||
|
public string Tel
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return this.GetValStrByKey(EmpAttr.Tel);
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
this.SetValByKey(EmpAttr.Tel, value);
|
||
|
}
|
||
|
}
|
||
|
public string Email
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return this.GetValStrByKey(EmpAttr.Email);
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
this.SetValByKey(EmpAttr.Email, value);
|
||
|
}
|
||
|
}
|
||
|
#endregion
|
||
|
|
||
|
#region 公共方法
|
||
|
/// <summary>
|
||
|
/// 权限管理.
|
||
|
/// </summary>
|
||
|
public override UAC HisUAC
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
UAC uac = new UAC();
|
||
|
uac.OpenForAppAdmin();
|
||
|
return uac;
|
||
|
}
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 检查密码(可以重写此方法)
|
||
|
/// </summary>
|
||
|
/// <param name="pass">密码</param>
|
||
|
/// <returns>是否匹配成功</returns>
|
||
|
public bool CheckPass(string pass)
|
||
|
{
|
||
|
//检查是否与通用密码相符.
|
||
|
//string gePass = BP.Difference.SystemConfig.AppSettings["GenerPass"];
|
||
|
//if (gePass == pass && DataType.IsNullOrEmpty(gePass) == false)
|
||
|
// return true;
|
||
|
//启用加密
|
||
|
if (BP.Difference.SystemConfig.IsEnablePasswordEncryption == true)
|
||
|
{
|
||
|
//pass = BP.Tools.Cryptography.EncryptString(pass);
|
||
|
///*使用数据库校验.*/
|
||
|
//if (this.Pass == pass)
|
||
|
// return true;
|
||
|
pass = BP.Tools.Cryptography.MD5_Encrypt(pass);
|
||
|
/*使用数据库校验.*/
|
||
|
if (this.Pass.Equals(pass) == true)
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
if (this.Pass.Equals(pass) == true)
|
||
|
return true;
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
private static byte[] Keys = { 0x12, 0xCD, 0x3F, 0x34, 0x78, 0x90, 0x56, 0x7B };
|
||
|
|
||
|
/// <summary>
|
||
|
/// 加密字符串
|
||
|
/// </summary>
|
||
|
/// <param name="pass"></param>
|
||
|
/// <returns></returns>
|
||
|
public static string EncryptPass(string pass)
|
||
|
{
|
||
|
DESCryptoServiceProvider descsp = new DESCryptoServiceProvider(); //实例化加/解密类对象
|
||
|
|
||
|
byte[] data = Encoding.Unicode.GetBytes(pass);//定义字节数组,用来存储要加密的字符串
|
||
|
MemoryStream MStream = new MemoryStream(); //实例化内存流对象
|
||
|
//使用内存流实例化加密流对象
|
||
|
CryptoStream CStream = new CryptoStream(MStream, descsp.CreateEncryptor(Keys, Keys), CryptoStreamMode.Write);
|
||
|
CStream.Write(data, 0, data.Length); //向加密流中写入数据
|
||
|
CStream.FlushFinalBlock(); //释放加密流
|
||
|
return Convert.ToBase64String(MStream.ToArray());//返回加密后的字符串
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 解密字符串
|
||
|
/// </summary>
|
||
|
/// <param name="pass"></param>
|
||
|
/// <returns></returns>
|
||
|
public static string DecryptPass(string pass)
|
||
|
{
|
||
|
DESCryptoServiceProvider descsp = new DESCryptoServiceProvider(); //实例化加/解密类对象
|
||
|
byte[] data = Convert.FromBase64String(pass);//定义字节数组,用来存储要解密的字符串
|
||
|
MemoryStream MStream = new MemoryStream(); //实例化内存流对象
|
||
|
//使用内存流实例化解密流对象
|
||
|
CryptoStream CStream = new CryptoStream(MStream, descsp.CreateDecryptor(Keys, Keys), CryptoStreamMode.Write);
|
||
|
CStream.Write(data, 0, data.Length); //向解密流中写入数据
|
||
|
CStream.FlushFinalBlock(); //释放解密流
|
||
|
return Encoding.Unicode.GetString(MStream.ToArray()); //返回解密后的字符串
|
||
|
}
|
||
|
#endregion 公共方法
|
||
|
|
||
|
#region 构造函数
|
||
|
/// <summary>
|
||
|
/// 操作员
|
||
|
/// </summary>
|
||
|
public Emp()
|
||
|
{
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 操作员
|
||
|
/// </summary>
|
||
|
/// <param name="userID">编号</param>
|
||
|
public Emp(string userID)
|
||
|
{
|
||
|
if (userID == null || userID.Length == 0)
|
||
|
throw new Exception("@要查询的操作员编号为空。");
|
||
|
|
||
|
userID = userID.Trim();
|
||
|
if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
|
||
|
{
|
||
|
if (userID.Equals("admin") == true)
|
||
|
this.SetValByKey("No", userID);
|
||
|
else
|
||
|
this.SetValByKey("No", BP.Web.WebUser.OrgNo + "_" + userID);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
this.SetValByKey("No", userID);
|
||
|
}
|
||
|
this.Retrieve();
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 重写基类方法
|
||
|
/// </summary>
|
||
|
public override Map EnMap
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (this._enMap != null)
|
||
|
return this._enMap;
|
||
|
Map map = new Map("Port_Emp", "用户");
|
||
|
|
||
|
#region 基本属性
|
||
|
map.EnDBUrl = new DBUrl(DBUrlType.AppCenterDSN); //要连接的数据源(表示要连接到的那个系统数据库)。
|
||
|
map.IndexField = EmpAttr.FK_Dept;
|
||
|
#endregion
|
||
|
|
||
|
#region 字段
|
||
|
/* 关于字段属性的增加 .. */
|
||
|
//map.IsEnableVer = true;
|
||
|
map.AddTBStringPK(EmpAttr.No, null, "编号", true, false, 1, 50, 30);
|
||
|
//如果是集团模式或者是SAAS模式.
|
||
|
if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
|
||
|
map.AddTBString(EmpAttr.UserID, null, "用户ID", true, false, 0, 50, 30);
|
||
|
|
||
|
map.AddTBString(EmpAttr.Name, null, "名称", true, false, 0, 200, 30);
|
||
|
map.AddTBString(EmpAttr.PinYin, null, "拼音", false, false, 0, 200, 30);
|
||
|
map.AddDDLEntities(EmpAttr.FK_Dept, null, "部门", new BP.Port.Depts(), false);
|
||
|
map.AddTBString(EmpAttr.Tel, null, "手机号", false, false, 0, 36, 36);
|
||
|
map.AddTBString(EmpAttr.Email, null, "邮箱", false, false, 0, 36, 36);
|
||
|
map.AddTBString(EmpAttr.Leader, null, "直属部门领导", false, false, 0, 20, 130);
|
||
|
map.SetHelperAlert(EmpAttr.Leader, "这里是领导的登录帐号,不是中文名字,用于流程的接受人规则中。");
|
||
|
map.AddTBString(EmpAttr.LeaderName, null, "领导名", true, true, 0, 20, 130);
|
||
|
map.AddTBString(EmpAttr.OrgNo, null, "组织编号", true, true, 0, 50, 50);
|
||
|
map.AddTBInt(EmpAttr.EmpSta, 0, "状态", false, false);
|
||
|
//if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.GroupInc)
|
||
|
// map.AddBoolean(EmpAttr.IsOfficer, false, "是否是联络员", true, true);
|
||
|
map.AddTBInt(EmpAttr.Idx, 0, "Idx", false, false);
|
||
|
#endregion 字段
|
||
|
|
||
|
#region 查询条件.
|
||
|
map.AddSearchAttr(EmpAttr.FK_Dept);
|
||
|
|
||
|
if (BP.Difference.SystemConfig.CCBPMRunModel != CCBPMRunModel.Single)
|
||
|
map.AddHidden("OrgNo", "=", "@WebUser.OrgNo");
|
||
|
#endregion 查询条件.
|
||
|
|
||
|
#region 方法.
|
||
|
RefMethod rm = new RefMethod();
|
||
|
rm.Title = "设置图片签名";
|
||
|
rm.ClassMethodName = this.ToString() + ".DoSinger";
|
||
|
rm.RefMethodType = RefMethodType.RightFrameOpen;
|
||
|
map.AddRefMethod(rm);
|
||
|
|
||
|
rm = new RefMethod();
|
||
|
rm.Title = "部门角色";
|
||
|
rm.ClassMethodName = this.ToString() + ".DoEmpDepts";
|
||
|
rm.RefMethodType = RefMethodType.RightFrameOpen;
|
||
|
map.AddRefMethod(rm);
|
||
|
|
||
|
//节点绑定部门. 节点绑定部门.
|
||
|
map.AttrsOfOneVSM.AddBranches(new DeptEmps(), new BP.Port.Depts(),
|
||
|
BP.Port.DeptEmpAttr.FK_Emp,
|
||
|
BP.Port.DeptEmpAttr.FK_Dept, "部门维护", EmpAttr.Name, EmpAttr.No, "@WebUser.FK_Dept");
|
||
|
|
||
|
|
||
|
rm = new RefMethod();
|
||
|
rm.Title = "修改密码";
|
||
|
rm.ClassMethodName = this.ToString() + ".DoResetpassword";
|
||
|
rm.HisAttrs.AddTBString("pass1", null, "输入密码", true, false, 0, 100, 100);
|
||
|
rm.HisAttrs.AddTBString("pass2", null, "再次输入", true, false, 0, 100, 100);
|
||
|
map.AddRefMethod(rm);
|
||
|
|
||
|
rm = new RefMethod();
|
||
|
rm.Title = "修改主部门";
|
||
|
rm.ClassMethodName = this.ToString() + ".DoEditMainDept";
|
||
|
rm.RefAttrKey = EmpAttr.FK_Dept;
|
||
|
rm.RefMethodType = RefMethodType.LinkModel;
|
||
|
map.AddRefMethod(rm);
|
||
|
|
||
|
rm = new RefMethod();
|
||
|
rm.Title = "设置部门直属领导";
|
||
|
rm.ClassMethodName = this.ToString() + ".DoEditLeader";
|
||
|
rm.RefAttrKey = EmpAttr.LeaderName;
|
||
|
rm.RefMethodType = RefMethodType.LinkModel;
|
||
|
map.AddRefMethod(rm);
|
||
|
|
||
|
//平铺模式.
|
||
|
map.AttrsOfOneVSM.AddGroupPanelModel(new BP.Port.TeamEmps(), new BP.Port.Teams(),
|
||
|
BP.Port.TeamEmpAttr.FK_Emp,
|
||
|
BP.Port.TeamEmpAttr.FK_Team, "标签", TeamAttr.FK_TeamType);
|
||
|
|
||
|
#endregion 方法.
|
||
|
|
||
|
|
||
|
this._enMap = map;
|
||
|
return this._enMap;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#region 方法执行.
|
||
|
public string DoEditMainDept()
|
||
|
{
|
||
|
return "../../../GPM/EmpDeptMainDept.htm?FK_Emp=" + this.No + "&FK_Dept=" + this.FK_Dept;
|
||
|
}
|
||
|
|
||
|
public string DoEditLeader()
|
||
|
{
|
||
|
return "../../../GPM/EmpLeader.htm?FK_Emp=" + this.No + "&FK_Dept=" + this.FK_Dept;
|
||
|
}
|
||
|
|
||
|
public string DoEmpDepts()
|
||
|
{
|
||
|
return "../../../GPM/EmpDepts.htm?FK_Emp=" + this.No;
|
||
|
}
|
||
|
|
||
|
public string DoSinger()
|
||
|
{
|
||
|
//路径
|
||
|
return "../../../GPM/Siganture.htm?EmpNo=" + this.No;
|
||
|
}
|
||
|
#endregion 方法执行.
|
||
|
|
||
|
protected override bool beforeInsert()
|
||
|
{
|
||
|
if (BP.Difference.SystemConfig.IsEnablePasswordEncryption == true)
|
||
|
this.Pass = BP.Tools.Cryptography.EncryptString(this.Pass);
|
||
|
|
||
|
//设置orgNo.
|
||
|
if (BP.Difference.SystemConfig.CCBPMRunModel != CCBPMRunModel.Single)
|
||
|
{
|
||
|
Dept dept = new Dept();
|
||
|
dept.No = this.No;
|
||
|
dept.RetrieveFromDBSources();
|
||
|
this.OrgNo = dept.OrgNo;
|
||
|
}
|
||
|
|
||
|
return base.beforeInsert();
|
||
|
}
|
||
|
|
||
|
protected override bool beforeUpdateInsertAction()
|
||
|
{
|
||
|
//设置OrgNo.
|
||
|
if (BP.Difference.SystemConfig.CCBPMRunModel != CCBPMRunModel.Single)
|
||
|
{
|
||
|
//不是超级管理员.
|
||
|
if (BP.Web.WebUser.No.Equals("admin") == false)
|
||
|
this.OrgNo = BP.Web.WebUser.OrgNo;
|
||
|
|
||
|
if (BP.Web.WebUser.No.Equals("admin") == true)
|
||
|
{
|
||
|
BP.Port.Dept dept = new Dept(this.FK_Dept);
|
||
|
this.OrgNo = dept.OrgNo;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//增加拼音,以方便查找.
|
||
|
if (DataType.IsNullOrEmpty(this.Name) == true)
|
||
|
throw new Exception("err@名称不能为空.");
|
||
|
|
||
|
if (BP.Web.WebUser.IsAdmin == false && this.No.Equals(BP.Web.WebUser.No) == false)
|
||
|
throw new Exception("err@非管理员无法操作.");
|
||
|
|
||
|
if (DataType.IsNullOrEmpty(this.Email) == false)
|
||
|
{
|
||
|
//邮箱格式
|
||
|
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex("^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@(\\w+\\.)+\\w{2,5})\\s*$");
|
||
|
if (r.IsMatch(this.Email) == false)
|
||
|
throw new Exception("邮箱格式不正确.");
|
||
|
}
|
||
|
|
||
|
string pinyinQP = DataType.ParseStringToPinyin(this.Name).ToLower();
|
||
|
string pinyinJX = DataType.ParseStringToPinyinJianXie(this.Name).ToLower();
|
||
|
this.PinYin = "," + pinyinQP + "," + pinyinJX + ",";
|
||
|
|
||
|
//处理角色信息.
|
||
|
DeptEmpStations des = new DeptEmpStations();
|
||
|
des.Retrieve(DeptEmpStationAttr.FK_Emp, this.No);
|
||
|
|
||
|
string depts = "";
|
||
|
string stas = "";
|
||
|
|
||
|
foreach (DeptEmpStation item in des)
|
||
|
{
|
||
|
Dept dept = new Dept();
|
||
|
dept.No = item.FK_Dept;
|
||
|
if (dept.RetrieveFromDBSources() == 0)
|
||
|
{
|
||
|
item.Delete();
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
//给拼音重新定义值,让其加上部门的信息.
|
||
|
this.PinYin = this.PinYin + pinyinJX + "/" + DataType.ParseStringToPinyinJianXie(dept.Name).ToLower() + ",";
|
||
|
|
||
|
BP.Port.Station sta = new BP.Port.Station();
|
||
|
sta.No = item.FK_Station;
|
||
|
if (sta.RetrieveFromDBSources() == 0)
|
||
|
{
|
||
|
item.Delete();
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
stas += "@" + dept.NameOfPath + "|" + sta.Name;
|
||
|
depts += "@" + dept.NameOfPath;
|
||
|
}
|
||
|
|
||
|
//记录日志.
|
||
|
BP.Sys.Base.Glo.WriteUserLog("新建/修改人员:" + this.ToJson(), "组织数据操作");
|
||
|
return base.beforeUpdateInsertAction();
|
||
|
}
|
||
|
protected override bool beforeDelete()
|
||
|
{
|
||
|
if (this.No.ToLower().Equals("admin") == true)
|
||
|
throw new Exception("err@管理员账号不能删除.");
|
||
|
if (SystemConfig.CCBPMRunModel != CCBPMRunModel.Single)
|
||
|
{
|
||
|
//如果是组织的主要管理员时不能删除
|
||
|
String sql = "SELECT COUNT(*) From Port_Org WHERE No='" + WebUser.OrgNo + "' AND Adminer='" + this.No + "'";
|
||
|
if (DBAccess.RunSQLReturnValInt(sql) == 1)
|
||
|
throw new Exception("err@组织" + WebUser.OrgName + "的主要管理员账号不能删除.");
|
||
|
}
|
||
|
|
||
|
BP.Sys.Base.Glo.WriteUserLog("删除人员:" + this.ToJson(), "组织数据操作");
|
||
|
return base.beforeDelete();
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 保存后修改WF_Emp中的邮箱
|
||
|
/// </summary>
|
||
|
protected override void afterInsertUpdateAction()
|
||
|
{
|
||
|
string sql = "Select Count(*) From WF_Emp Where No='" + this.No + "'";
|
||
|
int count = DBAccess.RunSQLReturnValInt(sql);
|
||
|
if (count == 0)
|
||
|
sql = "INSERT INTO WF_Emp (No,Name) VALUES('" + this.No + "','" + this.Name + "')";
|
||
|
DBAccess.RunSQL(sql);
|
||
|
|
||
|
DeptEmp deptEmp = new DeptEmp();
|
||
|
deptEmp.FK_Dept = this.FK_Dept;
|
||
|
deptEmp.FK_Emp = this.No;
|
||
|
deptEmp.setMyPK(this.FK_Dept + "_" + this.No);
|
||
|
if (deptEmp.IsExit("MyPK", deptEmp.MyPK) == false)
|
||
|
deptEmp.Insert();
|
||
|
|
||
|
base.afterInsertUpdateAction();
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 删除之后要做的事情
|
||
|
/// </summary>
|
||
|
protected override void afterDelete()
|
||
|
{
|
||
|
DeptEmps des = new DeptEmps();
|
||
|
des.Delete(DeptEmpAttr.FK_Emp, this.No);
|
||
|
|
||
|
DeptEmpStations stas = new DeptEmpStations();
|
||
|
stas.Delete(DeptEmpAttr.FK_Emp, this.No);
|
||
|
|
||
|
|
||
|
base.afterDelete();
|
||
|
}
|
||
|
|
||
|
public static string GenerPinYin(string no, string name)
|
||
|
{
|
||
|
//增加拼音,以方便查找.
|
||
|
string pinyinQP = DataType.ParseStringToPinyin(name).ToLower();
|
||
|
string pinyinJX = DataType.ParseStringToPinyinJianXie(name).ToLower();
|
||
|
string py = "," + pinyinQP + "," + pinyinJX + ",";
|
||
|
|
||
|
//处理角色信息.
|
||
|
DeptEmpStations des = new DeptEmpStations();
|
||
|
des.Retrieve(DeptEmpStationAttr.FK_Emp, no);
|
||
|
|
||
|
string depts = "";
|
||
|
string stas = "";
|
||
|
|
||
|
foreach (DeptEmpStation item in des)
|
||
|
{
|
||
|
Dept dept = new Dept();
|
||
|
dept.No = item.FK_Dept;
|
||
|
if (dept.RetrieveFromDBSources() == 0)
|
||
|
{
|
||
|
item.Delete();
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
//给拼音重新定义值,让其加上部门的信息.
|
||
|
py = py + pinyinJX + "/" + DataType.ParseStringToPinyinJianXie(dept.Name).ToLower() + ",";
|
||
|
|
||
|
BP.Port.Station sta = new BP.Port.Station();
|
||
|
sta.No = item.FK_Station;
|
||
|
if (sta.RetrieveFromDBSources() == 0)
|
||
|
{
|
||
|
item.Delete();
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
stas += "@" + dept.NameOfPath + "|" + sta.Name;
|
||
|
depts += "@" + dept.NameOfPath;
|
||
|
}
|
||
|
|
||
|
return py;
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 向上移动
|
||
|
/// </summary>
|
||
|
public void DoUp()
|
||
|
{
|
||
|
this.DoOrderUp(EmpAttr.FK_Dept, this.FK_Dept, EmpAttr.Idx);
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 向下移动
|
||
|
/// </summary>
|
||
|
public void DoDown()
|
||
|
{
|
||
|
this.DoOrderDown(EmpAttr.FK_Dept, this.FK_Dept, EmpAttr.Idx);
|
||
|
}
|
||
|
|
||
|
public string DoResetpassword(string pass1, string pass2)
|
||
|
{
|
||
|
if (pass1.Equals(pass2) == false)
|
||
|
return "两次密码不一致";
|
||
|
|
||
|
this.Pass = pass1;
|
||
|
|
||
|
if (BP.Difference.SystemConfig.IsEnablePasswordEncryption == true)
|
||
|
this.Pass = BP.Tools.Cryptography.EncryptString(this.Pass);
|
||
|
|
||
|
this.Update();
|
||
|
return "密码设置成功";
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 获取集合
|
||
|
/// </summary>
|
||
|
public override Entities GetNewEntities
|
||
|
{
|
||
|
get { return new Emps(); }
|
||
|
}
|
||
|
#endregion 构造函数
|
||
|
|
||
|
#region 方法测试代码.
|
||
|
/// <summary>
|
||
|
/// 禁用、启用用户
|
||
|
/// </summary>
|
||
|
/// <returns></returns>
|
||
|
public string DoUnEnable()
|
||
|
{
|
||
|
string userNo = this.No;
|
||
|
if (userNo.Equals("admin"))
|
||
|
throw new Exception("err@管理员账号不能禁用.");
|
||
|
string sql = "";
|
||
|
if (SystemConfig.CCBPMRunModel != CCBPMRunModel.Single)
|
||
|
{
|
||
|
//如果是组织的主要管理员时不能删除
|
||
|
sql = "SELECT COUNT(*) From Port_Org WHERE No='" + WebUser.OrgNo + "' AND Adminer='" + this.No + "'";
|
||
|
if (DBAccess.RunSQLReturnValInt(sql) == 1)
|
||
|
throw new Exception("err@组织" + WebUser.OrgName + "的主要管理员账号不能禁用.");
|
||
|
}
|
||
|
//判断当前人员是否有待办
|
||
|
string wfSql = "";
|
||
|
if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
|
||
|
{
|
||
|
wfSql = " AND OrgNo='" + BP.Web.WebUser.OrgNo + "'";
|
||
|
userNo = this.UserID;
|
||
|
}
|
||
|
|
||
|
/*不是授权状态*/
|
||
|
if (BP.Difference.SystemConfig.GetValByKeyBoolen("IsEnableTaskPool", false) == true)
|
||
|
sql = "SELECT count(WorkID) as Num FROM WF_EmpWorks WHERE FK_Emp='" + userNo + "' AND TaskSta!=1 " + wfSql;
|
||
|
else
|
||
|
sql = "SELECT count(WorkID) as Num FROM WF_EmpWorks WHERE FK_Emp='" + userNo + "' " + wfSql;
|
||
|
|
||
|
int count = DBAccess.RunSQLReturnValInt(sql);
|
||
|
if (count != 0)
|
||
|
return this.Name + "还存在待办,不能禁用该用户";
|
||
|
sql = "UPDATE WF_Emp SET UseSta=0 WHERE No='" + this.No + "'";
|
||
|
DBAccess.RunSQL(sql);
|
||
|
//this.Delete();
|
||
|
this.SetValByKey("EmpSta", 1);
|
||
|
this.Update();
|
||
|
return this.Name + "已禁用";
|
||
|
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 测试
|
||
|
/// </summary>
|
||
|
/// <returns></returns>
|
||
|
public string ResetPass()
|
||
|
{
|
||
|
return "执行成功.";
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// ChangePass
|
||
|
/// </summary>
|
||
|
/// <param name="oldpass"></param>
|
||
|
/// <param name="pass1"></param>
|
||
|
/// <param name="pass2"></param>
|
||
|
/// <returns></returns>
|
||
|
public string ChangePass(string oldpass, string pass1, string pass2)
|
||
|
{
|
||
|
if (BP.Web.WebUser.No.Equals(this.UserID) == false)
|
||
|
return "err@sss";
|
||
|
|
||
|
return "执行成功.";
|
||
|
}
|
||
|
|
||
|
#endregion 方法测试代码.
|
||
|
|
||
|
/// <summary>
|
||
|
/// 是否包含指定的角色编号
|
||
|
/// </summary>
|
||
|
/// <param name="stationNo">指定的角色编号</param>
|
||
|
/// <returns></returns>
|
||
|
public bool HaveStation(string stationNo)
|
||
|
{
|
||
|
string sql = "SELECT COUNT(FK_Emp) AS Num FROM Port_DeptEmpStation WHERE FK_Emp='" + this.No + "' AND FK_Station='" + stationNo + "'";
|
||
|
if (DBAccess.RunSQLReturnValInt(sql) == 0)
|
||
|
return false;
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 操作员
|
||
|
// </summary>
|
||
|
public class Emps : EntitiesNoName
|
||
|
{
|
||
|
#region 构造方法
|
||
|
/// <summary>
|
||
|
/// 得到它的 Entity
|
||
|
/// </summary>
|
||
|
public override Entity GetNewEntity
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return new Emp();
|
||
|
}
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 操作员s
|
||
|
/// </summary>
|
||
|
public Emps()
|
||
|
{
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 操作员s
|
||
|
/// </summary>
|
||
|
public Emps(string deptNo)
|
||
|
{
|
||
|
|
||
|
this.Retrieve(EmpAttr.FK_Dept, deptNo);
|
||
|
|
||
|
}
|
||
|
#endregion 构造方法
|
||
|
|
||
|
public string reseet()
|
||
|
{
|
||
|
return "ceshi";
|
||
|
}
|
||
|
|
||
|
#region 重写查询,add by zhoupeng 2015.09.30 为了适应能够从 webservice 数据源查询数据.
|
||
|
/// <summary>
|
||
|
/// 重写查询全部适应从WS取数据需要
|
||
|
/// </summary>
|
||
|
/// <returns></returns>
|
||
|
public override int RetrieveAll()
|
||
|
{
|
||
|
//if (BP.Web.WebUser.No != "admin")
|
||
|
// throw new Exception("@您没有查询的权限.");
|
||
|
if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.Single)
|
||
|
return base.RetrieveAll();
|
||
|
|
||
|
return this.Retrieve("OrgNo", BP.Web.WebUser.OrgNo);
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 重写重数据源查询全部适应从WS取数据需要
|
||
|
/// </summary>
|
||
|
/// <returns></returns>
|
||
|
public override int RetrieveAllFromDBSource()
|
||
|
{
|
||
|
|
||
|
if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.Single)
|
||
|
return base.RetrieveAllFromDBSource();
|
||
|
|
||
|
return this.Retrieve("OrgNo", BP.Web.WebUser.OrgNo);
|
||
|
}
|
||
|
#endregion 重写查询.
|
||
|
|
||
|
#region 为了适应自动翻译成java的需要,把实体转换成List.
|
||
|
/// <summary>
|
||
|
/// 转化成 java list,C#不能调用.
|
||
|
/// </summary>
|
||
|
/// <returns>List</returns>
|
||
|
public System.Collections.Generic.IList<Emp> ToJavaList()
|
||
|
{
|
||
|
return (System.Collections.Generic.IList<Emp>)this;
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 转化成list
|
||
|
/// </summary>
|
||
|
/// <returns>List</returns>
|
||
|
public System.Collections.Generic.List<Emp> Tolist()
|
||
|
{
|
||
|
System.Collections.Generic.List<Emp> list = new System.Collections.Generic.List<Emp>();
|
||
|
for (int i = 0; i < this.Count; i++)
|
||
|
{
|
||
|
list.Add((Emp)this[i]);
|
||
|
}
|
||
|
return list;
|
||
|
}
|
||
|
#endregion 为了适应自动翻译成java的需要,把实体转换成List.
|
||
|
|
||
|
}
|
||
|
}
|