zs
2025-05-06 44f6b5306f7927485c49d4655d370f4693cdabfd
Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo
已添加14个文件
已重命名6个文件
已修改30个文件
已删除2个文件
1914 ■■■■ 文件已修改
CommonDLL/CmsQueryExtensions.dll 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Const/SystemConst.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/DataBaseFactory/Default/MySqlDataBaseServiceHandle.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/AppService/AppService_Generate.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Domain/IRepository_Generate.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Entity/AddModel_Generate.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Entity/InputQueryModel_Generate.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/EntityFrameworkCore/EfCoreRepository_Generate.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Web/Controllers/EntityMode_Generate.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Web/Controllers/File_Generate.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Web/Index_Generate.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Web/enum_Generate.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/GenerateCode_WeiBen_CMS.csproj 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/MainForm.Designer.cs 116 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/MainForm.cs 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Model/GenerateCodeParam.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Model/SystemCommonVar.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/AppService/AppService模板.txt 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/AppService/IAppService模板.txt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Domain/IRepository模板.txt 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Entity/Dto模板.txt 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Entity/ImportModel模板.txt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/EntityFrameworkCore/EfCoreRepository模板.txt 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Web/Controllers/EntityMode模板.txt 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Web/Controllers/File模板.txt 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Web/enum模板.txt 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Web/index模板.txt 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/CommonHelper.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/ListHelper.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/StructStrHelper.cs 87 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/常用.txt 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateDto.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialUpdateDto.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialsImportModel.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialAppService.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs 241 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialConsts.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialEto.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialEventHandler.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/IWmsMaterialRepository.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterial.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialDataSeedContributor.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialSpecification.cs 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/IWmsMaterialRepository.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommonDLL/CmsQueryExtensions.dll
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Const/SystemConst.cs
@@ -16,5 +16,11 @@
        /// å‰ç«¯çš„æ–‡ä»¶å¤¹åç§°
        /// </summary>
        public const string web_FolerName = @"\web\";
        /// <summary>
        /// ç‰¹æ®Šå­—段-扩展字段
        /// </summary>
        public const string pro_ExtraProperties = "ExtraProperties";
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/DataBaseFactory/Default/MySqlDataBaseServiceHandle.cs
@@ -77,7 +77,7 @@
                        model.Description = dt.Rows[n]["Description"].ToString();
                        if (dt.Rows[n]["IsNullable"].ToString() != "")
                        {
                            if ((dt.Rows[n]["IsNullable"].ToString() == "1") || (dt.Rows[n]["IsNullable"].ToString().ToLower() == "true"))
                            if ((dt.Rows[n]["IsNullable"].ToString() == "1") || (dt.Rows[n]["IsNullable"].ToString().ToLower() == "true") || (dt.Rows[n]["IsNullable"].ToString().ToLower() == "yes"))
                            {
                                model.IsNullable = true;
                            }
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/AppService/AppService_Generate.cs
@@ -21,7 +21,7 @@
            CommonHelper.CommonReplaceStr(param, ref str);
            string attrString = "";
            List<ColumnModel> newColumnNameList = ListHelper.RemoveAttrForExport(param.ColumnNameList);
            List<ColumnModel> newColumnNameList = ListHelper.RemoveAttrForUpdateMode(param.ColumnNameList);
            for (int i = 0; i < newColumnNameList.Count; ++i)
            {
                attrString += StructStrHelper.GenerateAttributeForUpdateModel(newColumnNameList[i], param);
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Domain/IRepository_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class IRepository_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Domain\IRepository模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Entity/AddModel_Generate.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Entity/InputQueryModel_Generate.cs
ÎļþÃû´Ó Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Entity/InputModel_Generate.cs ÐÞ¸Ä
@@ -11,7 +11,7 @@
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class InputModel_Generate : BaseGenerate
    public class InputQueryModel_Generate : BaseGenerate
    {
        public static string CreateQueryModelLText(GenerateCodeParam param)
        {
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/EntityFrameworkCore/EfCoreRepository_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class EfCoreRepository_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\EntityFrameworkCore\EfCoreRepository模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Web/Controllers/EntityMode_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class EntityMode_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Web\Controllers\EntityMode模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Web/Controllers/File_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class File_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Web\Controllers\File模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Web/Index_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class Index_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Web\index模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Web/enum_Generate.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenerateCode_GEBrilliantFactory
{
    /// <summary>
    /// ç”ŸæˆæŸ¥è¯¢å®žä½“ç±»
    /// </summary>
    public class enum_Generate : BaseGenerate
    {
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Web\enum模板.txt");
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            return str;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/GenerateCode_WeiBen_CMS.csproj
@@ -110,7 +110,8 @@
    <Compile Include="Generate\AppService\IAppService_Generate.cs" />
    <Compile Include="Generate\BaseGenerate.cs" />
    <Compile Include="Generate\Controller\Controller_Generate.cs" />
    <Compile Include="Generate\Entity\AddModel_Generate.cs" />
    <Compile Include="Generate\Domain\IRepository_Generate.cs" />
    <Compile Include="Generate\EntityFrameworkCore\EfCoreRepository_Generate.cs" />
    <Compile Include="Generate\Entity\ImportModel_Generate.cs" />
    <Compile Include="Generate\Entity\ExportModel_Generate.cs" />
    <Compile Include="Generate\Entity\Dto_Generate.cs" />
@@ -123,10 +124,14 @@
    <Compile Include="Generate\Services_InterfaceRealize_Generate.cs" />
    <Compile Include="Generate\VUE\VUE_FunConfig_Generate.cs" />
    <Compile Include="Generate\Services_Interface_Generate.cs" />
    <Compile Include="Generate\Entity\InputModel_Generate.cs" />
    <Compile Include="Generate\Entity\InputQueryModel_Generate.cs" />
    <Compile Include="Generate\BLL_Generate.cs" />
    <Compile Include="Generate\DAL_Generate.cs" />
    <Compile Include="Generate\Procedure_Generate.cs" />
    <Compile Include="Generate\Web\Controllers\EntityMode_Generate.cs" />
    <Compile Include="Generate\Web\Controllers\File_Generate.cs" />
    <Compile Include="Generate\Web\enum_Generate.cs" />
    <Compile Include="Generate\Web\Index_Generate.cs" />
    <Compile Include="Model\GenerateCodeParam.cs" />
    <Compile Include="Model\Enum\DataBaseEnum.cs" />
    <Compile Include="Model\Enum\DataTypeEnum.cs" />
@@ -202,6 +207,12 @@
    <Content Include="Templete\Controller模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Domain\IRepository模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\EntityFrameworkCore\EfCoreRepository模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Entity\AddModel模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
@@ -271,6 +282,18 @@
    <Content Include="Templete\InitSQL模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Web\Controllers\EntityMode模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Web\Controllers\File模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Web\enum模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Templete\Web\index模板.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="常用.txt" />
  </ItemGroup>
  <ItemGroup />
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/MainForm.Designer.cs
@@ -64,6 +64,9 @@
            this.lbl_DataSource = new System.Windows.Forms.Label();
            this.cmb_DataSource = new System.Windows.Forms.ComboBox();
            this.groupBox2 = new System.Windows.Forms.GroupBox();
            this.label19 = new System.Windows.Forms.Label();
            this.label18 = new System.Windows.Forms.Label();
            this.tb_EnumList = new System.Windows.Forms.TextBox();
            this.tb_GroupName = new System.Windows.Forms.TextBox();
            this.label16 = new System.Windows.Forms.Label();
            this.label15 = new System.Windows.Forms.Label();
@@ -74,9 +77,10 @@
            this.label12 = new System.Windows.Forms.Label();
            this.tb_templeteFileDownName = new System.Windows.Forms.TextBox();
            this.label14 = new System.Windows.Forms.Label();
            this.tb_EnumList = new System.Windows.Forms.TextBox();
            this.label18 = new System.Windows.Forms.Label();
            this.label19 = new System.Windows.Forms.Label();
            this.label20 = new System.Windows.Forms.Label();
            this.tb_MenuName = new System.Windows.Forms.TextBox();
            this.label21 = new System.Windows.Forms.Label();
            this.tb_PageMenuInstanceName = new System.Windows.Forms.TextBox();
            this.groupBox1.SuspendLayout();
            this.groupBox2.SuspendLayout();
            this.groupBox3.SuspendLayout();
@@ -163,7 +167,7 @@
            // 
            // tb_WCF_NameSpacePath
            // 
            this.tb_WCF_NameSpacePath.Location = new System.Drawing.Point(751, 309);
            this.tb_WCF_NameSpacePath.Location = new System.Drawing.Point(983, 358);
            this.tb_WCF_NameSpacePath.Margin = new System.Windows.Forms.Padding(4);
            this.tb_WCF_NameSpacePath.Name = "tb_WCF_NameSpacePath";
            this.tb_WCF_NameSpacePath.Size = new System.Drawing.Size(261, 25);
@@ -172,7 +176,7 @@
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(607, 311);
            this.label2.Location = new System.Drawing.Point(862, 368);
            this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(105, 15);
@@ -273,7 +277,7 @@
            // label9
            // 
            this.label9.AutoSize = true;
            this.label9.Location = new System.Drawing.Point(617, 262);
            this.label9.Location = new System.Drawing.Point(682, 47);
            this.label9.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label9.Name = "label9";
            this.label9.Size = new System.Drawing.Size(45, 15);
@@ -282,7 +286,7 @@
            // 
            // tb_OrderBy
            // 
            this.tb_OrderBy.Location = new System.Drawing.Point(671, 259);
            this.tb_OrderBy.Location = new System.Drawing.Point(736, 44);
            this.tb_OrderBy.Margin = new System.Windows.Forms.Padding(4);
            this.tb_OrderBy.Name = "tb_OrderBy";
            this.tb_OrderBy.Size = new System.Drawing.Size(192, 25);
@@ -291,7 +295,7 @@
            // label10
            // 
            this.label10.AutoSize = true;
            this.label10.Location = new System.Drawing.Point(891, 262);
            this.label10.Location = new System.Drawing.Point(956, 47);
            this.label10.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label10.Name = "label10";
            this.label10.Size = new System.Drawing.Size(83, 15);
@@ -348,7 +352,7 @@
            // 
            // tb_RoutePrefix
            // 
            this.tb_RoutePrefix.Location = new System.Drawing.Point(717, 345);
            this.tb_RoutePrefix.Location = new System.Drawing.Point(983, 395);
            this.tb_RoutePrefix.Margin = new System.Windows.Forms.Padding(4);
            this.tb_RoutePrefix.Name = "tb_RoutePrefix";
            this.tb_RoutePrefix.Size = new System.Drawing.Size(192, 25);
@@ -358,7 +362,7 @@
            // label13
            // 
            this.label13.AutoSize = true;
            this.label13.Location = new System.Drawing.Point(617, 352);
            this.label13.Location = new System.Drawing.Point(862, 398);
            this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label13.Name = "label13";
            this.label13.Size = new System.Drawing.Size(99, 15);
@@ -423,6 +427,10 @@
            // 
            // groupBox2
            // 
            this.groupBox2.Controls.Add(this.tb_PageMenuInstanceName);
            this.groupBox2.Controls.Add(this.label21);
            this.groupBox2.Controls.Add(this.tb_MenuName);
            this.groupBox2.Controls.Add(this.label20);
            this.groupBox2.Controls.Add(this.label19);
            this.groupBox2.Controls.Add(this.label18);
            this.groupBox2.Controls.Add(this.tb_EnumList);
@@ -464,6 +472,36 @@
            this.groupBox2.TabIndex = 46;
            this.groupBox2.TabStop = false;
            this.groupBox2.Text = "自定义配置";
            //
            // label19
            //
            this.label19.AutoSize = true;
            this.label19.Location = new System.Drawing.Point(424, 432);
            this.label19.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label19.Name = "label19";
            this.label19.Size = new System.Drawing.Size(751, 15);
            this.label19.TabIndex = 53;
            this.label19.Text = "PurchaseType|PurchaseTypeEnum|PurchaseTypeDesc,MaterialType|MaterialTypeEnum|Mate" +
    "rialTypeDesc";
            //
            // label18
            //
            this.label18.AutoSize = true;
            this.label18.Location = new System.Drawing.Point(424, 488);
            this.label18.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label18.Name = "label18";
            this.label18.Size = new System.Drawing.Size(135, 15);
            this.label18.TabIndex = 52;
            this.label18.Text = "枚举类型字段集合:";
            //
            // tb_EnumList
            //
            this.tb_EnumList.Location = new System.Drawing.Point(557, 451);
            this.tb_EnumList.Margin = new System.Windows.Forms.Padding(4);
            this.tb_EnumList.Multiline = true;
            this.tb_EnumList.Name = "tb_EnumList";
            this.tb_EnumList.Size = new System.Drawing.Size(491, 129);
            this.tb_EnumList.TabIndex = 51;
            // 
            // tb_GroupName
            // 
@@ -566,35 +604,41 @@
            this.label14.TabIndex = 47;
            this.label14.Text = "文件下载名字:";
            // 
            // tb_EnumList
            // label20
            // 
            this.tb_EnumList.Location = new System.Drawing.Point(557, 451);
            this.tb_EnumList.Margin = new System.Windows.Forms.Padding(4);
            this.tb_EnumList.Multiline = true;
            this.tb_EnumList.Name = "tb_EnumList";
            this.tb_EnumList.Size = new System.Drawing.Size(491, 129);
            this.tb_EnumList.TabIndex = 51;
            this.label20.AutoSize = true;
            this.label20.Location = new System.Drawing.Point(600, 239);
            this.label20.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label20.Name = "label20";
            this.label20.Size = new System.Drawing.Size(90, 15);
            this.label20.TabIndex = 54;
            this.label20.Text = "页面菜单名:";
            // 
            // label18
            // tb_MenuName
            // 
            this.label18.AutoSize = true;
            this.label18.Location = new System.Drawing.Point(424, 488);
            this.label18.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label18.Name = "label18";
            this.label18.Size = new System.Drawing.Size(135, 15);
            this.label18.TabIndex = 52;
            this.label18.Text = "枚举类型字段集合:";
            this.tb_MenuName.Location = new System.Drawing.Point(700, 229);
            this.tb_MenuName.Margin = new System.Windows.Forms.Padding(4);
            this.tb_MenuName.Name = "tb_MenuName";
            this.tb_MenuName.Size = new System.Drawing.Size(261, 25);
            this.tb_MenuName.TabIndex = 55;
            // 
            // label19
            // label21
            // 
            this.label19.AutoSize = true;
            this.label19.Location = new System.Drawing.Point(424, 432);
            this.label19.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label19.Name = "label19";
            this.label19.Size = new System.Drawing.Size(751, 15);
            this.label19.TabIndex = 53;
            this.label19.Text = "PurchaseType|PurchaseTypeEnum|PurchaseTypeDesc,MaterialType|MaterialTypeEnum|Mate" +
    "rialTypeDesc";
            this.label21.AutoSize = true;
            this.label21.Location = new System.Drawing.Point(600, 275);
            this.label21.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label21.Name = "label21";
            this.label21.Size = new System.Drawing.Size(135, 15);
            this.label21.TabIndex = 56;
            this.label21.Text = "页面菜单对象缩写:";
            //
            // tb_PageMenuInstanceName
            //
            this.tb_PageMenuInstanceName.Location = new System.Drawing.Point(736, 265);
            this.tb_PageMenuInstanceName.Margin = new System.Windows.Forms.Padding(4);
            this.tb_PageMenuInstanceName.Name = "tb_PageMenuInstanceName";
            this.tb_PageMenuInstanceName.Size = new System.Drawing.Size(261, 25);
            this.tb_PageMenuInstanceName.TabIndex = 57;
            // 
            // MainForm
            // 
@@ -675,6 +719,10 @@
        private System.Windows.Forms.Label label18;
        private System.Windows.Forms.TextBox tb_EnumList;
        private System.Windows.Forms.Label label19;
        private System.Windows.Forms.Label label20;
        private System.Windows.Forms.TextBox tb_MenuName;
        private System.Windows.Forms.TextBox tb_PageMenuInstanceName;
        private System.Windows.Forms.Label label21;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/MainForm.cs
@@ -31,6 +31,8 @@
            this.tb_WCF_NameSpacePath.Text = "HIAWms";//WCF项目命名空间 
            this.tb_FileName.Text = "Xiangzi";//文件前缀名
            this.tb_ChinaComment.Text = "物料基础信息表";//中文注释
            this.tb_MenuName.Text = "物料信息";//中文注释
            this.tb_PageMenuInstanceName.Text = "wmsMaterial";
            this.tb_CreatePerson.Text = "shaocx";//创建人
            this.tb_EntityName.Text = "WmsMaterial";//实体类名
            //this.tb_EntityProName.Text = "wmsMaterial";//实体类对象名
@@ -98,6 +100,26 @@
                string filePrefixName = this.tb_FileName.Text.Trim();//文件前缀名
                string modulelogo = this.tb_Modulelogo.Text.Trim();//模块简写
                string chinaComment = this.tb_ChinaComment.Text.Trim();//中文注释
                if (chinaComment == "")
                {
                    MessageBox.Show("请输入 è¡¨çš„中文注解!");
                    this.tb_ChinaComment.Focus();
                    return;
                }
                string menuName = this.tb_MenuName.Text.Trim();//中文注释
                if (menuName == "")
                {
                    MessageBox.Show("请输入 é¡µé¢èœå•名!");
                    this.tb_MenuName.Focus();
                    return;
                }
                string _tb_PageMenuInstanceName = this.tb_PageMenuInstanceName.Text.Trim();//中文注释
                if (_tb_PageMenuInstanceName == "")
                {
                    MessageBox.Show("请输入 é¡µé¢èœå•对象缩写!");
                    this.tb_PageMenuInstanceName.Focus();
                    return;
                }
                string createPerson = this.tb_CreatePerson.Text.Trim();//创建人
                string entityName = this.tb_EntityName.Text.Trim();//实体类名
                string tableAlias = this.tb_EntityProName.Text.Trim();//实体类对象名/表别名
@@ -160,6 +182,8 @@
                {
                    Modulelogo = modulelogo,
                    ChinaComment = chinaComment,
                    PageMenuName = menuName,
                    PageMenuInstanceName = _tb_PageMenuInstanceName,
                    NameSpacePath = wcf_NameSpacePath,
                    ColumnNameList = columnList,
                    EntityName = entityName,
@@ -191,7 +215,7 @@
                #region å®žä½“ç±»
                var entityFilePath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".Application.Contracts\Dtos\" + tb_EntityName.Text.Trim();
                //1、生成 åˆ†é¡µæŸ¥è¯¢å®žä½“ æ–‡ä»¶
                str_generate = InputModel_Generate.CreateQueryModelLText(param);
                str_generate = InputQueryModel_Generate.CreateQueryModelLText(param);
                tf = TextHelper.Export2File_V2(entityFilePath, $"Get{param.EntityName}Input.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                //2、生成 CreateDto æ–‡ä»¶
@@ -238,12 +262,55 @@
                #region Contorller
                //10、生成 Contorller æ–‡ä»¶
                var continerlllePath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".Controller";
                var continerlllePath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @"\Controller";
                str_generate = Controller_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(continerlllePath, $"{param.EntityName}Controller.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                #endregion
                #region Domain
                //11、生成 IRepository æ–‡ä»¶
                var iRepositoryPath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".Domain\" + tb_EntityName.Text.Trim(); ;
                str_generate = IRepository_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(iRepositoryPath, $"I{param.EntityName}Repository.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                #endregion
                #region EntityFrameworkCore
                //12、生成 EfCoreRepository æ–‡ä»¶
                var efCoreRepositoryPath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".EntityFrameworkCore\Repositories";
                str_generate = EfCoreRepository_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(efCoreRepositoryPath, $"EfCore{param.EntityName}Repository.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                #endregion
                #region Web
                var webRootPath = tbPath.Text + @"\web\src\widgets\" + tb_EntityName.Text.Trim();
                //13、生成 Index æ–‡ä»¶
                str_generate = Index_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(webRootPath, $"index.ts", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                //14、生成 enum æ–‡ä»¶
                str_generate = enum_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(webRootPath, $"enum.ts", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                //15、生成 Controllers\File æ–‡ä»¶
                str_generate = File_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(webRootPath+ @"\Controllers", $"File.ts", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                //16、生成 Controllers\EntityMode æ–‡ä»¶
                str_generate = EntityMode_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(webRootPath + @"\Controllers", $"{tb_EntityName.Text.Trim()}.ts", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                #endregion
                ////生成 OutputModel æ–‡ä»¶
@@ -410,7 +477,7 @@
        private void MainForm_Load(object sender, EventArgs e)
        {
            tb_EntityProName.Enabled = false;
            //tb_EntityProName.Enabled = false;
            tb_FileName.Enabled = false;
            tb_Modulelogo.Enabled = false;
            tb_WCF_NameSpacePath.Enabled = true;
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Model/GenerateCodeParam.cs
@@ -23,6 +23,16 @@
        public string ChinaComment { get; set; }
        /// <summary>
        /// é¡µé¢èœå•名
        /// </summary>
        public string PageMenuName { get; set; }
        /// <summary>
        /// é¡µé¢èœå•对象缩写
        /// </summary>
        public string PageMenuInstanceName { get; set; }
        /// <summary>
        /// åˆ—名列表
        /// </summary>
        public List<ColumnModel> ColumnNameList { get; set; } = new List<ColumnModel>();
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Model/SystemCommonVar.cs
@@ -34,6 +34,8 @@
        public const string c_ConcurrencyStamp = "ConcurrencyStamp";
        public const string c_Sort = "Sort";
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/AppService/AppServiceÄ£°å.txt
@@ -1,9 +1,9 @@
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityInstanceName$s;
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Services;
using CMS.Plugin.$NameSpacePath$.Domain.Shared;
using CMS.Plugin.$NameSpacePath$.Domain.Shared.Util;
using CMS.Plugin.$NameSpacePath$.Domain.Shared.$EntityInstanceName$s;
using CMS.Plugin.$NameSpacePath$.Domain.$EntityInstanceName$s;
using CMS.Plugin.$NameSpacePath$.Domain.Shared.$EntityName$;
using CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
using Volo.Abp;
@@ -264,14 +264,14 @@
        var $EntityInstanceName$CreateDtos = new List<(int RowIndex, $EntityName$CreateDto Item)>();
        var $EntityInstanceName$UpdateDtos = new List<(int RowIndex, Guid Id, $EntityName$UpdateDto Item)>();
        var $EntityInstanceName$s = input.$EntityInstanceName$s;
        var importItems = input.$EntityName$s;
        if ($EntityInstanceName$s != null && $EntityInstanceName$s.Any())
        if (importItems != null && importItems.Any())
        {
            #region å¯¼å…¥æ ¡éªŒ
            // åˆ¤æ–­åç§°æ˜¯å¦é‡å¤ï¼Œå¹¶è¾“出第几行重复
            var duplicate$EntityName$s = $EntityInstanceName$s.GroupBy(x => x.MaterialCode).Where(x => x.Count() > 1).ToList();
            var duplicate$EntityName$s = importItems.GroupBy(x => x.MaterialCode).Where(x => x.Count() > 1).ToList();
            if (duplicate$EntityName$s?.Any() == true)
            {
                var duplicate$EntityName$Msgs = duplicate$EntityName$s.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} è¡Œï¼š{x.Key}  åç§°é‡å¤");
@@ -281,65 +281,91 @@
            #endregion
            foreach (var $EntityInstanceName$ in $EntityInstanceName$s)
            foreach (var impItem in importItems)
            {
                if ($EntityInstanceName$.MaterialCode.IsNullOrWhiteSpace() && $EntityInstanceName$.MaterialName.IsNullOrWhiteSpace())
                if (impItem.MaterialCode.IsNullOrWhiteSpace() && impItem.MaterialName.IsNullOrWhiteSpace())
                {
                    continue;
                }
                if ($EntityInstanceName$.MaterialCode.IsNullOrWhiteSpace())
                if (impItem.MaterialCode.IsNullOrWhiteSpace())
                {
                    var errorMsg = $"导入失败!配置,第{$EntityInstanceName$.RowIndex}行:$EntityInstanceName$名称不能为空";
                    var errorMsg = $"导入失败!配置,第{impItem.RowIndex}行:$EntityName$名称不能为空";
                    throw new UserFriendlyException(errorMsg);
                }
                var old$EntityName$ = await $EntityInstanceName$Repository.FindByNameAsync($EntityName$.MaterialCode);
                var old$EntityName$ = await $EntityInstanceName$Repository.FindByNameAsync(impItem.MaterialCode);
                if (old$EntityName$ != null)
                {
                    var $EntityInstanceName$UpdateDto = new $EntityName$UpdateDto
                    {
                        $UpdateAttributesForImport$
                        MaterialCode = impItem.MaterialCode,
                        MaterialName = impItem.MaterialName,
                        PurchaseType = impItem.PurchaseType,
                        MaterialType = impItem.MaterialType,
                        PrimaryUnit = impItem.PrimaryUnit,
                        Standard = impItem.Standard,
                        OuterDiameter = impItem.OuterDiameter,
                        WallThickness = impItem.WallThickness,
                        MaterialQuality = impItem.MaterialQuality,
                        Length = impItem.Length,
                        IsMainBranch = impItem.IsMainBranch,
                        Factory = impItem.Factory,
                        Certification = impItem.Certification,
                        Remark = impItem.Remark,
                    };
                    $EntityInstanceName$UpdateDtos.Add(($EntityName$.RowIndex, old$EntityName$.Id, $EntityInstanceName$UpdateDto));
                    $EntityInstanceName$UpdateDtos.Add((impItem.RowIndex, old$EntityName$.Id, $EntityInstanceName$UpdateDto));
                }
                else
                {
                    var $EntityName$CreateDto = new $EntityName$CreateDto
                    var $EntityInstanceName$CreateDto = new $EntityName$CreateDto
                    {
                        $UpdateAttributesForImport$
                        MaterialCode = impItem.MaterialCode,
                        MaterialName = impItem.MaterialName,
                        PurchaseType = impItem.PurchaseType,
                        MaterialType = impItem.MaterialType,
                        PrimaryUnit = impItem.PrimaryUnit,
                        Standard = impItem.Standard,
                        OuterDiameter = impItem.OuterDiameter,
                        WallThickness = impItem.WallThickness,
                        MaterialQuality = impItem.MaterialQuality,
                        Length = impItem.Length,
                        IsMainBranch = impItem.IsMainBranch,
                        Factory = impItem.Factory,
                        Certification = impItem.Certification,
                        Remark = impItem.Remark,
                    };
                    $EntityInstanceName$CreateDtos.Add(($EntityName$.RowIndex, $EntityName$CreateDto));
                    $EntityInstanceName$CreateDtos.Add((impItem.RowIndex, $EntityInstanceName$CreateDto));
                }
            }
        }
        // æ–°å¢ž
        foreach (var $EntityName$Dto in $EntityInstanceName$CreateDtos)
        foreach (var $EntityInstanceName$Dto in $EntityInstanceName$CreateDtos)
        {
            try
            {
                await CreateAsync($EntityName$Dto.Item);
                await CreateAsync($EntityInstanceName$Dto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{$EntityName$Dto.RowIndex}行:{e.Message},终止导入";
                var errorMsg = $"导入失败!配置,第{$EntityInstanceName$Dto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
        // æ›´æ–°
        foreach (var $EntityName$Dto in $EntityInstanceName$UpdateDtos)
        foreach (var $EntityInstanceName$Dto in $EntityInstanceName$UpdateDtos)
        {
            try
            {
                await UpdateAsync($EntityName$Dto.Id, $EntityName$Dto.Item);
                await UpdateAsync($EntityInstanceName$Dto.Id, $EntityInstanceName$Dto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{$EntityName$Dto.RowIndex}行:{e.Message},终止导入";
                var errorMsg = $"导入失败!配置,第{$EntityInstanceName$Dto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/AppService/IAppServiceÄ£°å.txt
@@ -1,4 +1,4 @@
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$s;
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
using Volo.Abp.Application.Services;
namespace CMS.Plugin.$NameSpacePath$.Application.Contracts.Services;
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Domain/IRepositoryÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
using Volo.Abp.Domain.Repositories;
namespace CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
/// <summary>
/// $ChinaComment$仓储
/// </summary>
public interface I$EntityName$Repository : IBasicRepository<$EntityName$, Guid>
{
    /// <summary>
    /// æŒ‰ç…§åç§°æŸ¥æ‰¾$ChinaComment$
    /// </summary>
    /// <param name="name"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<$EntityName$> FindByNameAsync(string name, CancellationToken cancellationToken = default);
    /// <summary>
    /// éªŒè¯åç§°æ˜¯å¦å­˜åœ¨$ChinaComment$
    /// </summary>
    /// <param name="name"></param>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<bool> NameExistAsync(string name, Guid? id = null);
    /// <summary>
    /// èŽ·å–æœ€å¤§æŽ’åº$ChinaComment$
    /// </summary>
    /// <returns></returns>
    Task<int> GetMaxSortAsync();
    /// <summary>
    /// èŽ·å–åˆ†é¡µåˆ—è¡¨$ChinaComment$
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="sorting"></param>
    /// <param name="maxResultCount"></param>
    /// <param name="skipCount"></param>
    /// <param name="includeDetails"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<List<$EntityName$>> GetListAsync(FunReturnResultModel<Expression<Func<$EntityName$, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default);
    /// <summary>
    /// èŽ·å–æ€»æ•°$ChinaComment$
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<$EntityName$, bool>>> whereConditions, CancellationToken cancellationToken = default);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Entity/DtoÄ£°å.txt
@@ -1,6 +1,8 @@
using CMS.Plugin.$NameSpacePath$.Domain.Shared.Enums;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.Domain.Entities;
namespace CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
@@ -10,11 +12,6 @@
public  class $EntityName$Dto:  ExtensibleEntityDto<Guid>, IHasConcurrencyStamp
{
    $AddAttributesForDto$
   /// <summary>
    /// å¹¶å‘戳
    /// </summary>
    public string ConcurrencyStamp { get; set; }
    /// <summary>
    /// Gets the export data.
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Entity/ImportModelÄ£°å.txt
@@ -22,7 +22,7 @@
        /// <summary>
        /// $ChinaComment$导入模型
        /// </summary>
        public class $EntityName$ImportModel : MaterialExportModel
        public class $EntityName$ImportModel : $EntityName$ExportModel
        {
            /// <summary>
            /// è¡Œå·
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/EntityFrameworkCore/EfCoreRepositoryÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
using CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
using CMS.Plugin.$NameSpacePath$.EntityFrameworkCore.Extensions;
using CmsQueryExtensions.Extension;
using Microsoft.EntityFrameworkCore;
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
namespace CMS.Plugin.$NameSpacePath$.EntityFrameworkCore.Repositories;
/// <summary>
/// $ChinaComment$仓储实现
/// </summary>
public class EfCore$EntityName$Repository : EfCoreRepository<ICMSPluginDbContext, $EntityName$, Guid>, I$EntityName$Repository
{
    /// <summary>
    /// Initializes a new instance of the <see cref="EfCore$EntityName$Repository"/> class.
    /// </summary>
    /// <param name="dbContextProvider">The database context provider.</param>
    public EfCore$EntityName$Repository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider)
        : base(dbContextProvider)
    {
    }
    /// <summary>
    /// æŒ‰ç…§åç§°æŸ¥æ‰¾$ChinaComment$
    /// </summary>
    /// <param name="name"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public virtual async Task<$EntityName$> FindByNameAsync(string name, CancellationToken cancellationToken = default)
    {
        return await (await GetDbSetAsync())
            .IncludeDetails()
            .Where(x => !x.IsDeleted)
            .OrderBy(t => t.Sort)
            .FirstOrDefaultAsync(t => t.MaterialCode == name, GetCancellationToken(cancellationToken));
    }
    /// <summary>
    /// éªŒè¯åç§°æ˜¯å¦å­˜åœ¨$ChinaComment$
    /// </summary>
    /// <param name="materialCode"></param>
    /// <param name="id"></param>
    /// <returns></returns>
    public async Task<bool> NameExistAsync(string materialCode, Guid? id = null)
    {
        return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.MaterialCode == materialCode);
    }
    /// <summary>
    /// èŽ·å–æœ€å¤§æŽ’åº$ChinaComment$
    /// </summary>
    /// <returns></returns>
    public async Task<int> GetMaxSortAsync()
    {
        var hasAny = await (await GetQueryableAsync())
            .Where(x => !x.IsDeleted).AnyAsync();
        if (!hasAny)
        {
            return 1;
        }
        var sort = await (await GetQueryableAsync())
            .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort);
        return sort + 1;
    }
    /// <summary>
    /// èŽ·å–åˆ†é¡µåˆ—è¡¨$ChinaComment$
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="sorting"></param>
    /// <param name="maxResultCount"></param>
    /// <param name="skipCount"></param>
    /// <param name="includeDetails"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public async Task<List<$EntityName$>> GetListAsync(FunReturnResultModel<Expression<Func<$EntityName$, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default)
    {
        return await (await GetDbSetAsync())
            .IncludeDetails(includeDetails)
            .WhereIf(whereConditions != null, whereConditions.data)
            .Where(x => !x.IsDeleted)
            .OrderBy(sorting.IsNullOrEmpty() ? nameof($EntityName$.Sort) : sorting)
            .PageBy(skipCount, maxResultCount)
            .ToListAsync(GetCancellationToken(cancellationToken));
    }
    /// <summary>
    /// èŽ·å–æ€»æ•°$ChinaComment$
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public async Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<$EntityName$, bool>>> whereConditions, CancellationToken cancellationToken = default)
    {
        return await (await GetQueryableAsync())
            .WhereIf(whereConditions != null, whereConditions.data)
            .Where(x => !x.IsDeleted)
            .CountAsync(cancellationToken: GetCancellationToken(cancellationToken));
    }
    /// <inheritdoc />
    public override async Task<IQueryable<$EntityName$>> WithDetailsAsync()
    {
        return (await GetQueryableAsync())
            .Where(x => !x.IsDeleted).IncludeDetails();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Web/Controllers/EntityModeÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,275 @@
import { ref, onMounted, reactive, Ref, nextTick, computed } from 'vue'
import { injectModel } from '@/libs/Provider/Provider'
import { $EntityName$ } from '../Models/$EntityName$'
import { ElMessage } from 'element-plus'
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox'
import { useFile } from './File'
interface CurrentType {
  row: any
  index: number
}
export const use$EntityName$ = (props: any, ctx?: any) => {
  const $PageMenuInstanceName$ = injectModel<$EntityName$>('$PageMenuInstanceName$')
  const { exportFile } = useFile()
  /**
   * å¤´éƒ¨é…ç½®
   */
  const headers = ref({})
  /**
   * åŠ¨æ€åˆ—é…ç½®
   */
  const $PageMenuInstanceName$Columns = ref<Record<string, any>>([])
  /**
   * æœç´¢å€¼
   */
  const search = ref('')
  /**
   * æŽ’序
   */
  const sort = ref(0)
  /**
   * é€‰æ‹©é¡¹
   */
  const selection = ref([])
  /**
   * å½“前选中的行
   */
  const current = ref<any>(null)
  /**
   * æ•°æ®æº
   */
  const dataSource: Ref<any[]> = ref([])
  /**
   * è¡¨æ ¼
   */
  const tableRef = ref()
  const dialogConfig = reactive({
    visible: false,
    title: '',
    isAdd: false,
  })
  const dialogConfigForQuery = reactive({
    visible: false,
    title: '',
    isAdd: false,
  })
  const dialogSettingConfig = reactive({
    visible: false,
    title: '',
  })
  /**
   * åˆ†é¡µæ•°æ®
   */
  const paginationParams = ref({})
  /**
   * æ‰“开详情
   * @param row
   */
  const openDetail = (row: any) => {
    current.value = row
    dialogConfig.visible = true
    dialogConfig.title = row.name
    dialogConfig.isAdd = false
    sort.value = row.sort
  }
  const contextMenu = [
    {
      label: '展开详情',
      fn: (c: CurrentType) => {
        current.value = null
        sort.value = c.row.sort
        nextTick(() => openDetail(c.row))
      },
      divided: true,
      icon: 'o',
    },
    // {
    //   label: '向上添加',
    //   fn: (c: CurrentType, pageNum: number) => {
    //     current.value = null
    //     sort.value = c.index + 1 + (pageNum - 1) * 50
    //     dialogConfig.visible = true
    //     dialogConfig.title = '添加'
    //     dialogConfig.isAdd = false
    //   },
    //   divided: true,
    //   icon: 'up',
    // },
    // {
    //   label: '向下添加',
    //   fn: (c: CurrentType, pageNum: number) => {
    //     current.value = null
    //     sort.value = c.index + 2 + (pageNum - 1) * 50
    //     dialogConfig.visible = true
    //     dialogConfig.title = '添加'
    //     dialogConfig.isAdd = false
    //   },
    //   divided: true,
    //   icon: 'down',
    // },
    // {
    //   label: '创建副本',
    //   fn: async ({ row }: CurrentType) => {
    //     await $PageMenuInstanceName$.cloneData([row.id])
    //     ElMessage.success('创建副本成功')
    //     tableRef.value?.getList()
    //   },
    //   divided: true,
    //   icon: 'copy',
    // },
    {
      label: '删除',
      fn: async (c: CurrentType) => {
        const names = selection.value.map((item: { name: string }) => item.name)
        ConfirmBox(
          `是否删除${names.length ? names.join(',') : c.row.name}`
        ).then(async () => {
          const ids = selection.value.map((item: { id: string }) => item.id)
          await $PageMenuInstanceName$.delete$EntityName$s(ids.length ? ids : [c.row.id])
          ElMessage.success('删除成功')
          tableRef.value.getList()
        })
      },
      icon: 'close',
    },
  ]
  const onCheck = (records: any) => {
    selection.value = records
  }
  const onAdd$EntityName$ = () => {
    const params = tableRef.value?.getPaginationParams()
    current.value = null
    dialogConfig.visible = true
    dialogConfig.isAdd = true
    dialogConfig.title = '添加'
    sort.value = params.totalCount + 1
  }
  //点击按钮【高级查询】
  const onAdvancedQuery = () => {
    const params = tableRef.value?.getPaginationParams()
    current.value = null
    dialogConfigForQuery.visible = true
    dialogConfigForQuery.isAdd = true
    dialogConfigForQuery.title = '高级查询'
  }
  const onConfirm$EntityName$ = async () => {
    dialogConfig.visible = false
    if (dialogConfig.isAdd) {
      tableRef.value?.scrollToRow({
        skip: true,
      })
    } else {
      await tableRef.value?.getList()
    }
  }
  /**
   * è¡Œç‚¹å‡»æ—¶æ›´æ–°current
   */
  const onRowClick = ({ row }: any) => {
    if (dialogConfig.visible && current.value) {
      current.value = row
    }
  }
  /**
   * å¯¼å‡º
   */
  const onExport = (data={}) => {
    //const params = tableRef.value?.getParams()
    exportFile('/api/v1/hIAWms/$PageMenuInstanceName$/export', data, 'hIAWms')
  }
  /**
   * å…³é”®å­—搜索
   */
  const onSearch = () => {
    tableRef.value?.getList({
      Filter: search.value,
    })
  }
  /**
   * é‡ç½®è¡¨æ ¼æ•°æ®
   */
  const reloadList = () => {
    tableRef.value?.getList()
  }
  /**
   * ä¸Šä¼ æˆåŠŸ
   */
  const onSuccess = () => {
    tableRef.value?.getList()
    ElMessage.success('导入成功')
  }
  /**
   * å¤±è´¥
   * @param err
   */
  const onError = (err: any) => {
    try {
      const message = JSON.parse(err.message)
      ElMessage.error(message.msg)
    } catch (error) {
      ElMessage.error('导入失败')
    }
  }
  /**
   * ä¸Šä¼ é’©å­
   */
  const onBeforeUpload = (file: File) => {
    const format = ['xlsx', 'xls', 'csv']
    if (!format.includes(file.name.split('.')[1])) {
      ElMessage.error('导入文件格式不正确,请导入.xlsx/.xls与.csv格式的文件')
      return false
    }
    return true
  }
  onMounted(() => {
    headers.value = {
      Authorization: `Bearer ${sessionStorage.getItem('Token')}`,
      'X-Project': sessionStorage.getItem('X-Project'),
    }
  })
  ctx.expose({
    reloadList,
  })
  return {
    dataSource,
    contextMenu,
    dialogConfig,
    dialogConfigForQuery,
    dialogSettingConfig,
    tableRef,
    current,
    search,
    sort,
    $PageMenuInstanceName$Columns,
    paginationParams,
    headers,
    onBeforeUpload,
    onError,
    onSuccess,
    openDetail,
    onSearch,
    onExport,
    onRowClick,
    onConfirm$EntityName$,
    onCheck,
    onAdd$EntityName$,
    onAdvancedQuery
  }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Web/Controllers/FileÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
import { importFileToService, exportFileToClient } from '@/api/file'
import { ElMessage } from 'element-plus'
import { downloadFile } from '@/utils'
import dayjs from 'dayjs'
export const useFile = () => {
  /**
   * å¯¼å…¥æ–‡ä»¶
   * @param url
   */
  const importFile = async (url: string, file: File) => {
    const formData = new FormData()
    formData.append('file', file)
    await importFileToService(url, formData)
    ElMessage('导入成功')
  }
  /**
   * å¯¼å‡ºæ–‡ä»¶
   * @param url
   */
  const exportFile = async (url: string, params: any, name: string) => {
    const res = await exportFileToClient(url, params)
    downloadFile(res, `${name}_${dayjs().format('YYYYMMDDHHMMss')}.xlsx`)
    ElMessage.success('导出成功')
  }
  return {
    importFile,
    exportFile,
  }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Web/enumÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
export interface TabType {
  label: string
  name: string
  columns?: any[]
  data?: any[]
  isFooter: boolean
  [key: string]: any
}
export const permissionCodes = {
  '$PageMenuInstanceName$-list': '列表-列表',
  '$PageMenuInstanceName$-add': '列表-添加',
  '$PageMenuInstanceName$-import': '列表-导入',
  '$PageMenuInstanceName$-output': '列表-输出',
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Web/indexÄ£°å.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
import $NameSpacePath$ from './Views/$NameSpacePath$'
import Setting from '@/components/Setting/Setting'
import { provider } from '@/provider/index'
import p from '../../assets/svg/p.svg'
export default {
  is: '$NameSpacePath$',
  name: '$PageMenuName$',
  category: 'run',
  icon: p,
  authorizationRequired: false,
  canvasView: provider($NameSpacePath$),
  settingsView: Setting,
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Utility/CommonHelper.cs
@@ -41,6 +41,8 @@
        {
            str = str.Replace("$NameSpacePath$", param.NameSpacePath);//命名空间
            str = str.Replace("$ChinaComment$", param.ChinaComment);//中文注释
            str = str.Replace("$PageMenuName$", param.PageMenuName);//中文注释
            str = str.Replace("$PageMenuInstanceName$", param.PageMenuInstanceName);//中文注释
            str = str.Replace("$EntityName$", param.EntityName);//实体类名
            str = str.Replace("$Modulelogo$", param.Modulelogo);//模块简写
            str = str.Replace("$EntityInstanceName$", param.EntityInstanceName);//实例名
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Utility/ListHelper.cs
@@ -273,6 +273,41 @@
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_CreateId.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ModifyId.ToUpper()
                    
                    )
                {
                    continue;
                }
                newList.Add(columnModel);
            }
            return newList;
        }
        /// <summary>
        /// è¿‡æ»¤ï¼Œæ›´æ–°å®žä½“类时专用
        /// </summary>
        /// <param name="columnNameList"></param>
        /// <returns></returns>
        public static List<ColumnModel> RemoveAttrForUpdateMode(List<ColumnModel> columnNameList)
        {
            List<ColumnModel> newList = new List<ColumnModel>();
            ColumnModel columnModel = null;
            for (int i = 0; i < columnNameList.Count; i++)
            {
                columnModel = columnNameList[i];
                if (columnModel.ColumnName.ToUpper() == SystemCommonVar.c_creator.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_createTime.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_lastModifier.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_lastModifyTime.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ModifyTime.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_Id.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ExtraProperties.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ConcurrencyStamp.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_DeleterId.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_delFlag.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_CreateId.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ModifyId.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_Sort.ToUpper()
                    )
                {
                    continue;
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Utility/StructStrHelper.cs
@@ -1,4 +1,5 @@
using GenerateCode_WeiBen_WMS.Model;
using GenerateCode_WeiBen_WMS.Const;
using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Configuration;
@@ -199,6 +200,7 @@
                        attrStr += "        public float" + str_NullFlag + attr + " { get; set; }\n";
                        break;
                    case DataTypeEnum.dt_bit:
                    case DataTypeEnum.dt_tinyint:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        attrStr += "        public bool" + str_NullFlag + attr + " { get; set; }\n";
                        break;
@@ -228,6 +230,7 @@
                //    var bb = "";
                //}
                string str_NullFlag = " ";
                if (columnModel.IsNullable) { str_NullFlag = "? "; }
                string attrStr = "";
                attrStr += "        /// <summary>\n";
@@ -246,6 +249,17 @@
                    case DataTypeEnum.dt_bigint:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        attrStr += "        public long" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_decimal:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        attrStr += "        public decimal" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_tinyint:
                    case DataTypeEnum.dt_bit:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        attrStr += "        public bool" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_int:
@@ -313,7 +327,7 @@
                string attr = columnModel.ColumnName;
                string attrStr = "";
                attrStr += $"        {attr} = {param.EntityInstanceName}.{attr};\n";
                attrStr += $"        {attr} = {param.EntityInstanceName}.{attr},\n";
                return attrStr;
@@ -360,17 +374,10 @@
                            }
                            break;
                        case DataTypeEnum.dt_bigint:
                            if (isHaveMaxLength)
                            {
                                attrStr += $"        Check.NotNull(input.{attr}, \"{columnModel.Description}\", {columnModel.DataLength});\n";
                            }
                            else
                            {
                                attrStr += $"        Check.NotNull(input.{attr}, \"{columnModel.Description}\");\n";
                            }
                            break;
                        case DataTypeEnum.dt_int:
                        case DataTypeEnum.dt_decimal:
                        case DataTypeEnum.dt_tinyint:
                        case DataTypeEnum.dt_bit:
                        case DataTypeEnum.dt_int:
                            if (isHaveMaxLength)
                            {
                                attrStr += $"        Check.NotNull(input.{attr}, \"{columnModel.Description}\", {columnModel.DataLength});\n";
@@ -416,6 +423,7 @@
                //    var bb = "";
                //}
                string str_NullFlag = " ";
                if (columnModel.IsNullable) { str_NullFlag = "? "; }
                string attrStr = "";
                attrStr += "        /// <summary>\n";
@@ -428,12 +436,23 @@
                    case DataTypeEnum.dt_datetime:
                    case DataTypeEnum.dt_datetime2:
                    case DataTypeEnum.dt_datetimeoffset:
                        attrStr += "        public datetime" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "        public DateTime" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_bigint:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        attrStr += "        public long" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_decimal:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        attrStr += "        public decimal" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_tinyint:
                    case DataTypeEnum.dt_bit:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        attrStr += "        public bool" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_int:
@@ -452,7 +471,15 @@
                        break;
                    default:
                        //特殊处理 å­—段 ExtraProperties
                        if (columnModel.ColumnName.ToUpper() == SystemConst.pro_ExtraProperties.ToUpper())
                        {
                            attrStr += "        public ExtraPropertyDictionary" + str_NullFlag + attr + " { get; set; }\n";
                        }
                        else
                        {
                        attrStr += "        public string" + str_NullFlag + attr + " { get; set; }\n";
                        }
                        attrStr += "\n";//最后是加一个空格
                        break;
                }
@@ -466,7 +493,7 @@
                        attrStr += "        /// <summary>\n";
                        attrStr += "        /// " + columnModel.Description + "\n";
                        attrStr += "        /// </summary>\n";
                        attrStr += "        public string" + str_NullFlag + findEnumObj.EnumTypeDesc + " { get; set; }\n";
                        attrStr += "        public string" + str_NullFlag + findEnumObj.EnumTypeDesc + "\n";
                        attrStr += "        { \n";
                        attrStr += "            get \n";
                        attrStr += "            { \n";
@@ -519,6 +546,17 @@
                    case DataTypeEnum.dt_bigint:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        attrStr += "        public long" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_decimal:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        attrStr += "        public decimal" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_tinyint:
                    case DataTypeEnum.dt_bit:
                        if (columnModel.IsNullable) { str_NullFlag = "? "; }
                        attrStr += "        public bool" + str_NullFlag + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_int:
@@ -596,10 +634,15 @@
                        attrStr += "        public long" + str_NullFlag + emptyStr + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_decimal:
                        attrStr += "        public decimal" + str_NullFlag + emptyStr + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_int:
                        attrStr += "        public int" + str_NullFlag + emptyStr + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
                        break;
                    case DataTypeEnum.dt_bit:
                    case DataTypeEnum.dt_tinyint:
                        attrStr += "        public bool" + str_NullFlag + emptyStr + attr + " { get; set; }\n";
                        attrStr += "\n";//最后是加一个空格
@@ -649,6 +692,7 @@
                    case DataTypeEnum.dt_datetimeoffset:
                        return "\n";
                    case DataTypeEnum.dt_bigint:
                    case DataTypeEnum.dt_decimal:
                    case DataTypeEnum.dt_int:
                    case DataTypeEnum.dt_tinyint:
                        attrStr += "        public SearchFilterModeEnum " + attr + highSearchModeSuffix + " { get; set; }= SearchFilterModeEnum.精准查询;\n";
@@ -754,6 +798,7 @@
                        defaultValue = "getdate()";
                        break;
                    case DataTypeEnum.dt_bit:
                    case DataTypeEnum.dt_tinyint:
                        defaultValue = "0";
                        break;
                    default:
@@ -812,6 +857,7 @@
                    case DataTypeEnum.dt_datetime2:
                    case DataTypeEnum.dt_datetimeoffset:
                    case DataTypeEnum.dt_bit:
                    case DataTypeEnum.dt_tinyint:
                        sql.Append("@" + attrColumnName + "  " + columnModel.DataType + " " + fuhao + "\n");
                        break;
                    case DataTypeEnum.dt_decimal:
@@ -873,6 +919,7 @@
                    case DataTypeEnum.dt_datetime2:
                    case DataTypeEnum.dt_datetimeoffset:
                    case DataTypeEnum.dt_bit:
                    case DataTypeEnum.dt_tinyint:
                        sql.Append("@" + attrColumnName + "  " + columnModel.DataType + " " + fuhao + "\n");
                        break;
                    case DataTypeEnum.dt_decimal:
@@ -933,6 +980,7 @@
                    case DataTypeEnum.dt_datetime2:
                    case DataTypeEnum.dt_datetimeoffset:
                    case DataTypeEnum.dt_bit:
                    case DataTypeEnum.dt_tinyint:
                        sql.Append("@" + attrColumnName + "  " + columnModel.DataType + " " + fuhao);
                        break;
                    case DataTypeEnum.dt_decimal:
@@ -1058,6 +1106,7 @@
                        case DataTypeEnum.dt_datetime2:
                        case DataTypeEnum.dt_datetimeoffset:
                        case DataTypeEnum.dt_bit:
                        case DataTypeEnum.dt_tinyint:
                            updateSql = "  " + attrColumnName + "= case @" + attrColumnName + " when NULL then " + attrColumnName + " else @" + attrColumnName + " end  ";
                            break;
                        default:
@@ -1219,6 +1268,7 @@
                        str += "SqlDbType.Float," + columnModel.DataLength.ToString();
                        break;
                    case DataTypeEnum.dt_bit:
                    case DataTypeEnum.dt_tinyint:
                        str += "SqlDbType.Bit," + columnModel.DataLength.ToString();
                        break;
                }
@@ -1289,6 +1339,7 @@
                            sb.Append("} \n");
                            break;
                        case DataTypeEnum.dt_bit:
                        case DataTypeEnum.dt_tinyint:
                            sb.Append("if (dataRow[\"" + columnModel.ColumnName.ToString() + "\"].ToString() != \"\") \n");
                            sb.Append("{ \n");
@@ -1539,6 +1590,7 @@
                            sb.Append("          </el-table-column> \n");
                            break;
                        case DataTypeEnum.dt_bit:
                        case DataTypeEnum.dt_tinyint:
                            sb.Append("          <el-table-column prop=\"" + columnModel.ColumnName + "\" label=\"" + columnModel.Description + "\" align=\"center\"  > \n");
                            sb.Append("<template slot-scope=\"scope\">");
                            sb.Append("<el-tag :type=\"scope.row." + columnModel.ColumnName + "  ? 'danger' : 'success'\"");
@@ -1586,6 +1638,7 @@
                    switch (enumDT)
                    {
                        case DataTypeEnum.dt_bit:
                        case DataTypeEnum.dt_tinyint:
                            sb.Append("                  <el-switch v-model=\"addForm." + columnModel.ColumnName + "\"></el-switch> \n");
                            break;
                        case DataTypeEnum.dt_datetime:
@@ -1633,6 +1686,7 @@
                    switch (enumDT)
                    {
                        case DataTypeEnum.dt_bit:
                        case DataTypeEnum.dt_tinyint:
                            sb.Append("                  <el-switch v-model=\"viewDetailForm." + columnModel.ColumnName + "\"></el-switch> \n");
                            break;
                        case DataTypeEnum.dt_datetime:
@@ -1690,6 +1744,7 @@
                            elment = "el-date-picker";
                            break;
                        case DataTypeEnum.dt_bit:
                        case DataTypeEnum.dt_tinyint:
                            elment = "el-select";
                            break;
                        default:
@@ -1714,6 +1769,7 @@
                    switch (enumDT)
                    {
                        case DataTypeEnum.dt_bit:
                        case DataTypeEnum.dt_tinyint:
                            sb.Append("                 options: [{label: '是',value: 'true'}, {label: '否',value: 'false'}] \n");
                            break;
                        default:
@@ -1826,6 +1882,7 @@
                            sb.Append("<el-input v-model=\"serachObj." + columnModel.ColumnName + "\" placeholder=\"请输入" + columnModel.Description + "\"></el-input> \n");
                            break;
                        case DataTypeEnum.dt_bit:
                        case DataTypeEnum.dt_tinyint:
                            sb.Append("<el-checkbox-group v-model=\"ck_delflag\" @change=\"ckDelFlag\">\n");
                            sb.Append("  <el-checkbox-button label=\"启用\" name=\"ck_delflag\"></el-checkbox-button>\n");
                            sb.Append("  <el-checkbox-button label=\"禁用\" name=\"ck_delflag\"></el-checkbox-button>\n");
@@ -1871,6 +1928,7 @@
                    switch (enumDT)
                    {
                        case DataTypeEnum.dt_bit:
                        case DataTypeEnum.dt_tinyint:
                        case DataTypeEnum.dt_datetime:
                        case DataTypeEnum.dt_datetime2:
                        case DataTypeEnum.dt_datetimeoffset:
@@ -1936,6 +1994,7 @@
                            sb.Append("                } \n");
                            break;
                        case DataTypeEnum.dt_bit:
                        case DataTypeEnum.dt_tinyint:
                            sb.Append("                if (!string.IsNullOrEmpty(queryModel." + columnModel.ColumnName + ")) \n");
                            sb.Append("                { \n");
                            sb.Append("                    strWhere += \" AND $TableAlias$." + columnModel.ColumnName + " = '\" + queryModel." + columnModel.ColumnName + " + \"'\"; \n");
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/³£ÓÃ.txt
@@ -1,6 +1,13 @@

$ChinaComment$
$PageMenuName$
$EntityName$
$NameSpacePath$
$EntityInstanceName$
$PageMenuInstanceName$
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs
@@ -1,4 +1,4 @@
using CmsQueryExtensions.Extension;
using CmsQueryExtensions.Extension;
using Volo.Abp.Application.Dtos;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
@@ -106,22 +106,22 @@
    /// <summary>
    /// å¤–径(单位:mm)
    /// </summary>
    public string OuterDiameter { get; set; }
        public decimal?  OuterDiameter { get; set; }
    /// <summary>
    /// å¤–径(单位:mm)-查询关系运算符 
    /// </summary>
    public SearchFilterModeEnum OuterDiameter_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        public SearchFilterModeEnum OuterDiameter_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
    /// <summary>
    /// å£åŽšï¼ˆå•ä½ï¼šmm)
    /// </summary>
    public string WallThickness { get; set; }
        public decimal?  WallThickness { get; set; }
    /// <summary>
    /// å£åŽšï¼ˆå•ä½ï¼šmm)-查询关系运算符 
    /// </summary>
    public SearchFilterModeEnum WallThickness_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        public SearchFilterModeEnum WallThickness_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
    /// <summary>
    /// æè´¨ï¼ˆå¦‚:304不锈钢)
@@ -136,12 +136,12 @@
    /// <summary>
    /// é•¿åº¦ï¼ˆå•位:m)
    /// </summary>
    public string Length { get; set; }
        public decimal?  Length { get; set; }
    /// <summary>
    /// é•¿åº¦ï¼ˆå•位:m)-查询关系运算符 
    /// </summary>
    public SearchFilterModeEnum Length_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        public SearchFilterModeEnum Length_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
    /// <summary>
    /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡
@@ -232,16 +232,6 @@
    /// æ˜¯å¦ç¦ç”¨-查询关系运算符 
    /// </summary>
    public SearchFilterModeEnum IsDisabled_FilterMode { get; set; } = SearchFilterModeEnum.精准查询;
    /// <summary>
    ///
    /// </summary>
    public string ConcurrencyStamp { get; set; }
    /// <summary>
    /// -查询关系运算符
    /// </summary>
    public SearchFilterModeEnum ConcurrencyStamp_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// 
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateDto.cs
@@ -1,7 +1,7 @@
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
/// <summary>
/// WmsMaterial创建参数对象
/// ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨åˆ›å»ºå‚数对象
/// </summary>
public class WmsMaterialCreateDto : WmsMaterialCreateOrUpdateDtoBase
{
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs
@@ -1,10 +1,10 @@
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using Volo.Abp.Application.Dtos;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
/// <summary>
/// ç‰©æ–™åŸºç¡€ä¿¡æ¯åˆ›å»ºæˆ–更新基类
/// ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨åˆ›å»ºæˆ–更新基类
/// </summary>
public abstract class WmsMaterialCreateOrUpdateDtoBase : ExtensibleEntityDto
{
@@ -31,12 +31,12 @@
    /// <summary>
    /// ä¸»å•位(如:kg、m、个)
    /// </summary>
    public string PrimaryUnit { get; set; }
        public string? PrimaryUnit { get; set; }
    /// <summary>
    /// è§„æ ¼/标准(如:GB/T 8163-2018)
    /// </summary>
    public string Standard { get; set; }
        public string? Standard { get; set; }
    /// <summary>
    /// å¤–径(单位:mm)
@@ -51,7 +51,7 @@
    /// <summary>
    /// æè´¨ï¼ˆå¦‚:304不锈钢)
    /// </summary>
    public string MaterialQuality { get; set; }
        public string? MaterialQuality { get; set; }
    /// <summary>
    /// é•¿åº¦ï¼ˆå•位:m)
@@ -59,38 +59,61 @@
    public decimal Length { get; set; }
    /// <summary>
    /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡ï¼ˆtrue: ä¸»æ”¯ç®¡, false: éžä¸»æ”¯ç®¡ï¼‰
        /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡
    /// </summary>
    public YesNoEnum IsMainBranch { get; set; }
    /// <summary>
    /// ç”Ÿäº§å·¥åŽ‚
    /// </summary>
    public string Factory { get; set; }
        public string? Factory { get; set; }
    /// <summary>
    /// è¯ä¹¦ç¼–号(如:压力容器认证)
        /// è¯ä¹¦ç¼–号
    /// </summary>
    public string Certification { get; set; }
        public string? Certification { get; set; }
    /// <summary>
    /// å†—余字段1 - é¢„留扩展用途
    /// </summary>
    public string RedundantField1 { get; set; }
        public string? RedundantField1 { get; set; }
    /// <summary>
    /// å†—余字段2 - é¢„留扩展用途
    /// </summary>
    public string RedundantField2 { get; set; }
        public string? RedundantField2 { get; set; }
    /// <summary>
    /// å†—余字段3 - é¢„留扩展用途
    /// </summary>
    public string RedundantField3 { get; set; }
        public string? RedundantField3 { get; set; }
        /// <summary>
        /// æŽ’序
        /// </summary>
        public int Sort { get; set; }
    /// <summary>
    /// å¤‡æ³¨
    /// </summary>
    public virtual string Remark { get; set; }
        public string? Remark { get; set; }
        /// <summary>
        /// æ˜¯å¦ç¦ç”¨
        /// </summary>
        public bool? IsDisabled { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? CreatorId { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? LastModifierId { get; set; }
    /// <summary>
    /// Initializes a new instance of the <see cref="WmsMaterialCreateOrUpdateDtoBase"/> class.
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs
@@ -1,11 +1,13 @@
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.Domain.Entities;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
/// <summary>
/// WmsMaterial数据参数对象
/// ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨æ•°æ®å‚数对象
/// </summary>
public class WmsMaterialDto : ExtensibleEntityDto<Guid>, IHasConcurrencyStamp
{
@@ -34,7 +36,6 @@
             return GetEnumDescriptionUtil.GetEnumDescription(PurchaseType);
        }
    }
    /// <summary>
    /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
    /// </summary>
@@ -50,16 +51,15 @@
            return GetEnumDescriptionUtil.GetEnumDescription(MaterialType);
        }
    }
    /// <summary>
    /// ä¸»å•位(如:kg、m、个)
    /// </summary>
    public string PrimaryUnit { get; set; }
        public string? PrimaryUnit { get; set; }
    /// <summary>
    /// è§„æ ¼/标准(如:GB/T 8163-2018)
    /// </summary>
    public string Standard { get; set; }
        public string? Standard { get; set; }
    /// <summary>
    /// å¤–径(单位:mm)
@@ -74,7 +74,7 @@
    /// <summary>
    /// æè´¨ï¼ˆå¦‚:304不锈钢)
    /// </summary>
    public string MaterialQuality { get; set; }
        public string? MaterialQuality { get; set; }
    /// <summary>
    /// é•¿åº¦ï¼ˆå•位:m)
@@ -82,7 +82,7 @@
    public decimal Length { get; set; }
    /// <summary>
    /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡ï¼ˆ1: ä¸»æ”¯ç®¡, 2: éžä¸»æ”¯ç®¡ï¼‰
        /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡
    /// </summary>
    public YesNoEnum IsMainBranch { get; set; }
@@ -96,50 +96,92 @@
            return GetEnumDescriptionUtil.GetEnumDescription(IsMainBranch);
        }
    }
    /// <summary>
    /// ç”Ÿäº§å·¥åŽ‚
    /// </summary>
    public string Factory { get; set; }
        public string? Factory { get; set; }
    /// <summary>
    /// è¯ä¹¦ç¼–号(如:压力容器认证)
        /// è¯ä¹¦ç¼–号
    /// </summary>
    public string Certification { get; set; }
        public string? Certification { get; set; }
    /// <summary>
    /// å†—余字段1 - é¢„留扩展用途
    /// </summary>
    public string RedundantField1 { get; set; }
        public string? RedundantField1 { get; set; }
    /// <summary>
    /// å†—余字段2 - é¢„留扩展用途
    /// </summary>
    public string RedundantField2 { get; set; }
        public string? RedundantField2 { get; set; }
    /// <summary>
    /// å†—余字段3 - é¢„留扩展用途
    /// </summary>
    public string RedundantField3 { get; set; }
        public string? RedundantField3 { get; set; }
    /// <summary>
    /// æŽ’序
    /// </summary>
    public virtual int Sort { get; set; }
        public int Sort { get; set; }
    /// <summary>
    /// å¤‡æ³¨
    /// </summary>
    public virtual string Remark { get; set; }
        public string? Remark { get; set; }
    /// <summary>
    /// æ˜¯å¦ç¦ç”¨
    /// </summary>
    public virtual bool? IsDisabled { get; set; }
        public bool? IsDisabled { get; set; }
    /// <summary>
    /// å¹¶å‘戳
        ///
    /// </summary>
    public string ConcurrencyStamp { get; set; }
        public ExtraPropertyDictionary? ExtraProperties { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? ConcurrencyStamp { get; set; }
        /// <summary>
        ///
        /// </summary>
        public DateTime CreationTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? CreatorId { get; set; }
        /// <summary>
        ///
        /// </summary>
        public DateTime? LastModificationTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? LastModifierId { get; set; }
        /// <summary>
        ///
        /// </summary>
        public bool IsDeleted { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? DeleterId { get; set; }
        /// <summary>
        ///
        /// </summary>
        public DateTime? DeletionTime { get; set; }
    /// <summary>
    /// Gets the export data.
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs
@@ -1,146 +1,129 @@
using MiniExcelLibs.Attributes;
using MiniExcelLibs.Attributes;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial
{
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
    /// <summary>
    /// WmsMaterial导出模型
/// ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨å¯¼å‡ºæ¨¡åž‹
    /// </summary>
    public class MaterialExportModel
public  class WmsMaterialExportModel
    {
        /// <summary>
        /// ç‰©æ–™ç¼–码(唯一标识)
        /// </summary>
        /// <example>MAT-2023-001</example>
        [ExcelColumn(Name = "物料编码", Width = 25)]
        [ExcelColumn(Name = "物料编码(唯一标识)", Width = 25)]
        public string MaterialCode { get; set; }
        /// <summary>
        /// ç‰©æ–™åç§°
        /// </summary>
        /// <example>304不锈钢管</example>
        [ExcelColumn(Name = "物料名称", Width = 25)]
        public string MaterialName { get; set; }
        /// <summary>
        /// é‡‡è´­ç±»åž‹
        /// é‡‡è´­ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
        /// </summary>
        /// <remarks>
        /// 0:标准采购 1:紧急采购 2:协议采购
        /// </remarks>
        /// <example>0</example>
        [ExcelColumn(Name = "采购类型", Width = 25)]
        [ExcelColumn(Name = "采购类型(枚举值)", Width = 25)]
        public PurchaseTypeEnum PurchaseType { get; set; }
        /// <summary>
        /// ç‰©æ–™ç±»åž‹
        /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
        /// </summary>
        /// <remarks>
        /// 1:原材料 2:半成品 3:成品
        /// </remarks>
        /// <example>1</example>
        [ExcelColumn(Name = "物料类型", Width = 25)]
        [ExcelColumn(Name = "物料类型(枚举值)", Width = 25)]
        public MaterialTypeEnum MaterialType { get; set; }
        /// <summary>
        /// ä¸»è®¡é‡å•位
        /// ä¸»å•位(如:kg、m、个)
        /// </summary>
        /// <example>kg</example>
        [ExcelColumn(Name = "主单位", Width = 25)]
        [ExcelColumn(Name = "主单位(如:kg、m、个)", Width = 25)]
        public string PrimaryUnit { get; set; }
        /// <summary>
        /// è§„æ ¼/技术标准
        /// è§„æ ¼/标准(如:GB/T 8163-2018)
        /// </summary>
        /// <example>GB/T 8163-2018</example>
        [ExcelColumn(Name = "规格/标准", Width = 25)]
        [ExcelColumn(Name = "规格/标准(如:GB/T 8163-2018)", Width = 25)]
        public string Standard { get; set; }
        /// <summary>
        /// å¤–径(单位:毫米)
        /// å¤–径(单位:mm)
        /// </summary>
        /// <example>50.5</example>
        [ExcelColumn(Name = "外径(mm)", Width = 25)]
        [ExcelColumn(Name = "外径(单位:mm)", Width = 25)]
        public decimal OuterDiameter { get; set; }
        /// <summary>
        /// å£åŽšï¼ˆå•ä½ï¼šæ¯«ç±³ï¼‰
        /// å£åŽšï¼ˆå•ä½ï¼šmm)
        /// </summary>
        /// <example>2.5</example>
        [ExcelColumn(Name = "壁厚(mm)", Width = 25)]
        [ExcelColumn(Name = "壁厚(单位:mm)", Width = 25)]
        public decimal WallThickness { get; set; }
        /// <summary>
        /// æè´¨è¯´æ˜Ž
        /// æè´¨ï¼ˆå¦‚:304不锈钢)
        /// </summary>
        /// <example>304不锈钢</example>
        [ExcelColumn(Name = "材质", Width = 25)]
        [ExcelColumn(Name = "材质(如:304不锈钢)", Width = 25)]
        public string MaterialQuality { get; set; }
        /// <summary>
        /// é•¿åº¦ï¼ˆå•位:米)
        /// é•¿åº¦ï¼ˆå•位:m)
        /// </summary>
        /// <example>6.0</example>
        [ExcelColumn(Name = "长度(m)", Width = 25)]
        [ExcelColumn(Name = "长度(单位:m)", Width = 25)]
        public decimal Length { get; set; }
        /// <summary>
        /// æ˜¯å¦ä¸»æ”¯ç®¡æ ‡è¯†
        /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡
        /// </summary>
        /// <example>true</example>
        [ExcelColumn(Name = "是否主支管", Width = 25)]
        [Description("是/否")]
        [ExcelColumn(Name = "是否为主支管", Width = 25)]
        public YesNoEnum IsMainBranch { get; set; }
        /// <summary>
        /// ç”Ÿäº§å·¥åŽ‚åç§°
        /// ç”Ÿäº§å·¥åŽ‚
        /// </summary>
        /// <example>上海第一工厂</example>
        [ExcelColumn(Name = "生产工厂", Width = 25)]
        public string Factory { get; set; }
        /// <summary>
        /// è®¤è¯è¯ä¹¦ç¼–号
        /// è¯ä¹¦ç¼–号
        /// </summary>
        /// <example>CER-2023-001</example>
        [ExcelColumn(Name = "证书编号", Width = 25)]
        public string Certification { get; set; }
        /// <summary>
        /// é¢„留扩展字段1
        /// å†—余字段1 - é¢„留扩展用途
        /// </summary>
        /// <remarks>
        /// å¯ç”¨äºŽä¸´æ—¶å­˜å‚¨ä¾›åº”商编码等扩展信息
        /// </remarks>
        [ExcelColumn(Name = "扩展字段1", Width = 25)]
        [ExcelColumn(Name = "冗余字段1 - é¢„留扩展用途", Width = 25)]
        public string RedundantField1 { get; set; }
        /// <summary>
        /// é¢„留扩展字段2
        /// å†—余字段2 - é¢„留扩展用途
        /// </summary>
        /// <remarks>
        /// å¯ç”¨äºŽä¸´æ—¶å­˜å‚¨æ‰¹æ¬¡å·ç­‰æ‰©å±•信息
        /// </remarks>
        [ExcelColumn(Name = "扩展字段2", Width = 25)]
        [ExcelColumn(Name = "冗余字段2 - é¢„留扩展用途", Width = 25)]
        public string RedundantField2 { get; set; }
        /// <summary>
        /// é¢„留扩展字段3
        /// å†—余字段3 - é¢„留扩展用途
        /// </summary>
        /// <remarks>
        /// å¯ç”¨äºŽä¸´æ—¶å­˜å‚¨è‡ªå®šä¹‰åˆ†ç±»ç­‰æ‰©å±•信息
        /// </remarks>
        [ExcelColumn(Name = "扩展字段3", Width = 25)]
        [ExcelColumn(Name = "冗余字段3 - é¢„留扩展用途", Width = 25)]
        public string RedundantField3 { get; set; }
        /// <summary>
        /// æŽ’序
        /// </summary>
        [ExcelColumn(Name = "排序", Width = 25)]
        public int Sort { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        [ExcelColumn(Name = "备注",Width = 25)]
        public string Remark { get; set; }
        /// <summary>
        /// æ˜¯å¦ç¦ç”¨
        /// </summary>
        [ExcelColumn(Name = "是否禁用", Width = 25)]
        public bool? IsDisabled { get; set; }
        public Dictionary<string, object> GetExportData()
        {
@@ -153,5 +136,3 @@
            return exportData;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialUpdateDto.cs
@@ -1,9 +1,8 @@
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Entities;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
/// <summary>
/// WmsMaterial更新参数对象
/// ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨æ›´æ–°å‚数对象
/// </summary>
public class WmsMaterialUpdateDto : WmsMaterialCreateOrUpdateDtoBase, IHasConcurrencyStamp
{
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialsImportModel.cs
@@ -1,28 +1,28 @@

namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial
{
    /// <summary>
    /// WmsMaterials导入模型
    /// ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨å¯¼å…¥æ¨¡åž‹
    /// </summary>
    public class WmsMaterialsImportModel
    {
        private List<WmsMaterialImportModel> _wmsmaterials = new();
        private List<WmsMaterialImportModel> _WmsMaterials = new();
        public List<WmsMaterialImportModel> WmsMaterials
        {
            get => _wmsmaterials;
            get => _WmsMaterials;
            set
            {
                _wmsmaterials = value;
                _WmsMaterials = value;
                var rowIndex = 2;
                _wmsmaterials?.ForEach(x => x.RowIndex = rowIndex++);
                _WmsMaterials?.ForEach(x => x.RowIndex = rowIndex++);
            }
        }
        /// <summary>
        /// WmsMaterial导入模型
        /// ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨å¯¼å…¥æ¨¡åž‹
        /// </summary>
        public class WmsMaterialImportModel : MaterialExportModel
        public class WmsMaterialImportModel : WmsMaterialExportModel
        {
            /// <summary>
            /// è¡Œå·
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialAppService.cs
@@ -1,29 +1,29 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
using Volo.Abp.Application.Services;
namespace CMS.Plugin.HIAWms.Application.Contracts.Services;
/// <summary>
/// ç‰©æ–™åŸºç¡€ä¿¡æ¯åº”用服务接口
/// ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨åº”用服务接口
/// </summary>
public interface IWmsMaterialAppService : ICrudAppService<WmsMaterialDto, Guid, GetWmsMaterialInput, WmsMaterialCreateDto, WmsMaterialUpdateDto>
{
    /// <summary>
    /// å…‹éš†ç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// å…‹éš†ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    Task<List<WmsMaterialDto>> CloneAsync(IEnumerable<Guid> ids);
    /// <summary>
    /// åˆ é™¤ç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// åˆ é™¤ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    Task DeleteManyAsync(IEnumerable<Guid> ids);
    /// <summary>
    /// è°ƒæ•´æŽ’序物料基础信息
    /// è°ƒæ•´æŽ’序物料基础信息表
    /// </summary>
    /// <param name="id"></param>
    /// <param name="sort"></param>
@@ -31,14 +31,14 @@
    Task AdjustSortAsync(Guid id, int sort);
    /// <summary>
    /// å¯¼å…¥ç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// å¯¼å…¥ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task ImportAsync(WmsMaterialsImportModel input);
    /// <summary>
    /// å¯¼å‡ºç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// å¯¼å‡ºç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs
@@ -1,9 +1,9 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
using CMS.Plugin.HIAWms.Application.Contracts.Services;
using CMS.Plugin.HIAWms.Domain.Shared;
using CMS.Plugin.HIAWms.Domain.Shared.Util;
using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterials;
using CMS.Plugin.HIAWms.Domain.WmsMaterials;
using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterial;
using CMS.Plugin.HIAWms.Domain.WmsMaterial;
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
using Volo.Abp;
@@ -15,33 +15,33 @@
namespace CMS.Plugin.HIAWms.Application.Implements;
/// <summary>
/// ç‰©æ–™åŸºç¡€ä¿¡æ¯åº”用服务
/// ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨åº”用服务
/// </summary>
public class WmsMaterialAppService : CMSPluginAppService, IWmsMaterialAppService
{
    private readonly IWmsMaterialRepository _wmsmaterialRepository;
    private readonly IWmsMaterialRepository wmsmaterialsRepository;
    /// <summary>
    /// Initializes a new instance of the <see cref="WmsMaterialAppService"/> class.
    /// </summary>
    /// <param name="wmsmaterialRepository">The task job repository.</param>
    public WmsMaterialAppService(IWmsMaterialRepository wmsmaterialRepository)
    /// <param name="WmsMaterialRepository">The task job repository.</param>
    public WmsMaterialAppService(IWmsMaterialRepository WmsMaterialRepository)
    {
        _wmsmaterialRepository = wmsmaterialRepository;
        wmsmaterialsRepository = WmsMaterialRepository;
    }
    /// <summary>
    /// èŽ·å–æŒ‡å®šç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// èŽ·å–æŒ‡å®šç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public virtual async Task<WmsMaterialDto> GetAsync(Guid id)
    {
        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(await _wmsmaterialRepository.GetAsync(id));
        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(await wmsmaterialsRepository.GetAsync(id));
    }
    /// <summary>
    /// åˆ†é¡µèŽ·å–ç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// åˆ†é¡µèŽ·å–ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
@@ -61,8 +61,8 @@
        #endregion
        var count = await _wmsmaterialRepository.GetCountAsync(whereConditions);
        var list = await _wmsmaterialRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
        var count = await wmsmaterialsRepository.GetCountAsync(whereConditions);
        var list = await wmsmaterialsRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
        return new PagedResultDto<WmsMaterialDto>(count, ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(list));
    }
@@ -91,7 +91,7 @@
    }
    /// <summary>
    /// æ–°å»ºç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// æ–°å»ºç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
@@ -100,31 +100,31 @@
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var exist = await _wmsmaterialRepository.NameExistAsync(input.MaterialCode);
        var exist = await wmsmaterialsRepository.NameExistAsync(input.MaterialCode);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]);
        }
        var maxSort = await _wmsmaterialRepository.GetMaxSortAsync();
        var maxSort = await wmsmaterialsRepository.GetMaxSortAsync();
        var sort = input.Sort ?? maxSort;
        var wmsmaterial = ObjectMapper.Map<WmsMaterialCreateDto, WmsMaterial>(input);
        wmsmaterial.Sort = sort;
        input.MapExtraPropertiesTo(wmsmaterial, MappingPropertyDefinitionChecks.None);
        var insertObj = ObjectMapper.Map<WmsMaterialCreateDto, WmsMaterial>(input);
        insertObj.Sort = sort;
        input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
        await _wmsmaterialRepository.InsertAsync(wmsmaterial);
        await wmsmaterialsRepository.InsertAsync(insertObj);
        if (input.Sort.HasValue && wmsmaterial.Sort != maxSort)
        if (input.Sort.HasValue && insertObj.Sort != maxSort)
        {
            await AdjustSortAsync(wmsmaterial.Id, wmsmaterial.Sort);
            await AdjustSortAsync(insertObj.Id, insertObj.Sort);
        }
        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(wmsmaterial);
        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(insertObj);
    }
    /// <summary>
    /// æ›´æ–°ç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// æ›´æ–°ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="id"></param>
    /// <param name="input"></param>
@@ -134,56 +134,63 @@
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var wmsmaterial = await _wmsmaterialRepository.GetAsync(id);
        var exist = await _wmsmaterialRepository.NameExistAsync(input.MaterialCode, wmsmaterial.Id);
        var updateObj = await wmsmaterialsRepository.GetAsync(id);
        var exist = await wmsmaterialsRepository.NameExistAsync(input.MaterialCode, updateObj.Id);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]);
        }
        wmsmaterial.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(wmsmaterial, MappingPropertyDefinitionChecks.None);
        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
        wmsmaterial.MaterialName = input.MaterialName;
        wmsmaterial.PurchaseType = input.PurchaseType;
        wmsmaterial.MaterialType = input.MaterialType;
        wmsmaterial.PrimaryUnit = input.PrimaryUnit;
        wmsmaterial.Standard = input.Standard;
        wmsmaterial.OuterDiameter = input.OuterDiameter;
        wmsmaterial.WallThickness = input.WallThickness;
        wmsmaterial.MaterialQuality = input.MaterialQuality;
        wmsmaterial.Length = input.Length;
        wmsmaterial.IsMainBranch = input.IsMainBranch;
        wmsmaterial.Factory = input.Factory;
        wmsmaterial.Certification = input.Certification;
                updateObj.MaterialCode = input.MaterialCode;
        updateObj.MaterialName = input.MaterialName;
        updateObj.PurchaseType = input.PurchaseType;
        updateObj.MaterialType = input.MaterialType;
        updateObj.PrimaryUnit = input.PrimaryUnit;
        updateObj.Standard = input.Standard;
        updateObj.OuterDiameter = input.OuterDiameter;
        updateObj.WallThickness = input.WallThickness;
        updateObj.MaterialQuality = input.MaterialQuality;
        updateObj.Length = input.Length;
        updateObj.IsMainBranch = input.IsMainBranch;
        updateObj.Factory = input.Factory;
        updateObj.Certification = input.Certification;
        updateObj.RedundantField1 = input.RedundantField1;
        updateObj.RedundantField2 = input.RedundantField2;
        updateObj.RedundantField3 = input.RedundantField3;
        updateObj.Remark = input.Remark;
        updateObj.IsDisabled = input.IsDisabled;
        await _wmsmaterialRepository.UpdateAsync(wmsmaterial);
        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(wmsmaterial);
        await wmsmaterialsRepository.UpdateAsync(updateObj);
        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(updateObj);
    }
    /// <summary>
    /// å…‹éš†ç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// å…‹éš†ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    public async Task<List<WmsMaterialDto>> CloneAsync(IEnumerable<Guid> ids)
    {
        //var wmsmaterials = new List<WmsMaterial>();
        //var wmsmaterialss = new List<WmsMaterial>();
        //if (ids != null)
        //{
        //    var sort = await _wmsmaterialRepository.GetMaxSortAsync();
        //    var sort = await wmsmaterialsRepository.GetMaxSortAsync();
        //    foreach (var id in ids)
        //    {
        //        var wmsmaterial = await _wmsmaterialRepository.FindAsync(id);
        //        if (wmsmaterial != null)
        //        var WmsMaterial = await wmsmaterialsRepository.FindAsync(id);
        //        if (WmsMaterial != null)
        //        {
        //            var name = wmsmaterial.Name + WmsMaterialConsts.CloneTag;
        //            var name = WmsMaterial.Name + WmsMaterialConsts.CloneTag;
        //            var notExist = false;
        //            while (!notExist)
        //            {
        //                var exist = await _wmsmaterialRepository.NameExistAsync(name);
        //                if (exist || wmsmaterials.Any(x => x.Name == name))
        //                var exist = await wmsmaterialsRepository.NameExistAsync(name);
        //                if (exist || wmsmaterialss.Any(x => x.Name == name))
        //                {
        //                    name += WmsMaterialConsts.CloneTag;
        //                    continue;
@@ -192,28 +199,28 @@
        //                notExist = true;
        //            }
        //            //wmsmaterial = await _wmsmaterialRepository.InsertAsync(wmsmaterial.Clone(GuidGenerator.Create(), name, sort++));
        //            wmsmaterials.Add(wmsmaterial);
        //            //WmsMaterial = await wmsmaterialsRepository.InsertAsync(WmsMaterial.Clone(GuidGenerator.Create(), name, sort++));
        //            wmsmaterialss.Add(WmsMaterial);
        //        }
        //    }
        //}
        //return ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(wmsmaterials);
        //return ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(wmsmaterialss);
        return new List<WmsMaterialDto>();
    }
    /// <summary>
    /// åˆ é™¤å•个物料基础信息
    /// åˆ é™¤å•个物料基础信息表
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public virtual Task DeleteAsync(Guid id)
    {
        return _wmsmaterialRepository.DeleteAsync(id);
        return wmsmaterialsRepository.DeleteAsync(id);
    }
    /// <summary>
    /// åˆ é™¤å¤šä¸ªç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// åˆ é™¤å¤šä¸ªç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
@@ -226,14 +233,14 @@
    }
    /// <summary>
    /// è°ƒæ•´æŽ’序物料基础信息
    /// è°ƒæ•´æŽ’序物料基础信息表
    /// </summary>
    /// <param name="id"></param>
    /// <param name="sort"></param>
    /// <returns></returns>
    public virtual async Task AdjustSortAsync(Guid id, int sort)
    {
        var list = await _wmsmaterialRepository.GetListAsync(null, nameof(WmsMaterial.Sort));
        var list = await wmsmaterialsRepository.GetListAsync(null, nameof(WmsMaterial.Sort));
        if (list != null && list.Any())
        {
            var initSort = 1;
@@ -260,11 +267,11 @@
            }
        }
        await _wmsmaterialRepository.UpdateManyAsync(list);
        await wmsmaterialsRepository.UpdateManyAsync(list);
    }
    /// <summary>
    /// å¯¼å…¥ç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// å¯¼å…¥ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
@@ -273,16 +280,16 @@
    {
        Check.NotNull(input, nameof(input));
        var wmsmaterialCreateDtos = new List<(int RowIndex, WmsMaterialCreateDto Item)>();
        var wmsmaterialUpdateDtos = new List<(int RowIndex, Guid Id, WmsMaterialUpdateDto Item)>();
        var wmsmaterials = input.WmsMaterials;
        var wmsmaterialsCreateDtos = new List<(int RowIndex, WmsMaterialCreateDto Item)>();
        var wmsmaterialsUpdateDtos = new List<(int RowIndex, Guid Id, WmsMaterialUpdateDto Item)>();
        var importItems = input.WmsMaterials;
        if (wmsmaterials != null && wmsmaterials.Any())
        if (importItems != null && importItems.Any())
        {
            #region å¯¼å…¥æ ¡éªŒ
            // åˆ¤æ–­åç§°æ˜¯å¦é‡å¤ï¼Œå¹¶è¾“出第几行重复
            var duplicateWmsMaterials = wmsmaterials.GroupBy(x => x.MaterialCode).Where(x => x.Count() > 1).ToList();
            var duplicateWmsMaterials = importItems.GroupBy(x => x.MaterialCode).Where(x => x.Count() > 1).ToList();
            if (duplicateWmsMaterials?.Any() == true)
            {
                var duplicateWmsMaterialMsgs = duplicateWmsMaterials.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} è¡Œï¼š{x.Key}  åç§°é‡å¤");
@@ -292,98 +299,98 @@
            #endregion
            foreach (var wmsmaterial in wmsmaterials)
            foreach (var impItem in importItems)
            {
                if (wmsmaterial.MaterialCode.IsNullOrWhiteSpace() && wmsmaterial.MaterialName.IsNullOrWhiteSpace())
                if (impItem.MaterialCode.IsNullOrWhiteSpace() && impItem.MaterialName.IsNullOrWhiteSpace())
                {
                    continue;
                }
                if (wmsmaterial.MaterialCode.IsNullOrWhiteSpace())
                if (impItem.MaterialCode.IsNullOrWhiteSpace())
                {
                    var errorMsg = $"导入失败!配置,第{wmsmaterial.RowIndex}行:WmsMaterial名称不能为空";
                    var errorMsg = $"导入失败!配置,第{impItem.RowIndex}行:WmsMaterial名称不能为空";
                    throw new UserFriendlyException(errorMsg);
                }
                var oldWmsMaterial = await _wmsmaterialRepository.FindByNameAsync(wmsmaterial.MaterialCode);
                var oldWmsMaterial = await wmsmaterialsRepository.FindByNameAsync(impItem.MaterialCode);
                if (oldWmsMaterial != null)
                {
                    var wmsmaterialUpdateDto = new WmsMaterialUpdateDto
                    var wmsmaterialsUpdateDto = new WmsMaterialUpdateDto
                    {
                        MaterialCode = wmsmaterial.MaterialCode,
                        MaterialName = wmsmaterial.MaterialName,
                        PurchaseType = wmsmaterial.PurchaseType,
                        MaterialType = wmsmaterial.MaterialType,
                        PrimaryUnit = wmsmaterial.PrimaryUnit,
                        Standard = wmsmaterial.Standard,
                        OuterDiameter = wmsmaterial.OuterDiameter,
                        WallThickness = wmsmaterial.WallThickness,
                        MaterialQuality = wmsmaterial.MaterialQuality,
                        Length = wmsmaterial.Length,
                        IsMainBranch = wmsmaterial.IsMainBranch,
                        Factory = wmsmaterial.Factory,
                        Certification = wmsmaterial.Certification,
                        Remark = wmsmaterial.Remark,
                        MaterialCode = impItem.MaterialCode,
                        MaterialName = impItem.MaterialName,
                        PurchaseType = impItem.PurchaseType,
                        MaterialType = impItem.MaterialType,
                        PrimaryUnit = impItem.PrimaryUnit,
                        Standard = impItem.Standard,
                        OuterDiameter = impItem.OuterDiameter,
                        WallThickness = impItem.WallThickness,
                        MaterialQuality = impItem.MaterialQuality,
                        Length = impItem.Length,
                        IsMainBranch = impItem.IsMainBranch,
                        Factory = impItem.Factory,
                        Certification = impItem.Certification,
                        Remark = impItem.Remark,
                    };
                    wmsmaterialUpdateDtos.Add((wmsmaterial.RowIndex, oldWmsMaterial.Id, wmsmaterialUpdateDto));
                    wmsmaterialsUpdateDtos.Add((impItem.RowIndex, oldWmsMaterial.Id, wmsmaterialsUpdateDto));
                }
                else
                {
                    var wmsmaterialCreateDto = new WmsMaterialCreateDto
                    var wmsmaterialsCreateDto = new WmsMaterialCreateDto
                    {
                        MaterialCode = wmsmaterial.MaterialCode,
                        MaterialName = wmsmaterial.MaterialName,
                        PurchaseType = wmsmaterial.PurchaseType,
                        MaterialType = wmsmaterial.MaterialType,
                        PrimaryUnit = wmsmaterial.PrimaryUnit,
                        Standard = wmsmaterial.Standard,
                        OuterDiameter = wmsmaterial.OuterDiameter,
                        WallThickness = wmsmaterial.WallThickness,
                        MaterialQuality = wmsmaterial.MaterialQuality,
                        Length = wmsmaterial.Length,
                        IsMainBranch = wmsmaterial.IsMainBranch,
                        Factory = wmsmaterial.Factory,
                        Certification = wmsmaterial.Certification,
                        Remark = wmsmaterial.Remark,
                        MaterialCode = impItem.MaterialCode,
                        MaterialName = impItem.MaterialName,
                        PurchaseType = impItem.PurchaseType,
                        MaterialType = impItem.MaterialType,
                        PrimaryUnit = impItem.PrimaryUnit,
                        Standard = impItem.Standard,
                        OuterDiameter = impItem.OuterDiameter,
                        WallThickness = impItem.WallThickness,
                        MaterialQuality = impItem.MaterialQuality,
                        Length = impItem.Length,
                        IsMainBranch = impItem.IsMainBranch,
                        Factory = impItem.Factory,
                        Certification = impItem.Certification,
                        Remark = impItem.Remark,
                    };
                    wmsmaterialCreateDtos.Add((wmsmaterial.RowIndex, wmsmaterialCreateDto));
                    wmsmaterialsCreateDtos.Add((impItem.RowIndex, wmsmaterialsCreateDto));
                }
            }
        }
        // æ–°å¢ž
        foreach (var wmsmaterialDto in wmsmaterialCreateDtos)
        foreach (var wmsmaterialsDto in wmsmaterialsCreateDtos)
        {
            try
            {
                await CreateAsync(wmsmaterialDto.Item);
                await CreateAsync(wmsmaterialsDto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{wmsmaterialDto.RowIndex}行:{e.Message},终止导入";
                var errorMsg = $"导入失败!配置,第{wmsmaterialsDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
        // æ›´æ–°
        foreach (var wmsmaterialDto in wmsmaterialUpdateDtos)
        foreach (var wmsmaterialsDto in wmsmaterialsUpdateDtos)
        {
            try
            {
                await UpdateAsync(wmsmaterialDto.Id, wmsmaterialDto.Item);
                await UpdateAsync(wmsmaterialsDto.Id, wmsmaterialsDto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{wmsmaterialDto.RowIndex}行:{e.Message},终止导入";
                var errorMsg = $"导入失败!配置,第{wmsmaterialsDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
    }
    /// <summary>
    /// å¯¼å‡ºç‰©æ–™åŸºç¡€ä¿¡æ¯
    /// å¯¼å‡ºç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
@@ -404,7 +411,7 @@
        #endregion
        var list = await _wmsmaterialRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
        var list = await wmsmaterialsRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
        var result = ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(list);
        var sheets = new Dictionary<string, object>
@@ -417,16 +424,22 @@
    }
    /// <summary>
    /// æ ¡éªŒç‰©æ–™åŸºç¡€ä¿¡æ¯ï¼Œå½“新建或更新时
    /// æ ¡éªŒç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨ï¼Œå½“新建或更新时
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    protected Task CheckCreateOrUpdateDtoAsync(WmsMaterialCreateOrUpdateDtoBase input)
    {
        Check.NotNull(input, nameof(input));
        Check.NotNullOrWhiteSpace(input.MaterialCode, "编号", WmsMaterialConsts.MaxCodeLength);
        Check.NotNullOrWhiteSpace(input.MaterialName, "名称", WmsMaterialConsts.MaxNameLength);
        Check.Length(input.Remark, "备注", WmsMaterialConsts.MaxRemarkLength);
                Check.NotNullOrWhiteSpace(input.MaterialCode, "物料编码(唯一标识)", 64);
        Check.NotNullOrWhiteSpace(input.MaterialName, "物料名称", 128);
        Check.NotNull(input.PurchaseType, "采购类型(枚举值)");
        Check.NotNull(input.MaterialType, "物料类型(枚举值)");
        Check.NotNull(input.OuterDiameter, "外径(单位:mm)");
        Check.NotNull(input.WallThickness, "壁厚(单位:mm)");
        Check.NotNull(input.Length, "长度(单位:m)");
        Check.NotNull(input.IsMainBranch, "是否为主支管");
        return Task.CompletedTask;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs
@@ -1,6 +1,6 @@
using AutoMapper;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
using CMS.Plugin.HIAWms.Domain.WmsMaterials;
using CMS.Plugin.HIAWms.Domain.WmsMaterial;
using Volo.Abp.ObjectExtending;
namespace CMS.Plugin.HIAWms.Application.MapperProfiles;
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialConsts.cs
ÎļþÃû´Ó Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterials/WmsMaterialConsts.cs ÐÞ¸Ä
@@ -1,4 +1,4 @@
namespace CMS.Plugin.HIAWms.Domain.Shared.WmsMaterials;
namespace CMS.Plugin.HIAWms.Domain.Shared.WmsMaterial;
/// <summary>
/// WmsMaterial常量定义
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialEto.cs
ÎļþÃû´Ó Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterials/WmsMaterialEto.cs ÐÞ¸Ä
@@ -1,4 +1,4 @@
namespace CMS.Plugin.HIAWms.Domain.Shared.WmsMaterials;
namespace CMS.Plugin.HIAWms.Domain.Shared.WmsMaterial;
/// <summary>
/// WmsMaterial事件参数对象
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialEventHandler.cs
@@ -1,4 +1,4 @@
using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterials;
using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterial;
using Volo.Abp.DependencyInjection;
using Volo.Abp.EventBus.Distributed;
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/IWmsMaterialRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
using Volo.Abp.Domain.Repositories;
namespace CMS.Plugin.HIAWms.Domain.WmsMaterial;
/// <summary>
/// ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨ä»“储
/// </summary>
public interface IWmsMaterialRepository : IBasicRepository<WmsMaterial, Guid>
{
    /// <summary>
    /// æŒ‰ç…§åç§°æŸ¥æ‰¾ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="name"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<WmsMaterial> FindByNameAsync(string name, CancellationToken cancellationToken = default);
    /// <summary>
    /// éªŒè¯åç§°æ˜¯å¦å­˜åœ¨ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="name"></param>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<bool> NameExistAsync(string name, Guid? id = null);
    /// <summary>
    /// èŽ·å–æœ€å¤§æŽ’åºç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <returns></returns>
    Task<int> GetMaxSortAsync();
    /// <summary>
    /// èŽ·å–åˆ†é¡µåˆ—è¡¨ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="sorting"></param>
    /// <param name="maxResultCount"></param>
    /// <param name="skipCount"></param>
    /// <param name="includeDetails"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<List<WmsMaterial>> GetListAsync(FunReturnResultModel<Expression<Func<WmsMaterial, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default);
    /// <summary>
    /// èŽ·å–æ€»æ•°ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsMaterial, bool>>> whereConditions, CancellationToken cancellationToken = default);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterial.cs
ÎļþÃû´Ó Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs ÐÞ¸Ä
@@ -1,10 +1,10 @@
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterials;
using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterial;
using MathNet.Numerics;
using Volo.Abp;
using Volo.Abp.Domain.Entities.Auditing;
namespace CMS.Plugin.HIAWms.Domain.WmsMaterials
namespace CMS.Plugin.HIAWms.Domain.WmsMaterial
{
    /// <summary>
    /// WmsMaterial
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialDataSeedContributor.cs
ÎļþÃû´Ó Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterialDataSeedContributor.cs ÐÞ¸Ä
@@ -3,7 +3,7 @@
using Volo.Abp.Guids;
using Volo.Abp.Uow;
namespace CMS.Plugin.HIAWms.Domain.WmsMaterials
namespace CMS.Plugin.HIAWms.Domain.WmsMaterial
{
    /// <summary>
    /// WmsMaterial种子数据提供程序
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialSpecification.cs
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/IWmsMaterialRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs
@@ -1,10 +1,9 @@
using CMS.Plugin.HIAWms.Domain;
using CMS.Plugin.HIAWms.Domain.WmsMaterials;
using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterials;
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using CMS.Plugin.HIAWms.Domain.WmsMaterial;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.EntityFrameworkCore.Modeling;
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs
@@ -1,19 +1,18 @@
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
using CMS.Plugin.HIAWms.Domain.WmsMaterials;
using CMS.Plugin.HIAWms.Domain.WmsMaterial;
using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
using CmsQueryExtensions.Extension;
using Microsoft.EntityFrameworkCore;
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Specifications;
namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Repositories;
/// <inheritdoc />
/// <summary>
/// ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨ä»“储实现
/// </summary>
public class EfCoreWmsMaterialRepository : EfCoreRepository<ICMSPluginDbContext, WmsMaterial, Guid>, IWmsMaterialRepository
{
    /// <summary>
@@ -25,7 +24,12 @@
    {
    }
    /// <inheritdoc />
    /// <summary>
    /// æŒ‰ç…§åç§°æŸ¥æ‰¾ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="name"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public virtual async Task<WmsMaterial> FindByNameAsync(string name, CancellationToken cancellationToken = default)
    {
        return await (await GetDbSetAsync())
@@ -35,13 +39,21 @@
            .FirstOrDefaultAsync(t => t.MaterialCode == name, GetCancellationToken(cancellationToken));
    }
    /// <inheritdoc />
    /// <summary>
    /// éªŒè¯åç§°æ˜¯å¦å­˜åœ¨ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="materialCode"></param>
    /// <param name="id"></param>
    /// <returns></returns>
    public async Task<bool> NameExistAsync(string materialCode, Guid? id = null)
    {
        return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.MaterialCode == materialCode);
    }
    /// <inheritdoc />
    /// <summary>
    /// èŽ·å–æœ€å¤§æŽ’åºç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <returns></returns>
    public async Task<int> GetMaxSortAsync()
    {
        var hasAny = await (await GetQueryableAsync())
@@ -57,7 +69,7 @@
    }
    /// <summary>
    /// èŽ·å–åˆ†é¡µåˆ—è¡¨
    /// èŽ·å–åˆ†é¡µåˆ—è¡¨ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="sorting"></param>
@@ -78,7 +90,7 @@
    }
    /// <summary>
    /// èŽ·å–æ€»æ•°
    /// èŽ·å–æ€»æ•°ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="cancellationToken"></param>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs
@@ -1,4 +1,4 @@
using Ao.Lang;
using Ao.Lang;
using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
using CMS.Plugin.HIAWms.Application.Contracts.Services;
@@ -13,7 +13,7 @@
namespace CMS.Plugin.HIAWms.Controller
{
    /// <summary>
    /// ç‰©æ–™åŸºç¡€ä¿¡æ¯æœåŠ¡
    /// ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨æœåŠ¡
    /// </summary>
    [ApiController]
    [TypeFilter(typeof(CMSLanguageFilter))]
@@ -23,19 +23,19 @@
    [Route("api/v{version:apiVersion}/HIAWms/[controller]")]
    public class WmsMaterialController : ControllerBase
    {
        private readonly IWmsMaterialAppService _wmsmaterialAppService;
        private readonly IWmsMaterialAppService _wmsmaterialsAppService;
        /// <summary>
        /// Initializes a new instance of the <see cref="WmsMaterialController"/> class.
        /// </summary>
        /// <param name="wmsmaterialAppService">The wmsmaterial application service.</param>
        public WmsMaterialController(IWmsMaterialAppService wmsmaterialAppService)
        /// <param name="wmsmaterialsAppService">The wmsmaterials application service.</param>
        public WmsMaterialController(IWmsMaterialAppService wmsmaterialsAppService)
        {
            _wmsmaterialAppService = wmsmaterialAppService;
            _wmsmaterialsAppService = wmsmaterialsAppService;
        }
        /// <summary>
        /// èŽ·å–ç‰©æ–™åŸºç¡€ä¿¡æ¯
        /// èŽ·å–ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
        /// </summary>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
@@ -43,11 +43,11 @@
        [Route("{id}")]
        public virtual Task<WmsMaterialDto> GetAsync(Guid id)
        {
            return _wmsmaterialAppService.GetAsync(id);
            return _wmsmaterialsAppService.GetAsync(id);
        }
        /// <summary>
        /// åˆ†é¡µèŽ·å–ç‰©æ–™åŸºç¡€ä¿¡æ¯çš„åˆ—è¡¨.
        /// åˆ†é¡µèŽ·å–ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨çš„åˆ—è¡¨.
        /// </summary>
        /// <param name="input">输入.</param>
        /// <returns></returns>
@@ -55,11 +55,11 @@
        [Route("Page")]
        public virtual Task<PagedResultDto<WmsMaterialDto>> GetListAsync([FromQuery] GetWmsMaterialInput input)
        {
            return _wmsmaterialAppService.GetListAsync(input);
            return _wmsmaterialsAppService.GetListAsync(input);
        }
        /// <summary>
        /// åˆ›å»ºç‰©æ–™åŸºç¡€ä¿¡æ¯
        /// åˆ›å»ºç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
        /// </summary>
        /// <param name="input">输入.</param>
        /// <returns></returns>
@@ -67,11 +67,11 @@
        [HttpPost]
        public virtual Task<WmsMaterialDto> CreateAsync(WmsMaterialCreateDto input)
        {
            return _wmsmaterialAppService.CreateAsync(input);
            return _wmsmaterialsAppService.CreateAsync(input);
        }
        /// <summary>
        /// æ›´æ–°ç‰©æ–™åŸºç¡€ä¿¡æ¯
        /// æ›´æ–°ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
        /// </summary>
        /// <param name="id">标识符.</param>
        /// <param name="input">输入.</param>
@@ -81,11 +81,11 @@
        [Route("{id}")]
        public virtual Task<WmsMaterialDto> UpdateAsync(Guid id, WmsMaterialUpdateDto input)
        {
            return _wmsmaterialAppService.UpdateAsync(id, input);
            return _wmsmaterialsAppService.UpdateAsync(id, input);
        }
        /// <summary>
        /// å…‹éš†ç‰©æ–™åŸºç¡€ä¿¡æ¯
        /// å…‹éš†ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
        /// </summary>
        /// <param name="ids">Id集合.</param>
        /// <returns></returns>
@@ -94,11 +94,11 @@
        [Route("Clone")]
        public virtual Task<List<WmsMaterialDto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
        {
            return _wmsmaterialAppService.CloneAsync(ids);
            return _wmsmaterialsAppService.CloneAsync(ids);
        }
        /// <summary>
        /// åˆ é™¤ç‰©æ–™åŸºç¡€ä¿¡æ¯
        /// åˆ é™¤ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
        /// </summary>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
@@ -107,11 +107,11 @@
        [Route("{id}")]
        public virtual Task DeleteAsync(Guid id)
        {
            return _wmsmaterialAppService.DeleteAsync(id);
            return _wmsmaterialsAppService.DeleteAsync(id);
        }
        /// <summary>
        /// æ‰¹é‡åˆ é™¤ç‰©æ–™åŸºç¡€ä¿¡æ¯
        /// æ‰¹é‡åˆ é™¤ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
        /// </summary>
        /// <param name="ids">The ids.</param>
        /// <returns></returns>
@@ -119,11 +119,11 @@
        [HttpDelete]
        public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
        {
            return _wmsmaterialAppService.DeleteManyAsync(ids);
            return _wmsmaterialsAppService.DeleteManyAsync(ids);
        }
        /// <summary>
        /// è°ƒæ•´æŽ’序物料基础信息
        /// è°ƒæ•´æŽ’序物料基础信息表
        /// </summary>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
@@ -131,11 +131,11 @@
        [Route("{id}/AdjustSort/{sort}")]
        public virtual Task AdjustSortAsync(Guid id, int sort)
        {
            return _wmsmaterialAppService.AdjustSortAsync(id, sort);
            return _wmsmaterialsAppService.AdjustSortAsync(id, sort);
        }
        /// <summary>
        /// å¯¼å…¥ç‰©æ–™åŸºç¡€ä¿¡æ¯
        /// å¯¼å…¥ç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
        /// </summary>
        /// <returns></returns>
        [Authorize]
@@ -148,23 +148,23 @@
            stream.Seek(0L, SeekOrigin.Begin);
            var sheetNames = stream.GetSheetNames();
            var wmsmaterialRows = sheetNames.Contains("配置") ? MiniExcel.Query<WmsMaterialsImportModel.WmsMaterialImportModel>(stream, sheetName: "配置").ToList() : new();
            var wmsmaterialsRows = sheetNames.Contains("配置") ? MiniExcel.Query<WmsMaterialsImportModel.WmsMaterialImportModel>(stream, sheetName: "配置").ToList() : new();
            if (!wmsmaterialRows.Any())
            if (!wmsmaterialsRows.Any())
            {
                throw new UserFriendlyException("请检查导入的表格");
            }
            await _wmsmaterialAppService.ImportAsync(new WmsMaterialsImportModel
            await _wmsmaterialsAppService.ImportAsync(new WmsMaterialsImportModel
            {
                WmsMaterials = wmsmaterialRows,
                WmsMaterials = wmsmaterialsRows,
            });
            return Ok();
        }
        /// <summary>
        /// å¯¼å‡ºç‰©æ–™åŸºç¡€ä¿¡æ¯
        /// å¯¼å‡ºç‰©æ–™åŸºç¡€ä¿¡æ¯è¡¨
        /// </summary>
        /// <returns></returns>
        [HttpGet]
@@ -172,7 +172,7 @@
        public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsMaterialInput input)
        {
            input.MaxResultCount = int.MaxValue;
            var exportData = await _wmsmaterialAppService.ExportAsync(input);
            var exportData = await _wmsmaterialsAppService.ExportAsync(input);
            var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsMaterial导出模板.xlsx");
            if (!System.IO.File.Exists(templatePath))
            {