gaoluyang
6 天以前 a4a10653acb8a7f86aa8c671c4b4b75e8d961b6c
修复考勤汇总生成与新增节假日报错

- 生成考勤统计报系统异常:hrm_attendance_summary.year_month 是 MySQL 保留字,
DO 上加反引号;同时 generate 流程调用 getEmployeeList(null) 会触发
selectByIds(null) 的 OGNL 异常,改为 null 查全员、空集合返回空
- 新增节假日报系统异常:isLegal 前端传布尔、后端 VO 是 Integer,
改为 Boolean 并在服务层显式转 0/1

Co-Authored-By: Claude Code <noreply@anthropic.com>
已修改4个文件
21 ■■■■■ 文件已修改
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/vo/HrmAttendanceHolidaySaveReqVO.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/dataobject/attendance/HrmAttendanceSummaryDO.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceHolidayServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/vo/HrmAttendanceHolidaySaveReqVO.java
@@ -30,8 +30,8 @@
    @NotNull(message = "类型不能为空")
    private Integer type;
    @Schema(description = "是否法定节假日:0-否,1-是", example = "1")
    private Integer isLegal;
    @Schema(description = "是否法定节假日:false-否,true-是(兼容 0/1 数字)", example = "true")
    private Boolean isLegal;
    @Schema(description = "备注", example = "春节假期")
    private String remark;
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/dataobject/attendance/HrmAttendanceSummaryDO.java
@@ -2,6 +2,7 @@
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
@@ -43,7 +44,10 @@
    /**
     * 年月,格式:yyyy-MM
     *
     * year_month 是 MySQL 保留字(INTERVAL 单位),不加反引号会报 SQL 语法错误
     */
    @TableField("`year_month`")
    private String yearMonth;
    /**
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceHolidayServiceImpl.java
@@ -36,9 +36,7 @@
        validateDateRangeNoOverlap(createReqVO.getStartDate(), createReqVO.getEndDate(), null);
        HrmAttendanceHolidayDO attendanceHoliday = BeanUtils.toBean(createReqVO, HrmAttendanceHolidayDO.class);
        attendanceHoliday.setDate(createReqVO.getStartDate());
        if (attendanceHoliday.getIsLegal() == null) {
            attendanceHoliday.setIsLegal(0);
        }
        attendanceHoliday.setIsLegal(Boolean.TRUE.equals(createReqVO.getIsLegal()) ? 1 : 0);
        attendanceHolidayMapper.insert(attendanceHoliday);
        return attendanceHoliday.getId();
    }
@@ -50,6 +48,7 @@
        validateDateRangeNoOverlap(updateReqVO.getStartDate(), updateReqVO.getEndDate(), updateReqVO.getId());
        HrmAttendanceHolidayDO updateObj = BeanUtils.toBean(updateReqVO, HrmAttendanceHolidayDO.class);
        updateObj.setDate(updateReqVO.getStartDate());
        updateObj.setIsLegal(Boolean.TRUE.equals(updateReqVO.getIsLegal()) ? 1 : 0);
        attendanceHolidayMapper.updateById(updateObj);
    }
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
@@ -344,6 +344,14 @@
    @Override
    public List<HrmEmployeeDO> getEmployeeList(Collection<Long> ids) {
        // ids 为 null 时表示查询全部员工(考勤汇总、薪酬核算等批量场景依赖此语义);
        // 显式传入空集合时返回空,避免误查全员
        if (ids == null) {
            return employeeMapper.selectList(null);
        }
        if (ids.isEmpty()) {
            return Collections.emptyList();
        }
        return employeeMapper.selectByIds(ids);
    }