ireport 使用JRMapCollectionDataSource作数据源

1.打印报表类

public class XyErCiReportAction extends BaseReportAction {

	private static final String REPORT_DIR="reports/xy/erci/";
	private static final String REPORT_NAME_XY_ZCXS = REPORT_DIR + "xy-erci";
	private static final String REPORT_NAME_XY_ZCXS_SUB = REPORT_DIR + "xy-erci-sub";
	private static final String REPORT_NAME_XY_ZCXS_SUB_SUB = REPORT_DIR + "xy-erci-sub-sub";
	private static final String REPORT_NAME_XY_ZCXS_SUB_SUB_SUB = REPORT_DIR + "xy-erci-sub-sub-sub";
	
	private String format;
	private CheckTaskService checkTaskService;
	private CheckSpaceService checkSpaceService;
	private CheckItemService checkItemService;
	private CheckAbnormalService checkAbnormalService;
	private CheckOperationService checkOperationService;

	private String taskId;
	
	public String report(){
		
		//主报表数据
		Collection<Map<String,Object>> taskFields = new ArrayList<Map<String,Object>>();
		Map<String, Object> taskField = new HashMap<String, Object>();
		CheckOperation obj = this.checkOperationService.get(taskId);
		String category = "";
		taskField.put("title1","aaa");
		
		//存放所有间隔对应的内容
		Collection<Map<String,Object>> datas = new ArrayList<Map<String,Object>>();
		taskField.put("billNO",obj.getBillNO());
		taskField.put("stName",obj.getStName());
		
		SimpleDateFormat sdf = new SimpleDateFormat();
		String startDateStr = null;
		String endDateStr = null;
		if(obj.getStartDate()!=null){
			startDateStr = sdf.format(obj.getStartDate());
		}
		if(obj.getEndDate()!=null){
			endDateStr = sdf.format(obj.getEndDate());
		}
		taskField.put("startDate",startDateStr);
		taskField.put("endDate",endDateStr);
		taskField.put("principal",obj.getPrincipal());
		taskField.put("auditorName",obj.getAuditorName());
		String checkTaskId=obj.getCheckTaskId();
		String stId = obj.getStId();
		
		List<CheckSpace> csList = checkSpaceService.findByTaskIdOrderByPlaceOrderno(checkTaskId);
		int size = csList.size();
		for (CheckSpace checkSpace : csList) {
			Map<String, Object> data = new HashMap<String, Object>();
			data.put("devTypeName",checkSpace.getSpaceName());
			
			List<String> list = checkItemService.findDistinctSpaceList2(checkTaskId,checkSpace.getOid());
			Collection<Map<String,Object>> devUnits = new ArrayList<Map<String,Object>>(); 
			for (String pm : list) {
				Collection<Map<String,Object>> devUnitsMap = new ArrayList<Map<String,Object>>();
				Map<String, Object> devUnit = new HashMap<String, Object>();
				devUnit.put("devUnitName", pm);
				
				List<CheckItem> items = this.checkItemService.findItemByTaskAndSpaceIdAndTypeName(checkTaskId,checkSpace.getOid(),pm);
				Collection<Map<String,Object>> itemsMap = new ArrayList<Map<String,Object>>(); 
				for (CheckItem item : items) {
					Map<String, Object> itemMap = new HashMap<String, Object>();
					itemMap.put("itemName", item.getCheckItem());
					itemMap.put("checkValue", item.getCheckValue().equals("normal")?"√":"×");
					itemsMap.add(itemMap);
				}
				devUnit.put("itemNames",new JRMapCollectionDataSource(itemsMap));
				devUnits.add(devUnit);
				
			}
			data.put("devUnitList",new JRMapCollectionDataSource(devUnits));
			datas.add(data);
		}
		
		//将数据源作为参数传进子报表
		Map<String, Object> parameters = new HashMap<String, Object>();
		//将数据源作为参数传进子报表
		parameters.put("subDetails", new JRMapCollectionDataSource(datas)); 
		parameters.put("SUBREPORT_DIR",ChkoptConstants.ECXS_SUBREPORT_DIR); 
		
		taskFields.add(taskField);
		JasperUtils.compileReportToJasper(genReportRealPathName(REPORT_NAME_XY_ZCXS));
		JasperUtils.compileReportToJasper(genReportRealPathName(REPORT_NAME_XY_ZCXS_SUB));
		JasperUtils.compileReportToJasper(genReportRealPathName(REPORT_NAME_XY_ZCXS_SUB_SUB));
		JasperUtils.compileReportToJasper(genReportRealPathName(REPORT_NAME_XY_ZCXS_SUB_SUB_SUB));
		  
		List<JasperPrint> list = new ArrayList<JasperPrint>();
		list.add(this.genLargeReport(REPORT_NAME_XY_ZCXS, parameters,new JRMapCollectionDataSource(taskFields)));
		this.showLarge(list);
		return null;
	}
	
	/**
	 * 打印报表
	 *  
	 * @param list 
	 */
	@SuppressWarnings("unchecked")
	private void showLarge(List list) {
		if (ReportsService.REPORT_TYPE_WORD.equals(format))
			showLargeRTF(list);
		else if (ReportsService.REPORT_TYPE_EXCEL.equals(format))
			showLargeXLS(list);
		else
			showLargePDF(list);
	}

	public String getFormat() {
		return format;
	}

	public void setFormat(String format) {
		this.format = format;
	}


	public String getTaskId() {
		return taskId;
	}

	public void setTaskId(String taskId) {
		this.taskId = taskId;
	}

	public void setCheckTaskService(CheckTaskService checkTaskService) {
		this.checkTaskService = checkTaskService;
	}

	public void setCheckSpaceService(CheckSpaceService checkSpaceService) {
		this.checkSpaceService = checkSpaceService;
	}

	public void setCheckItemService(CheckItemService checkItemService) {
		this.checkItemService = checkItemService;
	}
	
	public void setCheckAbnormalService(CheckAbnormalService checkAbnormalService) {
		this.checkAbnormalService = checkAbnormalService;
	}
	public void setCheckOperationService(CheckOperationService checkOperationService) {
		this.checkOperationService = checkOperationService;
	}

}


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值