报表开发步骤
- 格式:docx
- 大小:129.39 KB
- 文档页数:18
报表开发步骤
1 报表需要建的文件
可以在设计建模新建一个文件夹也可以在业务建模下新建
2 ContractReportFilterUI:报表弹出的条件选择框,即过滤界面,新建需要
mRptBaseConditionUI
F7控件以及其他控件在选用板中添加,绑定F7的实体对象在F7的属性下使用queryinfo 进行绑定
3 ContractReportUI: 报表展示页面,新键需要继承系统UI类,需要添加一个KDTABLE控件,
右击该表格,可以编辑表信息,即添加列跟头,注意列名需跟表头对应起来。
需要新建一个表头跟列名对应起来。
mRptBaseUI
4 CntractReportFacade:用于调用系统查询的Facade,也需要继承系统类
mRptBase
ContractReportFilterUI 方法说明
getCustomCondition:用于获取报表界面的界面参数,也可以理解成过滤信息setCustomCondition: 用于将弹出UI的界面参数保存起来,和上面方法对应onInit:系统初始化方法,你可以初始化控件,也可以初始化控件值
verify:验证输入信息。
public class ContractReportFilterUI extends AbstractContractReportFilterUI { private static final Logger logger = CoreUIObject
.getLogger(ContractReportFilterUI.class);
/**
*output class constructor
*/
public ContractReportFilterUI() throws Exception {
super();
setSize(400, 300); // 设置初始化大小
}
@Override
public void onLoad() throws Exception {
NewOrgViewF7PromptDialog f7 = new NewAdminF7(this);
// NewOrgViewF7PromptDialog f7 = new NewF7(this);
f7.setShowAssistantOrg(false);
f7.setIsCUFilter(false);
f7.setShowVirtual(true);
f7.setContainSealUp(false);
f7.setNeedAddAssistant(true);
f7.setPermissionItem("gl_voucher_add");
departmentF7.setSelector(f7);
// 设置必填
departmentF7.setRequired(true);
super.onLoad();
}
/**
*output storeFields method
*/
public void storeFields() {
super.storeFields();
}
// 用于获取过滤报表界面的界面参数,也可以理解成过滤信息
@Override
public RptParams getCustomCondition() {
RptParams rpt = new RptParams();
if (this.departmentF7.getValue() != null) {
rpt
.setObject("department", this.departmentF7.getValue()
.toString());
} else {
rpt.setObject("department", null);
}
// 使用状态
if (this.kDBizPromptBox1.getValue() != null) {
rpt.setObject("status", ((FaUseStatusInfo) this.kDBizPromptBox1 .getValue()).getId().toString());
} else {
rpt.setObject("status", null);
}
// 资产类别
if (this.kDBizPromptBox2.getValue() != null) {
rpt.setObject("cat", ((FaCatInfo) this.kDBizPromptBox2.getValue()) .getId().toString());
} else {
rpt.setObject("cat", null);
}
// 存放地点
if (this.kDBizPromptBox3.getValue() != null) {
rpt.setObject("address", ((AddressInfo) this.kDBizPromptBox3
.getValue()).getId().toString());
} else {
rpt.setObject("address", null);
}
// 规格编号
if (!StringUtils.isEmpty(kDTextField1.getText())) {
rpt.setString("Specifications", kDTextField1.getText());
} else {
rpt.setString("Specifications", null);
}
// 资产编码
if (!StringUtils.isEmpty(kDTextField2.getText())) {
rpt.setString("asserts", kDTextField2.getText());
} else {
rpt.setString("asserts", null);
}
// 条形码
if (!StringUtils.isEmpty(kDTextField3.getText())) {
rpt.setString("bar", kDTextField3.getText());
} else {
rpt.setString("bar", null);
}
// 编码
if (!StringUtils.isEmpty(kDTextField4.getText())) {
rpt.setString("number", kDTextField4.getText());
} else {
rpt.setString("number", null);
}
// 技术编码
if (!StringUtils.isEmpty(kDTextField5.getText())) {
rpt.setString("technology", kDTextField5.getText());
} else {
rpt.setString("technology", null);
}
return rpt;
}
// 系统初始化方法,你可以初始化控件,也可以初始化控件值
@Override
public void onInit(RptParams params) throws Exception {
}
// 用于将弹出UI的界面参数保存起来,和上面方法对应(保存方案中获取保存的值)@Override
public void setCustomCondition(RptParams params) {
if(params.getObject("department") != null){
departmentF7.setValue(params.getObject("department"));
}else{
departmentF7.setValue(null);
}
if(params.getObject("status") !=null){
kDBizPromptBox1.setValue(params.getObject("status"));
}else{
kDBizPromptBox1.setValue(null);
}
if(params.getObject("cat") !=null){
kDBizPromptBox2.setValue(params.getObject("cat"));
}else{
kDBizPromptBox2.setValue(null);
}
if(params.getObject("address") !=null){
kDBizPromptBox3.setValue(params.getObject("address"));
}else{
kDBizPromptBox3.setValue(null);
}
if(params.getString("Specifications") !=null){
kDTextField1.setText(params.getString("Specifications"));
}else{
kDTextField1.setText(null);
}
if(params.getObject("asserts") !=null){
kDTextField2.setText(params.getString("asserts"));
}else{
kDTextField2.setText(null);
}
if(params.getObject("bar") !=null){
kDTextField3.setText(params.getString("bar"));
}else{
kDTextField3.setText(null);
}
if(params.getObject("number") !=null){
kDTextField4.setText(params.getString("number"));
}else{
kDTextField4.setText(null);
}
if(params.getObject("technology") !=null){
kDTextField5.setText(params.getString("technology"));
}else{
kDTextField5.setText(null);
}
}
public boolean verify() {
if (departmentF7.getValue() == null || "".equals(departmentF7)) {
com.kingdee.eas.util.client.MsgBox.showError("请选择部门");
SysUtil.abort();
}
return super.verify();
}
}
ContractReportUI 方法说明
getParamsForInit:从弹出UI获取界面参数
getQueryDialogUserPanel:指定弹出UI类
getRemoteInstance:远程调用查询的接口
getTableForPrintSetting:获取表格打印设置
query:查询对话框点击确定后执行
public class ContractReportUI extends AbstractContractReportUI {
private static final Logger logger = CoreUIObject
.getLogger(ContractReportUI.class);
public ContractReportUI() throws Exception {
super();
kDTable1.checkParsed();
kDTable1.getDataRequestManager().addDataRequestListener(this);
kDTable1.getDataRequestManager().setDataRequestMode(
KDTDataRequestManager.VIRTUAL_MODE_PAGE);
enableExportExcel(kDTable1);
}
@Override
public void onLoad() throws Exception {
btnCloud.setEnabled(true);
btnCloud.setVisible(true);
super.onLoad();
}
public void actionCloudFeed_actionPerformed(ActionEvent e) throws Exception { String id = "";
int Row = KDTableUtil.getSelectedRow(kDTable1);
if (kDTable1.getRow(Row).getCell("id") != null
&& kDTable1.getRow(Row).getCell("id").getValue() != null) {
id = kDTable1.getRow(Row).getCell("id").getValue().toString();
}
System.out.println("id" + id);
/*
* if(value !=null && "".equals(value)){ // (windowTitle,
* value.toString()); //MsgBox.confirm(title, msg, cc)
* (windowTitle, value.toString(), btnCloud);
*
* }
*/
UIContext uiContext = new UIContext(this);
uiContext.put("id", id);
uiContext.put(UIContext.OWNER, this);
IUIWindow uiWindow = null;
uiWindow = UIFactory.createUIFactory(UIFactoryName.MODEL).create(
FaCurCardEditUI.class.getName(), uiContext, null,
OprtState.VIEW);
uiWindow.show();
// TestDanEditUI.class.getName()
}
// 初始过滤条件
@Override
protected RptParams getParamsForInit() {
RptParams initParam = new RptParams();
return initParam;
}
// 加载过滤条件
@Override
protected CommRptBaseConditionUI getQueryDialogUserPanel() throws Exception { return new ContractReportFilterUI();
}
// 获取远程实例Facade
@Override
protected ICommRptBase getRemoteInstance() throws BOSException { // TODO Auto-generated method stub
return ContractReportFacadeFactory.getRemoteInstance();
}
// 获取主页面表格对象
@Override
protected KDTable getTableForPrintSetting() {
return kDTable1;
}
// 主页面点击确定后的
@Override
protected void query() {
kDTable1.removeRows();
try {
ContractReportFacadeFactory.getRemoteInstance()
.query(this.params);
} catch (EASBizException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BOSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 给主页面表格赋值
@Override
public void tableDataRequest(KDTDataRequestEvent e) {
String cu = SysContext.getSysContext().getCurrentCtrlUnit().getId()
.toString();
this.params.setObject("cu", cu);
try {
RptParams rpt = ContractReportFacadeFactory.getRemoteInstance()
.query(this.params);
if (rpt == null)
return;
RptRowSet row = (RptRowSet) rpt.getObject("rptrowset");
setUITitle("报表展示");
if (row != null) {
List<HashMap<String, String>> totalList = new ArrayList<HashMap<String, String>>();
while (row.next()) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("fnumber", row.getString("FNumber"));
map.put("fname", row.getString("FName_l23"));
map.put("fid", row.getString("FID"));
// 实物入账日期
if (row.getObject("FAccountDate") != null) {
map.put("faccountDate", row.getObject("FAccountDate") .toString());
} else {
map.put("faccountDate", "");
}
// 存放地点
map.put("fstore", row.getString("FName"));
// 管理部门
map.put("fdept", row.getString("FName_l2"));
// //累计折旧
if (row.getObject("FAccuDepr") != null) {
map.put("faccu", row.getObject("FAccuDepr").toString()); } else {
map.put("faccu", "");
}
// 财务入账时间
if (row.getObject("FFiAccountDate") != null) {
map.put("ffiaccount", row.getObject("FFiAccountDate")
.toString());
} else {
map.put("ffiaccount", "");
}
// 条形码
map.put("fbar", row.getString("FbarCode"));
// //使用状态
map.put("fuserStatus", row.getString("FNameUser"));
// //技术编码
map.put("fpaper", row.getString("FPaperNo"));
// //金额(资产原值)
if (row.getObject("FAssetValue") != null) {
map.put("fasset", row.getBigDecimal("FAssetValue")
.toString());
} else {
map.put("fasset", "");
}
// //本期折旧
if (row.getObject("FDeprTTerm") != null) {
map.put("fdep", row.getBigDecimal("FDeprTTerm")
.toString());
} else {
map.put("fdep", "");
}
// //保管人(使用人)
map.put("fkeep", row.getString("FKeeperID"));
totalList.add(map);
}
System.out.println(totalList.size());
for (int i = 0; i < totalList.size(); i++) {
HashMap<String, String> info = totalList.get(i);
IRow row2 = kDTable1.addRow();
row2.getCell("number").setValue(info.get("fnumber"));
row2.getCell("name").setValue(info.get("fname"));
row2.getCell("id").setValue(info.get("fid"));
row2.getCell("physicalRecording").setValue(
info.get("faccountDate"));
row2.getCell("address").setValue(info.get("fstore"));
row2.getCell("department").setValue(info.get("fdept"));
row2.getCell("cumulativeDepreciation").setValue(
info.get("faccu"));
row2.getCell("financialRecording").setValue(
info.get("ffiaccount"));
row2.getCell("barCode").setValue(info.get("fbar"));
row2.getCell("userStatus")
.setValue(info.get("fuserStatus"));
// 列值靠右显示
kDTable1.getColumn("amount").getStyleAttributes()
.setHorizontalAlign(HorizontalAlignment.RIGHT);
kDTable1.getColumn("cumulativeDepreciation")
.getStyleAttributes().setHorizontalAlign(
HorizontalAlignment.RIGHT);
kDTable1.getColumn("thisDepreciation").getStyleAttributes() .setHorizontalAlign(HorizontalAlignment.RIGHT);
// 表格不可编辑
kDTable1.getStyleAttributes().setLocked(true);
// 行不可修改
row2.getStyleAttributes().setLocked(true);
row2.getCell("technology").setValue(info.get("fpaper"));
row2.getCell("amount").setValue(info.get("fasset"));
row2.getCell("thisDepreciation").setValue(info.get("fdep"));
row2.getCell("userPerson").setValue(info.get("fkeep"));
}
}
} catch (EASBizException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (BOSException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
super.tableDataRequest(e);
}
}
Facade关键代码
因为Facade已经继承了父类,所以这里不需要再新建方法,重写父类方法即可,protected RptParams _query(Context ctx, RptParams params) 在方法中,需要先获取界面参数再拼SQL即可,参考代码如下:
public class ContractReportFacadeControllerBean extends
AbstractContractReportFacadeControllerBean {
private static Logger logger = Logger
.getLogger("com.kingdee.eas.custom.report.app.ContractReportFacadeControllerBean"
);
// 初始化数据
@Override
protected RptParams _init(Context ctx, RptParams params)
throws BOSException, EASBizException {
// TODO Auto-generated method stub
RptParams rpt = new RptParams();
return rpt;
}
// 创建显示数据表格模板
@Override
protected RptParams _createTempTable(Context ctx, RptParams params)
throws BOSException, EASBizException {
return params;
// TODO Auto-generated method stub
/*
* String cuId = params.getString("cuId"); // 删除旧临时表
* dropTable(params.getString("tempTable"), ctx);
*
* // 设置临时表名称String tempTable = this.getTempTableName("报表例子", ctx);
*
* String sql = "select FNumber,FName_l2" + getLoc(ctx) +
* "FNumber,FName_l2" + "into" + tempTable +
* "from CT_DEM_TestDan where CFDepartmentID =? ";
*
* // 创建临时表executeCreateAsSelectInto(sql, new SqlParams().setString(1,
* cuId), ctx);
*
* // 统计总行数String countSql = "select count(1) cc from " + tempTable;
* RptRowSet rs = this.executeQuery(countSql, null, ctx); rs.next(); int
* count = rs.getInt(0); // 构造表头RptTableHeader header = new
* RptTableHeader(); RptTableColumn col = null;
*
* col = new RptTableColumn("FNumber"); col.setWidth(200);
* header.addColumn(col);
*
* col = new RptTableColumn("FName_l2"); col.setWidth(200);
* header.addColumn(col); header.setLabels(new Object[][] { { "编码", "名称"
* } });
*
* RptParams result = new RptParams(); result.setString("tempTable",
* tempTable); result.setObject("header", header);
* result.setInt("verticalCount", count); return result;
*/
}
@Override
protected RptParams _query(Context ctx, RptParams params, int from, int len) throws BOSException, EASBizException {
String depa = "";
String status = "";
String cat = "";
String address = "";
String Specifications = "";
String asserts = "";
String bar = "";
String number = "";
String technology = "";
StringBuffer sql = new StringBuffer();
// 根据选中的部门获取到FID 拿到他的长编码
if (params.getObject("department") != null) {
depa = params.getObject("department").toString(); } else {
depa = "1";
}
// 使用状态
if (params.getObject("status") != null) {
status = params.getObject("status").toString();
} else {
status = "1";
}
// 资产类别
if (params.getObject("cat") != null) {
cat = params.getObject("cat").toString();
} else {
cat = "1";
}
// 存放地点
if (params.getObject("address") != null) {
address = params.getObject("address").toString();
} else {
address = "1";
}
// 资产编码
if (params.getString("asserts") != null) {
asserts = params.getString("asserts");
} else {
asserts = "1";
}
// 规格编号
if (params.getString("Specifications") != null) {
Specifications = params.getString("Specifications"); } else {
Specifications = "1";
}
if (params.getString("bar") != null) {
bar = params.getString("bar");
} else {
bar = "1";
}
System.out.println("部门" + depa);
sql.append("select Flongnumber from t_org_admin where FName_l2='"
+ depa + "' or '1'='" + depa + "'");
RptParams rptparms = new RptParams();
RptRowSet rowSet = executeQuery(sql.toString(), null, ctx);
String longNumber = "";
StringBuffer sql2 = new StringBuffer();
// 如果部门未选择
if (depa == "1") {
sql2
.append("select fa.FNumber,fa.FAssetName FName_l23,fa.FID , fa.FAccountDate ,bad.FName_L2 FName,ad.FName_l2,fa.FAccuDepr , fa.FFiAccountDate,fa.FbarCode , us.FName_L2 FNameUser ,"
+ " fa.FPaperNo,fa.FAssetValue,fa.FDeprTTerm , fa.FKeeperID from T_FA_FaCurCard fa left join t_org_admin ad on fa.FDeptID = ad.FID left join T_BD_Address bad on fa.FStoreCityID = bad.FID "
+ "left join T_FA_UseStatus us on fa.FUseStatusID = us.FID where (FUseStatusID ='"
+ status
+ "' or '1'='"
+ status
+ "') and (FAssetCatID = '"
+ cat
+ "' or '1'='"
+ cat
+ "') and (FStoreCityID = '"
+ address
+ "' or '1' ='"
+ address
+ "') and (FAssetName = '"
+ asserts
+ "' or '1'='"
+ asserts
+ "')and (FSpecs = '"
+ Specifications
+ "' or '1'='"
+ Specifications
+ "')and (FbarCode = '"
+ bar
+ "' or '1'='"
+ bar
+ "')");
}
// 选择部门
else {
while (rowSet.next()) {
longNumber = rowSet.getString("Flongnumber");
}
sql2
.append("select fa.FNumber,fa.FAssetName FName_l23,fa.FID , fa.FAccountDate ,bad.FName_L2 FName ,ad.FName_l2,fa.FAccuDepr , fa.FFiAccountDate,fa.FbarCode ,us.FName_L2 FNameUser ,"
+ " fa.FPaperNo,fa.FAssetValue,fa.FDeprTTerm , fa.FKeeperID from T_FA_FaCurCard fa left join t_org_admin ad on fa.FDeptID = ad.FID left join T_BD_Address bad on fa.FStoreCityID = bad.FID "
+ "left join T_FA_UseStatus us on fa.FUseStatusID = us.FID where (FDeptID in(select FID from t_org_admin where Flongnumber like '"
+ longNumber
+ "!%')) and (FUseStatusID ='"
+ status
+ "' or '1'='"
+ status
+ "') and(FAssetCatID = '"
+ cat
+ "' or '1'='"
+ cat
+ "')and (FStoreCityID = '"
+ address
+ "' or '1' ='"
+ address
+ "')and (FAssetName = '"
+ asserts
+ "' or '1'='"
+ asserts
+ "')and (FSpecs = '"
+ Specifications
+ "' or '1'='"
+ Specifications
+ "')and (FbarCode = '"
+ bar
+ "' or '1'='"
+ bar
+ "')");
}
RptRowSet rptrowSet = executeQuery(sql2.toString(), null, ctx);
rptparms.setObject("rptrowset", rptrowSet);
return rptparms;
}
}。