Ver Fonte

添加decimal精确度设置

heteng há 3 anos atrás
pai
commit
d2032b4312

+ 7 - 0
.gitignore

@@ -199,3 +199,10 @@ MicroServices/Business/Bussiness.Model/obj/Debug/net6.0/Bussiness.Model.dll
 MicroServices/Business/Bussiness.Model/obj/Debug/net6.0/Bussiness.Model.pdb
 MicroServices/Business/Bussiness.Model/obj/Debug/net6.0/ref/Bussiness.Model.dll
 MicroServices/Business/Bussiness.Model/obj/Debug/net6.0/refint/Bussiness.Model.dll
+MicroServices/Business/Bussiness.Model/bin/Debug/net6.0/Business.Core.dll
+MicroServices/Business/Bussiness.Model/bin/Debug/net6.0/Business.Core.pdb
+MicroServices/Business/Bussiness.Model/bin/Debug/net6.0/Business.Domain.dll
+MicroServices/Business/Bussiness.Model/bin/Debug/net6.0/Business.Domain.pdb
+MicroServices/Business/Bussiness.Model/bin/Debug/net6.0/Business.EntityFrameworkCore.dll
+MicroServices/Business/Bussiness.Model/bin/Debug/net6.0/Business.EntityFrameworkCore.pdb
+MicroServices/Business/Bussiness.Model/obj/Debug/net6.0/Bussiness.Model.csproj.CopyComplete

+ 14 - 0
MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/BusinessDbContext.cs

@@ -1,5 +1,7 @@
 using Business.Models;
 using Microsoft.EntityFrameworkCore;
+using System.Linq;
+using System.Reflection;
 using Volo.Abp.Data;
 using Volo.Abp.EntityFrameworkCore;
 
@@ -21,6 +23,18 @@ namespace Business.EntityFrameworkCore
 
         protected override void OnModelCreating(ModelBuilder modelBuilder)
         {
+            modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly());
+            foreach (var entityType in modelBuilder.Model.GetEntityTypes())
+            {
+                var type = entityType.ClrType;
+                var props = type.GetProperties().Where(c => c.IsDefined(typeof(DecimalPrecisionAttribute),true)).ToArray();
+                foreach (var p in props)
+                {
+                    //ͨ¹ý×Ô¶¨ÒådecimalAttributeÉèÖÃdecimal¾«¶È
+                    var precis = p.GetCustomAttribute<DecimalPrecisionAttribute>();
+                    modelBuilder.Entity(type).Property(p.Name).HasColumnType($"decimal({precis.Precision},{precis.Scale})");
+                }
+            }
             base.OnModelCreating(modelBuilder);
             modelBuilder.ConfigureBusiness();
         }

+ 56 - 0
MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/DecimalPrecisionAttribute.cs

@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.EntityFrameworkCore
+{
+    /// <summary>
+    /// 自定义Decimal类型的精确度属性
+    /// </summary>
+    [AttributeUsage(AttributeTargets.Property,Inherited =false,AllowMultiple =false)]
+    public class DecimalPrecisionAttribute: Attribute
+    {
+        #region Field
+        private byte _precision = 18;
+        public byte _scale = 5;
+        #endregion
+
+        #region Construct
+        /// <summary>
+        /// <para>自定义Decimal类型的精确度属性</para>
+        /// </summary>
+        /// <param name="precision">precision
+        /// <para>精度(默认18)</para></param>
+        /// <param name="scale">scale
+        /// <para>小数位数(默认5)</para></param>
+        public DecimalPrecisionAttribute(byte precision = 18, byte scale = 5)
+        {
+            Precision = precision;
+            Scale = scale;
+        }
+        #endregion
+
+        #region Property
+        /// <summary>
+        /// 精确度(默认18)
+        /// </summary>
+        public byte Precision
+        {
+            get { return this._precision; }
+            set { this._precision = value; }
+        }
+
+        /// <summary>
+        /// 保留位数(默认5)
+        /// </summary>
+        public byte Scale
+        {
+            get { return this._scale; }
+            set { this._scale = value; }
+        }
+        #endregion
+
+    }
+}

+ 5 - 1
MicroServices/Business/Bussiness.Model/Bussiness.Model.csproj

@@ -7,8 +7,12 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Volo.Abp.EntityFrameworkCore" Version="6.0.0" />
+    <PackageReference Include="Volo.Abp.EntityFrameworkCore" Version="6.0.2" />
     <PackageReference Include="Volo.Abp.Validation" Version="6.0.0" />
   </ItemGroup>
 
+  <ItemGroup>
+    <ProjectReference Include="..\Business.EntityFrameworkCore\Business.EntityFrameworkCore.csproj" />
+  </ItemGroup>
+
 </Project>

+ 5 - 1
MicroServices/Business/Bussiness.Model/Tech/mes_tech_process.cs

@@ -1,4 +1,5 @@
-using Business.Models;
+using Business.EntityFrameworkCore;
+using Business.Models;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
@@ -40,6 +41,7 @@ namespace Bussiness.Model.Tech
         /// <summary>
         /// 前置准备时间
         /// </summary>
+        [DecimalPrecision(20,8)]
         public decimal readytime { get; set; }
 
         /// <summary>
@@ -50,11 +52,13 @@ namespace Bussiness.Model.Tech
         /// <summary>
         /// UPH
         /// </summary>
+        [DecimalPrecision(20, 8)]
         public decimal uph { get; set; }
 
         /// <summary>
         /// 节拍时间
         /// </summary>
+        [DecimalPrecision(20, 8)]
         public decimal ct { get; set; }
 
         /// <summary>