一.开发流程(完后总结的)

1.点击导出按钮,先导出一张空表

2.设置导出权限(不同的权限导出不同的数据)

3.取值

二.实践之路

(下面代码是部分片段,详细请参考附件完整例子)

(1).点击导出按钮,先导出一张空表。

备注:(点击导出按钮,先触动Menu,在调用Command,在调用配置的JSP文件,通过JSP文件调用相对应的JPO(JAVA文件))

1.在页面增加一个导出按钮

(界面)

(代码)

1.SpinnerMenuData

2.SpinnerCommandData

3.srmCommonExportPPReport

4.srmCommonExportPPReportProcess

5.srmExportPPCostBookReport_mxJPO

(2).设置导出权限(不同的权限导出不同的数据)

说明:(所有的数据都在数据库里,例如.张三是经理,李四是员工;两人的权限是不同的,所以看到的数据,及导出的数据就不一样)见JPO.

(3).取值

     //从数据库取得相对应的数据,并放在MapList里MapList PPmaplist=DomainObject.findObjects(context, "SRM Cost Book", "*", whereStr, StringList_SelectPP);

取值分类

1.属性取值

     private static final String SELECT_PP_PartNuber = "to[SRM Part Cost Book].from.name";

2.StringList取值(有多个值,需要控制格式)

      StringList sl_ContractNo=PPobj.getInfoList(context, "to[SRM Contract Header Cost Book].from.name");if (sl_ContractNo.isEmpty() == false) {String ContractNo = "";if (sl_ContractNo.size() > 0) {for (int j = 0; j < sl_ContractNo.size(); j++) {String s_ContractNo = (String) sl_ContractNo.get(j);ContractNo = ContractNo + "\n"+ s_ContractNo;}}map.put("ContractNo", ContractNo);}

3.方法取值(按需求来求的值)

        //SPMpublic static String getSPM(Context context, DomainObject dobj)throws Exception{logger.debug("start to do getSPM().");//System.out.println("dobj=============="+dobj);String Gspm = "";String nameObjectId = "";StringList objectSelects = new StringList();objectSelects.add(DomainObject.SELECT_NAME);try {//System.out.println("dobj===="+dobj);String Onamev = dobj.getOwner(context).getName();//System.out.println("Onamev===="+Onamev);//Error: No person business object found with name ==yijia.chenif(Onamev.equals("yijia.chen")) return "";if(Onamev.equals("creator")) return "";nameObjectId = PersonUtil.getPersonObjectID(context,Onamev);  DomainObject buyerObject = DomainObject.newInstance(context, nameObjectId);    Map SPM = buyerObject.getRelatedObject(context, "SRM Direct Manager", true, objectSelects, null);//System.out.println("Map-----SPM==============="+SPM);Gspm = (String) SPM.get("name");//System.out.println("Gspm==============="+Gspm);} catch (Exception e) {e.printStackTrace();logger.error(e.getMessage(), e);throw e;}return Gspm;}

4.控制EXCEL格式(一个对应多个)

(代码)

                                //Price PriceStringList sl_PricePrice = (StringList) PPMap.get("sl_PricePrice");StringList sl_EffectiveFromDate = (StringList) PPMap.get("sl_EffectiveFromDate");StringList sl_EffectiveToDate = (StringList) PPMap.get("sl_EffectiveToDate");int m =1;if(sl_PricePrice!=null&&sl_PricePrice.size()!=0) m = sl_PricePrice.size();//System.out.println("m===="+m);for(int j = 0; j < m; j++){//PricePriceif(sl_PricePrice!=null&&sl_PricePrice.size()!=0){String PricePrice = (String) sl_PricePrice.get(j);//System.out.println("PricePrice===="+PricePrice);PPMap.put("PricePrice", PricePrice);}//EffectiveFromDateif(sl_EffectiveFromDate!=null&&sl_EffectiveFromDate.size()!=0){String   EffectiveFromDate2 = (String) sl_EffectiveFromDate.get(j);Date EffectiveFromDate1=sdf1.parse(EffectiveFromDate2);//System.out.println("EffectiveFromDate1==="+EffectiveFromDate1);String EffectiveFromDate=sdf1.format(EffectiveFromDate1);PPMap.put("EffectiveFromDate", EffectiveFromDate);}//EffectiveFromDateif(sl_EffectiveToDate!=null&&sl_EffectiveToDate.size()!=0){String EffectiveToDate2 = (String) sl_EffectiveToDate.get(j);Date EffectiveToDate1=sdf1.parse(EffectiveToDate2);String EffectiveToDate=sdf1.format(EffectiveToDate1);PPMap.put("EffectiveToDate", EffectiveToDate);}//Excel格式if(m>1){int n=0;for(n=0;n<34;n++){CellRangeAddress cellRangeAddress=new CellRangeAddress(row.getRowNum()+1,row.getRowNum()+m,n,n);sheet.addMergedRegion(cellRangeAddress);}for(n=36;n<40;n++){CellRangeAddress    cellRangeAddress=new CellRangeAddress(row.getRowNum()+1,row.getRowNum()+m,n,n);sheet.addMergedRegion(cellRangeAddress);}for(n=41;n<57;n++){CellRangeAddress    cellRangeAddress=new CellRangeAddress(row.getRowNum()+1,row.getRowNum()+m,n,n);sheet.addMergedRegion(cellRangeAddress);}}...}

三.开发完整案例

PP-Cost Book-Report

Report (enovia) 开发实践档案——PP Cost Book Report相关推荐

  1. 《JavaScript设计模式与开发实践》模式篇(12)—— 装饰者模式

    在传统的面向对象语言中,给对象添加功能常常使用继承的方式,但是继承的方式并不灵活, 还会带来许多问题:一方面会导致超类和子类之间存在强耦合性,当超类改变时,子类也会随之 改变;另一方面,继承这种功能复 ...

  2. 小程序遵循的语法_2020年遵循的最佳应用程序开发实践

    小程序遵循的语法 As per the stats, there were around 6 billion mobile app users in 2018-19. With increased d ...

  3. [敏捷开发实践] 使用RACI Matrix划分敏捷团队的RR

    [敏捷开发实践] 使用RACI Matrix划分敏捷团队的R&R 参加过PMP认证培训,持有PMP认证的Project Mananger都清晰的理解RACI Matrix 的重要性. 事实上, ...

  4. ROS入门——胡春旭老师《机器人开发实践》在ROS-Melodic下的编译

    入门ROS系统,网上接触到的资料大部分都跟古月有关,故买来胡春旭老师(古月)的书籍<机器人开发实践>拜读.书中对仿真以及真实机器人同步做介绍,能一步一步跟着操作下来,非常适合入门.但由于书 ...

  5. 2021爱智先行者——EdgerOS Spirit 1深度使用体验与EdgerOS应用开发实践

    一.前言 ① 智能边缘计算操作系统 EdgerOS 是为万物互联时代而生的智能操作系统.为广大开发者提供基于互联网技术栈的操作系统平台,极大简化了物联网 App 开发难度,提高开发效率.通过爱智云,E ...

  6. 为什么您应该使用基于标准的开发实践

    为什么您应该使用基于标准的开发实践 Why you should use standards-based development practices (even if you don't have t ...

  7. [敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum

    [敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum 1,Scrum概述 上篇中提到敏捷开发有两种主流的方法,一个是XP,另一个是Scrum,本篇简要介绍Scrum方法.Scrum是 ...

  8. 华为昇腾师资培训沙龙·南京场 |华为昇腾 ACL 语言开发实践全程干货来了!看完就实操系列...

    自今年疫情以来,AI 技术加速进入了人们的视线,在抗疫过程中发挥了重要作用,产业发展明显提速,我国逐步走出了一条由需求导向引领商业模式创新.市场应用倒逼基础理论和关键技术创新的发展道路,AI 人才的争 ...

  9. 转:MySQL 开发实践 8 问,你能 hold 住几个?

    来源:腾云阁 - 田京昆 链接:www.qcloud.com/community/article/233 最近研发的项目对DB依赖比较重,梳理了这段时间使用MySQL遇到的8个比较具有代表性的问题,答 ...

最新文章

  1. UART0串口编程(一):通信协议设计;RS232标准
  2. Python内置函数(58)——input
  3. 基础数据仓库环境搭建(一)数据仓库概述
  4. rpmbuile 制作drbd RPM包
  5. 怎么更新android 10.0,Android 10.0(Q OS)系统升级计划Androi
  6. MIT软件构造 -- ADT Patterns: Interfaces, Generics, and Enums
  7. Hive 之 用户自定义函数 UDF UDAF UDTF
  8. 苹果隐私追踪新规发布后 Android广告支出涨10%
  9. 我的个人中心前端开发源代码_个人博客
  10. 腾达ac9虚拟服务器,腾达AC9官方定制固件1.0版-加广告屏蔽、迅雷等
  11. 希捷四十载:如何做好一家非常规存储公司?
  12. C# WinForm 给某动态控件设置 IsBalloon = true的ToolTip 即 气泡状提示
  13. linux下nginx tomcat集群
  14. 安装Exchange2007邮件系统
  15. matlab有shapely包吗,[哈工大]Modelarts NPU 安装shapely包失败
  16. JavaWeb - GET 请求中 URL 的最大长度限制(附:解决方案)
  17. 【python】习题 1-4周
  18. 28张高清数据分析全知识地图,强烈建议收藏
  19. 远程访问大华摄像头_通过WEB调用大华网络摄像头
  20. Physics-informed neural networks: A deep learning framework论文笔记

热门文章

  1. Qt 如何将QPushButton弹起
  2. Windows Server 2008(修改计算机名并加入工作组)
  3. 可汗学院为什么选择Go
  4. STG2Seq:多步乘车需求预测的时空图序列模型
  5. 云栖科技评论第25期:德州扑克人机大战落幕 人工智能赢了176万美元
  6. 安卓开发----错误汇总贴
  7. 前端下载图片的N种方法
  8. 圆周率的计算——典型Python案例
  9. 数据通信基础(1)-数据通信概念、通信系统模型及通信方式
  10. pubmed文献批量化下载器