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

Improvements to Reactive Ratio Report.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.