using NCC.Extend.Entitys.Enum;
using NCC.Extend.Entitys.lq_attendance_summary;
namespace NCC.Extend
{
///
/// 考勤汇总数据来源识别(Excel 导入 vs 打卡同步)
///
public static class AttendanceSummarySourceHelper
{
/// Excel 导入备注前缀
public const string ExcelImportRemarkPrefix = "[Excel导入]";
/// 打卡同步备注特征
public const string PunchSyncRemarkMarker = "系统按考勤打卡汇总生成";
///
/// 构建导入备注(带来源前缀)
///
public static string BuildImportRemark(string userRemark)
{
if (string.IsNullOrWhiteSpace(userRemark))
{
return ExcelImportRemarkPrefix;
}
if (userRemark.StartsWith(ExcelImportRemarkPrefix))
{
return userRemark;
}
return ExcelImportRemarkPrefix + userRemark;
}
///
/// 是否 Excel 导入来源
///
public static bool IsExcelImport(LqAttendanceSummaryEntity entity)
{
if (entity == null)
{
return false;
}
if (entity.DataSource == (int)AttendanceSummaryDataSourceEnum.Excel导入)
{
return true;
}
if (!string.IsNullOrEmpty(entity.Remark) && entity.Remark.StartsWith(ExcelImportRemarkPrefix))
{
return true;
}
return entity.DataSource == 0
&& !string.IsNullOrEmpty(entity.Remark)
&& !entity.Remark.Contains(PunchSyncRemarkMarker);
}
///
/// 是否 Excel 导入来源(列表行)
///
public static bool IsExcelImport(string remark, int dataSource)
{
if (dataSource == (int)AttendanceSummaryDataSourceEnum.Excel导入)
{
return true;
}
if (!string.IsNullOrEmpty(remark) && remark.StartsWith(ExcelImportRemarkPrefix))
{
return true;
}
if (dataSource == (int)AttendanceSummaryDataSourceEnum.打卡同步)
{
return false;
}
return !string.IsNullOrEmpty(remark) && !remark.Contains(PunchSyncRemarkMarker);
}
///
/// 解析数据来源枚举值
///
public static int ResolveDataSource(string remark, int dataSource)
{
return IsExcelImport(remark, dataSource)
? (int)AttendanceSummaryDataSourceEnum.Excel导入
: (int)AttendanceSummaryDataSourceEnum.打卡同步;
}
}
}