Report (enovia) 开发实践档案——PP Cost Book Report

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

     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.方法取值(按需求来求的值)

        //SPM
	public 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.chen
			if(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 Price
				StringList 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++){
					//PricePrice
					if(sl_PricePrice!=null&&sl_PricePrice.size()!=0){
						String PricePrice = (String) sl_PricePrice.get(j);
						//System.out.println("PricePrice===="+PricePrice);
						PPMap.put("PricePrice", PricePrice);
					}
					//EffectiveFromDate
					if(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);
					}
					//EffectiveFromDate
					if(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


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值