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
}
}