From c020f31a67fc5aa5644511bddff075f7ecc85234 Mon Sep 17 00:00:00 2001
From: qinchulong <qinchulong@hnkhzn.com>
Date: 星期二, 27 五月 2025 15:35:27 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/HuaYiZhongHeng/ZhongHeLiTiKu

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs |  184 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 184 insertions(+), 0 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs"
new file mode 100644
index 0000000..dac84c9
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs"
@@ -0,0 +1,184 @@
+锘縰sing OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
+using SqlSugar;
+using StackExchange.Profiling;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Seed;
+using WIDESEA_Core.Tenants;
+using static Org.BouncyCastle.Math.EC.ECCurve;
+
+namespace WIDESEA_Core.AOP
+{
+    public static class SqlSugarAop
+    {
+        public static void DataExecuting(object oldValue, DataFilterModel entityInfo)
+        {
+            if (entityInfo.OperationType == DataFilterType.InsertByObject)
+            {
+                PropertyInfo propertyInfo = entityInfo.EntityColumnInfo.PropertyInfo;
+                CodeRuleAttribute? codeRuleAttribute = propertyInfo.GetCustomAttribute<CodeRuleAttribute>();
+                if (codeRuleAttribute != null)
+                {
+                    SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig
+                    {
+                        ConfigId = MainDb.CurrentDbConnId,
+                        ConnectionString = DBContext.GetMainConnectionDb().Connection,
+                        IsAutoCloseConnection = true,
+                        DbType = MainDb.DbType,
+                    });
+                    dynamic ruleConfig = sugarClient.Queryable(MainDb.CodeRuleConfig, "x").Where(nameof(CodeRuleAttribute.RuleCode), "=", codeRuleAttribute.RuleCode.ToString()).First();
+                    if (ruleConfig != null)
+                    {
+                        string code = CreateCodeByRule(ruleConfig, sugarClient);
+                        propertyInfo.SetValue(entityInfo.EntityValue, code, null);
+                    }
+                }
+
+                SequenceAttirbute? sequenceAttirbute = propertyInfo.GetCustomAttribute<SequenceAttirbute>();
+                if (sequenceAttirbute != null)
+                {
+                    if (propertyInfo.GetValue(entityInfo.EntityValue)?.ObjToInt() <= 0)
+                    {
+                        SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig
+                        {
+                            ConfigId = MainDb.CurrentDbConnId,
+                            ConnectionString = DBContext.GetMainConnectionDb().Connection,
+                            IsAutoCloseConnection = true,
+                            DbType = MainDb.DbType,
+                        });
+                        int count = sugarClient.Ado.GetScalar($"SELECT COUNT(*) FROM sys.sequences WHERE name = '{sequenceAttirbute.SequenceName}'").ObjToInt();
+                        if (count == 0)
+                        {
+                            string sql = $"CREATE SEQUENCE {sequenceAttirbute.SequenceName} AS [int] START WITH {sequenceAttirbute.StartWith} INCREMENT BY {sequenceAttirbute.Increment} MINVALUE {sequenceAttirbute.SeqMinValue} MAXVALUE {sequenceAttirbute.SeqMaxValue} {(sequenceAttirbute.IsCycle ? "CYCLE" : "")} CACHE";
+                            sugarClient.Ado.ExecuteCommand(sql);
+                        }
+                        int seq = sugarClient.Ado.GetScalar($"SELECT NEXT VALUE FOR {sequenceAttirbute.SequenceName}").ObjToInt();
+                        propertyInfo.SetValue(entityInfo.EntityValue, seq, null);
+                    }
+                  
+                }
+            }
+
+            if (entityInfo.EntityValue is BaseEntity baseEntity)
+            {
+                // 鏂板鎿嶄綔
+                if (entityInfo.OperationType == DataFilterType.InsertByObject)
+                {
+                    if (entityInfo.PropertyName == nameof(BaseEntity.CreateDate))
+                    {
+                        baseEntity.CreateDate = DateTime.Now;
+                    }
+                }
+
+                if (entityInfo.OperationType == DataFilterType.UpdateByObject)
+                {
+                    baseEntity.ModifyDate = DateTime.Now;
+                }
+
+
+                if (App.User?.UserId > 0)
+                {
+                    switch (entityInfo.OperationType)
+                    {
+                        case DataFilterType.UpdateByObject:
+                            baseEntity.Modifier = App.User.UserName;
+                            break;
+                        case DataFilterType.InsertByObject:
+                            baseEntity.Creater = App.User.UserName;
+                            break;
+                    }
+                }
+            }
+        }
+
+        private static void UpdateConfigData(dynamic ruleConfig)
+        {
+            try
+            {
+
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
+
+        private static string CreateCodeByRule(dynamic ruleConfig, SqlSugarClient sugarClient)
+        {
+            string code = string.Empty;
+            DateTime dataTime = DateTime.Now;
+            DateTime now = DateTime.Now;
+            try
+            {
+                if (ruleConfig.ModifyDate != null)
+                {
+                    dataTime = Convert.ToDateTime(ruleConfig.ModifyDate);
+                }
+                else
+                {
+                    dataTime = Convert.ToDateTime(ruleConfig.CreateDate);
+                }
+
+                if (now.Year == dataTime.Year && now.Month == dataTime.Month && now.Day == dataTime.Day)
+                {
+                    now = dataTime;
+                    ruleConfig.CurrentVal = Convert.ToInt32(ruleConfig.CurrentVal) + 1;
+                }
+                else
+                {
+                    ruleConfig.CurrentVal = 1;
+                }
+
+                ruleConfig.ModifyDate = DateTime.Now;
+
+                code = ruleConfig.Format;
+                code = code.Replace($"[{CodeFormat.YYYY}]", now.Year.ToString().PadLeft(4, '0'));
+                code = code.Replace($"[{CodeFormat.MM}]", now.Month.ToString().PadLeft(2, '0'));
+                code = code.Replace($"[{CodeFormat.DD}]", now.Day.ToString().PadLeft(2, '0'));
+                code = code.Replace($"[{CodeFormat.ST}]", ruleConfig.StartStr.ToString());
+                code = code.Replace($"[{CodeFormat.NUM}]", ruleConfig.CurrentVal.ToString().PadLeft(ruleConfig.Length ?? 0, '0'));
+            }
+            catch (Exception ex)
+            {
+
+            }
+            finally
+            {
+                Dictionary<string, object> keyValuePairs = new Dictionary<string, object>() { { nameof(ruleConfig.CurrentVal), ruleConfig.CurrentVal }, { nameof(ruleConfig.Id), ruleConfig.Id }, { nameof(ruleConfig.ModifyDate), DateTime.Now } };
+                sugarClient.Updateable(keyValuePairs).AS(MainDb.CodeRuleConfig).WhereColumns(nameof(ruleConfig.Id)).ExecuteCommand();
+            }
+            return code;
+        }
+
+        private static string GetWholeSql(SugarParameter[] paramArr, string sql)
+        {
+            foreach (var param in paramArr)
+            {
+                sql = sql.Replace(param.ParameterName, $@"'{param.Value.ObjToString()}'");
+            }
+
+            return sql;
+        }
+
+        private static string GetParas(SugarParameter[] pars)
+        {
+            string key = "銆怱QL鍙傛暟銆戯細";
+            foreach (var param in pars)
+            {
+                key += $"{param.ParameterName}:{param.Value}\n";
+            }
+
+            return key;
+        }
+    }
+}

--
Gitblit v1.9.3