From 3dc81d2b33049e94d1939969af5f8e4b60591a5d Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Thu, 14 Aug 2025 10:48:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E9=A1=B9=E7=9B=AE=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E4=BA=8C=E5=BC=80=E6=A0=87=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pr/plugin/form/ProjectControllerExt.java | 188 ++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ProjectControllerExt.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ProjectControllerExt.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ProjectControllerExt.java new file mode 100644 index 0000000..23dea71 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ProjectControllerExt.java @@ -0,0 +1,188 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package zcgj.zcdev.zcdev.pr.plugin.form; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import kd.bos.base.AbstractBasedataController; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.utils.StringUtils; +import kd.bos.entity.BillEntityType; +import kd.bos.entity.MainEntityType; +import kd.bos.filter.CommonBaseDataFilterColumn; +import kd.bos.form.FormShowParameter; +import kd.bos.form.IFormView; +import kd.bos.form.field.BasedataEdit; +import kd.bos.form.field.events.BaseDataCustomControllerEvent; +import kd.bos.form.field.events.BasedataControllerSourceEnum; +import kd.bos.list.BillList; +import kd.bos.mvc.list.ListView; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.MetadataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; +import kd.ec.basedata.business.model.cont.ProjectConstant; +import kd.ec.basedata.common.enums.ProjectStatusEnum; +import kd.ec.basedata.common.enums.StatusEnum; +import kd.ec.basedata.common.permission.IIgnoreApp; +import kd.ec.basedata.common.permission.MetaEntityNumberConverter; +import kd.ec.basedata.common.permission.ProjectPermissionHelper; +import kd.ec.basedata.common.utils.MetaDataUtil; + +public class ProjectControllerExt extends AbstractBasedataController implements IIgnoreApp { + public ProjectControllerExt() { + } + + public void buildBaseDataCoreFilter(BaseDataCustomControllerEvent event) { + BasedataControllerSourceEnum sourceEnum = event.getSourceEnum(); + switch (sourceEnum) { + case F7: + this.buildProjectF7Filter(event); + break; + case FUZZY: + this.buildProjectFuzzyFilter(event); + break; + case COMMON: + this.buildProjectCommonFilter(event); + } + + } + + protected void buildProjectF7Filter(BaseDataCustomControllerEvent event) { + if (event.getSource() instanceof BillList) { + BillList source = (BillList) event.getSource(); + if (!this.needIgnoreForF7(source)) { + String entityNum = MetaDataUtil.getEntityNumByF7BillList(source); + String appId = MetaDataUtil.getAppIdByEntityNum(entityNum); + List qFilters = this.buildQFilter(appId, entityNum); + String parentPageId = source.getView().getFormShowParameter().getParentPageId(); + IFormView parentView = source.getView().getViewNoPlugin(parentPageId); + String viewAppId = source.getView().getFormShowParameter().getAppId(); + this.projectStatusFilter(entityNum, viewAppId, event); + event.addQFilters(qFilters); + } + } + } + + protected void buildProjectFuzzyFilter(BaseDataCustomControllerEvent event) { + if (event.getSource() instanceof BasedataEdit) { + BasedataEdit source = (BasedataEdit) event.getSource(); + IFormView billView = source.getView(); + List qFilters = this.buildQFilterByView(billView); + String formId = this.getFormIdByView(billView); + String appId = source.getView().getFormShowParameter().getAppId(); + this.projectStatusFilter(formId, appId, event); + event.addQFilters(qFilters); + } + } + + protected void buildProjectCommonFilter(BaseDataCustomControllerEvent event) { + if (event.getSource() instanceof CommonBaseDataFilterColumn) { + CommonBaseDataFilterColumn source = (CommonBaseDataFilterColumn) event.getSource(); + IFormView view = source.getView(); + List qFilters = this.buildQFilterByView(view); + event.getQfilters().addAll(qFilters); + String formId = this.getFormIdByView(view); + String appId = view.getFormShowParameter().getAppId(); + this.projectStatusFilter(formId, appId, event); + } + } + + protected List buildQFilterByView(IFormView view) { + FormShowParameter formShowParameter = view.getFormShowParameter(); + String formId = MetaDataUtil.getEntityTypeId(formShowParameter); + String appId = formShowParameter.getAppId(); + if (this.needIgnoreForApp(appId)) { + return new ArrayList(); + } else { + String convertToEntityNumber = MetaEntityNumberConverter.getInstance().convertToEntityNumber(formId); + if (StringUtils.isNotEmpty(convertToEntityNumber)) { + formId = convertToEntityNumber; + } + + return this.buildQFilter(appId, formId); + } + } + + protected List buildQFilter(String appId, String entityNum) { + List qFilterList = new ArrayList(); + Set allProjectWithPermission = ProjectPermissionHelper.getAllProjectWithPermission(appId, entityNum); + QFilter idQFilter = new QFilter(ProjectConstant.ID_ENTITY_PK, "in", allProjectWithPermission); + QFilter billStatusFilter = new QFilter("billstatus", "=", StatusEnum.Checked.getValue()); + qFilterList.add(billStatusFilter); + qFilterList.add(idQFilter); + return qFilterList; + } + + protected String getFormIdByView(IFormView view) { + String formId = view.getFormShowParameter().getFormId(); + if (view instanceof ListView) { + formId = ((ListView) view).getBillFormId(); + } + + return formId; + } + + protected void handleCloseAndFinishedProject(IFormView iFormView, String formId, BaseDataCustomControllerEvent event) { + QFilter numberFilter = new QFilter("number", "=", formId); + DynamicObject bosFormMeta = QueryServiceHelper.queryOne("bos_formmeta", "id", new QFilter[]{numberFilter}); + if (bosFormMeta == null && formId.endsWith("_mob")) { + formId = formId.substring(0, formId.length() - 4); + } + + MainEntityType dataEntityType = MetadataServiceHelper.getDataEntityType(formId); + if (!this.isListView(iFormView) && dataEntityType instanceof BillEntityType) { + event.addQFilter(new QFilter("status", "!=", ProjectStatusEnum.CLOSED.getValue())); + event.addQFilter(new QFilter("status", "!=", ProjectStatusEnum.FINISH.getValue())); + } + + } + + protected boolean isListView(IFormView iFormView) { + return iFormView instanceof ListView; + } + + protected void projectStatusFilter(String formId, String appId, BaseDataCustomControllerEvent event) { + QFilter statusFilter = this.getStatusFilter(formId, appId); + if (statusFilter != null) { + event.addQFilter(statusFilter); + } + + } + + protected QFilter getStatusFilter(String formId, String appId) { + QFilter statusFilter = null; + if (appId == null) { + return null; + } else { + switch (appId) { + case "ecpf": + case "ecsa": + statusFilter = new QFilter("status", "!=", ProjectStatusEnum.CLOSED.getValue()); + break; + case "cont": + case "ecma": + case "ecco": + case "eceq": + case "ecevm": + case "ecin": + case "ecdes": + statusFilter = new QFilter("status", "!=", ProjectStatusEnum.PAUSE.getValue()); + default: + if (statusFilter == null) { + statusFilter = new QFilter("status", "!=", ProjectStatusEnum.CLOSED.getValue()); + } else { + statusFilter.and(new QFilter("status", "!=", ProjectStatusEnum.CLOSED.getValue())); + } + + statusFilter.and(new QFilter("status", "!=", ProjectStatusEnum.FINISH.getValue())); + } + + return statusFilter; + } + } +}