精华内容
下载资源
问答
  • 问题:如何批量导入用户和组织? 解答: 进入后台管理,点开组织机构下面的同步设置。...Excel导入组织架构的模板和关键代码 前台代码: <div> <asp:FileUpload ID="FileUpload7" runat="server"...

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

     

    解答

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

    如果没有现成的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,如需转载请自行联系原作者
    展开全文
  • 最近,和作为校招面试官的同事聊了聊,问他们是如何去考察一个学生的,我简单归为以下几点: 聪明、反应快,这点自不必说,聪明意味着学习能力、适应力强,能够快速胜任工作。 算法不错,代码基本功好,这点其实...

    前言

    金三银四,又是一年校招季。

    经历过,才深知不易。最近,和作为校招面试官的同事聊了聊,问他们是如何去考察一个学生的,我简单归为以下几点:

    • 聪明、反应快,这点自不必说,聪明意味着学习能力、适应力强,能够快速胜任工作。
    • 算法不错,代码基本功好,这点其实考察的是算法能力和代码是否写得优雅。
    • 基础过硬,技术岗面试最核心的还是考察「技术储备」,包括了语言基本功,操作系统、网络、体系结构、系统设计。
    • 语言组织和表达能力,这点很重要,很多同学懂得某个知识点,却很难用简洁准确的语言表述出来。

    想必有很多同学在刷题、刷面经,不过我想说“面经虽好,不要贪杯哦~”,面经可以刷,看看面试官都是怎么提问的,但不要寄希望于原题

    因为面试过程中的问题往往是一环扣一环的,这意味着你需要有足够的技术深度,将知识由点连接成面,而不是停留在相互孤立的知识点上。

    所以还是建议系统性的看书,如果觉得时间不够,可以关注文章里的重点内容。

    接下来是我历时几个月整理出来的Android高级开发面试题以及答案 整理,里面都是一些面试高级工程师必备的知识点,比如:Handler、Activity、Fragment、Service、Android 布局优化、BroadcastReceiver、AsyncTask、Android 事件分发机制、Android View 绘制流程、ANR、Android 内存相关、Android 屏幕适配等等。

    接下来我们来看看这些知识点在面试中那些大厂的面试官是怎么问的?自己又能回答多少出来呢?(有些问题不知道答案的这里由于篇幅原因不方便把答案全部放出来,但是答案我都整理成了一份文档文末可以自行领取~)

    那么,2021年的移动开发,要如何去摸索自己的前进方向呢?

    谈到技术方向,很多作者会去大谈特谈一些完全空洞的未来十年的行业趋势;也有的会一味地鼓励大家转技术方向,转大前端、转后端、转AI;更有些人直接怂恿读者抛弃技术方向,转产品、运营,甚至离开互联网行业。在我看来,这些想法多少有些不负责任,并没有设身处地地考虑大家的实际情况。

    下面阐述一下我的看法。

    1. 不要轻易离开互联网行业
    很简单,多数人来工作是为了挣钱的。而相比很多传统行业而言,互联网领域的薪资依然有着绝对的领先地位,而且,天花板也相对高很多,30岁左右,拿个阿里的P7、P8左右级别,或者去牛逼点的中型企业做技术管理,年薪一两百万问题不大,足够你应对个人及家庭的各种经济压力。相比之下,其他行业很难能保证这样的待遇。

    另外,如果你觉得钱攒够了,还可以选择互联网创业,互联网技术的颠覆性决定了他有非常大的创新空间,而且这些年计算机技术不断发展,物联网、5G、AI、大数据等技术不断成熟并逐步落地,对于想创业的朋友有非常大的想象空间。

    2. 不要轻易离开技术方向
    有些读者技术做久了,遇到了瓶颈,就会考虑离开技术去做产品、运营。当然我并非否定这种选择,我本身是支持技术人去学习产品思维、用户思维。但是如果说直接抛弃技术去转产品,可能风险会很大。这意味着你要抛弃自己多年的技术积累,在一个新的方向从零做起,以后如果再想转回技术,可能已经要被淘汰了。

    当然,也有成功的大佬转型成功,拼多多的黄铮就是技术出身,然后转产品,最后创业。如果你未来也打算创业,那确实可以考虑这样的一条路线。

    3. 不要轻易更换技术方向
    这一点就是最近几年移动开发领域一直在讨论的。有的想转大前端,觉得大前端要一统用户终端开发;有的想转后端,觉得后端有高并发高性能,感觉很有技术深度;有的想转算法、AI,觉得这是未来的趋势,一定要把握住。

    这种思维就是我之前提的“散户思维”:看到哪个火就去买哪个,追涨杀跌。了解股票的朋友知道,这种往往不会有多好的结局。而我比较推崇的是“价值投资”:不要受短期波动影响,如果你看好某只股票,相信它内在的成长价值,就要长期持有,最终收益一定会高于大多数人。

    不要觉得大前端、后端、算法这种就一定高大上,每个领域都是为业务服务的,他们也要写很多的业务代码,并不是天天都在忙着处理高并发、高可用之类看起来金光闪闪的问题。至于选大前端还是选原生,只不过是一种UI展示形式,最终做的都是业务开发,为你的简历带来不了多大的闪光点。

    而移动端这支“股票”,我是看好的。换句话说,除非哪天用户都不用手机了,或者出现了比手机更牛逼的终端了,那时候才需要去担心自己的饭碗。

    最后

    今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。

    最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

    还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

    Android学习PDF+架构视频+面试文档+源码笔记领取

    【Android核心高级技术PDF文档,BAT大厂面试真题解析】

    【算法合集】

    【延伸Android必备知识点】

    【Android部分高级架构视频学习资源】

    [外链图片转存中…(img-lR39Vio3-1618812576677)]

    【Android部分高级架构视频学习资源】

    Android精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

    展开全文
  • 关于架构的感悟

    2016-10-09 09:39:37
    而作为一个架构师,就是为了控制这种风险,相当于我们计划,计划就是为了束缚我们的惰性,按照预期的计划来实施,达到最初的功能需求。架构,就是一个大的决策问题,面对一个项目,如何将它组织起来,然后一...
    
    

    作为一个初级程序员,接到一个项目的时候,首先考虑的是这个功能该如何实现,能不能实现。如此一来,会对需求产生另外一种理解,偏向于用更加简单的方法来处理实际的问题,功能和质量都有点缩水。而作为一个架构师,就是为了控制这种风险,相当于我们做计划表,计划表就是为了束缚我们的惰性,按照预期的计划来实施,达到最初的功能需求。架构,就是一个大的决策问题,面对一个项目,如何将它组织起来,然后一步步实施,最后达到目的。

    小问题容易困扰自己,但大的方向不能错,必须明确。

    将架构设计一下子细致到类,有问题。一、难度太大,不现实;二、工作量太大没必要;三、并发部署、性能安全可伸缩性也没考虑。

    所以,架构设计需要解决的问题有,1.将整个大的抽象框架画出来,整个系统的轮廓勾勒出来,这样整个架构在大的方向上没有太大问题。在《如何解题》这本书中,也谈到过,对于一个问题大的方向把握,有利于问题的解决,从整体思考问题,有时可以让模糊的问题变得清晰。

    2.架构定义出来之后,整个模块、模块之间的交互都定义出来了,然后就可以进行并行开发了。

    展开全文
  • 软件架构是用来描述软件系统框架的语义,它包含了软件系统主要的决策信息,包括软件元素的如何组织如何实现预期的功能、性能、可靠性和质量等,还包括技术选型,集成性,扩展性,一致性等内容。 架构和设计的...

    什么是架构

    软件架构是用来描述软件系统框架的语义,它包含了软件系统主要的决策信息,包括软件元素的如何组织,如何实现预期的功能、性能、可靠性和质量等,还包括技术选型,集成性,扩展性,一致性等内容。


    架构和设计的区别

    1。架构,要分析业务领域的问题,把其中的一些计划、理念、概念转换成计算机领域的表达方式,这跟 设计还不完全是一回事。设计,就是有了一个目标之后,做具体的事情,把这些计划、理念变成程序。而架构是从无到有的,架构师要能“无中生有”地建立一个模 型。设计更像是一种施工人员。


    架构时注意点

    1。项目中的架构必须综合考虑项目组技术水平现状、项目在公司业务层面的地位和影响、是否按技术路线图规划等因素。“每日风险评估”是个很好的控制风险的方法,针对可能出现的风险要清楚地将“影响范围、重要程度、应对策略、解决时限、负责人”列出来,并进行每日复查。必要时升级警报级别,及时让更有权威的干系人进行协调和干预。有时候我们更多的应该是做减法,重要的是我们不做什么而不是要做什么。

    2。对于激烈竞争的电子商务领域来讲,在可控范围内尽快将项目完成并交付市场检验,接受反馈然后再持续改进,远比交付一个虽然“架构完美”但错失市场良机的项目要好。

    展开全文
  • 我们讨论了如何评估架构、什么是好的架构以及可以改进的架构。 我们还将讨论架构如何影响软件开发过程。 面向服务架构和 Web 服务简介 在现实世界中,人类使用服务来让自己的生活变得轻松,而不是自己所有事情,...
  • 一般OA类管理系统,经常涉及到“组织架构”的概念,那么像这种有上下层级关系的数据一般会成树形菜单的方式显示,底层代码必定会用到递归算法。这篇随笔的目的就是要谈谈除了用树形菜单来显示这种上下层级关系的...
  • 前言:不管是GOF的23种设计模式,还是Flower的企业架构... 架构模式 首先我们就来看看,如何更加有效的组织业务规则。 SpecificationPattern(需求规格模式) 这个模式的使用方法就是:把业务规则放在业务类的外面
  • 33.6 示例:NextGen POS的部分架构因素 33.7 艺术:架构性因素的解决 33.8 架构分析主题的总结 33.9 过程:UP中的迭代架构 33.10 参考资料 第34章 逻辑架构精化 34.1 示例:NextGen的逻辑架构 34.2 使用层...
  • 33.6 示例:NextGen POS的部分架构因素 33.7 艺术:架构性因素的解决 33.8 架构分析主题的总结 33.9 过程:UP中的迭代架构 33.10 参考资料 第34章 逻辑架构精化 34.1 示例:NextGen的逻辑架构 34.2 使用层...
  • 33.6 示例:NextGen POS的部分架构因素 33.7 艺术:架构性因素的解决 33.8 架构分析主题的总结 33.9 过程:UP中的迭代架构 33.10 参考资料 第34章 逻辑架构精化 34.1 示例:NextGen的逻辑架构 34.2 使用层...
  • 33.6 示例:NextGen POS的部分架构因素 33.7 艺术:架构性因素的解决 33.8 架构分析主题的总结 33.9 过程:UP中的迭代架构 33.10 参考资料 第34章 逻辑架构精化 34.1 示例:NextGen的逻辑架构 34.2 使用层...
  • 33.6 示例:NextGen POS的部分架构因素 33.7 艺术:架构性因素的解决 33.8 架构分析主题的总结 33.9 过程:UP中的迭代架构 33.10 参考资料 第34章 逻辑架构精化 34.1 示例:NextGen的逻辑架构 34.2 使用层...
  • 33.6 示例:NextGen POS的部分架构因素 33.7 艺术:架构性因素的解决 33.8 架构分析主题的总结 33.9 过程:UP中的迭代架构 33.10 参考资料 第34章 逻辑架构精化 34.1 示例:NextGen的逻辑架构 34.2 使用层...
  • 33.6 示例:NextGen POS的部分架构因素 33.7 艺术:架构性因素的解决 33.8 架构分析主题的总结 33.9 过程:UP中的迭代架构 33.10 参考资料 第34章 逻辑架构精化 34.1 示例:NextGen的逻辑架构 34.2 使用层...
  • 33.6 示例:NextGen POS的部分架构因素 33.7 艺术:架构性因素的解决 33.8 架构分析主题的总结 33.9 过程:UP中的迭代架构 33.10 参考资料 第34章 逻辑架构精化 34.1 示例:NextGen的逻辑架构 34.2 使用层...
  • 包含设计成果/创建功能规格说明书是一个逐步完善的迭代过程 /如果没有功能规格说明书,团队将不知道如何正确地构建解决方案,用户的期望也会难以确定/如果没有功能规格说明书,团队很难对项目的预算和进度做出估计...
  • 分别是业务外观层业务规则层业务实体层现在我想一个多的查看操作,返回A及B中的数据假如A有一个外键指向B,那么在A的实体类ClassA中有一个ClassB的引用,我知道,业务实体层是负责组装业务数据的,...
  • 系统A就只能调用组织架构系统来查询部门下有哪些人员? <p>2、权限问题,微服务权限该如何设计?是专门设计一个权限微服务?比如我要一个考勤系统,不同后台管理员按部门权限查看...
  • 用户希望看到历史可比数据的趋势分析,只有在新旧组织架构均存在的业务才进行报表统计,统计母公司的业务收入。即,将由于组织结构变动引起的所有影响都排除在报表的统计之外,仅对可比数据分析。 建模方法:是将...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 212
精华内容 84
关键字:

如何做组织架构表