2025-03-28 09:49:56 +08:00

345 lines
13 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 ->
/// <summary>
/// 获取当月的第一天
/// </summary>
/// <param name="Month">月份格式yyyyMM</param>
/// <returns>返回结果日期字符串格式yyyy-MM-dd</returns>
public static string GetFirstDayOfMonth(string Month)
{
return Month.Substring(0, 4) + "-" + Month.Substring(4, 2) + "-01";
}
#endregion
#region ->
/// <summary>
/// 获取当月的最后一天
/// </summary>
/// <param name="Month">月份格式yyyyMM</param>
/// <param name="ContainToday">最后一天是否包含今天,如果是则返回今天,否则返回昨天</param>
/// <returns>返回结果日期字符串格式yyyy-MM-dd</returns>
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 ->
/// <summary>
/// 获取上一个月
/// </summary>
/// <param name="Month">月份格式yyyyMM</param>
/// <returns>返回结果日期字符串格式yyyyMM</returns>
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 ->
/// <summary>
/// 解析枚举字典数据
/// </summary>
/// <param name="oracleHelper">数据字典数据库链接</param>
/// <param name="FieldName">枚举字段名称</param>
/// <param name="FieldValue">枚举值(多个用,隔开)</param>
/// <returns></returns>
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中某个字符串的值
/// <summary>
/// 合并Datatable中某个字符串的值返回list
/// </summary>
/// <param name="dataTable">数据源</param>
/// <param name="FieldName">字段名称</param>
/// <param name="SortStr">排序字段</param>
/// <returns></returns>
public static List<string> JoinListFromDataTable(DataTable dataTable, string FieldName, string SortStr = "")
{
List<string> JoinStr = new List<string>();
foreach (DataRow dataRow in dataTable.DefaultView.ToTable(true, FieldName).Select("", SortStr))
{
if (dataRow[FieldName].ToString() != "")
{
JoinStr.Add(dataRow[FieldName].ToString());
}
}
return JoinStr;
}
/// <summary>
/// 合并Datatable中某个字符串的值返回string
/// </summary>
/// <param name="dataTable">数据源</param>
/// <param name="FieldName">字段名称</param>
/// <param name="SeparateStr">分隔符,默认为,</param>
/// <param name="SortStr">排序字段</param>
/// <returns></returns>
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 ->
/// <summary>
/// 判断当前日期是否为假日
/// </summary>
/// <param name="oracleHelper"></param>
/// <param name="HolidayType">
/// 节日类型:<br/>
/// 1【元旦】<br/>2【春运】<br/>3【清明】<br/>4【五一】<br/>5【端午】<br/>6【暑期】<br/>7【中秋】<br/>8【国庆】
/// </param>
/// <param name="StatisticsDate">统计日期格式yyyyMMdd</param>
/// <returns></returns>
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;
}
/// <summary>
/// 判断当前日期是否为假日
/// </summary>
/// <param name="oracleHelper"></param>
/// <param name="StatisticsDate">统计日期格式yyyyMMdd</param>
/// <returns></returns>
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
}
}