package com.ygtx.gxt.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ygtx.common.annotation.Excel;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 工单评分信息DTO
 *
 * @author lingming
 * @date 2025-11-12
 */
public class OrderScoreInfo {
    /** 工单类型（1-维修工单，2-维保工单） */
    private Integer orderType;

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

    /** 工单编码 */
    private String workOrderProjectNo;

    /** 工单状态 */
    private String workOrderStatus;

    /** 结单方式（1自动结单，手动结单） */
    @Excel(name = "结单方式", readConverterExp = "1=自动结单,2=手动结单")
    private String finalizeMethod;

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

    /** 维保中心 */
    private String gxtCenter;

    /** 场站ID */
    private Long pcsStationId;

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

    /** 风电场 */
    private String pcsStationName;

    /** 风机品牌 */
    private String brand;

    /** 风机型号 */
    private String model;

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

    /** 风机编号 */
    private String pcsDeviceName;

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

    /** 故障条文 */
    private String faultBarcode;

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

    /** 真实故障原因 */
    private String realFailureReason;

    /** 发生时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date occurTime;

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

    /** 恢复运行时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date restartTime;

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

    /** 下发时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date assignTime;

    /** 下发人ID */
    private Long assignUserId;

    /** 下发人姓名 */
    private String assignUserName;

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

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

    /** 接单人姓名 */
    private String acceptUserName;

    /** 复位方式(1远程复位，2就地复位) */
    private String resetMethod;

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

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

    /** 工作负责人ID */
    private Long teamLeaderId;

    /** 工作负责人姓名 */
    private String teamLeaderName;

    /** 班组成员ID */
    private Long workGroupMemberId;

    /** 班组成员 */
    private String workGroupMemberName;

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

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

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

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

    // 工时构成相关字段
    /** 下发时长 */
    private Double issueHour;

    /** 接单时长 */
    private Double acceptHour;

    /** 准备时长 */
    private Double prepareHour;

    /** 挂起时长 */
    private Double suspendHour;

    /** 作业时长 */
    private Double workHour;

    /** 验收时长 */
    private Double restartHour;

    /** 停运时长 */
    private Double downtimeHour;

    /** 开工前挂起时长 */
    private Double beforeStartSuspendHour;

    /** 开工后挂起时长 */
    private Double afterStartSuspendHour;

    /** 检修类型（A类、B类、C类、D类） */
    private String maintenanceType;

    /** 维保类型（半年检、一年检、螺栓力矩校验） */
    private String inspectionType;

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

    /** 维修总结/维保总结 */
    private String workSummary;

    /** 额外工作总结 */
    private String extraWork;

    /** 工作部位 */
    private String workArea;

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

    /** 完成系数累计 */
    private BigDecimal itemCompletionFactor;

    /** 自评时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date selfRatingTime;

    /** 复评时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date reviewRatingTime;

    /** 工作负责人分数 */
    private Double teamLeaderScore;

    /** 班组成员分数 */
    private String workGroupMemberScore;

    /** 评分 */
    private Double score;

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

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

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

    /** 修改理由 */
    private String modifyReason;

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

    /** 工作结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date workEndTime;

    /** 评分状态（to_self-待自评，to_re-待复评，to_confirm-待确认，to_final-待终评，to_archive-待归档，archived-已归档） */
    private String scoringStatus;

    // 新增的共同字段
    /** 计划开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date planStartTime;

    /** 计划结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date planEndTime;

    /** 计划工时 */
    private Double planHour;

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

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

    /** 完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date completeTime;

    /** 状态（0-待处理，1-已完成，2-已归档） */
    private Integer status;

    /** 检修人员列表 */
    private List<OrderScorePerson> scorePersonList;

    /** 复评次数 */
    private Integer reviewScoreNum;

    /** 终评系数 */
    private BigDecimal finalCoefficient;

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

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

    /** 申诉理由 - 仅维修工单有此字段 */
    private String appealReason;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date createTime;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date updateTime;

    /** 处理时长 */
    private Double handleHour;


    private String remark;

    /** 本人得分 */
    private BigDecimal myScore;

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

    /** 工单录入类别（1默认，2补录工单） */
    private String orderEntryType;

    /** 标识当前用户是否在工单人员列表中 */
    private Boolean isCurrentUserInOrder;

    private Integer overStopStatus;

    public Integer getOrderType() {
        return orderType;
    }

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

    public Long getId() {
        return id;
    }

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

    public String getWorkOrderProjectNo() {
        return workOrderProjectNo;
    }

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

    public String getWorkOrderStatus() {
        return workOrderStatus;
    }

    public void setWorkOrderStatus(String workOrderStatus) {
        this.workOrderStatus = 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 Date getAssignTime() {
        return assignTime;
    }

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

    public Long getAssignUserId() {
        return assignUserId;
    }

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

    public String getAssignUserName() {
        return assignUserName;
    }

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

    public Date getAcceptTime() {
        return acceptTime;
    }

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

    public Long getAcceptUserId() {
        return acceptUserId;
    }

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

    public String getAcceptUserName() {
        return acceptUserName;
    }

    public void setAcceptUserName(String acceptUserName) {
        this.acceptUserName = 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 Long getTeamLeaderId() {
        return teamLeaderId;
    }

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

    public String getTeamLeaderName() {
        return teamLeaderName;
    }

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

    public Long getWorkGroupMemberId() {
        return workGroupMemberId;
    }

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

    public String getWorkGroupMemberName() {
        return workGroupMemberName;
    }

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

    public Double getScore() {
        return score;
    }

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

    public String getReviewContent() {
        return reviewContent;
    }

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

    public String getSuspendReason() {
        return suspendReason;
    }

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

    public String getRejectionReason() {
        return rejectionReason;
    }

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

    public Date getRestartTime() {
        return restartTime;
    }

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

    public String getPriorityType() {
        return priorityType;
    }

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

    public Date getWorkEndTime() {
        return workEndTime;
    }

    public void setWorkEndTime(Date workEndTime) {
        this.workEndTime = workEndTime;
    }

    public String getScoringStatus() {
        return scoringStatus;
    }

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

    public String getWorkSummary() {
        return workSummary;
    }

    public void setWorkSummary(String workSummary) {
        this.workSummary = workSummary;
    }

    public String getMaintenanceType() {
        return maintenanceType;
    }

    public void setMaintenanceType(String maintenanceType) {
        this.maintenanceType = maintenanceType;
    }

    public String getInspectionType() {
        return inspectionType;
    }

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

    public Date getPlanStartTime() {
        return planStartTime;
    }

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

    public Date getPlanEndTime() {
        return planEndTime;
    }

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

    public Double getPlanHour() {
        return planHour;
    }

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

    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 Date getOccurTime() {
        return occurTime;
    }

    public void setOccurTime(Date occurTime) {
        this.occurTime = occurTime;
    }

    public Date getSuspendTime() {
        return suspendTime;
    }

    public void setSuspendTime(Date suspendTime) {
        this.suspendTime = 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 Date getCompleteTime() {
        return completeTime;
    }

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

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public List<OrderScorePerson> getScorePersonList() {
        return scorePersonList;
    }

    public void setScorePersonList(List<OrderScorePerson> scorePersonList) {
        this.scorePersonList = scorePersonList;
    }

    public String getModifyReason() {
        return modifyReason;
    }

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

    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 getConfirmStatus() {
        return confirmStatus;
    }

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

    public String getFeedbackReason() {
        return feedbackReason;
    }

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

    /**
     * 获取申诉理由 - 仅维修工单有此字段
     *
     * @return 申诉理由
     */
    public String getAppealReason() {
        return appealReason;
    }

    /**
     * 设置申诉理由 - 仅维修工单有此字段
     *
     * @param appealReason 申诉理由
     */
    public void setAppealReason(String appealReason) {
        this.appealReason = appealReason;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Double getHandleHour() {
        return handleHour;
    }

    public void setHandleHour(Double handleHour) {
        this.handleHour = handleHour;
    }

    public Double getIssueHour() {
        return issueHour;
    }

    public void setIssueHour(Double issueHour) {
        this.issueHour = issueHour;
    }

    public Double getAcceptHour() {
        return acceptHour;
    }

    public void setAcceptHour(Double acceptHour) {
        this.acceptHour = acceptHour;
    }

    public Double getPrepareHour() {
        return prepareHour;
    }

    public void setPrepareHour(Double prepareHour) {
        this.prepareHour = prepareHour;
    }

    public Double getWorkHour() {
        return workHour;
    }

    public void setWorkHour(Double workHour) {
        this.workHour = workHour;
    }

    public Double getRestartHour() {
        return restartHour;
    }

    public void setRestartHour(Double restartHour) {
        this.restartHour = restartHour;
    }

    public Double getDowntimeHour() {
        return downtimeHour;
    }

    public void setDowntimeHour(Double downtimeHour) {
        this.downtimeHour = downtimeHour;
    }

    public Double getSuspendHour() {
        return suspendHour;
    }

    public void setSuspendHour(Double suspendHour) {
        this.suspendHour = suspendHour;
    }

    public Double getBeforeStartSuspendHour() {
        return beforeStartSuspendHour;
    }

    public void setBeforeStartSuspendHour(Double beforeStartSuspendHour) {
        this.beforeStartSuspendHour = beforeStartSuspendHour;
    }

    public Double getAfterStartSuspendHour() {
        return afterStartSuspendHour;
    }

    public void setAfterStartSuspendHour(Double afterStartSuspendHour) {
        this.afterStartSuspendHour = afterStartSuspendHour;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public BigDecimal getMyScore() {
        return myScore;
    }

    public void setMyScore(BigDecimal myScore) {
        this.myScore = myScore;
    }

    public String getExtraWork() {
        return extraWork;
    }

    public void setExtraWork(String extraWork) {
        this.extraWork = extraWork;
    }

    public String getScoreReturnReason() {
        return scoreReturnReason;
    }

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

    public String getOrderEntryType() {
        return orderEntryType;
    }

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

    public Boolean getIsCurrentUserInOrder() {
        return isCurrentUserInOrder;
    }

    public void setIsCurrentUserInOrder(Boolean isCurrentUserInOrder) {
        this.isCurrentUserInOrder = isCurrentUserInOrder;
    }

    public String getFinalizeMethod() {
        return finalizeMethod;
    }

    public void setFinalizeMethod(String finalizeMethod) {
        this.finalizeMethod = finalizeMethod;
    }

    public String getFaultBarcode() {
        return faultBarcode;
    }

    public void setFaultBarcode(String faultBarcode) {
        this.faultBarcode = faultBarcode;
    }

    public String getRealFailureReason() {
        return realFailureReason;
    }

    public void setRealFailureReason(String realFailureReason) {
        this.realFailureReason = realFailureReason;
    }

    public BigDecimal getLostPower() {
        return lostPower;
    }

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

    public String getResetMethod() {
        return resetMethod;
    }

    public void setResetMethod(String resetMethod) {
        this.resetMethod = resetMethod;
    }

    public String getMisOrderNo() {
        return misOrderNo;
    }

    public void setMisOrderNo(String misOrderNo) {
        this.misOrderNo = misOrderNo;
    }

    public String getWorkPermitNum() {
        return workPermitNum;
    }

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

    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 getContent() {
        return content;
    }

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

    public String getWorkArea() {
        return workArea;
    }

    public void setWorkArea(String workArea) {
        this.workArea = workArea;
    }

    public Double getTeamLeaderScore() {
        return teamLeaderScore;
    }

    public void setTeamLeaderScore(Double teamLeaderScore) {
        this.teamLeaderScore = teamLeaderScore;
    }

    public String getWorkGroupMemberScore() {
        return workGroupMemberScore;
    }

    public void setWorkGroupMemberScore(String workGroupMemberScore) {
        this.workGroupMemberScore = workGroupMemberScore;
    }

    public Date getSelfRatingTime() {
        return selfRatingTime;
    }

    public void setSelfRatingTime(Date selfRatingTime) {
        this.selfRatingTime = selfRatingTime;
    }

    public Date getReviewRatingTime() {
        return reviewRatingTime;
    }

    public void setReviewRatingTime(Date reviewRatingTime) {
        this.reviewRatingTime = reviewRatingTime;
    }

    public Integer getOverStopStatus() {
        return overStopStatus;
    }

    public void setOverStopStatus(Integer overStopStatus) {
        this.overStopStatus = overStopStatus;
    }
}