一.开发流程(完后总结的)
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);
}
}
...
}
三.开发完整案例