您的位置:首页 > 其它

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

2015-08-24 16:56 369 查看
一.开发流程(完后总结的)

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

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

3.取值



二.实践之路

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

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

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

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: