package com.ygtx.gxt.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ygtx.common.annotation.Excel;
import com.ygtx.common.core.domain.BaseEntity;

/**
 * 维保工单对象 gxt_work_order
 *
 * @author ygtx
 * @date 2025-10-25
 */
public class GxtWorkOrder extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 工单ID */
    private Long id;

    /** 工单编码 */
    @Excel(name = "工单编码")
    private String workOrderProjectNo;

    /** 工单状态：draft-草稿,to_assign-待派单,assigned-已派单,accepted-已接单,processing-处理中,paused-暂停中,to_approve-待审批,suspended-已挂起,completed-已完成 */
    @Excel(name = "工单状态", readConverterExp = "draft=草稿,to_assign=待派单,assigned=已派单,accepted=已接单,processing=处理中,paused=暂停中,to_approve=待审批,suspended=已挂起,completed=已完成")
    private String workOrderStatus;

    /** 维保中心ID */
    private Long gxtCenterId;

    /** 维保中心 */
    @Excel(name = "维保中心")
    private String gxtCenter;

    /** 风电场ID */
    private Long pcsStationId;

    /** 风电场 */
    @Excel(name = "风电场")
    private String pcsStationName;

    /** 风机设备ID */
    private Long pcsDeviceId;

    /** 风机编号 */
    @Excel(name = "风机编号")
    private String pcsDeviceName;

    /** 风机品牌 */
    @Excel(name = "风机品牌")
    private String brand;

    /** 风机型号 */
    @Excel(name = "风机型号")
    private String model;

    /** 检查类型(年检，半年检，螺栓检) */
    private Long inspectionTypeId;

    /** 维保计划编号 */
    @Excel(name = "维保计划编号")
    private String workPlanNo;

    /** 计划开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "计划开始日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date planStartTime;

    /** 计划结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "计划结束日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date planEndTime;

    /** 工单来源 */
    @Excel(name = "工单来源")
    private String orderSource;

    /** 派单时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "派单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date assignTime;

    /** 派单人ID */
    private Long assignUserId;

    /** 派单人姓名 */
    @Excel(name = "派单人")
    private String assignUserName;

    /** 接单时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "接单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date acceptTime;

    /** 接单人ID */
    private Long acceptUserId;

    /** 接单人姓名 */
    @Excel(name = "接单人")
    private String acceptUserName;

    /** 实际开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date realStartTime;

    /** 实际结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date realEndTime;

    /** 班组组长ID */
    private Long teamLeaderId;

    /** 班组组长姓名 */
    @Excel(name = "班组组长")
    private String teamLeaderName;

    /** 工作组成员ID */
    private Long workGroupMemberId;

    /** 工作组成员姓名 */
    @Excel(name = "工作组成员")
    private String workGroupMemberName;

    /** 挂起原因 */
    private String suspendReason;

    /** 挂起时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date suspendTime;

    /** 暂停原因 */
    private String pauseReason;

    /** 暂停时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date pauseTime;

    /** 重启时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date restartTime;

    /** 完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date completeTime;

    /** 预计工时（小时） */
    private BigDecimal planHour;

    /** 维保内容 */
    private String content;

    /** 故障代码 */
    private String faultCode;

    /** 故障描述 */
    private String faultDesc;

    /** 工单类型 */
    private Long orderType;

    /** 优先级 */
    private Long priorityType;

    /** 工作组成员列表 */
    private List<GxtWorkOrderPerson> workOrderPersonList;

    /** 流转记录列表 */
    private List<GxtWorkOrderFlow> workOrderFlowList;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setWorkOrderProjectNo(String workOrderProjectNo)
    {
        this.workOrderProjectNo = workOrderProjectNo;
    }

    public String getWorkOrderProjectNo()
    {
        return workOrderProjectNo;
    }

    public void setWorkOrderStatus(String workOrderStatus)
    {
        this.workOrderStatus = workOrderStatus;
    }

    public String getWorkOrderStatus()
    {
        return workOrderStatus;
    }

    public Long getGxtCenterId() {
        return gxtCenterId;
    }

    public void setGxtCenterId(Long gxtCenterId) {
        this.gxtCenterId = gxtCenterId;
    }

    public String getGxtCenter() {
        return gxtCenter;
    }

    public void setGxtCenter(String gxtCenter) {
        this.gxtCenter = gxtCenter;
    }

    public Long getPcsStationId() {
        return pcsStationId;
    }

    public void setPcsStationId(Long pcsStationId) {
        this.pcsStationId = pcsStationId;
    }

    public String getPcsStationName() {
        return pcsStationName;
    }

    public void setPcsStationName(String pcsStationName) {
        this.pcsStationName = pcsStationName;
    }

    public Long getPcsDeviceId() {
        return pcsDeviceId;
    }

    public void setPcsDeviceId(Long pcsDeviceId) {
        this.pcsDeviceId = pcsDeviceId;
    }

    public String getPcsDeviceName() {
        return pcsDeviceName;
    }

    public void setPcsDeviceName(String pcsDeviceName) {
        this.pcsDeviceName = pcsDeviceName;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public Long getInspectionTypeId() {
        return inspectionTypeId;
    }

    public void setInspectionTypeId(Long inspectionTypeId) {
        this.inspectionTypeId = inspectionTypeId;
    }

    /** 维保计划编号 */
    public String getWorkPlanNo() {
        return workPlanNo;
    }

    public void setWorkPlanNo(String workPlanNo) {
        this.workPlanNo = workPlanNo;
    }

    public void setPlanStartTime(Date planStartTime)
    {
        this.planStartTime = planStartTime;
    }

    public Date getPlanStartTime()
    {
        return planStartTime;
    }

    public void setPlanEndTime(Date planEndTime)
    {
        this.planEndTime = planEndTime;
    }

    public Date getPlanEndTime()
    {
        return planEndTime;
    }

    public void setOrderSource(String orderSource)
    {
        this.orderSource = orderSource;
    }

    public String getOrderSource()
    {
        return orderSource;
    }

    public void setAssignTime(Date assignTime)
    {
        this.assignTime = assignTime;
    }

    public Date getAssignTime()
    {
        return assignTime;
    }

    public void setAssignUserId(Long assignUserId)
    {
        this.assignUserId = assignUserId;
    }

    public Long getAssignUserId()
    {
        return assignUserId;
    }

    public void setAssignUserName(String assignUserName)
    {
        this.assignUserName = assignUserName;
    }

    public String getAssignUserName()
    {
        return assignUserName;
    }

    public void setAcceptTime(Date acceptTime)
    {
        this.acceptTime = acceptTime;
    }

    public Date getAcceptTime()
    {
        return acceptTime;
    }

    public void setAcceptUserId(Long acceptUserId)
    {
        this.acceptUserId = acceptUserId;
    }

    public Long getAcceptUserId()
    {
        return acceptUserId;
    }

    public void setAcceptUserName(String acceptUserName)
    {
        this.acceptUserName = acceptUserName;
    }

    public String getAcceptUserName()
    {
        return acceptUserName;
    }

    public Date getRealStartTime() {
        return realStartTime;
    }

    public void setRealStartTime(Date realStartTime) {
        this.realStartTime = realStartTime;
    }

    public Date getRealEndTime() {
        return realEndTime;
    }

    public void setRealEndTime(Date realEndTime) {
        this.realEndTime = realEndTime;
    }

    public void setTeamLeaderId(Long teamLeaderId)
    {
        this.teamLeaderId = teamLeaderId;
    }

    public Long getTeamLeaderId()
    {
        return teamLeaderId;
    }

    public void setTeamLeaderName(String teamLeaderName)
    {
        this.teamLeaderName = teamLeaderName;
    }

    public String getTeamLeaderName()
    {
        return teamLeaderName;
    }

    public void setWorkGroupMemberId(Long workGroupMemberId)
    {
        this.workGroupMemberId = workGroupMemberId;
    }

    public Long getWorkGroupMemberId()
    {
        return workGroupMemberId;
    }

    public void setWorkGroupMemberName(String workGroupMemberName)
    {
        this.workGroupMemberName = workGroupMemberName;
    }

    public String getWorkGroupMemberName()
    {
        return workGroupMemberName;
    }

    public void setSuspendReason(String suspendReason)
    {
        this.suspendReason = suspendReason;
    }

    public String getSuspendReason()
    {
        return suspendReason;
    }

    public void setSuspendTime(Date suspendTime)
    {
        this.suspendTime = suspendTime;
    }

    public Date getSuspendTime()
    {
        return suspendTime;
    }

    public String getPauseReason() {
        return pauseReason;
    }

    public void setPauseReason(String pauseReason) {
        this.pauseReason = pauseReason;
    }

    public Date getPauseTime() {
        return pauseTime;
    }

    public void setPauseTime(Date pauseTime) {
        this.pauseTime = pauseTime;
    }

    public void setRestartTime(Date restartTime)
    {
        this.restartTime = restartTime;
    }

    public Date getRestartTime()
    {
        return restartTime;
    }

    public void setCompleteTime(Date completeTime)
    {
        this.completeTime = completeTime;
    }

    public Date getCompleteTime()
    {
        return completeTime;
    }

    public BigDecimal getPlanHour() {
        return planHour;
    }

    public void setPlanHour(BigDecimal planHour) {
        this.planHour = planHour;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getFaultCode() {
        return faultCode;
    }

    public void setFaultCode(String faultCode) {
        this.faultCode = faultCode;
    }

    public String getFaultDesc() {
        return faultDesc;
    }

    public void setFaultDesc(String faultDesc) {
        this.faultDesc = faultDesc;
    }

    public Long getOrderType() {
        return orderType;
    }

    public void setOrderType(Long orderType) {
        this.orderType = orderType;
    }

    public Long getPriorityType() {
        return priorityType;
    }

    public void setPriorityType(Long priorityType) {
        this.priorityType = priorityType;
    }

    public List<GxtWorkOrderPerson> getWorkOrderPersonList() {
        return workOrderPersonList;
    }

    public void setWorkOrderPersonList(List<GxtWorkOrderPerson> workOrderPersonList) {
        this.workOrderPersonList = workOrderPersonList;
    }

    public List<GxtWorkOrderFlow> getWorkOrderFlowList() {
        return workOrderFlowList;
    }

    public void setWorkOrderFlowList(List<GxtWorkOrderFlow> workOrderFlowList) {
        this.workOrderFlowList = workOrderFlowList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("workOrderProjectNo", getWorkOrderProjectNo())
            .append("workOrderStatus", getWorkOrderStatus())
            .append("gxtCenterId", getGxtCenterId())
            .append("gxtCenter", getGxtCenter())
            .append("pcsStationId", getPcsStationId())
            .append("pcsStationName", getPcsStationName())
            .append("pcsDeviceId", getPcsDeviceId())
            .append("pcsDeviceName", getPcsDeviceName())
            .append("brand", getBrand())
            .append("model", getModel())
            .append("inspectionTypeId", getInspectionTypeId())
            .append("workPlanNo", getWorkPlanNo())
            .append("planStartTime", getPlanStartTime())
            .append("planEndTime", getPlanEndTime())
            .append("orderSource", getOrderSource())
            .append("assignTime", getAssignTime())
            .append("assignUserId", getAssignUserId())
            .append("assignUserName", getAssignUserName())
            .append("acceptTime", getAcceptTime())
            .append("acceptUserId", getAcceptUserId())
            .append("acceptUserName", getAcceptUserName())
            .append("realStartTime", getRealStartTime())
            .append("realEndTime", getRealEndTime())
            .append("teamLeaderId", getTeamLeaderId())
            .append("teamLeaderName", getTeamLeaderName())
            .append("workGroupMemberId", getWorkGroupMemberId())
            .append("workGroupMemberName", getWorkGroupMemberName())
            .append("suspendReason", getSuspendReason())
            .append("suspendTime", getSuspendTime())
            .append("pauseReason", getPauseReason())
            .append("pauseTime", getPauseTime())
            .append("restartTime", getRestartTime())
            .append("completeTime", getCompleteTime())
            .append("planHour", getPlanHour())
            .append("content", getContent())
            .append("faultCode", getFaultCode())
            .append("faultDesc", getFaultDesc())
            .append("orderType", getOrderType())
            .append("priorityType", getPriorityType())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
