Version: next
巡检和维修作业模板
描述
- 化工厂某一车间的巡检作业组和三种维修作业组(计划维修,快速现场维修,巡检问题维修)。
- 通过维修数据可以自定义维修一览表,对维修设备,维修时间,更换零件,异常分析形成KPI分析。当然之上的所有需要分析的数据都要在配置时候能够体现出来才有利于后续分析使用。
巡检作业组
这里的巡检作业组因为资产的类别种类过多但每种数量太少所以没有使用作业规范引用,而是直接在作业组下配置各个资产的作业。
检查内容也是比较简单的,这里的检查之后产生例外,方便系统在流程中检测产生维修作业组。

巡检流程这里需要注意的是在执行完成后,系统会执行一个流程后函数。
CreateTaskGroupPlanByTaskItem("","400","维修规范","巡检维修","","","",0,1,"true","发起人","发起作业组ID","","");
- 具体作用可在函数与脚本说明查看。
巡检维修
- 根据巡检作业组产生的严重例外创建的作业组。会将发起人,发起作业组ID更新到作业组属性中,原例外作业项名+值更新到维修作业组描述中。
客户的要求:
- 新创建的作业组需要机动科确定是否真的要修,需要修则填写交出需求,
- 然后对应的单元工艺员需要填写工艺上的一些措施,
- 之后各个车间的技师就可以去现场交出设备,
- 对应的维修人员才可以到达现场维修,
- 维修完成之后技师去现场检查并确定能够正常使用。
- 维修车间的内勤和领导需要了解做完哪些设备维修。
流程
- 流程是根据客户的要求所配置,所以有了下面的流程:

作业配置
设备交出作业对应201技师班交出设备活动,作业项就是一个交出的签名,没有其他具体作业内容。

维修执行对应电仪维修或机械维修。

维修执行*作业的脚本:
var topTasks = ScriptEngine.Context.GetChildTasks('00000000-0000-0000-0000-000000000000');
var lastTask = topTasks[topTasks.length-1] ;
var assetID = ScriptEngine.Context.GetTaskAssetID(lastTask);
var assetTask = ScriptEngine.Context.GetTaskByID(contextID);
assetTask.AssetID = assetID ;
ScriptEngine.Context.SetTaskGroupPropertyValue('资产ID',assetID) ;
return true ;
将作业组最后一个作业(维修规范)的资产ID更新成当前作业资产并更新到作业组属性*资产ID*中。
注意
这个资产其实就是原巡检作业组例外作业项的资产。
var a = new Date() ;
var StartTime = @MyTaskGroup.PlannedStartTime ;
var b = new Date(formatDatetimeFunc(StartTime)) ;
function formatDatetimeFunc(_datetime) {
var year = _datetime.getFullYear();
var month = ((_datetime.getMonth() + 1).toString().length == 1 ? '0' + (_datetime.getMonth() + 1) : (_datetime.getMonth() + 1));
var day = (_datetime.getDate().toString().length == 1 ? '0' + _datetime.getDate() : _datetime.getDate());
var hour = (_datetime.getHours().toString().length == 1 ? '0' + _datetime.getHours() : _datetime.getHours());
var minute = (_datetime.getMinutes().toString().length == 1 ? '0' + _datetime.getMinutes() : _datetime.getMinutes());
var second = (_datetime.getSeconds().toString().length == 1 ? '0' + _datetime.getSeconds() : _datetime.getSeconds());
var st = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
ScriptEngine.Context.SetTaskGroupPropertyValue('报修时间',st);
};
var c = a.valueOf() - StartTime.valueOf() ;
var d = c/60000 ;
ScriptEngine.Context.SetTaskGroupPropertyValue('维修等待时长',d) ;
return true ;
将作业组计划时间更新到作业组属性*报修时间*中去,将现在时间-报修时间更新到作业组属性*维修等待时长*。
var tg = ScriptEngine.Context.GetCurTaskGroup();
var a = tg.Description ;
ScriptEngine.Context.SetTaskGroupPropertyValue('问题',a) ;
return true ;
将作业组描述更新到作业组属性*问题*中去。
var topTasks = ScriptEngine.Context.GetChildTasks('00000000-0000-0000-0000-000000000000');
var lastTask = topTasks[topTasks.length-1] ;
ScriptEngine.Context.SetTaskAttributeValue(lastTask.ID,'IsHideOnMW',true);
return true ;
将作业组的最后一个作业隐藏。
- 作业项创建维修的作用是创建一个维修执行作业规范。

var c = @MyTask.Asset.DisplayName;
ScriptEngine.Context.SetTaskGroupPropertyValue('故障设备', c) ;
ScriptEngine.Context.SetTaskGroupPropertyValue('资产类别ID',@MyTask.AssetType );
var userName = '';
var user = GlobalInfo.GetLoginUser();
if(user)
{
userName =user.OrgUnitID ;
ScriptEngine.Context.SetTaskGroupPropertyValue('维修组织单元ID',userName ) ;
}
return true;
将维修设备的名称更新到作业组属性*故障设备*,将故障设备类别ID更新到作业组属性*资产类别ID*,将当前登录人的组织单元ID更新到*资产类别ID*。
现场确认对应流程活动技师班现场确认。技师只需回答是否确认完成即可。

作业项维修完成脚本:
ScriptEngine.Context.SetTaskGroupPropertyValue('维修完成',@Me.Value ) ;将作业项值更新到作业组属性*维修完成*。作业项维修完成脚本:
var now = @Me.Value;var b = new Date(formatDatetimeFunc(now)) ;function formatDatetimeFunc(_datetime) {var year = _datetime.getFullYear();var month = ((_datetime.getMonth() + 1).toString().length == 1 ? '0' + (_datetime.getMonth() + 1) : (_datetime.getMonth() + 1));var day = (_datetime.getDate().toString().length == 1 ? '0' + _datetime.getDate() : _datetime.getDate());var hour = (_datetime.getHours().toString().length == 1 ? '0' + _datetime.getHours() : _datetime.getHours());var minute = (_datetime.getMinutes().toString().length == 1 ? '0' + _datetime.getMinutes() : _datetime.getMinutes());var second = (_datetime.getSeconds().toString().length == 1 ? '0' + _datetime.getSeconds() : _datetime.getSeconds());var starttime = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;ScriptEngine.Context.SetTaskGroupPropertyValue('维修完成时间',starttime);return starttime ;};var starttime = @MyTaskGroup.PlannedStartTime;var time = now.valueOf() - starttime.valueOf();var timeMI = time/60000 ;ScriptEngine.Context.SetTaskGroupPropertyValue('总维修时长',timeMI) ;var maintenancetime = timeMI - ScriptEngine.Context.GetTaskGroupPropertyValue('维修等待时长') ;ScriptEngine.Context.SetTaskGroupPropertyValue('维修员作业时长',maintenancetime) ;return true ;将现在时间更新到作业组属性*维修完成时间*,将现在时间-作业组计划时间更新到作业组属性*总维修时长*,将总维修时长-维修等待时长更新到作业组属性*维修员作业时长*。
作业规范
维修执行作业规范
修改作业组名称
var tg = ScriptEngine.Context.GetCurTaskGroup();tg.Name = @MyTask.Asset.DisplayName + '维修' ;ScriptEngine.Context.GotoTaskGroup();return true ;修改作业组的显示名称为*资产名称*+维修var task = ScriptEngine.Context.GetTaskByID(contextID);var parent = ScriptEngine.Context.GetParentTask(task);var b = '维修执行' ;ScriptEngine.Context.SetTaskAttributeValue(parent.ID,'Name',b);return true ;将创建出来的维修规范的名称改为*维修执行*。- 异常分析
var a = @Me.Value.DisplayName;ScriptEngine.Context.SetTaskGroupPropertyValue('异常分析', a );return true;将当前作业项值的字符串格式更新到作业组属性*异常分析*。注意
作业项数据类型为可输入列表格式,必须转化为字符串显示名才能更新。
- 维修措施
var a = @Me.Value;ScriptEngine.Context.SetTaskGroupPropertyValue('维修措施', a) ;return true ;将当前作业项值的字符串格式更新到作业组属性*维修措施*。注意
作业项数据类型为可输入列表格式,必须转化为字符串显示名才能更新。
- 维修是否完成
ScriptEngine.Context.SetTaskGroupPropertyValue('维修完成', @Me.Value ) ;将当前作业项值更新到作业组属性*维修完成*。- 更换零件
- 如果有更换零件会创建作业规范更换零件。
更换零件
更换零件名称
var task = ScriptEngine.Context. GetTaskByID(contextID);var parent = ScriptEngine.Context.GetParentTask(task);var b = '更换零件-' + @Me.Value.DisplayName ;ScriptEngine.Context.SetTaskAttributeValue(parent.ID,'Name',b);return true ;将更换零件作业规范的名称更改为*更换零件-*+作业项值的显示名(字符串)所更换零件规格
- 此作业项主页为报表更换零件情况服务。
- 报表说明链接
更换数量
- 此作业项主页为报表更换零件情况服务。
- 报表说明链接
是否还有更换零件
- 如果不止更换一种零件,可重复创建更换零件作业规范,重复记录。

- 如果不止更换一种零件,可重复创建更换零件作业规范,重复记录。
作业组属性配置
基本信息
此分组的所有作业组属性对维修人员、技师、领导比较有用,可以直观了然维修基本情况的一些信息。也是为报表维修一览表服务。
* [流程后函数更新](#巡检作业组)* 发起人:全部活动可查看。* 流程审核填写* 报修分类:活动*机动科(技术员)审核*时填写,作用是为流程判断归哪类维修人员维修。<img alt=" " src={useBaseUrl('docimg/报修分类.png')} />* 报修单元:活动*机动科(技术员)审核*时填写,作用是为流程判断归哪个单元工艺员审核。<img alt=" " src={useBaseUrl('docimg/报修单元.png')} />* 维修初步审核意见:活动*机动科(技术员)审核*时填写,作用是为流程判断是否继续维修。<img alt=" " src={useBaseUrl('docimg/维修初步审核意见.png')} />* [作业中脚本更新](#zypz)* [作业规范脚本更新](#zygf)* 作业组属性*异常分析*对应报表[维修异常分析](#ycfx)
交出要求
- 此分组主要是活动机动科(技术员)审核时填写。方便技师交出时查看注意事项。

- 此分组主要是活动机动科(技术员)审核时填写。方便技师交出时查看注意事项。
工艺安全措施
- 此分组主要是活动工艺员审核时填写。方便技师交出时查看注意事项。

- 此分组主要是活动工艺员审核时填写。方便技师交出时查看注意事项。
系统
此分组为系统内部使用,不管是执行人还是审核人员都不需要查看。
* [发起作业组ID](#巡检作业组)* 报修时间,维修等待时长,维修员作业时长,总维修时长,维修完成时间都是为了形成报表[设备的维修时间及次数](#number&time)、报表[维修TOP10](#TOP10)
自定义报表
维修一览表
下载包文件- 本质上为作业组属性展示报表。将基本信息分组的作业组属性在一行内显示出来,这样就能清洗展示一段时间内的所有维修情况。

设备的维修时间及次数
下载包文件- 按照纬度为天统计维修时间和维修次数。

维修TOP10
下载包文件- 已纬度资产计算一段时间内最多维修时间和次数的设备排名形成报表。

更换零件情况
- 本质上是作业项历史报表分析。将表格格式转化为图表格式。一段时间内的有记录的更换零件数量形成饼图。


维修异常分析
下载包文件
计划维修
完全掌握计划维修作业组的配置后,对应计划维修也就容易理解了, 它只是多了一个计划人,是由人在EOC-计划产生,而不是流程后函数产生。
注意
很多作业组属性是由计划人填写。

设备交出作业执行时,会选择具体的维修设备(系统内资产)。

报修-维修作业组
此作业组是终端按需创建产生的作业组。
