我正在使用 Java、MySQL 和 iReport-3.7.6。我需要创建一个包含两个表的报告。一个包含机器生产详细信息,另一个包含轮类工作的员工。它应该打印日期和类次。
我可以将员工与机器合并。因为有一名或多名员工在两三台相同的机器上工作。
我需要获得如下报告。
<小时/>Date:04-03-2015 Shift - I
Sno Supervisor Machines Employees
-----------------------------------------------------------
1 Arun 1,2,4 Siva,Raj,Ram,James
2 Kumar 3,5 Balu,Mano,Stephan
Sno Machines WorkMins Production_kg
--------------------------------------------
1 1 480 800
2 2 300 500
3 3 480 1200
4 4 480 900
5 5 480 1000
<小时/>
然后仅日期:04-03-2015 Shift - II
,依此类推。
如果我使用子报告概念,例如,我给出一日报告的意思,它会像所有类次的员工表一样打印,然后是当天类次的生产表。但我需要按照上面的方式打印。
有人可以给我一个解决方案来解决这个问题吗?
最佳答案
我认为你可以使用子报表,我知道你需要一个HashMap来构建子报表,那么我建议如下:
1.- 创建三个类:
public class RowEmployee {
private int sno;
private String supervisor;
private int [] machines;
private String [] employees;
// getters and setters
}
public class RowMachinesDetails {
private int sno;
private int machine;
private int workMins;
private int productinKg;
// getters and setters
}
public class Shift {
private Date dateShift;
private List<TableEmployee> listTableEmployee;
private List<TableMachinesDetails> listTableMachinesDetails;
// getters and setters
}
RowEmployee 类用于第一个表,RowMachinesDetails 用于第二个表,Shift 类用于报表的每个类次。正如您所看到的,Shift 类有一个 RowEmployee 列表和一个 RowMachinesDetails 列表,因为这些列表对应于每个表,并且它还有一个与轮类日期相对应的日期。
2.- 在您的列表中填写员工数据和生产数据
List<TableEmployee> listTableEmployee = new ArrayList<TableEmployee>();
List<TableMachinesDetails> listTableMachinesDetails = new ArrayList<TableMachinesDetails>();
//Create instances of TableEmployee and TableMachinesDetails, and fill your lists
listTableEmployee.add(TableEmployee);
listTableMachinesDetails(TableMachinesDetails);
3.- 创建 Shift 的实例并用这些实例填充 HashMap,将 Shift 的编号作为 HashMap 中的键。
//Create instances of Shift
Shift shift = new Shift();
shift.setDateShitf (dateShift);
shift.setListTableEmployee(listTableEmployee);
shift.setListTableMachinesDetails(listTableMachinesDetails);
//Fill the HashMap
hashMapShift.add("I", shift);
4.- 最后,在 iReport 中将数据源创建为 HashMap,并使用 hashMapShift 来填充数据源。
注意:可能变量的类型不合适,最重要的是解决方案的概念。
希望这对您有帮助。
祝你好运。
关于java - 如何在具有不同标题的单个报告中打印两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28852075/