package com.prolog.rdc.tms.model.vo.fleetManagement;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

import org.springframework.format.annotation.DateTimeFormat;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.prolog.product.core.base.group.AddGroup;
import com.prolog.product.core.base.group.EditGroup;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 车辆事故管理表 Vo
 * <p>
 * Copyright: Copyright (C) 2020 prolog-int, Inc. All rights reserved.
 * <p>
 * Company: 湖北普罗格科技股份有限公司
 *
 *
 * @author xiaoyf
 * @since 2020-06-05 14:39
 */
@Data
@ApiModel("车辆事故管理表 VO")
public class TVmAccidentregVO implements Serializable {

	private static final long serialVersionUID = 1L;

	@ApiModelProperty(value = "机构ID")
	@NotBlank(message = "机构ID必填", groups = { AddGroup.class, EditGroup.class })
	@Size(max = 32, message = "机构ID最大长度32", groups = { AddGroup.class, EditGroup.class })
	private Long branchId;

	@ApiModelProperty(value = "机构牌号")
	@NotBlank(message = "机构牌号必填", groups = { AddGroup.class, EditGroup.class })
	@Size(max = 32, message = "机构牌号最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String branchname;

	@ApiModelProperty(value = "事故编号")
	@Size(max = 64, message = "事故编号最大长度64", groups = { AddGroup.class, EditGroup.class })
	private String accidentNum;

	@ApiModelProperty(value = "事故日期")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-mm-dd HH:mm:ss")
	private Date acciddate;

	@ApiModelProperty(value = "事故类型(追尾、碰撞、破损)")
	@Size(max = 32, message = "事故类型(追尾、碰撞、破损)最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String accidtype;

	@ApiModelProperty(value = "事故地点")
	@Size(max = 256, message = "事故地点最大长度256", groups = { AddGroup.class, EditGroup.class })
	private String accidaddress;

	@ApiModelProperty(value = "路况")
	@Size(max = 32, message = "路况最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String roadcon;

	@ApiModelProperty(value = "报案人姓名")
	@Size(max = 32, message = "报案人姓名最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String reporter;

	@ApiModelProperty(value = "报案时间 精确到秒")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date reportdate;

	@ApiModelProperty(value = "出现经过")
	@Size(max = 256, message = "出现经过最大长度256", groups = { AddGroup.class, EditGroup.class })
	private String theaccid;

	@ApiModelProperty(value = "责任描述")
	@Size(max = 256, message = "责任描述最大长度256", groups = { AddGroup.class, EditGroup.class })
	private String respdes;

	@ApiModelProperty(value = "本车损失")
	@Size(max = 16, message = "本车损失最大长度16", groups = { AddGroup.class, EditGroup.class })
	private String carlost;

	@ApiModelProperty(value = "第三方损失")
	@Size(max = 16, message = "第三方损失最大长度16", groups = { AddGroup.class, EditGroup.class })
	private String thirdpl;

	@ApiModelProperty(value = "轻伤人数")
	private BigDecimal injuries;

	@ApiModelProperty(value = "重伤人数")
	private BigDecimal injured;

	@ApiModelProperty(value = "死亡人数")
	private BigDecimal death;

	@ApiModelProperty(value = "交警部门")
	@Size(max = 64, message = "交警部门最大长度64", groups = { AddGroup.class, EditGroup.class })
	private String trafficpd;

	@ApiModelProperty(value = "交警联系人")
	@Size(max = 32, message = "交警联系人最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String policecontact;

	@ApiModelProperty(value = "交警电话")
	@Size(max = 32, message = "交警电话最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String policecall;

	@ApiModelProperty(value = "本方车辆编号")
	@Size(max = 32, message = "本方车辆编号最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String vehiclecode;

	@ApiModelProperty(value = "本方驾驶证号")
	@Size(max = 32, message = "本方驾驶证号最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String usCode;

	@ApiModelProperty(value = "对方车牌号")
	@Size(max = 32, message = "对方车牌号最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String otherVehicle;

	@ApiModelProperty(value = "对方车辆型号")
	@Size(max = 32, message = "对方车辆型号最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String otherVehiclespec;

	@ApiModelProperty(value = "对方车辆驾驶员姓名")
	@Size(max = 32, message = "对方车辆驾驶员姓名最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String otherMaindriver;

	@ApiModelProperty(value = "对方驾驶员年龄")
	private BigDecimal otherDriverage;

	@ApiModelProperty(value = "对方驾驶员性别")
	@Size(max = 16, message = "对方驾驶员性别最大长度16", groups = { AddGroup.class, EditGroup.class })
	private String otherDriversex;

	@ApiModelProperty(value = "对方驾驶员驾龄")
	private BigDecimal otherDriverdriving;

	@ApiModelProperty(value = "对方驾驶员地址")
	@Size(max = 256, message = "对方驾驶员地址最大长度256", groups = { AddGroup.class, EditGroup.class })
	private String otherDriveradd;

	@ApiModelProperty(value = "业务员")
	@Size(max = 32, message = "业务员最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String salesman;

	@ApiModelProperty(value = "照片地址路径")
	@Size(max = 256, message = "照片地址路径最大长度256", groups = { AddGroup.class, EditGroup.class })
	private String pho;

	@ApiModelProperty(value = "责任划分(我方全责、对方全责、双方负责)")
	@Size(max = 16, message = "责任划分(我方全责、对方全责、双方负责)最大长度16", groups = { AddGroup.class, EditGroup.class })
	private String dutyAlloc;

	@ApiModelProperty(value = "估损金额")
	private BigDecimal estimatedloss;

	@ApiModelProperty(value = "实际损失")
	private BigDecimal actualLoss;

	@ApiModelProperty(value = "保险赔付情况")
	@Size(max = 32, message = "保险赔付情况最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String insurancepm;

	@ApiModelProperty(value = "责任属性")
	@Size(max = 64, message = "责任属性最大长度64", groups = { AddGroup.class, EditGroup.class })
	private String liabilityAttribute;

	@ApiModelProperty(value = "出现经过描述")
	@Size(max = 256, message = "出现经过描述最大长度256", groups = { AddGroup.class, EditGroup.class })
	private String theaccidDescribe;

	@ApiModelProperty(value = "本方驾驶员姓名")
	@Size(max = 32, message = "本方驾驶员姓名最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String usMaindriver;

	@ApiModelProperty(value = "本方驾驶员年龄")
	private BigDecimal usDriverage;

	@ApiModelProperty(value = "本方驾驶员驾龄")
	private BigDecimal usDriverdriving;

	@ApiModelProperty(value = "承保方")
	@Size(max = 32, message = "承保方最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String underwrite;

	@ApiModelProperty(value = "本方车牌号")
	@Size(max = 32, message = "本方车牌号最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String uVehicle;

	@ApiModelProperty(value = "对方是否保险")
	@Size(max = 32, message = "对方是否保险最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String ifInsure;

	@ApiModelProperty(value = "对方驾驶证号")
	@Size(max = 32, message = "对方驾驶证号最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String otherCode;

	@ApiModelProperty(value = "是否有照片")
	@Size(max = 16, message = "是否有照片最大长度16", groups = { AddGroup.class, EditGroup.class })
	private String ifPicture;

	@ApiModelProperty(value = "消息推送给")
	@Size(max = 32, message = "消息推送给最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String giveMsg;

	@ApiModelProperty(value = "审核时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date audittime;

	@ApiModelProperty(value = "审核人")
	@Size(max = 32, message = "审核人最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String auditperson;

	@ApiModelProperty(value = "状态")
	@NotBlank(message = "状态必填", groups = { AddGroup.class, EditGroup.class })
	@Size(max = 4, message = "状态最大长度4", groups = { AddGroup.class, EditGroup.class })
	private String status;

	@ApiModelProperty(value = "备注")
	@Size(max = 1024, message = "备注最大长度1024", groups = { AddGroup.class, EditGroup.class })
	private String memo;

	@ApiModelProperty(value = "扩展字段1")
	@Size(max = 128, message = "扩展字段1最大长度128", groups = { AddGroup.class, EditGroup.class })
	private String extend01;

	@ApiModelProperty(value = "扩展字段2")
	@Size(max = 128, message = "扩展字段2最大长度128", groups = { AddGroup.class, EditGroup.class })
	private String extend02;

	@ApiModelProperty(value = "扩展字段3")
	@Size(max = 128, message = "扩展字段3最大长度128", groups = { AddGroup.class, EditGroup.class })
	private String extend03;

	@ApiModelProperty(value = "扩展字段4")
	@Size(max = 128, message = "扩展字段4最大长度128", groups = { AddGroup.class, EditGroup.class })
	private String extend04;

	@ApiModelProperty(value = "扩展字段5")
	@Size(max = 128, message = "扩展字段5最大长度128", groups = { AddGroup.class, EditGroup.class })
	private String extend05;

	@ApiModelProperty(value = "创建时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date createtime;

	@ApiModelProperty(value = "创建人")
	@Size(max = 32, message = "创建人最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String createperson;

	@ApiModelProperty(value = "修改时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date updatetime;

	@ApiModelProperty(value = "修改人")
	@Size(max = 32, message = "修改人最大长度32", groups = { AddGroup.class, EditGroup.class })
	private String updateperson;

	private Integer pageNum;

	private Integer pageSize;

	private String enddate;

	private String startdate;

	private String[] statuses;

	@ApiModelProperty(value = "审核状态")
	private String auditstatus;

	@ApiModelProperty(value = "审核意见")
	private String auditdescrible;

	@ApiModelProperty(value = "车辆编号")
	private String vehicleCode;
}
