Maximo环境下使用WOTotalSet填充WORKORDER对象成本字段方案咨询
结论
可以实现该需求,优先选择自动化脚本方案,属性公式无法满足调用WOTotalSet逻辑的要求。
自动化脚本实现方案
- 触发时机配置:可选择WORKORDER对象的
初始化(Initialize)事件、工单关联成本类记录(劳动、材料、服务、工具等)的保存后事件,如需覆盖历史工单数据可额外配置定时执行任务。 - 核心逻辑说明:WOTotalSet的底层查询逻辑本身支持接收工单
WORKORDERID作为参数返回对应工单的全量成本数据,无需WOTOTAL对象显式定义WORKORDERID/WONUM字段,也不需要额外配置WORKORDER到WOTOTAL的显式关系。 - 脚本示例(以Jython为例):
from psdi.app.workorder.virtual import WOTotalSet from psdi.mbo import MboConstants # 从当前脚本上下文获取目标工单Mbo,不同触发事件下获取方式可根据实际调整 woMbo = mbo # 实例化WOTOTAL对象集 woTotalSet = MXServer.getMXServer().getMboSet("WOTOTAL", woMbo.getUserInfo()) # 传入当前工单的WORKORDERID作为查询参数 woTotalSet.setQbe("WORKORDERID", str(woMbo.getInt("WORKORDERID"))) woTotalSet.reset() if not woTotalSet.isEmpty(): woTotalMbo = woTotalSet.getMbo(0) # 将成本值写入WORKORDER对象的自定义字段,示例中自定义字段为PLUSCTOTALCOST woMbo.setValue("PLUSCTOTALCOST", woTotalMbo.getDouble("TOTAL"), MboConstants.NOACCESSCHECK) # 释放资源 woTotalSet.close()
属性公式方案说明
属性公式仅支持预设公式函数调用、简单属性运算,无法直接实例化MboSet或调用Java类逻辑,无法直接获取WOTOTAL的计算结果,不满足该需求的实现要求。
注意事项
- 若使用持久字段存储成本值,需配置对应字段的编辑权限,避免业务规则拦截赋值操作;若使用非持久字段,只需在工单加载时触发脚本赋值即可。
- 测试阶段需验证父工单、任务工单的成本汇总结果,确认和WOTRACK模块「查看成本」页面的展示数值完全一致。
内容的提问来源于stack exchange,提问作者User1974
相关产品推荐
相关产品推荐

