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

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

Expand base definitions.

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