From 56538e602b927c232ac5b991ef84175edd2ce3ce Mon Sep 17 00:00:00 2001
From: xiazhengtongxue <133085197+xiazhengtongxue@users.noreply.github.com>
Date: 星期五, 24 四月 2026 14:20:20 +0800
Subject: [PATCH] feat(WMS/WCS): 增加机器人历史信息记录 fix(WMS/WCS): 修复前端bug

---
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/UtilConvert.cs | 1122 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 561 insertions(+), 561 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/UtilConvert.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/UtilConvert.cs
index 91731e2..d5b451a 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/UtilConvert.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/UtilConvert.cs
@@ -1,562 +1,562 @@
-锘縰sing Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Threading.Tasks;
-using WIDESEAWCS_Core.Const;
-using WIDESEAWCS_Core.Enums;
-
-namespace WIDESEAWCS_Core.Helper
-{
-    public static class UtilConvert
-    {
-        private static DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0);
-
-        private static long longTime = 621355968000000000;
-
-        private static int samllTime = 10000000;
-        
-        /// <summary>
-        /// 灏嗘椂闂存埑杞崲涓烘湰鍦版棩鏈熸椂闂�
-        /// </summary>
-        /// <param name="timeStamp">瑕佽浆鎹㈢殑鏃堕棿鎴冲璞�</param>
-        /// <returns>杞崲鍚庣殑鏈湴DateTime瀵硅薄</returns>
-        /// <remarks>濡傛灉鍙傛暟涓簄ull锛屽垯杩斿洖榛樿璧峰鏃ユ湡</remarks>
-        public static DateTime GetTimeSpmpToDate(this object timeStamp)
-        {
-            if (timeStamp == null) return dateStart;
-            DateTime dateTime = new DateTime(longTime + Convert.ToInt64(timeStamp) * samllTime, DateTimeKind.Utc).ToLocalTime();
-            return dateTime;
-        }
-
-        /// <summary>
-        /// 灏嗗璞″簭鍒楀寲涓篔SON瀛楃涓�
-        /// </summary>
-        /// <param name="obj">瑕佸簭鍒楀寲鐨勫璞�</param>
-        /// <param name="formatDate">鏃ユ湡鏍煎紡鍖栬缃紝榛樿涓�"yyyy-MM-dd HH:mm:ss"鏍煎紡</param>
-        /// <returns>搴忓垪鍖栧悗鐨凧SON瀛楃涓诧紝濡傛灉瀵硅薄涓簄ull鍒欒繑鍥瀗ull</returns>
-        public static string Serialize(this object obj, JsonSerializerSettings formatDate = null)
-        {
-            if (obj == null) return null;
-            formatDate = formatDate ?? new JsonSerializerSettings
-            {
-                DateFormatString = "yyyy-MM-dd HH:mm:ss"
-            };
-            return JsonConvert.SerializeObject(obj, formatDate);
-        }
-
-        /// <summary>
-        /// 灏咼SON瀛楃涓插弽搴忓垪鍖栦负鎸囧畾绫诲瀷鐨勫璞�
-        /// </summary>
-        /// <typeparam name="T">鐩爣瀵硅薄绫诲瀷</typeparam>
-        /// <param name="json">瑕佸弽搴忓垪鍖栫殑JSON瀛楃涓�</param>
-        /// <returns>鍙嶅簭鍒楀寲鍚庣殑瀵硅薄瀹炰緥锛屽鏋滆緭鍏ヤ负绌哄垯杩斿洖榛樿鍊�</returns>
-        /// <remarks>
-        /// 褰撹緭鍏ヤ负"{}"鏃朵細鑷姩杞崲涓�"[]"澶勭悊
-        /// </remarks>
-        public static T DeserializeObject<T>(this string json)
-        {
-            if (string.IsNullOrEmpty(json))
-            {
-                return default(T);
-            }
-            if (json == "{}")
-            {
-                json = "[]";
-            }
-            return JsonConvert.DeserializeObject<T>(json);
-        }
-
-        /// <summary>
-        /// 灏嗗瓧绗︿覆鐨勯瀛楁瘝杞崲涓哄皬鍐�
-        /// </summary>
-        /// <param name="thisValue">瑕佸鐞嗙殑瀛楃涓�</param>
-        /// <returns>棣栧瓧姣嶅皬鍐欑殑瀛楃涓诧紝鑻ヨ緭鍏ヤ负绌哄垯杩斿洖绌哄瓧绗︿覆</returns>
-        public static string FirstLetterToLower(this string thisValue)
-        {
-            if (string.IsNullOrEmpty(thisValue)) return string.Empty;
-            string result = thisValue.Substring(0, 1).ToLower() + thisValue.Substring(1, thisValue.Length - 1);
-            return result;
-        }
-
-        /// <summary>
-        /// 灏嗗瓧绗︿覆鐨勯瀛楁瘝杞崲涓哄ぇ鍐�
-        /// </summary>
-        /// <param name="thisValue">瑕佸鐞嗙殑瀛楃涓�</param>
-        /// <returns>棣栧瓧姣嶅ぇ鍐欑殑瀛楃涓诧紝鑻ヨ緭鍏ヤ负绌哄垯杩斿洖绌哄瓧绗︿覆</returns>
-        public static string FirstLetterToUpper(this string thisValue)
-        {
-            if (string.IsNullOrEmpty(thisValue)) return string.Empty;
-            string result = thisValue.Substring(0, 1).ToUpper() + thisValue.Substring(1, thisValue.Length - 1);
-            return result;
-        }
-
-        /// <summary>
-        /// 灏嗗璞¤浆鎹负鏁村瀷鍊�
-        /// </summary>
-        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
-        /// <returns>杞崲鍚庣殑鏁村瀷鍊硷紝杞崲澶辫触杩斿洖0</returns>
-        /// <remarks>
-        /// 鏀寔澶勭悊null鍊笺�丏BNull.Value鍜屾灇涓剧被鍨�
-        /// </remarks>
-        public static int ObjToInt(this object thisValue)
-        {
-            int reval = 0;
-            if (thisValue == null) return 0;
-            if (thisValue is Enum && thisValue != DBNull.Value && Enum.TryParse(thisValue.GetType(), thisValue.ToString(), out var val))
-            {
-                return Convert.ToInt32(val.ChangeType(typeof(int)));
-            }
-            if (thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
-            {
-                return reval;
-            }
-
-            return reval;
-        }
-
-        /// <summary>
-        /// 灏嗗弻绮惧害娴偣鏁拌浆鎹负32浣嶆湁绗﹀彿鏁存暟
-        /// </summary>
-        /// <param name="thisValue">瑕佽浆鎹㈢殑鍙岀簿搴︽诞鐐规暟</param>
-        /// <returns>杞崲鍚庣殑32浣嶆湁绗﹀彿鏁存暟</returns>
-        public static int DoubleToInt(this double thisValue)
-        {
-            int reval = 0;
-
-            return Convert.ToInt32(thisValue);
-        }
-
-        /// <summary>
-        /// 灏嗗璞¤浆鎹负鏁存暟锛岃嫢杞崲澶辫触鍒欒繑鍥炴寚瀹氱殑閿欒鍊�
-        /// </summary>
-        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
-        /// <param name="errorValue">杞崲澶辫触鏃惰繑鍥炵殑閿欒鍊�</param>
-        /// <returns>杞崲鍚庣殑鏁存暟鍊兼垨鎸囧畾鐨勯敊璇��</returns>
-        public static int ObjToInt(this object thisValue, int errorValue)
-        {
-            int reval = 0;
-            if (thisValue != null && thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
-            {
-                return reval;
-            }
-
-            return errorValue;
-        }
-
-        /// <summary>
-        /// 灏嗗璞¤浆鎹负闀挎暣鍨�(long)
-        /// </summary>
-        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
-        /// <returns>杞崲鍚庣殑闀挎暣鍨嬪�硷紝杞崲澶辫触鎴栦负null鏃惰繑鍥�0</returns>
-        /// <remarks>
-        /// 澶勭悊DBNull.Value鎯呭喌锛屽苟灏濊瘯灏嗗璞¤浆鎹负long绫诲瀷
-        /// </remarks>
-        public static long ObjToLong(this object thisValue)
-        {
-            long reval = 0;
-            if (thisValue == null) return 0;
-            if (thisValue != DBNull.Value && long.TryParse(thisValue.ToString(), out reval))
-            {
-                return reval;
-            }
-
-            return reval;
-        }
-
-        /// <summary>
-        /// 灏嗗璞¤浆鎹负閲戦(double绫诲瀷)銆傝嫢杞崲澶辫触鍒欒繑鍥�0銆�
-        /// </summary>
-        /// <param name="thisValue">寰呰浆鎹㈢殑瀵硅薄</param>
-        /// <returns>杞崲鍚庣殑閲戦鍊硷紝澶辫触杩斿洖0</returns>
-        public static double ObjToMoney(this object thisValue)
-        {
-            double reval = 0;
-            if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
-            {
-                return reval;
-            }
-
-            return 0;
-        }
-
-        /// <summary>
-        /// 灏嗗璞¤浆鎹负閲戦(double)绫诲瀷锛岃浆鎹㈠け璐ユ椂杩斿洖鎸囧畾鐨勯敊璇��
-        /// </summary>
-        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
-        /// <param name="errorValue">杞崲澶辫触鏃惰繑鍥炵殑榛樿鍊�</param>
-        /// <returns>杞崲鎴愬姛鐨刣ouble鍊兼垨鎸囧畾鐨勯敊璇��</returns>
-        public static double ObjToMoney(this object thisValue, double errorValue)
-        {
-            double reval = 0;
-            if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
-            {
-                return reval;
-            }
-
-            return errorValue;
-        }
-
-        /// <summary>
-        /// 灏嗗璞¤浆鎹负瀛楃涓诧紝鑻ュ璞′负null鍒欒繑鍥炵┖瀛楃涓�
-        /// </summary>
-        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
-        /// <returns>鍘婚櫎鍓嶅悗绌烘牸鐨勫瓧绗︿覆缁撴灉</returns>
-        public static string ObjToString(this object thisValue)
-        {
-            if (thisValue != null) return thisValue.ToString().Trim();
-            return "";
-        }
-
-        /// <summary>
-        /// 鍒ゆ柇瀵硅薄鏄惁涓嶄负绌烘垨null鍊�
-        /// </summary>
-        /// <param name="thisValue">瑕佸垽鏂殑瀵硅薄</param>
-        /// <returns>褰撳璞′笉涓虹┖涓斾笉绛変簬"undefined"鎴�"null"瀛楃涓叉椂杩斿洖true锛屽惁鍒欒繑鍥瀎alse</returns>
-        public static bool IsNotEmptyOrNull(this object thisValue)
-        {
-            return ObjToString(thisValue) != "" && ObjToString(thisValue) != "undefined" && ObjToString(thisValue) != "null";
-        }
-
-        /// <summary>
-        /// 灏嗗璞¤浆鎹负瀛楃涓诧紝濡傛灉瀵硅薄涓簄ull鍒欒繑鍥炴寚瀹氱殑閿欒鍊�
-        /// </summary>
-        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
-        /// <param name="errorValue">褰撳璞′负null鏃惰繑鍥炵殑鍊�</param>
-        /// <returns>瀵硅薄鐨勫瓧绗︿覆琛ㄧず鎴栨寚瀹氱殑閿欒鍊�</returns>
-        public static string ObjToString(this object thisValue, string errorValue)
-        {
-            if (thisValue != null) return thisValue.ToString().Trim();
-            return errorValue;
-        }
-
-        /// <summary>
-        /// 鍒ゆ柇瀵硅薄鏄惁涓簄ull銆丏BNull鎴栫┖瀛楃涓�
-        /// </summary>
-        /// <param name="thisValue">瑕佹鏌ョ殑瀵硅薄</param>
-        /// <returns>濡傛灉瀵硅薄涓簄ull銆丏BNull鎴栫┖瀛楃涓插垯杩斿洖true锛屽惁鍒欒繑鍥瀎alse</returns>
-        public static bool IsNullOrEmpty(this object thisValue) => thisValue == null || thisValue == DBNull.Value || string.IsNullOrWhiteSpace(thisValue.ToString());
-
-        /// <summary>
-        /// 灏嗗璞¤浆鎹负Decimal绫诲瀷
-        /// </summary>
-        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
-        /// <returns>杞崲鍚庣殑Decimal鍊硷紝杞崲澶辫触杩斿洖0</returns>
-        public static Decimal ObjToDecimal(this object thisValue)
-        {
-            Decimal reval = 0;
-            if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
-            {
-                return reval;
-            }
-
-            return 0;
-        }
-
-        /// <summary>
-        /// 灏嗗璞¤浆鎹负Decimal绫诲瀷锛岃嫢杞崲澶辫触鍒欒繑鍥炴寚瀹氱殑榛樿鍊�
-        /// </summary>
-        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
-        /// <param name="errorValue">杞崲澶辫触鏃惰繑鍥炵殑榛樿鍊�</param>
-        /// <returns>杞崲鎴愬姛鐨凞ecimal鍊兼垨鎸囧畾鐨勯粯璁ゅ��</returns>
-        public static Decimal ObjToDecimal(this object thisValue, decimal errorValue)
-        {
-            Decimal reval = 0;
-            if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
-            {
-                return reval;
-            }
-
-            return errorValue;
-        }
-
-        /// <summary>
-        /// 灏嗗璞¤浆鎹负DateTime绫诲瀷
-        /// </summary>
-        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
-        /// <returns>杞崲鍚庣殑DateTime鍊硷紝杞崲澶辫触杩斿洖DateTime.MinValue</returns>
-        public static DateTime ObjToDate(this object thisValue)
-        {
-            DateTime reval = DateTime.MinValue;
-            if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
-            {
-                reval = Convert.ToDateTime(thisValue);
-            }
-
-            return reval;
-        }
-
-        /// <summary>
-        /// 灏嗗璞¤浆鎹负DateTime绫诲瀷锛岃浆鎹㈠け璐ユ椂杩斿洖鎸囧畾鐨勯粯璁ゅ��
-        /// </summary>
-        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
-        /// <param name="errorValue">杞崲澶辫触鏃惰繑鍥炵殑榛樿鍊�</param>
-        /// <returns>杞崲鎴愬姛鐨凞ateTime鍊兼垨鎸囧畾鐨勯粯璁ゅ��</returns>
-        public static DateTime ObjToDate(this object thisValue, DateTime errorValue)
-        {
-            DateTime reval = DateTime.MinValue;
-            if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
-            {
-                return reval;
-            }
-
-            return errorValue;
-        }
-
-        /// <summary>
-        /// 灏嗗璞¤浆鎹负甯冨皵鍊�
-        /// </summary>
-        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
-        /// <returns>杞崲鍚庣殑甯冨皵鍊硷紝杞崲澶辫触鏃惰繑鍥瀎alse</returns>
-        public static bool ObjToBool(this object thisValue)
-        {
-            bool reval = false;
-            if (thisValue != null && thisValue != DBNull.Value && bool.TryParse(thisValue.ToString(), out reval))
-            {
-                return reval;
-            }
-
-            return reval;
-        }
-
-        /// <summary>
-        /// 灏咲ateTime杞崲涓篣nix鏃堕棿鎴筹紙绉掔骇锛�
-        /// </summary>
-        /// <param name="thisValue">闇�瑕佽浆鎹㈢殑DateTime瀵硅薄</param>
-        /// <returns>杩斿洖琛ㄧずUnix鏃堕棿鎴崇殑瀛楃涓�</returns>
-        public static string DateToTimeStamp(this DateTime thisValue)
-        {
-            TimeSpan ts = thisValue - new DateTime(1970, 1, 1, 0, 0, 0, 0);
-            return Convert.ToInt64(ts.TotalSeconds).ToString();
-        }
-
-        /// <summary>
-        /// 灏嗗璞¤浆鎹负鎸囧畾绫诲瀷
-        /// </summary>
-        /// <param name="value">瑕佽浆鎹㈢殑瀵硅薄</param>
-        /// <param name="type">鐩爣绫诲瀷</param>
-        /// <returns>杞崲鍚庣殑瀵硅薄</returns>
-        /// <remarks>
-        /// 鏀寔澶勭悊null鍊笺�佹灇涓剧被鍨嬨�佹硾鍨嬬被鍨嬨�丟uid銆乂ersion绛夌壒娈婄被鍨嬬殑杞崲銆�
-        /// 濡傛灉杞崲澶辫触鎴栫被鍨嬩笉鍖归厤锛屽皢杩斿洖鍘熷鍊兼垨鎶涘嚭寮傚父銆�
-        /// </remarks>
-        public static object ChangeType(this object value, Type type)
-        {
-            if (value == null && type.IsGenericType) return Activator.CreateInstance(type);
-            if (value == null) return null;
-            if (type == value.GetType()) return value;
-            if (type.IsEnum)
-            {
-                if (value is string)
-                    return Enum.Parse(type, value as string);
-                else
-                    return Enum.ToObject(type, value);
-            }
-
-            if (!type.IsInterface && type.IsGenericType)
-            {
-                Type innerType = type.GetGenericArguments()[0];
-                object innerValue = ChangeType(value, innerType);
-                return Activator.CreateInstance(type, new object[] { innerValue });
-            }
-
-            if (value is string && type == typeof(Guid)) return new Guid(value as string);
-            if (value is string && type == typeof(Version)) return new Version(value as string);
-            if (!(value is IConvertible)) return value;
-            return Convert.ChangeType(value, type);
-        }
-
-        /// <summary>
-        /// 灏嗗璞″�艰浆鎹负鎸囧畾绫诲瀷鐨勬硾鍨嬪垪琛ㄣ��
-        /// </summary>
-        /// <param name="value">寰呰浆鎹㈢殑瀵硅薄鍊�</param>
-        /// <param name="type">鐩爣鍒楄〃鍏冪礌绫诲瀷</param>
-        /// <returns>杞崲鍚庣殑娉涘瀷鍒楄〃瀵硅薄锛岃嫢杈撳叆涓簄ull鍒欒繑鍥為粯璁ゅ��</returns>
-        /// <remarks>
-        /// 鏀寔澶勭悊浠ユ嫭鍙峰寘瑁圭殑瀛楃涓叉牸寮忥紙濡�"(1,2,3)"鎴�"("a","b")"锛夛紝
-        /// 鑷姩鍘婚櫎鍒嗛殧绗﹀苟灏嗗厓绱犺浆鎹负鐩爣绫诲瀷鍚庢坊鍔犲埌鍒楄〃銆�
-        /// </remarks>
-        public static object ChangeTypeList(this object value, Type type)
-        {
-            if (value == null) return default;
-
-            var gt = typeof(List<>).MakeGenericType(type);
-            dynamic lis = Activator.CreateInstance(gt);
-
-            var addMethod = gt.GetMethod("Add");
-            string values = value.ToString();
-            if (values != null && values.StartsWith("(") && values.EndsWith(")"))
-            {
-                string[] splits;
-                if (values.Contains("\",\""))
-                {
-                    splits = values.Remove(values.Length - 2, 2)
-                        .Remove(0, 2)
-                        .Split("\",\"");
-                }
-                else
-                {
-                    splits = values.Remove(0, 1)
-                        .Remove(values.Length - 2, 1)
-                        .Split(",");
-                }
-
-                foreach (var split in splits)
-                {
-                    var str = split;
-                    if (split.StartsWith("\"") && split.EndsWith("\""))
-                    {
-                        str = split.Remove(0, 1)
-                            .Remove(split.Length - 2, 1);
-                    }
-
-                    addMethod.Invoke(lis, new object[] { ChangeType(str, type) });
-                }
-            }
-
-            return lis;
-        }
-
-        /// <summary>
-        /// 灏嗗璞″簭鍒楀寲涓篔SON瀛楃涓�
-        /// </summary>
-        /// <param name="value">瑕佸簭鍒楀寲鐨勫璞�</param>
-        /// <returns>瀵硅薄鐨凧SON瀛楃涓茶〃绀�</returns>
-        public static string ToJson(this object value)
-        {
-            return JsonConvert.SerializeObject(value);
-        }
-
-        /// <summary>
-        /// 鍒ゆ柇瀵硅薄鏄惁鍙互杞崲涓烘暣鏁�
-        /// </summary>
-        /// <param name="obj">瑕佸垽鏂殑瀵硅薄</param>
-        /// <returns>濡傛灉鍙互杞崲涓烘暣鏁拌繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse</returns>
-        public static bool IsInt(this object obj)
-        {
-            if (obj == null)
-                return false;
-            bool reslut = Int32.TryParse(obj.ToString(), out int _number);
-            return reslut;
-
-        }
-        
-        /// <summary>
-        /// 鍒ゆ柇瀵硅薄鏄惁涓烘湁鏁堟棩鏈熸牸寮�
-        /// </summary>
-        /// <param name="str">寰呮娴嬬殑瀵硅薄</param>
-        /// <returns>true琛ㄧず鏄湁鏁堟棩鏈燂紝false鍒欎笉鏄�</returns>
-        /// <remarks>姝ゆ柟娉曟槸鎵╁睍鏂规硶锛岄�氳繃璋冪敤IsDate(out _)瀹炵幇</remarks>
-        public static bool IsDate(this object str)
-        {
-            return str.IsDate(out _);
-        }
-        
-        /// <summary>
-        /// 鍒ゆ柇瀵硅薄鏄惁鍙互杞崲涓烘湁鏁堢殑鏃ユ湡鏃堕棿
-        /// </summary>
-        /// <param name="str">瑕佸垽鏂殑瀵硅薄</param>
-        /// <param name="dateTime">杈撳嚭杞崲鍚庣殑鏃ユ湡鏃堕棿鍊�</param>
-        /// <returns>濡傛灉杞崲鎴愬姛杩斿洖true锛屽惁鍒欒繑鍥瀎alse</returns>
-        public static bool IsDate(this object str, out DateTime dateTime)
-        {
-            dateTime = DateTime.Now;
-            if (str == null || str.ToString() == "")
-            {
-                return false;
-            }
-            return DateTime.TryParse(str.ToString(), out dateTime);
-        }
-
-        /// <summary>
-        /// 鍒ゆ柇瀛楃涓叉槸鍚﹀彲浠ヨ浆鎹负鏁板瓧
-        /// </summary>
-        /// <param name="str">瑕佹鏌ョ殑瀛楃涓�</param>
-        /// <param name="formatString">鏍煎紡瀛楃涓诧紙鏈娇鐢級</param>
-        /// <returns>濡傛灉瀛楃涓插彲浠ヨ浆鎹负鏁板瓧鍒欒繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse</returns>
-        /// <remarks>
-        /// 浣跨敤姝e垯琛ㄨ揪寮忛獙璇佸瓧绗︿覆鏄惁涓烘暟瀛楁牸寮忥紝鏀寔姝h礋鍙峰拰灏忔暟鐐�
-        /// </remarks>
-        public static bool IsNumber(this string str, string formatString)
-        {
-            if (string.IsNullOrEmpty(str)) return false;
-
-            return Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$");
-        }
-
-        /// <summary>
-        /// 鍒ゆ柇瀛楃涓叉槸鍚︿负鏈夋晥鐨凣uid鏍煎紡
-        /// </summary>
-        /// <param name="guid">瑕侀獙璇佺殑瀛楃涓�</param>
-        /// <returns>濡傛灉瀛楃涓叉槸鏈夋晥鐨凣uid鏍煎紡鍒欒繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse</returns>
-        public static bool IsGuid(this string guid)
-        {
-            Guid newId;
-            return guid.GetGuid(out newId);
-        }
-
-        /// <summary>
-        /// 灏嗗瓧绗︿覆杞崲涓篏uid绫诲瀷
-        /// </summary>
-        /// <param name="guid">瑕佽浆鎹㈢殑瀛楃涓�</param>
-        /// <param name="outId">杈撳嚭杞崲鍚庣殑Guid</param>
-        /// <returns>杞崲鎴愬姛杩斿洖true锛屽惁鍒欒繑鍥瀎alse</returns>
-        public static bool GetGuid(this string guid, out Guid outId)
-        {
-            Guid emptyId = Guid.Empty;
-            return Guid.TryParse(guid, out outId);
-        }
-
-        /// <summary>
-        /// 灏嗗瓧绗︿覆绫诲瀷鐨勬潯浠惰浆鎹负瀵瑰簲鐨凩inq琛ㄨ揪寮忕被鍨�
-        /// </summary>
-        /// <param name="stringType">琛ㄧず鏉′欢鐨勫瓧绗︿覆</param>
-        /// <returns>瀵瑰簲鐨凩inq琛ㄨ揪寮忕被鍨嬫灇涓惧��</returns>
-        /// <remarks>
-        /// 璇ユ柟娉曠敤浜庡皢鍓嶇浼犻�掔殑鏉′欢瀛楃涓叉槧灏勪负鍚庣Linq鏌ヨ浣跨敤鐨勮〃杈惧紡绫诲瀷锛�
-        /// 鏀寔鍖呭惈銆佸ぇ浜庣瓑浜庛�佸皬浜庣瓑浜庛�佸ぇ浜庛�佸皬浜庛�佹ā绯婂尮閰嶇瓑甯歌鏉′欢绫诲瀷锛�
-        /// 榛樿杩斿洖绛変簬(Equal)绫诲瀷
-        /// </remarks>
-        public static LinqExpressionType GetLinqCondition(this string stringType)
-        {
-            LinqExpressionType linqExpression;
-            switch (stringType)
-            {
-                case HtmlElementType.Contains:
-                case HtmlElementType.selectlist:
-                case nameof(HtmlElementType.Contains):
-                    linqExpression = LinqExpressionType.In;
-                    break;
-                case HtmlElementType.ThanOrEqual:
-                case nameof(HtmlElementType.ThanOrEqual):
-                case HtmlElementType.thanorequal:
-                    linqExpression = LinqExpressionType.ThanOrEqual;
-                    break;
-                case HtmlElementType.LessOrEqual:
-                case nameof(HtmlElementType.LessOrEqual):
-                case HtmlElementType.lessorequal:
-                    linqExpression = LinqExpressionType.LessThanOrEqual;
-                    break;
-                case HtmlElementType.GT:
-                case nameof(HtmlElementType.GT):
-                    linqExpression = LinqExpressionType.GreaterThan;
-                    break;
-                case HtmlElementType.lt:
-                    linqExpression = LinqExpressionType.LessThan;
-                    break;
-                case HtmlElementType.like:
-                    linqExpression = LinqExpressionType.Contains;
+锘縰sing Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.Const;
+using WIDESEAWCS_Core.Enums;
+
+namespace WIDESEAWCS_Core.Helper
+{
+    public static class UtilConvert
+    {
+        private static DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0);
+
+        private static long longTime = 621355968000000000;
+
+        private static int samllTime = 10000000;
+        
+        /// <summary>
+        /// 灏嗘椂闂存埑杞崲涓烘湰鍦版棩鏈熸椂闂�
+        /// </summary>
+        /// <param name="timeStamp">瑕佽浆鎹㈢殑鏃堕棿鎴冲璞�</param>
+        /// <returns>杞崲鍚庣殑鏈湴DateTime瀵硅薄</returns>
+        /// <remarks>濡傛灉鍙傛暟涓簄ull锛屽垯杩斿洖榛樿璧峰鏃ユ湡</remarks>
+        public static DateTime GetTimeSpmpToDate(this object timeStamp)
+        {
+            if (timeStamp == null) return dateStart;
+            DateTime dateTime = new DateTime(longTime + Convert.ToInt64(timeStamp) * samllTime, DateTimeKind.Utc).ToLocalTime();
+            return dateTime;
+        }
+
+        /// <summary>
+        /// 灏嗗璞″簭鍒楀寲涓篔SON瀛楃涓�
+        /// </summary>
+        /// <param name="obj">瑕佸簭鍒楀寲鐨勫璞�</param>
+        /// <param name="formatDate">鏃ユ湡鏍煎紡鍖栬缃紝榛樿涓�"yyyy-MM-dd HH:mm:ss"鏍煎紡</param>
+        /// <returns>搴忓垪鍖栧悗鐨凧SON瀛楃涓诧紝濡傛灉瀵硅薄涓簄ull鍒欒繑鍥瀗ull</returns>
+        public static string Serialize(this object obj, JsonSerializerSettings formatDate = null)
+        {
+            if (obj == null) return null;
+            formatDate = formatDate ?? new JsonSerializerSettings
+            {
+                DateFormatString = "yyyy-MM-dd HH:mm:ss"
+            };
+            return JsonConvert.SerializeObject(obj, formatDate);
+        }
+
+        /// <summary>
+        /// 灏咼SON瀛楃涓插弽搴忓垪鍖栦负鎸囧畾绫诲瀷鐨勫璞�
+        /// </summary>
+        /// <typeparam name="T">鐩爣瀵硅薄绫诲瀷</typeparam>
+        /// <param name="json">瑕佸弽搴忓垪鍖栫殑JSON瀛楃涓�</param>
+        /// <returns>鍙嶅簭鍒楀寲鍚庣殑瀵硅薄瀹炰緥锛屽鏋滆緭鍏ヤ负绌哄垯杩斿洖榛樿鍊�</returns>
+        /// <remarks>
+        /// 褰撹緭鍏ヤ负"{}"鏃朵細鑷姩杞崲涓�"[]"澶勭悊
+        /// </remarks>
+        public static T DeserializeObject<T>(this string json)
+        {
+            if (string.IsNullOrEmpty(json))
+            {
+                return default(T);
+            }
+            if (json == "{}")
+            {
+                json = "[]";
+            }
+            return JsonConvert.DeserializeObject<T>(json);
+        }
+
+        /// <summary>
+        /// 灏嗗瓧绗︿覆鐨勯瀛楁瘝杞崲涓哄皬鍐�
+        /// </summary>
+        /// <param name="thisValue">瑕佸鐞嗙殑瀛楃涓�</param>
+        /// <returns>棣栧瓧姣嶅皬鍐欑殑瀛楃涓诧紝鑻ヨ緭鍏ヤ负绌哄垯杩斿洖绌哄瓧绗︿覆</returns>
+        public static string FirstLetterToLower(this string thisValue)
+        {
+            if (string.IsNullOrEmpty(thisValue)) return string.Empty;
+            string result = thisValue.Substring(0, 1).ToLower() + thisValue.Substring(1, thisValue.Length - 1);
+            return result;
+        }
+
+        /// <summary>
+        /// 灏嗗瓧绗︿覆鐨勯瀛楁瘝杞崲涓哄ぇ鍐�
+        /// </summary>
+        /// <param name="thisValue">瑕佸鐞嗙殑瀛楃涓�</param>
+        /// <returns>棣栧瓧姣嶅ぇ鍐欑殑瀛楃涓诧紝鑻ヨ緭鍏ヤ负绌哄垯杩斿洖绌哄瓧绗︿覆</returns>
+        public static string FirstLetterToUpper(this string thisValue)
+        {
+            if (string.IsNullOrEmpty(thisValue)) return string.Empty;
+            string result = thisValue.Substring(0, 1).ToUpper() + thisValue.Substring(1, thisValue.Length - 1);
+            return result;
+        }
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负鏁村瀷鍊�
+        /// </summary>
+        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
+        /// <returns>杞崲鍚庣殑鏁村瀷鍊硷紝杞崲澶辫触杩斿洖0</returns>
+        /// <remarks>
+        /// 鏀寔澶勭悊null鍊笺�丏BNull.Value鍜屾灇涓剧被鍨�
+        /// </remarks>
+        public static int ObjToInt(this object thisValue)
+        {
+            int reval = 0;
+            if (thisValue == null) return 0;
+            if (thisValue is Enum && thisValue != DBNull.Value && Enum.TryParse(thisValue.GetType(), thisValue.ToString(), out var val))
+            {
+                return Convert.ToInt32(val.ChangeType(typeof(int)));
+            }
+            if (thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return reval;
+        }
+
+        /// <summary>
+        /// 灏嗗弻绮惧害娴偣鏁拌浆鎹负32浣嶆湁绗﹀彿鏁存暟
+        /// </summary>
+        /// <param name="thisValue">瑕佽浆鎹㈢殑鍙岀簿搴︽诞鐐规暟</param>
+        /// <returns>杞崲鍚庣殑32浣嶆湁绗﹀彿鏁存暟</returns>
+        public static int DoubleToInt(this double thisValue)
+        {
+            int reval = 0;
+
+            return Convert.ToInt32(thisValue);
+        }
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负鏁存暟锛岃嫢杞崲澶辫触鍒欒繑鍥炴寚瀹氱殑閿欒鍊�
+        /// </summary>
+        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
+        /// <param name="errorValue">杞崲澶辫触鏃惰繑鍥炵殑閿欒鍊�</param>
+        /// <returns>杞崲鍚庣殑鏁存暟鍊兼垨鎸囧畾鐨勯敊璇��</returns>
+        public static int ObjToInt(this object thisValue, int errorValue)
+        {
+            int reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return errorValue;
+        }
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负闀挎暣鍨�(long)
+        /// </summary>
+        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
+        /// <returns>杞崲鍚庣殑闀挎暣鍨嬪�硷紝杞崲澶辫触鎴栦负null鏃惰繑鍥�0</returns>
+        /// <remarks>
+        /// 澶勭悊DBNull.Value鎯呭喌锛屽苟灏濊瘯灏嗗璞¤浆鎹负long绫诲瀷
+        /// </remarks>
+        public static long ObjToLong(this object thisValue)
+        {
+            long reval = 0;
+            if (thisValue == null) return 0;
+            if (thisValue != DBNull.Value && long.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return reval;
+        }
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负閲戦(double绫诲瀷)銆傝嫢杞崲澶辫触鍒欒繑鍥�0銆�
+        /// </summary>
+        /// <param name="thisValue">寰呰浆鎹㈢殑瀵硅薄</param>
+        /// <returns>杞崲鍚庣殑閲戦鍊硷紝澶辫触杩斿洖0</returns>
+        public static double ObjToMoney(this object thisValue)
+        {
+            double reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return 0;
+        }
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负閲戦(double)绫诲瀷锛岃浆鎹㈠け璐ユ椂杩斿洖鎸囧畾鐨勯敊璇��
+        /// </summary>
+        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
+        /// <param name="errorValue">杞崲澶辫触鏃惰繑鍥炵殑榛樿鍊�</param>
+        /// <returns>杞崲鎴愬姛鐨刣ouble鍊兼垨鎸囧畾鐨勯敊璇��</returns>
+        public static double ObjToMoney(this object thisValue, double errorValue)
+        {
+            double reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return errorValue;
+        }
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负瀛楃涓诧紝鑻ュ璞′负null鍒欒繑鍥炵┖瀛楃涓�
+        /// </summary>
+        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
+        /// <returns>鍘婚櫎鍓嶅悗绌烘牸鐨勫瓧绗︿覆缁撴灉</returns>
+        public static string ObjToString(this object thisValue)
+        {
+            if (thisValue != null) return thisValue.ToString().Trim();
+            return "";
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇瀵硅薄鏄惁涓嶄负绌烘垨null鍊�
+        /// </summary>
+        /// <param name="thisValue">瑕佸垽鏂殑瀵硅薄</param>
+        /// <returns>褰撳璞′笉涓虹┖涓斾笉绛変簬"undefined"鎴�"null"瀛楃涓叉椂杩斿洖true锛屽惁鍒欒繑鍥瀎alse</returns>
+        public static bool IsNotEmptyOrNull(this object thisValue)
+        {
+            return ObjToString(thisValue) != "" && ObjToString(thisValue) != "undefined" && ObjToString(thisValue) != "null";
+        }
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负瀛楃涓诧紝濡傛灉瀵硅薄涓簄ull鍒欒繑鍥炴寚瀹氱殑閿欒鍊�
+        /// </summary>
+        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
+        /// <param name="errorValue">褰撳璞′负null鏃惰繑鍥炵殑鍊�</param>
+        /// <returns>瀵硅薄鐨勫瓧绗︿覆琛ㄧず鎴栨寚瀹氱殑閿欒鍊�</returns>
+        public static string ObjToString(this object thisValue, string errorValue)
+        {
+            if (thisValue != null) return thisValue.ToString().Trim();
+            return errorValue;
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇瀵硅薄鏄惁涓簄ull銆丏BNull鎴栫┖瀛楃涓�
+        /// </summary>
+        /// <param name="thisValue">瑕佹鏌ョ殑瀵硅薄</param>
+        /// <returns>濡傛灉瀵硅薄涓簄ull銆丏BNull鎴栫┖瀛楃涓插垯杩斿洖true锛屽惁鍒欒繑鍥瀎alse</returns>
+        public static bool IsNullOrEmpty(this object thisValue) => thisValue == null || thisValue == DBNull.Value || string.IsNullOrWhiteSpace(thisValue.ToString());
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负Decimal绫诲瀷
+        /// </summary>
+        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
+        /// <returns>杞崲鍚庣殑Decimal鍊硷紝杞崲澶辫触杩斿洖0</returns>
+        public static Decimal ObjToDecimal(this object thisValue)
+        {
+            Decimal reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return 0;
+        }
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负Decimal绫诲瀷锛岃嫢杞崲澶辫触鍒欒繑鍥炴寚瀹氱殑榛樿鍊�
+        /// </summary>
+        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
+        /// <param name="errorValue">杞崲澶辫触鏃惰繑鍥炵殑榛樿鍊�</param>
+        /// <returns>杞崲鎴愬姛鐨凞ecimal鍊兼垨鎸囧畾鐨勯粯璁ゅ��</returns>
+        public static Decimal ObjToDecimal(this object thisValue, decimal errorValue)
+        {
+            Decimal reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return errorValue;
+        }
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负DateTime绫诲瀷
+        /// </summary>
+        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
+        /// <returns>杞崲鍚庣殑DateTime鍊硷紝杞崲澶辫触杩斿洖DateTime.MinValue</returns>
+        public static DateTime ObjToDate(this object thisValue)
+        {
+            DateTime reval = DateTime.MinValue;
+            if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
+            {
+                reval = Convert.ToDateTime(thisValue);
+            }
+
+            return reval;
+        }
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负DateTime绫诲瀷锛岃浆鎹㈠け璐ユ椂杩斿洖鎸囧畾鐨勯粯璁ゅ��
+        /// </summary>
+        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
+        /// <param name="errorValue">杞崲澶辫触鏃惰繑鍥炵殑榛樿鍊�</param>
+        /// <returns>杞崲鎴愬姛鐨凞ateTime鍊兼垨鎸囧畾鐨勯粯璁ゅ��</returns>
+        public static DateTime ObjToDate(this object thisValue, DateTime errorValue)
+        {
+            DateTime reval = DateTime.MinValue;
+            if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return errorValue;
+        }
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负甯冨皵鍊�
+        /// </summary>
+        /// <param name="thisValue">瑕佽浆鎹㈢殑瀵硅薄</param>
+        /// <returns>杞崲鍚庣殑甯冨皵鍊硷紝杞崲澶辫触鏃惰繑鍥瀎alse</returns>
+        public static bool ObjToBool(this object thisValue)
+        {
+            bool reval = false;
+            if (thisValue != null && thisValue != DBNull.Value && bool.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return reval;
+        }
+
+        /// <summary>
+        /// 灏咲ateTime杞崲涓篣nix鏃堕棿鎴筹紙绉掔骇锛�
+        /// </summary>
+        /// <param name="thisValue">闇�瑕佽浆鎹㈢殑DateTime瀵硅薄</param>
+        /// <returns>杩斿洖琛ㄧずUnix鏃堕棿鎴崇殑瀛楃涓�</returns>
+        public static string DateToTimeStamp(this DateTime thisValue)
+        {
+            TimeSpan ts = thisValue - new DateTime(1970, 1, 1, 0, 0, 0, 0);
+            return Convert.ToInt64(ts.TotalSeconds).ToString();
+        }
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负鎸囧畾绫诲瀷
+        /// </summary>
+        /// <param name="value">瑕佽浆鎹㈢殑瀵硅薄</param>
+        /// <param name="type">鐩爣绫诲瀷</param>
+        /// <returns>杞崲鍚庣殑瀵硅薄</returns>
+        /// <remarks>
+        /// 鏀寔澶勭悊null鍊笺�佹灇涓剧被鍨嬨�佹硾鍨嬬被鍨嬨�丟uid銆乂ersion绛夌壒娈婄被鍨嬬殑杞崲銆�
+        /// 濡傛灉杞崲澶辫触鎴栫被鍨嬩笉鍖归厤锛屽皢杩斿洖鍘熷鍊兼垨鎶涘嚭寮傚父銆�
+        /// </remarks>
+        public static object ChangeType(this object value, Type type)
+        {
+            if (value == null && type.IsGenericType) return Activator.CreateInstance(type);
+            if (value == null) return null;
+            if (type == value.GetType()) return value;
+            if (type.IsEnum)
+            {
+                if (value is string)
+                    return Enum.Parse(type, value as string);
+                else
+                    return Enum.ToObject(type, value);
+            }
+
+            if (!type.IsInterface && type.IsGenericType)
+            {
+                Type innerType = type.GetGenericArguments()[0];
+                object innerValue = ChangeType(value, innerType);
+                return Activator.CreateInstance(type, new object[] { innerValue });
+            }
+
+            if (value is string && type == typeof(Guid)) return new Guid(value as string);
+            if (value is string && type == typeof(Version)) return new Version(value as string);
+            if (!(value is IConvertible)) return value;
+            return Convert.ChangeType(value, type);
+        }
+
+        /// <summary>
+        /// 灏嗗璞″�艰浆鎹负鎸囧畾绫诲瀷鐨勬硾鍨嬪垪琛ㄣ��
+        /// </summary>
+        /// <param name="value">寰呰浆鎹㈢殑瀵硅薄鍊�</param>
+        /// <param name="type">鐩爣鍒楄〃鍏冪礌绫诲瀷</param>
+        /// <returns>杞崲鍚庣殑娉涘瀷鍒楄〃瀵硅薄锛岃嫢杈撳叆涓簄ull鍒欒繑鍥為粯璁ゅ��</returns>
+        /// <remarks>
+        /// 鏀寔澶勭悊浠ユ嫭鍙峰寘瑁圭殑瀛楃涓叉牸寮忥紙濡�"(1,2,3)"鎴�"("a","b")"锛夛紝
+        /// 鑷姩鍘婚櫎鍒嗛殧绗﹀苟灏嗗厓绱犺浆鎹负鐩爣绫诲瀷鍚庢坊鍔犲埌鍒楄〃銆�
+        /// </remarks>
+        public static object ChangeTypeList(this object value, Type type)
+        {
+            if (value == null) return default;
+
+            var gt = typeof(List<>).MakeGenericType(type);
+            dynamic lis = Activator.CreateInstance(gt);
+
+            var addMethod = gt.GetMethod("Add");
+            string values = value.ToString();
+            if (values != null && values.StartsWith("(") && values.EndsWith(")"))
+            {
+                string[] splits;
+                if (values.Contains("\",\""))
+                {
+                    splits = values.Remove(values.Length - 2, 2)
+                        .Remove(0, 2)
+                        .Split("\",\"");
+                }
+                else
+                {
+                    splits = values.Remove(0, 1)
+                        .Remove(values.Length - 2, 1)
+                        .Split(",");
+                }
+
+                foreach (var split in splits)
+                {
+                    var str = split;
+                    if (split.StartsWith("\"") && split.EndsWith("\""))
+                    {
+                        str = split.Remove(0, 1)
+                            .Remove(split.Length - 2, 1);
+                    }
+
+                    addMethod.Invoke(lis, new object[] { ChangeType(str, type) });
+                }
+            }
+
+            return lis;
+        }
+
+        /// <summary>
+        /// 灏嗗璞″簭鍒楀寲涓篔SON瀛楃涓�
+        /// </summary>
+        /// <param name="value">瑕佸簭鍒楀寲鐨勫璞�</param>
+        /// <returns>瀵硅薄鐨凧SON瀛楃涓茶〃绀�</returns>
+        public static string ToJson(this object value)
+        {
+            return JsonConvert.SerializeObject(value);
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇瀵硅薄鏄惁鍙互杞崲涓烘暣鏁�
+        /// </summary>
+        /// <param name="obj">瑕佸垽鏂殑瀵硅薄</param>
+        /// <returns>濡傛灉鍙互杞崲涓烘暣鏁拌繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse</returns>
+        public static bool IsInt(this object obj)
+        {
+            if (obj == null)
+                return false;
+            bool reslut = Int32.TryParse(obj.ToString(), out int _number);
+            return reslut;
+
+        }
+        
+        /// <summary>
+        /// 鍒ゆ柇瀵硅薄鏄惁涓烘湁鏁堟棩鏈熸牸寮�
+        /// </summary>
+        /// <param name="str">寰呮娴嬬殑瀵硅薄</param>
+        /// <returns>true琛ㄧず鏄湁鏁堟棩鏈燂紝false鍒欎笉鏄�</returns>
+        /// <remarks>姝ゆ柟娉曟槸鎵╁睍鏂规硶锛岄�氳繃璋冪敤IsDate(out _)瀹炵幇</remarks>
+        public static bool IsDate(this object str)
+        {
+            return str.IsDate(out _);
+        }
+        
+        /// <summary>
+        /// 鍒ゆ柇瀵硅薄鏄惁鍙互杞崲涓烘湁鏁堢殑鏃ユ湡鏃堕棿
+        /// </summary>
+        /// <param name="str">瑕佸垽鏂殑瀵硅薄</param>
+        /// <param name="dateTime">杈撳嚭杞崲鍚庣殑鏃ユ湡鏃堕棿鍊�</param>
+        /// <returns>濡傛灉杞崲鎴愬姛杩斿洖true锛屽惁鍒欒繑鍥瀎alse</returns>
+        public static bool IsDate(this object str, out DateTime dateTime)
+        {
+            dateTime = DateTime.Now;
+            if (str == null || str.ToString() == "")
+            {
+                return false;
+            }
+            return DateTime.TryParse(str.ToString(), out dateTime);
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇瀛楃涓叉槸鍚﹀彲浠ヨ浆鎹负鏁板瓧
+        /// </summary>
+        /// <param name="str">瑕佹鏌ョ殑瀛楃涓�</param>
+        /// <param name="formatString">鏍煎紡瀛楃涓诧紙鏈娇鐢級</param>
+        /// <returns>濡傛灉瀛楃涓插彲浠ヨ浆鎹负鏁板瓧鍒欒繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse</returns>
+        /// <remarks>
+        /// 浣跨敤姝e垯琛ㄨ揪寮忛獙璇佸瓧绗︿覆鏄惁涓烘暟瀛楁牸寮忥紝鏀寔姝h礋鍙峰拰灏忔暟鐐�
+        /// </remarks>
+        public static bool IsNumber(this string str, string formatString)
+        {
+            if (string.IsNullOrEmpty(str)) return false;
+
+            return Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$");
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇瀛楃涓叉槸鍚︿负鏈夋晥鐨凣uid鏍煎紡
+        /// </summary>
+        /// <param name="guid">瑕侀獙璇佺殑瀛楃涓�</param>
+        /// <returns>濡傛灉瀛楃涓叉槸鏈夋晥鐨凣uid鏍煎紡鍒欒繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse</returns>
+        public static bool IsGuid(this string guid)
+        {
+            Guid newId;
+            return guid.GetGuid(out newId);
+        }
+
+        /// <summary>
+        /// 灏嗗瓧绗︿覆杞崲涓篏uid绫诲瀷
+        /// </summary>
+        /// <param name="guid">瑕佽浆鎹㈢殑瀛楃涓�</param>
+        /// <param name="outId">杈撳嚭杞崲鍚庣殑Guid</param>
+        /// <returns>杞崲鎴愬姛杩斿洖true锛屽惁鍒欒繑鍥瀎alse</returns>
+        public static bool GetGuid(this string guid, out Guid outId)
+        {
+            Guid emptyId = Guid.Empty;
+            return Guid.TryParse(guid, out outId);
+        }
+
+        /// <summary>
+        /// 灏嗗瓧绗︿覆绫诲瀷鐨勬潯浠惰浆鎹负瀵瑰簲鐨凩inq琛ㄨ揪寮忕被鍨�
+        /// </summary>
+        /// <param name="stringType">琛ㄧず鏉′欢鐨勫瓧绗︿覆</param>
+        /// <returns>瀵瑰簲鐨凩inq琛ㄨ揪寮忕被鍨嬫灇涓惧��</returns>
+        /// <remarks>
+        /// 璇ユ柟娉曠敤浜庡皢鍓嶇浼犻�掔殑鏉′欢瀛楃涓叉槧灏勪负鍚庣Linq鏌ヨ浣跨敤鐨勮〃杈惧紡绫诲瀷锛�
+        /// 鏀寔鍖呭惈銆佸ぇ浜庣瓑浜庛�佸皬浜庣瓑浜庛�佸ぇ浜庛�佸皬浜庛�佹ā绯婂尮閰嶇瓑甯歌鏉′欢绫诲瀷锛�
+        /// 榛樿杩斿洖绛変簬(Equal)绫诲瀷
+        /// </remarks>
+        public static LinqExpressionType GetLinqCondition(this string stringType)
+        {
+            LinqExpressionType linqExpression;
+            switch (stringType)
+            {
+                case HtmlElementType.Contains:
+                case HtmlElementType.selectlist:
+                case nameof(HtmlElementType.Contains):
+                    linqExpression = LinqExpressionType.In;
                     break;
-                case HtmlElementType.notequal:
-                    linqExpression = LinqExpressionType.NotEqual;
-                    break;
-                default:
-                    linqExpression = LinqExpressionType.Equal;
-                    break;
-            }
-            return linqExpression;
-        }
-    }
-}
+                case HtmlElementType.ThanOrEqual:
+                case nameof(HtmlElementType.ThanOrEqual):
+                case HtmlElementType.thanorequal:
+                    linqExpression = LinqExpressionType.ThanOrEqual;
+                    break;
+                case HtmlElementType.LessOrEqual:
+                case nameof(HtmlElementType.LessOrEqual):
+                case HtmlElementType.lessorequal:
+                    linqExpression = LinqExpressionType.LessThanOrEqual;
+                    break;
+                case HtmlElementType.GT:
+                case nameof(HtmlElementType.GT):
+                    linqExpression = LinqExpressionType.GreaterThan;
+                    break;
+                case HtmlElementType.lt:
+                    linqExpression = LinqExpressionType.LessThan;
+                    break;
+                case HtmlElementType.like:
+                    linqExpression = LinqExpressionType.Contains;
+                    break;
+                case HtmlElementType.notequal:
+                    linqExpression = LinqExpressionType.NotEqual;
+                    break;
+                default:
+                    linqExpression = LinqExpressionType.Equal;
+                    break;
+            }
+            return linqExpression;
+        }
+    }
+}

--
Gitblit v1.9.3