package com.brilliance.isc.common.taskdistributor.request;

import lombok.Data;

import javax.validation.constraints.*;
import java.math.BigDecimal;

@Data
public class TaskDistConfigRequest {

    /**
     * 单证中心ID
     */
    @NotBlank(message = "机构号不能为空")
    @Pattern(regexp = "\\d{8}", message = "机构号必须为8位数字")
    private String branchinr;

    /**
     * 组别
     */
    private String grp;

    /**
     * 自动阈值
     */
    @NotNull(message = "阈值不能为空")
    @Min(value = 1, message = "阈值必须为1-100之间")
    @Max(value = 1000, message = "阈值必须为1-100之间")
    private Integer autoLimit;

    /**
     * 手动阈值
     */
    @NotNull(message = "阈值不能为空")
    @Min(value = 1, message = "阈值必须为1-100之间")
    @Max(value = 1000, message = "阈值必须为1-100之间")
    private Integer manualLimit;

    /**
     * 总开关
     */
    @NotBlank(message = "开关选项不能为空")
    @Pattern(regexp = "^[yYnN]$", message = "开关选项必须为Y或者N")
    private String masterSwitch;

    /**
     * 任务自动分配开关
     */
    @NotBlank(message = "开关选项不能为空")
    @Pattern(regexp = "^[yYnN]$", message = "开关选项必须为Y或者N")
    private String autoSwitch;

    /**
     * 柜员校验开关
     */
    @NotBlank(message = "开关选项不能为空")
    @Pattern(regexp = "^[yYnN]$", message = "开关选项必须为Y或者N")
    private String userCheckSwitch;

    /**
     * 报文分配开关
     */
    @NotBlank(message = "开关选项不能为空")
    @Pattern(regexp = "^[yYnN]$", message = "开关选项必须为Y或者N")
    private String datagramDistSwitch;

    /**
     * 岗位优先开关
     */
    @NotBlank(message = "开关选项不能为空")
    @Pattern(regexp = "^[yYnN]$", message = "开关选项必须为Y或者N")
    private String positionPrioritySwitch;

    /**
     * 溢出模式
     */
    private String overflowMode;

    /**
     * 午休开始时间
     */
    private String lunchStartTime;

    /**
     * 午休结束时间
     */
    private String lunchEndTime;

    /**
     * 早班开始时间
     */
    private String morningStartTime;

    /**
     * 早班结束时间
     */
    private String morningEndTime;

    /**
     * 晚班开始时间
     */
    private String nightStartTime;

    /**
     * 晚班结束时间
     */
    private String nightEndTime;

    /**
     * 其它班次开始时间
     */
    private String otherStartTime;

    /**
     * 其它班次结束时间
     */
    private String otherEndTime;

    /**
     * 午休模式开关
     */
    private String lunchModeSwitch;

    /**
     * 工作模式开关
     */
    private String workModeSwitch;

    /**
     * 班次
     */
    private String workRank;

    /**
     * 优先分配开关
     */
    private String priorityAllocationSwitch;

    /**
     * 占用时间较长交易列表
     */
    private String longHoldingtimeFrm;

    /**
     *大额授权金额
     */
    private BigDecimal largeAmt;

    /**
     *复核模式
     */
    private String reviewMode;

}
