← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 7697: local/in CCEM report

 

------------------------------------------------------------
revno: 7697
committer: Samta <samta-bajpayee@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2012-07-25 08:07:44 +0100
message:
  local/in CCEM report
modified:
  local/in/dhis-web-coldchain/src/main/java/org/hisp/dhis/coldchain/reports/action/GenerateJRXMLReportAction.java
  local/in/dhis-web-coldchain/src/main/resources/META-INF/dhis/beans.xml


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'local/in/dhis-web-coldchain/src/main/java/org/hisp/dhis/coldchain/reports/action/GenerateJRXMLReportAction.java'
--- local/in/dhis-web-coldchain/src/main/java/org/hisp/dhis/coldchain/reports/action/GenerateJRXMLReportAction.java	2012-07-24 12:35:33 +0000
+++ local/in/dhis-web-coldchain/src/main/java/org/hisp/dhis/coldchain/reports/action/GenerateJRXMLReportAction.java	2012-07-25 07:07:44 +0000
@@ -4,12 +4,14 @@
 package org.hisp.dhis.coldchain.reports.action;
 
 import static org.hisp.dhis.reporttable.ReportTable.SPACE;
+import static org.hisp.dhis.system.util.ConversionUtils.getIdentifiers;
 import static org.hisp.dhis.system.util.TextUtils.getCommaDelimitedString;
 
 import java.awt.Color;
 import java.io.File;
 import java.io.IOException;
 import java.sql.Connection;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Collection;
@@ -48,10 +50,13 @@
 import org.hisp.dhis.coldchain.reports.CCEMReportOutput;
 import org.hisp.dhis.common.Grid;
 import org.hisp.dhis.i18n.I18nFormat;
+import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.organisationunit.OrganisationUnitGroup;
 import org.hisp.dhis.organisationunit.OrganisationUnitGroupService;
 import org.hisp.dhis.organisationunit.OrganisationUnitService;
+import org.hisp.dhis.period.Period;
 import org.hisp.dhis.period.PeriodService;
+import org.hisp.dhis.period.PeriodType;
 import org.hisp.dhis.system.grid.ListGrid;
 import org.hisp.dhis.system.util.DateUtils;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -357,17 +362,6 @@
         }
         else if( ccemReport.getReportType().equals( CCEMReport.ORGUNITGROUP_DATAVALUE ) )
         {  
-            Font font = new Font( 10, "Arial", true );
-            Style headerStyle = new Style();
-            headerStyle.setFont( font );
-            headerStyle.setHorizontalAlign( HorizontalAlign.LEFT );
-            headerStyle.setVerticalAlign( VerticalAlign.MIDDLE );
-            font = new Font( 8, "Arial", false );
-            Style detailStyle = new Style();
-            detailStyle.setFont( font );
-            detailStyle.setHorizontalAlign( HorizontalAlign.LEFT );
-            detailStyle.setVerticalAlign( VerticalAlign.MIDDLE );
-              
             ccemReportOutput = new CCEMReportOutput();
             List<String> tableHeadings = new ArrayList<String>();
             List<List<String>> tableSubHeadings = new ArrayList<List<String>>();
@@ -407,12 +401,8 @@
                 Integer optComboId = Integer.parseInt( ccemCellContent1.split( ":" )[1] );
                 
                 dataElementIdsByComma += "," + dataElementId;
-                optComboIdsByComma += "," + optComboId;
-                
-                tableHeadings.add( ccemReportDesign1.getDisplayheading() );
-                
-                hash.put( "dataElementId", dataElementId );
-                hash.put( "optComboId", optComboId );
+                optComboIdsByComma += "," + optComboId;                
+                tableHeadings.add( ccemReportDesign1.getDisplayheading() );               
                 List<String> distinctDataElementValues = new ArrayList<String>( ccemReportManager.getDistinctDataElementValue( dataElementId, optComboId, periodId ) );
                 int number=0;
                 for( int i = 0; i < distinctDataElementValues.size(); i++ )
@@ -440,7 +430,7 @@
                 {
                     if(i==0 || i==1)
                     {
-                        frb.addColumn(tableHeadings.get( i ), tableHeadings.get( i ), String.class.getName(), 50,true);
+                        frb.addColumn(tableHeadings.get( i ), tableHeadings.get( i ), String.class.getName(), 100,true);
                         count++;
                         
                     }
@@ -527,6 +517,226 @@
             jasperPrint = JasperFillManager.fillReport( jr, hash, ds ); 
         }
         
+        else if( ccemReport.getReportType().equals( CCEMReport.ORGUNIT_EQUIPMENT_ROUTINE_DATAVALUE ) )
+        {
+            ccemReportOutput = new CCEMReportOutput();
+            List<String> tableHeadings = new ArrayList<String>();
+            List<List<String>> tableSubHeadings = new ArrayList<List<String>>();
+            List<String> oneSubHeadingRow = new ArrayList<String>();
+            List tableData = new ArrayList();
+            List<String> content= new ArrayList<String>();
+            Date date2 = new Date();
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime( date2 );
+            String periodStartDate = "";
+            String periodEndDate = "";
+            String periodIdsByComma = "";
+            List<Period> periodList = null;
+            PeriodType periodType = periodService.getPeriodTypeByName( ccemReport.getPeriodRequire() );
+            Date sDate = null;
+            Date eDate = null;
+            Map<String, Integer> subHeadingNumber= new HashMap<String, Integer>();
+            int monthDays[] = {31,28,31,30,31,30,31,31,30,31,30,31};
+            
+            tableHeadings.add( "OrgUnit Hierarchy" );
+            oneSubHeadingRow.add( " " );
+            tableHeadings.add( "OrgUnit" );
+            oneSubHeadingRow.add( " " );
+            
+            if( periodRadio.equalsIgnoreCase( CCEMReport.CURRENT_YEAR ) )
+            {
+                periodStartDate = calendar.get( Calendar.YEAR ) + "-01-01";
+                periodEndDate = calendar.get( Calendar.YEAR ) + "-12-31";
+                sDate = format.parseDate( periodStartDate );
+                eDate = format.parseDate( periodEndDate );
+            }
+            else if( periodRadio.equalsIgnoreCase( CCEMReport.LAST_YEAR ) )
+            {
+               periodStartDate = (calendar.get( Calendar.YEAR )-1) + "-01-01";
+               periodEndDate = (calendar.get( Calendar.YEAR )-1) + "-12-31";
+               sDate = format.parseDate( periodStartDate );
+               eDate = format.parseDate( periodEndDate );
+            }
+            else if( periodRadio.equalsIgnoreCase( CCEMReport.LAST_6_MONTHS ) )
+            {
+                calendar.add( Calendar.MONTH, -1 );
+                calendar.set( Calendar.DATE, monthDays[calendar.get( Calendar.MONTH )] );
+                eDate = calendar.getTime();
+                
+                calendar.add( Calendar.MONTH, -5 );
+                calendar.set( Calendar.DATE, 1 );
+                sDate = calendar.getTime();
+            }
+            else if( periodRadio.equalsIgnoreCase( CCEMReport.LAST_3_MONTHS ) )
+            {
+                calendar.add( Calendar.MONTH, -1 );
+                calendar.set( Calendar.DATE, monthDays[calendar.get( Calendar.MONTH )] );
+                eDate = calendar.getTime();
+                
+                calendar.add( Calendar.MONTH, -2 );
+                calendar.set( Calendar.DATE, 1 );
+                sDate = calendar.getTime();
+            }
+            
+            periodList = new ArrayList<Period>( periodService.getPeriodsBetweenDates( periodType, sDate, eDate ) );
+            Collection<Integer> periodIds = new ArrayList<Integer>( getIdentifiers(Period.class, periodList ) );
+            periodIdsByComma = getCommaDelimitedString( periodIds );
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "MMM-yy" );
+            System.out.println(simpleDateFormat.format( sDate) +" : "+ simpleDateFormat.format( eDate ) );
+            
+            String dataElementIdsByComma = "-1";
+            String optComboIdsByComma = "-1";
+            
+            for( CCEMReportDesign ccemReportDesign1 :  reportDesignList )
+            {
+                String ccemCellContent1 = ccemSettingsMap.get( ccemReportDesign1.getContent() );
+                Integer dataElementId = Integer.parseInt( ccemCellContent1.split( ":" )[0] );
+                Integer optComboId = Integer.parseInt( ccemCellContent1.split( ":" )[1] );
+                
+                dataElementIdsByComma += "," + dataElementId;
+                optComboIdsByComma += "," + optComboId;
+                
+                tableHeadings.add( ccemReportDesign1.getDisplayheading() );
+                int i = 0;
+                for( Period period : periodList )
+                {
+                    oneSubHeadingRow.add( simpleDateFormat.format( period.getStartDate() ) );
+                    if( i != 0 ) 
+                        tableHeadings.add( " " );
+                    i++;
+                }
+                subHeadingNumber.put( ccemReportDesign1.getDisplayheading(), i );
+            }
+            
+            List<OrganisationUnit> orgUnitList = new ArrayList<OrganisationUnit>();
+            List<OrganisationUnit> orgUnitGroupMembers = new ArrayList<OrganisationUnit>();
+            
+            for( Integer orgUnitGroupId : orgunitGroupList )
+            {
+                OrganisationUnitGroup orgUnitGroup = organisationUnitGroupService.getOrganisationUnitGroup( orgUnitGroupId );
+                orgUnitGroupMembers.addAll( orgUnitGroup.getMembers() );
+            }
+            
+            for( Integer orgUnitId : selOrgUnitList )
+            {
+                orgUnitList.addAll( organisationUnitService.getOrganisationUnitWithChildren( orgUnitId ) );
+            }
+            
+            orgUnitList.retainAll( orgUnitGroupMembers );
+            Collection<Integer> orgUnitIds = new ArrayList<Integer>( getIdentifiers(OrganisationUnit.class, orgUnitList ) );
+            orgUnitIdsByComma = getCommaDelimitedString( orgUnitIds );
+            
+            Map<String, Integer> equipmentDataValueMap = new HashMap<String, Integer>( ccemReportManager.getFacilityWiseEquipmentRoutineData( orgUnitIdsByComma, periodIdsByComma, dataElementIdsByComma, optComboIdsByComma ) );
+            
+            FastReportBuilder frb = new FastReportBuilder();
+            tableSubHeadings.add( oneSubHeadingRow );
+           
+            int count=0;
+            
+            for(int i=0;i<=tableHeadings.size()-1;i++)
+            {                
+                if(tableHeadings.get( i )==" " )
+                {                    
+                }
+                else
+                {
+                    if(i==0 || i==1)
+                    {
+                        content.add(tableHeadings.get( i ));
+                        frb.addColumn(tableHeadings.get( i ), tableHeadings.get( i ), String.class.getName(), 50,true);
+                        count++;
+                        
+                    }
+                    else
+                    {                        
+                    }
+                }
+            }
+           for(int j=0;j<=tableSubHeadings.size()-1;j++)
+            { 
+                for(int k=0; k<=tableSubHeadings.get( j ).size()-1;k++)
+                {
+                    if(tableSubHeadings.get( j ).get( k )==" ")
+                    {                                    
+                    }
+                    else
+                    {   
+                        frb.addColumn(tableSubHeadings.get( j ).get( k ),
+                            tableSubHeadings.get( j ).get( k ), String.class.getName(), 50, true);   
+                        content.add( tableSubHeadings.get( j ).get( k ) );                        
+                            count++;
+                    }
+                }             
+            }            
+            frb.setPrintColumnNames(true);
+            frb.setHeaderHeight( 100 );
+            frb.setColumnsPerPage(1, count).setUseFullPageWidth(true); 
+            
+            int start=2; 
+            for(int i=2;i<=tableHeadings.size()-1;i++)
+            {  
+                if(tableHeadings.get( i )== " ")
+                {
+                    
+                }
+            else
+            {  
+                frb.setColspan(start, subHeadingNumber.get( tableHeadings.get( i ) ), tableHeadings.get( i ));  
+                start=start + subHeadingNumber.get( tableHeadings.get( i ) );
+            }
+            }
+            
+            for( OrganisationUnit orgUnit : orgUnitList )
+            {
+                Map numberOfData=new HashMap();
+                List<String> oneTableDataRow = new ArrayList<String>();
+                String orgUnitBranch = "";
+                if( orgUnit.getParent() != null )
+                {
+                    orgUnitBranch = getOrgunitBranch( orgUnit.getParent() );
+                }
+                else
+                {
+                    orgUnitBranch = " ";
+                }
+                
+                numberOfData.put( content.get( 0 ), orgUnitBranch );
+                numberOfData.put( content.get( 1 ), orgUnit.getName() );
+                for( CCEMReportDesign ccemReportDesign1 :  reportDesignList )
+                {                
+                    String ccemCellContent1 = ccemSettingsMap.get( ccemReportDesign1.getContent() );
+                    Integer dataElementId = Integer.parseInt( ccemCellContent1.split( ":" )[0] );
+                    Integer optComboId = Integer.parseInt( ccemCellContent1.split( ":" )[1] );
+                    
+                    for(int i=0;i<=periodList.size()-1;i++)
+                    {
+                        Period period=new Period();
+                        Integer temp = equipmentDataValueMap.get( orgUnit.getId()+":"+dataElementId+":"+period.getId() );
+                        if( temp == null )
+                        {                            
+                            numberOfData.put(content.get( i+2 ), " " );
+                        }
+                        else
+                        {                            
+                            numberOfData.put(content.get( i+2 ), temp );
+                        }
+                    }                    
+                }                
+                tableData.add( numberOfData );
+            }
+
+            frb.setTemplateFile( path+"ORGUNIT_EQUIPMENT_ROUTINE_DATAVALUE.jrxml" );
+            JRDataSource ds = new JRMapCollectionDataSource(tableData );
+            DynamicReport dynamicReport = frb.build();
+            dynamicReport.getOptions().getDefaultDetailStyle().setBackgroundColor( Color.BLUE );
+            dynamicReport.getOptions().getDefaultHeaderStyle().setBorder(Border.THIN());
+            dynamicReport.getOptions().getDefaultHeaderStyle().setHorizontalAlign(HorizontalAlign.CENTER );
+            dynamicReport.getOptions().getDefaultDetailStyle().setBorder(Border.THIN()); 
+            dynamicReport.getOptions().getDefaultDetailStyle().setHorizontalAlign(HorizontalAlign.CENTER );
+            dynamicReport.getOptions().getDefaultDetailStyle().setVerticalAlign( VerticalAlign.MIDDLE );            
+            jr = DynamicJasperHelper.generateJasperReport( dynamicReport, new ClassicLayoutManager(), hash );
+            jasperPrint = JasperFillManager.fillReport( jr, hash, ds );
+        }
         ServletOutputStream ouputStream = response.getOutputStream();
         JRExporter exporter = null;
         if ( "pdf".equalsIgnoreCase( type ) )
@@ -599,7 +809,19 @@
         }
         return SUCCESS;
     }
-
+    private String getOrgunitBranch( OrganisationUnit orgunit )
+    {
+        String hierarchyOrgunit = orgunit.getName();
+
+        while ( orgunit.getParent() != null )
+        {
+            hierarchyOrgunit = orgunit.getParent().getName() + " -> " + hierarchyOrgunit;
+
+            orgunit = orgunit.getParent();
+        }
+
+        return hierarchyOrgunit;
+    }
   
     
 }

=== modified file 'local/in/dhis-web-coldchain/src/main/resources/META-INF/dhis/beans.xml'
--- local/in/dhis-web-coldchain/src/main/resources/META-INF/dhis/beans.xml	2012-07-24 05:31:29 +0000
+++ local/in/dhis-web-coldchain/src/main/resources/META-INF/dhis/beans.xml	2012-07-25 07:07:44 +0000
@@ -647,6 +647,7 @@
        <property name="ccemReportManager" ref="org.hisp.dhis.coldchain.reports.CCEMReportManager" />   
 		<property name="jdbcTemplate" ref="jdbcTemplate"/>
 		<property name="organisationUnitService" ref="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
+		<property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
 		<property name="organisationUnitGroupService" ref="org.hisp.dhis.organisationunit.OrganisationUnitGroupService"/>
 		    
   </bean>