using System;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
namespace Win_in.Sfs.Wms.DataExchange.Domain;
public abstract class ExternalDataBase : SfsAggregateRootBase
{
///
/// 数据类型
///
public string DataType { get; set; }
///
/// 数据表类型
///
public EnumExchangeTableType TableType { get; set; } = EnumExchangeTableType.None;
///
/// 数据动作
///
public EnumExchangeDataAction DataAction { get; set; }
///
/// 生效日期
///
public DateTime EffectiveDate { get; protected internal set; } = DateTime.Today;
///
/// 数据状态
///
public EnumExchangeDataStatus Status { get; protected internal set; } = EnumExchangeDataStatus.Unread;
///
/// 来源系统
///
public string SourceSystem { get; set; }
///
/// 来源数据ID
///
public string SourceDataId { get; set; }
///
/// 来源数据组码
///
public string SourceDataGroupCode { get; set; }
///
/// 来源数据明细码
///
public string SourceDataDetailCode { get; set; }
///
/// 来源数据内容
///
public string SourceDataContent { get; set; }
///
/// 写入时间
///
public DateTime WriteTime { get; set; } = DateTime.Now;
///
/// 写入者
///
public string Writer { get; set; }
///
/// 目标数据ID
///
public string DestinationDataId { get; set; }
///
/// 目标数据内容
///
public string DestinationDataContent { get; set; }
///
/// 目标系统
///
public string DestinationSystem { get; set; }
///
/// 读取时间
///
public DateTime? ReadTime { get; set; } = DateTime.Now;
///
/// 读取者
///
public string Reader { get; set; }
///
/// 错误代码
///
public EnumExchangeDataErrorCode ErrorCode { get; protected internal set; }
///
/// 错误信息
///
public string ErrorMessage { get; protected internal set; }
///
/// 重试次数
///
public int RetryTimes { get; protected internal set; }
public void SetEffectiveDate(DateTime newDate)
{
EffectiveDate = newDate;
}
public void SetError(EnumExchangeDataErrorCode errorCode, string errorMessage, string remark = null)
{
Status = EnumExchangeDataStatus.Error;
ErrorCode = errorCode;
ErrorMessage = errorMessage;
Remark = remark;
RetryTimes++;
}
public void Hold(string remark = null)
{
Status = EnumExchangeDataStatus.Hold;
Remark = remark;
}
public virtual void Reset(string remark = null)
{
Status = EnumExchangeDataStatus.Unread;
ErrorCode = EnumExchangeDataErrorCode.None;
ErrorMessage = "";
Remark = remark;
RetryTimes = 0;
}
public void Take(string remark = null)
{
Status = EnumExchangeDataStatus.Processing;
Remark = remark;
}
public void SetSuccess(string remark = null)
{
Status = EnumExchangeDataStatus.Success;
ErrorCode = EnumExchangeDataErrorCode.None;
ErrorMessage = "";
Remark = remark;
}
}