3 次代码提交 d09e3bb943 ... ebd636868f

作者 SHA1 备注 提交日期
  Tzz ebd636868f feat:过滤集采物料 5 天之前
  Tzz 93d2e9c8d8 Merge branch 'master' of http://111.75.220.136:10030/Tzz/jxcl 5 天之前
  Tzz 14bf65a132 feat:拉式弹出框根据字段排序 5 天之前

+ 84 - 0
nckd-pur/src/main/java/nckd/pur/scp/plugin/form/BosF7ListPlugin.java

@@ -0,0 +1,84 @@
+package nckd.pur.scp.plugin.form;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.form.FormShowParameter;
+import kd.bos.form.events.BeforeCreateListDataProviderArgs;
+import kd.bos.list.plugin.AbstractListPlugin;
+import kd.bos.mvc.list.ListDataProvider;
+import nckd.base.common.constant.BaseFieldConst;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.*;
+
+/**
+ * @Author:Zt
+ * @Date:2026/1/5
+ **/
+public class BosF7ListPlugin extends AbstractListPlugin {
+
+    @Override
+    public void afterCreateNewData(EventObject e) {
+        super.afterCreateNewData(e);
+        FormShowParameter formShowParameter = this.getView().getFormShowParameter();
+        Map<String, Object> map = formShowParameter.getCustomParams();
+        if ("botp_draw".equals(map.get("bos_call_source_type"))) {
+            this.getView().getPageCache().put("type", "botp_draw");
+        }
+    }
+
+     @Override
+    public void beforeCreateListDataProvider(BeforeCreateListDataProviderArgs args) {
+        super.beforeCreateListDataProvider(args);
+        String type = this.getView().getPageCache().get("type");
+        //自定义取数器
+        args.setListDataProvider(new ListDataProvider() {
+            @Override
+            public DynamicObjectCollection getData(int arg0, int arg1) {
+                DynamicObjectCollection rows = super.getData(arg0, arg1);
+                DynamicObject billtype = (DynamicObject) rows.get(0).get("billtype");
+                String billFormId = billtype.getString(BaseFieldConst.NUMBER);
+
+                //采购订单
+                if (StringUtils.isNotBlank(type) && billFormId.contains("pm_PurOrder")) {
+                    if (type.equals("botp_draw")) {
+                        // 先按单据编号分组,然后对每组内的 entryentity.seq 进行排序
+                        Map<String, List<DynamicObject>> groupedByBillNo = new LinkedHashMap<>();
+
+                        // 按 billno 分组
+                        for (DynamicObject row : rows) {
+                            String billNo = (String) row.get("billno");
+                            groupedByBillNo.computeIfAbsent(billNo, k -> new ArrayList<>()).add(row);
+                        }
+
+                        // 对每组内的数据按 entryentity.seq 排序
+                        List<DynamicObject> sortedRows = new ArrayList<>();
+                        for (List<DynamicObject> group : groupedByBillNo.values()) {
+                            group.sort((row1, row2) -> {
+                                Object seq1 = row1.get("billentry.seq");
+                                Object seq2 = row2.get("billentry.seq");
+
+                                if (seq1 == null && seq2 == null) return 0;
+                                if (seq1 == null) return -1;
+                                if (seq2 == null) return 1;
+
+                                if (seq1 instanceof Number && seq2 instanceof Number) {
+                                    return Double.compare(((Number) seq1).doubleValue(), ((Number) seq2).doubleValue());
+                                }
+
+                                return String.valueOf(seq1).compareTo(String.valueOf(seq2));
+                            });
+                            sortedRows.addAll(group);
+                        }
+
+                        // 更新原始集合的顺序
+                        rows.clear();
+                        rows.addAll(sortedRows);
+                    }
+                }
+                return rows;
+            }
+        });
+    }
+
+}

+ 3 - 0
nckd-pur/src/main/java/nckd/pur/scp/plugin/form/PurApplyBillPlugin.java

@@ -30,6 +30,9 @@ public class PurApplyBillPlugin extends AbstractBillPlugIn implements BeforeF7Se
             if (jjcg || xgm || "1".equals(value)) {
                 QFilter mtQf = new QFilter("masterid.nckd_centralized",QCP.equals,true);
                 evt.getCustomQFilters().add(mtQf);
+            }else{
+                QFilter mtQf = new QFilter("masterid.nckd_centralized",QCP.equals,false);
+                evt.getCustomQFilters().add(mtQf);
             }
         }
     }