package com.aucma.dms.domain;

import com.aucma.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;
import java.util.List;



/**
 * 故障报修工单实例节点对象 dms_fault_instance_activity
 *
 * @author Open Platform
 * @date 2024-02-27
 */
@Data
public class DmsFaultInstanceActivity extends DmsBaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 维修工单实例节点ID */
    private Long instanceActivityId;

    /** 维修工单实例ID，关联dms_bills_repair_instance的repair_instance_id */
    @Excel(name = "维修工单实例ID，关联dms_bills_repair_instance的repair_instance_id")
    private Long repairInstanceId;

    /** 工单流程节点ID（关联wf_process_activity的process_activity_id） */
    @Excel(name = "工单流程节点ID", readConverterExp = "关=联wf_process_activity的process_activity_id")
    private Long processActivityId;

    /** 故障类型(关联数据字典);最后一步自动复制第1步的，可在第2步修改，修改保存后为第2步的记录，第1步为要求的，第2步为实际的 */
    @Excel(name = "故障类型(关联数据字典);最后一步自动复制第1步的，可在第2步修改，修改保存后为第2步的记录，第1步为要求的，第2步为实际的")
    private String faultType;

    /** 故障描述;最后一步自动复制第1步的，可在第2步修改，修改保存后为第2步的记录，第1步为要求的，第2步为实际的 */
    @Excel(name = "故障描述;最后一步自动复制第1步的，可在第2步修改，修改保存后为第2步的记录，第1步为要求的，第2步为实际的")
    private String faultDescription;

    /** 涉及操作;最后一步自动复制第1步的，可在第2步修改，修改保存后为第2步的记录，第1步为要求的，第2步为实际的 */
    @Excel(name = "涉及操作;最后一步自动复制第1步的，可在第2步修改，修改保存后为第2步的记录，第1步为要求的，第2步为实际的")
    private String designOperations;

    /** 设备ID，关联dms_base_device_ledger的device_id */
    @Excel(name = "设备ID，关联dms_base_device_ledger的device_id")
    private Long deviceId;

    /** 维修类型：1-内部维修；2-外协维修;最后一步自动复制第1步的，可在第2步修改，修改保存后为第2步的记录，第1步为要求的，第2步为实际的 */
    @Excel(name = "维修类型：1-内部维修；2-外协维修;最后一步自动复制第1步的，可在第2步修改，修改保存后为第2步的记录，第1步为要求的，第2步为实际的")
    private String repairType;

    /** 外协单位，关联dms_base_outsrc_info的outsrc_id;最后一步自动复制第1步的，可在第2步修改，修改保存后为第2步的记录，第1步为要求的，第2步为实际的 */
    @Excel(name = "外协单位，关联dms_base_outsrc_info的outsrc_id;最后一步自动复制第1步的，可在第2步修改，修改保存后为第2步的记录，第1步为要求的，第2步为实际的")
    private Long outsrcId;

    /** 处理意见;第一步不显示，从第2个步骤开始显示此字段 */
    @Excel(name = "处理意见;第一步不显示，从第2个步骤开始显示此字段")
    private String processHandleResolution;
    private String faultSourceType;

    /** 状态(0已结束，1执行中，2、待接取，3、已转发） */
    @Excel(name = "状态(0已结束，1执行中，2、待接取，3、已转发）")
    private String processHandleStatus;

    /** 工单流程步骤顺序 */
    @Excel(name = "工单流程步骤顺序")
    private Long processStepOrder;

    // 非持久化字段，用于前端显示“任务”名称
    private String processActivityName;

    /** 执行开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "执行开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 执行结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "执行结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTime;

    /** 处理人ID（关联sys_user的user_id) */
    @Excel(name = "处理人ID", readConverterExp = "处理人ID（关联sys_user的user_id)")
    private Long handleUserId;

    /** 处理人 */
    @Excel(name = "处理人")
    private String handleBy;
    private String confirmer;

    /** 处理时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "处理时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date handleTime;

    /** 转单人用户id或转发协助用户id;1、在转发时，生成新的工单节点实例，执行人id为转发的用户，而转单人是刚才转发给此用户的用户id，是否协助工单为0，并且转发后当前工单的状态为已结束此用户的用户id，是否协助工单为0，并且转发后当前工单的状态为已结束此用户的用户id，是否协助工单为0，并且转发后当前工单的状态为已结束此用户的用户id，是否协助工单为0，并且转发后当前工单的状态为已结束2、在添加协助时，生成新的工单节点实例，执行人id为添加协助的用户，而转单人是刚才添加协助此用户的用户id，是否协助工单为1，并且转发后当前工单的状态仍为执行中 */
    @Excel(name = "转单人用户id或转发协助用户id;1、在转发时，生成新的工单节点实例，执行人id为转发的用户，而转单人是刚才转发给此用户的用户id，是否协助工单为0，并且转发后当前工单的状态为已结束此用户的用户id，是否协助工单为0，并且转发后当前工单的状态为已结束此用户的用户id，是否协助工单为0，并且转发后当前工单的状态为已结束此用户的用户id，是否协助工单为0，并且转发后当前工单的状态为已结束2、在添加协助时，生成新的工单节点实例，执行人id为添加协助的用户，而转单人是刚才添加协助此用户的用户id，是否协助工单为1，并且转发后当前工单的状态仍为执行中")
    private Long transferUserId;

    /** 用户预留1 */
    @Excel(name = "用户预留1")
    private String attr1;
    private Long wfLength;

    private List<String> fileUrls;

    private List<DmsInstanceFile> dmsInstanceFileList;
    private List<DmsInstanceFile> dmsInstanceFiles;
    private Integer fileCount;
    private String checkedFault;
    private String repairContent;
    private String protectedMethod;
    private String repairer;
    private Integer repairConfirm;
    private Date confirmTime;
    private Long componentsPartsId;
    private String parts1;
    private List<DmsFaultCompentsParts> parts;
    private String deviceName;
    private String deviceLocation;
    private String deviceCode;
    private String applyUser;
    private Date applyTime;
    private Date realBeginTime;
    private Date realEndTime;

    public Long getWfLength() {
        return wfLength;
    }

    public void setWfLength(Long wfLength) {
        this.wfLength = wfLength;
    }

    public void setInstanceActivityId(Long instanceActivityId)
    {
        this.instanceActivityId = instanceActivityId;
    }

    public Long getInstanceActivityId()
    {
        return instanceActivityId;
    }
    public void setRepairInstanceId(Long repairInstanceId)
    {
        this.repairInstanceId = repairInstanceId;
    }

    public Long getRepairInstanceId()
    {
        return repairInstanceId;
    }
    public void setProcessActivityId(Long processActivityId)
    {
        this.processActivityId = processActivityId;
    }

    public Long getProcessActivityId()
    {
        return processActivityId;
    }
    public void setFaultType(String faultType)
    {
        this.faultType = faultType;
    }

    public String getFaultType()
    {
        return faultType;
    }
    public void setFaultDescription(String faultDescription)
    {
        this.faultDescription = faultDescription;
    }

    public String getFaultDescription()
    {
        return faultDescription;
    }
    public void setDesignOperations(String designOperations)
    {
        this.designOperations = designOperations;
    }

    public String getDesignOperations()
    {
        return designOperations;
    }
    public void setDeviceId(Long deviceId)
    {
        this.deviceId = deviceId;
    }

    public Long getDeviceId()
    {
        return deviceId;
    }
    public void setRepairType(String repairType)
    {
        this.repairType = repairType;
    }

    public String getRepairType()
    {
        return repairType;
    }
    public void setOutsrcId(Long outsrcId)
    {
        this.outsrcId = outsrcId;
    }

    public Long getOutsrcId()
    {
        return outsrcId;
    }
    public void setProcessHandleResolution(String processHandleResolution)
    {
        this.processHandleResolution = processHandleResolution;
    }

    public String getProcessHandleResolution()
    {
        return processHandleResolution;
    }
    public void setProcessHandleStatus(String processHandleStatus)
    {
        this.processHandleStatus = processHandleStatus;
    }

    public String getProcessHandleStatus()
    {
        return processHandleStatus;
    }
    public void setProcessStepOrder(Long processStepOrder)
    {
        this.processStepOrder = processStepOrder;
    }

    public Long getProcessStepOrder()
    {
        return processStepOrder;
    }
    public void setStartTime(Date startTime)
    {
        this.startTime = startTime;
    }

    public Date getStartTime()
    {
        return startTime;
    }
    public void setEndTime(Date endTime)
    {
        this.endTime = endTime;
    }

    public Date getEndTime()
    {
        return endTime;
    }
    public void setHandleUserId(Long handleUserId)
    {
        this.handleUserId = handleUserId;
    }

    public Long getHandleUserId()
    {
        return handleUserId;
    }
    public void setHandleBy(String handleBy)
    {
        this.handleBy = handleBy;
    }

    public String getHandleBy()
    {
        return handleBy;
    }
    public void setHandleTime(Date handleTime)
    {
        this.handleTime = handleTime;
    }

    public Date getHandleTime()
    {
        return handleTime;
    }
    public void setTransferUserId(Long transferUserId)
    {
        this.transferUserId = transferUserId;
    }

    public Long getTransferUserId()
    {
        return transferUserId;
    }
    public void setAttr1(String attr1)
    {
        this.attr1 = attr1;
    }

    public String getAttr1()
    {
        return attr1;
    }

    public List<String> getFileUrls() {
        return fileUrls;
    }

    public void setFileUrls(List<String> fileUrls) {
        this.fileUrls = fileUrls;
    }

    public List<DmsInstanceFile> getDmsInstanceFileList() {
        return dmsInstanceFileList;
    }

    public void setDmsInstanceFileList(List<DmsInstanceFile> dmsInstanceFileList) {
        this.dmsInstanceFileList = dmsInstanceFileList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("instanceActivityId", getInstanceActivityId())
            .append("repairInstanceId", getRepairInstanceId())
            .append("processActivityId", getProcessActivityId())
            .append("faultType", getFaultType())
            .append("faultDescription", getFaultDescription())
            .append("designOperations", getDesignOperations())
            .append("deviceId", getDeviceId())
            .append("repairType", getRepairType())
            .append("outsrcId", getOutsrcId())
            .append("processHandleResolution", getProcessHandleResolution())
            .append("remark", getRemark())
            .append("processHandleStatus", getProcessHandleStatus())
            .append("processStepOrder", getProcessStepOrder())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("handleUserId", getHandleUserId())
            .append("handleBy", getHandleBy())
            .append("handleTime", getHandleTime())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("transferUserId", getTransferUserId())
            .append("attr1", getAttr1())
            .toString();
    }
}
