通过本案例,我们实现blobImage上传的图片在报表中的显示。
存图片的字段里面的内容是二进制格式的,需要通过写java代码调用blobDownloadAction获得数据库中存储的图片的url,因此reportData不能使用KSQLAction,要使用Action。下面是java代码完整案例。

1.action中代码

import java.math.*;
import java.sql.*;
import java.util.*;
import org.dom4j.*;
import com.justep.system.data.*;
import com.justep.system.action.ActionUtils;

public class OPM {
	public static Table queryMessage(String concept,String idColumn,String select,String from,String condition,List range,String filter,Boolean distinct,Integer offset,Integer limit,String columns,String orderBy,String aggregate,String aggregateColumns,Map variables,String dataModel,String fnModel){
		 Table t = KSQL.select("select SA_OPPerson.* from SA_OPPerson SA_OPPerson", null, "/system/data", null);
	      
         Iterator<Row> it = t.iterator();
         while (it.hasNext()) {
                 Row r = it.next();
                 try {
                	  String url = "/UI2/system/components/justep/blob/server/download.j" 
                			  + "?process=/demo/components/process/org/orgProcess"              //流程名称
                              + "&activity=mainActivity"                                    //环节名称
                              + "&action=blobDownloadAction"                                //调用的Action
                              + "&blobDataModel=/system/data"                                  //数据模块目录
                              + "&blobConcept=SA_OPPerson"                                          //概念名
                              + "&blobRelation=sPhoto"                                           //关系名
                              + "&blobConceptValue=" 
                              + r.getValue("SA_OPPerson")										//行ID
                              +"&$query-version=" 
                              + com.justep.system.util.CommonUtils.createGUID();
                	  //可新建一字段来接收url
                         r.setString("sHomePlace", addBsessionid(url)); //将url存入table对象
                 } catch (Exception e) {
                         // TODO Auto-generated catch block
                         e.printStackTrace();
                 }
         }
         return t;
	}
	protected static String addBsessionid(String url) {
		  String bessionid = ActionUtils.getRequestContext().getSessionContext().getSessionID();
		  if (url.contains("?")) {
		   return url + "&bsessionid=" + bessionid;
		  } else {
		   return url + "?bsessionid=" + bessionid;
		  }
		 }
}

2.reportData绑定action

reportData

3.报表设计

在报表设计器中,选中要显示图片的单元格,设置属性display-type为image
只要字段中的内容是一个图片的url,就可以显示出这个图片了。

4.示例图

1111