`
xy0792
  • 浏览: 90047 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

如何实现EAS的【拥有者权限】和【主管权限】

 
阅读更多

[size=6][b]如何实现EAS的【拥有者权限】和【主管权限】[/b][/size]
[color=Red]注:文章来源:121.32.28.234:8800/kdwiki/index.php?doc-view-107.html[/color]
问题:对于全新开发的EAS单据,客户经常会要求实现【拥有者权限】(即:用户自己只能看到自己所做的单据)和【主管权限】(即:上级领导能看到其下属所做的单据)。
具体的实现方法如下:
        方法一:通过EAS自带的特殊数据权限进行配置
1、        修改EAS权限配置文件:
eas\server\profiles\server1\config\EAS_PermissionConfiguration.xml 将新开发的单据添加到此配置文件中(这样才能在EAS客户端配置特殊数据权限时看到你开发的单据)
例:[code]<special-data-permission>       
                <name>com.kingdee.eas.custom.crm.base.app.Period</name>(注:单据实体路径)
                <type>975F9A83</type>(注:BOSType)
</special-data-permission>[/code]添加完成后,记得保存
2、        打开EAS客户端,进入【系统平台】-【安全管理】-【权限管理】-打开【特殊数据权限】如下图(红色部分就是要在上面新添加配置的单据)
(这里经常会出现修改配置文件后,业务对象授权列表中却无法显示的情况。可能是由于缓存的原因导致。如果遇到这种情况,请试试重启服务器,再多搞搞几次就 会回来的。实现没办法的话,请参与以下文章解决:121.32.28.234:8800/kdwiki/index.php?doc-view- 100.html)
[img]http://121.32.28.234:8800/kdwiki/js/kindeditor/attached/20110406170409_30409.jpg[/img]

        方法二:通过编写代码实现
方法一中的拥有者,只能选择到单据上的“制单人”和“最后修改人”这两个字段。在某些情况下,方法一是无法满足客户的需求的。例如:销售订单上有一个字段 是“销售员”,客户想通过这个字段来做拥有者权限过滤。那么,这个时候就只能通过编码的方式来实现了。以下介绍代码如何时实现拥有者权限和主管权限。
        拥有者权限:只需要在单据序时簿查询时加上当前用户与相关字段(如:销售员)的比较即可,相对简单,不多说。
        主管权限:实现代码如下:
/**
         * 根据用户id查找用户职位长编码
* 主管权限调用
         * @param userId 当前用户id
         * @return 用户职位长编码
         */[code]public String getPositionLongNumberByUserId(Context ctx, String userId) {
                // 根据用户查找用户职位长编码
                StringBuffer lsql = new StringBuffer();
                lsql.append("SELECT DISTINCT PositionHierarchy.FLongNumber as longnumber FROM T_PM_USER U INNER JOIN T_BD_Person Person");
                lsql.append(" ON Person.FID = U.FPersonID INNER JOIN T_ORG_PositionMember PositionMember ON Person.FID = PositionMember.FPersonID");
                lsql.append(" INNER JOIN T_ORG_Position  Position ON Position.FID = PositionMember.FPositionID INNER JOIN T_ORG_PositionHierarchy");
                lsql.append(" PositionHierarchy ON  PositionMember.FPositionID = PositionHierarchy.FChildID WHERE U.FID = '").append(userId);
                lsql.append("' AND PositionHierarchy.FHierarchyID = '00000000-0000-0000-0000-000000000001396FCAD0'");
                ResultSet lrs;
                StringBuffer filterLongNumber = new StringBuffer();
                try {
                        lrs = DbUtil.executeQuery(ctx, lsql.toString());
                        while (lrs.next()) {
                                filterLongNumber.append(
                                " OR POSITIONHIERARCHY.FLONGNUMBER LIKE N'").append(lrs.getString("longnumber")).append("!%' ");
                        }
                } catch (BOSException e) {
                        e.printStackTrace();
                } catch (SQLException e) {
                        e.printStackTrace();
                }
                if (filterLongNumber.toString().length() == 0) {
                        return "-1";
                }
                return filterLongNumber.toString();
        }[/code]/**
         * 根据用户职位长编码查找用户的所有下级客户
         * @param ctx
         * @param positionLongNumber
         * @return
         */[code]public List getPersionIdsByPositionLongNumber(Context ctx, String positionLongNumber) {
                // 根据用户长编码查找用户下级
                StringBuffer sql = new StringBuffer();
                List personIds = new ArrayList();
                sql.append("SELECT DISTINCT Person.FID as id FROM T_PM_USER U INNER JOIN T_BD_Person Person ON Person.FID = U.FPersonID INNER JOIN ");
                sql.append(" T_ORG_PositionMember PositionMember ON Person.FID = PositionMember.FPersonID INNER JOIN T_ORG_Position Position ");
                sql.append(" ON Position.FID = PositionMember.FPositionID INNER JOIN T_ORG_PositionHierarchy PositionHierarchy ON ");
                sql.append(" PositionMember.FPositionID = PositionHierarchy.FChildID WHERE ").append("(").append(
                                positionLongNumber.substring(positionLongNumber.indexOf("O") + 2)).append(")");
                sql.append(" AND PositionHierarchy.FHierarchyID = '00000000-0000-0000-0000-000000000001396FCAD0'");
                ResultSet prs;
                try {
                        prs = DbUtil.executeQuery(ctx, sql.toString());
                        while (prs.next()) {
                                personIds.add(prs.getString("id"));
                        }
                        //添加当前用户本人
                        UserInfo user = ContextUtil.getCurrentUserInfo(ctx);
                        personIds.add(user.getPerson().getId().toString());
                } catch (BOSException e) {
                        e.printStackTrace();
                } catch (SQLException e) {
                        e.printStackTrace();
                }
                return personIds;
        }[/code]调用方法:[code]UserInfo user = ContextUtil.getCurrentUserInfo(ctx);//获取当前用户
        String positionLongNumber = getPositionLongNumberByUserId(ctx, user.getId().toString());//获取当前用户的职位长编码
        List lowerPersonList = getPersionIdsByPositionLongNumber(ctx, positionLongNumber);//获取当前用户所能看到的所有下级用户的person id 表列[/code]最后,根据lowerPersonList列表,在单据序时簿的过滤条件中拼写SQL语句的过滤条件即可。


以下给出动态Web框架开发的单据添加主管权限的完整例子:
由于字数限制,完整例子请看:121.32.28.234:8800/kdwiki/index.php?doc-view-107.html

分享到:
评论

相关推荐

    eas模板_EAS_

    EAS,全称为Enterprise ...综上所述,"eas模板_EAS_"涉及到的核心知识点是EAS系统在企业资产管理中的应用,特别是通过定制化的打印模板实现明细账的按核算项目分开打印,以满足企业对资产信息的精细化管理和分析需求。

    EAS权限体系培训.ppt

    EAS权限体系培训

    EAS BOS培训.zip

    综上所述,"EAS BOS培训"内容全面,覆盖了从基础环境配置到实际业务场景的多个方面,适合对金蝶EAS和BOS感兴趣的初学者或有经验的开发者深入学习。通过阅读《金蝶EAS和BOS培训教程V3.0.doc》和解压后的《EAS BOS培训...

    EASBOS认证培训演讲视频_培训基础课件_EAS组织架构

    7. **系统集成**:了解EAS如何与其他系统(如ERP、CRM)集成,以实现全企业范围内的信息共享和流程协同。 通过这个认证培训,学员不仅会了解到EASBOS的基本理论,还将获得实际操作的经验,从而更好地应用于企业的...

    EAS

    在给定的描述中提到了一个博客链接,虽然具体内容没有提供,但我们可以推测博主可能分享了关于EAS开发、实现或使用的经验和技术细节。由于标签包含了"源码"和"工具",这表明讨论可能涉及到EAS系统的源代码分析、开发...

    金蝶EAS8.0用户手册

    EAS8.0的生产制造模块涵盖MRP(物料需求计划)、APS(高级计划与排程)、WMS(仓库管理系统)等,帮助企业实现精细化的生产计划和控制。MRP根据销售预测和库存情况自动计算物料需求,APS则优化生产排程,提高生产...

    EAS接口文档1

    EAS接口文档是为了实现EAS(企业资产管理系统)的开发和集成。文档中提供了关于如何通过接口与EAS系统交互的具体方法,这对于系统开发者而言是必不可少的资源。文档中通常会包括接口的URL、方法名、输入参数及输出...

    金蝶EAS通过套打模板实现后台生成PDF文件.docx

    ### 金蝶EAS通过套打模板实现后台生成PDF文件 #### 概述 本文旨在介绍如何在金蝶EAS系统中利用套打模板技术,通过后台服务器代码自动生成PDF文件,进而完成合同等文件的档案归档与备份工作。这种方法能够显著提高...

    金蝶EAS认证真题汇总(精华版).zip

    金蝶EAS(Enterprise Application Suite)是金蝶国际软件...在准备认证的过程中,考生应结合理论知识和实践经验,理解并掌握EAS如何帮助企业实现流程自动化、信息共享和决策支持,以达到提升企业整体运营效能的目标。

    EAS模板引入引出

    3. **查询功能**:`query` 和 `7,עģãעԵĵruta` 表示查询功能的实现。这通常涉及到数据库操作,包括但不限于SQL语句的构建、执行以及结果集的处理等。 #### 五、实践应用案例 假设一家公司需要将其客户信息从旧...

    EASBOS服务端常用代码

    权限检查可以在PurOrderControllerBean实现类中进行,可以重载checkPermission方法来实现权限检查。 凭证生成前的控制也是服务端常用的一个功能,在服务端可以对凭证生成前的控制进行检查,以确保凭证的生成是合法...

    金蝶 EAS BOS 培训

    `5.1EAS套打开发.doc`和`5.1套打(接口BOSQueryDelegate).doc`应讲述了如何利用BOSQueryDelegate接口实现数据查询与套打模板的结合,以及套打过程中的关键技术和注意事项。 4. **报表设计**:金蝶EAS提供了丰富的...

    EAS 报表开发源码

    源码可能包含API设计和实现细节。 9. **前端展示**:源码中可能包括HTML、CSS和JavaScript代码,用于在浏览器端展示报表,可能涉及到前端框架如Angular、React或Vue.js。 10. **后端服务**:EAS的后端可能基于Java...

    EAS7.5并发全模块许可License

    EAS7.5并发全模块许可License是一款专为测试和学习EAS(Enterprise Application Server)设计的授权软件。EAS是企业级应用服务器,它提供了一个平台,用于部署和管理各种企业应用程序,如Web服务、Java EE应用以及...

    EAS BOS开发服务端常用代码

    EAS BOS提供了用户管理和权限控制机制,开发者需要理解角色、用户、权限的关系,以及如何在服务端代码中实现权限检查,确保系统的安全性。 7. **集成与扩展**: EAS BOS支持与其他系统集成,例如通过Web服务或API...

    EAS测试许可全套license

    接着,"EAS测试许可全套license"中的"全套"意味着它包括了所有EAS模块的访问权限,这可能包括但不限于财务管理、采购管理、库存控制、销售和分销、项目管理、人力资源管理等。这样,用户就能全面评估每个模块对业务...

    EAS数据库表结构查看器

    通过深入理解EAS数据库的结构,开发者可以更好地实现功能扩展、数据迁移、报表定制等任务,确保系统的稳定性和扩展性。 在实际工作中,配合EAS的开发文档和在线帮助,结合数据库表结构查看器,开发者可以更加高效地...

    EAS权限申请表一.pdf

    通过EAS权限申请表,企业能够根据员工的角色和职责,精确地分配访问权限,确保数据安全和业务流程的顺畅运行。每个模块的详细设置和权限分配应根据企业的具体需求进行定制,以最大化系统的效能。

Global site tag (gtag.js) - Google Analytics