5步搞定!超实用的EAS通用报表开发教程

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

5步搞定!超实用的EAS通用报表开发教程

# 一、需求背景 在实际工作中经常会遇到用户需要一些报表的场景,这时,可以考虑采用金蝶EAS标准模块扩展报表进行开发,也可以使用金蝶BOS进行开发,当然,也可以使用金蝶DEP进行开发。 本次方案就主要采用金蝶EAS DEP+网页版实现一个通用的报表查询工具。 # 二、实现思路 采用金蝶EAS动态扩展平台KScript+WAFⅡ的Rhino脚本实现 1. 在金蝶EAS客户端动态扩展平台新建方案 2. 在金蝶EAS客户端服务端实现查询方法 3. 在金蝶EAS客户端编辑界面利用表格实现数据展示 4. 在金蝶EAS Web端使用Rhino加Waf Ⅱ表格实现网页端展示 # 三、适用版本 客户端版本应该EAS所有版本通用,网页版的我是在8.5做的测试,不确定8.5以下版本是否支持。 ***备注:自己使用,只要改动步骤三中的sql语句即可实现报表*** # 四、实现步骤-客户端实现方式 步骤一:在金蝶EAS客户端进入企业建模,从模板复制一个新的方案通用查询报表。 ![image.webp](/download/010048103ea165434367855cc7881f07ff4f.webp) ![image.webp](/download/0100706ae292cb96403db9804455bed65ac4.webp) ![image.webp](/download/010091d50218246c4640930bce1613af4907.webp) **步骤二:**实体新创建业务方法、事件。 ![image.webp](/download/010070f324bc837647408a1d4c7d773f33fa.webp) ![image.webp](/download/0100529f8f5f4a3440ba85281327c9573ebe.webp) 步骤三:实现扩展定义中的脚本。 ![image.webp](/download/01002a34ad9c53ec4d0d9c478fc7b0ac0f4b.webp) ```java //截图的中代码,后续可以替换getDataSql中的Sql语句 关键代码: var imp = JavaImporter(); imp.importPackage(Packages.com.kingdee.eas.util.app); imp.importPackage(Packages.java.sql); imp.importPackage(Packages.com.kingdee.eas.util.client); imp.importPackage(Packages.com.kingdee.bos.dao.query); with(imp){ var ctx = pluginCtx.getContext(); var getDataSql = ""; var queryType = methodCtx.getParamValue(0); var otherParams = methodCtx.getParamValue(1); if(queryType.equals("companylist")){ getDataSql = "select FName_L2 AS 公司名称,FNumber AS 公司编码 from T_ORG_BaseUnit"; } var row = DbUtil.executeQuery(ctx, getDataSql); methodCtx.setResultValue(row); } ``` 步骤四:新加功能和工具栏。 ![image.webp](/download/010072f92908be184682910bb8d51b763625.webp) ![image.webp](/download/01005ff4f7e51c3546a1af7272bc0d50390c.webp) 步骤五:实现工具栏功能。 ![image.webp](/download/0100ad5d958707f142e78827bfa5f6996a75.webp) ```java var imp = JavaImporter(); imp.importPackage(Packages.com.kingdee.bos.ctrl.kdf.table); imp.importPackage(Packages.java.text); with(imp){ var metaPK = com.kingdee.bos.metadata.MetaDataPK.create("com.kingdee.eas.custom.mytestbill.app.GEQueryReport"); var methodSignature = "com.kingdee.bos.dao.IObjectCollection getDateMethod(String arg1, String arg2)"; var args = [companylist,""]; var dataCollection = com.kingdee.bos.framework.BOClientTool.callCmethod(metaPK,methodSignature,args); var table = pluginCtx.getKDTable("kdtEntrys"); table.removeRows(); table.removeColumns(); var j = 0; var metaData = dataCollection.getMetaData(); var columnsCount = metaData.getColumnCount() table.addHeadRow(0); table.addColumns(columnsCount); for(j;j<columnsCount;j++){ table.getHeadRow(0).getCell(j).setValue(metaData.getColumnName(j+1)); KDTableHelper.autoFitRowHeight(table, j); } //table.getHeadRow(0).getCell().setValue(); var i = 0; var k = 0; for(i;i<dataCollection.size() ;i++){ dataCollection.next(); table.addRow(); k = 0; for(k;k<columnsCount;k++){ table.getRow(i).getCell(k).setValue(dataCollection.getString(metaData.getColumnName(k+1))); } } } ``` 关键代码部分说明: var metaPK = com.kingdee.bos.metadata.MetaDataPK.create("com.kingdee.eas.custom.mytestbill.app.GEQueryReport"); var methodSignature = "com.kingdee.bos.dao.IObjectCollection getDateMethod(String arg1, String arg2)"; var args = ["companylist",""]; com.kingdee.bos.framework.BOClientTool.callCmethod(metaPK,methodSignature,args); 以上这部分通过选择调用自定义业务方法,选择对应的获得sql查询的结果即可。 通过以上方式就已经实现了客户端上查询sql,并且以表格形式展现。 ![image.webp](/download/01006f3d7717b0304f7389ee3574c99f77ff.webp) # 五、实现步骤-网页端实现方式 步骤一:Portal端创建业务单元 ![image.webp](/download/0100bc19f045307b411fadb04e7710c7bc74.webp) ![image.webp](/download/01006022ad9e0bca4ccba84f352004b768aa.webp) 步骤二:进入编辑页面,设置功能 ![image.webp](/download/0100f4dac9d93732460a98a1ead63e8e2853.webp) 步骤三:新增页面功能 ![image.webp](/download/0100247b530f3ac24be8a75a3b2e21e19b71.webp) 步骤四:增加后台脚本: ![image.webp](/download/01000bbc97ca8ddb4e909f17e320109eff2c.webp) ```java var imp=JavaImporter(); imp.importPackage(Packages.com.kingdee.bos.webframework.json); imp.importPackage(Packages.javax.servlet.http); imp.importPackage(Packages.java.text); with(imp){ var metaPK = com.kingdee.bos.metadata.MetaDataPK.create("com.kingdee.eas.custom.mytestbill.app.GEQueryReport"); var methodSignature = "com.kingdee.bos.dao.IObjectCollection getDateMethod(String arg1, String arg2)"; var args = ["companylist",""]; var dataCollection = com.kingdee.bos.framework.BOClientTool.callCmethod(metaPK,methodSignature,args); JSONUtils.SUCCESS(dataCollection); } ``` 步骤五:增加按钮和功能绑定 ![image.webp](/download/0100e9de906677e542b093fccf9183797dda.webp) 步骤六:增加前端脚本 ![image.webp](/download/0100b1b69ae5d85d469388c49ac448020c8e.webp) ```java waf.extend(_private,{ getQueryData:function(e){ waf.doPost({ action:"getQueryDataService", data:{}, success:function(data){ var colIndex = 0; for(var p=0;p<data.rowSetMD.colCount;p++){ colIndex = "col" + p ; waf("#editgrid").wafGrid("addColumn",{index:colIndex,width:30,label:data.rowSetMD.colInfo[p+1].columnName,align:"center",name:colIndex},p+1,true); } var rowData = ""; for(var j = 0;j<data.cachedRows.length;j++){ //列循环 rowData = ""; for(var k = 0; k<data.rowSetMD.colCount;k++){ rowData = String(rowData + "col" + k + ":'" + data.cachedRows[j].vals[k] + "',"); } rowData = eval("(" + "{" + rowData + "}" + ")"); waf("#editgrid").wafGrid('addRow',{data:rowData}); } } }); } });//@endPrivate ``` 步骤七:将查询功能发布到菜单中(菜单一定要发布到末级菜单下,不然不会展示菜单 ![image.webp](/download/01000ef38ef5858847f9bb502c13a2d29096.webp) 步骤八:效果展示 ![image.webp](/download/010011db2b49e99340cfb31cdbfa63f40c3f.webp) ![image.webp](/download/0100bad60b93a55a4da1a7f1f2252eaef43c.webp) # 方案总结 本方案成本低,后期扩展性好,灵活性高。而且由于全部使用dep实现,也无需考虑后期更新补丁的兼容性等问题。 后续如需展示其他报表,则将sql语句的内容进行修改即可。 # 其他知识 - 超级推荐:dep扩展开发知识和示例脚本非常多:金蝶EAS Cloud 帮助中心:https://wenku.my7c.com/knowledge/atlas?productLineId=8 - 在EAS Portal扩展的方案在客户端查看方式https://wenku.my7c.com/article/185535809829831424?productLineId=8 - DEP中判断以后返回值-可用于工作流和其他判断https://wenku.my7c.com/article/296775531112869120?productLineId=8 - DEP开发规范-1https://wenku.my7c.com/school/43439147433132032?productLineId=8 - DEP开发基础介绍-1https://wenku.my7c.com/school/43439147064033280?topicId=134352673994254848&stageId=10352420000229260&productLineId=8 - 脚本案例-为F7字段设置默认值https://wenku.my7c.com/school/43439149073104896?topicId=134352673994254848&stageId=10352420000229260&productLineId=8

玩转金蝶云社区:https://vip.kingdee.com/link/s/lORXK

看到的伙伴帮忙点点,谢谢了。



网页端建议使用这个类:

com.kingdee.bos.framework.BOProxy.getProxy(ctx,metaPK).callCmethod(methodSignature,args);


不要用:

com.kingdee.bos.framework.BOClientTool.callCmethod(metaPK,methodSignature,args); 这个类


66666


6666


大写的666


赞 

5步搞定!超实用的EAS通用报表开发教程

# 一、需求背景在实际工作中经常会遇到用户需要一些报表的场景,这时,可以考虑采用金蝶EAS标准模块扩展报表进行开发,也可以使用金蝶BOS...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息