Maximo Anywhere查询过滤需求:仅展示同站点劳工
Maximo Anywhere 同站点劳工过滤查询实现方案
你的代码核心问题是未正确获取当前登录用户的默认站点值,直接使用defsite变量会导致未定义错误,无法生成有效过滤条件。以下是修正后的完整实现代码及关键说明:
修正后的过滤函数
filterLaborCraftRateForLookup: function(eventContext){ var laborCraftRateSet = CommonHandler._getAdditionalResource(eventContext,"additionallaborcraftrate"); CommonHandler._clearFilterForResource(eventContext, laborCraftRateSet); // 获取当前工单关联的组织ID var orgid = CommonHandler._getWorkorderOrgId(eventContext); // 获取当前登录用户的默认站点 var defsite = eventContext.application.getUser().getProperty("defsite"); // 构建组织+站点的过滤条件 var filter = []; filter.push({'orgid': orgid, 'worksite': defsite}); laborCraftRateSet.lookupFilter = filter; },
关键实现说明
- 获取用户默认站点:通过
eventContext.application.getUser().getProperty("defsite")读取当前登录用户的默认站点配置,这是Maximo Anywhere中获取用户属性的标准方式。 - 过滤条件有效性:确保
additionallaborcraftrate对应的数据源(通常是Maximo中的LABORCRAFTRATE表)包含orgid和worksite字段,否则过滤逻辑不会生效。 - 清除旧过滤:保留
CommonHandler._clearFilterForResource调用,避免之前的过滤条件残留干扰当前查询结果。
额外注意事项
- 若用户档案未配置
DEFAULT SITE字段,需先在Maximo系统中完善用户的默认站点设置。 - 如果业务需求是基于工单关联的站点而非用户默认站点过滤,可将
defsite的获取方式替换为CommonHandler._getWorkorderSiteId(eventContext)。
内容的提问来源于stack exchange,提问作者Aziz Lachkar
相关产品推荐
相关产品推荐

