From d3b9584def909331007af20b4cdd0bba55919e47 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期一, 13 一月 2025 15:00:10 +0800
Subject: [PATCH] 优化升级

---
 Yw.Application.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user |    2 
 Yw.BLL.Unit.Core/GlobalUsings.cs                                              |    3 
 Yw.BLL.Unit.Core/02-httpclient/02-type/SysUnitType.cs                         |    0 
 Yw.Application.Unit.Core/01-lang/SysUnitLang_Controller.cs                    |    2 
 Yw.BLL.Unit.Core/03-localclient/03-value/SysUnitValue.cs                      |    0 
 Yw.BLL.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user         |    2 
 Yw.Vmo.Unit.Core/05-transfer/SysUnitTransferTypeSetter.cs                     |   27 
 Yw.BLL.Unit.Core/04-bll/02-type/SysUnitType_Instance.cs                       |   84 ++
 Yw.Vmo.Unit.Core/Yw.Vmo.Unit.Core.csproj                                      |   16 
 Yw.BLL.Unit.Core/04-bll/06-helper/SysUnitTransfer.cs                          |   47 +
 Yw.Application.Unit.Core/04-name/SysUnitName_Controller.cs                    |    2 
 Yw.Application.Unit.Core/05-transfer/SysUnitTransfer_Controller.cs            |    2 
 Yw.Vmo.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user         |   10 
 Yw.Application.Unit.Core/09-dbfirst/UnitDbFirst_Controller.cs                 |   28 
 Yw.Application.Unit.Core/03-value/SysUnitValue_Controller.cs                  |    2 
 Yw.Dto.Unit.Core/Yw.Dto.Unit.Core.csproj                                      |    6 
 Yw.Application.Unit.Core/02-type/SysUnitType_Controller.cs                    |    2 
 Yw.BLL.Unit.Core/04-bll/05-transfer/SysUnitTransfer.cs                        |   51 +
 Yw.BLL.Unit.Core/04-bll/00-core/CALCreateHelper.cs                            |    0 
 Yw.BLL.Unit.Core/00-core/Mapper.cs                                            |    8 
 Yw.BLL.Unit.Core/01-interface/05-transfer/ISysUnitTransfer.cs                 |   31 +
 Yw.BLL.Unit.Core/01-interface/06-helper/ISysUnitHelper.cs                     |   30 
 Yw.BLL.Unit.Core/02-httpclient/04-name/SysUnitName.cs                         |   73 ++
 Yw.BLL.Unit.Core/02-httpclient/01-lang/SysUnitLang.cs                         |    0 
 Yw.BLL.Unit.Core/03-localclient/05-transfer/SysUnitTransfer.cs                |    9 
 Yw.BLL.Unit.Core/04-bll/03-value/SysUnitValue.cs                              |  126 ++-
 Yw.Application.Unit.Core/01-lang/SysUnitLang_StdController.cs                 |    2 
 Yw.BLL.Unit.Core/01-interface/02-type/ISysUnitType.cs                         |    0 
 Yw.BLL.Unit.Core/01-interface/09-dbfirst/IUnitDbFirstHelper.cs                |   13 
 Yw.Service.Unit.Core/Yw.Service.Unit.Core.csproj                              |    8 
 Yw.Application.Unit.Core/06-helper/SysUnitHelper_Controller.cs                |    2 
 Yw.BLL.Unit.Core/03-localclient/06-helper/SysUnitHelper.cs                    |   59 +
 Yw.BLL.Unit.Core/01-interface/03-value/ISysUnitValue.cs                       |    7 
 Yw.BLL.Unit.Core/02-httpclient/09-dbfirst/UnitDbFirstHelper.cs                |   23 
 Yw.Vmo.Unit.Core/04-name/SysUnitNameVmo.cs                                    |   44 +
 Yw.Application.Unit.Core/02-type/SysUnitType_StdController.cs                 |    2 
 Yw.BLL.Unit.Core/01-interface/04-name/ISysUnitName.cs                         |   31 +
 Yw.BLL.Unit.Core/04-bll/02-type/SysUnitType.cs                                |  116 ++-
 Yw.BLL.Unit.Core/02-httpclient/03-value/SysUnitValue.cs                       |   28 
 Yw.BLL.Unit.Core/02-httpclient/06-helper/SysUnitHelper.cs                     |   73 ++
 Yw.BLL.Unit.Core/04-bll/01-lang/SysUnitLang_Instance.cs                       |   84 ++
 Yw.BLL.Unit.Core/Yw.BLL.Unit.Core.csproj                                      |    9 
 Yw.Vmo.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml              |   13 
 Yw.BLL.Unit.Core/03-localclient/09-dbfirst/UnitDbFirstHelper.cs               |   27 
 Yw.BLL.Unit.Core/03-localclient/02-type/SysUnitType.cs                        |    2 
 Yw.BLL.Unit.Core/04-bll/03-value/SysUnitValue_Instance.cs                     |   84 ++
 Yw.BLL.Unit.Core/04-bll/09-dbfirst/UnitDbFirstHelper.cs                       |   20 
 Yw.Unit.Core.sln                                                              |    8 
 Yw.Vmo.Unit.Core/03-value/SysUnitValueVmo.cs                                  |   56 +
 Yw.Vmo.Unit.Core/05-transfer/SysUnitTransferVmo.cs                            |   50 +
 Yw.Dto.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user         |    2 
 Yw.BLL.Unit.Core/04-bll/01-lang/SysUnitLang.cs                                |  119 ++-
 Yw.Vmo.Unit.Core/01-lang/SysUnitLangVmo.cs                                    |   50 +
 Yw.BLL.Unit.Core/02-httpclient/05-transfer/SysUnitTransfer.cs                 |   72 ++
 Yw.BLL.Unit.Core/04-bll/05-transfer/SysUnitTransfer_Instance.cs               |   36 +
 Yw.BLL.Unit.Core/04-bll/04-name/SysUnitName_Instance.cs                       |   36 +
 Yw.BLL.Unit.Core/03-localclient/04-name/SysUnitName.cs                        |    8 
 Yw.BLL.Unit.Core/04-bll/04-name/SysUnitName.cs                                |   46 +
 Yw.Vmo.Unit.Core/04-name/SysUnitNameValueSetter.cs                            |   21 
 Directory.Build.props                                                         |   17 
 /dev/null                                                                     |   14 
 Yw.BLL.Unit.Core/03-localclient/01-lang/SysUnitLang.cs                        |    1 
 Yw.Application.Unit.Core/03-value/SysUnitValue_StdController.cs               |    2 
 Yw.BLL.Unit.Core/01-interface/01-lang/ISysUnitLang.cs                         |    1 
 Yw.Service.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user     |    2 
 Yw.Vmo.Unit.Core/Yw.Vmo.Unit.Core.csproj.user                                 |    6 
 Yw.Application.Unit.Core/Yw.Application.Unit.Core.csproj                      |    6 
 Yw.Vmo.Unit.Core/02-type/SysUnitTypeVmo.cs                                    |   50 +
 68 files changed, 1,616 insertions(+), 197 deletions(-)

diff --git a/Directory.Build.props b/Directory.Build.props
new file mode 100644
index 0000000..0abed26
--- /dev/null
+++ b/Directory.Build.props
@@ -0,0 +1,17 @@
+<Project>
+	<PropertyGroup>
+		<DebugType>embedded</DebugType>
+		<DebugSymbols>true</DebugSymbols>
+		<PublishRepositoryUrl>true</PublishRepositoryUrl>
+	</PropertyGroup>
+ 
+	<!--<PropertyGroup Condition="'$(GITLAB_CI)' == 'true'">-->
+	<PropertyGroup Condition="'$(Configuration)' == 'Release'">
+		<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
+		<Deterministic>true</Deterministic>
+		<EmbedUntrackedSources>true</EmbedUntrackedSources>
+	</PropertyGroup>
+	<ItemGroup>
+		<PackageReference Include="Microsoft.SourceLink.GitLab" Version="1.0.0" PrivateAssets="All"/>
+	</ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/Yw.Application.Unit.Core/01-lang/SysUnitLang_Controller.cs b/Yw.Application.Unit.Core/01-lang/SysUnitLang_Controller.cs
index 4d8b4d9..c0f1e80 100644
--- a/Yw.Application.Unit.Core/01-lang/SysUnitLang_Controller.cs
+++ b/Yw.Application.Unit.Core/01-lang/SysUnitLang_Controller.cs
@@ -4,7 +4,7 @@
     /// UnitLang
     /// </summary>
     [Route("Unit/Lang")]
-    [ApiDescriptionSettings("Unit", Name = "鍗曚綅璇█", Order = 10000)]
+    [ApiDescriptionSettings("Unit", Name = "鍗曚綅璇█", Order = 100000)]
     public class SysUnitLang_Controller : IDynamicApiController
     {
         private readonly Service.SysUnitLang _service = new();
diff --git a/Yw.Application.Unit.Core/01-lang/SysUnitLang_StdController.cs b/Yw.Application.Unit.Core/01-lang/SysUnitLang_StdController.cs
index dbc7208..f0433a3 100644
--- a/Yw.Application.Unit.Core/01-lang/SysUnitLang_StdController.cs
+++ b/Yw.Application.Unit.Core/01-lang/SysUnitLang_StdController.cs
@@ -4,7 +4,7 @@
     /// UnitLang
     /// </summary>
     [Route("Unit/Lang/Std")]
-    [ApiDescriptionSettings("Unit", Name = "鍗曚綅璇█(Std)", Order = 9900)]
+    [ApiDescriptionSettings("Unit", Name = "鍗曚綅璇█(Std)", Order = 99000)]
     public class SysUnitLang_StdController : IDynamicApiController
     {
 
diff --git a/Yw.Application.Unit.Core/02-type/SysUnitType_Controller.cs b/Yw.Application.Unit.Core/02-type/SysUnitType_Controller.cs
index 7b43126..cbb56d9 100644
--- a/Yw.Application.Unit.Core/02-type/SysUnitType_Controller.cs
+++ b/Yw.Application.Unit.Core/02-type/SysUnitType_Controller.cs
@@ -4,7 +4,7 @@
     /// UnitType
     /// </summary>
     [Route("Unit/Type")]
-    [ApiDescriptionSettings("Unit", Name = "鍗曚綅绫诲瀷", Order = 9000)]
+    [ApiDescriptionSettings("Unit", Name = "鍗曚綅绫诲瀷", Order = 90000)]
     public class SysUnitType_Controller : IDynamicApiController
     {
         private readonly Service.SysUnitType _service = new();
diff --git a/Yw.Application.Unit.Core/02-type/SysUnitType_StdController.cs b/Yw.Application.Unit.Core/02-type/SysUnitType_StdController.cs
index c0636d0..e97a6b4 100644
--- a/Yw.Application.Unit.Core/02-type/SysUnitType_StdController.cs
+++ b/Yw.Application.Unit.Core/02-type/SysUnitType_StdController.cs
@@ -4,7 +4,7 @@
     /// UnitType
     /// </summary>
     [Route("Unit/Type/Std")]
-    [ApiDescriptionSettings("Unit", Name = "鍗曚綅绫诲瀷(Std)", Order = 8900)]
+    [ApiDescriptionSettings("Unit", Name = "鍗曚綅绫诲瀷(Std)", Order = 89000)]
     public class SysUnitType_StdController : IDynamicApiController
     {
 
diff --git a/Yw.Application.Unit.Core/03-value/SysUnitValue_Controller.cs b/Yw.Application.Unit.Core/03-value/SysUnitValue_Controller.cs
index 6704075..d4b7a7b 100644
--- a/Yw.Application.Unit.Core/03-value/SysUnitValue_Controller.cs
+++ b/Yw.Application.Unit.Core/03-value/SysUnitValue_Controller.cs
@@ -4,7 +4,7 @@
     /// UnitValue
     /// </summary>
     [Route("Unit/Value")]
-    [ApiDescriptionSettings("Unit", Name = "鍗曚綅鍊�", Order = 8000)]
+    [ApiDescriptionSettings("Unit", Name = "鍗曚綅鍊�", Order = 80000)]
     public class SysUnitValue_Controller : IDynamicApiController
     {
         private readonly Service.SysUnitValue _service = new();
diff --git a/Yw.Application.Unit.Core/03-value/SysUnitValue_StdController.cs b/Yw.Application.Unit.Core/03-value/SysUnitValue_StdController.cs
index 383d6a7..3b8df43 100644
--- a/Yw.Application.Unit.Core/03-value/SysUnitValue_StdController.cs
+++ b/Yw.Application.Unit.Core/03-value/SysUnitValue_StdController.cs
@@ -4,7 +4,7 @@
     /// UnitValue
     /// </summary>
     [Route("Unit/Value/Std")]
-    [ApiDescriptionSettings("Unit", Name = "鍗曚綅鍊�(Std)", Order = 7900)]
+    [ApiDescriptionSettings("Unit", Name = "鍗曚綅鍊�(Std)", Order = 79000)]
     public class SysUnitValue_StdController : IDynamicApiController
     {
 
diff --git a/Yw.Application.Unit.Core/04-name/SysUnitName_Controller.cs b/Yw.Application.Unit.Core/04-name/SysUnitName_Controller.cs
index 6eb37d9..e0dbdf2 100644
--- a/Yw.Application.Unit.Core/04-name/SysUnitName_Controller.cs
+++ b/Yw.Application.Unit.Core/04-name/SysUnitName_Controller.cs
@@ -4,7 +4,7 @@
     /// UnitName
     /// </summary>
     [Route("Unit/Name")]
-    [ApiDescriptionSettings("Unit", Name = "鍗曚綅鍚嶇О", Order = 7000)]
+    [ApiDescriptionSettings("Unit", Name = "鍗曚綅鍚嶇О", Order = 70000)]
     public class SysUnitName_Controller : IDynamicApiController
     {
         private readonly Service.SysUnitName _service = new();
diff --git a/Yw.Application.Unit.Core/05-transfer/SysUnitTransfer_Controller.cs b/Yw.Application.Unit.Core/05-transfer/SysUnitTransfer_Controller.cs
index f7eac7b..73af941 100644
--- a/Yw.Application.Unit.Core/05-transfer/SysUnitTransfer_Controller.cs
+++ b/Yw.Application.Unit.Core/05-transfer/SysUnitTransfer_Controller.cs
@@ -4,7 +4,7 @@
     /// UnitTransfer
     /// </summary>
     [Route("Unit/Transfer")]
-    [ApiDescriptionSettings("Unit", Name = "鍗曚綅杞崲", Order = 6000)]
+    [ApiDescriptionSettings("Unit", Name = "鍗曚綅杞崲", Order = 60000)]
     public class SysUnitTransfer_Controller : IDynamicApiController
     {
         private readonly Service.SysUnitTransfer _service = new();
diff --git a/Yw.Application.Unit.Core/06-helper/SysUnitHelper_Controller.cs b/Yw.Application.Unit.Core/06-helper/SysUnitHelper_Controller.cs
index fd3dcda..29e3d2d 100644
--- a/Yw.Application.Unit.Core/06-helper/SysUnitHelper_Controller.cs
+++ b/Yw.Application.Unit.Core/06-helper/SysUnitHelper_Controller.cs
@@ -4,7 +4,7 @@
     /// UnitHelper
     /// </summary>
     [Route("Unit/Helper")]
-    [ApiDescriptionSettings("Unit", Name = "鍗曚綅杈呭姪", Order = 5000)]
+    [ApiDescriptionSettings("Unit", Name = "鍗曚綅杈呭姪", Order = 50000)]
     public class SysUnitHelper_Controller : IDynamicApiController
     {
 
diff --git a/Yw.Application.Unit.Core/09-dbfirst/UnitDbFirst_Controller.cs b/Yw.Application.Unit.Core/09-dbfirst/UnitDbFirst_Controller.cs
new file mode 100644
index 0000000..30b4ec7
--- /dev/null
+++ b/Yw.Application.Unit.Core/09-dbfirst/UnitDbFirst_Controller.cs
@@ -0,0 +1,28 @@
+锘縩amespace Yw.Application
+{
+    /// <summary>
+    /// DbFirst
+    /// </summary>
+    [Route("Unit/DbFirst")]
+    [ApiDescriptionSettings("Unit", Name = "DbFirst", Order = 10000)]
+    public class UnitDbFirst_Controller : IDynamicApiController
+    {
+        /// <summary>
+        /// 鍒濆鍖�
+        /// </summary>
+        [Route("Initial@V1.0")]
+        [HttpGet]
+        public bool Initial()
+        {
+            var bol = Yw.Service.Unit.DbFirstHelper.Initial(out string Msg);
+            if (!bol)
+            {
+                throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.L001, Msg);
+            }
+            return bol;
+        }
+
+
+
+    }
+}
\ No newline at end of file
diff --git a/Yw.Application.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user b/Yw.Application.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
index 4f4477d..b91cbda 100644
--- a/Yw.Application.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
+++ b/Yw.Application.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -4,7 +4,7 @@
 -->
 <Project>
   <PropertyGroup>
-    <History>True|2024-09-12T05:13:17.0661017Z;True|2024-08-21T19:27:37.7910399+08:00;True|2024-08-21T19:27:19.7031491+08:00;True|2024-08-21T19:26:43.3721874+08:00;True|2024-08-10T10:11:45.4227932+08:00;True|2024-06-19T17:12:45.5095576+08:00;True|2024-06-02T18:16:08.6703355+08:00;True|2024-05-31T14:22:59.9089412+08:00;True|2024-05-21T14:19:57.0327597+08:00;True|2024-05-13T09:32:47.5202940+08:00;True|2024-05-08T15:06:02.4935916+08:00;True|2024-04-11T11:48:27.6911791+08:00;True|2024-04-03T09:21:17.2938358+08:00;True|2024-03-30T14:43:35.7624433+08:00;True|2024-03-24T16:04:31.1520708+08:00;True|2024-03-20T13:28:31.4429012+08:00;True|2024-03-08T16:08:21.6186021+08:00;True|2024-01-27T09:16:19.1123592+08:00;True|2024-01-21T14:04:53.3821335+08:00;True|2024-01-20T18:00:33.8425629+08:00;True|2024-01-20T17:58:31.8270324+08:00;True|2024-01-20T12:19:49.4239246+08:00;True|2024-01-14T13:50:48.6498781+08:00;True|2023-12-02T14:29:46.1910954+08:00;True|2023-11-15T09:23:23.1277615+08:00;True|2023-11-13T11:14:23.7047654+08:00;True|2023-11-07T15:28:54.3174797+08:00;True|2023-10-27T13:22:55.8696581+08:00;True|2023-10-21T18:17:31.4681547+08:00;True|2023-10-18T17:29:57.6963038+08:00;True|2023-09-15T12:09:34.4888678+08:00;True|2023-09-14T15:15:33.6113596+08:00;True|2023-08-21T13:09:54.7440181+08:00;True|2023-07-25T15:08:42.3375388+08:00;True|2023-07-17T10:31:53.5181752+08:00;True|2023-07-17T10:31:44.6652344+08:00;True|2023-07-13T12:10:11.2591498+08:00;True|2023-05-25T18:02:16.3580168+08:00;True|2023-05-25T15:44:32.4909866+08:00;</History>
+    <History>True|2025-01-13T06:56:13.0541279Z;True|2025-01-13T12:59:48.7149070+08:00;True|2024-09-12T13:13:17.0661017+08:00;True|2024-08-21T19:27:37.7910399+08:00;True|2024-08-21T19:27:19.7031491+08:00;True|2024-08-21T19:26:43.3721874+08:00;True|2024-08-10T10:11:45.4227932+08:00;True|2024-06-19T17:12:45.5095576+08:00;True|2024-06-02T18:16:08.6703355+08:00;True|2024-05-31T14:22:59.9089412+08:00;True|2024-05-21T14:19:57.0327597+08:00;True|2024-05-13T09:32:47.5202940+08:00;True|2024-05-08T15:06:02.4935916+08:00;True|2024-04-11T11:48:27.6911791+08:00;True|2024-04-03T09:21:17.2938358+08:00;True|2024-03-30T14:43:35.7624433+08:00;True|2024-03-24T16:04:31.1520708+08:00;True|2024-03-20T13:28:31.4429012+08:00;True|2024-03-08T16:08:21.6186021+08:00;True|2024-01-27T09:16:19.1123592+08:00;True|2024-01-21T14:04:53.3821335+08:00;True|2024-01-20T18:00:33.8425629+08:00;True|2024-01-20T17:58:31.8270324+08:00;True|2024-01-20T12:19:49.4239246+08:00;True|2024-01-14T13:50:48.6498781+08:00;True|2023-12-02T14:29:46.1910954+08:00;True|2023-11-15T09:23:23.1277615+08:00;True|2023-11-13T11:14:23.7047654+08:00;True|2023-11-07T15:28:54.3174797+08:00;True|2023-10-27T13:22:55.8696581+08:00;True|2023-10-21T18:17:31.4681547+08:00;True|2023-10-18T17:29:57.6963038+08:00;True|2023-09-15T12:09:34.4888678+08:00;True|2023-09-14T15:15:33.6113596+08:00;True|2023-08-21T13:09:54.7440181+08:00;True|2023-07-25T15:08:42.3375388+08:00;True|2023-07-17T10:31:53.5181752+08:00;True|2023-07-17T10:31:44.6652344+08:00;True|2023-07-13T12:10:11.2591498+08:00;True|2023-05-25T18:02:16.3580168+08:00;True|2023-05-25T15:44:32.4909866+08:00;</History>
     <LastFailureDetails />
   </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/Yw.Application.Unit.Core/Yw.Application.Unit.Core.csproj b/Yw.Application.Unit.Core/Yw.Application.Unit.Core.csproj
index 34bd2f2..fcd4724 100644
--- a/Yw.Application.Unit.Core/Yw.Application.Unit.Core.csproj
+++ b/Yw.Application.Unit.Core/Yw.Application.Unit.Core.csproj
@@ -7,7 +7,7 @@
     <RootNamespace>Yw.Application</RootNamespace>
     <GenerateDocumentationFile>True</GenerateDocumentationFile>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-    <Version>3.1.5</Version>
+    <Version>3.1.7</Version>
     <Description>寮曠敤鍗囩骇</Description>
   </PropertyGroup>
 
@@ -33,8 +33,8 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Yw.Application.Core" Version="3.1.2" />
-    <PackageReference Include="Yw.Dto.Unit.Core" Version="3.1.3" />
+    <PackageReference Include="Yw.Application.Core" Version="3.1.6" />
+    <PackageReference Include="Yw.Dto.Unit.Core" Version="3.1.5" />
   </ItemGroup>
 
 </Project>
diff --git a/Yw.BLL.Unit.Core/00-core/Mapper.cs b/Yw.BLL.Unit.Core/00-core/Mapper.cs
index 588c35c..3bef32c 100644
--- a/Yw.BLL.Unit.Core/00-core/Mapper.cs
+++ b/Yw.BLL.Unit.Core/00-core/Mapper.cs
@@ -43,18 +43,18 @@
 
             #region name
 
-            config.ForType<Model.SysUnitName, SysUnitNameDto>();
+            config.ForType<Model.SysUnitName, Yw.Dto.SysUnitNameDto>();
 
-            config.ForType<SysUnitNameValueSetter, Model.SysUnitNameValueSetter>();
+            config.ForType<Yw.Dto.SysUnitNameValueSetter, Model.SysUnitNameValueSetter>();
 
             #endregion
 
             #region transfer
 
 
-            config.ForType<Model.SysUnitTransfer, SysUnitTransferDto>();
+            config.ForType<Model.SysUnitTransfer, Yw.Dto.SysUnitTransferDto>();
 
-            config.ForType<SysUnitTransferTypeSetter, Model.SysUnitTransferTypeSetter>();
+            config.ForType<Yw.Dto.SysUnitTransferTypeSetter, Model.SysUnitTransferTypeSetter>();
 
             #endregion
 
diff --git a/Yw.BLL.Unit.Core/01-interface/ISysUnitLang.cs b/Yw.BLL.Unit.Core/01-interface/01-lang/ISysUnitLang.cs
similarity index 99%
rename from Yw.BLL.Unit.Core/01-interface/ISysUnitLang.cs
rename to Yw.BLL.Unit.Core/01-interface/01-lang/ISysUnitLang.cs
index 6fd1b23..9890517 100644
--- a/Yw.BLL.Unit.Core/01-interface/ISysUnitLang.cs
+++ b/Yw.BLL.Unit.Core/01-interface/01-lang/ISysUnitLang.cs
@@ -5,5 +5,6 @@
     /// </summary>
     public interface ISysUnitLang : IBaseCAL<AddSysUnitLangInput, UpdateSysUnitLangInput, SysUnitLangDto>, IUpdateCode, IUpdateSorter
     {
+
     }
 }
diff --git a/Yw.BLL.Unit.Core/01-interface/ISysUnitType.cs b/Yw.BLL.Unit.Core/01-interface/02-type/ISysUnitType.cs
similarity index 100%
rename from Yw.BLL.Unit.Core/01-interface/ISysUnitType.cs
rename to Yw.BLL.Unit.Core/01-interface/02-type/ISysUnitType.cs
diff --git a/Yw.BLL.Unit.Core/01-interface/ISysUnitValue.cs b/Yw.BLL.Unit.Core/01-interface/03-value/ISysUnitValue.cs
similarity index 60%
rename from Yw.BLL.Unit.Core/01-interface/ISysUnitValue.cs
rename to Yw.BLL.Unit.Core/01-interface/03-value/ISysUnitValue.cs
index 495c9b1..f35e648 100644
--- a/Yw.BLL.Unit.Core/01-interface/ISysUnitValue.cs
+++ b/Yw.BLL.Unit.Core/01-interface/03-value/ISysUnitValue.cs
@@ -6,5 +6,12 @@
     public interface ISysUnitValue : IBaseCAL<AddSysUnitValueInput, UpdateSysUnitValueInput, SysUnitValueDto>, IUpdateCode, IUpdateSorter
     {
 
+        /// <summary>
+        /// 閫氳繃 TypeID 鑾峰彇
+        /// </summary>
+        Task<List<SysUnitValueDto>> GetByTypeID(long TypeID);
+
+
+
     }
 }
diff --git a/Yw.BLL.Unit.Core/01-interface/04-name/ISysUnitName.cs b/Yw.BLL.Unit.Core/01-interface/04-name/ISysUnitName.cs
new file mode 100644
index 0000000..fb7c5cd
--- /dev/null
+++ b/Yw.BLL.Unit.Core/01-interface/04-name/ISysUnitName.cs
@@ -0,0 +1,31 @@
+锘縩amespace Yw.CAL
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysUnitName : IBaseCAL
+    {
+
+        /// <summary>
+        /// 
+        /// </summary>
+        Task<List<SysUnitNameDto>> GetByValueID(long ValueID);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        Task<SysUnitNameDto> GetByID(long ID);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        Task<List<SysUnitNameDto>> GetByIds(List<long> Ids);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        Task<bool> SetByValueID(long ValueID, List<Yw.Dto.SysUnitNameValueSetter> Setters);
+
+
+    }
+}
diff --git a/Yw.BLL.Unit.Core/01-interface/05-transfer/ISysUnitTransfer.cs b/Yw.BLL.Unit.Core/01-interface/05-transfer/ISysUnitTransfer.cs
new file mode 100644
index 0000000..eed5038
--- /dev/null
+++ b/Yw.BLL.Unit.Core/01-interface/05-transfer/ISysUnitTransfer.cs
@@ -0,0 +1,31 @@
+锘縩amespace Yw.CAL
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysUnitTransfer : IBaseCAL
+    {
+
+        /// <summary>
+        /// 
+        /// </summary>
+        Task<List<SysUnitTransferDto>> GetByTypeID(long TypeID);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        Task<SysUnitTransferDto> GetByID(long ID);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        Task<List<SysUnitTransferDto>> GetByIds(List<long> Ids);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        Task<bool> SetByTypeID(long TypeID, List<Yw.Dto.SysUnitTransferTypeSetter> Setters);
+
+
+    }
+}
diff --git a/Yw.BLL.Unit.Core/01-interface/06-helper/ISysUnitHelper.cs b/Yw.BLL.Unit.Core/01-interface/06-helper/ISysUnitHelper.cs
new file mode 100644
index 0000000..edfb902
--- /dev/null
+++ b/Yw.BLL.Unit.Core/01-interface/06-helper/ISysUnitHelper.cs
@@ -0,0 +1,30 @@
+锘縩amespace Yw.CAL
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysUnitHelper
+    {
+        /// <summary>
+        /// 鑾峰彇鍗曚綅鍚嶇О
+        /// </summary>
+        Task<string> GetUnitName(string UnitType, string UnitValue, string UnitLang);
+
+        /// <summary>
+        /// 鑾峰彇鍗曚綅鍚嶇О鍒楄〃
+        /// </summary>
+        Task<List<string>> GetUnitNameList(string UnitType, string UnitLang);
+
+        /// <summary>
+        /// 鑾峰彇鍗曚綅瀛楀吀
+        /// </summary>
+        Task<Dictionary<string, string>> GetUnitDict(string UnitType, string UnitLang);
+
+        /// <summary>
+        /// 鍗曚綅杞崲
+        /// </summary>
+        Task<double> Transfer(string UnitType, string FromUnitValue, string ToUnitValue, double FromValue);
+
+
+    }
+}
diff --git a/Yw.BLL.Unit.Core/01-interface/09-dbfirst/IUnitDbFirstHelper.cs b/Yw.BLL.Unit.Core/01-interface/09-dbfirst/IUnitDbFirstHelper.cs
new file mode 100644
index 0000000..546ec79
--- /dev/null
+++ b/Yw.BLL.Unit.Core/01-interface/09-dbfirst/IUnitDbFirstHelper.cs
@@ -0,0 +1,13 @@
+锘縩amespace Yw.CAL
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface IUnitDbFirstHelper : IBaseCAL
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        Task<bool> Initial();
+    }
+}
diff --git a/Yw.BLL.Unit.Core/01-interface/ISysUnitName.cs b/Yw.BLL.Unit.Core/01-interface/ISysUnitName.cs
deleted file mode 100644
index 7d6fd55..0000000
--- a/Yw.BLL.Unit.Core/01-interface/ISysUnitName.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-锘縩amespace Yw.CAL
-{
-    /// <summary>
-    /// 
-    /// </summary>
-    public interface ISysUnitName
-    {
-        Task<List<SysUnitNameDto>> GetByValueID(long ValueID);
-
-        Task<SysUnitNameDto> GetByID(long ID);
-
-        Task<List<SysUnitNameDto>> GetByIds(List<long> Ids);
-
-        Task<bool> SetByValueID(long ValueID, List<SysUnitNameValueSetter> Setters);
-    }
-}
diff --git a/Yw.BLL.Unit.Core/01-interface/ISysUnitTransfer.cs b/Yw.BLL.Unit.Core/01-interface/ISysUnitTransfer.cs
deleted file mode 100644
index a4e1816..0000000
--- a/Yw.BLL.Unit.Core/01-interface/ISysUnitTransfer.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-锘縩amespace Yw.CAL
-{
-    /// <summary>
-    /// 
-    /// </summary>
-    public interface ISysUnitTransfer
-    {
-        Task<List<SysUnitTransferDto>> GetByTypeID(long TypeID);
-
-        Task<SysUnitTransferDto> GetByID(long ID);
-
-        Task<List<SysUnitTransferDto>> GetByIds(List<long> Ids);
-
-        Task<bool> SetByTypeID(long TypeID, List<SysUnitTransferTypeSetter> Setters);
-    }
-}
diff --git a/Yw.BLL.Unit.Core/02-httpclient/SysUnitLang.cs b/Yw.BLL.Unit.Core/02-httpclient/01-lang/SysUnitLang.cs
similarity index 100%
rename from Yw.BLL.Unit.Core/02-httpclient/SysUnitLang.cs
rename to Yw.BLL.Unit.Core/02-httpclient/01-lang/SysUnitLang.cs
diff --git a/Yw.BLL.Unit.Core/02-httpclient/SysUnitType.cs b/Yw.BLL.Unit.Core/02-httpclient/02-type/SysUnitType.cs
similarity index 100%
rename from Yw.BLL.Unit.Core/02-httpclient/SysUnitType.cs
rename to Yw.BLL.Unit.Core/02-httpclient/02-type/SysUnitType.cs
diff --git a/Yw.BLL.Unit.Core/02-httpclient/03-value/SysUnitValue.cs b/Yw.BLL.Unit.Core/02-httpclient/03-value/SysUnitValue.cs
new file mode 100644
index 0000000..49e5892
--- /dev/null
+++ b/Yw.BLL.Unit.Core/02-httpclient/03-value/SysUnitValue.cs
@@ -0,0 +1,28 @@
+锘�
+namespace Yw.CAL.HttpClient
+{
+    /// <summary>
+    /// 鍗曚綅鍊�
+    /// </summary>
+    public partial class SysUnitValue : BaseCAL_Code_Sorter<AddSysUnitValueInput, UpdateSysUnitValueInput, SysUnitValueDto>, ISysUnitValue
+    {
+        protected override string Prefix
+        {
+            get { return $"{Yw.BLL.Unit.ConfigHelper.HttpUrl}/Unit/Value"; }
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<List<SysUnitValueDto>> GetByTypeID(long TypeID)
+        {
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(TypeID),TypeID)
+            };
+            return await GetUrl("GetByTypeID@V1.0").Get<List<SysUnitValueDto>>(paras);
+        }
+
+
+    }
+}
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/02-httpclient/04-name/SysUnitName.cs b/Yw.BLL.Unit.Core/02-httpclient/04-name/SysUnitName.cs
new file mode 100644
index 0000000..d0080ff
--- /dev/null
+++ b/Yw.BLL.Unit.Core/02-httpclient/04-name/SysUnitName.cs
@@ -0,0 +1,73 @@
+锘縩amespace Yw.CAL.HttpClient
+{
+    /// <summary>
+    /// 鍗曚綅鍚嶇О
+    /// </summary>
+    public partial class SysUnitName : BaseCAL, ISysUnitName
+    {
+        protected override string Prefix
+        {
+            get { return $"{Yw.BLL.Unit.ConfigHelper.HttpUrl}/Unit/Name"; }
+        }
+
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<List<SysUnitNameDto>> GetByValueID(long ValueID)
+        {
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(ValueID),ValueID)
+            };
+            return await GetUrl("GetByValueID@V1.0").Get<List<SysUnitNameDto>>(paras);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<SysUnitNameDto> GetByID(long ID)
+        {
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(ID),ID)
+            };
+            return await GetUrl("GetByID@V1.0").Get<SysUnitNameDto>(paras);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<List<SysUnitNameDto>> GetByIds(List<long> Ids)
+        {
+            if (Ids == null || Ids.Count < 1)
+            {
+                return default;
+            }
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(Ids),LongListHelper.ToString(Ids))
+            };
+            return await GetUrl("GetByIds@V1.0").Get<List<SysUnitNameDto>>(paras);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<bool> SetByValueID(long ValueID, List<Yw.Dto.SysUnitNameValueSetter> Setters)
+        {
+            if (Setters == null || !Setters.Any())
+            {
+                return default;
+            }
+            var input = new Yw.Dto.SetSysUnitNameValueInput()
+            {
+                ValueID = ValueID,
+                Setters = Setters
+            };
+            return await GetUrl("SetByValueID@V1.0").Post<bool>(input);
+        }
+
+
+    }
+}
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/02-httpclient/05-transfer/SysUnitTransfer.cs b/Yw.BLL.Unit.Core/02-httpclient/05-transfer/SysUnitTransfer.cs
new file mode 100644
index 0000000..8c9b324
--- /dev/null
+++ b/Yw.BLL.Unit.Core/02-httpclient/05-transfer/SysUnitTransfer.cs
@@ -0,0 +1,72 @@
+锘縩amespace Yw.CAL.HttpClient
+{
+    /// <summary>
+    /// 鍗曚綅杞崲
+    /// </summary>
+    public partial class SysUnitTransfer : BaseCAL, ISysUnitTransfer
+    {
+        protected override string Prefix
+        {
+            get { return $"{Yw.BLL.Unit.ConfigHelper.HttpUrl}/Unit/Transfer"; }
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<List<SysUnitTransferDto>> GetByTypeID(long TypeID)
+        {
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(TypeID),TypeID)
+            };
+            return await GetUrl("GetByTypeID@V1.0").Get<List<SysUnitTransferDto>>(paras);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<SysUnitTransferDto> GetByID(long ID)
+        {
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(ID),ID)
+            };
+            return await GetUrl("GetByID@V1.0").Get<SysUnitTransferDto>(paras);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<List<SysUnitTransferDto>> GetByIds(List<long> Ids)
+        {
+            if (Ids == null || Ids.Count < 1)
+            {
+                return default;
+            }
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(Ids),LongListHelper.ToString(Ids))
+            };
+            return await GetUrl("GetByIds@V1.0").Get<List<SysUnitTransferDto>>(paras);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<bool> SetByTypeID(long TypeID, List<Yw.Dto.SysUnitTransferTypeSetter> Setters)
+        {
+            if (Setters == null || !Setters.Any())
+            {
+                return default;
+            }
+            var input = new Yw.Dto.SetSysUnitTransferTypeInput()
+            {
+                TypeID = TypeID,
+                Setters = Setters
+            };
+            return await GetUrl("SetByTypeID@V1.0").Post<bool>(input);
+        }
+
+
+    }
+}
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/02-httpclient/06-helper/SysUnitHelper.cs b/Yw.BLL.Unit.Core/02-httpclient/06-helper/SysUnitHelper.cs
new file mode 100644
index 0000000..ce4e779
--- /dev/null
+++ b/Yw.BLL.Unit.Core/02-httpclient/06-helper/SysUnitHelper.cs
@@ -0,0 +1,73 @@
+锘縩amespace Yw.CAL.HttpClient
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public partial class SysUnitHelper : BaseCAL, ISysUnitHelper
+    {
+        protected override string Prefix
+        {
+            get { return $"{Yw.BLL.Unit.ConfigHelper.HttpUrl}/Unit/Helper"; }
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<string> GetUnitName(string UnitType, string UnitValue, string UnitLang)
+        {
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(UnitType),UnitType),
+                (nameof(UnitValue),UnitValue),
+                (nameof(UnitLang),UnitLang)
+            };
+            return await GetUrl("GetUnitName@V1.0").Get<string>(paras);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<List<string>> GetUnitNameList(string UnitType, string UnitLang)
+        {
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(UnitType),UnitType),
+                (nameof(UnitLang),UnitLang)
+            };
+            return await GetUrl("GetUnitNameList@V1.0").Get<List<string>>(paras);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<Dictionary<string, string>> GetUnitDict(string UnitType, string UnitLang)
+        {
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(UnitType),UnitType),
+                (nameof(UnitLang),UnitLang)
+            };
+            return await GetUrl("GetUnitDict@V1.0").Get<Dictionary<string, string>>(paras);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<double> Transfer(string UnitType, string FromUnitValue, string ToUnitValue, double FromValue)
+        {
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(UnitType),UnitType),
+                (nameof(FromUnitValue),FromUnitValue),
+                (nameof(ToUnitValue),ToUnitValue),
+                (nameof(FromValue),FromValue)
+            };
+            return await GetUrl("Transfer@V1.0").Get<double>(paras);
+        }
+
+
+
+
+
+    }
+}
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/02-httpclient/09-dbfirst/UnitDbFirstHelper.cs b/Yw.BLL.Unit.Core/02-httpclient/09-dbfirst/UnitDbFirstHelper.cs
new file mode 100644
index 0000000..dd7ae93
--- /dev/null
+++ b/Yw.BLL.Unit.Core/02-httpclient/09-dbfirst/UnitDbFirstHelper.cs
@@ -0,0 +1,23 @@
+锘縩amespace Yw.CAL.HttpClient
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UnitDbFirstHelper : BaseCAL, IUnitDbFirstHelper
+    {
+        protected override string Prefix
+        {
+            get { return $"{Yw.BLL.Unit.ConfigHelper.HttpUrl}/Unit/DbFirst"; }
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<bool> Initial()
+        {
+            return await GetUrl("Initial@V1.0").Get<bool>();
+        }
+
+
+    }
+}
diff --git a/Yw.BLL.Unit.Core/02-httpclient/SysUnitName.cs b/Yw.BLL.Unit.Core/02-httpclient/SysUnitName.cs
deleted file mode 100644
index e549fd8..0000000
--- a/Yw.BLL.Unit.Core/02-httpclient/SysUnitName.cs
+++ /dev/null
@@ -1,77 +0,0 @@
-锘縩amespace Yw.CAL.HttpClient
-{
-    /// <summary>
-    /// 鍗曚綅鍚嶇О
-    /// </summary>
-    public partial class SysUnitName : ISysUnitName
-    {
-        protected string Prefix
-        {
-            get { return $"{Yw.BLL.Unit.ConfigHelper.HttpUrl}/Unit/Name"; }
-        }
-
-        /// <summary>
-        /// 鑾峰彇url
-        /// </summary>
-        protected virtual string GetUrl(string cmd)
-        {
-            return $"{Prefix}/{cmd}";
-        }
-
-        public async Task<List<SysUnitNameDto>> GetByValueID(long ValueID)
-        {
-            if (ValueID < 1)
-            {
-                return default;
-            }
-            var url = GetUrl("GetByValueID@V1.0");
-            var jsonString = await RequestHelper.Request(url)
-              .SetQueryParam(nameof(ValueID), ValueID).GetAsync().ReceiveString();
-            var result = JsonHelper.Json2Object<Result<List<SysUnitNameDto>>>(jsonString);
-            result.TryThrowException();
-            return result.Data;
-        }
-
-        public async Task<SysUnitNameDto> GetByID(long ID)
-        {
-            if (ID < 1)
-            {
-                return default;
-            }
-            var url = GetUrl("GetByID@V1.0");
-            var jsonString = await RequestHelper.Request(url)
-              .SetQueryParam(nameof(ID), ID).GetAsync().ReceiveString();
-            var result = JsonHelper.Json2Object<Result<SysUnitNameDto>>(jsonString);
-            result.TryThrowException();
-            return result.Data;
-        }
-
-        public async Task<List<SysUnitNameDto>> GetByIds(List<long> Ids)
-        {
-            if (Ids == null || Ids.Count < 1)
-            {
-                return default;
-            }
-            var url = GetUrl("GetByIds@V1.0");
-            var jsonString = await RequestHelper.Request(url)
-              .SetQueryParam(nameof(Ids), LongListHelper.ToString(Ids)).GetAsync().ReceiveString();
-            var result = JsonHelper.Json2Object<Result<List<SysUnitNameDto>>>(jsonString);
-            result.TryThrowException();
-            return result.Data;
-        }
-
-        public async Task<bool> SetByValueID(long ValueID, List<SysUnitNameValueSetter> Setters)
-        {
-            if (Setters == null || !Setters.Any())
-            {
-                return default;
-            }
-            var url = GetUrl("SetByValueID@V1.0");
-            var jsonString = await RequestHelper.Request(url)
-              .PostJsonAsync(new { ValueID, Setters }).ReceiveString();
-            var result = JsonHelper.Json2Object<Result<bool>>(jsonString);
-            result.TryThrowException();
-            return result.Data;
-        }
-    }
-}
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/02-httpclient/SysUnitTransfer.cs b/Yw.BLL.Unit.Core/02-httpclient/SysUnitTransfer.cs
deleted file mode 100644
index 92d4a77..0000000
--- a/Yw.BLL.Unit.Core/02-httpclient/SysUnitTransfer.cs
+++ /dev/null
@@ -1,77 +0,0 @@
-锘縩amespace Yw.CAL.HttpClient
-{
-    /// <summary>
-    /// 鍗曚綅杞崲
-    /// </summary>
-    public partial class SysUnitTransfer : ISysUnitTransfer
-    {
-        protected string Prefix
-        {
-            get { return $"{Yw.BLL.Unit.ConfigHelper.HttpUrl}/Unit/Transfer"; }
-        }
-
-        /// <summary>
-        /// 鑾峰彇url
-        /// </summary>
-        protected string GetUrl(string cmd)
-        {
-            return $"{Prefix}/{cmd}";
-        }
-
-        public async Task<List<SysUnitTransferDto>> GetByTypeID(long TypeID)
-        {
-            if (TypeID < 1)
-            {
-                return default;
-            }
-            var url = GetUrl("GetByTypeID@V1.0");
-            var jsonString = await RequestHelper.Request(url)
-              .SetQueryParam(nameof(TypeID), TypeID).GetAsync().ReceiveString();
-            var result = JsonHelper.Json2Object<Result<List<SysUnitTransferDto>>>(jsonString);
-            result.TryThrowException();
-            return result.Data;
-        }
-
-        public async Task<SysUnitTransferDto> GetByID(long ID)
-        {
-            if (ID < 1)
-            {
-                return default;
-            }
-            var url = GetUrl("GetByID@V1.0");
-            var jsonString = await RequestHelper.Request(url)
-              .SetQueryParam(nameof(ID), ID).GetAsync().ReceiveString();
-            var result = JsonHelper.Json2Object<Result<SysUnitTransferDto>>(jsonString);
-            result.TryThrowException();
-            return result.Data;
-        }
-
-        public async Task<List<SysUnitTransferDto>> GetByIds(List<long> Ids)
-        {
-            if (Ids == null || Ids.Count < 1)
-            {
-                return default;
-            }
-            var url = GetUrl("GetByIds@V1.0");
-            var jsonString = await RequestHelper.Request(url)
-              .SetQueryParam(nameof(Ids), LongListHelper.ToString(Ids)).GetAsync().ReceiveString();
-            var result = JsonHelper.Json2Object<Result<List<SysUnitTransferDto>>>(jsonString);
-            result.TryThrowException();
-            return result.Data;
-        }
-
-        public async Task<bool> SetByTypeID(long TypeID, List<SysUnitTransferTypeSetter> Setters)
-        {
-            if (Setters == null || !Setters.Any())
-            {
-                return default;
-            }
-            var url = GetUrl("SetByTypeID@V1.0");
-            var jsonString = await RequestHelper.Request(url)
-              .PostJsonAsync(new { TypeID, Setters }).ReceiveString();
-            var result = JsonHelper.Json2Object<Result<bool>>(jsonString);
-            result.TryThrowException();
-            return result.Data;
-        }
-    }
-}
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/02-httpclient/SysUnitValue.cs b/Yw.BLL.Unit.Core/02-httpclient/SysUnitValue.cs
deleted file mode 100644
index 589c81c..0000000
--- a/Yw.BLL.Unit.Core/02-httpclient/SysUnitValue.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-锘縩amespace Yw.CAL.HttpClient
-{
-    /// <summary>
-    /// 鍗曚綅鍊�
-    /// </summary>
-    public partial class SysUnitValue : BaseCAL_Code_Sorter<AddSysUnitValueInput, UpdateSysUnitValueInput, SysUnitValueDto>, ISysUnitValue
-    {
-        protected override string Prefix
-        {
-            get { return $"{Yw.BLL.Unit.ConfigHelper.HttpUrl}/Unit/Value"; }
-        }
-
-    }
-}
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/03-localclient/SysUnitLang.cs b/Yw.BLL.Unit.Core/03-localclient/01-lang/SysUnitLang.cs
similarity index 99%
rename from Yw.BLL.Unit.Core/03-localclient/SysUnitLang.cs
rename to Yw.BLL.Unit.Core/03-localclient/01-lang/SysUnitLang.cs
index 0e8c120..e8747eb 100644
--- a/Yw.BLL.Unit.Core/03-localclient/SysUnitLang.cs
+++ b/Yw.BLL.Unit.Core/03-localclient/01-lang/SysUnitLang.cs
@@ -263,5 +263,6 @@
         }
 
         #endregion
+
     }
 }
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/03-localclient/SysUnitType.cs b/Yw.BLL.Unit.Core/03-localclient/02-type/SysUnitType.cs
similarity index 99%
rename from Yw.BLL.Unit.Core/03-localclient/SysUnitType.cs
rename to Yw.BLL.Unit.Core/03-localclient/02-type/SysUnitType.cs
index e8733e7..7843d5b 100644
--- a/Yw.BLL.Unit.Core/03-localclient/SysUnitType.cs
+++ b/Yw.BLL.Unit.Core/03-localclient/02-type/SysUnitType.cs
@@ -264,5 +264,7 @@
         }
 
         #endregion
+
+
     }
 }
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/03-localclient/SysUnitValue.cs b/Yw.BLL.Unit.Core/03-localclient/03-value/SysUnitValue.cs
similarity index 100%
rename from Yw.BLL.Unit.Core/03-localclient/SysUnitValue.cs
rename to Yw.BLL.Unit.Core/03-localclient/03-value/SysUnitValue.cs
diff --git a/Yw.BLL.Unit.Core/03-localclient/SysUnitName.cs b/Yw.BLL.Unit.Core/03-localclient/04-name/SysUnitName.cs
similarity index 86%
rename from Yw.BLL.Unit.Core/03-localclient/SysUnitName.cs
rename to Yw.BLL.Unit.Core/03-localclient/04-name/SysUnitName.cs
index 94a8eb3..2bec175 100644
--- a/Yw.BLL.Unit.Core/03-localclient/SysUnitName.cs
+++ b/Yw.BLL.Unit.Core/03-localclient/04-name/SysUnitName.cs
@@ -48,16 +48,16 @@
         /// <summary>
         /// 閫氳繃 ValueID 璁剧疆
         /// </summary>  
-        public async Task<bool> SetByValueID(long ValueID, List<SysUnitNameValueSetter> Setters)
+        public async Task<bool> SetByValueID(long ValueID, List<Yw.Dto.SysUnitNameValueSetter> Setters)
         {
             return await Task.Factory.StartNew(() =>
             {
-                var dto_list = Setters?.Select(x =>
+                var modelList = Setters?.Select(x =>
                 {
-                    var model = x.Adapt<SysUnitNameValueSetter, Model.SysUnitNameValueSetter>();
+                    var model = x.Adapt<Yw.Dto.SysUnitNameValueSetter, Model.SysUnitNameValueSetter>();
                     return model;
                 }).ToList();
-                return _service.SetByValueID(ValueID, dto_list);
+                return _service.SetByValueID(ValueID, modelList);
             });
         }
 
diff --git a/Yw.BLL.Unit.Core/03-localclient/SysUnitTransfer.cs b/Yw.BLL.Unit.Core/03-localclient/05-transfer/SysUnitTransfer.cs
similarity index 83%
rename from Yw.BLL.Unit.Core/03-localclient/SysUnitTransfer.cs
rename to Yw.BLL.Unit.Core/03-localclient/05-transfer/SysUnitTransfer.cs
index 735ae80..b7e883b 100644
--- a/Yw.BLL.Unit.Core/03-localclient/SysUnitTransfer.cs
+++ b/Yw.BLL.Unit.Core/03-localclient/05-transfer/SysUnitTransfer.cs
@@ -49,18 +49,19 @@
         /// <summary>
         /// 閫氳繃 TypeID 璁剧疆
         /// </summary>  
-        public async Task<bool> SetByTypeID(long TypeID, List<SysUnitTransferTypeSetter> Setters)
+        public async Task<bool> SetByTypeID(long TypeID, List<Yw.Dto.SysUnitTransferTypeSetter> Setters)
         {
             return await Task.Factory.StartNew(() =>
             {
-                var dto_list = Setters?.Select(x =>
+                var modelList = Setters?.Select(x =>
                 {
-                    var model = x.Adapt<SysUnitTransferTypeSetter, Model.SysUnitTransferTypeSetter>();
+                    var model = x.Adapt<Yw.Dto.SysUnitTransferTypeSetter, Model.SysUnitTransferTypeSetter>();
                     return model;
                 }).ToList();
-                return _service.SetByTypeID(TypeID, dto_list);
+                return _service.SetByTypeID(TypeID, modelList);
             });
         }
 
+
     }
 }
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/03-localclient/06-helper/SysUnitHelper.cs b/Yw.BLL.Unit.Core/03-localclient/06-helper/SysUnitHelper.cs
new file mode 100644
index 0000000..23617b1
--- /dev/null
+++ b/Yw.BLL.Unit.Core/03-localclient/06-helper/SysUnitHelper.cs
@@ -0,0 +1,59 @@
+锘縩amespace Yw.CAL.LocalClient
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public partial class SysUnitHelper : ISysUnitHelper
+    {
+        private readonly Yw.Service.SysUnitTransfer _service = new();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<string> GetUnitName(string UnitType, string UnitValue, string UnitLang)
+        {
+            return await Task.Factory.StartNew(() =>
+            {
+                return Service.SysUnitHelper.GetUnitName(UnitType, UnitValue, UnitLang);
+            });
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<List<string>> GetUnitNameList(string UnitType, string UnitLang)
+        {
+            return await Task.Factory.StartNew(() =>
+            {
+                return Service.SysUnitHelper.GetUnitNameList(UnitType, UnitLang);
+            });
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<Dictionary<string, string>> GetUnitDict(string UnitType, string UnitLang)
+        {
+            return await Task.Factory.StartNew(() =>
+            {
+                return Service.SysUnitHelper.GetUnitDict(UnitType, UnitLang);
+            });
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<double> Transfer(string UnitType, string FromUnitValue, string ToUnitValue, double FromValue)
+        {
+            return await Task.Factory.StartNew(() =>
+            {
+                return Service.SysUnitHelper.Transfer(FromValue, UnitType, FromUnitValue, ToUnitValue);
+            });
+        }
+
+
+
+
+
+    }
+}
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/03-localclient/09-dbfirst/UnitDbFirstHelper.cs b/Yw.BLL.Unit.Core/03-localclient/09-dbfirst/UnitDbFirstHelper.cs
new file mode 100644
index 0000000..c0c1a0f
--- /dev/null
+++ b/Yw.BLL.Unit.Core/03-localclient/09-dbfirst/UnitDbFirstHelper.cs
@@ -0,0 +1,27 @@
+锘縩amespace Yw.CAL.LocalClient
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UnitDbFirstHelper : IUnitDbFirstHelper
+    {
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<bool> Initial()
+        {
+            return await Task.Run(() =>
+            {
+                var bol = Yw.Service.Unit.DbFirstHelper.Initial(out string Msg);
+                if (!bol)
+                {
+                    throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.L001, Msg);
+                }
+                return bol;
+            });
+        }
+
+
+    }
+}
diff --git a/Yw.BLL.Unit.Core/04-bll/00-helper/CALCreateHelper.cs b/Yw.BLL.Unit.Core/04-bll/00-core/CALCreateHelper.cs
similarity index 100%
rename from Yw.BLL.Unit.Core/04-bll/00-helper/CALCreateHelper.cs
rename to Yw.BLL.Unit.Core/04-bll/00-core/CALCreateHelper.cs
diff --git a/Yw.BLL.Unit.Core/04-bll/01-lang/SysUnitLang.cs b/Yw.BLL.Unit.Core/04-bll/01-lang/SysUnitLang.cs
index aaf202f..310c1c3 100644
--- a/Yw.BLL.Unit.Core/04-bll/01-lang/SysUnitLang.cs
+++ b/Yw.BLL.Unit.Core/04-bll/01-lang/SysUnitLang.cs
@@ -3,95 +3,134 @@
     /// <summary>
     /// 鍗曚綅璇█
     /// </summary>
-    public partial class SysUnitLang : Yw.CAL.ISysUnitLang
+    public partial class SysUnitLang
     {
         private readonly Yw.CAL.ISysUnitLang _cal = CALCreateHelper.CreateCAL<Yw.CAL.ISysUnitLang>();
 
         #region Query銆�
-        public async Task<List<SysUnitLangDto>> GetAll()
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<List<SysUnitLangVmo>> GetAll()
         {
-            return await _cal.GetAll();
+            var dtoList = await _cal.GetAll();
+            return Dto2Vmos(dtoList);
         }
 
-        public async Task<SysUnitLangDto> GetByID(long ID)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<SysUnitLangVmo> GetByID(long ID)
         {
-            return await _cal.GetByID(ID);
+            var dto = await _cal.GetByID(ID);
+            return Dto2Vmo(dto);
         }
 
-        public async Task<List<SysUnitLangDto>> GetByIds(List<long> Ids)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<List<SysUnitLangVmo>> GetByIds(List<long> Ids)
         {
-            return await _cal.GetByIds(Ids);
+            if (Ids == null || Ids.Count < 1)
+            {
+                return default;
+            }
+            var dtoList = await _cal.GetByIds(Ids);
+            return Dto2Vmos(dtoList);
         }
 
         #endregion
 
         #region Insert
 
-        public async Task<long> Insert(AddSysUnitLangInput model)
+        /// <summary>
+        /// 鎻掑叆涓�鏉�
+        /// </summary>
+        public virtual async Task<long> Insert(SysUnitLangVmo vmo)
         {
-            return await _cal.Insert(model);
+            var dto = Vmo2AddDto(vmo);
+            var id = await _cal.Insert(dto);
+            return id;
         }
 
-        public async Task<bool> Inserts(List<AddSysUnitLangInput> list)
+        /// <summary>
+        /// 鎻掑叆澶氭潯
+        /// </summary>
+        public virtual async Task<bool> Inserts(List<SysUnitLangVmo> vmoList)
         {
-            return await _cal.Inserts(list);
-        }
-
-        public async Task<bool> BulkInserts(List<AddSysUnitLangInput> list)
-        {
-            return await _cal.BulkInserts(list);
+            var dtoList = Vmo2AddDtos(vmoList);
+            var bol = await _cal.Inserts(dtoList);
+            return bol;
         }
 
         #endregion
 
         #region Update
 
-        public async Task<bool> Update(UpdateSysUnitLangInput model)
+        /// <summary>
+        /// 鏇存柊
+        /// </summary>
+        public virtual async Task<bool> Update(SysUnitLangVmo vmo)
         {
-            return await _cal.Update(model);
+            var dto = Vmo2UpdateDto(vmo);
+            var bol = await _cal.Update(dto);
+            return bol;
         }
 
-        public async Task<bool> Updates(List<UpdateSysUnitLangInput> list)
+        /// <summary>
+        /// 鎵归噺鏇存柊
+        /// </summary>
+        public virtual async Task<bool> Updates(List<SysUnitLangVmo> vmoList)
         {
-            return await _cal.Updates(list);
+            var dtoList = Vmo2UpdateDtos(vmoList);
+            var bol = await _cal.Updates(dtoList);
+            return bol;
         }
 
-        public async Task<bool> BulkUpdates(List<UpdateSysUnitLangInput> list)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> UpdateCode(long ID, string Code)
         {
-            return await _cal.BulkUpdates(list);
+            var bol = await _cal.UpdateCode(ID, Code);
+            return bol;
         }
 
-        public async Task<bool> UpdateCode(long ID, string Code)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> UpdateSortCode(long ID, int SortCode)
         {
-            return await _cal.UpdateCode(ID, Code);
+            var bol = await _cal.UpdateSortCode(ID, SortCode);
+            return bol;
         }
 
-        public async Task<bool> UpdateSortCode(long ID, int SortCode)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> UpdateSorter(List<Yw.Vmo.Sorter> Sorters)
         {
-            return await _cal.UpdateSortCode(ID, SortCode);
-        }
-
-        public async Task<bool> UpdateSorter(List<UpdateSortCodeInput> Sorters)
-        {
-            return await _cal.UpdateSorter(Sorters);
+            var dtoList = Sorters.ToDtoList();
+            var bol = await _cal.UpdateSorter(dtoList);
+            return bol;
         }
 
         #endregion
 
         #region Delete銆�
-        public async Task<bool> DeleteByID(long ID)
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> DeleteByID(long ID)
         {
             return await _cal.DeleteByID(ID);
         }
-        public async Task<bool> DeleteByIds(List<long> Ids)
-        {
-            return await _cal.DeleteByIds(Ids);
-        }
 
-        public async Task<bool> DeleteAll()
-        {
-            return await _cal.DeleteAll();
-        }
+
         #endregion
+
+
     }
 }
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/04-bll/01-lang/SysUnitLang_Instance.cs b/Yw.BLL.Unit.Core/04-bll/01-lang/SysUnitLang_Instance.cs
new file mode 100644
index 0000000..02ead9f
--- /dev/null
+++ b/Yw.BLL.Unit.Core/04-bll/01-lang/SysUnitLang_Instance.cs
@@ -0,0 +1,84 @@
+锘縩amespace Yw.BLL
+{
+    public partial class SysUnitLang
+    {
+        //dto to vmo
+        internal static Yw.Vmo.SysUnitLangVmo Dto2Vmo(Yw.Dto.SysUnitLangDto dto)
+        {
+            if (dto == null)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Dto.SysUnitLangDto, Yw.Vmo.SysUnitLangVmo>()
+            ).CreateMapper();
+            var vmo = mapper.Map<Yw.Dto.SysUnitLangDto, Yw.Vmo.SysUnitLangVmo>(dto);
+            return vmo;
+        }
+
+        //dto to vmos
+        internal static List<Yw.Vmo.SysUnitLangVmo> Dto2Vmos(List<Yw.Dto.SysUnitLangDto> dtos)
+        {
+            if (dtos == null || dtos.Count < 1)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Dto.SysUnitLangDto, Yw.Vmo.SysUnitLangVmo>()
+            ).CreateMapper();
+            var vmos = mapper.Map<List<Yw.Dto.SysUnitLangDto>, List<Yw.Vmo.SysUnitLangVmo>>(dtos);
+            return vmos;
+        }
+
+        //vmo to add dto
+        internal static Yw.Dto.AddSysUnitLangInput Vmo2AddDto(Yw.Vmo.SysUnitLangVmo vmo)
+        {
+            if (vmo == null)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Vmo.SysUnitLangVmo, Yw.Dto.AddSysUnitLangInput>()
+            ).CreateMapper();
+            var dto = mapper.Map<Yw.Vmo.SysUnitLangVmo, Yw.Dto.AddSysUnitLangInput>(vmo);
+            return dto;
+        }
+
+        //vmo to add dtos
+        internal static List<Yw.Dto.AddSysUnitLangInput> Vmo2AddDtos(List<Yw.Vmo.SysUnitLangVmo> vmoList)
+        {
+            if (vmoList == null || vmoList.Count < 1)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Vmo.SysUnitLangVmo, Yw.Dto.AddSysUnitLangInput>()
+            ).CreateMapper();
+            var dtoList = mapper.Map<List<Yw.Vmo.SysUnitLangVmo>, List<Yw.Dto.AddSysUnitLangInput>>(vmoList);
+            return dtoList;
+        }
+
+        //vmo to update dto
+        internal static Yw.Dto.UpdateSysUnitLangInput Vmo2UpdateDto(Yw.Vmo.SysUnitLangVmo vmo)
+        {
+            if (vmo == null)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Vmo.SysUnitLangVmo, Yw.Dto.UpdateSysUnitLangInput>()
+            ).CreateMapper();
+            var dto = mapper.Map<Yw.Vmo.SysUnitLangVmo, Yw.Dto.UpdateSysUnitLangInput>(vmo);
+            return dto;
+        }
+
+        //vmo to update dtos
+        internal static List<Yw.Dto.UpdateSysUnitLangInput> Vmo2UpdateDtos(List<Yw.Vmo.SysUnitLangVmo> vmoList)
+        {
+            if (vmoList == null || vmoList.Count < 1)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Vmo.SysUnitLangVmo, Yw.Dto.UpdateSysUnitLangInput>()
+            ).CreateMapper();
+            var dtoList = mapper.Map<List<Yw.Vmo.SysUnitLangVmo>, List<Yw.Dto.UpdateSysUnitLangInput>>(vmoList);
+            return dtoList;
+        }
+
+    }
+}
diff --git a/Yw.BLL.Unit.Core/04-bll/02-type/SysUnitType.cs b/Yw.BLL.Unit.Core/04-bll/02-type/SysUnitType.cs
index 36c2e08..1a9c519 100644
--- a/Yw.BLL.Unit.Core/04-bll/02-type/SysUnitType.cs
+++ b/Yw.BLL.Unit.Core/04-bll/02-type/SysUnitType.cs
@@ -3,95 +3,131 @@
     /// <summary>
     /// 鍗曚綅绫诲瀷
     /// </summary>
-    public partial class SysUnitType : Yw.CAL.ISysUnitType
+    public partial class SysUnitType
     {
         private readonly Yw.CAL.ISysUnitType _cal = CALCreateHelper.CreateCAL<Yw.CAL.ISysUnitType>();
 
         #region Query銆�
-        public async Task<List<SysUnitTypeDto>> GetAll()
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<List<SysUnitTypeVmo>> GetAll()
         {
-            return await _cal.GetAll();
+            var dtoList = await _cal.GetAll();
+            return Dto2Vmos(dtoList);
         }
 
-        public async Task<SysUnitTypeDto> GetByID(long ID)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<SysUnitTypeVmo> GetByID(long ID)
         {
-            return await _cal.GetByID(ID);
+            var dto = await _cal.GetByID(ID);
+            return Dto2Vmo(dto);
         }
 
-        public async Task<List<SysUnitTypeDto>> GetByIds(List<long> Ids)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<List<SysUnitTypeVmo>> GetByIds(List<long> Ids)
         {
-            return await _cal.GetByIds(Ids);
+            if (Ids == null || Ids.Count < 1)
+            {
+                return default;
+            }
+            var dtoList = await _cal.GetByIds(Ids);
+            return Dto2Vmos(dtoList);
         }
 
         #endregion
 
         #region Insert
 
-        public async Task<long> Insert(AddSysUnitTypeInput model)
+        /// <summary>
+        /// 鎻掑叆涓�鏉�
+        /// </summary>
+        public virtual async Task<long> Insert(SysUnitTypeVmo vmo)
         {
-            return await _cal.Insert(model);
+            var dto = Vmo2AddDto(vmo);
+            var id = await _cal.Insert(dto);
+            return id;
         }
 
-        public async Task<bool> Inserts(List<AddSysUnitTypeInput> list)
+        /// <summary>
+        /// 鎻掑叆澶氭潯
+        /// </summary>
+        public virtual async Task<bool> Inserts(List<SysUnitTypeVmo> vmoList)
         {
-            return await _cal.Inserts(list);
-        }
-
-        public async Task<bool> BulkInserts(List<AddSysUnitTypeInput> list)
-        {
-            return await _cal.BulkInserts(list);
+            var dtoList = Vmo2AddDtos(vmoList);
+            var bol = await _cal.Inserts(dtoList);
+            return bol;
         }
 
         #endregion
 
         #region Update
 
-        public async Task<bool> Update(UpdateSysUnitTypeInput model)
+        /// <summary>
+        /// 鏇存柊
+        /// </summary>
+        public virtual async Task<bool> Update(SysUnitTypeVmo vmo)
         {
-            return await _cal.Update(model);
+            var dto = Vmo2UpdateDto(vmo);
+            var bol = await _cal.Update(dto);
+            return bol;
         }
 
-        public async Task<bool> Updates(List<UpdateSysUnitTypeInput> list)
+        /// <summary>
+        /// 鎵归噺鏇存柊
+        /// </summary>
+        public virtual async Task<bool> Updates(List<SysUnitTypeVmo> vmoList)
         {
-            return await _cal.Updates(list);
+            var dtoList = Vmo2UpdateDtos(vmoList);
+            var bol = await _cal.Updates(dtoList);
+            return bol;
         }
 
-        public async Task<bool> BulkUpdates(List<UpdateSysUnitTypeInput> list)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> UpdateCode(long ID, string Code)
         {
-            return await _cal.BulkUpdates(list);
+            var bol = await _cal.UpdateCode(ID, Code);
+            return bol;
         }
 
-        public async Task<bool> UpdateCode(long ID, string Code)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> UpdateSortCode(long ID, int SortCode)
         {
-            return await _cal.UpdateCode(ID, Code);
+            var bol = await _cal.UpdateSortCode(ID, SortCode);
+            return bol;
         }
 
-        public async Task<bool> UpdateSortCode(long ID, int SortCode)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> UpdateSorter(List<Yw.Vmo.Sorter> Sorters)
         {
-            return await _cal.UpdateSortCode(ID, SortCode);
-        }
-
-        public async Task<bool> UpdateSorter(List<UpdateSortCodeInput> Sorters)
-        {
-            return await _cal.UpdateSorter(Sorters);
+            var dtoList = Sorters.ToDtoList();
+            var bol = await _cal.UpdateSorter(dtoList);
+            return bol;
         }
 
         #endregion
 
         #region Delete銆�
-        public async Task<bool> DeleteByID(long ID)
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> DeleteByID(long ID)
         {
             return await _cal.DeleteByID(ID);
         }
-        public async Task<bool> DeleteByIds(List<long> Ids)
-        {
-            return await _cal.DeleteByIds(Ids);
-        }
 
-        public async Task<bool> DeleteAll()
-        {
-            return await _cal.DeleteAll();
-        }
         #endregion
 
     }
diff --git a/Yw.BLL.Unit.Core/04-bll/02-type/SysUnitType_Instance.cs b/Yw.BLL.Unit.Core/04-bll/02-type/SysUnitType_Instance.cs
new file mode 100644
index 0000000..d6a6a92
--- /dev/null
+++ b/Yw.BLL.Unit.Core/04-bll/02-type/SysUnitType_Instance.cs
@@ -0,0 +1,84 @@
+锘縩amespace Yw.BLL
+{
+    public partial class SysUnitType
+    {
+        //dto to vmo
+        internal static Yw.Vmo.SysUnitTypeVmo Dto2Vmo(Yw.Dto.SysUnitTypeDto dto)
+        {
+            if (dto == null)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Dto.SysUnitTypeDto, Yw.Vmo.SysUnitTypeVmo>()
+            ).CreateMapper();
+            var vmo = mapper.Map<Yw.Dto.SysUnitTypeDto, Yw.Vmo.SysUnitTypeVmo>(dto);
+            return vmo;
+        }
+
+        //dto to vmos
+        internal static List<Yw.Vmo.SysUnitTypeVmo> Dto2Vmos(List<Yw.Dto.SysUnitTypeDto> dtos)
+        {
+            if (dtos == null || dtos.Count < 1)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Dto.SysUnitTypeDto, Yw.Vmo.SysUnitTypeVmo>()
+            ).CreateMapper();
+            var vmos = mapper.Map<List<Yw.Dto.SysUnitTypeDto>, List<Yw.Vmo.SysUnitTypeVmo>>(dtos);
+            return vmos;
+        }
+
+        //vmo to add dto
+        internal static Yw.Dto.AddSysUnitTypeInput Vmo2AddDto(Yw.Vmo.SysUnitTypeVmo vmo)
+        {
+            if (vmo == null)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Vmo.SysUnitTypeVmo, Yw.Dto.AddSysUnitTypeInput>()
+            ).CreateMapper();
+            var dto = mapper.Map<Yw.Vmo.SysUnitTypeVmo, Yw.Dto.AddSysUnitTypeInput>(vmo);
+            return dto;
+        }
+
+        //vmo to add dtos
+        internal static List<Yw.Dto.AddSysUnitTypeInput> Vmo2AddDtos(List<Yw.Vmo.SysUnitTypeVmo> vmoList)
+        {
+            if (vmoList == null || vmoList.Count < 1)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Vmo.SysUnitTypeVmo, Yw.Dto.AddSysUnitTypeInput>()
+            ).CreateMapper();
+            var dtoList = mapper.Map<List<Yw.Vmo.SysUnitTypeVmo>, List<Yw.Dto.AddSysUnitTypeInput>>(vmoList);
+            return dtoList;
+        }
+
+        //vmo to update dto
+        internal static Yw.Dto.UpdateSysUnitTypeInput Vmo2UpdateDto(Yw.Vmo.SysUnitTypeVmo vmo)
+        {
+            if (vmo == null)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Vmo.SysUnitTypeVmo, Yw.Dto.UpdateSysUnitTypeInput>()
+            ).CreateMapper();
+            var dto = mapper.Map<Yw.Vmo.SysUnitTypeVmo, Yw.Dto.UpdateSysUnitTypeInput>(vmo);
+            return dto;
+        }
+
+        //vmo to update dtos
+        internal static List<Yw.Dto.UpdateSysUnitTypeInput> Vmo2UpdateDtos(List<Yw.Vmo.SysUnitTypeVmo> vmoList)
+        {
+            if (vmoList == null || vmoList.Count < 1)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Vmo.SysUnitTypeVmo, Yw.Dto.UpdateSysUnitTypeInput>()
+            ).CreateMapper();
+            var dtoList = mapper.Map<List<Yw.Vmo.SysUnitTypeVmo>, List<Yw.Dto.UpdateSysUnitTypeInput>>(vmoList);
+            return dtoList;
+        }
+
+    }
+}
diff --git a/Yw.BLL.Unit.Core/04-bll/03-value/SysUnitValue.cs b/Yw.BLL.Unit.Core/04-bll/03-value/SysUnitValue.cs
index 6eb38f1..34658dc 100644
--- a/Yw.BLL.Unit.Core/04-bll/03-value/SysUnitValue.cs
+++ b/Yw.BLL.Unit.Core/04-bll/03-value/SysUnitValue.cs
@@ -3,95 +3,141 @@
     /// <summary>
     /// 鍗曚綅鍊�
     /// </summary>
-    public partial class SysUnitValue : Yw.CAL.ISysUnitValue
+    public partial class SysUnitValue
     {
         private readonly Yw.CAL.ISysUnitValue _cal = CALCreateHelper.CreateCAL<Yw.CAL.ISysUnitValue>();
 
         #region Query銆�
-        public async Task<List<SysUnitValueDto>> GetAll()
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<List<SysUnitValueVmo>> GetAll()
         {
-            return await _cal.GetAll();
+            var dtoList = await _cal.GetAll();
+            return Dto2Vmos(dtoList);
         }
 
-        public async Task<SysUnitValueDto> GetByID(long ID)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<SysUnitValueVmo> GetByID(long ID)
         {
-            return await _cal.GetByID(ID);
+            var dto = await _cal.GetByID(ID);
+            return Dto2Vmo(dto);
         }
 
-        public async Task<List<SysUnitValueDto>> GetByIds(List<long> Ids)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<List<SysUnitValueVmo>> GetByIds(List<long> Ids)
         {
-            return await _cal.GetByIds(Ids);
+            if (Ids == null || Ids.Count < 1)
+            {
+                return default;
+            }
+            var dtoList = await _cal.GetByIds(Ids);
+            return Dto2Vmos(dtoList);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<List<SysUnitValueVmo>> GetByTypeID(long TypeID)
+        {
+            var dtoList = await _cal.GetByTypeID(TypeID);
+            return Dto2Vmos(dtoList);
         }
 
         #endregion
 
         #region Insert
 
-        public async Task<long> Insert(AddSysUnitValueInput model)
+
+        /// <summary>
+        /// 鎻掑叆涓�鏉�
+        /// </summary>
+        public virtual async Task<long> Insert(SysUnitValueVmo vmo)
         {
-            return await _cal.Insert(model);
+            var dto = Vmo2AddDto(vmo);
+            var id = await _cal.Insert(dto);
+            return id;
         }
 
-        public async Task<bool> Inserts(List<AddSysUnitValueInput> list)
+        /// <summary>
+        /// 鎻掑叆澶氭潯
+        /// </summary>
+        public virtual async Task<bool> Inserts(List<SysUnitValueVmo> vmoList)
         {
-            return await _cal.Inserts(list);
-        }
-
-        public async Task<bool> BulkInserts(List<AddSysUnitValueInput> list)
-        {
-            return await _cal.BulkInserts(list);
+            var dtoList = Vmo2AddDtos(vmoList);
+            var bol = await _cal.Inserts(dtoList);
+            return bol;
         }
 
         #endregion
 
         #region Update
 
-        public async Task<bool> Update(UpdateSysUnitValueInput model)
+        /// <summary>
+        /// 鏇存柊
+        /// </summary>
+        public virtual async Task<bool> Update(SysUnitValueVmo vmo)
         {
-            return await _cal.Update(model);
+            var dto = Vmo2UpdateDto(vmo);
+            var bol = await _cal.Update(dto);
+            return bol;
         }
 
-        public async Task<bool> Updates(List<UpdateSysUnitValueInput> list)
+        /// <summary>
+        /// 鎵归噺鏇存柊
+        /// </summary>
+        public virtual async Task<bool> Updates(List<SysUnitValueVmo> vmoList)
         {
-            return await _cal.Updates(list);
+            var dtoList = Vmo2UpdateDtos(vmoList);
+            var bol = await _cal.Updates(dtoList);
+            return bol;
         }
 
-        public async Task<bool> BulkUpdates(List<UpdateSysUnitValueInput> list)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> UpdateCode(long ID, string Code)
         {
-            return await _cal.BulkUpdates(list);
+            var bol = await _cal.UpdateCode(ID, Code);
+            return bol;
         }
 
-        public async Task<bool> UpdateCode(long ID, string Code)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> UpdateSortCode(long ID, int SortCode)
         {
-            return await _cal.UpdateCode(ID, Code);
+            var bol = await _cal.UpdateSortCode(ID, SortCode);
+            return bol;
         }
 
-        public async Task<bool> UpdateSortCode(long ID, int SortCode)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> UpdateSorter(List<Yw.Vmo.Sorter> Sorters)
         {
-            return await _cal.UpdateSortCode(ID, SortCode);
-        }
-
-        public async Task<bool> UpdateSorter(List<UpdateSortCodeInput> Sorters)
-        {
-            return await _cal.UpdateSorter(Sorters);
+            var dtoList = Sorters.ToDtoList();
+            var bol = await _cal.UpdateSorter(dtoList);
+            return bol;
         }
 
         #endregion
 
         #region Delete銆�
-        public async Task<bool> DeleteByID(long ID)
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> DeleteByID(long ID)
         {
             return await _cal.DeleteByID(ID);
         }
-        public async Task<bool> DeleteByIds(List<long> Ids)
-        {
-            return await _cal.DeleteByIds(Ids);
-        }
 
-        public async Task<bool> DeleteAll()
-        {
-            return await _cal.DeleteAll();
-        }
         #endregion
 
     }
diff --git a/Yw.BLL.Unit.Core/04-bll/03-value/SysUnitValue_Instance.cs b/Yw.BLL.Unit.Core/04-bll/03-value/SysUnitValue_Instance.cs
new file mode 100644
index 0000000..ba911f2
--- /dev/null
+++ b/Yw.BLL.Unit.Core/04-bll/03-value/SysUnitValue_Instance.cs
@@ -0,0 +1,84 @@
+锘縩amespace Yw.BLL
+{
+    public partial class SysUnitValue
+    {
+        //dto to vmo
+        internal static Yw.Vmo.SysUnitValueVmo Dto2Vmo(Yw.Dto.SysUnitValueDto dto)
+        {
+            if (dto == null)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Dto.SysUnitValueDto, Yw.Vmo.SysUnitValueVmo>()
+            ).CreateMapper();
+            var vmo = mapper.Map<Yw.Dto.SysUnitValueDto, Yw.Vmo.SysUnitValueVmo>(dto);
+            return vmo;
+        }
+
+        //dto to vmos
+        internal static List<Yw.Vmo.SysUnitValueVmo> Dto2Vmos(List<Yw.Dto.SysUnitValueDto> dtos)
+        {
+            if (dtos == null || dtos.Count < 1)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Dto.SysUnitValueDto, Yw.Vmo.SysUnitValueVmo>()
+            ).CreateMapper();
+            var vmos = mapper.Map<List<Yw.Dto.SysUnitValueDto>, List<Yw.Vmo.SysUnitValueVmo>>(dtos);
+            return vmos;
+        }
+
+        //vmo to add dto
+        internal static Yw.Dto.AddSysUnitValueInput Vmo2AddDto(Yw.Vmo.SysUnitValueVmo vmo)
+        {
+            if (vmo == null)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Vmo.SysUnitValueVmo, Yw.Dto.AddSysUnitValueInput>()
+            ).CreateMapper();
+            var dto = mapper.Map<Yw.Vmo.SysUnitValueVmo, Yw.Dto.AddSysUnitValueInput>(vmo);
+            return dto;
+        }
+
+        //vmo to add dtos
+        internal static List<Yw.Dto.AddSysUnitValueInput> Vmo2AddDtos(List<Yw.Vmo.SysUnitValueVmo> vmoList)
+        {
+            if (vmoList == null || vmoList.Count < 1)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Vmo.SysUnitValueVmo, Yw.Dto.AddSysUnitValueInput>()
+            ).CreateMapper();
+            var dtoList = mapper.Map<List<Yw.Vmo.SysUnitValueVmo>, List<Yw.Dto.AddSysUnitValueInput>>(vmoList);
+            return dtoList;
+        }
+
+        //vmo to update dto
+        internal static Yw.Dto.UpdateSysUnitValueInput Vmo2UpdateDto(Yw.Vmo.SysUnitValueVmo vmo)
+        {
+            if (vmo == null)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Vmo.SysUnitValueVmo, Yw.Dto.UpdateSysUnitValueInput>()
+            ).CreateMapper();
+            var dto = mapper.Map<Yw.Vmo.SysUnitValueVmo, Yw.Dto.UpdateSysUnitValueInput>(vmo);
+            return dto;
+        }
+
+        //vmo to update dtos
+        internal static List<Yw.Dto.UpdateSysUnitValueInput> Vmo2UpdateDtos(List<Yw.Vmo.SysUnitValueVmo> vmoList)
+        {
+            if (vmoList == null || vmoList.Count < 1)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Vmo.SysUnitValueVmo, Yw.Dto.UpdateSysUnitValueInput>()
+            ).CreateMapper();
+            var dtoList = mapper.Map<List<Yw.Vmo.SysUnitValueVmo>, List<Yw.Dto.UpdateSysUnitValueInput>>(vmoList);
+            return dtoList;
+        }
+
+    }
+}
diff --git a/Yw.BLL.Unit.Core/04-bll/04-name/SysUnitName.cs b/Yw.BLL.Unit.Core/04-bll/04-name/SysUnitName.cs
index 73fa013..ccea03e 100644
--- a/Yw.BLL.Unit.Core/04-bll/04-name/SysUnitName.cs
+++ b/Yw.BLL.Unit.Core/04-bll/04-name/SysUnitName.cs
@@ -3,29 +3,55 @@
     /// <summary>
     /// 鍗曚綅鍚嶇О
     /// </summary>
-    public partial class SysUnitName : Yw.CAL.ISysUnitName
+    public partial class SysUnitName
     {
         private readonly Yw.CAL.ISysUnitName _cal = CALCreateHelper.CreateCAL<Yw.CAL.ISysUnitName>();
 
-        public async Task<List<SysUnitNameDto>> GetByValueID(long ValueID)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<List<SysUnitNameVmo>> GetByValueID(long ValueID)
         {
-            return await _cal.GetByValueID(ValueID);
+            var dtoList = await _cal.GetByValueID(ValueID);
+            return Dto2Vmos(dtoList);
         }
 
-        public async Task<SysUnitNameDto> GetByID(long ID)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<SysUnitNameVmo> GetByID(long ID)
         {
-            return await _cal.GetByID(ID);
-
+            var dto = await _cal.GetByID(ID);
+            return Dto2Vmo(dto);
         }
 
-        public async Task<List<SysUnitNameDto>> GetByIds(List<long> Ids)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<List<SysUnitNameVmo>> GetByIds(List<long> Ids)
         {
-            return await _cal.GetByIds(Ids);
+            if (Ids == null || Ids.Count < 1)
+            {
+                return default;
+            }
+            var dtoList = await _cal.GetByIds(Ids);
+            return Dto2Vmos(dtoList);
         }
 
-        public async Task<bool> SetByValueID(long ValueID, List<SysUnitNameValueSetter> Setters)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> SetByValueID(long ValueID, List<Yw.Vmo.SysUnitNameValueSetter> Setters)
         {
-            return await _cal.SetByValueID(ValueID, Setters);
+            var dtoList = Setters?.Select(x => new Yw.Dto.SysUnitNameValueSetter()
+            {
+                LangID = x.LangID,
+                Name = x.Name
+            }).ToList();
+            var bol = await _cal.SetByValueID(ValueID, dtoList);
+            return bol;
         }
+
+
     }
 }
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/04-bll/04-name/SysUnitName_Instance.cs b/Yw.BLL.Unit.Core/04-bll/04-name/SysUnitName_Instance.cs
new file mode 100644
index 0000000..80b7b4f
--- /dev/null
+++ b/Yw.BLL.Unit.Core/04-bll/04-name/SysUnitName_Instance.cs
@@ -0,0 +1,36 @@
+锘縩amespace Yw.BLL
+{
+    public partial class SysUnitName
+    {
+        //dto to vmo
+        internal static Yw.Vmo.SysUnitNameVmo Dto2Vmo(Yw.Dto.SysUnitNameDto dto)
+        {
+            if (dto == null)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Dto.SysUnitNameDto, Yw.Vmo.SysUnitNameVmo>()
+            ).CreateMapper();
+            var vmo = mapper.Map<Yw.Dto.SysUnitNameDto, Yw.Vmo.SysUnitNameVmo>(dto);
+            return vmo;
+        }
+
+        //dto to vmos
+        internal static List<Yw.Vmo.SysUnitNameVmo> Dto2Vmos(List<Yw.Dto.SysUnitNameDto> dtos)
+        {
+            if (dtos == null || dtos.Count < 1)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Dto.SysUnitNameDto, Yw.Vmo.SysUnitNameVmo>()
+            ).CreateMapper();
+            var vmos = mapper.Map<List<Yw.Dto.SysUnitNameDto>, List<Yw.Vmo.SysUnitNameVmo>>(dtos);
+            return vmos;
+        }
+
+
+
+
+
+    }
+}
diff --git a/Yw.BLL.Unit.Core/04-bll/05-transfer/SysUnitTransfer.cs b/Yw.BLL.Unit.Core/04-bll/05-transfer/SysUnitTransfer.cs
index 744fd32..69c671a 100644
--- a/Yw.BLL.Unit.Core/04-bll/05-transfer/SysUnitTransfer.cs
+++ b/Yw.BLL.Unit.Core/04-bll/05-transfer/SysUnitTransfer.cs
@@ -3,27 +3,56 @@
     /// <summary>
     /// 鍗曚綅杞崲
     /// </summary>
-    public partial class SysUnitTransfer : Yw.CAL.ISysUnitTransfer
+    public partial class SysUnitTransfer
     {
         private readonly Yw.CAL.ISysUnitTransfer _cal = CALCreateHelper.CreateCAL<Yw.CAL.ISysUnitTransfer>();
 
-        public async Task<List<SysUnitTransferDto>> GetByTypeID(long TypeID)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<List<SysUnitTransferVmo>> GetByTypeID(long TypeID)
         {
-            return await _cal.GetByTypeID(TypeID);
-        }
-        public async Task<SysUnitTransferDto> GetByID(long ID)
-        {
-            return await _cal.GetByID(ID);
+            var dtoList = await _cal.GetByTypeID(TypeID);
+            return Dto2Vmos(dtoList);
         }
 
-        public async Task<List<SysUnitTransferDto>> GetByIds(List<long> Ids)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<SysUnitTransferVmo> GetByID(long ID)
         {
-            return await _cal.GetByIds(Ids);
+            var dto = await _cal.GetByID(ID);
+            return Dto2Vmo(dto);
         }
 
-        public async Task<bool> SetByTypeID(long TypeID, List<SysUnitTransferTypeSetter> Setters)
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<List<SysUnitTransferVmo>> GetByIds(List<long> Ids)
         {
-            return await _cal.SetByTypeID(TypeID, Setters);
+            if (Ids == null || Ids.Count < 1)
+            {
+                return default;
+            }
+            var dtoList = await _cal.GetByIds(Ids);
+            return Dto2Vmos(dtoList);
         }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual async Task<bool> SetByTypeID(long TypeID, List<Yw.Vmo.SysUnitTransferTypeSetter> Setters)
+        {
+            var dtoList = Setters?.Select(x => new Yw.Dto.SysUnitTransferTypeSetter()
+            {
+                FromValueID = x.FromValueID,
+                ToValueID = x.ToValueID,
+                Expression = x.Expression
+            }).ToList();
+            var bol = await _cal.SetByTypeID(TypeID, dtoList);
+            return bol;
+        }
+
+
     }
 }
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/04-bll/05-transfer/SysUnitTransfer_Instance.cs b/Yw.BLL.Unit.Core/04-bll/05-transfer/SysUnitTransfer_Instance.cs
new file mode 100644
index 0000000..0f0c46c
--- /dev/null
+++ b/Yw.BLL.Unit.Core/04-bll/05-transfer/SysUnitTransfer_Instance.cs
@@ -0,0 +1,36 @@
+锘縩amespace Yw.BLL
+{
+    public partial class SysUnitTransfer
+    {
+        //dto to vmo
+        internal static Yw.Vmo.SysUnitTransferVmo Dto2Vmo(Yw.Dto.SysUnitTransferDto dto)
+        {
+            if (dto == null)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Dto.SysUnitTransferDto, Yw.Vmo.SysUnitTransferVmo>()
+            ).CreateMapper();
+            var vmo = mapper.Map<Yw.Dto.SysUnitTransferDto, Yw.Vmo.SysUnitTransferVmo>(dto);
+            return vmo;
+        }
+
+        //dto to vmos
+        internal static List<Yw.Vmo.SysUnitTransferVmo> Dto2Vmos(List<Yw.Dto.SysUnitTransferDto> dtos)
+        {
+            if (dtos == null || dtos.Count < 1)
+            {
+                return default;
+            }
+            var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Yw.Dto.SysUnitTransferDto, Yw.Vmo.SysUnitTransferVmo>()
+            ).CreateMapper();
+            var vmos = mapper.Map<List<Yw.Dto.SysUnitTransferDto>, List<Yw.Vmo.SysUnitTransferVmo>>(dtos);
+            return vmos;
+        }
+
+
+
+
+
+    }
+}
diff --git a/Yw.BLL.Unit.Core/04-bll/06-helper/SysUnitTransfer.cs b/Yw.BLL.Unit.Core/04-bll/06-helper/SysUnitTransfer.cs
new file mode 100644
index 0000000..d10a044
--- /dev/null
+++ b/Yw.BLL.Unit.Core/04-bll/06-helper/SysUnitTransfer.cs
@@ -0,0 +1,47 @@
+锘縩amespace Yw.BLL
+{
+    /// <summary>
+    /// 鍗曚綅杈呭姪绫�
+    /// </summary>
+    public partial class SysUnitHelper
+    {
+        private readonly Yw.CAL.ISysUnitHelper _cal = CALCreateHelper.CreateCAL<Yw.CAL.ISysUnitHelper>();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual Task<string> GetUnitName(string UnitType, string UnitValue, string UnitLang)
+        {
+            return _cal.GetUnitName(UnitType, UnitValue, UnitLang);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual Task<List<string>> GetUnitNameList(string UnitType, string UnitLang)
+        {
+            return _cal.GetUnitNameList(UnitType, UnitLang);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual Task<Dictionary<string, string>> GetUnitDict(string UnitType, string UnitLang)
+        {
+            return _cal.GetUnitDict(UnitType, UnitLang);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual Task<double> Transfer(string UnitType, string FromUnitValue, string ToUnitValue, double FromValue)
+        {
+            return _cal.Transfer(UnitType, FromUnitValue, ToUnitValue, FromValue);
+        }
+
+
+
+
+
+    }
+}
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/04-bll/09-dbfirst/UnitDbFirstHelper.cs b/Yw.BLL.Unit.Core/04-bll/09-dbfirst/UnitDbFirstHelper.cs
new file mode 100644
index 0000000..98c2060
--- /dev/null
+++ b/Yw.BLL.Unit.Core/04-bll/09-dbfirst/UnitDbFirstHelper.cs
@@ -0,0 +1,20 @@
+锘縩amespace Yw.BLL
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UnitDbFirstHelper
+    {
+        private readonly Yw.CAL.IUnitDbFirstHelper _cal = CALCreateHelper.CreateCAL<Yw.CAL.IUnitDbFirstHelper>();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public Task<bool> Initial()
+        {
+            return _cal.Initial();
+        }
+
+
+    }
+}
diff --git a/Yw.BLL.Unit.Core/GlobalUsings.cs b/Yw.BLL.Unit.Core/GlobalUsings.cs
index 44e5534..89b9625 100644
--- a/Yw.BLL.Unit.Core/GlobalUsings.cs
+++ b/Yw.BLL.Unit.Core/GlobalUsings.cs
@@ -3,4 +3,7 @@
 global using Yw.BLL.Unit;
 global using Yw.Dto;
 global using Yw.Untity;
+global using AutoMapper;
+global using Yw.Vmo;
+global using Yw.BLL;
 
diff --git a/Yw.BLL.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user b/Yw.BLL.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
index 9d9c8f0..5dc5e67 100644
--- a/Yw.BLL.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
+++ b/Yw.BLL.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -4,7 +4,7 @@
 -->
 <Project>
   <PropertyGroup>
-    <History>True|2024-08-10T02:13:45.8011941Z;True|2024-08-10T10:13:16.6457618+08:00;True|2024-08-10T10:12:59.0489304+08:00;</History>
+    <History>True|2025-01-13T06:59:13.8881314Z;True|2025-01-13T14:58:48.7014264+08:00;False|2025-01-13T14:58:08.7352951+08:00;False|2025-01-13T14:57:28.1385434+08:00;True|2024-08-10T10:13:45.8011941+08:00;True|2024-08-10T10:13:16.6457618+08:00;True|2024-08-10T10:12:59.0489304+08:00;</History>
     <LastFailureDetails />
   </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/Yw.BLL.Unit.Core/Yw.BLL.Unit.Core.csproj b/Yw.BLL.Unit.Core/Yw.BLL.Unit.Core.csproj
index 23c892f..4cc72dc 100644
--- a/Yw.BLL.Unit.Core/Yw.BLL.Unit.Core.csproj
+++ b/Yw.BLL.Unit.Core/Yw.BLL.Unit.Core.csproj
@@ -4,16 +4,13 @@
 		<TargetFramework>net6.0</TargetFramework>
 		<ImplicitUsings>enable</ImplicitUsings>
 		<Nullable>disable</Nullable>
-		<Version>3.0.2</Version>
+		<Version>3.0.5</Version>
 		<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
 	</PropertyGroup>
 
 	<ItemGroup>
-	  <PackageReference Include="Yw.CAL.HttpClient.Core" Version="3.1.0" />
-	  <PackageReference Include="Yw.CALFactory.Core" Version="3.0.2" />
-	  <PackageReference Include="Yw.Dto.Unit.Core" Version="3.1.1" />
-	  <PackageReference Include="Yw.Mapster.Core" Version="3.0.0" />
-	  <PackageReference Include="Yw.Service.Unit.Core" Version="3.0.9" />
+	  <PackageReference Include="Yw.BLL.Core" Version="3.1.6" />
+	  <PackageReference Include="Yw.Vmo.Unit.Core" Version="3.0.0" />
 	</ItemGroup>
 
 </Project>
diff --git a/Yw.Dto.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user b/Yw.Dto.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
index 0b2b2f2..8551402 100644
--- a/Yw.Dto.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
+++ b/Yw.Dto.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -4,7 +4,7 @@
 -->
 <Project>
   <PropertyGroup>
-    <History>True|2024-09-12T05:12:32.1162405Z;True|2024-08-21T19:25:46.5070173+08:00;True|2024-08-10T10:11:01.9884919+08:00;True|2024-06-19T17:12:05.8503765+08:00;True|2024-06-02T18:15:21.5081941+08:00;True|2024-05-31T14:22:14.7558274+08:00;True|2024-05-21T14:13:16.7771524+08:00;True|2024-05-13T09:32:01.1736078+08:00;True|2024-05-08T15:05:05.7504044+08:00;True|2024-05-08T15:04:50.5790715+08:00;True|2024-04-11T11:47:05.2985116+08:00;True|2024-04-03T09:20:17.1118683+08:00;True|2024-04-03T09:20:14.2889343+08:00;True|2024-03-30T14:42:12.5290823+08:00;True|2024-03-24T15:58:01.8436381+08:00;True|2024-03-20T13:14:26.0945194+08:00;</History>
+    <History>True|2025-01-13T04:59:02.6755761Z;True|2024-09-12T13:12:32.1162405+08:00;True|2024-08-21T19:25:46.5070173+08:00;True|2024-08-10T10:11:01.9884919+08:00;True|2024-06-19T17:12:05.8503765+08:00;True|2024-06-02T18:15:21.5081941+08:00;True|2024-05-31T14:22:14.7558274+08:00;True|2024-05-21T14:13:16.7771524+08:00;True|2024-05-13T09:32:01.1736078+08:00;True|2024-05-08T15:05:05.7504044+08:00;True|2024-05-08T15:04:50.5790715+08:00;True|2024-04-11T11:47:05.2985116+08:00;True|2024-04-03T09:20:17.1118683+08:00;True|2024-04-03T09:20:14.2889343+08:00;True|2024-03-30T14:42:12.5290823+08:00;True|2024-03-24T15:58:01.8436381+08:00;True|2024-03-20T13:14:26.0945194+08:00;</History>
     <LastFailureDetails />
   </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/Yw.Dto.Unit.Core/Yw.Dto.Unit.Core.csproj b/Yw.Dto.Unit.Core/Yw.Dto.Unit.Core.csproj
index 10c9962..91fa4db 100644
--- a/Yw.Dto.Unit.Core/Yw.Dto.Unit.Core.csproj
+++ b/Yw.Dto.Unit.Core/Yw.Dto.Unit.Core.csproj
@@ -4,13 +4,13 @@
     <TargetFramework>net6.0</TargetFramework>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>disable</Nullable>
-    <Version>3.1.3</Version>
+    <Version>3.1.5</Version>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Yw.Dto.Core" Version="3.1.2" />
-    <PackageReference Include="Yw.Service.Unit.Core" Version="3.1.1" />
+    <PackageReference Include="Yw.Dto.Core" Version="3.1.5" />
+    <PackageReference Include="Yw.Service.Unit.Core" Version="3.1.2" />
   </ItemGroup>
 
 </Project>
diff --git a/Yw.Service.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user b/Yw.Service.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
index 85f2765..1fea5bf 100644
--- a/Yw.Service.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
+++ b/Yw.Service.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -4,7 +4,7 @@
 -->
 <Project>
   <PropertyGroup>
-    <History>True|2024-09-12T05:10:47.2381661Z;True|2024-08-21T19:24:24.2009409+08:00;True|2024-08-10T10:10:14.4201511+08:00;True|2024-06-19T17:11:04.1467179+08:00;True|2024-06-02T18:14:27.1302271+08:00;True|2024-05-31T14:21:25.9548888+08:00;True|2024-05-21T14:10:07.7011142+08:00;True|2024-04-11T11:46:08.7351336+08:00;True|2024-04-03T09:19:28.3206735+08:00;True|2024-03-30T14:40:53.5629250+08:00;True|2024-03-24T15:57:00.6285019+08:00;True|2024-03-20T20:29:28.4545096+08:00;True|2024-03-20T11:57:05.1553144+08:00;True|2024-03-08T16:07:15.2641115+08:00;True|2024-01-21T14:04:10.1964644+08:00;True|2024-01-20T17:53:52.5924005+08:00;True|2024-01-20T12:18:53.6738460+08:00;True|2024-01-14T13:38:56.7132086+08:00;True|2023-12-02T14:19:36.0851107+08:00;True|2023-11-13T11:13:38.2876503+08:00;True|2023-11-07T15:26:15.8664916+08:00;True|2023-10-27T13:21:57.8245827+08:00;True|2023-10-21T18:15:57.8975745+08:00;True|2023-10-18T17:28:42.7347523+08:00;True|2023-09-15T12:08:33.6892307+08:00;True|2023-09-14T15:13:47.6095636+08:00;True|2023-08-21T13:08:28.2298969+08:00;True|2023-07-17T10:30:15.0370305+08:00;True|2023-07-13T11:54:33.7989040+08:00;True|2023-07-13T11:54:23.3967174+08:00;True|2023-07-06T09:49:52.7407983+08:00;True|2023-05-25T15:37:23.5406830+08:00;False|2023-05-25T15:36:09.3589239+08:00;</History>
+    <History>True|2025-01-13T04:57:55.8044587Z;True|2024-09-12T13:10:47.2381661+08:00;True|2024-08-21T19:24:24.2009409+08:00;True|2024-08-10T10:10:14.4201511+08:00;True|2024-06-19T17:11:04.1467179+08:00;True|2024-06-02T18:14:27.1302271+08:00;True|2024-05-31T14:21:25.9548888+08:00;True|2024-05-21T14:10:07.7011142+08:00;True|2024-04-11T11:46:08.7351336+08:00;True|2024-04-03T09:19:28.3206735+08:00;True|2024-03-30T14:40:53.5629250+08:00;True|2024-03-24T15:57:00.6285019+08:00;True|2024-03-20T20:29:28.4545096+08:00;True|2024-03-20T11:57:05.1553144+08:00;True|2024-03-08T16:07:15.2641115+08:00;True|2024-01-21T14:04:10.1964644+08:00;True|2024-01-20T17:53:52.5924005+08:00;True|2024-01-20T12:18:53.6738460+08:00;True|2024-01-14T13:38:56.7132086+08:00;True|2023-12-02T14:19:36.0851107+08:00;True|2023-11-13T11:13:38.2876503+08:00;True|2023-11-07T15:26:15.8664916+08:00;True|2023-10-27T13:21:57.8245827+08:00;True|2023-10-21T18:15:57.8975745+08:00;True|2023-10-18T17:28:42.7347523+08:00;True|2023-09-15T12:08:33.6892307+08:00;True|2023-09-14T15:13:47.6095636+08:00;True|2023-08-21T13:08:28.2298969+08:00;True|2023-07-17T10:30:15.0370305+08:00;True|2023-07-13T11:54:33.7989040+08:00;True|2023-07-13T11:54:23.3967174+08:00;True|2023-07-06T09:49:52.7407983+08:00;True|2023-05-25T15:37:23.5406830+08:00;False|2023-05-25T15:36:09.3589239+08:00;</History>
     <LastFailureDetails />
   </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/Yw.Service.Unit.Core/Yw.Service.Unit.Core.csproj b/Yw.Service.Unit.Core/Yw.Service.Unit.Core.csproj
index 05dfa4f..b855f50 100644
--- a/Yw.Service.Unit.Core/Yw.Service.Unit.Core.csproj
+++ b/Yw.Service.Unit.Core/Yw.Service.Unit.Core.csproj
@@ -7,7 +7,7 @@
 		<RootNamespace>Yw</RootNamespace>
 		<GenerateDocumentationFile>True</GenerateDocumentationFile>
 		<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-		<Version>3.1.1</Version>
+		<Version>3.1.2</Version>
 		<Description>寮曠敤鍗囩骇</Description>
 	</PropertyGroup>
 
@@ -27,11 +27,11 @@
 	</ItemGroup>
 
 	<ItemGroup>
-	  <PackageReference Include="Yw.DAL.PostgreSql.Core" Version="3.0.9" />
-	  <PackageReference Include="Yw.DAL.SQLite.Core" Version="3.0.9" />
+	  <PackageReference Include="Yw.DAL.PostgreSql.Core" Version="3.1.1" />
+	  <PackageReference Include="Yw.DAL.SQLite.Core" Version="3.1.1" />
 	  <PackageReference Include="Yw.DALFactory.Core" Version="3.0.5" />
 	  <PackageReference Include="Yw.DynamicExpresso.Core" Version="3.0.0" />
-	  <PackageReference Include="Yw.Service.Core" Version="3.0.8" />
+	  <PackageReference Include="Yw.Service.Core" Version="3.1.0" />
 	</ItemGroup>
 
 	<ItemGroup>
diff --git a/Yw.Unit.Core.sln b/Yw.Unit.Core.sln
index 4a2f8f4..19d328e 100644
--- a/Yw.Unit.Core.sln
+++ b/Yw.Unit.Core.sln
@@ -13,7 +13,9 @@
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Yw.Dto.Unit.Core", "Yw.Dto.Unit.Core\Yw.Dto.Unit.Core.csproj", "{A94D8098-938D-4FEA-B026-91F45E7C4783}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Yw.BLL.Unit.Core", "Yw.BLL.Unit.Core\Yw.BLL.Unit.Core.csproj", "{48032700-781C-45AC-95A7-DB03BEC013CC}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Yw.BLL.Unit.Core", "Yw.BLL.Unit.Core\Yw.BLL.Unit.Core.csproj", "{48032700-781C-45AC-95A7-DB03BEC013CC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Yw.Vmo.Unit.Core", "Yw.Vmo.Unit.Core\Yw.Vmo.Unit.Core.csproj", "{88D96E57-3DA6-44E8-A187-631053D5FED7}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -45,6 +47,10 @@
 		{48032700-781C-45AC-95A7-DB03BEC013CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{48032700-781C-45AC-95A7-DB03BEC013CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{48032700-781C-45AC-95A7-DB03BEC013CC}.Release|Any CPU.Build.0 = Release|Any CPU
+		{88D96E57-3DA6-44E8-A187-631053D5FED7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{88D96E57-3DA6-44E8-A187-631053D5FED7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{88D96E57-3DA6-44E8-A187-631053D5FED7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{88D96E57-3DA6-44E8-A187-631053D5FED7}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/Yw.Vmo.Unit.Core/01-lang/SysUnitLangVmo.cs b/Yw.Vmo.Unit.Core/01-lang/SysUnitLangVmo.cs
new file mode 100644
index 0000000..4f2cc25
--- /dev/null
+++ b/Yw.Vmo.Unit.Core/01-lang/SysUnitLangVmo.cs
@@ -0,0 +1,50 @@
+锘縩amespace Yw.Vmo
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class SysUnitLangVmo
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public SysUnitLangVmo() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public SysUnitLangVmo(Yw.Dto.SysUnitLangDto rhs)
+        {
+            this.ID = rhs.ID;
+            this.Name = rhs.Name;
+            this.Code = rhs.Code;
+            this.SortCode = rhs.SortCode;
+            this.Description = rhs.Description;
+        }
+
+        /// <summary>
+        /// id
+        /// </summary>	
+        public long ID { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int SortCode { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Description { get; set; }
+    }
+}
diff --git a/Yw.Vmo.Unit.Core/02-type/SysUnitTypeVmo.cs b/Yw.Vmo.Unit.Core/02-type/SysUnitTypeVmo.cs
new file mode 100644
index 0000000..0bafaef
--- /dev/null
+++ b/Yw.Vmo.Unit.Core/02-type/SysUnitTypeVmo.cs
@@ -0,0 +1,50 @@
+锘縩amespace Yw.Vmo
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class SysUnitTypeVmo
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public SysUnitTypeVmo() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public SysUnitTypeVmo(Yw.Dto.SysUnitTypeDto rhs)
+        {
+            this.ID = rhs.ID;
+            this.Name = rhs.Name;
+            this.Code = rhs.Code;
+            this.SortCode = rhs.SortCode;
+            this.Description = rhs.Description;
+        }
+
+        /// <summary>
+        /// id
+        /// </summary>	
+        public long ID { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int SortCode { get; set; }
+
+        /// <summary>
+        /// 璇存槑
+        /// </summary>
+        public string Description { get; set; }
+    }
+}
diff --git a/Yw.Vmo.Unit.Core/03-value/SysUnitValueVmo.cs b/Yw.Vmo.Unit.Core/03-value/SysUnitValueVmo.cs
new file mode 100644
index 0000000..2690a39
--- /dev/null
+++ b/Yw.Vmo.Unit.Core/03-value/SysUnitValueVmo.cs
@@ -0,0 +1,56 @@
+锘縩amespace Yw.Vmo
+{
+    /// <summary>
+    ///  
+    /// </summary>
+    public class SysUnitValueVmo
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public SysUnitValueVmo() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public SysUnitValueVmo(Yw.Dto.SysUnitValueDto rhs)
+        {
+            this.ID = rhs.ID;
+            this.TypeID = rhs.TypeID;
+            this.Name = rhs.Name;
+            this.Code = rhs.Code;
+            this.SortCode = rhs.SortCode;
+            this.Description = rhs.Description;
+        }
+
+        /// <summary>
+        /// id
+        /// </summary>	
+        public long ID { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷Id
+        /// </summary>
+        public long TypeID { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int SortCode { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Description { get; set; }
+    }
+}
diff --git a/Yw.Vmo.Unit.Core/04-name/SysUnitNameValueSetter.cs b/Yw.Vmo.Unit.Core/04-name/SysUnitNameValueSetter.cs
new file mode 100644
index 0000000..5c6a10c
--- /dev/null
+++ b/Yw.Vmo.Unit.Core/04-name/SysUnitNameValueSetter.cs
@@ -0,0 +1,21 @@
+锘縩amespace Yw.Vmo
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class SysUnitNameValueSetter
+    {
+
+        /// <summary>
+        /// 璇█id
+        /// </summary>
+        public long LangID { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+
+    }
+}
diff --git a/Yw.Vmo.Unit.Core/04-name/SysUnitNameVmo.cs b/Yw.Vmo.Unit.Core/04-name/SysUnitNameVmo.cs
new file mode 100644
index 0000000..18dc89e
--- /dev/null
+++ b/Yw.Vmo.Unit.Core/04-name/SysUnitNameVmo.cs
@@ -0,0 +1,44 @@
+锘縩amespace Yw.Vmo
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class SysUnitNameVmo
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public SysUnitNameVmo() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public SysUnitNameVmo(Yw.Dto.SysUnitNameDto rhs)
+        {
+            this.ID = rhs.ID;
+            this.ValueID = rhs.ValueID;
+            this.LangID = rhs.LangID;
+            this.Name = rhs.Name;
+        }
+
+        /// <summary>
+        /// id
+        /// </summary>	
+        public long ID { get; set; }
+
+        /// <summary>
+        /// 鍊糹d
+        /// </summary>
+        public long ValueID { get; set; }
+
+        /// <summary>
+        /// 璇█id
+        /// </summary>
+        public long LangID { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+    }
+}
diff --git a/Yw.Vmo.Unit.Core/05-transfer/SysUnitTransferTypeSetter.cs b/Yw.Vmo.Unit.Core/05-transfer/SysUnitTransferTypeSetter.cs
new file mode 100644
index 0000000..a03a542
--- /dev/null
+++ b/Yw.Vmo.Unit.Core/05-transfer/SysUnitTransferTypeSetter.cs
@@ -0,0 +1,27 @@
+锘縩amespace Yw.Vmo
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class SysUnitTransferTypeSetter
+    {
+        /// <summary>
+        /// 鏉ユ簮id
+        /// </summary>
+        public long FromValueID { get; set; }
+
+        /// <summary>
+        /// 鐩爣id
+        /// </summary>
+        public long ToValueID { get; set; }
+
+        /// <summary>
+        /// 璁$畻琛ㄨ揪寮�
+        /// </summary>
+        public string Expression { get; set; }
+
+
+
+
+    }
+}
diff --git a/Yw.Vmo.Unit.Core/05-transfer/SysUnitTransferVmo.cs b/Yw.Vmo.Unit.Core/05-transfer/SysUnitTransferVmo.cs
new file mode 100644
index 0000000..f8c24be
--- /dev/null
+++ b/Yw.Vmo.Unit.Core/05-transfer/SysUnitTransferVmo.cs
@@ -0,0 +1,50 @@
+锘縩amespace Yw.Vmo
+{
+    /// <summary> 
+    ///  
+    /// </summary>
+    public class SysUnitTransferVmo
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public SysUnitTransferVmo() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public SysUnitTransferVmo(Yw.Dto.SysUnitTransferDto rhs)
+        {
+            this.ID = rhs.ID;
+            this.TypeID = rhs.TypeID;
+            this.FromValueID = rhs.FromValueID;
+            this.ToValueID = rhs.ToValueID;
+            this.Expression = rhs.Expression;
+        }
+
+        /// <summary>
+        /// id
+        /// </summary>	
+        public long ID { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷id
+        /// </summary>
+        public long TypeID { get; set; }
+
+        /// <summary>
+        /// 鏉ユ簮id
+        /// </summary>
+        public long FromValueID { get; set; }
+
+        /// <summary>
+        /// 鐩爣id
+        /// </summary>
+        public long ToValueID { get; set; }
+
+        /// <summary>
+        /// 璁$畻琛ㄨ揪寮�
+        /// </summary>
+        public string Expression { get; set; }
+    }
+}
diff --git a/Yw.Vmo.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml b/Yw.Vmo.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..154e035
--- /dev/null
+++ b/Yw.Vmo.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,13 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <Configuration>Release</Configuration>
+    <Platform>Any CPU</Platform>
+    <PublishDir>bin\Release\net6.0\publish\</PublishDir>
+    <PublishProtocol>FileSystem</PublishProtocol>
+    <_TargetId>Folder</_TargetId>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Yw.Vmo.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user b/Yw.Vmo.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
new file mode 100644
index 0000000..5aac6b9
--- /dev/null
+++ b/Yw.Vmo.Unit.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <History>True|2025-01-13T06:53:54.9757361Z;</History>
+    <LastFailureDetails />
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Yw.Vmo.Unit.Core/Yw.Vmo.Unit.Core.csproj b/Yw.Vmo.Unit.Core/Yw.Vmo.Unit.Core.csproj
new file mode 100644
index 0000000..0765df2
--- /dev/null
+++ b/Yw.Vmo.Unit.Core/Yw.Vmo.Unit.Core.csproj
@@ -0,0 +1,16 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>disable</Nullable>
+    <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
+    <Version>3.0.0</Version>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Yw.Dto.Unit.Core" Version="3.1.5" />
+    <PackageReference Include="Yw.Vmo.Core" Version="3.0.9" />
+  </ItemGroup>
+
+</Project>
diff --git a/Yw.Vmo.Unit.Core/Yw.Vmo.Unit.Core.csproj.user b/Yw.Vmo.Unit.Core/Yw.Vmo.Unit.Core.csproj.user
new file mode 100644
index 0000000..d55c70d
--- /dev/null
+++ b/Yw.Vmo.Unit.Core/Yw.Vmo.Unit.Core.csproj.user
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <_LastSelectedProfileId>D:\WorkData\妯″潡\Code\Unit\Yw.Vmo.Unit.Core\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId>
+  </PropertyGroup>
+</Project>
\ No newline at end of file

--
Gitblit v1.9.3