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.
574 lines
19 KiB
574 lines
19 KiB
using Microsoft.Extensions.FileSystemGlobbing.Internal;
|
|
using Microsoft.Extensions.FileSystemGlobbing;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp;
|
|
using Shentun.Peis.Models;
|
|
using TencentCloud.Bda.V20200324.Models;
|
|
using Shentun.Peis.Enums;
|
|
|
|
namespace Shentun.Peis
|
|
{
|
|
public static class DataHelper
|
|
{
|
|
/// <summary>
|
|
/// 验证是否为空或者空字符串
|
|
/// </summary>
|
|
/// <param name="obj"></param>
|
|
/// <returns></returns>
|
|
public static bool IsNullOrEmpty(string obj)
|
|
{
|
|
bool msg = false;
|
|
if (string.IsNullOrEmpty(obj))
|
|
{
|
|
msg = true;
|
|
}
|
|
else
|
|
{
|
|
if (obj.Trim() == "")
|
|
{
|
|
msg = true;
|
|
}
|
|
}
|
|
|
|
return msg;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 验证十进制颜色代码是否合规
|
|
/// </summary>
|
|
/// <param name="str"></param>
|
|
/// <returns>格式不正确返回为false</returns>
|
|
public static bool IsColorNumber(int str)
|
|
{
|
|
//0~16777215
|
|
if (str > 16777215 || str < 0)
|
|
return false;
|
|
else
|
|
return true;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 转换guid
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
public static Guid ConvertGuid(Guid? id)
|
|
{
|
|
if (id == null)
|
|
{
|
|
return Guid.Empty;
|
|
}
|
|
else
|
|
{
|
|
return id.Value;
|
|
}
|
|
}
|
|
|
|
/// <summary>将大驼峰命名转为蛇形命名</summary>
|
|
public static string RenameSnakeCase(string str)
|
|
{
|
|
var builder = new StringBuilder();
|
|
var name = str;
|
|
var previousUpper = false;
|
|
|
|
for (var i = 0; i < name.Length; i++)
|
|
{
|
|
var c = name[i];
|
|
if (char.IsUpper(c))
|
|
{
|
|
if (i > 0 && !previousUpper)
|
|
{
|
|
builder.Append("_");
|
|
}
|
|
builder.Append(char.ToLowerInvariant(c));
|
|
previousUpper = true;
|
|
}
|
|
else
|
|
{
|
|
builder.Append(c);
|
|
previousUpper = false;
|
|
}
|
|
}
|
|
return builder.ToString();
|
|
}
|
|
|
|
public static string RenameSnakeCase2(string str)
|
|
{
|
|
return str;
|
|
}
|
|
|
|
|
|
/// <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;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 解析身份证信息
|
|
/// </summary>
|
|
/// <param name="IdNo">身份证号码</param>
|
|
/// <returns></returns>
|
|
public static AutoCardInfo AutoIDCard(string IdNo)
|
|
{
|
|
if (!string.IsNullOrEmpty(IdNo) && (IdNo.Trim().Length == 15 || IdNo.Trim().Length == 18))
|
|
{
|
|
|
|
AutoCardInfo msg = new AutoCardInfo();
|
|
|
|
string birthday = "";
|
|
string sex = "";
|
|
|
|
|
|
string identityCard = IdNo.Trim();
|
|
if (identityCard.Length == 18)
|
|
{
|
|
birthday = identityCard.Substring(6, 4) + "-" + identityCard.Substring(10, 2) + "-" + identityCard.Substring(12, 2);
|
|
sex = identityCard.Substring(14, 3);
|
|
|
|
|
|
|
|
}
|
|
else if (identityCard.Length == 15)
|
|
{
|
|
birthday = "19" + identityCard.Substring(6, 2) + "-" + identityCard.Substring(8, 2) + "-" + identityCard.Substring(10, 2);
|
|
sex = identityCard.Substring(12, 3);
|
|
}
|
|
|
|
try
|
|
{
|
|
DateTime cvdate = Convert.ToDateTime(birthday);
|
|
if (cvdate > DateTime.Now || cvdate < new DateTime(1900, 1, 1))
|
|
{
|
|
return null;
|
|
}
|
|
|
|
if (int.Parse(sex) % 2 == 0)
|
|
{
|
|
msg.SexId = 'F';
|
|
}
|
|
|
|
else
|
|
{
|
|
msg.SexId = 'M';
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
return null;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
short age = 0;
|
|
DateTime dt = Convert.ToDateTime(birthday);
|
|
age = (short)(DateTime.Now.Year - dt.Year);
|
|
if (DateTime.Now.Month < dt.Month || (DateTime.Now.Month == dt.Month && DateTime.Now.Day < dt.Day))
|
|
{
|
|
age--;
|
|
}
|
|
|
|
msg.BirthDate = birthday;
|
|
msg.IdNo = IdNo;
|
|
msg.Age = age;
|
|
|
|
return msg;
|
|
}
|
|
else
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 出生日期转换年龄
|
|
/// </summary>
|
|
/// <param name="birthday">出生日期</param>
|
|
/// <returns></returns>
|
|
public static short? AutoAgeInBirthday(string birthday)
|
|
{
|
|
if (!string.IsNullOrEmpty(birthday))
|
|
{
|
|
short age;
|
|
|
|
try
|
|
{
|
|
DateTime cvdate = Convert.ToDateTime(birthday);
|
|
if (cvdate > DateTime.Now || cvdate < new DateTime(1900, 1, 1))
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
return null;
|
|
}
|
|
|
|
|
|
DateTime dt = Convert.ToDateTime(birthday);
|
|
age = (short)(DateTime.Now.Year - dt.Year);
|
|
if (DateTime.Now.Month < dt.Month || (DateTime.Now.Month == dt.Month && DateTime.Now.Day < dt.Day))
|
|
{
|
|
age--;
|
|
}
|
|
|
|
|
|
return age;
|
|
}
|
|
else
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 年龄转换出生日期
|
|
/// </summary>
|
|
/// <param name="age">年龄</param>
|
|
/// <returns></returns>
|
|
public static string AutoBirthdayInAge(short age)
|
|
{
|
|
string birthday;
|
|
|
|
DateTime now = DateTime.Now;
|
|
birthday = now.AddYears(0 - age).ToString("yyyy-MM-dd");
|
|
|
|
return birthday;
|
|
|
|
}
|
|
/// <summary>
|
|
/// 保留小数 转换decimal
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <param name="decimalLength"></param>
|
|
/// <returns></returns>
|
|
public static decimal DecimalRetainDecimals(decimal? value, int decimalLength)
|
|
{
|
|
decimal newValue = 0;
|
|
if (value != null)
|
|
{
|
|
Math.Round(value.Value, decimalLength);
|
|
}
|
|
return newValue;
|
|
}
|
|
|
|
#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 CheckSex(char value)
|
|
{
|
|
if (value != SexFlag.Male && value != SexFlag.Female && value != SexFlag.UnKnown)
|
|
{
|
|
throw new ArgumentException($"性别参数不正确");
|
|
}
|
|
}
|
|
|
|
public static void CheckForSex(char value)
|
|
{
|
|
if (value != ForSexFlag.Male && value != ForSexFlag.Female && value != ForSexFlag.All)
|
|
{
|
|
throw new UserFriendlyException($"性别参数不正确");
|
|
}
|
|
}
|
|
|
|
public static void CheckMaritalStatus(char value)
|
|
{
|
|
if (value != MaritalStatusFlag.UnMarried && value != MaritalStatusFlag.Married &&
|
|
value != MaritalStatusFlag.Divorce && value != MaritalStatusFlag.Widowed &&
|
|
value != MaritalStatusFlag.DivorceOrWidowed &&
|
|
value != MaritalStatusFlag.UnKnown)
|
|
{
|
|
throw new UserFriendlyException($"婚姻状况参数不正确");
|
|
}
|
|
}
|
|
|
|
public static void CheckForMaritalStatus(char value)
|
|
{
|
|
if (value != MaritalStatusFlag.UnMarried && value != MaritalStatusFlag.Married &&
|
|
value != MaritalStatusFlag.All)
|
|
{
|
|
throw new UserFriendlyException($"婚姻状况参数不正确");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|