You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
398 lines
14 KiB
398 lines
14 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp;
|
|
|
|
namespace Shentun.WebPeis
|
|
{
|
|
public class DataHelper
|
|
{
|
|
/// <summary>
|
|
/// string转timeonly
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
public static TimeOnly? ConvertStringToTimeOnly(string value)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(value))
|
|
{
|
|
return null;
|
|
}
|
|
else
|
|
{
|
|
return TimeOnly.Parse(value);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// timeonly转string
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
public static string ConvertTimeOnlyToString(TimeOnly? value)
|
|
{
|
|
if (value == null)
|
|
{
|
|
return "";
|
|
}
|
|
else
|
|
{
|
|
return value.Value.ToString("HH:mm");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 统一转换日期为字符串格式
|
|
/// </summary>
|
|
/// <param name="dateTime"></param>
|
|
/// <returns></returns>
|
|
public static string ConversionDateToString(DateTime? dateTime)
|
|
{
|
|
if (dateTime == null)
|
|
{
|
|
return "";
|
|
}
|
|
else
|
|
{
|
|
return dateTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 转换 只保留年月日
|
|
/// </summary>
|
|
/// <param name="dateTime"></param>
|
|
/// <returns></returns>
|
|
public static string ConversionDateShortToString(DateTime? dateTime)
|
|
{
|
|
if (dateTime == null)
|
|
{
|
|
return "";
|
|
}
|
|
else
|
|
{
|
|
return dateTime.Value.ToString("yyyy-MM-dd");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取时间段的所有日期
|
|
/// </summary>
|
|
/// <param name="startDate"></param>
|
|
/// <param name="endDate"></param>
|
|
/// <returns></returns>
|
|
public static List<DateTime> GetAllDatesWithinRange(DateTime startDate, DateTime endDate)
|
|
{
|
|
var dates = new List<DateTime>();
|
|
for (var date = startDate; date <= endDate; date = date.AddDays(1))
|
|
{
|
|
dates.Add(date);
|
|
}
|
|
return dates;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 转换人民币大小金额
|
|
/// </summary>
|
|
/// <param name="num">金额</param>
|
|
/// <returns>返回大写形式</returns>
|
|
public static string CmycurD(decimal num)
|
|
{
|
|
string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字
|
|
string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字
|
|
string str3 = ""; //从原num值中取出的值
|
|
string str4 = ""; //数字的字符串形式
|
|
string str5 = ""; //人民币大写金额形式
|
|
int i; //循环变量
|
|
int j; //num的值乘以100的字符串长度
|
|
string ch1 = ""; //数字的汉语读法
|
|
string ch2 = ""; //数字位的汉字读法
|
|
int nzero = 0; //用来计算连续的零值是几个
|
|
int temp; //从原num值中取出的值
|
|
|
|
num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数
|
|
str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式
|
|
j = str4.Length; //找出最高位
|
|
if (j > 15) { return "溢出"; }
|
|
str2 = str2.Substring(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分
|
|
|
|
//循环取出每一位需要转换的值
|
|
for (i = 0; i < j; i++)
|
|
{
|
|
str3 = str4.Substring(i, 1); //取出需转换的某一位的值
|
|
temp = Convert.ToInt32(str3); //转换为数字
|
|
if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15))
|
|
{
|
|
//当所取位数不为元、万、亿、万亿上的数字时
|
|
if (str3 == "0")
|
|
{
|
|
ch1 = "";
|
|
ch2 = "";
|
|
nzero = nzero + 1;
|
|
}
|
|
else
|
|
{
|
|
if (str3 != "0" && nzero != 0)
|
|
{
|
|
ch1 = "零" + str1.Substring(temp * 1, 1);
|
|
ch2 = str2.Substring(i, 1);
|
|
nzero = 0;
|
|
}
|
|
else
|
|
{
|
|
ch1 = str1.Substring(temp * 1, 1);
|
|
ch2 = str2.Substring(i, 1);
|
|
nzero = 0;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//该位是万亿,亿,万,元位等关键位
|
|
if (str3 != "0" && nzero != 0)
|
|
{
|
|
ch1 = "零" + str1.Substring(temp * 1, 1);
|
|
ch2 = str2.Substring(i, 1);
|
|
nzero = 0;
|
|
}
|
|
else
|
|
{
|
|
if (str3 != "0" && nzero == 0)
|
|
{
|
|
ch1 = str1.Substring(temp * 1, 1);
|
|
ch2 = str2.Substring(i, 1);
|
|
nzero = 0;
|
|
}
|
|
else
|
|
{
|
|
if (str3 == "0" && nzero >= 3)
|
|
{
|
|
ch1 = "";
|
|
ch2 = "";
|
|
nzero = nzero + 1;
|
|
}
|
|
else
|
|
{
|
|
if (j >= 11)
|
|
{
|
|
ch1 = "";
|
|
nzero = nzero + 1;
|
|
}
|
|
else
|
|
{
|
|
ch1 = "";
|
|
ch2 = str2.Substring(i, 1);
|
|
nzero = nzero + 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (i == (j - 11) || i == (j - 3))
|
|
{
|
|
//如果该位是亿位或元位,则必须写上
|
|
ch2 = str2.Substring(i, 1);
|
|
}
|
|
str5 = str5 + ch1 + ch2;
|
|
|
|
if (i == j - 1 && str3 == "0")
|
|
{
|
|
//最后一位(分)为0时,加上“整”
|
|
str5 = str5 + '整';
|
|
}
|
|
}
|
|
if (num == 0)
|
|
{
|
|
str5 = "零元整";
|
|
}
|
|
return str5;
|
|
}
|
|
|
|
#region 数据检查
|
|
|
|
|
|
/// <summary>
|
|
/// 数据检查 对象
|
|
/// </summary>
|
|
/// <param name="value">需要验证的对象</param>
|
|
/// <param name="parameterName">字段名称</param>
|
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
|
/// <exception cref="ArgumentException"></exception>
|
|
public static void CheckEntityIsNull(object value, string parameterName = "对象", string ExceptionMessage = "不能为空")
|
|
{
|
|
if (value == null)
|
|
{
|
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 数据检查 字符串
|
|
/// </summary>
|
|
/// <param name="value">需要验证的值</param>
|
|
/// <param name="parameterName">字段名称</param>
|
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
|
/// <exception cref="ArgumentException"></exception>
|
|
public static void CheckStringIsNull(string value, string parameterName, string ExceptionMessage = "不能为空")
|
|
{
|
|
if (string.IsNullOrWhiteSpace(value))
|
|
{
|
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
|
|
}
|
|
}
|
|
|
|
#region 验证char类型参数
|
|
/// <summary>
|
|
/// 验证char类型参数是否为null
|
|
/// </summary>
|
|
/// <param name="value">需要验证的值</param>
|
|
/// <param name="parameterName">字段名称</param>
|
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
|
/// <exception cref="ArgumentException"></exception>
|
|
public static void CheckCharIsNull(char? value, string parameterName, string ExceptionMessage = "不能为空")
|
|
{
|
|
if (value == null)
|
|
{
|
|
throw new ArgumentException($"{parameterName}{ExceptionMessage}");
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 验证char类型参数是否为0
|
|
/// </summary>
|
|
/// <param name="value">需要验证的值</param>
|
|
/// <param name="parameterName">字段名称</param>
|
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
|
/// <exception cref="ArgumentException"></exception>
|
|
public static void CheckCharIsZero(char value, string parameterName, string ExceptionMessage = "不能为0")
|
|
{
|
|
if (value == '0')
|
|
{
|
|
throw new ArgumentException($"{parameterName}{ExceptionMessage}");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 验证char类型参数是否为Y、N
|
|
/// </summary>
|
|
/// <param name="value">需要验证的值</param>
|
|
/// <param name="parameterName">字段名称</param>
|
|
/// <exception cref="ArgumentException"></exception>
|
|
public static void CheckCharIsYOrN(char value, string parameterName)
|
|
{
|
|
if (value != 'Y' && value != 'N')
|
|
{
|
|
throw new ArgumentException($"{parameterName}参数为:{value},是无效值,只能为Y跟N");
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 验证Int类型数据是否>0
|
|
/// </summary>
|
|
/// <param name="value">需要验证的值</param>
|
|
/// <param name="parameterName">字段名称</param>
|
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
|
/// <exception cref="ArgumentException"></exception>
|
|
public static void CheckIntIsGeaterThanZero(int value, string parameterName, string ExceptionMessage = "只能为大于0的值")
|
|
{
|
|
if (value <= 0)
|
|
{
|
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 验证Guid数据是否为null
|
|
/// </summary>
|
|
/// <param name="value">需要验证的值</param>
|
|
/// <param name="parameterName">字段名称</param>
|
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
|
/// <exception cref="ArgumentException"></exception>
|
|
public static void CheckGuidIsNull(Guid? value, string parameterName, string ExceptionMessage = "不能为空")
|
|
{
|
|
if (value == null)
|
|
{
|
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 验证Guid数据是否为默认值00000000-0000-0000-0000-000000000000
|
|
/// </summary>
|
|
/// <param name="value">需要验证的值</param>
|
|
/// <param name="parameterName">字段名称</param>
|
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
|
/// <exception cref="ArgumentException"></exception>
|
|
public static void CheckGuidIsDefaultValue(Guid value, string parameterName, string ExceptionMessage = "不能为默认值00000000-0000-0000-0000-000000000000")
|
|
{
|
|
if (value == Guid.Empty || value == default(Guid))
|
|
{
|
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
///验证decimal类型数据大于0
|
|
/// </summary>
|
|
/// <param name="value">需要验证的值</param>
|
|
/// <param name="parameterName">字段名称</param>
|
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
|
/// <exception cref="ArgumentException"></exception>
|
|
public static void CheckDecimalIsGeaterThanZero(decimal value, string parameterName, string ExceptionMessage = "值只能大于0")
|
|
{
|
|
if (value <= 0)
|
|
{
|
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 数据检查 decimal
|
|
/// </summary>
|
|
/// <param name="value">需要验证的值</param>
|
|
/// <param name="parameterName">字段名称</param>
|
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
|
/// <exception cref="ArgumentException"></exception>
|
|
public static void CheckDecimalIsNull(decimal? value, string parameterName, string ExceptionMessage = "不能为空")
|
|
{
|
|
if (value == null)
|
|
{
|
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public static void CheckIdNo(string idNo)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(idNo))
|
|
{
|
|
throw new Exception("身份证号不能是空值");
|
|
}
|
|
if (idNo.Length != 18)
|
|
throw new Exception("身份证号长度必须为18位");
|
|
|
|
var birthDate = Convert.ToDateTime(idNo.Substring(6, 4) + "-" +
|
|
idNo.Substring(10, 2) + "-" +
|
|
idNo.Substring(12, 2));
|
|
if (birthDate < new DateTime(1880, 1, 1) || birthDate > DateTime.Now.Date)
|
|
{
|
|
throw new Exception("身份证号中的出生日期不正确");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|