diff --git a/backend/src/main/java/ervu_business_metrics/component/combobox/ErvuComboBoxServiceImpl.java b/backend/src/main/java/ervu_business_metrics/component/combobox/ErvuComboBoxServiceImpl.java new file mode 100644 index 0000000..4ff1e0a --- /dev/null +++ b/backend/src/main/java/ervu_business_metrics/component/combobox/ErvuComboBoxServiceImpl.java @@ -0,0 +1,70 @@ +package ervu_business_metrics.component.combobox; + +import java.util.Arrays; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import model.ComboBoxModel; +import service.field.ComboBoxServiceImpl; + +import ru.cg.webbpm.modules.database.api.bean.TableRow; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.database.bean.filter.EntityFilter; +import ru.cg.webbpm.modules.standard_annotations.editor.AdvancedProperty; + +/** + * @author r.latypov + */ +public class ErvuComboBoxServiceImpl extends ComboBoxServiceImpl { + @AdvancedProperty + public boolean isBusinessId; + @AdvancedProperty + public ErvuEntityFilterService[] entityFilterServices; + + @Override + public List loadData() { + return super.loadData(); + } + + @Override + public List loadDataWithFilter(Object filterValue) { + return super.loadDataWithFilter(filterValue); + } + + @Override + public List loadDataByParentValueWithFilter(Object parentValue, + Object filterValue) { + return super.loadDataByParentValueWithFilter(parentValue, filterValue); + } + + @Override + protected ComboBoxModel convertToComboBoxModel(TableRow row) { + ComboBoxModel comboBoxModel = super.convertToComboBoxModel(row); + if (isBusinessId) { + comboBoxModel.setBusinessId(null); + } + return comboBoxModel; + } + + @Override + protected Set getColumnsToLoad() { + Set entityColumns = super.getColumnsToLoad(); + if (hasEntityFilters()) { + Arrays.stream(entityFilterServices) + .forEach(ervuEntityFilterService -> entityColumns.add( + ervuEntityFilterService.getEntityColumn())); + } + return entityColumns; + } + + private List getEntityFilters() { + return Arrays.stream(entityFilterServices) + .map(ErvuEntityFilterService::getEntityFilter) + .collect(Collectors.toList()); + } + + private boolean hasEntityFilters() { + return entityFilterServices != null && entityFilterServices.length > 0; + } +} diff --git a/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas_subsystem.page b/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas_subsystem.page index 1fb75ca..e4b8e1c 100644 --- a/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas_subsystem.page +++ b/resources/src/main/resources/business-model/ervu-business-metrics/register_subpoenas_subsystem.page @@ -214,6 +214,34 @@ + + + ErvuFilterControl + ervu_business_metrics.component.filter + + true + true + + + column + +"idm_id" + + + + dataConverter + + + + + + table + +"recruitment" + + + + b310f98a-69c6-4e7b-8cdb-f1ab9f9c0d94 @@ -19833,7 +19861,7 @@ loadOnStart - true + false