using System; using System.Collections.Generic; using System.Data; using System.Text; using System.Threading.Tasks; namespace DataBaseTransfer.Method { public static class CommonHelper { #region 方法 -> 存储数字型数据至oracle数据库 public static string GetNumberIntoOra(this object OriValue) { if (OriValue == null) { return "NULL"; } else { return GetNumberIntoOra(OriValue.ToString()); } } public static string GetNumberIntoOra(this string OriValue) { if (string.IsNullOrWhiteSpace(OriValue)) { return "NULL"; } else { return OriValue; } } #endregion #region 方法 -> 存储日期格式型数据至oracle数据库 public static string GetDateTimeIntoOra(string OriValue) { string SQLValue = ""; if (string.IsNullOrWhiteSpace(OriValue)) { SQLValue = "NULL"; } else { SQLValue = "TO_DATE('" + OriValue + "', 'YYYY/MM/DD HH24:MI:SS')"; } return SQLValue; } #endregion #region 方法 -> 获取当月的第一天 /// /// 获取当月的第一天 /// /// 月份,格式yyyyMM /// 返回结果:日期字符串,格式yyyy-MM-dd public static string GetFirstDayOfMonth(string Month) { return Month.Substring(0, 4) + "-" + Month.Substring(4, 2) + "-01"; } #endregion #region 方法 -> 获取当月的最后一天 /// /// 获取当月的最后一天 /// /// 月份,格式yyyyMM /// 最后一天是否包含今天,如果是则返回今天,否则返回昨天 /// 返回结果:日期字符串,格式yyyy-MM-dd public static string GetLastDayOfMonth(string Month, bool ContainToday = true) { //获取当月的第一天 string FirstDay = GetFirstDayOfMonth(Month); //当月最后一天=当月第一天+1个月-1天 DateTime LastDay = DateTime.Parse(FirstDay).AddMonths(1).AddDays(-1); //如果最后一天比今天大,则按今天的日期返回,否则返回最后一天的日期 if (LastDay >= DateTime.Now.Date) { if (ContainToday) { return DateTime.Now.ToString("yyyy-MM-dd"); } else { return DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"); } } else { return LastDay.ToString("yyyy-MM-dd"); } } #endregion #region 方法 -> 获取上一个月 /// /// 获取上一个月 /// /// 月份,格式yyyyMM /// 返回结果:日期字符串,格式yyyyMM public static string GetLastMonth(string Month) { if (Month.EndsWith("01")) { return (int.Parse(Month.Substring(0, 4)) - 1) + "12"; } return Month.Substring(0, 4) + (int.Parse(Month.Substring(4, 2)) - 1).ToString("00"); } #endregion #region 方法 -> 解析枚举字典数据 /// /// 解析枚举字典数据 /// /// 数据字典数据库链接 /// 枚举字段名称 /// 枚举值(多个用,隔开) /// public static string GetFieldEnumName(OracleHelper oracleHelper, string FieldName, string FieldValue) { if (!string.IsNullOrWhiteSpace(FieldValue)) { //从数据字典表查询枚举信息,将查询结果拼接到一起返回 //枚举字段表【PLATFORM_DICTIONARY.T_FIELDEXPLAIN】、字段枚举表【PLATFORM_DICTIONARY.T_FIELDENUM】 string SQLString = string.Format(@"SELECT B.FIELDENUM_NAME FROM PLATFORM_DICTIONARY.T_FIELDEXPLAIN A, PLATFORM_DICTIONARY.T_FIELDENUM B WHERE A.FIELDEXPLAIN_ID = B.FIELDEXPLAIN_ID AND A.FIELDEXPLAIN_FIELD = '{0}' AND B.FIELDENUM_VALUE IN ('{1}')", FieldName, FieldValue.Replace(",", "','")); DataTable dtFieldEnum = oracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0]; if (dtFieldEnum.Rows.Count > 0) { return JoinStrFromDataTable(dtFieldEnum, "FIELDENUM_NAME"); } } return FieldValue; } #endregion #region 方法 -> 合并Datatable中某个字符串的值 /// /// 合并Datatable中某个字符串的值,返回list /// /// 数据源 /// 字段名称 /// 排序字段 /// public static List JoinListFromDataTable(DataTable dataTable, string FieldName, string SortStr = "") { List JoinStr = new List(); foreach (DataRow dataRow in dataTable.DefaultView.ToTable(true, FieldName).Select("", SortStr)) { if (dataRow[FieldName].ToString() != "") { JoinStr.Add(dataRow[FieldName].ToString()); } } return JoinStr; } /// /// 合并Datatable中某个字符串的值,返回string /// /// 数据源 /// 字段名称 /// 分隔符,默认为, /// 排序字段 /// public static string JoinStrFromDataTable(DataTable dataTable, string FieldName, string SeparateStr = ",", string SortStr = "") { string JoinStr = ""; foreach (DataRow dataRow in dataTable.DefaultView.ToTable(true, FieldName).Select("", SortStr)) { if (dataRow[FieldName].ToString() != "") { JoinStr += (JoinStr == "" ? "" : SeparateStr) + dataRow[FieldName]; } } return JoinStr; } #endregion #region 方法 -> 判断当前日期是否为假日 /// /// 判断当前日期是否为假日 /// /// /// /// 节日类型:
/// 1【元旦】
2【春运】
3【清明】
4【五一】
5【端午】
6【暑期】
7【中秋】
8【国庆】 /// /// 统计日期,格式yyyyMMdd /// public static bool IsHoliday(OracleHelper oracleHelper, int HolidayType, string StatisticsDate, DataTable dtHoliday = null) { if (dtHoliday == null) { dtHoliday = GetHolidayData(oracleHelper, HolidayType.ToString()); } return dtHoliday.Select("HOLIDAY_DATE = " + StatisticsDate).Length > 0; } /// /// 判断当前日期是否为假日 /// /// /// 统计日期,格式yyyyMMdd /// public static int? GetHolidayType(OracleHelper oracleHelper, string StatisticsDate, DataTable dtHoliday = null) { //判断当前月份是不是暑期 int curMonth = int.Parse(StatisticsDate.Substring(4, 2)); if (curMonth >= 7 && curMonth <= 8) return 6; if (dtHoliday == null) { dtHoliday = GetHolidayData(oracleHelper); } if (dtHoliday.Select("HOLIDAY_DATE = " + StatisticsDate).Length > 0) { DataRow drHoliday = dtHoliday.Select("HOLIDAY_DATE = " + StatisticsDate)[0]; GetHolidayType(drHoliday["HOLIDAY_NAME"].ToString()); //switch (drHoliday["HOLIDAY_NAME"].ToString()) //{ // case "元旦": // return 1; // case "春运": // return 2; // case "清明节": // return 3; // case "劳动节": // return 4; // case "端午节": // return 5; // case "暑期": // return 6; // case "中秋节": // return 7; // case "国庆节": // return 8; //} } return null; } public static int GetHolidayType(string HOLIDAY_NAME) { switch (HOLIDAY_NAME) { case "元旦": return 1; case "春运": return 2; case "清明节": return 3; case "劳动节": return 4; case "端午节": return 5; case "暑期": return 6; case "中秋节": return 7; case "国庆节": return 8; default: return 0; } } public static DataTable GetHolidayData(OracleHelper oracleHelper, string HolidayType = "") { string SQLString = @"SELECT HOLIDAY_NAME,HOLIDAY_DESC, TO_CHAR(HOLIDAY_DATE,'YYYYMMDD') AS HOLIDAY_DATE FROM WORKFLOW_SUPPORT.T_HOLIDAY"; DataTable dtHoliday = oracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0]; if (!string.IsNullOrWhiteSpace(HolidayType)) { string actHolidayType = ""; foreach (string typeNum in HolidayType.Split(',')) { switch (typeNum) { case "1": actHolidayType += (actHolidayType == "" ? "" : "','") + "元旦"; break; case "2": actHolidayType += (actHolidayType == "" ? "" : "','") + "春运"; break; case "3": actHolidayType += (actHolidayType == "" ? "" : "','") + "清明节"; break; case "4": actHolidayType += (actHolidayType == "" ? "" : "','") + "劳动节"; break; case "5": actHolidayType += (actHolidayType == "" ? "" : "','") + "端午节"; break; case "6": actHolidayType += (actHolidayType == "" ? "" : "','") + "暑期"; break; case "7": actHolidayType += (actHolidayType == "" ? "" : "','") + "中秋节"; break; case "8": actHolidayType += (actHolidayType == "" ? "" : "','") + "国庆节"; break; } } if (actHolidayType != "") { dtHoliday.DefaultView.RowFilter = "HOLIDAY_NAME in ('" + actHolidayType + "')"; dtHoliday = dtHoliday.DefaultView.ToTable(); } else { return dtHoliday.Clone(); } } return dtHoliday; } #endregion } }