Changeset 542 for trunk/grails-app


Ignore:
Timestamp:
May 23, 2010, 4:43:44 PM (14 years ago)
Author:
gav
Message:

Start Immediate Callout report.

Location:
trunk/grails-app
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/ReportController.groovy

    r538 r542  
    6666    }
    6767
    68     def test = {
    69         render taskReportService.getReactiveRatio(params, RCU.getLocale(request))
     68    def immediateCallouts = {
     69
     70        params.reportTitle = "Immediate Callouts"
     71        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
     72        params.currentUser = authService.currentUser
     73
     74        if(params.startDate == 'struct')
     75            params.startDate = dateUtilService.makeDate(params.startDate_year, params.startDate_month, params.startDate_day)
     76        else
     77            params.startDate = dateUtilService.today-7
     78        params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
     79
     80        if(params.endDate == 'struct')
     81            params.endDate = dateUtilService.makeDate(params.endDate_year, params.endDate_month, params.endDate_day)
     82        else
     83            params.endDate = dateUtilService.today
     84        params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
     85
     86        def dataModel = [taskReportService.getImmediateCallouts(params, RCU.getLocale(request))]
     87
     88//         render dataModel
     89        chain(controller:'jasper', action:'index', model:[data: dataModel], params:params)
     90
    7091    }
    7192
  • trunk/grails-app/services/TaskReportService.groovy

    r536 r542  
    1010    def authService
    1111    def dateUtilService
     12    def sessionFactory
    1213//     def messageSource
    1314
     
    1819    /**
    1920    * Selects and returns the reactive ratio.
    20     * @param params The request params, may contain param to specify the search.
     21    * @param params The request params, may contain params to specify the search.
    2122    * @param locale The locale to use when generating result.message.
    2223    */
     
    3435
    3536        result.taskQuery = "from Task as task \
    36                                         where (task.trash = false \
    37                                                     and task.taskStatus != :notStarted \
    38                                                     and task.targetStartDate < :endDate \
    39                                                     and task.targetStartDate >= :startDate \
    40                                                     and ( \
    41                                                         task.taskType = :immediateCallout \
    42                                                         or task.taskType = :unscheduledBreakin \
    43                                                         or task.taskType = :preventativeMaintenance \
    44                                                     ) \
    45                                         )"
     37                                            where (task.trash = false \
     38                                                        and task.taskStatus != :notStarted \
     39                                                        and task.targetStartDate < :endDate \
     40                                                        and task.targetStartDate >= :startDate \
     41                                                        and ( \
     42                                                            task.taskType = :immediateCallout \
     43                                                            or task.taskType = :unscheduledBreakin \
     44                                                            or task.taskType = :preventativeMaintenance \
     45                                                        ) \
     46                                            )"
    4647
    4748        result.taskQuery = "select distinct task " + result.taskQuery
     
    5556        result.preventativeMaintenanceCount = 0
    5657
     58        // Summary Of Calculations.
    5759        result.summaryOfCalculationMethod = 'HQL query: \n\n'
    5860        def tempStringArray = result.taskQuery.split('    ')
     
    148150        return result
    149151
    150     } // getQuickSearch
     152    } // getReactiveRatio
     153
     154    /**
     155    * Selects and returns Immediate Callouts, grouped by Asset.
     156    * @param params The request params, may contain params to specify the search.
     157    * @param locale The locale to use when generating result.message.
     158    */
     159    def getImmediateCallouts(params, locale) {
     160        def result = [:]
     161
     162        def namedParams = [:]
     163        namedParams.startDate = params.startDate ?: dateUtilService.today
     164        namedParams.endDatePlusOne = (params.endDate ?: dateUtilService.today)+1
     165        namedParams.immediateCallout = TaskType.read(1)
     166
     167        result.taskQuery = "from Task as task \
     168                                            where (task.trash = false \
     169                                                        and task.targetStartDate < :endDatePlusOne \
     170                                                        and task.targetStartDate >= :startDate \
     171                                                        and task.taskType = :immediateCallout \
     172                                                        ) \
     173                                            )"
     174
     175        result.taskQuery = "select distinct task " + result.taskQuery
     176        result.taskList = Task.executeQuery(result.taskQuery, namedParams)
     177        result.taskCount = result.taskList.size()
     178
     179        // Assets on Tasks Count.
     180        result.totalAssetsOnTasksCount = 0
     181        result.assetList = []
     182
     183        // Add or update asset details in assetList.
     184        def addAssetToList = { asset, task ->
     185
     186            def downTime = 0
     187            def faultEntries = Entry.findAllByTaskAndEntryType(task, EntryType.read(1))
     188            faultEntries.each() { downTime += (it.durationHour*60 + it.durationMinute) }
     189
     190            def assetDetails = result.assetList.find { it.id == asset.id }
     191            if(assetDetails) {
     192                assetDetails.immediateCalloutCount++
     193                assetDetails.immediateCalloutTaskList.add(task.toString())
     194            }
     195            else {
     196                assetDetails = [id: asset.id,
     197                                            name: asset.name,
     198                                            immediateCalloutCount: 1,
     199                                            downTime: downTime,
     200                                            immediateCalloutTaskList: [task.toString()]]
     201
     202                result.assetList << assetDetails
     203            }
     204        } // addAssetToList
     205
     206        // Summary Of Calculations.
     207        result.summaryOfCalculationMethod = 'HQL query: \n\n'
     208        def tempStringArray = result.taskQuery.split('    ')
     209        tempStringArray.each() {
     210            if(it != '') result.summaryOfCalculationMethod += it +'\n'
     211        }
     212        result.summaryOfCalculationMethod += '\n'+'Calculations: '+'\n\n'
     213
     214        result.summaryOfCalculationMethod += 'totalAssetsOnTasksCount = A count of unique assets on each task. \n'
     215        result.taskList.each() { task ->
     216            if(task.primaryAsset) {
     217                result.totalAssetsOnTasksCount++
     218                addAssetToList(task.primaryAsset, task)
     219            }
     220            task.associatedAssets.each() { associatedAsset ->
     221                if(associatedAsset.id != task.primaryAsset?.id) {
     222                    result.totalAssetsOnTasksCount++
     223                    addAssetToList(associatedAsset, task)
     224                }
     225            }
     226
     227        } // each() task
     228
     229        // Sort by callout count.
     230        result.assetList.sort {a, b -> b.immediateCalloutCount.compareTo(a.immediateCalloutCount)}
     231
     232        // Success.
     233        return result
     234
     235    } // getImmediateCallouts()
    151236
    152237
  • trunk/grails-app/views/appCore/start.gsp

    r535 r542  
    113113                                            <br />
    114114                                            <g:jasperReport controller="report"
     115                                                                            action="immediateCallouts"
     116                                                                            jasper="immediateCallouts"
     117                                                                            name="Immediate Callouts"
     118                                                                            format="PDF, XLS">
     119                                                <richui:dateChooser name="startDate" format="dd-MM-yyyy" value="${new Date()-7}" />
     120                                                to
     121                                                <richui:dateChooser name="endDate" format="dd-MM-yyyy" value="${new Date()}" />
     122                                            </g:jasperReport>
     123                                            <br />
     124                                            <g:jasperReport controller="report"
    115125                                                                            action="templatePortrait"
    116126                                                                            jasper="templatePortrait"
Note: See TracChangeset for help on using the changeset viewer.