JSD-8210开源任务材料
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

83 lines
3.0 KiB

package com.fr.plugin.xxx.report.actor;
import com.fr.json.JSONArray;
import com.fr.json.JSONObject;
import com.fr.log.FineLoggerFactory;
import com.fr.main.TemplateWorkBook;
import com.fr.main.workbook.ResultWorkBook;
import com.fr.plugin.xxx.report.core.BuilderProvider;
import com.fr.plugin.xxx.report.core.DsUtils;
import com.fr.plugin.xxx.report.core.ViewSheetBuilder;
import com.fr.plugin.xxx.report.core.ViewWidgetBuilder;
import com.fr.report.core.sheet.SheetSequenceExecutor;
import com.fr.stable.ArrayUtils;
import com.fr.stable.StringUtils;
import com.fr.stable.WriteActor;
import com.fr.stable.web.Repository;
import com.fr.web.RepositoryHelper;
import com.fr.web.core.ReportSession;
import com.fr.web.request.AbstractReportletRequest;
import java.util.Map;
/**
* @Author fr.open
* @Date 2021/7/14
* @Description
**/
public class SheetControlActor extends WriteActor {
private final static BuilderProvider[] builders = new BuilderProvider[]{
new ViewSheetBuilder("CONF_SHEET_GROUP", "id", "group"),
new ViewWidgetBuilder("CONF_WIDGET", "id", "group")//,
//new SheetNameBuilder("CONF_SHEET","id","name")
};
@Override
public ResultWorkBook executeWorkBook(TemplateWorkBook book, Map parameterMap) {
for (BuilderProvider builder : builders) {
try {
builder.build(book,AbstractReportletRequest.getInstance(parameterMap));
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(),e);
}
}
return new SheetSequenceExecutor(book, parameterMap).execute(this);
}
@Override
public JSONArray processMultipleSheet(Repository repository) {
JSONArray array = super.processMultipleSheet(repository);
ReportSession session = (ReportSession) RepositoryHelper.getSessionIDInfor(repository);
TemplateWorkBook book = session.getWorkBookDefine();
AbstractReportletRequest request = AbstractReportletRequest.getInstance(repository.getHttpServletRequest());
Map<String, String> relation = DsUtils.getRelation("CONF_SHEET_GROUP", "id", "group", book, request);
String groupId = (String) request.getParameter("__sheet_group__");
String [] group = split( relation.get(groupId), ",");
if( 0 == group.length ){
return array;
}
JSONArray result = JSONArray.create();
for (int i = 0; i < array.size(); i++) {
JSONObject obj = array.getJSONObject(i);
if(!obj.has("title")){
continue;
}
if(ArrayUtils.contains(group,obj.getString("title")) ){
result.add(obj);
}
}
return result;
}
protected String[] split( String record , String sep ){
if( StringUtils.isEmpty( record ) ){
return new String[0];
}
String [] group = new String[]{record};
if( record.contains(sep) ){
group = record.split(sep);
}
return group;
}
}