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.
978 lines
38 KiB
Plaintext
978 lines
38 KiB
Plaintext
using System;
|
|
using System.Data;
|
|
using BP.DA;
|
|
using BP.WF.Port;
|
|
using BP.Web;
|
|
using System.Linq;
|
|
using System.Collections;
|
|
using BP.Sys;
|
|
using BP.En;
|
|
using BP.Difference;
|
|
using BP.Port;
|
|
|
|
namespace BP.WF.HttpHandler
|
|
{
|
|
/// <summary>
|
|
/// 页面功能实体
|
|
/// </summary>
|
|
public class GPMPage : DirectoryPageBase
|
|
{
|
|
#region 构造函数
|
|
/// <summary>
|
|
/// 构造函数
|
|
/// </summary>
|
|
public GPMPage()
|
|
{
|
|
}
|
|
#endregion 构造函数
|
|
|
|
#region 签名.
|
|
/// <summary>
|
|
/// 图片签名初始化
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string Siganture_Init()
|
|
{
|
|
if (BP.Web.WebUser.NoOfRel == null)
|
|
return "err@登录信息丢失";
|
|
Hashtable ht = new Hashtable();
|
|
ht.Add("No", BP.Web.WebUser.No);
|
|
ht.Add("Name", BP.Web.WebUser.Name);
|
|
ht.Add("FK_Dept", BP.Web.WebUser.FK_Dept);
|
|
ht.Add("FK_DeptName", BP.Web.WebUser.FK_DeptName);
|
|
return BP.Tools.Json.ToJson(ht);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 签名保存
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string Siganture_Save()
|
|
{
|
|
var f = HttpContextHelper.RequestFiles(0);
|
|
|
|
//判断文件类型.
|
|
string fileExt = ",bpm,jpg,jpeg,png,gif,";
|
|
string ext = f.FileName.Substring(f.FileName.LastIndexOf('.') + 1).ToLower();
|
|
if (fileExt.IndexOf(ext + ",") == -1)
|
|
{
|
|
return "err@上传的文件必须是以图片格式:" + fileExt + "类型, 现在类型是:" + ext;
|
|
}
|
|
|
|
try
|
|
{
|
|
string tempFile = BP.Difference.SystemConfig.PathOfWebApp + "DataUser/Siganture/" + this.FK_Emp + ".jpg";
|
|
if (System.IO.File.Exists(tempFile) == true)
|
|
System.IO.File.Delete(tempFile);
|
|
|
|
//f.SaveAs(tempFile);
|
|
HttpContextHelper.UploadFile(f, tempFile);
|
|
|
|
System.Drawing.Image img = System.Drawing.Image.FromFile(tempFile);
|
|
img.Dispose();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return "err@";
|
|
}
|
|
|
|
HttpContextHelper.UploadFile(f, BP.Difference.SystemConfig.PathOfWebApp + "DataUser/Siganture/" + this.FK_Emp + ".jpg");
|
|
return "上传成功!";
|
|
}
|
|
#endregion
|
|
|
|
#region 组织结构维护.
|
|
/// <summary>
|
|
/// 初始化组织结构部门表维护.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string Organization_Init()
|
|
{
|
|
|
|
BP.Port.Depts depts = new BP.Port.Depts();
|
|
string parentNo = this.GetRequestVal("ParentNo");
|
|
if (DataType.IsNullOrEmpty(parentNo) == true)
|
|
parentNo = "0";
|
|
|
|
if (DataType.IsNullOrEmpty(parentNo) == true)
|
|
{
|
|
if (SystemConfig.CCBPMRunModel != CCBPMRunModel.Single)
|
|
parentNo = BP.Web.WebUser.OrgNo;
|
|
else
|
|
parentNo = "0";
|
|
}
|
|
|
|
QueryObject qo = new QueryObject(depts);
|
|
if (SystemConfig.CCBPMRunModel == CCBPMRunModel.Single)
|
|
{
|
|
if (parentNo.Equals("0") == true)
|
|
{
|
|
qo.AddWhere(BP.Port.DeptAttr.ParentNo, parentNo);
|
|
qo.addOr();
|
|
qo.AddWhereInSQL(BP.Port.DeptAttr.ParentNo, "SELECT No From Port_Dept Where ParentNo='0'");
|
|
}
|
|
else
|
|
qo.AddWhere(BP.Port.DeptAttr.ParentNo, parentNo);
|
|
}
|
|
if (SystemConfig.CCBPMRunModel == CCBPMRunModel.GroupInc || SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
|
|
{
|
|
qo.AddWhere(BP.Port.DeptAttr.No, WebUser.OrgNo);
|
|
}
|
|
qo.addOrderBy(BP.Port.DeptAttr.Idx);
|
|
qo.DoQuery();
|
|
|
|
return depts.ToJson();
|
|
|
|
}
|
|
|
|
public string Organization_GetDeptsByParentNo()
|
|
{
|
|
|
|
BP.Port.Depts depts = new BP.Port.Depts();
|
|
QueryObject qo = new QueryObject(depts);
|
|
String parentNo = GetRequestVal("ParentNo");
|
|
qo.AddWhere(BP.Port.DeptAttr.ParentNo, parentNo);
|
|
qo.addOrderBy(BP.Port.DeptAttr.Idx);
|
|
qo.DoQuery();
|
|
return depts.ToJson("dt");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取本部门及人员信息
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string DeptEmp_Init()
|
|
{
|
|
|
|
BP.Port.Depts depts = new BP.Port.Depts();
|
|
BP.Port.Emps emps = new BP.Port.Emps();
|
|
string parentNo = this.GetRequestVal("ParentNo");
|
|
QueryObject qo = new QueryObject(depts);
|
|
if (DataType.IsNullOrEmpty(parentNo) == false)
|
|
{
|
|
if (parentNo.Equals("0") == true)
|
|
{
|
|
emps.RetrieveIn(BP.Port.EmpAttr.FK_Dept, "SELECT No From Port_Dept Where ParentNo='0'");
|
|
qo.AddWhere(BP.Port.DeptAttr.ParentNo, parentNo);
|
|
qo.addOr();
|
|
qo.AddWhereInSQL(BP.Port.DeptAttr.ParentNo, "SELECT No From Port_Dept Where ParentNo='0'");
|
|
|
|
}
|
|
else
|
|
{
|
|
emps.Retrieve(BP.Port.EmpAttr.FK_Dept, parentNo);
|
|
qo.AddWhere(BP.Port.DeptAttr.ParentNo, parentNo);
|
|
qo.addOr();
|
|
qo.AddWhere(BP.Port.DeptAttr.No, parentNo);
|
|
}
|
|
|
|
|
|
}
|
|
qo.addOrderBy(BP.Port.DeptAttr.Idx);
|
|
qo.DoQuery();
|
|
DataSet ds = new DataSet();
|
|
ds.Tables.Add(depts.ToDataTableField("Depts"));
|
|
ds.Tables.Add(emps.ToDataTableField("Emps"));
|
|
return BP.Tools.Json.ToJson(ds);
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取该部门的所有人员
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string LoadDatagridDeptEmp_Init()
|
|
{
|
|
string deptNo = this.GetRequestVal("deptNo");
|
|
if (string.IsNullOrEmpty(deptNo))
|
|
{
|
|
return "{ total: 0, rows: [] }";
|
|
}
|
|
string orderBy = this.GetRequestVal("orderBy");
|
|
|
|
|
|
string searchText = this.GetRequestVal("searchText");
|
|
if (!DataType.IsNullOrEmpty(searchText))
|
|
{
|
|
searchText.Trim();
|
|
}
|
|
string addQue = "";
|
|
if (!string.IsNullOrEmpty(searchText))
|
|
{
|
|
addQue = " AND (pe.No like '%" + searchText + "%' or pe.Name like '%" + searchText + "%') ";
|
|
}
|
|
|
|
string pageNumber = this.GetRequestVal("pageNumber");
|
|
int iPageNumber = string.IsNullOrEmpty(pageNumber) ? 1 : Convert.ToInt32(pageNumber);
|
|
//每页多少行
|
|
string pageSize = this.GetRequestVal("pageSize");
|
|
int iPageSize = string.IsNullOrEmpty(pageSize) ? 9999 : Convert.ToInt32(pageSize);
|
|
|
|
string sql = "(select pe.*,pd.name FK_DutyText from port_emp pe left join port_duty pd on pd.no = pe.fk_duty where pe.no in (select fk_emp from Port_DeptEmp where fk_dept='" + deptNo + "') "
|
|
+ addQue + " ) dbSo ";
|
|
|
|
|
|
return DBPaging(sql, iPageNumber, iPageSize, "No", orderBy);
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 以下算法只包含 oracle mysql sqlserver 三种类型的数据库 qin
|
|
/// </summary>
|
|
/// <param name="dataSource">表名</param>
|
|
/// <param name="pageNumber">当前页</param>
|
|
/// <param name="pageSize">当前页数据条数</param>
|
|
/// <param name="key">计算总行数需要</param>
|
|
/// <param name="orderKey">排序字段</param>
|
|
/// <returns></returns>
|
|
public string DBPaging(string dataSource, int pageNumber, int pageSize, string key, string orderKey)
|
|
{
|
|
string sql = "";
|
|
string orderByStr = "";
|
|
|
|
if (!string.IsNullOrEmpty(orderKey))
|
|
orderByStr = " ORDER BY " + orderKey;
|
|
|
|
switch (DBAccess.AppCenterDBType)
|
|
{
|
|
case DBType.Oracle:
|
|
case DBType.KingBaseR3:
|
|
case DBType.KingBaseR6:
|
|
int beginIndex = (pageNumber - 1) * pageSize + 1;
|
|
int endIndex = pageNumber * pageSize;
|
|
|
|
sql = "SELECT * FROM ( SELECT A.*, ROWNUM RN " +
|
|
"FROM (SELECT * FROM " + dataSource + orderByStr + ") A WHERE ROWNUM <= " + endIndex + " ) WHERE RN >=" + beginIndex;
|
|
break;
|
|
case DBType.MSSQL:
|
|
sql = "SELECT TOP " + pageSize + " * FROM " + dataSource + " WHERE " + key + " NOT IN ("
|
|
+ "SELECT TOP (" + pageSize + "*(" + pageNumber + "-1)) " + key + " FROM " + dataSource + " )" + orderByStr;
|
|
break;
|
|
case DBType.MySQL:
|
|
pageNumber -= 1;
|
|
sql = "select * from " + dataSource + orderByStr + " limit " + pageNumber + "," + pageSize;
|
|
break;
|
|
default:
|
|
throw new Exception("暂不支持您的数据库类型.");
|
|
}
|
|
|
|
DataTable DTable = DBAccess.RunSQLReturnTable(sql);
|
|
|
|
int totalCount = DBAccess.RunSQLReturnCOUNT("select " + key + " from " + dataSource);
|
|
|
|
return DataTableConvertJson.DataTable2Json(DTable, totalCount);
|
|
}
|
|
#endregion
|
|
|
|
#region 获取菜单权限.
|
|
/// <summary>
|
|
/// 获得菜单数据.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string GPM_DB_Menus()
|
|
{
|
|
var appNo = this.GetRequestVal("AppNo");
|
|
|
|
var sql1 = "SELECT No,Name,FK_Menu,ParentNo,UrlExt,Icon,Idx ";
|
|
sql1 += " FROM V_GPM_EmpMenu ";
|
|
sql1 += " WHERE FK_Emp = '" + WebUser.No + "' ";
|
|
sql1 += " AND MenuType = '3' ";
|
|
sql1 += " AND FK_App = '" + appNo + "' ";
|
|
sql1 += " UNION "; //加入不需要权限控制的菜单.
|
|
sql1 += "SELECT No,Name, No as FK_Menu,ParentNo,UrlExt,Icon,Idx";
|
|
sql1 += " FROM GPM_Menu ";
|
|
sql1 += " WHERE MenuCtrlWay=1 ";
|
|
sql1 += " AND MenuType = '3' ";
|
|
sql1 += " AND FK_App = '" + appNo + "' ORDER BY Idx ";
|
|
var dirs = DBAccess.RunSQLReturnTable(sql1);
|
|
dirs.TableName = "Dirs"; //获得目录.
|
|
|
|
var sql2 = "SELECT No,Name,FK_Menu,ParentNo,UrlExt,Icon,Idx ";
|
|
sql2 += " FROM V_GPM_EmpMenu ";
|
|
sql2 += " WHERE FK_Emp = '" + WebUser.No + "'";
|
|
sql2 += " AND MenuType = '4' ";
|
|
sql2 += " AND FK_App = '" + appNo + "' ";
|
|
sql2 += " UNION "; //加入不需要权限控制的菜单.
|
|
sql2 += "SELECT No,Name, No as FK_Menu,ParentNo,UrlExt,Icon,Idx ";
|
|
sql2 += " FROM GPM_Menu "; //加入不需要权限控制的菜单.
|
|
sql2 += " WHERE MenuCtrlWay=1 ";
|
|
sql2 += " AND MenuType = '4' ";
|
|
sql2 += " AND FK_App = '" + appNo + "' ORDER BY Idx ";
|
|
|
|
var menus = DBAccess.RunSQLReturnTable(sql2);
|
|
menus.TableName = "Menus"; //获得菜单.
|
|
|
|
//组装数据.
|
|
DataSet ds = new DataSet();
|
|
ds.Tables.Add(dirs);
|
|
ds.Tables.Add(menus);
|
|
|
|
return BP.Tools.Json.ToJson(ds);
|
|
}
|
|
/// <summary>
|
|
/// 获得OA菜单数据.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string GPM_OA_Menus()
|
|
{
|
|
var appNo = this.GetRequestVal("AppNo");
|
|
|
|
Paras ps = new Paras();
|
|
string dbstr = BP.Difference.SystemConfig.AppCenterDBVarStr;
|
|
ps.SQL = "SELECT No FROM GPM_Menu WHERE MenuType=" + dbstr + "MenuType AND FK_App=" + dbstr + "FK_App";
|
|
ps.Add("MenuType", 2);
|
|
ps.Add("FK_App", appNo);
|
|
|
|
string ParentNo = DBAccess.RunSQLReturnString(ps);
|
|
|
|
if (string.IsNullOrWhiteSpace(ParentNo))
|
|
return "[]";
|
|
|
|
var sql1 = "SELECT No,Name,FK_Menu,MenuType,ParentNo,Url,UrlExt,Tag1,Tag2,Tag3,WebPath,Icon,Idx ";
|
|
sql1 += " FROM v_gpm_empmenu ";
|
|
sql1 += " WHERE FK_Emp = '" + WebUser.No + "' ";
|
|
sql1 += " AND ParentNo = '" + ParentNo + "' ";
|
|
sql1 += " AND FK_App = '" + appNo + "' ";
|
|
sql1 += " UNION "; //加入不需要权限控制的菜单.
|
|
sql1 += "SELECT No,Name, No as FK_Menu,MenuType,ParentNo,Url,UrlExt,Tag1,Tag2,Tag3,WebPath,Icon,Idx";
|
|
sql1 += " FROM GPM_Menu ";
|
|
sql1 += " WHERE MenuCtrlWay=1 ";
|
|
sql1 += " AND ParentNo = '" + ParentNo + "' ";
|
|
sql1 += " AND FK_App = '" + appNo + "' ORDER BY Idx ";
|
|
var dirs = DBAccess.RunSQLReturnTable(sql1);
|
|
dirs.TableName = "Dirs"; //获得目录.
|
|
|
|
var sql2 = "SELECT No,Name,FK_Menu,MenuType,ParentNo,Url,UrlExt,Tag1,Tag2,Tag3,WebPath,Icon,Idx,openway ";
|
|
sql2 += " FROM v_gpm_empmenu ";
|
|
sql2 += " WHERE FK_Emp = '" + WebUser.No + "'";
|
|
sql2 += " AND ParentNo != '" + ParentNo + "' ";
|
|
sql2 += " AND FK_App = '" + appNo + "' ";
|
|
sql2 += " UNION "; //加入不需要权限控制的菜单.
|
|
sql2 += "SELECT No,Name, No as FK_Menu,MenuType,ParentNo,Url,UrlExt,Tag1,Tag2,Tag3,WebPath,Icon,Idx,openway ";
|
|
sql2 += " FROM GPM_Menu "; //加入不需要权限控制的菜单.
|
|
sql2 += " WHERE MenuCtrlWay=1 ";
|
|
sql2 += " AND ParentNo != '" + ParentNo + "' ";
|
|
sql2 += " AND FK_App = '" + appNo + "' ORDER BY Idx ";
|
|
|
|
var menus = DBAccess.RunSQLReturnTable(sql2);
|
|
menus.TableName = "Menus"; //获得菜单.
|
|
|
|
//组装数据.
|
|
DataSet ds = new DataSet();
|
|
ds.Tables.Add(dirs);
|
|
ds.Tables.Add(menus);
|
|
|
|
return BP.Tools.Json.ToJson(ds);
|
|
}
|
|
/// <summary>
|
|
/// 是否可以执行当前工作
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string GPM_IsCanExecuteFunction()
|
|
{
|
|
var dt = GPM_GenerFlagDB(); //获得所有的标记.
|
|
var funcNo = this.GetRequestVal("FuncFlag");
|
|
foreach (DataRow dr in dt.Rows)
|
|
{
|
|
if (dr[0].ToString().Equals(funcNo) == true)
|
|
return "1";
|
|
}
|
|
return "0";
|
|
}
|
|
/// <summary>
|
|
/// 获得所有的权限标记.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public DataTable GPM_GenerFlagDB()
|
|
{
|
|
var appNo = this.GetRequestVal("AppNo");
|
|
var sql2 = "SELECT Flag,Idx";
|
|
sql2 += " FROM V_GPM_EmpMenu ";
|
|
sql2 += " WHERE FK_Emp = '" + WebUser.No + "'";
|
|
sql2 += " AND MenuType = '5' ";
|
|
sql2 += " AND FK_App = '" + appNo + "' ";
|
|
sql2 += " UNION "; //加入不需要权限控制的菜单.
|
|
sql2 += "SELECT Flag,Idx ";
|
|
sql2 += " FROM GPM_Menu "; //加入不需要权限控制的菜单.
|
|
sql2 += " WHERE MenuCtrlWay=1 ";
|
|
sql2 += " AND MenuType = '5' ";
|
|
sql2 += " AND FK_App = '" + appNo + "' ORDER BY Idx ";
|
|
DataTable dt = DBAccess.RunSQLReturnTable(sql2);
|
|
return dt;
|
|
}
|
|
/// <summary>
|
|
/// 获得所有权限的标记
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string GPM_AutoHidShowPageElement()
|
|
{
|
|
var dt = GPM_GenerFlagDB(); //获得所有的标记.
|
|
return BP.Tools.Json.ToJson(dt);
|
|
}
|
|
/// <summary>
|
|
/// 组织结构查询
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string GPM_Search()
|
|
{
|
|
var searchKey = this.GetRequestVal("searchKey");
|
|
var sql = "SELECT e.no AS \"No\",e.name AS \"Name\",d.No AS FK_Dept,d.Name AS deptName,e.Email AS Email,e.Tel AS Tel from Port_Dept d,Port_Emp e " +
|
|
"where d.No=e.FK_Dept AND (e.No LIKE '%" + searchKey + "%' or e.NAME LIKE '%" + searchKey + "%' or d.Name LIKE '%" + searchKey + "%' or e.Tel LIKE '%" + searchKey + "%')";
|
|
if (DataType.IsNullOrEmpty(WebUser.OrgNo) == false)
|
|
sql += " AND e.OrgNo='" + WebUser.OrgNo + "'";
|
|
DataTable dt = DBAccess.RunSQLReturnTable(sql);
|
|
return BP.Tools.Json.ToJson(dt);
|
|
}
|
|
#endregion
|
|
|
|
public string Template_Save()
|
|
{
|
|
if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
|
|
throw new Exception("err@仅仅导入单组织版.");
|
|
//var files = HttpContextHelper.RequestFiles();
|
|
//string ext = ".xls";
|
|
//string fileName = System.IO.Path.GetFileName(files[0].FileName);
|
|
//if (fileName.Contains(".xlsx"))
|
|
// ext = ".xlsx";
|
|
|
|
////设置文件名
|
|
//string fileNewName = DateTime.Now.ToString("yyyyMMddHHmmssff") + ext;
|
|
|
|
////文件存放路径
|
|
//string filePath = BP.Difference.SystemConfig.PathOfTemp + fileNewName;
|
|
//HttpContextHelper.UploadFile(files[0], filePath);
|
|
|
|
string filePath = @"D:\ccflow组织结构批量导入模板.xls";
|
|
|
|
#region 获得数据源.
|
|
var sheetNameList = BP.DA.DBLoad.GenerTableNames(filePath).ToList();
|
|
if (sheetNameList.Count < 3 || sheetNameList.Contains("部门$") == false || sheetNameList.Contains("角色$") == false || sheetNameList.Contains("人员$") == false)
|
|
throw new Exception("excel不符合要求");
|
|
|
|
//获得部门数据.
|
|
DataTable dtDept = BP.DA.DBLoad.ReadExcelFileToDataTable(filePath, sheetNameList.IndexOf("部门$"));
|
|
for (int i = 0; i < dtDept.Columns.Count; i++)
|
|
{
|
|
string name = dtDept.Columns[i].ColumnName;
|
|
name = name.Replace(" ", "");
|
|
name = name.Replace("*", "");
|
|
dtDept.Columns[i].ColumnName = name;
|
|
}
|
|
|
|
//获得角色数据.
|
|
DataTable dtStation = BP.DA.DBLoad.ReadExcelFileToDataTable(filePath, sheetNameList.IndexOf("角色$"));
|
|
for (int i = 0; i < dtStation.Columns.Count; i++)
|
|
{
|
|
string name = dtStation.Columns[i].ColumnName;
|
|
name = name.Replace(" ", "");
|
|
name = name.Replace("*", "");
|
|
dtStation.Columns[i].ColumnName = name;
|
|
}
|
|
|
|
//获得人员数据.
|
|
DataTable dtEmp = BP.DA.DBLoad.ReadExcelFileToDataTable(filePath, sheetNameList.IndexOf("人员$"));
|
|
for (int i = 0; i < dtEmp.Columns.Count; i++)
|
|
{
|
|
string name = dtEmp.Columns[i].ColumnName;
|
|
name = name.Replace(" ", "");
|
|
name = name.Replace("*", "");
|
|
dtEmp.Columns[i].ColumnName = name;
|
|
}
|
|
|
|
|
|
#endregion 获得数据源.
|
|
|
|
#region 检查是否有根目录为 0 的数据?
|
|
//检查数据的完整性.
|
|
//1.检查是否有根目录为0的数据?
|
|
var num = 0;
|
|
bool isHave = false;
|
|
foreach (DataRow dr in dtDept.Rows)
|
|
{
|
|
string str1 = dr[0] as string;
|
|
if (DataType.IsNullOrEmpty(str1) == true)
|
|
continue;
|
|
|
|
num++;
|
|
string str = dr[1] as string;
|
|
if (str == null || str.Equals(DBNull.Value))
|
|
return "err@导入出现数据错误:" + str1 + "的.上级部门名称-不能用空行的数据, 第[" + num + "]行数据.";
|
|
|
|
if (str.Equals("0") == true || str.Equals("root") == true)
|
|
{
|
|
isHave = true;
|
|
break;
|
|
}
|
|
}
|
|
if (isHave == false)
|
|
return "err@导入数据没有找到部门根目录节点.";
|
|
#endregion 检查是否有根目录为0的数据
|
|
|
|
#region 检查部门名称是否重复?
|
|
string deptStrs = "";
|
|
foreach (DataRow dr in dtDept.Rows)
|
|
{
|
|
string deptName = dr[0] as string;
|
|
if (DataType.IsNullOrEmpty(deptName) == true)
|
|
continue;
|
|
|
|
if (deptStrs.Contains("," + deptName + ",") == true)
|
|
return "err@部门名称:" + deptName + "重复.";
|
|
|
|
//加起来..
|
|
deptStrs += "," + deptName + ",";
|
|
}
|
|
#endregion 检查部门名称是否重复?
|
|
|
|
#region 检查人员帐号是否重复?
|
|
string emps = "";
|
|
foreach (DataRow dr in dtEmp.Rows)
|
|
{
|
|
string empNo = dr[0] as string;
|
|
if (DataType.IsNullOrEmpty(empNo) == true)
|
|
continue;
|
|
|
|
if (emps.Contains("," + empNo + ",") == true)
|
|
return "err@人员帐号:" + empNo + "重复.";
|
|
|
|
//加起来..
|
|
emps += "," + empNo + ",";
|
|
}
|
|
#endregion 检查人员帐号是否重复?
|
|
|
|
#region 检查角色名称是否重复?
|
|
string staStrs = "";
|
|
foreach (DataRow dr in dtStation.Rows)
|
|
{
|
|
string staName = dr[0] as string;
|
|
if (DataType.IsNullOrEmpty(staName) == true)
|
|
continue;
|
|
|
|
if (staStrs.Contains("," + staName + ",") == true)
|
|
return "err@角色名称:" + staName + "重复.";
|
|
|
|
//加起来..
|
|
staStrs += "," + staName + ",";
|
|
}
|
|
#endregion 检查角色名称是否重复?
|
|
|
|
#region 检查人员的部门名称是否存在于部门数据里?
|
|
int idx = 0;
|
|
foreach (DataRow dr in dtEmp.Rows)
|
|
{
|
|
string emp = dr[0] as string;
|
|
if (DataType.IsNullOrEmpty(emp) == true)
|
|
continue;
|
|
|
|
idx++;
|
|
//去的部门编号.
|
|
string strs = dr["部门名称"] as string;
|
|
if (DataType.IsNullOrEmpty(strs) == true)
|
|
return "err@第[" + idx + "]行,人员[" + emp + "]部门不能为空:" + strs + ".";
|
|
|
|
string[] mystrs = strs.Split(',');
|
|
foreach (string str in mystrs)
|
|
{
|
|
if (DataType.IsNullOrEmpty(str) == true)
|
|
continue;
|
|
|
|
if (str.Equals("0") || str.Equals("root") == true)
|
|
continue;
|
|
|
|
//先看看数据是否有?
|
|
BP.Port.Dept dept = new BP.Port.Dept();
|
|
if (dept.Retrieve("Name", str) == 1)
|
|
continue;
|
|
|
|
//从xls里面判断.
|
|
isHave = false;
|
|
foreach (DataRow drDept in dtDept.Rows)
|
|
{
|
|
if (str.Equals(drDept[0].ToString()) == true)
|
|
{
|
|
isHave = true;
|
|
break;
|
|
}
|
|
}
|
|
if (isHave == false)
|
|
return "err@第[" + idx + "]行,人员[" + emp + "]部门名[" + str + "],不存在模版里。";
|
|
}
|
|
}
|
|
#endregion 检查人员的部门名称是否存在于部门数据里
|
|
|
|
#region 检查人员的角色名称是否存在于角色数据里?
|
|
idx = 0;
|
|
foreach (DataRow dr in dtEmp.Rows)
|
|
{
|
|
string emp = dr[0] as string;
|
|
if (DataType.IsNullOrEmpty(emp) == true)
|
|
continue;
|
|
|
|
idx++;
|
|
|
|
//角色名称..
|
|
string strs = dr["角色名称"] as string;
|
|
if (DataType.IsNullOrEmpty(strs) == true)
|
|
continue;
|
|
|
|
//判断角色.
|
|
string[] mystrs = strs.Split(',');
|
|
foreach (string str in mystrs)
|
|
{
|
|
if (DataType.IsNullOrEmpty(str) == true)
|
|
continue;
|
|
|
|
//先看看数据是否有?
|
|
BP.Port.Station stationEn = new BP.Port.Station();
|
|
if (stationEn.Retrieve("Name", str) == 1)
|
|
continue;
|
|
|
|
//从 xls 判断.
|
|
isHave = false;
|
|
foreach (DataRow drSta in dtStation.Rows)
|
|
{
|
|
if (str.Equals(drSta[0].ToString()) == true)
|
|
{
|
|
isHave = true;
|
|
break;
|
|
}
|
|
}
|
|
if (isHave == false)
|
|
return "err@第[" + idx + "]行,人员[" + emp + "]角色名称[" + str + "],不存在模版里。";
|
|
}
|
|
}
|
|
#endregion 检查人员的部门名称是否存在于部门数据里
|
|
|
|
#region 检查部门负责人是否存在于人员列表里?
|
|
string empStrs = ",";
|
|
foreach (DataRow item in dtEmp.Rows)
|
|
{
|
|
empStrs += item[0].ToString() + ",";
|
|
}
|
|
idx = 0;
|
|
foreach (DataRow dr in dtDept.Rows)
|
|
{
|
|
string empNo = dr[2] as string;
|
|
if (DataType.IsNullOrEmpty(empNo) == true)
|
|
continue;
|
|
|
|
idx++;
|
|
if (empStrs.Contains("," + empNo + ",") == false)
|
|
return "err@部门负责人[" + empNo + "]不存在与人员表里,第[" + idx + "]行.";
|
|
}
|
|
#endregion 检查部门负责人是否存在于人员列表里
|
|
|
|
#region 检查直属领导帐号是否存在于人员列表里?
|
|
idx = 0;
|
|
foreach (DataRow dr in dtEmp.Rows)
|
|
{
|
|
string empNo = dr[6] as string;
|
|
if (DataType.IsNullOrEmpty(empNo) == true)
|
|
continue;
|
|
|
|
idx++;
|
|
if (empStrs.Contains("," + empNo + ",") == false)
|
|
return "err@部门负责人[" + empNo + "]不存在与人员表里,第[" + idx + "]行.";
|
|
}
|
|
#endregion 检查部门负责人是否存在于人员列表里
|
|
|
|
#region 插入数据到 Port_StationType.
|
|
idx = -1;
|
|
foreach (DataRow dr in dtStation.Rows)
|
|
{
|
|
idx++;
|
|
string str = dr[1] as string;
|
|
|
|
//判断是否是空.
|
|
if (DataType.IsNullOrEmpty(str) == true)
|
|
continue;
|
|
|
|
if (str.Equals("角色类型") == true)
|
|
continue;
|
|
|
|
str = str.Trim();
|
|
|
|
//看看数据库是否存在.
|
|
BP.Port.StationType st = new BP.Port.StationType();
|
|
if (st.IsExit("Name", str) == false)
|
|
{
|
|
st.Name = str;
|
|
st.OrgNo = BP.Web.WebUser.OrgNo;
|
|
st.No = DBAccess.GenerGUID();
|
|
st.Insert();
|
|
}
|
|
}
|
|
#endregion 插入数据到 Port_StationType.
|
|
|
|
#region 插入数据到 Port_Station.
|
|
idx = -1;
|
|
foreach (DataRow dr in dtStation.Rows)
|
|
{
|
|
idx++;
|
|
string str = dr[0] as string;
|
|
|
|
//判断是否是空.
|
|
if (DataType.IsNullOrEmpty(str) == true)
|
|
continue;
|
|
|
|
if (str.Equals("角色名称") == true)
|
|
continue;
|
|
|
|
|
|
//获得类型的外键的编号.
|
|
string stationTypeName = dr[1].ToString().Trim();
|
|
BP.Port.StationType st = new BP.Port.StationType();
|
|
if (st.Retrieve("Name", stationTypeName) == 0)
|
|
return "err@系统出现错误,没有找到角色类型[" + stationTypeName + "]的数据.";
|
|
|
|
//看看数据库是否存在.
|
|
BP.Port.Station sta = new BP.Port.Station();
|
|
sta.Name = str;
|
|
sta.Idx = idx;
|
|
|
|
//不存在就插入.
|
|
if (sta.IsExit("Name", str) == false)
|
|
{
|
|
sta.OrgNo = BP.Web.WebUser.OrgNo;
|
|
sta.FK_StationType = st.No;
|
|
sta.No = DBAccess.GenerGUID();
|
|
sta.Insert();
|
|
}
|
|
else
|
|
{
|
|
//存在就更新.
|
|
sta.FK_StationType = st.No;
|
|
sta.Update();
|
|
}
|
|
}
|
|
#endregion 插入数据到 Port_Station.
|
|
|
|
#region 插入数据到 Port_Dept.
|
|
idx = -1;
|
|
foreach (DataRow dr in dtDept.Rows)
|
|
{
|
|
//获得部门名称.
|
|
string deptName = dr[0] as string;
|
|
if (deptName.Equals("部门名称") == true)
|
|
continue;
|
|
|
|
string parentDeptName = dr[1] as string;
|
|
string leader = dr[2] as string;
|
|
|
|
//说明是根目录.
|
|
if (parentDeptName.Equals("0") == true || parentDeptName.Equals("root") == true)
|
|
{
|
|
BP.Port.Dept root = new BP.Port.Dept();
|
|
root.No = BP.Web.WebUser.FK_Dept;
|
|
if (root.RetrieveFromDBSources() == 0)
|
|
return "err@没有找到根目录节点,请联系管理员。";
|
|
|
|
root.Name = deptName;
|
|
root.Update();
|
|
continue;
|
|
}
|
|
|
|
|
|
//先求出来父节点.
|
|
BP.Port.Dept parentDept = new BP.Port.Dept();
|
|
int i = parentDept.Retrieve("Name", parentDeptName);
|
|
if (i == 0)
|
|
return "err@没有找到当前部门[" + deptName + "]的上一级部门[" + parentDeptName + "]";
|
|
|
|
BP.Port.Dept myDept = new BP.Port.Dept();
|
|
|
|
//如果数据库存在.
|
|
i = parentDept.Retrieve("Name", deptName);
|
|
if (i >= 1)
|
|
continue;
|
|
|
|
//插入部门.
|
|
myDept.Name = deptName;
|
|
// myDept.OrgNo = BP.Web.WebUser.OrgNo;
|
|
myDept.No = DBAccess.GenerGUID();
|
|
myDept.ParentNo = parentDept.No;
|
|
myDept.Leader = leader; //领导.
|
|
myDept.Idx = idx;
|
|
myDept.Insert();
|
|
}
|
|
#endregion 插入数据到 Port_Dept.
|
|
|
|
#region 插入到 Port_Emp.
|
|
idx = 0;
|
|
foreach (DataRow dr in dtEmp.Rows)
|
|
{
|
|
string empNo = dr["人员帐号"].ToString();
|
|
string empName = dr["人员姓名"].ToString();
|
|
string deptNames = dr["部门名称"].ToString();
|
|
string deptPaths = dr["部门路径"].ToString();
|
|
|
|
string stationNames = dr["角色名称"].ToString();
|
|
string tel = dr["电话"].ToString();
|
|
string email = dr["邮箱"].ToString();
|
|
string leader = dr["直属领导"].ToString(); //部门领导.
|
|
|
|
BP.Port.Emp emp = new BP.Port.Emp();
|
|
int i = emp.Retrieve("No", empNo);
|
|
if (i >= 1)
|
|
{
|
|
emp.Tel = tel;
|
|
emp.Name = empName;
|
|
emp.Update();
|
|
continue;
|
|
}
|
|
|
|
//找到人员的部门.
|
|
string[] myDeptStrs = deptNames.Split(',');
|
|
BP.Port.Dept dept = new BP.Port.Dept();
|
|
foreach (string deptName in myDeptStrs)
|
|
{
|
|
if (DataType.IsNullOrEmpty(deptName) == true)
|
|
continue;
|
|
|
|
i = dept.Retrieve("Name", deptName);
|
|
if (i <= 0)
|
|
return "err@部门名称不存在." + deptName;
|
|
|
|
BP.Port.DeptEmp de = new BP.Port.DeptEmp();
|
|
de.FK_Dept = dept.No;
|
|
de.FK_Emp = empNo;
|
|
de.OrgNo = WebUser.OrgNo;
|
|
de.setMyPK(de.FK_Dept + "_" + de.FK_Emp);
|
|
de.Delete();
|
|
de.Insert();
|
|
}
|
|
|
|
//插入角色.
|
|
string[] staNames = stationNames.Split(',');
|
|
BP.Port.Station sta = new BP.Port.Station();
|
|
foreach (var staName in staNames)
|
|
{
|
|
if (DataType.IsNullOrEmpty(staName) == true)
|
|
continue;
|
|
|
|
i = sta.Retrieve("Name", staName);
|
|
if (i == 0)
|
|
return "err@角色名称不存在." + staName;
|
|
|
|
BP.Port.DeptEmpStation des = new BP.Port.DeptEmpStation();
|
|
des.FK_Dept = dept.No;
|
|
des.FK_Emp = empNo;
|
|
des.FK_Station = sta.No;
|
|
// des.OrgNo = WebUser.OrgNo;
|
|
des.setMyPK(des.FK_Dept + "_" + des.FK_Emp + "_" + des.FK_Station);
|
|
des.Delete();
|
|
des.Insert();
|
|
}
|
|
|
|
//插入到数据库.
|
|
emp.No = empNo;
|
|
// emp.UserID = empNo;
|
|
emp.Name = empName;
|
|
emp.FK_Dept = dept.No;
|
|
// emp.OrgNo = WebUser.OrgNo;
|
|
emp.Tel = tel;
|
|
//emp.Email = email;
|
|
//emp.Leader = leader;
|
|
//emp.Idx = idx;
|
|
|
|
emp.Insert();
|
|
}
|
|
#endregion 插入到 Port_Emp.
|
|
|
|
|
|
//删除临时文件
|
|
// System.IO.File.Delete(filePath);
|
|
|
|
return "执行完成.";
|
|
}
|
|
|
|
public string EnpDepts_Init()
|
|
{
|
|
String empNo = this.FK_Emp;
|
|
if (DataType.IsNullOrEmpty(empNo) == true)
|
|
return "err@参数FK_Emp不能为空";
|
|
Emp emp = new Emp(empNo);
|
|
DataSet ds = new DataSet();
|
|
string dbstr = SystemConfig.AppCenterDBVarStr;
|
|
//获取当前人员所在的部门及兼职部门
|
|
string sql = "SELECT B.No AS \'FK_Dept\',B.Name AS \'FK_DeptText\',A.MyPK AS \'MyPK\' From Port_DeptEmp A,Port_Dept B WHERE A.FK_Dept=B.No AND A.FK_Emp=" + dbstr + "FK_Emp";
|
|
if (SystemConfig.AppCenterDBType == DBType.PostgreSQL)
|
|
sql = "SELECT B.No AS \"FK_Dept\",B.Name AS \"FK_DeptText\",A.MyPK AS \"MyPK\" From Port_DeptEmp A,Port_Dept B WHERE A.FK_Dept=B.No AND A.FK_Emp=" + dbstr + "FK_Emp";
|
|
if (SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
|
|
sql += " B.OrgNo='" + WebUser.OrgNo + "'";
|
|
Paras ps = new Paras();
|
|
ps.SQL = sql;
|
|
ps.Add("FK_Emp", empNo);
|
|
DataTable dt = DBAccess.RunSQLReturnTable(ps);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
DeptEmp deptEmp = new DeptEmp();
|
|
deptEmp.FK_Dept = emp.FK_Dept;
|
|
deptEmp.FK_Emp = emp.No;
|
|
deptEmp.MyPK = emp.FK_Dept + "_" + emp.No;
|
|
deptEmp.Insert();
|
|
DataRow dr = dt.NewRow();
|
|
dr[0] = emp.FK_Dept;
|
|
dr[1] = emp.FK_DeptText;
|
|
dr[2] = deptEmp.MyPK;
|
|
dt.Rows.Add(dr);
|
|
}
|
|
dt.TableName = "Port_DeptEmp";
|
|
ds.Tables.Add(dt);
|
|
ps.Clear();
|
|
//获取岗位
|
|
sql = "SELECT B.No AS \'FK_Station\',B.Name AS \'FK_StationText\' ,A.FK_Dept AS \'FK_Dept\' From Port_DeptEmpStation A,Port_Station B WHERE A.FK_Station=B.No AND A.FK_Emp=" + dbstr + "FK_Emp";
|
|
if (SystemConfig.AppCenterDBType == DBType.PostgreSQL)
|
|
sql = "SELECT B.No AS \"FK_Station\",B.Name AS \"FK_StationText\" ,A.FK_Dept AS \"FK_Dept\" From Port_DeptEmpStation A,Port_Station B WHERE A.FK_Station=B.No AND A.FK_Emp=" + dbstr + "FK_Emp";
|
|
if (SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
|
|
sql += " B.OrgNo='" + WebUser.OrgNo + "'";
|
|
|
|
ps.SQL = sql;
|
|
ps.Add("FK_Emp", empNo);
|
|
dt = DBAccess.RunSQLReturnTable(ps);
|
|
dt.TableName = "Port_DeptEmpStation";
|
|
ds.Tables.Add(dt);
|
|
return BP.Tools.Json.ToJson(ds);
|
|
}
|
|
|
|
/**
|
|
取消人员部门岗位管理关系
|
|
@return
|
|
*/
|
|
public string DeptEmpStation_Dele()
|
|
{
|
|
string sql = "delete from Port_DeptEmpStation where FK_Emp='" + this.GetRequestVal("FK_Emp") + "' and FK_Dept='" + this.GetRequestVal("FK_Dept") + "'";
|
|
DBAccess.RunSQL(sql);
|
|
return "执行成功 ";
|
|
}
|
|
/// <summary>
|
|
/// 绑定人员
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string BindEmp()
|
|
{
|
|
string deptNo = this.GetRequestVal("DeptNo");
|
|
|
|
Emps emps = new Emps();
|
|
emps.Retrieve("FK_Dept", deptNo,"Idx");
|
|
DataTable dt = emps.ToDataTableField();
|
|
dt.Columns.Add("State");
|
|
|
|
string sql = "SELECT No,Name,Tel,Email FROM Port_Emp A, Port_DeptEmp B WHERE A.No=B.FK_Emp AND B.FK_Dept='"+deptNo+"' AND A.FK_Dept!='"+deptNo+"'";
|
|
DataTable mydt = DBAccess.RunSQLReturnTable(sql);
|
|
foreach (DataRow mydr in mydt.Rows)
|
|
{
|
|
DataRow dr = dt.NewRow();
|
|
dr["No"] = mydr[0];
|
|
dr["Name"] = mydr[1];
|
|
dr["Tel"] = mydr[2];
|
|
dr["Email"] = mydr[3];
|
|
dr["State"] =1; //兼职人员.
|
|
//加入里面.
|
|
dt.Rows.Add(dr);
|
|
}
|
|
return BP.Tools.Json.ToJson(dt);
|
|
}
|
|
}
|
|
}
|