package cn.iocoder.yudao.module.asset.controller.admin.station.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import java.time.LocalDate;
import java.time.LocalTime;

/**
 * 加氢站 Base VO
 *
 * @author 芋道源码
 */
@Data
public class HydrogenStationBaseVO {

    @Schema(description = "站点名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "嘉兴嘉燃经开站")
    @NotBlank(message = "站点名称不能为空")
    private String name;

    @Schema(description = "简称", example = "经开站")
    private String shortName;

    @Schema(description = "站点编码", example = "JX001")
    private String stationNo;

    @Schema(description = "所属城市", example = "嘉兴")
    private String city;

    @Schema(description = "站点地址", example = "浙江省嘉兴市经济开发区岗山路")
    private String address;

    @Schema(description = "经度", example = "120.123456")
    @Pattern(regexp = "^-?((0|[1-9]\\d?|1[0-7]\\d)(\\.\\d{1,6})?|180(\\.0{1,6})?)$", message = "经度格式不正确，范围：-180~180")
    private String longitude;

    @Schema(description = "纬度", example = "30.123456")
    @Pattern(regexp = "^-?((0|[1-8]?\\d)(\\.\\d{1,6})?|90(\\.0{1,6})?)$", message = "纬度格式不正确，范围：-90~90")
    private String latitude;

    @Schema(description = "联系人", example = "张三")
    private String contact;

    @Schema(description = "联系电话", example = "13800138000")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String phone;

    @Schema(description = "站点类型（字典）", example = "1")
    private Integer stationType;

    @Schema(description = "合作类型（0=合作 1=非合作）", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
    @NotNull(message = "合作类型不能为空")
    private Integer cooperationType;

    @Schema(description = "是否自动扣款（1=是 0=否）", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
    @NotNull(message = "是否自动扣款不能为空")
    private Boolean autoDeduct;

    @Schema(description = "是否需要预约（1=是 0=否）", example = "false")
    private Boolean bookingRequired;

    @Schema(description = "站点状态（0=停用 1=启用）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "站点状态不能为空")
    private Integer stationStatus;

    @Schema(description = "开始营业时间", example = "08:00:00")
    private LocalTime startBusiness;

    @Schema(description = "结束营业时间", example = "18:00:00")
    private LocalTime endBusiness;

    @Schema(description = "结算方式（字典）", example = "1")
    private Integer billingMethod;

    @Schema(description = "合作期限", example = "2027-12-31")
    private LocalDate cooperationTerm;

    @Schema(description = "备注", example = "合作站点，自动扣款")
    private String remark;

}
