package com.ygtx.gxt.domain;

import java.io.File;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ygtx.common.utils.file.FileUploadUtils;
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;

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

    /** 工单状态：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=已完成,to_finish=待结单,to_archive=待归档,archived=已归档")
    private String workOrderStatus;

    /** 工单录入类别（1默认，2补录工单） */
    @Excel(name = "录入类别", readConverterExp = "1=新建工单,2=补录工单")
    private String orderEntryType;

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

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

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

    /** 风电场父ID */
    private Long pcsStationPid;

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

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



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

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

    /** 检查类型(年检，半年检，螺栓检) */
    private String inspectionType;

    /** MIS系统编号 */
    @Excel(name = "MIS系统工单编码")
    private String misNo;

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

    /** 计划结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
//    @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")
//    @Excel(name = "派单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date assignTime;

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

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

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

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

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

    /** 班组组长姓名 */
    @Excel(name = "工作负责人")
    private String teamLeaderName;

    /** 实际开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm")
    private Date realStartTime;

    /** 实际结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm")
    private Date realEndTime;

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



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

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

    /** 挂起原因 */
    private String suspendReason;
    
    /** 挂起其他说明 */
    private String suspendExplain;
    
    /** 挂起时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date suspendTime;

    /** 挂起前的状态 */
    private String statusBeforeSuspend;

    /** 驳回原因 */
    private String rejectionReason;

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

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

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

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

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

    /** 维保内容 */
//    @Excel(name = "维保内容")
    private String content;

    /** 实际维保内容 */
    private String realContent;

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

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

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

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

    /** 评分 */
    private BigDecimal score;

    /** 点评内容 */
    private String reviewContent;

    /** 签发人 */
//    @Excel(name = "签发人")
    private String issuerName;

    /** 许可人 */
//    @Excel(name = "许可人")
    private String permitterName;

    /** 评分状态（to_self-待自评，to_re-待复评，to_confirm-待确认，to_final-待终评，to_archive-待归档，archived-已归档，appealing-申诉中） */
    private String scoringStatus;
    
    /** 复评次数 */
    private Integer reviewScoreNum;
    
    /** 终评系数 */
    private BigDecimal finalCoefficient;

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

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

    /** 结单附件URL */
    private String attachmentUrls;

    /** 结单附件文件名 */
    private String attachmentFileNames;

    /** 结单附件原始文件名 */
    private String attachmentOriginalNames;
    
    /** 结单方式（1系统自动匹配，2工作票） */
    private String finalizeMethod;

    /** 分项完成系数 */
    private BigDecimal itemCompletionFactor;

    /** 分项完成系数和 */
    private BigDecimal itemCompletionFactorSum;

    private List<GxtWorkOrderAttachment> attachments;

    /** 修改理由 */
    private String modifyReason;
    
    /** 作废原因 */
    private String invalidReason;

    /**
     * 是否延期，1延期，其它值否
     */
    private Integer isDeferred;

    /** 反馈理由 */
    private String feedbackReason;

    /** 确认状态（0-未确认，1-确认，2-已反馈，3-已申诉） */
    private Integer confirmStatus;

    /** 外委人员数 */
    private Integer wwryNum;

    /** 外来人员数 */
    private Integer wlryNum;

    /** 信息录入方式 */
    private String infoEntry;

    /** 损失电量（单位kWh） */
    private BigDecimal lostPower;

    /** 工作票编号 */
    @Excel(name = "工作票编号")
    private String workPermitNum;

    /** 申诉人用户ID */
    private Long appealUserId;

    /** 申诉人姓名 */
    private String appealUserName;

    /** 申诉时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date appealTime;

    /** 申诉理由 */
    private String appealReason;

    /** 评分退回理由 */
    private String scoreReturnReason;

    private String monthPeriod;

    private String leader;

    private Integer stopDays;

    private Integer runningDays;

    private String deptName;

    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 Long getPcsStationPid() {
        return pcsStationPid;
    }

    public void setPcsStationPid(Long pcsStationPid) {
        this.pcsStationPid = pcsStationPid;
    }

    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 String getInspectionType() {
        return inspectionType;
    }

    public void setInspectionType(String inspectionType) {
        this.inspectionType = inspectionType;
    }

    /** MIS系统编号 */
    public String getMisNo() {
        return misNo;
    }

    public void setMisNo(String misNo) {
        this.misNo = misNo;
    }

    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 String getSuspendExplain() {
        return suspendExplain;
    }
    
    public void setSuspendExplain(String suspendExplain) {
        this.suspendExplain = suspendExplain;
    }

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

    public Date getSuspendTime()
    {
        return suspendTime;
    }

    public String getStatusBeforeSuspend()
    {
        return statusBeforeSuspend;
    }

    public void setStatusBeforeSuspend(String statusBeforeSuspend)
    {
        this.statusBeforeSuspend = statusBeforeSuspend;
    }

    public void setRejectionReason(String rejectionReason)
    {
        this.rejectionReason = rejectionReason;
    }

    public String getRejectionReason()
    {
        return rejectionReason;
    }

    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 getRealContent() {
        return realContent;
    }

    public void setRealContent(String realContent) {
        this.realContent = realContent;
    }

    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 String getOrderEntryType() {
        return orderEntryType;
    }

    public void setOrderEntryType(String orderEntryType) {
        this.orderEntryType = orderEntryType;
    }

    public Long getPriorityType() {        
        return priorityType;
    }

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

    public BigDecimal getScore() {
        return score;
    }

    public void setScore(BigDecimal score) {
        this.score = score;
    }

    public String getReviewContent() {
        return reviewContent;
    }

    public void setReviewContent(String reviewContent) {
        this.reviewContent = reviewContent;
    }

    public String getIssuerName() {
        return issuerName;
    }

    public void setIssuerName(String issuerName) {
        this.issuerName = issuerName;
    }

    public String getPermitterName() {
        return permitterName;
    }

    public void setPermitterName(String permitterName) {
        this.permitterName = permitterName;
    }

    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;
    }

    public String getAttachmentUrls() {
        return attachmentUrls;
    }

    public void setAttachmentUrls(String attachmentUrls) {
        this.attachmentUrls = attachmentUrls;
    }

    public String getAttachmentFileNames() {
        return attachmentFileNames;
    }

    public void setAttachmentFileNames(String attachmentFileNames) {
        this.attachmentFileNames = attachmentFileNames;
    }

    public String getAttachmentOriginalNames() {
        return attachmentOriginalNames;
    }

    public void setAttachmentOriginalNames(String attachmentOriginalNames) {
        this.attachmentOriginalNames = attachmentOriginalNames;
    }

    public List<GxtWorkOrderAttachment> getAttachments() {
        return attachments;
    }

    public void setAttachments(List<GxtWorkOrderAttachment> attachments) {
        this.attachments = attachments;
    }

    public String getScoringStatus() {
        return scoringStatus;
    }

    public void setScoringStatus(String scoringStatus) {
        this.scoringStatus = scoringStatus;
    }

    public BigDecimal getItemCompletionFactor() {
        return itemCompletionFactor;
    }

    public void setItemCompletionFactor(BigDecimal itemCompletionFactor) {
        this.itemCompletionFactor = itemCompletionFactor;
    }

    public BigDecimal getItemCompletionFactorSum() {
        return itemCompletionFactorSum;
    }

    public void setItemCompletionFactorSum(BigDecimal itemCompletionFactorSum) {
        this.itemCompletionFactorSum = itemCompletionFactorSum;
    }
    
    public Integer getReviewScoreNum() {
        return reviewScoreNum;
    }
    
    public void setReviewScoreNum(Integer reviewScoreNum) {
        this.reviewScoreNum = reviewScoreNum;
    }
    
    public BigDecimal getFinalCoefficient() {
        return finalCoefficient;
    }
    
    public void setFinalCoefficient(BigDecimal finalCoefficient) {
        this.finalCoefficient = finalCoefficient;
    }

    public Integer getIsDeferred() {
        return isDeferred;
    }

    public void setIsDeferred(Integer isDeferred) {
        this.isDeferred = isDeferred;
    }

    public String getInvalidReason() {
        return invalidReason;
    }

    public void setInvalidReason(String invalidReason) {
        this.invalidReason = invalidReason;
    }
    
    public String getFinalizeMethod() {
        return finalizeMethod;
    }
    
    public void setFinalizeMethod(String finalizeMethod) {
        this.finalizeMethod = finalizeMethod;
    }

    public String getModifyReason() {
        return modifyReason;
    }

    public void setModifyReason(String modifyReason) {
        this.modifyReason = modifyReason;
    }

    public String getFeedbackReason() {
        return feedbackReason;
    }

    public void setFeedbackReason(String feedbackReason) {
        this.feedbackReason = feedbackReason;
    }

    public Integer getConfirmStatus() {
        return confirmStatus;
    }

    public void setConfirmStatus(Integer confirmStatus) {
        this.confirmStatus = confirmStatus;
    }

    public Integer getWwryNum() {
        return wwryNum;
    }

    public void setWwryNum(Integer wwryNum) {
        this.wwryNum = wwryNum;
    }

    public Integer getWlryNum() {
        return wlryNum;
    }

    public void setWlryNum(Integer wlryNum) {
        this.wlryNum = wlryNum;
    }

    public String getInfoEntry() {
        return infoEntry;
    }

    public void setInfoEntry(String infoEntry) {
        this.infoEntry = infoEntry;
    }

    public BigDecimal getLostPower() {
        return lostPower;
    }

    public void setLostPower(BigDecimal lostPower) {
        this.lostPower = lostPower;
    }

    public String getWorkPermitNum() {
        return workPermitNum;
    }

    public void setWorkPermitNum(String workPermitNum) {
        this.workPermitNum = workPermitNum;
    }

    public Long getAppealUserId() {
        return appealUserId;
    }

    public void setAppealUserId(Long appealUserId) {
        this.appealUserId = appealUserId;
    }

    public String getAppealUserName() {
        return appealUserName;
    }

    public void setAppealUserName(String appealUserName) {
        this.appealUserName = appealUserName;
    }

    public Date getAppealTime() {
        return appealTime;
    }

    public void setAppealTime(Date appealTime) {
        this.appealTime = appealTime;
    }

    public String getAppealReason() {
        return appealReason;
    }

    public void setAppealReason(String appealReason) {
        this.appealReason = appealReason;
    }

    public String getScoreReturnReason() {
        return scoreReturnReason;
    }

    public void setScoreReturnReason(String scoreReturnReason) {
        this.scoreReturnReason = scoreReturnReason;
    }

    public String getMonthPeriod() {
        return monthPeriod;
    }

    public void setMonthPeriod(String monthPeriod) {
        this.monthPeriod = monthPeriod;
    }

    public String getLeader() {
        return leader;
    }

    public void setLeader(String leader) {
        this.leader = leader;
    }

    public Integer getStopDays() {
        return stopDays;
    }

    public void setStopDays(Integer stopDays) {
        this.stopDays = stopDays;
    }

    public Integer getRunningDays() {
        return runningDays;
    }

    public void setRunningDays(Integer runningDays) {
        this.runningDays = runningDays;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    @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", getInspectionType())
            .append("misNo", getMisNo())
            .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("rejectionReason", getRejectionReason())
            .append("pauseReason", getPauseReason())
            .append("pauseTime", getPauseTime())
            .append("restartTime", getRestartTime())
            .append("completeTime", getCompleteTime())
            .append("planHour", getPlanHour())
            .append("content", getContent())
            .append("realContent", getRealContent())
            .append("faultCode", getFaultCode())
            .append("faultDesc", getFaultDesc())
            .append("orderType", getOrderType())
            .append("priorityType", getPriorityType())
            .append("score", getScore())
            .append("reviewContent", getReviewContent())
            .append("issuerName", getIssuerName())
            .append("permitterName", getPermitterName())
            .append("attachmentUrls", getAttachmentUrls())
            .append("attachmentFileNames", getAttachmentFileNames())
            .append("attachmentOriginalNames", getAttachmentOriginalNames())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("invalidReason", getInvalidReason())
            .toString();
    }

}