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

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

Adjust base data for asset tree refactor.

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