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
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; |
|
} |
|
}
|
|
|