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

Last change on this file since 263 was 258, checked in by gav, 15 years ago

Add a service to create bulk test data.

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