Index: /branches/features/taskProcedureRework/grails-app/controllers/TaskProcedureDetailedController.groovy =================================================================== --- /branches/features/taskProcedureRework/grails-app/controllers/TaskProcedureDetailedController.groovy (revision 775) +++ /branches/features/taskProcedureRework/grails-app/controllers/TaskProcedureDetailedController.groovy (revision 776) @@ -5,4 +5,5 @@ def filterService + def assetService def taskProcedureService @@ -94,5 +95,7 @@ } else { - return [ taskProcedureInstance : taskProcedureInstance ] + def assemblies = assetService.getAssemblies(taskProcedureInstance.linkedTask.primaryAsset) + return [ taskProcedureInstance : taskProcedureInstance, + assemblies: assemblies ] } } @@ -125,5 +128,7 @@ } - render(view:'edit', model:[taskProcedureInstance: result.taskProcedureInstance]) + def assemblies = assetService.getAssemblies(result.taskProcedureInstance.linkedTask.primaryAsset) + render(view:'edit', model:[taskProcedureInstance: result.taskProcedureInstance, + assemblies: assemblies]) } @@ -157,5 +162,14 @@ def taskProcedureInstance = new TaskProcedure() taskProcedureInstance.properties = params - return ['taskProcedureInstance':taskProcedureInstance] + + // Populate a maintenanceAction for each assembly. + def assemblies = assetService.getAssemblies(params.linkedTask.primaryAsset) + assemblies.eachWithIndex { assembly, i -> + def ma = taskProcedureInstance.maintenanceActionLazyList.get(i) + ma.assetSubItem = assembly + ma.procedureStepNumber = (i+1)*10 + } + + return ['taskProcedureInstance':taskProcedureInstance, 'assemblies': assemblies] } @@ -181,5 +195,7 @@ } - render(view:'create', model:[taskProcedureInstance: result.taskProcedureInstance]) + def assemblies = assetService.getAssemblies(result.taskProcedureInstance.linkedTask.primaryAsset) + render(view:'create', model:[taskProcedureInstance: result.taskProcedureInstance, + assemblies: assemblies]) } Index: /branches/features/taskProcedureRework/grails-app/services/AssetService.groovy =================================================================== --- /branches/features/taskProcedureRework/grails-app/services/AssetService.groovy (revision 775) +++ /branches/features/taskProcedureRework/grails-app/services/AssetService.groovy (revision 776) @@ -22,4 +22,24 @@ } } + } + + /** + * Determines and returns a list of assemblies for an asset. + * This is purely a 'load from database' type method since a new hibernateSession is used. + * @params Asset to get the subItems for. + * @returns A list of the assemblies. + */ + def getAssemblies(Asset asset) { + def assemblies = [] + // Database efficiency: + // The asset is configured to batch fetch assetSubItems which + // in turn are configured to batch fetch subItems. + Asset.withNewSession { + Asset.get(asset.id).assetSubItems.each { + assemblies.addAll(it.subItems) + } + } + assemblies.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) } + return assemblies } Index: /branches/features/taskProcedureRework/grails-app/views/taskDetailed/show.gsp =================================================================== --- /branches/features/taskProcedureRework/grails-app/views/taskDetailed/show.gsp (revision 775) +++ /branches/features/taskProcedureRework/grails-app/views/taskDetailed/show.gsp (revision 776) @@ -566,5 +566,5 @@