文本主要描述了两个软件功能开发的细节。一是主项计划编制,其代码逻辑会根据项目分类自动带入相应阶段的分录行,并提供二次开发方案以调整默认行为。二是任务汇报列表的过滤逻辑,涉及基于权限、责任人、项目管理员及例外人员等多维度筛选,并考虑了责任类别、预警颜色及任务状态等自定义过滤,同时提供了二次开发方案以调整过滤条件。
1)主项计划编制,自动带入的任务分录行逻辑,会根据项目分类决定带入有多少个阶段,则有多少个分录行。
具体代码逻辑的插件,kd.pmgt.pmpt.formplugin.PmMasterPlanEditPlugin
具体代码方法如下:
二开方案:如果不需要默认带入的任务行,在afterBindData方法里把对应分录行删除即可。
2)任务汇报列表的过滤如下:
标品逻辑是首先拿到所有有权限能看到的任务(注意:这三个条件是或的关系)
(1) 责任部门或协办部门就是当前登录人负责的部门(及其下级部门)的任务(这里提到的部门统一只可能是行政部门)
(2) 责任人(或协办人、或共享人)是当前登录人的任务
(3) 如果当前登录人是某个项目的项目管理员,则当前登录人可以看到该项目旗下的所有任务
(4) 如果当前登录人是例外人员,需要获取例外人员管辖范围内的项目(责任部门是例外人员配置的组织,同时也要过滤排除的项目) * 然后再处理责任类别和预警颜色这两个自定义过滤项 * 最后再加个过滤,保证最终显示的任务是“已发布”计划中的分录任务(交办任务和会议决议任务除外)。
二开方案:如果不需要该任务过滤的条件,可以新增一个列表的二开插件,在setFilter方法里,从e.getFilters()方法里取出id的QFilter并且清空即可(因为上面的过滤条件最终是查出id集合并且作为列表过滤)。
推荐阅读