liu
9 小时以前 690b713454828f34f901bc1e3a5f7bcc35a31b30
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/vo/HrmAttendanceRuleSaveReqVO.java
@@ -5,6 +5,7 @@
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.AssertTrue;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalTime;
@@ -45,6 +46,31 @@
    @Schema(description = "生效结束日期(空表示不限)", example = "2026-12-31")
    private LocalDate effectiveEndDate;
    @Schema(description = "打卡地点名称")
    private String locationName;
    @Schema(description = "打卡地点地址")
    private String locationAddress;
    @Schema(description = "地点经度(WGS84)")
    private BigDecimal longitude;
    @Schema(description = "地点纬度(WGS84)")
    private BigDecimal latitude;
    @Schema(description = "允许打卡半径,单位米")
    private Integer radiusMeters;
    @Schema(description = "是否启用位置限制")
    private Boolean locationRequired;
    @Schema(description = "坐标系,仅支持 WGS84")
    private String coordinateSystem;
    @AssertTrue(message = "启用定位打卡时,地点名称、经纬度和10~5000米打卡半径必须完整配置")
    public boolean isLocationConfigValid() {
        if (!Boolean.TRUE.equals(locationRequired)) {
            return true;
        }
        return locationName != null && !locationName.isBlank()
                && longitude != null && latitude != null && radiusMeters != null
                && radiusMeters >= 10 && radiusMeters <= 5000
                && "WGS84".equalsIgnoreCase(coordinateSystem);
    }
    @Schema(description = "状态:0-启用,1-禁用", example = "0")
    private Integer status;
@@ -52,4 +78,4 @@
    @Schema(description = "备注", example = "适用于研发部门")
    private String remark;
}
}