diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/task/EquipmentCardTaskPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/task/EquipmentCardTaskPlugin.java index c283913..72164cf 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/task/EquipmentCardTaskPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/task/EquipmentCardTaskPlugin.java @@ -156,53 +156,57 @@ public class EquipmentCardTaskPlugin extends AbstractTask { entrys.removeIf(record -> isLastMonth(zcgjDebillno));//若属于上个月那就删除重新塞入 } } - DynamicObjectCollection depresplitdetails = QueryServiceHelper.query("fa_depresplitdetail", "billno,period,splitdept,assentry.costcentrer,assentry.splitamount", new QFilter[]{qf}); +// DynamicObjectCollection depresplitdetails = QueryServiceHelper.query("fa_depresplitdetail", "billno,period,splitdept,assentry.costcentrer,assentry.splitamount", new QFilter[]{qf}); + // DynamicObject[] depresplitdetails = BusinessDataServiceHelper.load("fa_depresplitdetail", "billno,period,splitdept,assentry.costcentrer,assentry.splitamount", new QFilter[]{qf}); -// DataSet rows = QueryServiceHelper.queryDataSet(this.getClass().getName(), "fa_depresplitdetail", "billno,period,period.number,splitdept,assentry.costcentrer,assentry.splitamount", qFilter.toArray(), "period.number DESC", 1); - // 增强版比较器(自动适配多种日期格式) - for (int i = 0; i < depresplitdetails.size(); i++) { - DynamicObject item = depresplitdetails.get(i); + DataSet rows = QueryServiceHelper.queryDataSet(this.getClass().getName(), "fa_depresplitdetail", "billno,period,splitdept,assentry.costcentrer,assentry.splitamount", qFilter.toArray(), "period.number DESC", 1); + DynamicObjectCollection depresplitdetails = ORM.create().toPlainDynamicObjectCollection(rows.copy()); + // // 增强版比较器(自动适配多种日期格式) +// for (int i = 0; i < depresplitdetails.size(); i++) { +// DynamicObject item = depresplitdetails.get(i); +//// log.info("排序前 " + i + ": " + item.getDynamicObject("period").getString("number")); +// } +// Comparator smartComparator = (o1, o2) -> { +// DynamicObject p1 = o1.getDynamicObject("period"); +// DynamicObject p2 = o2.getDynamicObject("period"); +// // 空值处理 +// if (p1 == null && p2 == null) return 0; +// if (p1 == null) return 1; +// if (p2 == null) return -1; +// String c1 = p1.getString("number"); +// String c2 = p2.getString("number"); +// if (c1 == null) c1 = ""; +// if (c2 == null) c2 = ""; +// // 尝试解析为年月 +// for (String pattern : new String[]{"yyyyMM", "yyyy-MM", "yyyy/MM"}) { +// try { +// DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern); +// YearMonth ym1 = YearMonth.parse(c1, fmt); +// YearMonth ym2 = YearMonth.parse(c2, fmt); +// return ym2.compareTo(ym1); // 降序 +// } catch (Exception ignored) {} +// } +// // 纯数字比较(如 "202301") +// try { +// int num1 = Integer.parseInt(c1); +// int num2 = Integer.parseInt(c2); +// return Integer.compare(num2, num1); +// } catch (NumberFormatException e) { +// return c2.compareTo(c1); // 字符串降序 +// } +// }; +// depresplitdetails.sort(smartComparator); +// for (int i = 0; i < depresplitdetails.size(); i++) { +// DynamicObject item = depresplitdetails.get(i); // log.info("排序前 " + i + ": " + item.getDynamicObject("period").getString("number")); - } - Comparator smartComparator = (o1, o2) -> { - DynamicObject p1 = o1.getDynamicObject("period"); - DynamicObject p2 = o2.getDynamicObject("period"); - - // 空值处理 - if (p1 == null && p2 == null) return 0; - if (p1 == null) return 1; - if (p2 == null) return -1; - - String c1 = p1.getString("number"); - String c2 = p2.getString("number"); - if (c1 == null) c1 = ""; - if (c2 == null) c2 = ""; - - // 尝试解析为年月 - for (String pattern : new String[]{"yyyyMM", "yyyy-MM", "yyyy/MM"}) { - try { - DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern); - YearMonth ym1 = YearMonth.parse(c1, fmt); - YearMonth ym2 = YearMonth.parse(c2, fmt); - return ym2.compareTo(ym1); // 降序 - } catch (Exception ignored) {} - } - - // 纯数字比较(如 "202301") - try { - int num1 = Integer.parseInt(c1); - int num2 = Integer.parseInt(c2); - return Integer.compare(num2, num1); - } catch (NumberFormatException e) { - return c2.compareTo(c1); // 字符串降序 - } - }; - depresplitdetails.sort(smartComparator); - for (int i = 0; i < depresplitdetails.size(); i++) { - DynamicObject item = depresplitdetails.get(i); - log.info("排序前 " + i + ": " + item.getDynamicObject("period").getString("number")); - } - +// } +// //按字段 menuindex 排序 +// Collections.sort(depresplitdetails , new Comparator(){ +// @Override +// public int compare(DynamicObject stu1, DynamicObject stu2) { +// return stu1.getInt("menuindex")-stu2.getInt("menuindex"); +// } +// }); for (DynamicObject depresplitdetail : depresplitdetails) { String billno = depresplitdetail.getString("billno"); DynamicObject period = depresplitdetail.getDynamicObject("period");//折旧区间