Changeset 535 for trunk/grails-app


Ignore:
Timestamp:
May 16, 2010, 5:47:34 PM (14 years ago)
Author:
gav
Message:

Improvements to Reactive Ratio Report.

Location:
trunk/grails-app
Files:
3 edited

Legend:

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

    r533 r535  
    4444
    4545    def reactiveRatio = {
    46         params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
    4746
    4847        params.reportTitle = "Reactive Ratio Report"
     48        params.logoUrl = resource(dir:'images',file:'logo.png', absolute:true)
    4949        params.currentUser = authService.currentUser
    50         params.startDate = dateUtilService.yesterday-14
    51         params.endDate = dateUtilService.tomorrow+15
     50
     51        if(params.startDate == 'struct')
     52            params.startDate = dateUtilService.makeDate(params.startDate_year, params.startDate_month, params.startDate_day)
     53        else
     54            params.startDate = dateUtilService.today-7
     55        params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
     56
     57        if(params.endDate == 'struct')
     58            params.endDate = dateUtilService.makeDate(params.endDate_year, params.endDate_month, params.endDate_day)
     59        else
     60            params.endDate = dateUtilService.today
     61        params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
     62
    5263        def dataModel = [taskReportService.getReactiveRatio(params, RCU.getLocale(request))]
    5364
  • trunk/grails-app/services/TaskReportService.groovy

    r533 r535  
    2424        def result = [:]
    2525
    26         def currentUser = authService.currentUser
    27         def startOfToday = dateUtilService.today
    28         def startOfYesterday = dateUtilService.yesterday
    29         def startOfTomorrow = dateUtilService.tomorrow
    30         def oneWeekAgo = dateUtilService.oneWeekAgo
    31 
    32         def paginateParams = [:]
    33         paginateParams.max = Math.min(params?.max?.toInteger() ?: 10, paramsMax)
    34         paginateParams.offset = params?.offset?.toInteger() ?: 0
    35 
    36         def sort = "task." + (params?.sort ?: "targetStartDate")
    37         def order = params?.order == "desc" ? "desc" : "asc"
    38         def orderBy = " order by " + sort + ' ' + order
    39 
    4026        def namedParams = [:]
    4127        namedParams.startDate = params.startDate ?: dateUtilService.today
    42         namedParams.endDate = params.endDate ?: dateUtilService.tomorrow
     28        namedParams.endDate = params.endDate ?: dateUtilService.today
     29        namedParams.endDate++ // Start of next day required.
    4330        namedParams.immediateCallout = TaskType.read(1)
    4431        namedParams.unscheduledBreakin = TaskType.read(2)
    4532        namedParams.preventativeMaintenance = TaskType.read(4)
     33        namedParams.notStarted = TaskStatus.read(1)
    4634
    4735        result.taskQuery = "from Task as task \
    4836                                        where (task.trash = false \
     37                                                    and task.taskStatus != :notStarted \
    4938                                                    and task.targetStartDate < :endDate \
    5039                                                    and task.targetStartDate >= :startDate \
     
    5645                                        )"
    5746
    58         result.taskQuery = "select distinct task " + result.taskQuery + orderBy
    59         result.taskList = Task.executeQuery(result.taskQuery, namedParams, paginateParams)
     47        result.taskQuery = "select distinct task " + result.taskQuery
     48        result.taskList = Task.executeQuery(result.taskQuery, namedParams)
    6049        result.taskCount = result.taskList.size()
    6150
    6251        // Counts
    63         result.totalTaskOnAssetCount = 0
     52        result.totalAssetsOnTasksCount = 0
    6453        result.immediateCalloutCount = 0
    6554        result.unscheduledBreakinCount = 0
    6655        result.preventativeMaintenanceCount = 0
    6756
    68         // Count the tasks performed against assets.
     57        result.summaryOfCalculationMethod = 'HQL query: \n\n'
     58        def tempStringArray = result.taskQuery.split('    ')
     59        tempStringArray.each() {
     60            if(it != '') result.summaryOfCalculationMethod += it +'\n'
     61        }
     62        result.summaryOfCalculationMethod += '\n'+'Calculations: '+'\n\n'
     63
     64        result.summaryOfCalculationMethod += 'totalAssetsOnTasksCount = A count of unique assets on each task. \n'
    6965        result.taskList.each() { task ->
    7066            if(task.primaryAsset) {
    71                 result.totalTaskOnAssetCount++
     67                result.totalAssetsOnTasksCount++
    7268                if(task.taskType == namedParams.immediateCallout) result.immediateCalloutCount++
    7369                if(task.taskType == namedParams.unscheduledBreakin) result.unscheduledBreakinCount++
     
    7672            task.associatedAssets.each() { associatedAsset ->
    7773                if(associatedAsset.id != task.primaryAsset?.id) {
    78                     result.totalTaskOnAssetCount++
     74                    result.totalAssetsOnTasksCount++
    7975                    if(task.taskType == namedParams.immediateCallout) result.immediateCalloutCount++
    8076                    if(task.taskType == namedParams.unscheduledBreakin) result.unscheduledBreakinCount++
     
    8884        result.totalPreventativePercentage = 0
    8985
     86        result.summaryOfCalculationMethod += 'totalPreventativeCount = unscheduledBreakinCount + preventativeMaintenanceCount\n'
    9087        result.totalPreventativeCount = result.unscheduledBreakinCount + result.preventativeMaintenanceCount
    9188        try {
    92             result.immediateCalloutPercentage = (result.immediateCalloutCount / result.totalTaskOnAssetCount)*100
    93             result.immediateCalloutPercentage = result.immediateCalloutPercentage.toInteger()
    94             result.totalPreventativePercentage = (result.totalPreventativeCount / result.totalTaskOnAssetCount)*100
    95             result.totalPreventativePercentage = result.totalPreventativePercentage.toInteger()
     89            result.summaryOfCalculationMethod += 'immediateCalloutPercentage = (immediateCalloutCount / totalAssetsOnTasksCount)*100 \n'
     90            result.summaryOfCalculationMethod += 'totalPreventativePercentage = (totalPreventativeCount / totalAssetsOnTasksCount)*100 \n'
     91            result.immediateCalloutPercentage = (result.immediateCalloutCount / result.totalAssetsOnTasksCount)*100
     92            result.totalPreventativePercentage = (result.totalPreventativeCount / result.totalAssetsOnTasksCount)*100
    9693        }
    9794        catch(ArithmeticException e) {
     95            log.error "Could not calculate percentages: "+e
    9896        }
    9997
  • trunk/grails-app/views/appCore/start.gsp

    r533 r535  
    66    <nav:resources override="true"/>
    77    <resource:tabView skin="tabviewCustom" />
     8    <resource:dateChooser />
    89</head>
    910    <body>
     
    9899                                    <tr class="prop">
    99100                                        <td valign="top" class="name">
    100                                             <label>Frequent Reports:</label>
     101                                            <label>Frequently Used:</label>
    101102                                        </td>
    102103                                        <td valign="top" class="value">
     
    105106                                                                            jasper="reactiveRatio"
    106107                                                                            name="Reactive Ratio"
    107                                                                             format="PDF, HTML, XLS"/>
     108                                                                            format="PDF, XLS">
     109                                                <richui:dateChooser name="startDate" format="dd-MM-yyyy" value="${new Date()-7}" />
     110                                                to
     111                                                <richui:dateChooser name="endDate" format="dd-MM-yyyy" value="${new Date()}" />
     112                                            </g:jasperReport>
    108113                                            <br />
    109114                                            <g:jasperReport controller="report"
     
    111116                                                                            jasper="templatePortrait"
    112117                                                                            name="Template (Portrait)"
    113                                                                             format="PDF, HTML, XLS"/>
     118                                                                            format="PDF, XLS"/>
    114119                                            <br />
    115120                                            <g:jasperReport controller="report"
     
    117122                                                                            jasper="templateLandscape"
    118123                                                                            name="Template (Landscape)"
    119                                                                             format="PDF, HTML, XLS"/>
     124                                                                            format="PDF, XLS"/>
    120125                                            <br />
    121126                                        </td>
Note: See TracChangeset for help on using the changeset viewer.