From 0fb0f17319ecf71d66b96a6acfd07f754be9443e Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期四, 24 十月 2024 13:44:38 +0800
Subject: [PATCH] WCS添加穿梭车信息表,修改任务信息表
---
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs | 983 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 983 insertions(+), 0 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs"
new file mode 100644
index 0000000..d9c8538
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs"
@@ -0,0 +1,983 @@
+锘縰sing NetTaste;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Web;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Enums;
+
+namespace WIDESEA_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></returns>
+ 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;
+ }
+
+ 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);
+ }
+
+ public static T DeserializeObject<T>(this string json)
+ {
+ if (string.IsNullOrEmpty(json))
+ {
+ return default(T);
+ }
+ if (json == "{}")
+ {
+ json = "[]";
+ }
+ return JsonConvert.DeserializeObject<T>(json);
+ }
+
+ 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;
+ }
+
+ 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></returns>
+ 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>
+ ///
+ /// </summary>
+ /// <param name="thisValue"></param>
+ /// <returns></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;
+ }
+
+ 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>
+ ///
+ /// </summary>
+ /// <param name="thisValue"></param>
+ /// <returns></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>
+ ///
+ /// </summary>
+ /// <param name="thisValue"></param>
+ /// <param name="errorValue"></param>
+ /// <returns></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>
+ ///
+ /// </summary>
+ /// <param name="thisValue"></param>
+ /// <returns></returns>
+ public static string ObjToString(this object thisValue)
+ {
+ if (thisValue != null) return thisValue.ToString().Trim();
+ return "";
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="thisValue"></param>
+ /// <returns></returns>
+ public static bool IsNotEmptyOrNull(this object thisValue)
+ {
+ return ObjToString(thisValue) != "" && ObjToString(thisValue) != "undefined" && ObjToString(thisValue) != "null";
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="thisValue"></param>
+ /// <param name="errorValue"></param>
+ /// <returns></returns>
+ public static string ObjToString(this object thisValue, string errorValue)
+ {
+ if (thisValue != null) return thisValue.ToString().Trim();
+ return errorValue;
+ }
+
+ public static bool IsNullOrEmpty(this object thisValue) => thisValue == null || thisValue == DBNull.Value || string.IsNullOrWhiteSpace(thisValue.ToString());
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="thisValue"></param>
+ /// <returns></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>
+ ///
+ /// </summary>
+ /// <param name="thisValue"></param>
+ /// <param name="errorValue"></param>
+ /// <returns></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>
+ ///
+ /// </summary>
+ /// <param name="thisValue"></param>
+ /// <returns></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>
+ ///
+ /// </summary>
+ /// <param name="thisValue"></param>
+ /// <param name="errorValue"></param>
+ /// <returns></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></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>
+ /// 鑾峰彇褰撳墠鏃堕棿鐨勬椂闂存埑
+ /// </summary>
+ /// <param name="thisValue"></param>
+ /// <returns></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();
+ }
+
+ 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);
+ }
+
+ 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;
+ }
+
+ public static string ToJson(this object value)
+ {
+ return JsonConvert.SerializeObject(value);
+ }
+
+ public static bool IsNumeric(this object value)
+ {
+ if (value == null)
+ return false;
+ bool reslut = decimal.TryParse(value.ToString(), out decimal _number);
+ return reslut;
+ }
+
+ public static bool IsInt(this object obj)
+ {
+ if (obj == null)
+ return false;
+ bool reslut = Int32.TryParse(obj.ToString(), out int _number);
+ return reslut;
+
+ }
+ public static bool IsDate(this object str)
+ {
+ return str.IsDate(out _);
+ }
+ 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">18,5</param>
+ /// <returns></returns>
+ public static bool IsNumber(this string str, string formatString)
+ {
+ if (string.IsNullOrEmpty(str)) return false;
+
+ return Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$");
+ }
+
+ public static bool IsGuid(this string guid)
+ {
+ Guid newId;
+ return guid.GetGuid(out newId);
+ }
+
+ public static bool GetGuid(this string guid, out Guid outId)
+ {
+ Guid emptyId = Guid.Empty;
+ return Guid.TryParse(guid, out outId);
+ }
+
+ /// <summary>
+ /// 杞崲涓虹煭鏁村瀷 qy 2024-7-15
+ /// </summary>
+ /// <param name="data">鏁版嵁</param>
+ public static short ToShort(this object data)
+ {
+ if (data == null)
+ return 0;
+ short result;
+ var success = short.TryParse(data.ToString(), out result);
+ if (success)
+ return result;
+ try
+ {
+ return Convert.ToInt16(data);
+ }
+ catch (Exception)
+ {
+ return 0;
+ }
+ }
+
+ /// <summary>
+ /// 杞崲涓洪珮绮惧害娴偣鏁�,骞舵寜鎸囧畾鐨勫皬鏁颁綅4鑸�5鍏� qy 2024-7-15
+ /// </summary>
+ /// <param name="data">鏁版嵁</param>
+ /// <param name="digits">灏忔暟浣嶆暟</param>
+ public static decimal ToDecimal(this object data, int digits)
+ {
+ return Math.Round(ObjToDecimal(data), digits);
+ }
+
+
+
+ /// <summary>
+ /// 鏋氫妇杞琇ist qy 2024-7-15
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <returns></returns>
+ public static List<object> GetEnumList<T>()
+ {
+ List<object> list = new List<object>();
+ var t = typeof(T);
+ foreach (var item in Enum.GetValues(typeof(T)))
+ {
+ FieldInfo f = t.GetField(Enum.GetName(typeof(T), item));
+ var r = (System.ComponentModel.DescriptionAttribute[])f.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
+ list.Add(new { ID = item, value = Enum.GetName(typeof(T), item), name = r[0].Description });
+ }
+ return list;
+ }
+
+ /// <summary>
+ /// 楠岃瘉鍔ㄦ�佺被鍨嬪厓绱犳槸鍚︿负绌� qy 2024-7-15
+ /// </summary>
+ /// <param name="obj"></param>
+ /// <returns></returns>
+ public static bool CheckDynamic(object obj)
+ {
+ return (obj != null && Convert.ToString(obj) != "") ? true : false;
+ }
+
+ /// <summary>
+ /// 鍔ㄦ�佺被鍨嬪厓绱犺浆瀛楃涓插苟瑙g爜 qy 2024-7-15
+ /// </summary>
+ /// <param name="obj"></param>
+ /// <returns></returns>
+ public static string DynamicToString(object obj)
+ {
+ return CheckDynamic(obj) ? HttpUtility.UrlDecode(Convert.ToString(obj).Trim()) : "";
+ }
+
+ /// <summary>
+ /// DataTable杞负json qy 2024-7-15
+ /// </summary>
+ /// <param name="parObjRefDataTable">DataTable</param>
+ /// <returns>json鏁版嵁</returns>
+ public static string ToJson(this DataTable parObjRefDataTable)
+ {
+ List<object> objArrList = new List<object>();
+
+ foreach (DataRow objDataRow in parObjRefDataTable.Rows)
+ {
+ Dictionary<string, object> objResult = new Dictionary<string, object>();
+
+ foreach (DataColumn objDataColumn in parObjRefDataTable.Columns)
+ objResult.Add(objDataColumn.ColumnName, objDataRow[objDataColumn].ToString());
+
+ objArrList.Add(objResult);
+ }
+
+ return ToJson(objArrList);
+ }
+ /// <summary>
+ /// Json杞琇ist qy 2024-7-15
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="parJson"></param>
+ /// <returns></returns>
+ public static List<T> JsonToList<T>(this string parJson)
+ {
+ if (string.IsNullOrWhiteSpace(parJson))
+ {
+ return new List<T>();
+ }
+ else
+ {
+ return JsonConvert.DeserializeObject<List<T>>(parJson);
+ }
+ }
+
+ /// <summary>
+ /// 鏃ユ湡杞负unix鍊�
+ /// </summary>
+ /// <param name="dt"></param>
+ /// <param name="utc">T:鎸塙TC鏃堕棿璁$畻(榛樿);F:鎸夋湰鍦版椂闂磋绠�</param>
+ /// <returns></returns>
+ public static double ToUnix(this DateTime dt, bool utc = true)
+ {
+ double intResult = 0;
+ System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
+ intResult = (dt - startTime).TotalSeconds;
+ intResult = Math.Round(intResult, 0);
+ return intResult;
+ }
+
+ #region 鍒ゆ柇鏄惁涓哄瓧绗︿覆 qy 2024-7-15
+ /// <summary>
+ /// 鍒ゆ柇瀛楃涓叉槸鍚︿负鍚堟硶鐨刯son瀛楃涓� qy 2024-7-15
+ /// </summary>
+ /// <param name="json"></param>
+ /// <returns></returns>
+ public static bool IsJson(string json)
+ {
+ int errIndex;
+ return IsJson(json, out errIndex);
+ }
+ public static bool IsJson(string json, out int errIndex)
+ {
+ errIndex = 0;
+ if (IsJsonStart(ref json))
+ {
+ CharState cs = new CharState();
+ char c;
+ for (int i = 0; i < json.Length; i++)
+ {
+ c = json[i];
+ if (SetCharState(c, ref cs) && cs.childrenStart)//璁剧疆鍏抽敭绗﹀彿鐘舵�併��
+ {
+ string item = json.Substring(i);
+ int err;
+ int length = GetValueLength(item, true, out err);
+ cs.childrenStart = false;
+ if (err > 0)
+ {
+ errIndex = i + err;
+ return false;
+ }
+ i = i + length - 1;
+ }
+ if (cs.isError)
+ {
+ errIndex = i;
+ return false;
+ }
+ }
+
+ return !cs.arrayStart && !cs.jsonStart;
+ }
+ return false;
+ }
+
+ private static bool IsJsonStart(ref string json)
+ {
+ if (!string.IsNullOrEmpty(json))
+ {
+ json = json.Trim('\r', '\n', ' ');
+ if (json.Length > 1)
+ {
+ char s = json[0];
+ char e = json[json.Length - 1];
+ return (s == '{' && e == '}') || (s == '[' && e == ']');
+ }
+ }
+ return false;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍊肩殑闀垮害锛堝綋Json鍊煎祵濂椾互"{"鎴�"["寮�澶存椂锛� qy 2024-7-15
+ /// </summary>
+ private static int GetValueLength(string json, bool breakOnErr, out int errIndex)
+ {
+ errIndex = 0;
+ int len = 0;
+ if (!string.IsNullOrEmpty(json))
+ {
+ CharState cs = new CharState();
+ char c;
+ for (int i = 0; i < json.Length; i++)
+ {
+ c = json[i];
+ if (!SetCharState(c, ref cs))//璁剧疆鍏抽敭绗﹀彿鐘舵�併��
+ {
+ if (!cs.jsonStart && !cs.arrayStart)//json缁撴潫锛屽張涓嶆槸鏁扮粍锛屽垯閫�鍑恒��
+ {
+ break;
+ }
+ }
+ else if (cs.childrenStart)//姝e父瀛楃锛屽�肩姸鎬佷笅銆�
+ {
+ int length = GetValueLength(json.Substring(i), breakOnErr, out errIndex);//閫掑綊瀛愬�硷紝杩斿洖涓�涓暱搴︺�傘�傘��
+ cs.childrenStart = false;
+ cs.valueStart = 0;
+ //cs.state = 0;
+ i = i + length - 1;
+ }
+ if (breakOnErr && cs.isError)
+ {
+ errIndex = i;
+ return i;
+ }
+ if (!cs.jsonStart && !cs.arrayStart)//璁板綍褰撳墠缁撴潫浣嶇疆銆�
+ {
+ len = i + 1;//闀垮害姣旂储寮�+1
+ break;
+ }
+ }
+ }
+ return len;
+ }
+
+ /// <summary>
+ /// 瀛楃鐘舵�� qy 2024-7-15
+ /// </summary>
+ private class CharState
+ {
+ internal bool jsonStart = false;//浠� "{"寮�濮嬩簡...
+ internal bool setDicValue = false;// 鍙互璁剧疆瀛楀吀鍊间簡銆�
+ internal bool escapeChar = false;//浠�"\"杞箟绗﹀彿寮�濮嬩簡
+ /// <summary>
+ /// 鏁扮粍寮�濮嬨�愪粎绗竴寮�澶存墠绠椼�戯紝鍊煎祵濂楃殑浠ャ�恈hildrenStart銆戞潵鏍囪瘑銆�
+ /// </summary>
+ internal bool arrayStart = false;//浠�"[" 绗﹀彿寮�濮嬩簡
+ internal bool childrenStart = false;//瀛愮骇宓屽寮�濮嬩簡銆�
+ /// <summary>
+ /// 銆�0 鍒濆鐘舵�侊紝鎴� 閬囧埌鈥�,鈥濋�楀彿銆戯紱銆�1 閬囧埌鈥滐細鈥濆啋鍙枫��
+ /// </summary>
+ internal int state = 0;
+
+ /// <summary>
+ /// 銆�-1 鍙栧�肩粨鏉熴�戙��0 鏈紑濮嬨�戙��1 鏃犲紩鍙峰紑濮嬨�戙��2 鍗曞紩鍙峰紑濮嬨�戙��3 鍙屽紩鍙峰紑濮嬨��
+ /// </summary>
+ internal int keyStart = 0;
+ /// <summary>
+ /// 銆�-1 鍙栧�肩粨鏉熴�戙��0 鏈紑濮嬨�戙��1 鏃犲紩鍙峰紑濮嬨�戙��2 鍗曞紩鍙峰紑濮嬨�戙��3 鍙屽紩鍙峰紑濮嬨��
+ /// </summary>
+ internal int valueStart = 0;
+ internal bool isError = false;//鏄惁璇硶閿欒銆�
+
+ internal void CheckIsError(char c)//鍙綋鎴愪竴绾у鐞嗭紙鍥犱负GetLength浼氶�掑綊鍒版瘡涓�涓瓙椤瑰鐞嗭級
+ {
+ if (keyStart > 1 || valueStart > 1)
+ {
+ return;
+ }
+ //绀轰緥 ["aa",{"bbbb":123,"fff","ddd"}]
+ switch (c)
+ {
+ case '{'://[{ "[{A}]":[{"[{B}]":3,"m":"C"}]}]
+ isError = jsonStart && state == 0;//閲嶅寮�濮嬮敊璇� 鍚屾椂涓嶆槸鍊煎鐞嗐��
+ break;
+ case '}':
+ isError = !jsonStart || (keyStart != 0 && state == 0);//閲嶅缁撴潫閿欒 鎴栬�� 鎻愬墠缁撴潫{"aa"}銆傛甯哥殑鏈墈}
+ break;
+ case '[':
+ isError = arrayStart && state == 0;//閲嶅寮�濮嬮敊璇�
+ break;
+ case ']':
+ isError = !arrayStart || jsonStart;//閲嶅寮�濮嬮敊璇� 鎴栬�� Json 鏈粨鏉�
+ break;
+ case '"':
+ case '\'':
+ isError = !(jsonStart || arrayStart); //json 鎴栨暟缁勫紑濮嬨��
+ if (!isError)
+ {
+ //閲嶅寮�濮� [""",{"" "}]
+ isError = (state == 0 && keyStart == -1) || (state == 1 && valueStart == -1);
+ }
+ if (!isError && arrayStart && !jsonStart && c == '\'')//['aa',{}]
+ {
+ isError = true;
+ }
+ break;
+ case ':':
+ isError = !jsonStart || state == 1;//閲嶅鍑虹幇銆�
+ break;
+ case ',':
+ isError = !(jsonStart || arrayStart); //json 鎴栨暟缁勫紑濮嬨��
+ if (!isError)
+ {
+ if (jsonStart)
+ {
+ isError = state == 0 || (state == 1 && valueStart > 1);//閲嶅鍑虹幇銆�
+ }
+ else if (arrayStart)//["aa,] [,] [{},{}]
+ {
+ isError = keyStart == 0 && !setDicValue;
+ }
+ }
+ break;
+ case ' ':
+ case '\r':
+ case '\n'://[ "a",\r\n{} ]
+ case '\0':
+ case '\t':
+ break;
+ default: //鍊煎紑澶淬�傘��
+ isError = (!jsonStart && !arrayStart) || (state == 0 && keyStart == -1) || (valueStart == -1 && state == 1);//
+ break;
+ }
+ //if (isError)
+ //{
+
+ //}
+ }
+ }
+ /// <summary>
+ /// 璁剧疆瀛楃鐘舵��(杩斿洖true鍒欎负鍏抽敭璇嶏紝杩斿洖false鍒欏綋涓烘櫘閫氬瓧绗﹀鐞嗭級 qy 2024-7-15
+ /// </summary>
+ private static bool SetCharState(char c, ref CharState cs)
+ {
+ cs.CheckIsError(c);
+ switch (c)
+ {
+ case '{'://[{ "[{A}]":[{"[{B}]":3,"m":"C"}]}]
+ #region 澶ф嫭鍙�
+ if (cs.keyStart <= 0 && cs.valueStart <= 0)
+ {
+ cs.keyStart = 0;
+ cs.valueStart = 0;
+ if (cs.jsonStart && cs.state == 1)
+ {
+ cs.childrenStart = true;
+ }
+ else
+ {
+ cs.state = 0;
+ }
+ cs.jsonStart = true;//寮�濮嬨��
+ return true;
+ }
+ #endregion
+ break;
+ case '}':
+ #region 澶ф嫭鍙风粨鏉�
+ if (cs.keyStart <= 0 && cs.valueStart < 2 && cs.jsonStart)
+ {
+ cs.jsonStart = false;//姝e父缁撴潫銆�
+ cs.state = 0;
+ cs.keyStart = 0;
+ cs.valueStart = 0;
+ cs.setDicValue = true;
+ return true;
+ }
+ // cs.isError = !cs.jsonStart && cs.state == 0;
+ #endregion
+ break;
+ case '[':
+ #region 涓嫭鍙峰紑濮�
+ if (!cs.jsonStart)
+ {
+ cs.arrayStart = true;
+ return true;
+ }
+ else if (cs.jsonStart && cs.state == 1)
+ {
+ cs.childrenStart = true;
+ return true;
+ }
+ #endregion
+ break;
+ case ']':
+ #region 涓嫭鍙风粨鏉�
+ if (cs.arrayStart && !cs.jsonStart && cs.keyStart <= 2 && cs.valueStart <= 0)//[{},333]//杩欐牱缁撴潫銆�
+ {
+ cs.keyStart = 0;
+ cs.valueStart = 0;
+ cs.arrayStart = false;
+ return true;
+ }
+ #endregion
+ break;
+ case '"':
+ case '\'':
+ #region 寮曞彿
+ if (cs.jsonStart || cs.arrayStart)
+ {
+ if (cs.state == 0)//key闃舵,鏈夊彲鑳芥槸鏁扮粍["aa",{}]
+ {
+ if (cs.keyStart <= 0)
+ {
+ cs.keyStart = (c == '"' ? 3 : 2);
+ return true;
+ }
+ else if ((cs.keyStart == 2 && c == '\'') || (cs.keyStart == 3 && c == '"'))
+ {
+ if (!cs.escapeChar)
+ {
+ cs.keyStart = -1;
+ return true;
+ }
+ else
+ {
+ cs.escapeChar = false;
+ }
+ }
+ }
+ else if (cs.state == 1 && cs.jsonStart)//鍊奸樁娈靛繀椤绘槸Json寮�濮嬩簡銆�
+ {
+ if (cs.valueStart <= 0)
+ {
+ cs.valueStart = (c == '"' ? 3 : 2);
+ return true;
+ }
+ else if ((cs.valueStart == 2 && c == '\'') || (cs.valueStart == 3 && c == '"'))
+ {
+ if (!cs.escapeChar)
+ {
+ cs.valueStart = -1;
+ return true;
+ }
+ else
+ {
+ cs.escapeChar = false;
+ }
+ }
+
+ }
+ }
+ #endregion
+ break;
+ case ':':
+ #region 鍐掑彿
+ if (cs.jsonStart && cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 0)
+ {
+ if (cs.keyStart == 1)
+ {
+ cs.keyStart = -1;
+ }
+ cs.state = 1;
+ return true;
+ }
+ // cs.isError = !cs.jsonStart || (cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 1);
+ #endregion
+ break;
+ case ',':
+ #region 閫楀彿 //["aa",{aa:12,}]
+
+ if (cs.jsonStart)
+ {
+ if (cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 1)
+ {
+ cs.state = 0;
+ cs.keyStart = 0;
+ cs.valueStart = 0;
+ //if (cs.valueStart == 1)
+ //{
+ // cs.valueStart = 0;
+ //}
+ cs.setDicValue = true;
+ return true;
+ }
+ }
+ else if (cs.arrayStart && cs.keyStart <= 2)
+ {
+ cs.keyStart = 0;
+ //if (cs.keyStart == 1)
+ //{
+ // cs.keyStart = -1;
+ //}
+ return true;
+ }
+ #endregion
+ break;
+ case ' ':
+ case '\r':
+ case '\n'://[ "a",\r\n{} ]
+ case '\0':
+ case '\t':
+ if (cs.keyStart <= 0 && cs.valueStart <= 0) //cs.jsonStart &&
+ {
+ return true;//璺宠繃绌烘牸銆�
+ }
+ break;
+ default: //鍊煎紑澶淬�傘��
+ if (c == '\\') //杞箟绗﹀彿
+ {
+ if (cs.escapeChar)
+ {
+ cs.escapeChar = false;
+ }
+ else
+ {
+ cs.escapeChar = true;
+ return true;
+ }
+ }
+ else
+ {
+ cs.escapeChar = false;
+ }
+ if (cs.jsonStart || cs.arrayStart) // Json 鎴栨暟缁勫紑濮嬩簡銆�
+ {
+ if (cs.keyStart <= 0 && cs.state == 0)
+ {
+ cs.keyStart = 1;//鏃犲紩鍙风殑
+ }
+ else if (cs.valueStart <= 0 && cs.state == 1 && cs.jsonStart)//鍙湁Json寮�濮嬫墠鏈夊�笺��
+ {
+ cs.valueStart = 1;//鏃犲紩鍙风殑
+ }
+ }
+ break;
+ }
+ return false;
+ }
+
+ #endregion
+
+ public static LinqExpressionType GetLinqCondition(this string stringType)
+ {
+ LinqExpressionType linqExpression;
+ switch (stringType)
+ {
+ case HtmlElementType.Contains:
+ linqExpression = LinqExpressionType.In;
+ break;
+ case HtmlElementType.ThanOrEqual:
+ linqExpression = LinqExpressionType.ThanOrEqual;
+ break;
+ case HtmlElementType.LessOrequal:
+ linqExpression = LinqExpressionType.LessThanOrEqual;
+ break;
+ case HtmlElementType.GT:
+ linqExpression = LinqExpressionType.GreaterThan;
+ break;
+ case HtmlElementType.lt:
+ linqExpression = LinqExpressionType.LessThan;
+ break;
+ case HtmlElementType.like:
+ linqExpression = LinqExpressionType.Contains;
+ break;
+ default:
+ linqExpression = LinqExpressionType.Equal;
+ break;
+ }
+ return linqExpression;
+ }
+ }
+}
--
Gitblit v1.9.3