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.打卡同步; } } }