gaoluyang
昨天 2eb261814a2407b3481dfe7b995c58d413a18cff
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingDetailedServiceImpl.java
@@ -57,7 +57,7 @@
            personTrainingDetailed.setPlanId(planId);
            personTrainingDetailed.setState(3);
            personTrainingDetailed.setTrainingDate(i.getTrainingDate());
            personTrainingDetailed.setTrainingDate(normalizeTrainingDate(i.getTrainingDate()));
            personTrainingDetailedList.add(personTrainingDetailed);
@@ -68,6 +68,32 @@
        }
    }
    /**
     * 培训时间统一成 yyyy-MM-dd。
     * Excel 里被自动识别成日期的单元格读出来是 2026/3/15,手工录入的是 2026-03-15,
     * 这里统一转换,避免导出时格式不一致。
     */
    private String normalizeTrainingDate(String value) {
        if (value == null || value.isBlank()) {
            return value;
        }
        String text = value.trim().split("\\s+")[0]
                .replace('年', '-').replace('月', '-').replace("日", "")
                .replace('/', '-').replace('.', '-');
        String[] parts = text.split("-");
        if (parts.length == 3) {
            try {
                int year = Integer.parseInt(parts[0].trim());
                int month = Integer.parseInt(parts[1].trim());
                int day = Integer.parseInt(parts[2].trim());
                return String.format("%04d-%02d-%02d", year, month, day);
            } catch (NumberFormatException ignored) {
                // 不是可识别的日期格式,原样保存
            }
        }
        return value.trim();
    }
    @Override
    public void deleteAnnualPlanDetailTable(String ids) {
        String[] split = ids.split(",");