private string GetStructureTreeTable() { DataTable dt = new DataTable(); dt.Columns.Add("NO", typeof(string)); dt.Columns.Add("PARENTNO", typeof(string)); dt.Columns.Add("NAME", typeof(string)); dt.Columns.Add("TTYPE", typeof(string)); if (BP.WF.Glo.OSModel == OSModel.OneOne) { BP.WF.Port.Depts depts = new BP.WF.Port.Depts(); depts.RetrieveAll(); BP.WF.Port.Stations sts = new BP.WF.Port.Stations(); sts.RetrieveAll(); BP.WF.Port.Emps emps = new BP.WF.Port.Emps(); emps.RetrieveAll(BP.WF.Port.EmpAttr.Name); BP.WF.Port.EmpStations empsts = new BP.WF.Port.EmpStations(); empsts.RetrieveAll(); BP.GPM.DeptEmps empdetps = new BP.GPM.DeptEmps(); empdetps.RetrieveAll(); //部门人员 Dictionary <string, List <string> > des = new Dictionary <string, List <string> >(); //岗位人员 Dictionary <string, List <string> > ses = new Dictionary <string, List <string> >(); //部门岗位 Dictionary <string, List <string> > dss = new Dictionary <string, List <string> >(); BP.WF.Port.Station stt = null; BP.WF.Port.Emp empt = null; foreach (BP.WF.Port.Dept dept in depts) { //增加部门 dt.Rows.Add(dept.No, dept.ParentNo, dept.Name, "DEPT"); des.Add(dept.No, new List <string>()); dss.Add(dept.No, new List <string>()); //获取部门下的岗位 empdetps.Retrieve(BP.GPM.DeptEmpAttr.FK_Dept, dept.No); foreach (BP.GPM.DeptEmp empdept in empdetps) { des[dept.No].Add(empdept.FK_Emp); //判断该人员拥有的岗位 empsts.Retrieve(BP.WF.Port.EmpStationAttr.FK_Emp, empdept.FK_Emp); foreach (BP.WF.Port.EmpStation es in empsts) { if (ses.ContainsKey(es.FK_Station)) { if (ses[es.FK_Station].Contains(es.FK_Emp) == false) { ses[es.FK_Station].Add(es.FK_Emp); } } else { ses.Add(es.FK_Station, new List <string> { es.FK_Emp }); } //增加部门的岗位 if (dss[dept.No].Contains(es.FK_Station) == false) { stt = sts.GetEntityByKey(es.FK_Station) as BP.WF.Port.Station; if (stt == null) { continue; } dss[dept.No].Add(es.FK_Station); dt.Rows.Add(dept.No + "|" + es.FK_Station, dept.No, stt.Name, "STATION"); } } } } foreach (KeyValuePair <string, List <string> > ds in dss) { foreach (string st in ds.Value) { foreach (string emp in ses[st]) { empt = emps.GetEntityByKey(emp) as BP.WF.Port.Emp; if (empt == null) { continue; } dt.Rows.Add(ds.Key + "|" + st + "|" + emp, ds.Key + "|" + st, empt.Name, "EMP"); } } } } else { BP.GPM.Depts depts = new BP.GPM.Depts(); depts.RetrieveAll(); BP.GPM.Stations sts = new BP.GPM.Stations(); sts.RetrieveAll(); BP.GPM.Emps emps = new BP.GPM.Emps(); emps.RetrieveAll(BP.WF.Port.EmpAttr.Name); BP.GPM.DeptStations dss = new BP.GPM.DeptStations(); dss.RetrieveAll(); BP.GPM.DeptEmpStations dess = new BP.GPM.DeptEmpStations(); dess.RetrieveAll(); BP.GPM.Station stt = null; BP.GPM.Emp empt = null; foreach (BP.GPM.Dept dept in depts) { //增加部门 dt.Rows.Add(dept.No, dept.ParentNo, dept.Name, "DEPT"); //增加部门岗位 dss.Retrieve(BP.GPM.DeptStationAttr.FK_Dept, dept.No); foreach (BP.GPM.DeptStation ds in dss) { stt = sts.GetEntityByKey(ds.FK_Station) as BP.GPM.Station; if (stt == null) { continue; } dt.Rows.Add(dept.No + "|" + ds.FK_Station, dept.No, stt.Name, "STATION"); //增加部门岗位人员 dess.Retrieve(BP.GPM.DeptEmpStationAttr.FK_Dept, dept.No, BP.GPM.DeptEmpStationAttr.FK_Station, ds.FK_Station); foreach (BP.GPM.DeptEmpStation des in dess) { empt = emps.GetEntityByKey(des.FK_Emp) as BP.GPM.Emp; if (empt == null) { continue; } dt.Rows.Add(dept.No + "|" + ds.FK_Station + "|" + des.FK_Emp, dept.No + "|" + ds.FK_Station, empt.Name, "EMP"); } } } } return(Newtonsoft.Json.JsonConvert.SerializeObject(dt)); }
/// <summary> /// 获取指定部门下一级子部门及人员列表 /// </summary> /// <returns></returns> public string Dot2DotTreeDeptEmpModel_GetSubDepts() { string parentid = this.GetRequestVal("parentid"); string nid = this.GetRequestVal("nodeid"); if (string.IsNullOrWhiteSpace(parentid)) { throw new Exception("参数parentid不能为空"); } if (string.IsNullOrWhiteSpace(nid)) { throw new Exception("参数nodeid不能为空"); } EasyuiTreeNode node = null; List <EasyuiTreeNode> d = new List <EasyuiTreeNode>(); BP.WF.Template.NodeEmps semps = new BP.WF.Template.NodeEmps(); semps.Retrieve(BP.WF.Template.NodeEmpAttr.FK_Node, int.Parse(nid)); if (BP.WF.Glo.OSModel == OSModel.OneOne) { BP.Port.Dept parentDept = new BP.Port.Dept(parentid); BP.Port.Depts depts = new BP.Port.Depts(); depts.Retrieve(BP.Port.DeptAttr.ParentNo, parentid, BP.Port.DeptAttr.Name); BP.Port.Emps emps = new BP.Port.Emps(); emps.Retrieve(BP.Port.EmpAttr.FK_Dept, parentid, BP.Port.EmpAttr.Name); //增加部门 foreach (BP.Port.Dept dept in depts) { node = new EasyuiTreeNode(); node.id = "DEPT_" + dept.No; node.text = dept.Name; node.iconCls = "icon-department"; node.attributes = new EasyuiTreeNodeAttributes(); node.attributes.No = dept.No; node.attributes.Name = dept.Name; node.attributes.ParentNo = dept.ParentNo; node.attributes.TType = "DEPT"; node.attributes.Code = BP.Tools.chs2py.ConvertStr2Code(dept.Name); node.state = "closed"; node.children = new List <EasyuiTreeNode>(); node.children.Add(new EasyuiTreeNode()); node.children[0].text = "loading..."; d.Add(node); } //增加人员 foreach (BP.Port.Emp emp in emps) { node = new EasyuiTreeNode(); node.id = "EMP_" + parentid + "_" + emp.No; node.text = emp.Name; node.iconCls = "icon-user"; node.@checked = semps.GetEntityByKey(BP.WF.Template.NodeEmpAttr.FK_Emp, emp.No) != null; node.attributes = new EasyuiTreeNodeAttributes(); node.attributes.No = emp.No; node.attributes.Name = emp.Name; node.attributes.ParentNo = parentDept.No; node.attributes.ParentName = parentDept.Name; node.attributes.TType = "EMP"; node.attributes.Code = BP.Tools.chs2py.ConvertStr2Code(emp.Name); d.Add(node); } } else { BP.GPM.Dept parentDept = new BP.GPM.Dept(parentid); BP.GPM.Depts depts = new BP.GPM.Depts(); depts.Retrieve(BP.GPM.DeptAttr.ParentNo, parentid, BP.GPM.DeptAttr.Name); BP.GPM.DeptEmps des = new BP.GPM.DeptEmps(); des.Retrieve(BP.GPM.DeptEmpAttr.FK_Dept, parentid); BP.GPM.Emps emps = new BP.GPM.Emps(); emps.RetrieveAll(BP.GPM.EmpAttr.Name); BP.GPM.Emp emp = null; //增加部门 foreach (BP.GPM.Dept dept in depts) { node = new EasyuiTreeNode(); node.id = "DEPT_" + dept.No; node.text = dept.Name; node.iconCls = "icon-department"; node.attributes = new EasyuiTreeNodeAttributes(); node.attributes.No = dept.No; node.attributes.Name = dept.Name; node.attributes.ParentNo = parentDept.No; node.attributes.ParentName = parentDept.Name; node.attributes.TType = "DEPT"; node.attributes.Code = BP.Tools.chs2py.ConvertStr2Code(dept.Name); node.state = "closed"; node.children = new List <EasyuiTreeNode>(); node.children.Add(new EasyuiTreeNode()); node.children[0].text = "loading..."; d.Add(node); } //增加人员 foreach (BP.GPM.DeptEmp de in des) { emp = emps.GetEntityByKey(BP.GPM.EmpAttr.No, de.FK_Emp) as BP.GPM.Emp; if (emp == null) { continue; } node = new EasyuiTreeNode(); node.id = "EMP_" + parentid + "_" + emp.No; node.text = emp.Name; node.iconCls = "icon-user"; node.@checked = semps.GetEntityByKey(BP.WF.Template.NodeEmpAttr.FK_Emp, emp.No) != null; node.attributes = new EasyuiTreeNodeAttributes(); node.attributes.No = emp.No; node.attributes.Name = emp.Name; node.attributes.ParentNo = parentDept.No; node.attributes.ParentName = parentDept.Name; node.attributes.TType = "EMP"; node.attributes.Code = BP.Tools.chs2py.ConvertStr2Code(emp.Name); d.Add(node); } } return(Newtonsoft.Json.JsonConvert.SerializeObject(d)); }
public override object Do() { string msg = ""; #region 检查数据文件是否完整. string path = "C:\\CCFlowTemplete"; if (System.IO.Directory.Exists(path) == false) { msg += "@错误:约定的目录不存在服务器" + path + ",请把从ccflow备份的文件放入" + path; } //PortTables. string file = path + "\\PortTables.xml"; if (System.IO.File.Exists(file) == false) { msg += "@错误:约定的文件不存在," + file; } //SysTables. file = path + "\\SysTables.xml"; if (System.IO.File.Exists(file) == false) { msg += "@错误:约定的文件不存在," + file; } //FlowTables. file = path + "\\FlowTables.xml"; if (System.IO.File.Exists(file) == false) { msg += "@错误:约定的文件不存在," + file; } #endregion 检查数据文件是否完整. #region 1 装载流程基础表数据. DataSet ds = new DataSet(); ds.ReadXml(path + "\\FlowTables.xml"); //流程类别. FlowSorts sorts = new FlowSorts(); sorts.ClearTable(); DataTable dt = ds.Tables["WF_FlowSort"]; // sorts = QueryObject.InitEntitiesByDataTable(sorts, dt, null) as FlowSorts; foreach (FlowSort item in sorts) { item.DirectInsert(); //插入数据. } #endregion 1 装载流程基础表数据. #region 2 组织结构. ds = new DataSet(); ds.ReadXml(path + "\\PortTables.xml"); //Port_Emp. Emps emps = new Emps(); emps.ClearTable(); dt = ds.Tables["Port_Emp"]; emps = QueryObject.InitEntitiesByDataTable(emps, dt, null) as Emps; foreach (Emp item in emps) { item.DirectInsert(); //插入数据. } //Depts. Depts depts = new Depts(); depts.ClearTable(); dt = ds.Tables["Port_Dept"]; depts = QueryObject.InitEntitiesByDataTable(depts, dt, null) as Depts; foreach (Dept item in depts) { item.DirectInsert(); //插入数据. } //Stations. Stations stas = new Stations(); stas.ClearTable(); dt = ds.Tables["Port_Station"]; stas = QueryObject.InitEntitiesByDataTable(stas, dt, null) as Stations; foreach (Station item in stas) { item.DirectInsert(); //插入数据. } if (BP.Sys.SystemConfig.OSModel == OSModel.OneMore) { //EmpDepts. BP.GPM.DeptEmps eds = new BP.GPM.DeptEmps(); eds.ClearTable(); dt = ds.Tables["Port_DeptEmp"]; eds = QueryObject.InitEntitiesByDataTable(eds, dt, null) as BP.GPM.DeptEmps; foreach (BP.GPM.DeptEmp item in eds) { item.DirectInsert(); //插入数据. } } #endregion 2 组织结构. #region 3 恢复系统数据. ds = new DataSet(); ds.ReadXml(path + "\\SysTables.xml"); //枚举Main. SysEnumMains sems = new SysEnumMains(); sems.ClearTable(); dt = ds.Tables["Sys_EnumMain"]; sems = QueryObject.InitEntitiesByDataTable(sems, dt, null) as SysEnumMains; foreach (SysEnumMain item in sems) { item.DirectInsert(); //插入数据. } //枚举. SysEnums ses = new SysEnums(); ses.ClearTable(); dt = ds.Tables["Sys_Enum"]; ses = QueryObject.InitEntitiesByDataTable(ses, dt, null) as SysEnums; foreach (SysEnum item in ses) { item.DirectInsert(); //插入数据. } ////Sys_FormTree. //BP.Sys.SysFormTrees sfts = new SysFormTrees(); //sfts.ClearTable(); //dt = ds.Tables["Sys_FormTree"]; //sfts = QueryObject.InitEntitiesByDataTable(sfts, dt, null) as SysFormTrees; //foreach (SysFormTree item in sfts) //{ // try // { // item.DirectInsert(); //插入数据. // } // catch // { // } //} #endregion 3 恢复系统数据. #region 4.备份表单相关数据. if (1 == 2) { string pathOfTables = path + "\\SFTables"; System.IO.Directory.CreateDirectory(pathOfTables); SFTables tabs = new SFTables(); tabs.RetrieveAll(); foreach (SFTable item in tabs) { if (item.No.Contains(".")) { continue; } string sql = "SELECT * FROM " + item.No; ds = new DataSet(); ds.Tables.Add(BP.DA.DBAccess.RunSQLReturnTable(sql)); ds.WriteXml(pathOfTables + "\\" + item.No + ".xml"); } } #endregion 4 备份表单相关数据. #region 5.恢复表单数据. //删除所有的流程数据. MapDatas mds = new MapDatas(); mds.RetrieveAll(); foreach (MapData fl in mds) { //if (fl.FK_FormTree.Length > 1 || fl.FK_FrmSort.Length > 1) // continue; fl.Delete(); //删除流程. } //清除数据. SysFormTrees fss = new SysFormTrees(); fss.ClearTable(); // 调度表单文件。 string frmPath = path + "\\Form"; DirectoryInfo dirInfo = new DirectoryInfo(frmPath); DirectoryInfo[] dirs = dirInfo.GetDirectories(); foreach (DirectoryInfo item in dirs) { if (item.FullName.Contains(".svn")) { continue; } string[] fls = System.IO.Directory.GetFiles(item.FullName); if (fls.Length == 0) { continue; } SysFormTree fs = new SysFormTree(); fs.No = item.Name.Substring(0, item.Name.IndexOf('.')); fs.Name = item.Name.Substring(item.Name.IndexOf('.')); fs.ParentNo = "0"; fs.Insert(); foreach (string f in fls) { try { msg += "@开始调度表单模板文件:" + f; System.IO.FileInfo info = new System.IO.FileInfo(f); if (info.Extension != ".xml") { continue; } ds = new DataSet(); ds.ReadXml(f); MapData md = MapData.ImpMapData(ds); md.FK_FrmSort = fs.No; md.Update(); } catch (Exception ex) { msg += "@调度失败,文件:" + f + ",异常信息:" + ex.Message; } } } #endregion 5.恢复表单数据. #region 6.恢复流程数据. //删除所有的流程数据. Flows flsEns = new Flows(); flsEns.RetrieveAll(); foreach (Flow fl in flsEns) { fl.DoDelete(); //删除流程. } dirInfo = new DirectoryInfo(path + "\\Flow\\"); dirs = dirInfo.GetDirectories(); //删除数据. FlowSorts fsRoots = new FlowSorts(); fsRoots.ClearTable(); //生成流程树. FlowSort fsRoot = new FlowSort(); fsRoot.No = "99"; fsRoot.Name = "流程树"; fsRoot.ParentNo = "0"; fsRoot.DirectInsert(); foreach (DirectoryInfo dir in dirs) { if (dir.FullName.Contains(".svn")) { continue; } string[] fls = System.IO.Directory.GetFiles(dir.FullName); if (fls.Length == 0) { continue; } FlowSort fs = new FlowSort(); fs.No = dir.Name.Substring(0, dir.Name.IndexOf('.')); fs.Name = dir.Name.Substring(3); fs.ParentNo = fsRoot.No; fs.Insert(); foreach (string filePath in fls) { msg += "\t\n@开始调度流程模板文件:" + filePath; Flow myflow = BP.WF.Flow.DoLoadFlowTemplate(fs.No, filePath, ImpFlowTempleteModel.AsTempleteFlowNo); msg += "\t\n@流程:" + myflow.Name + "装载成功。"; System.IO.FileInfo info = new System.IO.FileInfo(filePath); myflow.Name = info.Name.Replace(".xml", ""); if (myflow.Name.Substring(2, 1) == ".") { myflow.Name = myflow.Name.Substring(3); } myflow.DirectUpdate(); } } #endregion 6.恢复流程数据. BP.DA.Log.DefaultLogWriteLineInfo(msg); //删除多余的空格. BP.WF.DTS.DeleteBlankGroupField dts = new DeleteBlankGroupField(); dts.Do(); //执行生成签名. GenerSiganture gs = new GenerSiganture(); gs.Do(); return(msg); }
protected void btnImport_Click(object sender, EventArgs e) { if (!file.HasFile) { AlertAndBack("请选择组织结构Excel文件(*.xls)!"); return; } //检查是否是.xls格式,2007格式,下面的方法有问题,暂时限定为xls格式 if (Path.GetExtension(file.PostedFile.FileName).ToLower() != ".xls") { AlertAndBack("组织结构Excel文件必须是*.xls(Microsoft Excel 97-2003格式)!"); return; } var updir = Path.Combine(BP.Sys.SystemConfig.PathOfDataUser, "UploadFile"); if (Directory.Exists(updir) == false) { Directory.CreateDirectory(updir); } var xls = Path.Combine(updir, "Org_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"); file.PostedFile.SaveAs(xls); var excel = new NPOIExcel(xls); //检查是否包含3个表 var sheets = excel.GetSheetNames();// BP.DA.DBLoad.GenerTableNames(xls); if (sheets.Contains("岗位") == false || sheets.Contains("部门") == false || sheets.Contains("人员") == false) { DeleteFile(xls); AlertAndBack("组织结构Excel文件必须由“ccflow组织结构批量导入模板”文件编辑而成,请下载模板文件重新编辑,再进行导入!"); return; } var colStations = new[] { "岗位名称", "岗位类型" }; var colDepts = new[] { "部门名称", "上级部门名称", "部门负责人" }; var colEmps = new[] { "人员帐号", "人员姓名", "人员编号", "部门", "岗位", "职务", "电话", "邮箱", "直属领导" }; var dtStation = excel.ExcelToDataTable("岗位", true); // BP.DA.DBLoad.GetTableByExt(xls, "SELECT * FROM [岗位$]"); //岗位名称*,岗位类型* var dtDept = excel.ExcelToDataTable("部门", true); // BP.DA.DBLoad.GetTableByExt(xls, "SELECT * FROM [部门$]"); //部门名称*,上级部门名称*,部门负责人 var dtEmp = excel.ExcelToDataTable("人员", true); // BP.DA.DBLoad.GetTableByExt(xls, "SELECT * FROM [人员$]"); //人员帐号*,人员姓名*,人员编号,部门*,岗位*,职务,电话,邮箱,直属领导 //初步检查列数 if (dtStation.Columns.Count < 2 || dtDept.Columns.Count < 3 || dtEmp.Columns.Count < 9) { AlertAndBack("组织结构Excel文件结构错误,请重新下载模板文件编辑后,再进行导入!"); return; } //检查岗位列 if (CheckColumns(dtStation, colStations, "岗位") == false) { return; } //检查部门列 if (CheckColumns(dtDept, colDepts, "部门") == false) { return; } //检查人员列 if (CheckColumns(dtEmp, colEmps, "人员") == false) { return; } excel.Dispose(); //return; //获取数据库中已有数据,便于下面的数据对比 var isBPM = BP.WF.Glo.OSModel == BP.WF.OSModel.BPM; var stations = new BP.GPM.Stations(); var stationTypes = new BP.GPM.StationTypes(); var depts = new BP.GPM.Depts(); var emps = new BP.GPM.Emps(); var deptEmpSts = new BP.GPM.DeptEmpStations(); stations.RetrieveAll(); stationTypes.RetrieveAll(); depts.RetrieveAll(); emps.RetrieveAll(); deptEmpSts.RetrieveAll(); //集成模式,涉及数据 var empDepts = new EmpDepts(); var empSts = new EmpStations(); empDepts.RetrieveAll(); empSts.RetrieveAll(); //BPM独立模式,涉及数据 var duties = new BP.GPM.Dutys(); var deptDuties = new BP.GPM.DeptDutys(); var deptSts = new BP.GPM.DeptStations(); var deptEmps = new BP.GPM.DeptEmps(); duties.RetrieveAll(); deptDuties.RetrieveAll(); deptSts.RetrieveAll(); deptEmps.RetrieveAll(); //定义错误记录存储表 var dtStationError = dtStation.Clone(); var dtDeptError = dtDept.Clone(); var dtEmpError = dtEmp.Clone(); DataRow drError = null; bool haveDuty = false; BP.GPM.Station st = null; BP.GPM.StationType stType = null; BP.GPM.Dept dept = null; BP.GPM.Emp emp = null; BP.GPM.DeptEmpStation des = null; BP.Port.EmpDept empDept = null; BP.Port.EmpStation empSt = null; BP.GPM.Duty duty = null; BP.GPM.DeptDuty deptDuty = null; BP.GPM.DeptStation deptSt = null; BP.GPM.DeptEmp deptEmp = null; //检查数据,并将符合规范的数据写入数据库 #region //岗位信息 foreach (DataRow dr in dtStation.Rows) { drError = dtStationError.NewRow(); dtStationError.Rows.Add(drError); //检查岗位,名称、类型必须填写,且名称不能重复 if (IsCellNull(dr, "岗位名称")) { drError["岗位名称"] = "岗位名称必须填写!"; continue; } if (IsCellNull(dr, "岗位类型")) { drError["岗位类型"] = "岗位类型必须填写!"; continue; } //判断数据库中是否已经存在 if (stations.GetEntityByKey(BP.GPM.StationAttr.Name, dr["岗位名称"].ToString()) != null) { continue; } stType = stationTypes.GetEntityByKey(BP.GPM.StationTypeAttr.Name, dr["岗位类型"].ToString()) as BP.GPM.StationType; if (stType == null) { stType = new BP.GPM.StationType { Name = dr["岗位类型"].ToString() }; stType.No = stType.GenerNewNo; stType.Insert(); stationTypes.AddEntity(stType); } st = new BP.GPM.Station { Name = dr["岗位名称"].ToString(), FK_StationType = stType.No }; //st.No = st.GenerNewNo; st.Insert(); stations.AddEntity(st); } #endregion #region //部门信息 BP.GPM.Dept parentDept = null; foreach (DataRow dr in dtDept.Rows) { drError = dtDeptError.NewRow(); dtDeptError.Rows.Add(drError); //检查部门,名称必须填写,且名称不能重复 if (IsCellNull(dr, "部门名称")) { drError["部门名称"] = "部门名称必须填写!"; continue; } if (!IsCellNull(dr, "上级部门名称")) { parentDept = depts.GetEntityByKey(EntityTreeAttr.Name, dr["上级部门名称"].ToString()) as BP.GPM.Dept; if (parentDept == null) { drError["上级部门名称"] = "上级部门名称 填写错误,未找到上级部门“" + dr["上级部门名称"] + "”!"; continue; } } else { parentDept = null; } //判断数据库中是否已经存在 if (depts.GetEntityByKey(EntityTreeAttr.Name, dr["部门名称"].ToString(), EntityTreeAttr.ParentNo, parentDept == null ? "0" : parentDept.No) != null) { continue; } if (parentDept == null) { //增加根部门 dept = depts.GetEntityByKey(EntityTreeAttr.ParentNo, "0") as BP.GPM.Dept; if (dept == null) { //不存在根部门 dept = new BP.GPM.Dept { No = "100", Name = dr["部门名称"].ToString(), ParentNo = "0", Leader = dr["部门负责人"].ToString(), IsDir = false }; dept.Insert(); } else { //已经存在根部门,建立一个同级别的根部门 dept.Name = dr["部门名称"].ToString(); dept.Leader = dr["部门负责人"].ToString(); //var currDept = dept.DoCreateSameLevelNode(); //dept = new BP.GPM.Dept(currDept.No) // { // Name = dr["部门名称"].ToString(), // Leader = dr["部门负责人"].ToString() // }; dept.Update(); } depts.AddEntity(dept); } else { //增加非根部门 var currDept = parentDept.DoCreateSubNode(); dept = new BP.GPM.Dept(currDept.No) { Name = dr["部门名称"].ToString(), Leader = dr["部门负责人"].ToString() }; dept.Update(); depts.AddEntity(dept); } } #endregion #region //人员信息 foreach (DataRow dr in dtEmp.Rows) { drError = dtEmpError.NewRow(); dtEmpError.Rows.Add(drError); #region //检查人员,帐号、姓名、部门、岗位必须填写 if (IsCellNull(dr, "人员帐号")) { drError["人员帐号"] = "人员帐号必须填写!"; continue; } if (IsCellNull(dr, "人员姓名")) { drError["人员姓名"] = "人员姓名必须填写!"; continue; } if (IsCellNull(dr, "部门")) { drError["部门"] = "部门必须填写!"; continue; } if (IsCellNull(dr, "岗位")) { drError["岗位"] = "岗位必须填写!"; continue; } #endregion //判断人员在数据库中是否已经存在 emp = emps.GetEntityByKey(EntityNoAttr.No, dr["人员帐号"].ToString(), EntityNoNameAttr.Name, dr["人员姓名"].ToString()) as BP.GPM.Emp; dept = depts.GetEntityByKey(BP.GPM.DeptAttr.Name, dr["部门"].ToString()) as BP.GPM.Dept; st = stations.GetEntityByKey(BP.GPM.StationAttr.Name, dr["岗位"].ToString()) as BP.GPM.Station; if (dept == null) { drError["部门"] = string.Format("部门填写错误,“{0}” 在部门中未查到!", dr["部门"]); continue; } if (st == null) { drError["岗位"] = string.Format("岗位填写错误,“{0}” 在岗位中未查到!", dr["岗位"]); continue; } if (isBPM) { //BPM模式,Duty,DeptDuty if (!IsCellNull(dr, "职务")) { duty = duties.GetEntityByKey(BP.GPM.DutyAttr.Name, dr["职务"].ToString()) as BP.GPM.Duty; } else { if (duties.Count == 0) { duty = new BP.GPM.Duty { Name = "默认职务" }; duty.Insert(); duties.AddEntity(duty); } else { duty = duties[0] as BP.GPM.Duty; } } if (duty == null) { duty = new BP.GPM.Duty { Name = dr["职务"].ToString() }; //duty.No = duty.GenerNewNo; duty.Insert(); duties.AddEntity(duty); } deptDuty = deptDuties.GetEntityByKey(BP.GPM.DeptDutyAttr.FK_Dept, dept.No, BP.GPM.DeptDutyAttr.FK_Duty, duty.No) as BP.GPM.DeptDuty; if (deptDuty == null) { deptDuty = new BP.GPM.DeptDuty { FK_Dept = dept.No, FK_Duty = duty.No }; deptDuty.Insert(); deptDuties.AddEntity(deptDuty); } } if (emp != null) { //如果人员存在,则判断此人员的部门与岗位,如果部门、岗位不存在,则增加部门岗位关联等 //此处不对已存在人员的其他信息进行比对修改,如人员编号,邮箱,电话等 des = deptEmpSts.GetEntityByKey(BP.GPM.DeptEmpStationAttr.FK_Emp, emp.No, BP.GPM.DeptEmpStationAttr.FK_Dept, dept.No, BP.GPM.DeptEmpStationAttr.FK_Station, st.No) as BP.GPM.DeptEmpStation; if (des != null) { drError["人员帐号"] = drError["人员姓名"] = drError["部门"] = drError["岗位"] = "此人员已经增加过,“人员+部门+岗位”不能重复!"; continue; } } else { //此人员不存在 emp = new BP.GPM.Emp { No = dr["人员帐号"].ToString(), Name = dr["人员姓名"].ToString(), Pass = "******", FK_Dept = dept.No }; if (isBPM) { emp.EmpNo = dr["人员编号"] as string; emp.FK_Duty = duty.No; emp.Email = dr["邮箱"] as string; emp.Tel = dr["电话"] as string; emp.Leader = dr["直属领导"] as string; emp.SetValByKey(BP.GPM.EmpAttr.NumOfDept, 1); } emp.Insert(); emps.AddEntity(emp); } des = new BP.GPM.DeptEmpStation { FK_Emp = emp.No, FK_Dept = dept.No, FK_Station = st.No }; des.Insert(); deptEmpSts.AddEntity(des); if (isBPM) { //BPM模式,DeptStation,DeptEmp deptSt = deptSts.GetEntityByKey(BP.GPM.DeptStationAttr.FK_Dept, dept.No, BP.GPM.DeptStationAttr.FK_Station, st.No) as BP.GPM.DeptStation; if (deptSt == null) { deptSt = new BP.GPM.DeptStation { FK_Dept = dept.No, FK_Station = st.No }; deptSt.Insert(); deptSts.AddEntity(deptSt); } deptEmp = deptEmps.GetEntityByKey(BP.GPM.DeptEmpAttr.FK_Dept, dept.No, BP.GPM.DeptEmpAttr.FK_Emp, emp.No) as BP.GPM.DeptEmp; if (deptEmp == null) { deptEmp = new BP.GPM.DeptEmp { FK_Dept = dept.No, FK_Emp = emp.No, FK_Duty = duty.No }; deptEmp.Insert(); deptEmps.AddEntity(deptEmp); } } else { //集成模式,EmpDept,EmpStation empDept = empDepts.GetEntityByKey(EmpDeptAttr.FK_Dept, dept.No, EmpDeptAttr.FK_Emp, emp.No) as EmpDept; if (empDept == null) { empDept = new EmpDept { FK_Emp = emp.No, FK_Dept = dept.No }; empDept.Insert(); empDepts.AddEntity(empDept); } empSt = empSts.GetEntityByKey(EmpStationAttr.FK_Emp, emp.No, EmpStationAttr.FK_Station, st.No) as EmpStation; if (empSt == null) { empSt = new EmpStation { FK_Emp = emp.No, FK_Station = st.No }; empSt.Insert(); empSts.AddEntity(empSt); } } } #endregion #region //前台输出岗位信息 pub1.AddTableNormal(); pub1.AddTR(); pub1.AddTDGroupTitle("style='text-align:center;width:60px;'", "序"); pub1.AddTDGroupTitle("style='width:140px;'", "名称"); pub1.AddTDGroupTitle("类型"); pub1.AddTREnd(); for (var i = 0; i < dtStation.Rows.Count; i++) { drError = dtStationError.Rows[i]; pub1.AddTR(); pub1.AddTDIdx(i + 1); if (IsCellNull(drError, "岗位名称")) { pub1.AddTD(dtStation.Rows[i]["岗位名称"].ToString()); } else { pub1.AddTD("style='background-color:yellow;color:red;' title='" + drError["岗位名称"] + "'", dtStation.Rows[i]["岗位名称"].ToString()); } if (IsCellNull(drError, "岗位类型")) { pub1.AddTD(dtStation.Rows[i]["岗位类型"].ToString()); } else { pub1.AddTD("style='background-color:yellow;color:red;' title='" + drError["岗位类型"] + "'", dtStation.Rows[i]["岗位类型"].ToString()); } pub1.AddTREnd(); } pub1.AddTableEnd(); #endregion #region //前台输出部门信息 pub2.AddTableNormal(); pub2.AddTR(); pub2.AddTDGroupTitle("style='text-align:center;width:60px;'", "序"); pub2.AddTDGroupTitle("style='width:140px;'", "名称"); pub2.AddTDGroupTitle("style='width:140px;'", "上级名称"); pub2.AddTDGroupTitle("部门负责人"); pub2.AddTREnd(); for (var i = 0; i < dtDept.Rows.Count; i++) { drError = dtDeptError.Rows[i]; pub2.AddTR(); pub2.AddTDIdx(i + 1); if (IsCellNull(drError, "部门名称")) { pub2.AddTD(dtDept.Rows[i]["部门名称"].ToString()); } else { pub2.AddTD("style='background-color:yellow;color:red;' title='" + drError["部门名称"] + "'", dtDept.Rows[i]["部门名称"].ToString()); } if (IsCellNull(drError, "上级部门名称")) { pub2.AddTD(dtDept.Rows[i]["上级部门名称"].ToString()); } else { pub2.AddTD("style='background-color:yellow;color:red;' title='" + drError["上级部门名称"] + "'", dtDept.Rows[i]["上级部门名称"].ToString()); } pub2.AddTD(dtDept.Rows[i]["部门负责人"].ToString()); pub2.AddTREnd(); } pub2.AddTableEnd(); #endregion #region //前台输出人员信息 pub3.AddTableNormal(); pub3.AddTR(); pub3.AddTDGroupTitle("style='text-align:center;width:60px;'", "序"); pub3.AddTDGroupTitle("style='width:120px;'", "帐号"); pub3.AddTDGroupTitle("style='width:100px;'", "姓名"); if (isBPM) { pub3.AddTDGroupTitle("style='width:100px;'", "编号"); } pub3.AddTDGroupTitle("style='width:180px;'", "部门"); if (!isBPM) { pub3.AddTDGroupTitle("岗位"); } else { pub3.AddTDGroupTitle("style='width:100px;'", "岗位"); pub3.AddTDGroupTitle("style='width:100px;'", "职务"); pub3.AddTDGroupTitle("style='width:120px;'", "电话"); pub3.AddTDGroupTitle("style='width:160px;'", "邮箱"); pub3.AddTDGroupTitle("直属领导"); } pub3.AddTREnd(); for (var i = 0; i < dtEmp.Rows.Count; i++) { drError = dtEmpError.Rows[i]; pub3.AddTR(); pub3.AddTDIdx(i + 1); if (IsCellNull(drError, "人员帐号")) { pub3.AddTD(dtEmp.Rows[i]["人员帐号"].ToString()); } else { pub3.AddTD("style='background-color:yellow;color:red;' title='" + drError["人员帐号"] + "'", dtEmp.Rows[i]["人员帐号"].ToString()); } if (IsCellNull(drError, "人员姓名")) { pub3.AddTD(dtEmp.Rows[i]["人员姓名"].ToString()); } else { pub3.AddTD("style='background-color:yellow;color:red;' title='" + drError["人员姓名"] + "'", dtEmp.Rows[i]["人员姓名"].ToString()); } if (isBPM) { pub3.AddTD(dtEmp.Rows[i]["人员编号"].ToString()); } if (IsCellNull(drError, "部门")) { pub3.AddTD(dtEmp.Rows[i]["部门"].ToString()); } else { pub3.AddTD("style='background-color:yellow;color:red;' title='" + drError["部门"] + "'", dtEmp.Rows[i]["部门"].ToString()); } if (IsCellNull(drError, "岗位")) { pub3.AddTD(dtEmp.Rows[i]["岗位"].ToString()); } else { pub3.AddTD("style='background-color:yellow;color:red;' title='" + drError["岗位"] + "'", dtEmp.Rows[i]["岗位"].ToString()); } if (isBPM) { pub3.AddTD(dtEmp.Rows[i]["职务"].ToString()); pub3.AddTD(dtEmp.Rows[i]["电话"].ToString()); pub3.AddTD(dtEmp.Rows[i]["邮箱"].ToString()); pub3.AddTD(dtEmp.Rows[i]["直属领导"].ToString()); } pub3.AddTREnd(); } pub3.AddTableEnd(); #endregion }