H3 BPM如何批量导入用户和组织?

简介:

问题:如何批量导入用户和组织?

 

解答

进入后台管理,点开组织机构下面的同步设置。

如果没有现成的AD用户,就做个EXCEL表导入数据到数据库

Excel导入组织架构的模板和关键代码

 

前台代码:

<div>

            <asp:FileUpload ID="FileUpload7" runat="server" Width="200px" /><div>

                 

  

                组织信息导入

                <asp:TextBox runat="server" ID="TextBox3" Width="100px"/>   

  <asp:Button ID="Button7" runat="server" Text="导入" Width="100px" OnClick="Button7_Click" />

            </div>

        </div>

  

  

后台代码:

protected void Button7_Click(object sender, EventArgs e)

    {

        IWorkbook workbook = null;

        if (FileUpload7.HasFile)

        {

            string upfile = Server.MapPath("") + "/Temp/" + FileUpload7.PostedFile.FileName;

            if (!Directory.Exists(Server.MapPath("") + "/Temp/"))

            {

                Directory.CreateDirectory(Server.MapPath("") + "/Temp/");

            }

            FileUpload7.PostedFile.SaveAs(upfile);

  

  

            string newpath = upfile;

  

            using (FileStream fs = File.OpenRead(newpath)) //打开myxls.xls文件

            {

                if (FileUpload7.PostedFile.FileName.IndexOf(".xlsx") > 0) // 2007版本

                    workbook = new XSSFWorkbook(fs);

                else if (FileUpload7.PostedFile.FileName.IndexOf(".xls") > 0) // 2003版本

                    workbook = new HSSFWorkbook(fs);

  

  

                #region 导入组织信息

  

  

                ISheet sheet = workbook.GetSheetAt(0); //读取当前表数据

                for (int j = 1; j <= sheet.LastRowNum; j++) //LastRowNum 是当前表的总行数

                {

                    IRow row = sheet.GetRow(j); //读取当前行数据

                    if (row != null&&row.Cells.Count>0)

                    {

  

  

                        #region 导入单位信息

  

  

                        var code = row.Cells[0].StringCellValue.Trim();

                        var parentid = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.Company.CompanyID;

                        var name = row.Cells[2].StringCellValue.Trim();

  

  

                        var unit = new OThinker.Organization.OrganizationUnit()

                        {

                            ObjectID = Guid.NewGuid().ToString(),

                            Code = code,

                            CompanyID = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.Company.CompanyID,

                            Name = name,

                            ParentID = parentid,

                            // Sort Key

                            SortKey = j,

                            // 类型

                            CategoryID = null

  

                        };

                        // 写入服务器

                        var result = OThinker.Organization.HandleResult.SUCCESS;

  

                        if (OThinker.H3.WorkSheet.AppUtility.Engine.Organization.GetUnitByCode(code) != null)

                        {

                            result = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.UpdateUnit(null, unit);

                        }

                        else

                        {

                            result = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.AddUnit(null, unit);

  

                        }

                        if (result != OThinker.Organization.HandleResult.SUCCESS)

                        {

                            OThinker.H3.WorkSheet.AppUtility.Engine.LogWriter.Write(name);

  

                        }

  

                        #endregion

                    }

                }

  

                #endregion

  

                #region 导入用户信息

                sheet = workbook.GetSheetAt(1); //读取当前表数据

                for (int j = 1; j <= sheet.LastRowNum; j++) //LastRowNum 是当前表的总行数

                {

                    IRow row = sheet.GetRow(j); //读取当前行数据

                    if (row != null && row.Cells.Count > 0)

                    {

  

                        #region 导入单位信息

  

                        var oucode = row.Cells[0].StringCellValue.Trim();

  

                        var code = row.Cells[1].StringCellValue.Trim();

                        var parentou = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.GetUnitByCode(oucode);

  

                        var name = row.Cells[2].StringCellValue.Trim();

                        var employeenumber = row.Cells[3].ToString().Trim().Replace(" ", "");

                        var birthday = row.Cells[4].DateCellValue;

  

                        var email = row.Cells[5].ToString().Trim();

                        var officemobile = row.Cells[6]==null?"": row.Cells[6].ToString().Trim();

  

                        var unit = new OThinker.Organization.User()

                        {

                            ObjectID = Guid.NewGuid().ToString(),

                            Code = code,

                            CompanyID = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.Company.CompanyID,

                            Name = name,

                            ParentID = parentou == null ?

OThinker.H3.WorkSheet.AppUtility.Engine.Organization.Company.CompanyID :

                            parentou.ObjectID,

                            // Sort Key

                            SortKey = j,

                            // 类型

                            CategoryID = null,

                            EmployeeNumber = employeenumber,

                            OfficePhone = officemobile,

                            Email = email,

                            Birthday = birthday

  

                        };

                        // 写入服务器

                        OThinker.Organization.HandleResult result = OThinker.Organization.HandleResult.SUCCESS;

  

                        if (OThinker.H3.WorkSheet.AppUtility.Engine.Organization.GetUserByEmployeeNumber(code) != null)

                        {

                            result = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.UpdateUnit(null, unit);

                        }

                        else

                        {

                            result = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.AddUnit(null, unit);

  

                         }

                        if (result != OThinker.Organization.HandleResult.SUCCESS)

                        {

                            OThinker.H3.WorkSheet.AppUtility.Engine.LogWriter.Write(name);

  

  

                        }

  

                        #endregion

  

                    }

                }

                #endregion

                File.Delete(upfile);

            }

        }

  

  

}

 

Excel整理模板

wKioL1jlsxjiFLGFAABO45EGs-Y071.png-wh_50 









本文转自 lwl_BPM  51CTO博客,原文链接:http://blog.51cto.com/12438115/1913329,如需转载请自行联系原作者
目录
相关文章
|
13天前
|
数据采集 数据可视化 算法
深入解析ERP系统的业务智能与报表分析模块
深入解析ERP系统的业务智能与报表分析模块
19 3
|
搜索推荐 数据管理 开发者
合同管理的高级流程设计|学习笔记
快速学习合同管理的高级流程设计
239 0
合同管理的高级流程设计|学习笔记
|
数据采集 机器学习/深度学习 算法
数据治理之参考数据与主数据管理
最近凑巧参与了一次某行业的业务共创会议,期间讨论到了主数据系统,还有我们该如何参与主数据系统建设的话题。说实话,我一直以为我不会有机会参与到主数据与参考数据系统的话题中去,所以,又去把DAMA的书籍翻了翻。顺便也重新思考了一下主数据与参考数据这个数据治理的课题。
2497 1
数据治理之参考数据与主数据管理
主数据SAP Cloud for Customer产品主数据上维护的附件建模介绍
主数据SAP Cloud for Customer产品主数据上维护的附件建模介绍
主数据SAP Cloud for Customer产品主数据上维护的附件建模介绍
SAP CRM和C4C的客户主数据修改历史记录查询
SAP CRM和C4C的客户主数据修改历史记录查询
218 0
|
存储 数据库
如何通过阅读代码的方式查出SAP ERP和CRM里物料主数据描述信息的数据库存储表
如何通过阅读代码的方式查出SAP ERP和CRM里物料主数据描述信息的数据库存储表
101 0
如何通过阅读代码的方式查出SAP ERP和CRM里物料主数据描述信息的数据库存储表
SAP CRM订单抬头级别的组织架构数据是如何自动拷贝到行项目的
SAP CRM订单抬头级别的组织架构数据是如何自动拷贝到行项目的
122 0
SAP CRM订单抬头级别的组织架构数据是如何自动拷贝到行项目的
|
数据库 数据安全/隐私保护
电子商务(电销)平台中用户模块(User)数据库设计明细
原文:电子商务(电销)平台中用户模块(User)数据库设计明细 以下是自己在电子商务系统设计中的订单模块的数据库设计经验总结,而今发表出来一起分享,如有不当,欢迎跟帖讨论~ 用户基础表(user_base)|-- 自动编号 (user_id)|-- 用户名 (user_name)|-- 手机号码|...
1803 0