Ver Fonte

feat(plugin): 新增费用预提单与对公报销单的过滤条件处理插件

该插件用于在表单界面中设置两种单据类型的过滤条件:
- 主方单据:费用预提单 (er_withholdingbill)
- 辅方单据:对公报销单 (er_publicreimbursebill)

主要功能包括:
- 在绑定数据前设置对应单据类型- 绑定数据后读取并应用保存的过滤条件- 保存操作时将当前过滤条件序列化存储至模型字段中

此变更实现了单据编辑界面中的过滤器状态管理逻辑。
turborao há 1 semana atrás
pai
commit
3b5df499e0

+ 95 - 0
code/fi/nckd-xtpoc-fi/src/main/java/nckd/xtpoc/fi/app/plugin/form/SettleRuleBillEditPLugin.java

@@ -0,0 +1,95 @@
+package nckd.xtpoc.fi.app.plugin.form;
+
+
+import kd.bos.base.AbstractBasePlugIn;
+import kd.bos.form.events.BeforeDoOperationEventArgs;
+import kd.bos.form.operate.FormOperate;
+import kd.sdk.plugin.Plugin;
+import kd.bos.dataentity.serialization.SerializationUtils;
+import kd.bos.entity.filter.FilterCondition;
+import kd.bos.form.control.FilterGrid;
+import kd.bos.util.StringUtils;
+
+import java.util.EventObject;
+
+/**
+ * 单据界面插件
+ */
+public class SettleRuleBillEditPLugin extends AbstractBasePlugIn implements Plugin {
+
+    /**
+     * 主方单据   费用预提单
+     */
+    private static final String filtergrid_1 = "nckd_filtergridap";
+    /**
+     * 辅方单据   对公报销
+     */
+    private static final String filtergrid_2 = "nckd_filtergridap1";
+
+    @Override
+    public void registerListener(EventObject e) {
+        super.registerListener(e);
+    }
+
+    @Override
+    public void beforeBindData(EventObject e) {
+
+        //主方单据   费用预提单
+        FilterGrid filterGrid = this.getView().getControl(filtergrid_1);
+        filterGrid.setEntityNumber("er_withholdingbill");
+        //辅方单据   对公报销
+        FilterGrid filterGrid1 = this.getView().getControl(filtergrid_2);
+        filterGrid1.setEntityNumber("er_publicreimbursebill");
+
+        super.beforeBindData(e);
+
+    }
+
+    @Override
+    public void afterBindData(EventObject e) {
+        super.afterBindData(e);
+
+        String filter = (String) this.getView().getModel().getValue("nckd_largetext");
+        if(!StringUtils.isEmpty( filter)) {
+            FilterGrid filterGrid = this.getView().getControl(filtergrid_1);
+            FilterCondition filterCondition = SerializationUtils.fromJsonString(filter, FilterCondition.class);//前面2的结果filter
+            filterGrid.SetValue(filterCondition);
+            filterGrid.getFilterGridState();
+        }
+        String filter1 = (String) this.getView().getModel().getValue("nckd_largetext2");
+        if(!StringUtils.isEmpty( filter1)) {
+            FilterGrid filterGrid = this.getView().getControl(filtergrid_2);
+            FilterCondition filterCondition = SerializationUtils.fromJsonString(filter, FilterCondition.class);//前面2的结果filter
+            filterGrid.SetValue(filterCondition);
+            filterGrid.getFilterGridState();
+        }
+    }
+
+    @Override
+    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
+        super.beforeDoOperation(args);
+        FormOperate formOperate = (FormOperate)args.getSource();
+        String key = formOperate.getOperateKey();
+        switch (key) {
+            case "save":
+                FilterGrid filterGrid = getControl(filtergrid_1);
+                FilterGrid.FilterGridState filterGridState = filterGrid.getFilterGridState();
+                //buildFilter(filterGridState); //可以使用FilterBuilder类进行条件预解析,如果解析过程有异常会自动抛错
+                FilterCondition filterCondition = filterGridState.getFilterCondition();
+                // 实现filtercondition的存储逻辑
+                String filter = SerializationUtils.toJsonString(filterCondition);
+                this.getModel().setValue("nckd_largetext", filter);
+
+                FilterGrid filterGrid1 = getControl(filtergrid_2);
+                FilterGrid.FilterGridState filterGridState1 = filterGrid1.getFilterGridState();
+                //buildFilter(filterGridState); //可以使用FilterBuilder类进行条件预解析,如果解析过程有异常会自动抛错
+                FilterCondition filterCondition1 = filterGridState1.getFilterCondition();
+                // 实现filtercondition的存储逻辑
+                String filter1 = SerializationUtils.toJsonString(filterCondition1);
+                this.getModel().setValue("nckd_largetext2", filter1);
+
+                break;
+        }
+    }
+
+}