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.

384 lines
15 KiB
Plaintext

9 months ago
using BP.DA;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BP.Port
{
/// <summary>
/// 组织接口API
/// </summary>
public class OrganizationAPI
{
#region 关于组织结构的接口.
/// <summary>
/// 集团模式下同步组织以及管理员信息.
/// </summary>
/// <param name="orgNo">组织编号</param>
/// <param name="name">组织名称</param>
/// <param name="adminer">管理员账号</param>
/// <param name="adminerName">管理员名字</param>
/// <param name="keyval">比如:@Leaer=zhangsan@Tel=12233333@Idx=1</param>
/// <returns>return 1 增加成功,其他的增加失败.</returns>
public static string Port_Org_Save(string orgNo, string name, string adminer, string adminerName, string keyVals)
{
if (BP.Web.WebUser.IsAdmin == false)
return "err@["+ BP.Web.WebUser.Name+"]不是管理员不能维护组织信息";
int msg = 0;
if (BP.Difference.SystemConfig.CCBPMRunModel != BP.Sys.CCBPMRunModel.Single)
{
AtPara ap = new AtPara(keyVals);
BP.WF.Admin.Org org = new BP.WF.Admin.Org();
org.No = orgNo;
org.Name = name;
org.Adminer = adminer;
org.AdminerName = adminerName;
foreach (string key in ap.HisHT.Keys)
{
if (DataType.IsNullOrEmpty(key) == true)
continue;
org.SetValByKey(key, ap.GetValStrByKey(key));
}
msg = org.Insert();
BP.WF.Port.Admin2Group.OrgAdminer oa = new BP.WF.Port.Admin2Group.OrgAdminer();
oa.setMyPK(orgNo + "_" + adminer);
oa.OrgNo = orgNo;
oa.FK_Emp = adminer;
oa.EmpName = adminerName;
msg = oa.Insert();
}
return msg.ToString();
}
/// <summary>
/// 保存用户数据, 如果有此数据则修改,无此数据则增加.
/// </summary>
/// <param name="orgNo">组织编号</param>
/// <param name="userNo">用户编号,如果是saas版本就是orgNo_userID</param>
/// <param name="userName">用户名称</param>
/// <param name="deptNo">部门编号</param>
/// <param name="kvs">属性值,比如: @Name=张三@Tel=18778882345@Pass=123, 如果是saas模式就必须有@UserID=xxxx </param>
/// <param name="stats">角色编号:比如:001,002,003,</param>
/// <returns>reutrn 1=成功, 其他的标识异常.</returns>
public static string Port_Emp_Save(string orgNo, string userNo, string userName, string deptNo, string kvs, string stats)
{
if (BP.Web.WebUser.IsAdmin == false)
return "err@[" + BP.Web.WebUser.Name + "]不是管理员不能维护人员信息";
if (BP.Difference.SystemConfig.CCBPMRunModel == BP.Sys.CCBPMRunModel.SAAS)
{
if (kvs == null || kvs.IndexOf("@UserID=") == -1)
return "err@saas模式下需要在kvs参数里增加@UserID=xxxx 属性.";
}
if (BP.Difference.SystemConfig.CCBPMRunModel != BP.Sys.CCBPMRunModel.Single)
{
if (DataType.IsNullOrEmpty(orgNo) == true)
return "err@组织编号不能为空.";
BP.WF.Admin.Org org = new BP.WF.Admin.Org();
org.No = orgNo;
if (org.RetrieveFromDBSources() == 0)
return "err@组织编号错误:" + orgNo;
}
else
{
orgNo = "";
}
if (DataType.IsNullOrEmpty(userNo) || DataType.IsNullOrEmpty(userName) || DataType.IsNullOrEmpty(deptNo) == true)
throw new Exception("err@用户编号,名称,部门不能为空.");
BP.Port.Dept dept = new BP.Port.Dept();
dept.No = deptNo;
if (dept.RetrieveFromDBSources() == 0)
throw new Exception("err@部门编号错误:" + deptNo);
try
{
//增加人员信息.
BP.Port.Emp emp = new BP.Port.Emp();
emp.No = userNo;
if (emp.RetrieveFromDBSources() == 0)
{
emp.Name = userName;
emp.FK_Dept = deptNo;
emp.OrgNo = orgNo;
emp.Insert();
}
BP.DA.AtPara ap = new AtPara(kvs);
foreach (string key in ap.HisHT.Keys)
{
if (DataType.IsNullOrEmpty(key) == true)
continue;
emp.SetValByKey(key, ap.GetValStrByKey(key));
}
emp.FK_Dept = deptNo;
emp.Name = userName;
emp.OrgNo = orgNo;
emp.Update();
if (BP.Difference.SystemConfig.CCBPMRunModel == BP.Sys.CCBPMRunModel.Single)
{
BP.DA.DBAccess.RunSQL("DELETE FROM Port_DeptEmp WHERE FK_Emp='" + userNo + "'");
BP.DA.DBAccess.RunSQL("DELETE FROM Port_DeptEmpStation WHERE FK_Emp='" + userNo + "'");
}
else
{
BP.DA.DBAccess.RunSQL("DELETE FROM Port_DeptEmp WHERE FK_Emp='" + userNo + "' AND OrgNo='" + orgNo + "'");
BP.DA.DBAccess.RunSQL("DELETE FROM Port_DeptEmpStation WHERE FK_Emp='" + userNo + "' AND OrgNo='" + orgNo + "'");
}
//插入部门.
BP.Port.DeptEmp de = new BP.Port.DeptEmp();
de.FK_Dept = deptNo;
de.FK_Emp = userNo;
de.OrgNo = orgNo;
// de.IsMainDept = true;
de.MyPK = de.FK_Dept + "_" + userNo;
de.DirectInsert();
//更新角色.
if (stats == null)
stats = "";
string[] strs = stats.Split(',');
for (int i = 0; i < strs.Length; i++)
{
string str = strs[i];
if (DataType.IsNullOrEmpty(str))
continue;
Station st = new Station();
st.No = str;
if (st.RetrieveFromDBSources() == 0)
throw new Exception("err@角色编号错误." + str);
//插入部门.
DeptEmpStation des = new DeptEmpStation();
des.FK_Dept = deptNo;
des.FK_Emp = userNo;
des.FK_Station = str;
des.OrgNo = orgNo;
des.MyPK = de.FK_Dept + "_" + des.FK_Emp + "_" + des.FK_Station;
des.DirectInsert();
}
DBAccess.RunSQL("UPDATE Port_Emp SET OrgNo='" + orgNo + "' WHERE No='" + emp.No + "'");
return "人员信息保存成功";
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
}
/// <summary>
/// 保存角色
/// </summary>
/// <param name="userNo"></param>
/// <param name="stas">角色用逗号分开</param>
/// <returns>reutrn 1=成功, 其他的标识异常.</returns>
public static string Port_Emp_Delete(string orgNo, string userNo)
{
if (BP.Web.WebUser.IsAdmin == false)
return "err@[" + BP.Web.WebUser.Name + "]不是管理员不能删除人员信息";
try
{
//增加人员信息.
BP.Port.Emp emp = new BP.Port.Emp();
emp.No = userNo;
emp.OrgNo = orgNo;
if (emp.RetrieveFromDBSources() == 0)
return "err@该用户【" + userNo + "】不存在.";
//删除角色.
BP.DA.DBAccess.RunSQL("delete from port_deptemp where fk_emp='" + userNo + "' AND OrgNo='" + orgNo + "'");
BP.DA.DBAccess.RunSQL("delete from port_deptempStation where fk_emp='" + userNo + "' AND OrgNo='" + orgNo + "'");
emp.Delete();
return "人员信息删除成功";
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
}
/// <summary>
/// 保存部门, 如果有此数据则修改,无此数据则增加.
/// </summary>
/// <param name="orgNo">组织编号</param>
/// <param name="no">部门编号</param>
/// <param name="name">名称</param>
/// <param name="parntNo">父节点编号</param>
/// <param name="keyval">比如:@Leaer=zhangsan@Tel=12233333@Idx=1</param>
/// <returns>return 1 增加成功,其他的增加失败.</returns>
public static string Port_Dept_Save(string orgNo, string no, string name, string parntNo, string keyVals)
{
if (BP.Web.WebUser.IsAdmin == false)
return "err@[" + BP.Web.WebUser.Name + "]不是管理员不能维护部门信息";
if (BP.Difference.SystemConfig.CCBPMRunModel != BP.Sys.CCBPMRunModel.Single)
{
if (DataType.IsNullOrEmpty(orgNo) == true)
return "err@组织编号不能为空.";
BP.WF.Admin.Org org = new BP.WF.Admin.Org();
org.No = orgNo;
if (org.RetrieveFromDBSources() == 0)
return "err@组织编号错误:" + orgNo;
}
try
{
//增加人员信息.
BP.Port.Dept deptP = new BP.Port.Dept(parntNo);
AtPara ap = new AtPara(keyVals);
//增加部门.
BP.Port.Dept dept = new BP.Port.Dept();
dept.No = no;
if (dept.RetrieveFromDBSources() == 0)
{
dept.Name = name;
dept.ParentNo = parntNo;
dept.OrgNo = orgNo;
foreach (string key in ap.HisHT.Keys)
{
if (DataType.IsNullOrEmpty(key) == true)
continue;
dept.SetValByKey(key, ap.GetValStrByKey(key));
}
dept.Insert();
}
else
{
dept.Name = name;
dept.ParentNo = parntNo;
dept.OrgNo = orgNo;
foreach (string key in ap.HisHT.Keys)
{
if (DataType.IsNullOrEmpty(key) == true)
continue;
dept.SetValByKey(key, ap.GetValStrByKey(key));
}
dept.Update();
}
DBAccess.RunSQL("UPDATE Port_Dept SET OrgNo='" + orgNo + "' WHERE No='" + dept.No + "'");
return "部门信息保存成功";
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
}
/// <summary>
/// 删除部门.
/// </summary>
/// <param name="no">删除指定的部门编号</param>
/// <returns></returns>
public static string Port_Dept_Delete(string no)
{
if (BP.Web.WebUser.IsAdmin == false)
return "err@[" + BP.Web.WebUser.Name + "]不是管理员不能删除部门信息";
try
{
//删除部门.
BP.Port.Dept dept = new BP.Port.Dept(no);
dept.Delete();
return "删除成功";
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
}
/// <summary>
/// 保存角色, 如果有此数据则修改,无此数据则增加.
/// </summary>
/// <param name="orgNo">组织编号</param>
/// <param name="no">编号</param>
/// <param name="name">名称</param>
/// <returns>return 1 增加成功,其他的增加失败.</returns>
public static string Port_Station_Save(string orgNo, string no, string name, string keyVals)
{
if (BP.Web.WebUser.IsAdmin == false)
return "err@[" + BP.Web.WebUser.Name + "]不是管理员不能维护岗位信息";
if (BP.Difference.SystemConfig.CCBPMRunModel != BP.Sys.CCBPMRunModel.Single)
{
if (DataType.IsNullOrEmpty(orgNo) == true)
return "err@组织编号不能为空.";
BP.WF.Admin.Org org = new BP.WF.Admin.Org();
org.No = orgNo;
if (org.RetrieveFromDBSources() == 0)
return "err@组织编号错误:" + orgNo;
}
try
{
AtPara ap = new AtPara(keyVals);
//增加部门.
BP.Port.Station en = new BP.Port.Station();
en.No = no;
if (en.RetrieveFromDBSources() == 0)
{
en.Name = name;
en.OrgNo = orgNo;
en.Insert();
}
foreach (string item in ap.HisHT.Keys)
{
if (DataType.IsNullOrEmpty(item) == true)
continue;
en.SetValByKey(item, ap.GetValStrByKey(item));
}
en.Name = name;
en.OrgNo = orgNo;
en.Update();
DBAccess.RunSQL("UPDATE Port_Station SET OrgNo='" + orgNo + "' WHERE No='" + no + "'");
return "["+name+"]保存成功";
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
}
/// <summary>
/// 删除部门.
/// </summary>
/// <param name="no">删除指定的部门编号</param>
/// <returns></returns>
public static string Port_Station_Delete(string no)
{
try
{
if (BP.Web.WebUser.IsAdmin == false)
return "err@[" + BP.Web.WebUser.Name + "]不是管理员不能删除岗位信息";
//删除部门.
BP.Port.Station dept = new BP.Port.Station(no);
dept.Delete();
return "删除成功";
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
}
#endregion 关于组织的接口.
}
}