package com.chushang.inspection.work.vo;

import cn.hutool.core.date.DatePattern;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDate;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BankDispatchDTO implements Serializable {

    /**
     * 主键
     */
    @NotNull(message = "id不能为空")
    private Long id;

    /**
     * 商户编号
     */
    @Size(max = 12, message = "商户编号不能超过12位")
    private String merId;

    /**
     * 商户名
     */
    @Size(max = 100, message = "商户名不能超过100位")
    private String merName;

    /**
     * 终端编号
     */
    @Size(max = 15, message = "终端编号不能超过15位")
    private String termId;

    /**
     * 工单类型（01-新装机，003-撤机，004-换机，005-低效激活，006-合规巡检，007- 日常维护，008-新拓户）
     */
    @NotNull(message = "工单类型不能为空")
    @Size(min = 3, max = 4, message = "工单类型只支持（01-新装机，003-撤机，004-换机，005-低效激活，006-合规巡检，007- 日常维护，008-新拓户）")
    private String orderType;

    /**
     * 联系人
     */
    @Size(max = 20, message = "联系人不能超过20位")
    private String linkName;

    /**
     * 联系方式
     */
    @Size(max = 20, message = "联系方式不能超过20位")
    private String contactWay;

    /**
     * 商户地址
     */
    @Size(max = 200, message = "商户地址不能超过200位")
    private String merAddress;

    /**
     * 商户类型
     */
    @Size(min = 1, max = 1, message = "商户类型只支持（1-POS 商户，2-条码支付商户）")
    private String merType;

    /**
     * 设备类型
     */
    @Size(min = 3, max = 4, message = "设备类型只支持（001-POS 设备，002-MIS 手柄，003- 云音响，004-其他）")
    private String deviceType;

    /**
     * 设备序列号
     */
    @Size(max = 64, message = "设备序列号不能超过64位")
    private String deviceNo;

    /**
     * 备注信息
     */
    @Size(max = 100, message = "备注信息不能超过100位")
    private String noteMsg;

    /**
     * 分行地区号
     */
    @Size(max = 100, message = "分行地区号只支持(4301 南京分行 1102 苏州分行 1103 无锡分行 1104 镇江分行\n" +
            "1105 常州分行 1106 徐州分行 1107 连云港分行 1108 扬州分行 1109 盐城分行 1110 淮安分行\n" +
            "1111 南通分行 1115 泰州分行 1116 宿迁分)")
    private String area;

    /**
     * 请求日期
     */
    @JsonFormat(pattern = DatePattern.NORM_DATE_PATTERN)
    private LocalDate reqDate;

    /**
     * 状态（1 下发  2 派单成功   3 推送成功  4 推送失败）
     */
    private Integer status;

    private Integer isBank;

    private String respMssg;
}
