|  |  | 
 |  |  | using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; | 
 |  |  | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; | 
 |  |  | using SqlSugar; | 
 |  |  | using System; | 
 |  |  | using System.Collections.Generic; | 
 |  |  | 
 |  |  | using System.Text; | 
 |  |  | using System.Threading.Tasks; | 
 |  |  | using WIDESEA_Core.Attributes; | 
 |  |  | using WIDESEA_Core.CodeConfigEnum; | 
 |  |  | using WIDESEA_Core.DB; | 
 |  |  | using WIDESEA_Core.Enums; | 
 |  |  | using WIDESEA_Core.Seed; | 
 |  |  | using WIDESEA_Core.Utilities; | 
 |  |  |  | 
 |  |  | namespace WIDESEA_Core.Helper | 
 |  |  | { | 
 |  |  | 
 |  |  |         /// <param name="analysisCode">è§åç¼å·</param> | 
 |  |  |         /// <param name="code">éè§£æçå符串</param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         public static T CodeAnalysis<T>(AnalysisCode analysisCode, string code) | 
 |  |  |         public static T CodeAnalysis<T>(AnalysisCodeEnum analysisCode, string code) | 
 |  |  |         { | 
 |  |  |             Type type = typeof(T); | 
 |  |  |             object? obj = Activator.CreateInstance(type); | 
 |  |  | 
 |  |  |                         if (items.Count == codes.Count) | 
 |  |  |                         { | 
 |  |  |                             PropertyInfo[] propertyInfos = type.GetProperties(); | 
 |  |  |                             if (AnalysisRule.Split == analysisRule.AnalysisRule) | 
 |  |  |                             if (AnalysisRuleEnum.Split == analysisRule.AnalysisRule) | 
 |  |  |                             { | 
 |  |  |                                 for (int i = 0; i < propertyInfos.Length; i++) | 
 |  |  |                                 { | 
 |  |  | 
 |  |  |                                     AnalysisItemRuleAttribute? analysisItemRule = propertyInfo.GetCustomAttribute<AnalysisItemRuleAttribute>(); | 
 |  |  |                                     if (analysisItemRule != null) | 
 |  |  |                                     { | 
 |  |  |                                         int index = items.IndexOf($"[{analysisItemRule.AnalysisFormaType}]"); | 
 |  |  |                                         if (index != -1) | 
 |  |  |                                             propertyInfo.SetValue(result, codes[index]); | 
 |  |  |                                         if (analysisItemRule.AnalysisFormaType == AnalysisFormatTypeEnum.BD) | 
 |  |  |                                         { | 
 |  |  |                                             propertyInfo.SetValue(result, code.ChangeType(propertyInfo.PropertyType)); | 
 |  |  |                                         } | 
 |  |  |                                         else | 
 |  |  |                                         { | 
 |  |  |                                             int index = items.IndexOf($"[{analysisItemRule.AnalysisFormaType}]"); | 
 |  |  |                                             if (index != -1) | 
 |  |  |                                             { | 
 |  |  |                                                 propertyInfo.SetValue(result, codes[index]); | 
 |  |  |                                             } | 
 |  |  |                                             else | 
 |  |  |                                             { | 
 |  |  |                                                 string? codeItem = items.FirstOrDefault(x => x.Contains($"[{analysisItemRule.AnalysisFormaType}]")); | 
 |  |  |                                                 if (!string.IsNullOrEmpty(codeItem)) | 
 |  |  |                                                 { | 
 |  |  |                                                     index = items.IndexOf(codeItem); | 
 |  |  |                                                     if (index != -1) | 
 |  |  |                                                     { | 
 |  |  |                                                         string value = codes[index]; | 
 |  |  |                                                         string replaceStr = codeItem.Replace($"[{analysisItemRule.AnalysisFormaType}]", ""); | 
 |  |  |  | 
 |  |  |                                                         propertyInfo.SetValue(result, value.Replace(replaceStr, "").ChangeType(propertyInfo.PropertyType)); | 
 |  |  |                                                     } | 
 |  |  |                                                 } | 
 |  |  |                                             } | 
 |  |  |                                         } | 
 |  |  |                                     } | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             catch (Exception ex) | 
 |  |  |             { | 
 |  |  |  | 
 |  |  |                 throw new Exception($"è§£æé误,{ex.Message}"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             (bool, string, object?) validateResult = ModelValidate.ValidateModelData(result, type); | 
 |  |  |             if (!validateResult.Item1) | 
 |  |  |             { | 
 |  |  |                 throw new Exception($"è§£æé误,{validateResult.Item2}"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             return result; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  | 
 |  |  |         /// <param name="analysisCode">è§åç¼å·</param> | 
 |  |  |         /// <param name="codeList">éè§£æçå符串éå</param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         public static List<T> CodeAnalysis<T>(AnalysisCode analysisCode, List<string> codeList) | 
 |  |  |         public static List<T> CodeAnalysis<T>(AnalysisCodeEnum analysisCode, List<string> codeList) | 
 |  |  |         { | 
 |  |  |             Type type = typeof(T); | 
 |  |  |             List<T> list = new List<T>(); | 
 |  |  |              | 
 |  |  |  | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  |                 AnalysisRuleAttribute? analysisRule = type.GetCustomAttribute<AnalysisRuleAttribute>(); | 
 |  |  | 
 |  |  |                             if (items.Count == codes.Count) | 
 |  |  |                             { | 
 |  |  |                                 PropertyInfo[] propertyInfos = type.GetProperties(); | 
 |  |  |                                 if (AnalysisRule.Split == analysisRule.AnalysisRule) | 
 |  |  |                                 if (AnalysisRuleEnum.Split == analysisRule.AnalysisRule) | 
 |  |  |                                 { | 
 |  |  |                                     for (int i = 0; i < propertyInfos.Length; i++) | 
 |  |  |                                     { | 
 |  |  | 
 |  |  |                                         AnalysisItemRuleAttribute? analysisItemRule = propertyInfo.GetCustomAttribute<AnalysisItemRuleAttribute>(); | 
 |  |  |                                         if (analysisItemRule != null) | 
 |  |  |                                         { | 
 |  |  |                                             if(analysisItemRule.AnalysisFormaType == AnalysisFormatType.BD) | 
 |  |  |                                             if (analysisItemRule.AnalysisFormaType == AnalysisFormatTypeEnum.BD) | 
 |  |  |                                             { | 
 |  |  |                                                 propertyInfo.SetValue(result, code.ChangeType(propertyInfo.PropertyType)); | 
 |  |  |                                             } | 
 |  |  | 
 |  |  |                                             { | 
 |  |  |                                                 int index = items.IndexOf($"[{analysisItemRule.AnalysisFormaType}]"); | 
 |  |  |                                                 if (index != -1) | 
 |  |  |                                                     propertyInfo.SetValue(result, codes[index].ChangeType(propertyInfo.PropertyType)); | 
 |  |  |                                                 { | 
 |  |  |                                                     propertyInfo.SetValue(result, codes[index]); | 
 |  |  |                                                 } | 
 |  |  |                                                 else | 
 |  |  |                                                 { | 
 |  |  |                                                     string? codeItem = items.FirstOrDefault(x => x.Contains($"[{analysisItemRule.AnalysisFormaType}]")); | 
 |  |  |                                                     if (!string.IsNullOrEmpty(codeItem)) | 
 |  |  |                                                     { | 
 |  |  |                                                         index = items.IndexOf(codeItem); | 
 |  |  |                                                         if (index != -1) | 
 |  |  |                                                         { | 
 |  |  |                                                             string value = codes[index]; | 
 |  |  |                                                             string replaceStr = codeItem.Replace($"[{analysisItemRule.AnalysisFormaType}]", ""); | 
 |  |  |  | 
 |  |  |                                                             propertyInfo.SetValue(result, value.Replace(replaceStr, "").ChangeType(propertyInfo.PropertyType)); | 
 |  |  |                                                         } | 
 |  |  |                                                     } | 
 |  |  |                                                 } | 
 |  |  |                                             } | 
 |  |  |                                              | 
 |  |  |                                         } | 
 |  |  |                                     } | 
 |  |  |                                 } |