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 07ba7ff..eec2594 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 @@ -126,19 +126,33 @@ public class EquipmentCardTaskPlugin extends AbstractTask { } DynamicObject[] depresplitdetails = BusinessDataServiceHelper.load("fa_depresplitdetail", "billno,period,splitdept,assentry.costcentrer,assentry.splitamount", new QFilter[]{qf}); + // === 新增:按期间编码(年月格式)排序 === Arrays.sort(depresplitdetails, (o1, o2) -> { DynamicObject p1 = o1.getDynamicObject("period"); DynamicObject p2 = o2.getDynamicObject("period"); - // 处理null值 if (p1 == null && p2 == null) return 0; - if (p1 == null) return -1; - if (p2 == null) return 1; + if (p1 == null) return 1; + if (p2 == null) return -1; - String c1 = p1.getString("number") != null ? p1.getString("number") : ""; - String c2 = p2.getString("number") != null ? p2.getString("number") : ""; + String c1 = p1.getString("number"); + String c2 = p2.getString("number"); - return c1.compareTo(c2); // 升序排序 + if (c1 == null) c1 = ""; + if (c2 == null) c2 = ""; + + // 创建年月格式化器 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMM"); + + try { + YearMonth ym1 = YearMonth.parse(c1, formatter); + YearMonth ym2 = YearMonth.parse(c2, formatter); + return ym2.compareTo(ym1); // 升序 + } catch (DateTimeParseException e) { + // 记录解析失败的编码 + log.error("期间编码解析失败: " + c1 + " 或 " + c2, e); + return c1.compareTo(c2); + } }); for (DynamicObject depresplitdetail : depresplitdetails) { String billno = depresplitdetail.getString("billno");