schangxiang@126.com
2025-04-30 054c4b3be788b870026fdd1da916be18931161e7
Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo
已添加10个文件
已重命名1个文件
已修改26个文件
已删除1个文件
1337 ■■■■■ 文件已修改
HIAWms/project/Wms.cmsproj 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsEnumDto/WmsEnumInput.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/ExportWmsMaterialModel.cs 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialCreateOrUpdateDtoBase.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialDto.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialsExportModel.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsAreaAutoMapperProfile.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsStoreAutoMapperProfile.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PurchaseTypeEnum.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/EnumHelper.cs 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/ExportHelper.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/GetEnumDescriptionUtil.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250430035549_InitialCreate1.Designer.cs 675 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250430035549_InitialCreate1.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/Sample导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsArea导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainer导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterial导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsPlace导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsStore导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/config/menu.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx 101 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/HIAWms/Models/Service/WmsMaterialDrawer.ts 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/HIAWms/Models/WmsMaterialDrawer.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/HIAWms/Views/HIAWms.tsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.tsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/project/Wms.cmsproj
Binary files differ
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsEnumDto/WmsEnumInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto
{
    /// <summary>
    /// æžšä¸¾è¾“入参数
    /// </summary>
    public class WmsEnumInput
    {
        /// <summary>
        /// æžšä¸¾ç±»åž‹åç§°
        /// </summary>
        /// <example>AccountTypeEnum</example>
        public string EnumName { get; set; }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/ExportWmsMaterialModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,100 @@
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterials
{
    /// <summary>
    /// å¯¼å‡ºå®žä½“ç±»
    /// </summary>
    public class ExportWmsMaterialModel
    {
        /// <summary>
        /// ç‰©æ–™ç¼–码(唯一标识)
        /// </summary>
        [Description("物料编码(唯一标识)")]
        public string MaterialCode { get; set; }
        /// <summary>
        /// ç‰©æ–™åç§°
        /// </summary>
        [Description("物料名称")]
        public string MaterialName { get; set; }
        /// <summary>
        /// é‡‡è´­ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
        /// </summary>
        [Description("采购类型(枚举值)")]
        public string PurchaseType { get; set; }
        /// <summary>
        /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
        /// </summary>
        [Description("物料类型(枚举值)")]
        public string MaterialType { get; set; }
        /// <summary>
        /// ä¸»å•位(如:kg、m、个)
        /// </summary>
        [Description("主单位(如:kg、m、个)")]
        public string PrimaryUnit { get; set; }
        /// <summary>
        /// è§„æ ¼/标准(如:GB/T 8163-2018)
        /// </summary>
        [Description("规格/标准(如:GB/T 8163-2018)")]
        public string Standard { get; set; }
        /// <summary>
        /// å¤–径(单位:mm)
        /// </summary>
        [Description("外径(单位:mm)")]
        public decimal OuterDiameter { get; set; }
        /// <summary>
        /// å£åŽšï¼ˆå•ä½ï¼šmm)
        /// </summary>
        [Description("壁厚(单位:mm)")]
        public decimal WallThickness { get; set; }
        /// <summary>
        /// æè´¨ï¼ˆå¦‚:304不锈钢)
        /// </summary>
        [Description("材质(如:304不锈钢)")]
        public string MaterialQuality { get; set; }
        /// <summary>
        /// é•¿åº¦ï¼ˆå•位:m)
        /// </summary>
        [Description("长度(单位:m)")]
        public decimal Length { get; set; }
        /// <summary>
        /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡ï¼ˆtrue: ä¸»æ”¯ç®¡, false: éžä¸»æ”¯ç®¡ï¼‰
        /// </summary>
        [Description("是否为主支管(true: ä¸»æ”¯ç®¡, false: éžä¸»æ”¯ç®¡ï¼‰")]
        public string IsMainBranch { get; set; }
        /// <summary>
        /// ç”Ÿäº§å·¥åŽ‚
        /// </summary>
        [Description("生产工厂")]
        public string Factory { get; set; }
        /// <summary>
        /// è¯ä¹¦ç¼–号(如:压力容器认证)
        /// </summary>
        [Description("证书编号(如:压力容器认证)")]
        public string Certification { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        [Description("备注")]
        public virtual string Remark { get; set; }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialCreateOrUpdateDtoBase.cs
@@ -61,7 +61,7 @@
    /// <summary>
    /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡ï¼ˆtrue: ä¸»æ”¯ç®¡, false: éžä¸»æ”¯ç®¡ï¼‰
    /// </summary>
    public bool IsMainBranch { get; set; }
    public YesNoEnum IsMainBranch { get; set; }
    /// <summary>
    /// ç”Ÿäº§å·¥åŽ‚
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialDto.cs
@@ -25,9 +25,31 @@
    public PurchaseTypeEnum PurchaseType { get; set; }
    /// <summary>
    /// é‡‡è´­ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
    /// </summary>
    public string PurchaseTypeDesc
    {
        get
        {
            return GetEnumDescriptionUtil.GetEnumDescription(PurchaseType);
        }
    }
    /// <summary>
    /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
    /// </summary>
    public MaterialTypeEnum MaterialType { get; set; }
    /// <summary>
    /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
    /// </summary>
    public string MaterialTypeDesc
    {
        get
        {
            return GetEnumDescriptionUtil.GetEnumDescription(MaterialType);
        }
    }
    /// <summary>
    /// ä¸»å•位(如:kg、m、个)
@@ -60,9 +82,20 @@
    public decimal Length { get; set; }
    /// <summary>
    /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡ï¼ˆtrue: ä¸»æ”¯ç®¡, false: éžä¸»æ”¯ç®¡ï¼‰
    /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡ï¼ˆ1: ä¸»æ”¯ç®¡, 2: éžä¸»æ”¯ç®¡ï¼‰
    /// </summary>
    public bool IsMainBranch { get; set; }
    public YesNoEnum IsMainBranch { get; set; }
    /// <summary>
    /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡
    /// </summary>
    public string IsMainBranchDesc
    {
        get
        {
            return GetEnumDescriptionUtil.GetEnumDescription(IsMainBranch);
        }
    }
    /// <summary>
    /// ç”Ÿäº§å·¥åŽ‚
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialsExportModel.cs
@@ -93,7 +93,7 @@
        /// <example>true</example>
        [ExcelColumn(Name = "是否主支管", Width = 25)]
        [Description("是/否")]
        public bool IsMainBranch { get; set; }
        public YesNoEnum IsMainBranch { get; set; }
        /// <summary>
        /// ç”Ÿäº§å·¥åŽ‚åç§°
@@ -136,8 +136,22 @@
        [ExcelColumn(Name = "扩展字段3", Width = 25)]
        public string RedundantField3 { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        [ExcelColumn(Name = "备注",Width = 25)]
        public string Remark { get; set; }
        public Dictionary<string, object> GetExportData()
        {
            var exportData = new Dictionary<string, object>();
            foreach (var property in this.GetType().GetProperties())
            {
                exportData.Add(property.Name, property.GetValue(this));
            }
            return exportData;
        }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto;
using CMS.Plugin.HIAWms.Domain.Shared.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CMS.Plugin.HIAWms.Application.Contracts.Services
{
    /// <summary>
    /// æžšä¸¾æŽ¥å£
    /// </summary>
    public interface IWmsEnumAppService
    {
        /// <summary>
        /// èŽ·å–æžšä¸¾.
        /// </summary>
        /// <returns></returns>
        List<EnumItem> GetEnumDataList(WmsEnumInput enumInput);
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto;
using CMS.Plugin.HIAWms.Application.Contracts.Services;
using CMS.Plugin.HIAWms.Domain.Shared.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CMS.Plugin.HIAWms.Application.Implements
{
    /// <summary>
    /// æžšä¸¾ç±»åž‹æŽ¥å£å®žçް
    /// </summary>
    public class WmsEnumAppService : CMSPluginAppService, IWmsEnumAppService
    {
        public List<EnumItem> GetEnumDataList(WmsEnumInput enumInput)
        {
            return EnumHelper.GetEnumItems(enumInput.EnumName);
        }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs
@@ -1,8 +1,9 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterials;
using CMS.Plugin.HIAWms.Application.Contracts.Services;
using CMS.Plugin.HIAWms.Domain.WmsMaterials;
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 Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
@@ -322,10 +323,10 @@
        var sheets = new Dictionary<string, object>
        {
            ["配置"] = result.Select(x => x.GetExportData()).ToList(),
            ["配置"] = ExportHelper.ConvertListToExportData(result),
        };
        var fileName = result.Count > 1 ? "WmsMaterial列表" : result.Count == 1 ? result.First()?.MaterialCode : "WmsMaterial模版";
        var fileName = result.Count > 1 ? "WmsMaterial列表" : result.Count == 1 ? result[0]?.MaterialCode : "WmsMaterial模版";
        return (sheets, fileName);
    }
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsAreaAutoMapperProfile.cs
@@ -20,5 +20,6 @@
         * Alternatively, you can split your mapping configurations
         * into multiple profile classes for a better organization. */
        CreateMap<WmsArea, WmsAreaDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WmsAreaCreateDto, WmsArea>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs
@@ -20,5 +20,6 @@
         * Alternatively, you can split your mapping configurations
         * into multiple profile classes for a better organization. */
        CreateMap<WmsContainer, WmsContainerDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WmsContainerCreateDto, WmsContainer>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs
@@ -20,5 +20,6 @@
         * Alternatively, you can split your mapping configurations
         * into multiple profile classes for a better organization. */
        CreateMap<WmsMaterial, WmsMaterialDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WmsMaterialCreateDto, WmsMaterial>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs
@@ -20,5 +20,6 @@
         * Alternatively, you can split your mapping configurations
         * into multiple profile classes for a better organization. */
        CreateMap<WmsPlace, WmsPlaceDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WmsPlaceCreateDto, WmsPlace>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsStoreAutoMapperProfile.cs
@@ -20,5 +20,6 @@
         * Alternatively, you can split your mapping configurations
         * into multiple profile classes for a better organization. */
        CreateMap<WmsStore, WmsStoreDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WmsStoreCreateDto, WmsStore>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PurchaseTypeEnum.cs
@@ -16,19 +16,19 @@
        /// <summary>
        /// /自制
        /// </summary>
        [Description("Self-made - è‡ªåˆ¶")]
        [Description("自制")]
        SelfMade,
        /// <summary>
        /// é‡‡è´­
        /// </summary>
        [Description("Purchased - é‡‡è´­")]
        [Description("采购")]
        Purchased,
        /// <summary>
        /// å‡å¯
        /// </summary>
        [Description("Both - å‡å¯")]
        [Description("均可")]
        Both
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/EnumHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
using KissUtil.Helpers;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
namespace CMS.Plugin.HIAWms.Domain.Shared.Util
{
    /// <summary>
    /// æžšä¸¾å¸®åŠ©ç±».
    /// </summary>
    public static class EnumHelper
    {
        /// <summary>
        /// èŽ·å–æžšä¸¾.
        /// </summary>
        /// <param name="enumName"> </param>
        /// <returns></returns>
        /// <exception cref="ArgumentException"></exception>
        public static List<EnumItem> GetEnumItems(string enumName)
        {
            // èŽ·å–å½“å‰ç¨‹åºé›†ä¸­çš„æ‰€æœ‰ç±»åž‹
            var enumType = AppDomain.CurrentDomain.GetAssemblies()
                .SelectMany(a => a.GetTypes())
                .FirstOrDefault(t => t.Name == enumName && t.IsEnum);
            if (enumType == null)
            {
                throw new UserFriendlyException($"枚举类型 {enumName} ä¸å­˜åœ¨");
            }
            return GetEnumItems(enumType);
        }
        /// <summary>
        /// èŽ·å–æžšä¸¾ç±»åž‹.
        /// </summary>
        /// <param name="enumType"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentException"></exception>
        public static List<EnumItem> GetEnumItems(Type enumType)
        {
            if (!enumType.IsEnum)
            {
                throw new UserFriendlyException("提供的类型不是枚举类型");
            }
            var result = new List<EnumItem>();
            var values = Enum.GetValues(enumType);
            foreach (var value in values)
            {
                var fieldInfo = enumType.GetField(value.ToString());
                var description = fieldInfo?
                    .GetCustomAttributes(typeof(DescriptionAttribute), false)
                    .FirstOrDefault() as DescriptionAttribute;
                result.Add(new EnumItem
                {
                    Value = (int)value,
                    Name = value.ToString(),
                    Description = description?.Description ?? value.ToString(),
                });
            }
            return result;
        }
    }
    /// <summary>
    /// æžšä¸¾æè¿°.
    /// </summary>
    public class EnumItem
    {
        public int Value { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/ExportHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Threading.Tasks;
namespace CMS.Plugin.HIAWms.Domain.Shared.Util
{
    /// <summary>
    /// å¯¼å‡ºå¸®åŠ©ç±».
    /// </summary>
    public static class ExportHelper
    {
        // é€šç”¨è½¬æ¢æ–¹æ³•(兼容 Func<T, Dictionary<string, object>>)
        public static Dictionary<string, object> ConvertToExportData<T>(T entity)
        {
            var dict = new Dictionary<string, object>();
            if (entity == null) return dict;
            foreach (var prop in typeof(T).GetProperties())
            {
                var value = prop.GetValue(entity);
                dict[prop.Name] = FormatValue(value);
            }
            return dict;
        }
        // æ‰¹é‡è½¬æ¢æ–¹æ³•
        public static List<Dictionary<string, object>> ConvertListToExportData<T>(IEnumerable<T> list)
        {
            return list.Select(ConvertToExportData).ToList();
        }
        private static object FormatValue(object value)
        {
            if (value == null) return string.Empty;
            // å¤„理枚举
            if (value is Enum enumValue)
                return GetEnumDescriptionUtil.GetEnumDescription(enumValue);
            // å¤„理布尔
            if (value is bool boolValue)
                return boolValue ? "是" : "否";
            return value;
        }
        private static string GetEnumDescription(Enum value)
        {
            var fieldInfo = value.GetType().GetField(value.ToString());
            var description = fieldInfo?
                .GetCustomAttributes(typeof(DescriptionAttribute), false)
                .FirstOrDefault() as DescriptionAttribute;
            return description?.Description ?? value.ToString();
        }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/GetEnumDescriptionUtil.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace CMS.Plugin.HIAWms
{
    public class GetEnumDescriptionUtil
    {
        /// <summary>
        /// èŽ·å–æžšä¸¾çš„æè¿°
        /// </summary>
        /// <param name="enumValue"></param>
        /// <returns></returns>
        public static string GetEnumDescription(Enum enumValue)
        {
            string value = enumValue.ToString();
            if (string.IsNullOrWhiteSpace(value) || value == "0") return "";
            FieldInfo field = enumValue.GetType().GetField(value);
            object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);  //获取描述属性
            if (objs == null || objs.Length == 0)  //当描述属性没有时,直接返回名称
                return value;
            DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
            return descriptionAttribute.Description;
        }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs
@@ -64,7 +64,7 @@
        /// <summary>
        /// æ˜¯å¦ä¸ºä¸»æ”¯ç®¡ï¼ˆtrue: ä¸»æ”¯ç®¡, false: éžä¸»æ”¯ç®¡ï¼‰
        /// </summary>
        public bool IsMainBranch { get; set; }
        public YesNoEnum IsMainBranch { get; set; }
        /// <summary>
        /// ç”Ÿäº§å·¥åŽ‚
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs
@@ -4,6 +4,7 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.EntityFrameworkCore.Modeling;
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
@@ -90,7 +91,7 @@
                .HasComment("长度(单位:m)");
            b.Property(x => x.IsMainBranch)
                .HasDefaultValue(false)
                .HasDefaultValue(YesNoEnum.N)
                .HasComment("是否为主支管");
            b.Property(x => x.Factory)
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250430035549_InitialCreate1.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,675 @@
// <auto-generated />
using System;
using CMS.Plugin.HIAWms.MySQL;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Volo.Abp.EntityFrameworkCore;
#nullable disable
namespace CMS.Plugin.HIAWms.MySQL.Migrations
{
    [DbContext(typeof(CMSPluginDbContext))]
    [Migration("20250430035549_InitialCreate1")]
    partial class InitialCreate1
    {
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql)
                .HasAnnotation("ProductVersion", "6.0.16")
                .HasAnnotation("Relational:MaxIdentifierLength", 64);
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsAreas.WmsArea", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("AreaDesc")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("描述");
                    b.Property<string>("AreaName")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("库区名称");
                    b.Property<string>("AreaNo")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("库区编号");
                    b.Property<int>("AreaStatus")
                        .HasColumnType("int")
                        .HasComment("库区状态");
                    b.Property<int>("AreaType")
                        .HasColumnType("int")
                        .HasComment("库区类型");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("StoreCode")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("仓库代码");
                    b.Property<string>("StoreName")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("仓库名称");
                    b.HasKey("Id");
                    b.HasIndex("AreaName");
                    b.ToTable("scms_wmsareas", (string)null);
                    b.HasComment("库区表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsContainers.WmsContainer", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<string>("ContainerNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("托盘编号");
                    b.Property<int>("ContainerStatus")
                        .HasColumnType("int")
                        .HasComment("托盘状态");
                    b.Property<int>("ContainerType")
                        .HasColumnType("int")
                        .HasComment("托盘类型");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<int?>("ExceptionNumber")
                        .HasColumnType("int")
                        .HasComment("异常数量");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<decimal?>("LimitHeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限高");
                    b.Property<decimal?>("LimitLength")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限长");
                    b.Property<decimal?>("LimitWidth")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限宽");
                    b.Property<int?>("MaterialNumber")
                        .HasColumnType("int")
                        .HasComment("物料数量");
                    b.Property<decimal?>("MaxWeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("载重上限");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<decimal?>("SpecHeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("高度");
                    b.Property<decimal?>("SpecLength")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("长度");
                    b.Property<decimal?>("SpecWidth")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("宽度");
                    b.HasKey("Id");
                    b.HasIndex("ContainerNo")
                        .IsUnique();
                    b.HasIndex("ContainerStatus");
                    b.HasIndex("ContainerType");
                    b.ToTable("scms_wmscontainers", (string)null);
                    b.HasComment("托盘信息表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterials.WmsMaterial", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("Certification")
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("证书编号");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<string>("Factory")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("生产工厂");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasComment("是否禁用");
                    b.Property<int>("IsMainBranch")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(2)
                        .HasComment("是否为主支管");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<decimal>("Length")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("长度(单位:m)");
                    b.Property<string>("MaterialCode")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("物料编码(唯一标识)");
                    b.Property<string>("MaterialName")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("物料名称");
                    b.Property<string>("MaterialQuality")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("材质(如:304不锈钢)");
                    b.Property<int>("MaterialType")
                        .HasColumnType("int")
                        .HasComment("物料类型(枚举值)");
                    b.Property<decimal>("OuterDiameter")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("外径(单位:mm)");
                    b.Property<string>("PrimaryUnit")
                        .HasMaxLength(20)
                        .HasColumnType("varchar(20)")
                        .HasComment("主单位(如:kg、m、个)");
                    b.Property<int>("PurchaseType")
                        .HasColumnType("int")
                        .HasComment("采购类型(枚举值)");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(500)
                        .HasColumnType("varchar(500)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("排序");
                    b.Property<string>("Standard")
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("规格/标准(如:GB/T 8163-2018)");
                    b.Property<decimal>("WallThickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("壁厚(单位:mm)");
                    b.HasKey("Id");
                    b.HasIndex("MaterialCode")
                        .IsUnique();
                    b.HasIndex("MaterialName");
                    b.HasIndex("MaterialType");
                    b.HasIndex("PurchaseType");
                    b.ToTable("scms_wmsmaterials", (string)null);
                    b.HasComment("物料基础信息表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsPlaces.WmsPlace", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<int>("Aisle")
                        .HasColumnType("int")
                        .HasComment("巷道");
                    b.Property<string>("AreaCode")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("所在库区");
                    b.Property<int>("ColumnNo")
                        .HasColumnType("int")
                        .HasComment("列");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<int>("EmptyContainer")
                        .HasColumnType("int")
                        .HasComment("是否空托");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<int>("Islock")
                        .HasColumnType("int")
                        .HasComment("是否锁定");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<int>("LayerNo")
                        .HasColumnType("int")
                        .HasComment("层");
                    b.Property<string>("PlaceNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("编号");
                    b.Property<int>("PlaceStatus")
                        .HasColumnType("int")
                        .HasComment("货位状态");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("RowNo")
                        .HasColumnType("int")
                        .HasComment("排");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<int>("StorageTypeNo")
                        .HasColumnType("int")
                        .HasComment("货位类型");
                    b.HasKey("Id");
                    b.HasIndex("AreaCode");
                    b.HasIndex("PlaceNo")
                        .IsUnique();
                    b.HasIndex("PlaceStatus");
                    b.HasIndex("StorageTypeNo");
                    b.ToTable("scms_wmsplaces", (string)null);
                    b.HasComment("库位表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsStores.WmsStore", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("StoreCode")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("仓库代码");
                    b.Property<string>("StoreName")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("仓库名称");
                    b.HasKey("Id");
                    b.HasIndex("StoreName");
                    b.ToTable("scms_wmsstores", (string)null);
                    b.HasComment("仓库信息表");
                });
#pragma warning restore 612, 618
        }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250430035549_InitialCreate1.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CMS.Plugin.HIAWms.MySQL.Migrations
{
    public partial class InitialCreate1 : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.AlterColumn<int>(
                name: "IsMainBranch",
                table: "scms_wmsmaterials",
                type: "int",
                nullable: false,
                defaultValue: 2,
                comment: "是否为主支管",
                oldClrType: typeof(bool),
                oldType: "tinyint(1)",
                oldDefaultValue: false,
                oldComment: "是否为主支管");
        }
        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.AlterColumn<bool>(
                name: "IsMainBranch",
                table: "scms_wmsmaterials",
                type: "tinyint(1)",
                nullable: false,
                defaultValue: false,
                comment: "是否为主支管",
                oldClrType: typeof(int),
                oldType: "int",
                oldDefaultValue: 2,
                oldComment: "是否为主支管");
        }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs
@@ -338,10 +338,10 @@
                        .HasDefaultValue(false)
                        .HasComment("是否禁用");
                    b.Property<bool>("IsMainBranch")
                    b.Property<int>("IsMainBranch")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnType("int")
                        .HasDefaultValue(2)
                        .HasComment("是否为主支管");
                    b.Property<DateTime?>("LastModificationTime")
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat
@@ -1,5 +1,5 @@
cd ../
dotnet ef migrations add InitialCreate -c CMSPluginDbContext -o Migrations
dotnet ef migrations add InitialCreate1 -c CMSPluginDbContext -o Migrations
::dotnet ef migrations add Update1 -c CMSPluginDbContext -o Migrations
::dotnet ef migrations add Update2 -c CMSPluginDbContext -o Migrations
::dotnet ef migrations add Update3 -c CMSPluginDbContext -o Migrations
HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto;
using CMS.Plugin.HIAWms.Application.Contracts.Services;
using CMS.Plugin.HIAWms.Domain.Shared.Util;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Web;
namespace CMS.Plugin.HIAWms.Controller
{
    /// <summary>
    /// æžšä¸¾æœåŠ¡æŽ¥å£.
    /// </summary>
    [ApiController]
    [TypeFilter(typeof(CMSLanguageFilter))]
    [TypeFilter(typeof(CMSUowActionFilter))]
    [TypeFilter(typeof(CMSAuditActionFilter))]
    [TypeFilter(typeof(CMSExceptionFilter))]
    [Route("api/v{version:apiVersion}/HIAWms/[controller]")]
    public class WmsEnumController : ControllerBase
    {
        private readonly IWmsEnumAppService _wmsEnumAppService;
        /// <summary>
        /// Initializes a new instance of the <see cref="WmsEnumController"/> class.
        /// æž„造函数.
        /// </summary>
        /// <param name="wmsEnumAppService"></param>
        public WmsEnumController(IWmsEnumAppService wmsEnumAppService)
        {
            _wmsEnumAppService = wmsEnumAppService;
        }
        /// <summary>
        /// èŽ·å–æžšä¸¾æ•°æ®.
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost]
        public List<EnumItem> GetEnumDataList(WmsEnumInput input)
        {
            return _wmsEnumAppService.GetEnumDataList(input);
        }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/Sampleµ¼³öÄ£°å.xlsx
Binary files differ
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsAreaµ¼³öÄ£°å.xlsx
Binary files differ
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainerµ¼³öÄ£°å.xlsx
Binary files differ
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialµ¼³öÄ£°å.xlsx
Binary files differ
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsPlaceµ¼³öÄ£°å.xlsx
Binary files differ
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsStoreµ¼³öÄ£°å.xlsx
Binary files differ
HIAWms/web/src/config/menu.ts
@@ -21,7 +21,7 @@
    "notPage": false
  },
  {
    "name": "物料基础",
    "name": "Wms物料基础",
    "path": "/information-base/HIAWms",
    "patchName": "HIAWms",
    "icon": "p",
@@ -51,7 +51,7 @@
    "notPage": false
  },
  "HIAWms": {
    "name": "物料基础",
    "name": "Wms物料基础",
    "path": "/information-base/HIAWms",
    "patchName": "HIAWms",
    "icon": "p",
HIAWms/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.tsx
ÎļþÃû´Ó HIAWms/web/src/widgets/HIAWms/Controllers/WmsMaterialDrawer.ts ÐÞ¸Ä
@@ -1,4 +1,13 @@
import { ref, onMounted, reactive, computed, Ref, watch } from 'vue'
import {
  ref,
  onMounted,
  reactive,
  computed,
  Ref,
  watch,
  SetupContext,
  h,
} from 'vue'
import { injectModel } from '@/libs/Provider/Provider'
import { WmsMaterialDrawer } from '../Models/WmsMaterialDrawer'
import { ElMessage } from 'element-plus'
@@ -16,9 +25,23 @@
  // ref
  const formRef = ref()
  const disabled = ref(false)
  const current = computed(() => {
    return props.row || null
  })
  const inputNumber = (attrs) => {
    return (
      <el-input-number
        min="1"
        step="1"
        precision="0"
        {...attrs}
      ></el-input-number>
    )
  }
  const visible = computed({
    get() {
      return props.modelValue
@@ -35,6 +58,7 @@
      label: '物料编码',
      prop: 'materialCode',
      el: 'input',
      disabled: disabled,
      placeholder: '请输入物料编码',
      rules: [{ required: true, message: '物料编码不能为空', trigger: 'blur' }],
    },
@@ -50,11 +74,7 @@
      prop: 'purchaseType',
      el: 'select',
      placeholder: '请选择采购类型',
      options: [
        { label: '类型1', value: 1 },
        { label: '类型2', value: 2 },
        // Add all enum values
      ],
      options: [],
      rules: [{ required: true, message: '请选择采购类型', trigger: 'change' }],
    },
    {
@@ -62,11 +82,7 @@
      prop: 'materialType',
      el: 'select',
      placeholder: '请选择物料类型',
      options: [
        { label: '类型A', value: 1 },
        { label: '类型B', value: 2 },
        // Add all enum values
      ],
      options: [],
      rules: [{ required: true, message: '请选择物料类型', trigger: 'change' }],
    },
    {
@@ -84,7 +100,14 @@
    {
      label: '外径(mm)',
      prop: 'outerDiameter',
      el: 'input-number',
      el: (props: any, { attrs }: SetupContext) => {
        return h(inputNumber, {
          ...props,
          clearable: true,
          ...attrs,
        })
      },
      width: '100%',
      placeholder: '请输入外径',
      step: 0.01,
      precision: 2,
@@ -92,7 +115,14 @@
    {
      label: '壁厚(mm)',
      prop: 'wallThickness',
      el: 'input-number',
      el: (props: any, { attrs }: SetupContext) => {
        return h(inputNumber, {
          ...props,
          clearable: true,
          ...attrs,
        })
      },
      width: '100%',
      placeholder: '请输入壁厚',
      step: 0.01,
      precision: 2,
@@ -106,7 +136,14 @@
    {
      label: '长度(m)',
      prop: 'length',
      el: 'input-number',
      el: (props: any, { attrs }: SetupContext) => {
        return h(inputNumber, {
          ...props,
          clearable: true,
          ...attrs,
        })
      },
      width: '100%',
      placeholder: '请输入长度',
      step: 0.1,
      precision: 2,
@@ -115,10 +152,7 @@
      label: '是否主支管',
      prop: 'isMainBranch',
      el: 'select',
      options: [
        { label: '是', value: 1 },
        { label: '否', value: 2 },
      ],
      options: [],
    },
    {
      label: '生产工厂',
@@ -184,7 +218,7 @@
      wallThickness: formData.value.wallThickness,
      materialQuality: formData.value.materialQuality,
      length: formData.value.length,
      isMainBranch: formData.value.isMainBranch === 1,
      isMainBranch: formData.value.isMainBranch,
      factory: formData.value.factory,
      certification: formData.value.certification,
      remark: formData.value.remark,
@@ -206,10 +240,34 @@
      },
    }
  }
  const updateFormItemOptions = (propName: string, enumData: any[]) => {
    const item = formItems.find((item) => item.prop === propName)
    if (item && enumData) {
      item.options = enumData.map((item) => ({
        label: item.description,
        value: item.value,
      }))
    }
  }
  /**
   * å¼¹çª—打开获取详情
   */
  const onOpen = async () => {
    const materialTypeEnum = await wmsMaterialDrawer.getWmsEnumData({
      EnumName: 'MaterialTypeEnum',
    })
    updateFormItemOptions('materialType', materialTypeEnum)
    const purchaseTypeEnum = await wmsMaterialDrawer.getWmsEnumData({
      EnumName: 'PurchaseTypeEnum',
    })
    updateFormItemOptions('purchaseType', purchaseTypeEnum)
    const yesOrNoTypeEnum = await wmsMaterialDrawer.getWmsEnumData({
      EnumName: 'YesNoEnum',
    })
    updateFormItemOptions('isMainBranch', yesOrNoTypeEnum)
    if (current.value) {
      const res = await wmsMaterialDrawer.getWmsMaterialDetail(current.value)
@@ -224,15 +282,18 @@
        wallThickness: res.wallThickness,
        materialQuality: res.materialQuality,
        length: res.length,
        isMainBranch: res.isMainBranch ? 1 : 2,
        isMainBranch: res.isMainBranch,
        factory: res.factory,
        certification: res.certification,
        remark: res.remark,
        id: res.id,
      }
      disabled.value = true
      updateCheckData()
    } else {
      formData.value = {}
      disabled.value = false
      updateCheckData()
    }
  }
HIAWms/web/src/widgets/HIAWms/Models/Service/WmsMaterialDrawer.ts
@@ -24,3 +24,11 @@
export const updateWmsMaterial = (id: string, data: Record<string, any>) => {
  return request.put(`/api/v1/hIAWms/wmsMaterial/${id}`, data)
}
/**
 * èŽ·å–æžšä¸¾
 * @returns
 */
export const getWmsEnumData = (data: any) => {
  return request.post('/api/v1/hIAWms/WmsEnum', data)
}
HIAWms/web/src/widgets/HIAWms/Models/WmsMaterialDrawer.ts
@@ -3,6 +3,7 @@
  addWmsMaterial,
  getWmsMaterial,
  updateWmsMaterial,
  getWmsEnumData,
} from './Service/WmsMaterialDrawer'
import { useGlobalState } from '@/libs/Store/Store'
@@ -35,4 +36,9 @@
  async getWmsMaterialDetail(current: any, id?: string) {
    return getWmsMaterial(id || current?.id)
  }
  //  èŽ·å–æžšä¸¾å€¼
  async getWmsEnumData(data: Record<string, any>) {
    return getWmsEnumData(data)
  }
}
HIAWms/web/src/widgets/HIAWms/Views/HIAWms.tsx
@@ -68,7 +68,7 @@
              return (
                <TabPane label={widgetInfo.label} name={widgetInfo.name}>
                  <Widget
                    ref={(r: any) => (rf.value['WmsContainer'] = r)}
                    ref={(r: any) => (rf.value['WmsMaterial'] = r)}
                  ></Widget>
                </TabPane>
              )
HIAWms/web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.tsx
@@ -1,7 +1,7 @@
import { SetupContext, defineComponent } from 'vue'
import BaseDrawer from '@/components/BaseDrawer/BaseDrawer'
import styles from './WmsMaterialDrawer.module.scss'
import { useWmsMaterialDrawer } from '../../../../Controllers/WmsMaterialDrawer'
import { useWmsMaterialDrawer } from '../../../../Controllers/WmsMaterialDrawer.tsx'
import DyForm from '@/components/DyForm/DyForm'
// @ts-ignore
HIAWms/web/src/widgets/HIAWms/Views/Pages/WmsMaterial/Config.ts
@@ -13,30 +13,12 @@
    title: '物料名称',
  },
  {
    field: 'purchaseType',
    field: 'purchaseTypeDesc',
    title: '采购类型',
    formatter: ({ cellValue }) => {
      // You'll need to map the enum values to display text
      const purchaseTypeMap = {
        0: '类型1',
        1: '类型2',
        // Add all enum values
      }
      return purchaseTypeMap[cellValue] || cellValue
    },
  },
  {
    field: 'materialType',
    field: 'materialTypeDesc',
    title: '物料类型',
    formatter: ({ cellValue }) => {
      // Map material type enum to display text
      const materialTypeMap = {
        0: '类型A',
        1: '类型B',
        // Add all enum values
      }
      return materialTypeMap[cellValue] || cellValue
    },
  },
  {
    field: 'primaryUnit',
@@ -63,9 +45,8 @@
    title: '长度(m)',
  },
  {
    field: 'isMainBranch',
    title: '主支管',
    formatter: ({ cellValue }) => (cellValue ? '是' : '否'),
    field: 'isMainBranchDesc',
    title: '是否主支管',
  },
  {
    field: 'factory',
@@ -74,10 +55,6 @@
  {
    field: 'certification',
    title: '证书编号',
  },
  {
    field: 'sort',
    title: '排序',
  },
  {
    field: 'remark',