source: trunk/grails-app/services/CreateDataService.groovy @ 241

Last change on this file since 241 was 241, checked in by gav, 14 years ago

Undo the AssignedGroup implementation by reverse merge r240:r239.

File size: 45.3 KB
RevLine 
[149]1/**
2* Provides a data service to create base and demo data.
[180]3* Beware that most, if not all, base data is referenced by "Id" throughout the program.
4* This allows changing the text of the 'name' property to something of the same meaning.
5* But be sure to maintain the correct Id during creation, indicated by #1, #2 etc.
[149]6*/
7class  CreateDataService {
8
9    boolean transactional = false
10
[182]11    def personService
[180]12    def taskService
[210]13    def dateUtilService
[237]14    def appConfigService
[180]15
[149]16/*******************************************
17Start of Group methods.
18Generally use these methods to create data.
19*******************************************/
20
21    /**
[199]22    * Always call this at startup to ensure that we have admin access
23    * and that the system pseudo person is available.
[149]24    */
[199]25    def ensureSystemAndAdminAccess() {
[149]26        if(!Authority.findByAuthority("ROLE_AppAdmin") ) {
[199]27            log.warn "ROLE_AppAdmin not found, calling createAdminAuthority()."
[149]28            createAdminAuthority()
29        }
[199]30        if(!Person.findByloginName("system") ) {
31            log.warn "LoginName 'system' not found, calling createSystemPerson()."
32            createSystemPerson()
33        }
[149]34        if(!Person.findByloginName("admin") ) {
[199]35            log.warn "LoginName 'admin' not found, calling createAdminPerson()."
[149]36            createAdminPerson()
37        }
38    }
39
40    /**
41    * Create the base data required for the application to function.
42    */
43    def createBaseData() {
[237]44
45        if(appConfigService.exists("baseDataCreated")) {
46            log.error "Base data has already been created, will NOT recreate."
47            return false
48        }
49
[199]50        log.info "Creating base data..."
[237]51
[149]52        // Person and Utils
53        createBaseAuthorities()
54        createBasePersonGroups()
55        createBaseUnitsOfMeasure()
56        createBasePeriods()
[175]57        createBaseSupplierType()
58        createBaseManufacturerType()
[237]59
[149]60        // Tasks
[180]61        createBaseTaskGroups()
[149]62        createBaseTaskStatus()
63        createBaseTaskPriorities()
64        createBaseTaskTypes()
[180]65        createBaseTaskModificationTypes()
[149]66        createBaseEntryTypes()
[237]67
[149]68        // Inventory
69        createBaseInventoryTypes()
[175]70        createBaseInventoryMovementTypes()
[149]71        createBaseMaintenancePolicies()
[237]72
[149]73        // Assets
74        createBaseAssetExtenededAttributeTypes()
75
[237]76        // Record that data has been created.
77        appConfigService.set("baseDataCreated")
[149]78    }
79
80    /**
81    * Create demo data for some example sites.
82    */
83    def createDemoData() {
[237]84
85        if(!appConfigService.exists("baseDataCreated")) {
86            log.error "Demo data cannot be created until base data has been created."
87            return false
88        }
89
90        if(appConfigService.exists("demoDataCreated")) {
91            log.error "Demo data has already been created, will NOT recreate."
92            return false
93        }
94
95        if(appConfigService.exists("demoDataCreationDisabled")) {
96            log.error "Demo data creation has been disabled, will NOT create."
97            return false
98        }
99
[199]100        log.info "Creating demo data..."
[237]101
[149]102        // Person and Utils
103        createDemoPersons()
104        createDemoSites()
[162]105        createDemoDepartments()
[175]106        createDemoSuppliers()
107        createDemoManufacturers()
[237]108
[149]109        // Tasks
110        createDemoTasks()
111        createDemoEntries()
[241]112        createDemoAssignedPersons()
[149]113        createDemoTaskRecurringSchedules()
[237]114
[149]115        // Inventory
116        createDemoInventoryStores()  /// @todo: Perhaps a 'createQuickStartData' method?
[175]117        createDemoInventoryLocations()
[149]118        createDemoInventoryGroups() /// @todo: Perhaps a 'createQuickStartData' method?
119        createDemoInventoryItems()
[237]120
[149]121        // Assets
122        createDemoLifePlan()
123        createDemoTaskProcedure()
124        createDemoMaintenanceActions()
125        createDemoSystemSections()
126        createDemoAssetTypes()
127        createDemoAssemblies()
128        createDemoSubAssemblies()
129        createDemoComponentItems()
130        createDemoAssets()
131        createDemoAssetExtenedAttributes()
[237]132
133        // Record that data has been created.
134        appConfigService.set("demoDataCreated")
[149]135    }
136
137/******************
138Start of Person
139*******************/
140
141    def createAdminAuthority() {
142        def authInstance
143
144        authInstance = new Authority(description:"Application Admin, not required for daily use! Grants full admin access to the application.",
145                                        authority:"ROLE_AppAdmin")
146        saveAndTest(authInstance)
147    }
148
149    def createBaseAuthorities() {
150
151        def authInstance
152
153        authInstance = new Authority(description:"Business manager, grants full management access.",
154                                        authority:"ROLE_Manager")
155        saveAndTest(authInstance)
156
157        authInstance = new Authority(description:"Application User, all application users need this base role to allow login.",
158                                        authority:"ROLE_AppUser")
159        saveAndTest(authInstance)
160    }
161
162    void createBasePersonGroups() {
163        //TypeOfPersonGroup
164        def personGroupTypeInstance
[164]165            personGroupTypeInstance = new PersonGroupType(name:"Team")
[149]166        saveAndTest(personGroupTypeInstance)
167            personGroupTypeInstance = new PersonGroupType(name:"Contractor")
168        saveAndTest(personGroupTypeInstance)
169            personGroupTypeInstance = new PersonGroupType(name:"ProjectTeam")
170        saveAndTest(personGroupTypeInstance)
171
172        //PersonGroup
173        def personGroupInstance
[164]174            personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(1),
[149]175                            name:"Electrical")
176        saveAndTest(personGroupInstance)
[164]177            personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(1),
[149]178                            name:"Mechanical")
179        saveAndTest(personGroupInstance)
[164]180            personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(1),
[149]181                            name:"Production")
182        saveAndTest(personGroupInstance)
183            personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(2),
184                            name:"Kewl AirCon Guys")
185        saveAndTest(personGroupInstance)
186            personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(3),
187                            name:"gnuMims")
188        saveAndTest(personGroupInstance)
189    }
190
[199]191    def createSystemPerson() {
192        //Person
193        def passClearText = "pass"
194        def passwordEncoded = personService.encodePassword(passClearText)
195        def personInstance
196
197        //Person #1
198        personInstance = new Person(loginName:"system",
199                                    firstName:"gnuMims",
200                                    lastName:"System",
201                                    description:'''This is a pseudo person that the application uses to insert data. DO NOT
202                                                        assign login authorities or change the details of this person.''',
203                                    pass:passClearText,
204                                    password:passwordEncoded,
205                                    email:"system@example.com")
206        saveAndTest(personInstance)
207    }
208
[149]209    def createAdminPerson() {
210        //Person
211        def passClearText = "pass"
[182]212        def passwordEncoded = personService.encodePassword(passClearText)
[149]213        def personInstance
214
[199]215        //Person #2
[149]216        personInstance = new Person(loginName:"admin",
217                                    firstName:"Admin",
218                                    lastName:"Powers",
[199]219                                    description:'''Every time the application starts it ensures that the 'admin' login name is available.
220                                                        DO update the password and other details but keep the login name as 'admin'. ''',
[149]221                                    pass:passClearText,
222                                    password:passwordEncoded,
223                                    email:"admin@example.com")
224        saveAndTest(personInstance)
225        personInstance.addToAuthorities(Authority.get(1))
226    }
227
228    def createBasePersons() {
[199]229    }
230
231    def createDemoPersons() {
[149]232        //Person
233        def passClearText = "pass"
[182]234        def passwordEncoded = personService.encodePassword(passClearText)
[149]235        def personInstance
236
[199]237        //Person #1 is system.
238        //Person #2 is admin.
[149]239
[199]240        //Person #3
[149]241        personInstance = new Person(loginName:"manager",
242                                    firstName:"Demo",
243                                    lastName:"Manager",
244                                    pass:passClearText,
245                                    password:passwordEncoded,
246                                    email:"manager@example.com")
247        saveAndTest(personInstance)
248        personInstance.addToAuthorities(Authority.get(2))
249        personInstance.addToAuthorities(Authority.get(3))
[164]250        personInstance.addToPersonGroups(PersonGroup.get(5))
[149]251
[199]252        //Person #4
[149]253        personInstance = new Person(loginName:"user",
254                                    firstName:"Demo",
255                                    lastName:"User",
256                                    pass:passClearText,
257                                    password:passwordEncoded,
258                                    email:"user@example.com")
259        saveAndTest(personInstance)
260        personInstance.addToAuthorities(Authority.get(3))
[164]261        personInstance.addToPersonGroups(PersonGroup.get(1))
[149]262
[199]263        //Person #5
[149]264        personInstance = new Person(loginName:"craig",
265                                    firstName:"Craig",
266                                    lastName:"SuperSparky",
267                                    pass:passClearText,
268                                    password:passwordEncoded,
269                                    email:"user@example.com")
270        saveAndTest(personInstance)
271        personInstance.addToAuthorities(Authority.get(3))
[164]272        personInstance.addToPersonGroups(PersonGroup.get(1))
[149]273
[199]274        //Person #6
[149]275        personInstance = new Person(loginName:"john",
276                                    firstName:"John",
277                                    lastName:"SuperFitter",
278                                    pass:passClearText,
279                                    password:passwordEncoded,
280                                    email:"user@example.com")
281        saveAndTest(personInstance)
282        personInstance.addToAuthorities(Authority.get(3))
[164]283        personInstance.addToPersonGroups(PersonGroup.get(2))
[149]284
[199]285        //Person #7
[149]286        personInstance = new Person(loginName:"mann",
287                                    firstName:"Production",
288                                    lastName:"Mann",
289                                    pass:passClearText,
290                                    password:passwordEncoded,
291                                    email:"user@example.com")
292        saveAndTest(personInstance)
293        personInstance.addToAuthorities(Authority.get(3))
[164]294        personInstance.addToPersonGroups(PersonGroup.get(3))
[149]295    }
296
297/***********************
298START OF UTILITIES
299***********************/
300
301    def createDemoSites() {
302        //Site
303        def siteInstance
304
305        siteInstance = new Site(name: "Creek Mill")
306        saveAndTest(siteInstance)
307
308        siteInstance = new Site(name: "Jasper Street Depot")
309        saveAndTest(siteInstance)
[162]310
311        siteInstance = new Site(name: "River Press")
312        saveAndTest(siteInstance)
[149]313    }
314
[162]315    def createDemoDepartments() {
316
317        //Department
318        def departmentInstance
319
320        //Department #1
321        departmentInstance = new Department(name: "Print Centre",
322                                                                                    site: Site.get(1))
323        saveAndTest(departmentInstance)
324
325        //Department #2
326        departmentInstance = new Department(name: "Pulp Mill 2",
327                                                                                    site: Site.get(2))
328        saveAndTest(departmentInstance)
329    }
330
[149]331    def createBaseUnitsOfMeasure() {
332
333        //UnitOfMeasure
334        def unitOfMeasureInstance
335
336        //UnitOfMeasure #1
337        unitOfMeasureInstance = new UnitOfMeasure(name: "each")
338        saveAndTest(unitOfMeasureInstance)
339
340        //UnitOfMeasure #2
341        unitOfMeasureInstance = new UnitOfMeasure(name: "meter(s)")
342        saveAndTest(unitOfMeasureInstance)
343
344        //UnitOfMeasure #3
345        unitOfMeasureInstance = new UnitOfMeasure(name: "box(es)")
346        saveAndTest(unitOfMeasureInstance)
347
348        //UnitOfMeasure #4
349        unitOfMeasureInstance = new UnitOfMeasure(name: "litre(s)")
350        saveAndTest(unitOfMeasureInstance)
351
352        //UnitOfMeasure #5
353        unitOfMeasureInstance = new UnitOfMeasure(name: "kilogram(s)")
354        saveAndTest(unitOfMeasureInstance)
355    }
356
357    def createBasePeriods() {
358
359        //Period
360        def periodInstance
361
362        //Period #1
363        periodInstance = new Period(period: "Day(s)")
364        saveAndTest(periodInstance)
365
366        //Period #2
367        periodInstance = new Period(period: "Week(s)")
368        saveAndTest(periodInstance)
369
370        //Period #3
371        periodInstance = new Period(period: "Month(s)")
372        saveAndTest(periodInstance)
373
374        //Period #4
375        periodInstance = new Period(period: "Year(s)")
376        saveAndTest(periodInstance)
377    }
378
[175]379    def createBaseSupplierType() {
380
381        // SupplierType
382        def supplierTypeInstance
383
384        // SupplierType #1
385        supplierTypeInstance = new SupplierType(name: "OEM",
386                                                                    description: "Original equipment supplier")
387        saveAndTest(supplierTypeInstance)
388
389        // SupplierType #2
390        supplierTypeInstance = new SupplierType(name: "Local",
391                                                                    description: "Local supplier")
392        saveAndTest(supplierTypeInstance)
393    }
394
395    def createBaseManufacturerType() {
396
397        // ManufacturerType
398        def manufacturerTypeInstance
399
400        // ManufacturerType #1
401        manufacturerTypeInstance = new ManufacturerType(name: "OEM",
402                                                                        description: "Original equipment manufacturer")
403        saveAndTest(manufacturerTypeInstance)
404
405        // ManufacturerType #2
406        manufacturerTypeInstance = new ManufacturerType(name: "Alternate",
407                                                                        description: "Not original equipment manufacturer")
408        saveAndTest(manufacturerTypeInstance)
409
410    }
411
412    def createDemoSuppliers() {
413
414        // Supplier
415        def supplierInstance
416
417        // Supplier #1
418        supplierInstance = new Supplier(name: "OEM Distributors",
419                                                                        supplierType: SupplierType.get(1))
420        saveAndTest(supplierInstance)
421
422        // Supplier #2
423        supplierInstance = new Supplier(name: "Mex Holdings",
424                                                                        supplierType: SupplierType.get(2))
425        saveAndTest(supplierInstance)
426    }
427
428    def createDemoManufacturers() {
429
430        // Manufacturer
431        def manufacturerInstance
432
433        // Manufacturer #1
434        manufacturerInstance = new Manufacturer(name: "OEM Manufacturer",
435                                                                        manufacturerType: ManufacturerType.get(1))
436        saveAndTest(manufacturerInstance)
437
438        // Manufacturer #2
439        manufacturerInstance = new Manufacturer(name: "Laser Cutting Services Pty",
440                                                                        manufacturerType: ManufacturerType.get(2))
441        saveAndTest(manufacturerInstance)
442    }
443
[149]444/*********************
445START OF TASK
446*********************/
447
[180]448    def createBaseTaskGroups() {
[149]449        //TaskGroup
450        def taskGroupInstance
451
452        taskGroupInstance = new TaskGroup(name:"Engineering Activites",
453                                                                            description:"Engineering daily activities")
454        saveAndTest(taskGroupInstance)
455
456        taskGroupInstance = new TaskGroup(name:"Production Activites",
457                                                                            description:"Production daily activities")
458        saveAndTest(taskGroupInstance)
459
460        taskGroupInstance = new TaskGroup(name:"New Projects",
461                                                                            description:" ")
462        saveAndTest(taskGroupInstance)
463    }
464
465    def createBaseTaskStatus() {
466
467        //TaskStatus
468        def taskStatusInstance
469
[181]470        taskStatusInstance = new TaskStatus(name:"Not Started") // #1
[149]471        saveAndTest(taskStatusInstance)
472
[181]473        taskStatusInstance = new TaskStatus(name:"In Progress") // #2
[149]474        saveAndTest(taskStatusInstance)
475
[222]476        taskStatusInstance = new TaskStatus(name:"Complete") // #3
[149]477        saveAndTest(taskStatusInstance)
478    }
479
480    def createBaseTaskPriorities() {
481
482        //TaskPriority
483        def taskPriorityInstance
484
[199]485        taskPriorityInstance = new TaskPriority(name:"Normal") // #1
[149]486        saveAndTest(taskPriorityInstance)
487
[199]488        taskPriorityInstance = new TaskPriority(name:"Low") // #2
[149]489        saveAndTest(taskPriorityInstance)
490
[199]491        taskPriorityInstance = new TaskPriority(name:"High") // #3
[149]492        saveAndTest(taskPriorityInstance)
493
[199]494        taskPriorityInstance = new TaskPriority(name:"Immediate") // #4
[149]495        saveAndTest(taskPriorityInstance)
496    }
497
498    def createBaseTaskTypes() {
499
500        //TaskType
501        def taskTypeInstance
502
[199]503        taskTypeInstance = new TaskType(name:"Unscheduled Breakin") // #1
[149]504        saveAndTest(taskTypeInstance)
505
[199]506        taskTypeInstance = new TaskType(name:"Preventative Maintenance") // #2
[149]507        saveAndTest(taskTypeInstance)
508
[199]509        taskTypeInstance = new TaskType(name:"Project") // #3
[149]510        saveAndTest(taskTypeInstance)
511
[199]512        taskTypeInstance = new TaskType(name:"Turnaround") // #4
[149]513        saveAndTest(taskTypeInstance)
514
[199]515        taskTypeInstance = new TaskType(name:"Production Run") // #5
[149]516        saveAndTest(taskTypeInstance)
517    }
518
[180]519    def createBaseTaskModificationTypes() {
520
521        //ModificationType
522        def taskModificationTypeInstance
523        taskModificationTypeInstance = new TaskModificationType(name:"Created").save()  // #1
524        taskModificationTypeInstance = new TaskModificationType(name:"Started").save()  // #2
525        taskModificationTypeInstance = new TaskModificationType(name:"Modified").save()  // #3
526        taskModificationTypeInstance = new TaskModificationType(name:"Completed").save()  // #4
527        taskModificationTypeInstance = new TaskModificationType(name:"Reopened").save()  // #5
528        taskModificationTypeInstance = new TaskModificationType(name:"Trashed").save()  // #6
529        taskModificationTypeInstance = new TaskModificationType(name:"Restored").save()  // #7
530        taskModificationTypeInstance = new TaskModificationType(name:"Approved").save()  // #8
531        taskModificationTypeInstance = new TaskModificationType(name:"Renege approval").save()  // #9
532    }
533
[149]534    def createDemoTasks() {
535
[180]536        def taskResult
537        def p = [:]
[149]538
539        //Task #1
[180]540        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
541                taskPriority:TaskPriority.get(2),
542                taskType:TaskType.get(1),
543                leadPerson:Person.get(2),
544                description:"Check specific level sensor",
545                comment:"Has been noted as problematic, try recalibrating.",
[210]546                targetStartDate: dateUtilService.today]
[149]547
[180]548        taskResult = taskService.create(p)
549
[149]550        //Task #2
[180]551        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
[149]552                taskPriority:TaskPriority.get(2),
553                taskType:TaskType.get(1),
554                leadPerson:Person.get(5),
555                description:"Some follow-up work",
556                comment:"Some help required",
[210]557                targetStartDate: dateUtilService.tomorrow,
[180]558                parentTask: Task.get(1)]
[149]559
[180]560        taskResult = taskService.create(p)
561
[149]562        //Task #3
[180]563        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
[149]564                taskPriority:TaskPriority.get(2),
565                taskType:TaskType.get(1),
566                leadPerson:Person.get(5),
567                description:"A Sub Task can be created by setting the Parent Task value",
568                comment:"Some help required",
[210]569                targetStartDate: dateUtilService.yesterday,
[180]570                parentTask: Task.get(1)]
[149]571
[180]572        taskResult = taskService.create(p)
573
[149]574        //Task #4
[180]575        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
[149]576                 taskPriority:TaskPriority.get(2),
577                 taskType:TaskType.get(1),
578                 leadPerson:Person.get(4),
579                 description:"Replace sensor at next opportunity.",
580                 comment:"Nothing else has worked.",
[210]581                targetStartDate: dateUtilService.oneWeekFromNow,
[180]582                parentTask: Task.get(1)]
[149]583
[180]584        taskResult = taskService.create(p)
585
[149]586        //Task #5
[180]587        p = [taskGroup:TaskGroup.findByName("Production Activites"),
[149]588                 taskPriority:TaskPriority.get(2),
589                 taskType:TaskType.get(5),
590                 leadPerson:Person.get(6),
591                 description:"Production Report",
592                 comment:"Production report for specific production run or shift",
[210]593                targetStartDate: dateUtilService.today - 6]
[149]594
[180]595        taskResult = taskService.create(p)
596
[149]597        //Task #6
[199]598        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
599                 taskPriority:TaskPriority.get(1),
600                 taskType:TaskType.get(2),
601                 leadPerson:Person.get(4),
602                 description:"This is a recurring task",
603                 comment:"If there is a parent task specified then this is a generated sub task, if there is a recurring schedule specified then this is a parent task.",
[210]604                targetStartDate: dateUtilService.today]
[180]605
606        taskResult = taskService.create(p)
[149]607    }
608
609    def createBaseEntryTypes() {
610
611        //EntryType
612        def entryTypeInstance
613
[190]614        entryTypeInstance = new EntryType(name:"Fault") // #1
[149]615        saveAndTest(entryTypeInstance)
616
[190]617        entryTypeInstance = new EntryType(name:"Work Done") // #2
[149]618        saveAndTest(entryTypeInstance)
619
[190]620        entryTypeInstance = new EntryType(name:"Production Note") // #3
[149]621        saveAndTest(entryTypeInstance)
622
[190]623        entryTypeInstance = new EntryType(name:"Work Request") // #4
[149]624        saveAndTest(entryTypeInstance)
625    }
626
627    def createDemoEntries() {
628
[190]629        def entryResult
630        def p = [:]
[149]631
632        //Entry #1
[190]633        p = [task: Task.get(1),
634                entryType: EntryType.get(1),
635                comment: "This level sensor is causing us trouble.",
636                durationMinute: 20]
[149]637
[190]638        entryResult = taskService.createEntry(p)
639
[149]640        //Entry #2
[190]641        p = [task: Task.get(1),
642                entryType: EntryType.get(2),
643                comment: "Cleaned sensor, see how it goes.",
644                durationMinute: 30]
[149]645
[190]646        entryResult = taskService.createEntry(p)
647
[149]648        //Entry #3
[190]649        p = [task: Task.get(1),
650                entryType: EntryType.get(2),
651                comment: "Checked up on it later and sensor is dropping out intermittently, created sub task to replace sensor.",
652                durationMinute: 20]
653
654        entryResult = taskService.createEntry(p)
[149]655    }
656
[241]657    def createDemoAssignedPersons() {
[149]658
[241]659        //AssignedPerson
660        def assignedPersonInstance
[149]661
[241]662        //AssignedPerson #1
663        assignedPersonInstance = new AssignedPerson(person: Person.get(4),
[149]664                                                                                        task: Task.get(1),
665                                                                                        estimatedHour: 1,
666                                                                                        estimatedMinute: 20)
[241]667        saveAndTest(assignedPersonInstance)
[149]668
[241]669        //AssignedPerson #2
670        assignedPersonInstance = new AssignedPerson(person: Person.get(5),
[149]671                                                                                        task: Task.get(1),
672                                                                                        estimatedHour: 3,
673                                                                                        estimatedMinute: 30)
[241]674        saveAndTest(assignedPersonInstance)
[149]675    }
676
677    def createDemoTaskRecurringSchedules() {
678
679        //TaskRecurringSchedule
680        def taskRecurringScheduleInstance
681
682        //TaskRecurringSchedule #1
683        taskRecurringScheduleInstance = new TaskRecurringSchedule(task: Task.get(1),
684                                                                                                    recurEvery: 1,
[199]685                                                                                                    recurPeriod: Period.get(2),
[210]686                                                                                                    nextTargetStartDate: dateUtilService.today,
[149]687                                                                                                    generateAhead: 1,
[199]688                                                                                                    taskDuration: 2,
689                                                                                                    taskDurationPeriod: Period.get(1),
690                                                                                                    enabled: false)
[149]691        saveAndTest(taskRecurringScheduleInstance)
692
693        //TaskRecurringSchedule #2
[199]694        taskRecurringScheduleInstance = new TaskRecurringSchedule(task: Task.get(6),
[149]695                                                                                                    recurEvery: 1,
696                                                                                                    recurPeriod: Period.get(1),
[210]697                                                                                                    nextTargetStartDate: dateUtilService.today,
[149]698                                                                                                    generateAhead: 1,
699                                                                                                    taskDuration: 1,
[199]700                                                                                                    taskDurationPeriod: Period.get(1),
701                                                                                                    enabled: true)
[149]702        saveAndTest(taskRecurringScheduleInstance)
703    }
704
705/*************************
706START OF INVENTORY
707**************************/
708
709    def createDemoInventoryStores() {
710
711        //InventoryStore
712        def inventoryStoreInstance
713
714        inventoryStoreInstance = new InventoryStore(site: Site.get(1), name: "Store #1")
715        saveAndTest(inventoryStoreInstance)
716
717        inventoryStoreInstance = new InventoryStore(site: Site.get(2), name: "Store #2")
718        saveAndTest(inventoryStoreInstance)
719    }
720
[175]721    def createDemoInventoryLocations() {
[149]722
[175]723        // InventoryLocation
724        def inventoryLocation
[149]725
[175]726        inventoryLocation = new InventoryLocation(inventoryStore: InventoryStore.get(1), name: "A1-2")
727        saveAndTest(inventoryLocation)
[149]728
[175]729        inventoryLocation = new InventoryLocation(inventoryStore: InventoryStore.get(1), name: "C55")
730        saveAndTest(inventoryLocation)
[149]731    }
732
733    def createDemoInventoryGroups() {
734
735        //InventoryGroup
736        def inventoryGroupInstance
737
738        //InventoryGroup #1
739        inventoryGroupInstance = new InventoryGroup(name: "Misc")
740        saveAndTest(inventoryGroupInstance)
741
742        //InventoryGroup #2
743        inventoryGroupInstance = new InventoryGroup(name: "Electrical")
744        saveAndTest(inventoryGroupInstance)
745
746        //InventoryGroup #3
747        inventoryGroupInstance = new InventoryGroup(name: "Mechanical")
748        saveAndTest(inventoryGroupInstance)
749
750        //InventoryGroup #4
751        inventoryGroupInstance = new InventoryGroup(name: "Production")
752        saveAndTest(inventoryGroupInstance)
753    }
754
755    def createBaseInventoryTypes() {
756
757        //InventoryType
758        def inventoryTypeInstance
759
760        inventoryTypeInstance = new InventoryType(name: "Consumable")
761        saveAndTest(inventoryTypeInstance)
762
763        inventoryTypeInstance = new InventoryType(name: "Repairable")
764        saveAndTest(inventoryTypeInstance)
765    }
766
[175]767    def createBaseInventoryMovementTypes() {
768
769        // InventoryMovementType
770        def inventoryMovementTypeInstance
771
772        // InventoryMovementType #1
[177]773        inventoryMovementTypeInstance = new InventoryMovementType(name: "Used",
774                                                                                                                        incrementsInventory: false)
[175]775        saveAndTest(inventoryMovementTypeInstance)
776
777        // InventoryMovementType #2
[177]778        inventoryMovementTypeInstance = new InventoryMovementType(name: "Repaired",
779                                                                                                                        incrementsInventory: true)
[175]780        saveAndTest(inventoryMovementTypeInstance)
781
782        // InventoryMovementType #3
[177]783        inventoryMovementTypeInstance = new InventoryMovementType(name: "Purchase Received",
784                                                                                                                        incrementsInventory: true)
[175]785        saveAndTest(inventoryMovementTypeInstance)
[177]786
787        // InventoryMovementType #4
788        inventoryMovementTypeInstance = new InventoryMovementType(name: "Correction Increase",
789                                                                                                                        incrementsInventory: true)
790        saveAndTest(inventoryMovementTypeInstance)
791
792        // InventoryMovementType #5
793        inventoryMovementTypeInstance = new InventoryMovementType(name: "Correction Decrease",
794                                                                                                                        incrementsInventory: false)
795        saveAndTest(inventoryMovementTypeInstance)
[175]796    }
797
[149]798    def createDemoInventoryItems() {
799
800        //InventoryItem
801        def inventoryItemInstance
802
803        //InventoryItem #1
804        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(1),
805                                                                                    inventoryType: InventoryType.get(1),
806                                                                                    unitOfMeasure: UnitOfMeasure.get(2),
[175]807                                                                                    inventoryLocation: InventoryLocation.get(1),
[185]808                                                                                    name: "Hemp rope",
809                                                                                    description: "Natural hemp rope.",
[175]810                                                                                    unitsInStock: 2,
[149]811                                                                                    reorderPoint: 0)
812        saveAndTest(inventoryItemInstance)
813
814        //InventoryItem #2
815        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(1),
816                                                                                    inventoryType: InventoryType.get(1),
817                                                                                    unitOfMeasure: UnitOfMeasure.get(2),
[175]818                                                                                    inventoryLocation: InventoryLocation.get(1),
[185]819                                                                                    name: "Cotton Rope 12mm",
820                                                                                    description: "A soft natural rope made from cotton.",
[149]821                                                                                    alternateItems: InventoryItem.get(1),
[175]822                                                                                    unitsInStock: 2,
[149]823                                                                                    reorderPoint: 0)
824        saveAndTest(inventoryItemInstance)
825
826        //InventoryItem #3
827        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(3),
828                                                                                    inventoryType: InventoryType.get(1),
829                                                                                    unitOfMeasure: UnitOfMeasure.get(1),
[175]830                                                                                    inventoryLocation: InventoryLocation.get(2),
[149]831                                                                                    name: "2305-2RS",
832                                                                                    description: "Bearing 25x62x24mm double row self aligning ball",
[175]833                                                                                    unitsInStock: 3,
[149]834                                                                                    reorderPoint: 2)
835        saveAndTest(inventoryItemInstance)
836
837        //InventoryItem #4
838        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(2),
839                                                                                    inventoryType: InventoryType.get(1),
840                                                                                    unitOfMeasure: UnitOfMeasure.get(1),
[175]841                                                                                    inventoryLocation: InventoryLocation.get(2),
[149]842                                                                                    name: "L1592-K10",
843                                                                                    description: "10kW contactor",
[175]844                                                                                    unitsInStock: 4,
[149]845                                                                                    reorderPoint: 0)
846        saveAndTest(inventoryItemInstance)
847
848        //InventoryItem #5
849        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(3),
850                                                                                    inventoryType: InventoryType.get(1),
851                                                                                    unitOfMeasure: UnitOfMeasure.get(1),
[175]852                                                                                    inventoryLocation: InventoryLocation.get(2),
[149]853                                                                                    name: "6205-ZZ",
854                                                                                    description: "Bearing 25x52x15mm single row ball shielded",
[175]855                                                                                    unitsInStock: 5,
[149]856                                                                                    reorderPoint: 2)
857        saveAndTest(inventoryItemInstance)
858    }
859
860/*******************
861START OF ASSET
862*******************/
863
864    def createDemoLifePlan() {
865
866        //LifePlan
867        def lifeplanInstance
868
869        lifeplanInstance = new LifePlan(name: "Initial Plan")
870        saveAndTest(lifeplanInstance)
871    }
872
873    def createBaseMaintenancePolicies() {
874
875        //MaintenancePolicy
876        def maintenancePolicyInstance
877
878        //MaintenancePolicy #1
879        maintenancePolicyInstance = new MaintenancePolicy(name: "Fixed Time")
880        saveAndTest(maintenancePolicyInstance)
881
882        //MaintenancePolicy #2
883        maintenancePolicyInstance = new MaintenancePolicy(name: "Condition Based Online")
884        saveAndTest(maintenancePolicyInstance)
885
886        //MaintenancePolicy #3
887        maintenancePolicyInstance = new MaintenancePolicy(name: "Condition Based Offline")
888        saveAndTest(maintenancePolicyInstance)
889
890        //MaintenancePolicy #4
891        maintenancePolicyInstance = new MaintenancePolicy(name: "Design Out")
892        saveAndTest(maintenancePolicyInstance)
893
894        //MaintenancePolicy #5
895        maintenancePolicyInstance = new MaintenancePolicy(name: "Operate To Failure")
896        saveAndTest(maintenancePolicyInstance)
897    }
898
899    def createDemoTaskProcedure() {
900
901        //TaskProcedure
902        def taskProcedureInstance
903
904        taskProcedureInstance = new TaskProcedure(name: "Daily check")
905        saveAndTest(taskProcedureInstance)
906        taskProcedureInstance.addToTasks(Task.get(1))
907    }
908
909    def createDemoMaintenanceActions() {
910
911        //MaintenanceAction
912        def maintenanceActionInstance
913
914        //MaintenanceAction #1
915        maintenanceActionInstance = new MaintenanceAction(description: "Check all E-stops, activate E-stops S1-S12 and ensure machine cannot run",
916                                                                                                        procedureStepNumber: 1,
917                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
918                                                                                                        taskProcedure: TaskProcedure.get(1))
919        saveAndTest(maintenanceActionInstance)
920
921        //MaintenanceAction #2
922        maintenanceActionInstance = new MaintenanceAction(description: "Do more pushups",
923                                                                                                        procedureStepNumber: 2,
924                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
925                                                                                                        taskProcedure: TaskProcedure.get(1))
926        saveAndTest(maintenanceActionInstance)
927
928        //MaintenanceAction #3
929        maintenanceActionInstance = new MaintenanceAction(description: "Ok just one more pushup",
930                                                                                                        procedureStepNumber: 3,
931                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
932                                                                                                        taskProcedure: TaskProcedure.get(1))
933        saveAndTest(maintenanceActionInstance)
934    }
935
936    def createDemoSystemSections() {
937
938        //SystemSection
939        def systemSectionInstance
940
941        //SystemSection #1
942        systemSectionInstance = new SystemSection(name: "Press Section",
[162]943                                                                                    site: Site.get(1),
944                                                                                    department: Department.get(1))
[149]945        saveAndTest(systemSectionInstance)
946
947        //SystemSection #2
948        systemSectionInstance = new SystemSection(name: "RO System",
[162]949                                                                                    site: Site.get(2),
950                                                                                    department: Department.get(2))
[149]951        saveAndTest(systemSectionInstance)
952
953        //SystemSection #3
954        systemSectionInstance = new SystemSection(name: "Auxilliray Section",
[162]955                                                                                    site: Site.get(1),
956                                                                                    department: Department.get(1))
[149]957        saveAndTest(systemSectionInstance)
958    }
959
960    def createDemoAssetTypes() {
961
962        //AssetType
963        def assetTypeInstance
964
965        //AssetType #1
966        assetTypeInstance = new AssetType(name: "Print Unit")
967        saveAndTest(assetTypeInstance)
968
969        //AssetType #2
970        assetTypeInstance = new AssetType(name: "Reactor Tower")
971        saveAndTest(assetTypeInstance)
972    }
973
974    def createDemoAssemblies() {
975
976        //Assembly
977        def assemblyInstance
978
979        //Assembly #1
980        assemblyInstance = new Assembly(name: "Print Couple",
981                                                                        assetType: AssetType.get(1))
982        saveAndTest(assemblyInstance)
983//        assemblyInstance.addToMaintenanceActions(MaintenanceAction.get(1))
984
985        //Assembly #2
986        assemblyInstance = new Assembly(name: "Agitator",
987                                                                        assetType: AssetType.get(2))
988        saveAndTest(assemblyInstance)
989    }
990
991    def createDemoSubAssemblies() {
992
993        //SubAssembly
994        def subAssemblyInstance
995
996        //SubAssembly #1
997        subAssemblyInstance = new SubAssembly(name: "Cylinder",
998                                                                                    assembly: Assembly.get(1))
999        saveAndTest(subAssemblyInstance)
1000
1001         //SubAssembly #2
1002        subAssemblyInstance = new SubAssembly(name: "Gearmotor",
1003                                                                                    assembly: Assembly.get(2))
1004        saveAndTest(subAssemblyInstance)
1005    }
1006
1007    def createDemoComponentItems() {
1008
1009        //ComponentItem
1010        def componentItemInstance
1011
1012        //ComponentItem #1
1013        componentItemInstance = new ComponentItem(name: "Bearing",
1014                                                                                            subAssembly: SubAssembly.get(1))
1015        saveAndTest(componentItemInstance)
1016
1017         //ComponentItem #2
1018        componentItemInstance = new ComponentItem(name: "Drive shaft oil seal",
1019                                                                                            subAssembly: SubAssembly.get(2))
1020        saveAndTest(componentItemInstance)
1021    }
1022
1023    def createDemoAssets() {
1024
1025        //Asset
1026        def assetInstance
1027
1028        //Asset #1
1029        assetInstance = new Asset(name: "Print Unit 22",
1030                                                        assetType: AssetType.get(1),
1031                                                        systemSection: SystemSection.get(1))
1032        saveAndTest(assetInstance)
1033//        assetInstance.addToMaintenanceActions(MaintenanceAction.get(1))
1034
1035        //Asset #2
1036        assetInstance = new Asset(name: "Print Unit 21",
1037                                                        assetType: AssetType.get(1),
1038                                                        systemSection: SystemSection.get(1))
1039        saveAndTest(assetInstance)
1040
1041        //Asset #3
1042        assetInstance = new Asset(name: "Print Unit 23",
1043                                                        assetType: AssetType.get(1),
1044                                                        systemSection: SystemSection.get(1))
1045        saveAndTest(assetInstance)
1046
1047        //Asset #4
1048        assetInstance = new Asset(name: "RO 1",
1049                                                        assetType: AssetType.get(2),
1050                                                        systemSection: SystemSection.get(2))
1051        saveAndTest(assetInstance)
1052    }
1053
1054    def createBaseAssetExtenededAttributeTypes() {
1055
1056        //AssetExtendedAttributeType
1057        def assetExtendedAttributeInstanceType
1058
1059        //AssetExtendedAttributeType #1
1060        assetExtendedAttributeInstanceType = new AssetExtendedAttributeType(name: "Model Number")
1061        saveAndTest(assetExtendedAttributeInstanceType)
1062
1063        //AssetExtendedAttributeType #2
1064        assetExtendedAttributeInstanceType = new AssetExtendedAttributeType(name: "Purchase Cost")
1065        saveAndTest(assetExtendedAttributeInstanceType)
1066
1067        //AssetExtendedAttributeType #3
1068        assetExtendedAttributeInstanceType = new AssetExtendedAttributeType(name: "Serial Number")
1069        saveAndTest(assetExtendedAttributeInstanceType)
1070
1071        //AssetExtendedAttributeType #4
1072        assetExtendedAttributeInstanceType = new AssetExtendedAttributeType(name: "Manufactured Date")
1073        saveAndTest(assetExtendedAttributeInstanceType)
1074
1075        //AssetExtendedAttributeType #5
1076        assetExtendedAttributeInstanceType = new AssetExtendedAttributeType(name: "Location Description")
1077        saveAndTest(assetExtendedAttributeInstanceType)
1078    }
1079
1080    def createDemoAssetExtenedAttributes() {
1081
1082        //AssetExtendedAttribute
1083        def assetExtendedAttributeInstance
1084
1085        //AssetExtendedAttribute #1
1086        assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "PU Mark 2",
1087                                                                                                                    asset: Asset.get(1),
1088                                                                                                                    assetExtendedAttributeType: AssetExtendedAttributeType.get(1))
1089        saveAndTest(assetExtendedAttributeInstance)
1090
1091        //AssetExtendedAttribute #2
1092        assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "On the far side of Tank 5",
1093                                                                                                                    asset: Asset.get(1),
1094                                                                                                                    assetExtendedAttributeType: AssetExtendedAttributeType.get(5))
1095        saveAndTest(assetExtendedAttributeInstance)
1096    }
1097
1098
1099/****************************************
1100Call this function instead of .save()
1101*****************************************/
1102    private boolean saveAndTest(object) {
1103        if(!object.save()) {
1104//             DemoDataSuccessful = false
[199]1105            log.error "'${object}' failed to save!"
1106            log.error object.errors
[149]1107            return false
1108        }
1109        return true
1110    }
1111}
Note: See TracBrowser for help on using the repository browser.