diff --git a/src/main/java/com/yem/em/ass/dynamic/AssepcNewDynamicEdut.java b/src/main/java/com/yem/em/ass/dynamic/AssepcNewDynamicEdut.java index 3cff44b2..8a679858 100644 --- a/src/main/java/com/yem/em/ass/dynamic/AssepcNewDynamicEdut.java +++ b/src/main/java/com/yem/em/ass/dynamic/AssepcNewDynamicEdut.java @@ -765,6 +765,10 @@ public class AssepcNewDynamicEdut extends AbstractFormPlugin implements BeforeBi getQueryResult().setDataCount(data.size()); // 把列数据返回 DynamicObjectCollection datas = DealData(data); + + // 按照图册编号进行排序 + sortDynamicObjectCollection(datas); + Setistcardviewap(datas); return datas; } @@ -772,6 +776,45 @@ public class AssepcNewDynamicEdut extends AbstractFormPlugin implements BeforeBi } } + public static void sortDynamicObjectCollection(DynamicObjectCollection data) { + List list = new ArrayList<>(data); + + Collections.sort(list, new Comparator() { + @Override + public int compare(DynamicObject o1, DynamicObject o2) { + BigDecimal num1 = parseBigDecimal(o1.getString("yem_atlasno")); + BigDecimal num2 = parseBigDecimal(o2.getString("yem_atlasno")); + + // 如果两个都转换成功,按数值比较 + if (num1 != null && num2 != null) { + return num1.compareTo(num2); + } + + if (num1 != null) { + return -1; + } + if (num2 != null) { + return 1; + } + + // 如果两个都失败,按字符串比较 + return o1.getString("yem_atlasno").compareTo(o2.getString("yem_atlasno")); + } + }); + + // 将排序后的结果重新赋值给原集合 + data.clear(); + data.addAll(list); + } + + private static BigDecimal parseBigDecimal(String value) { + try { + return new BigDecimal(value); + } catch (NumberFormatException e) { + return null; // 转换失败返回 null + } + } + /** * 给图号单据体赋值 *