zs
2025-05-07 4456f43c6c73185a9f7ce46cdcdf94ab2053f02e
修改生成器及出入库记录页面
已添加1个文件
已修改29个文件
2325 ■■■■■ 文件已修改
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/GetWmsInOutStockRecordInput.cs 372 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateDto.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateOrUpdateDtoBase.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordDto.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordExportModel.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordUpdateDto.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordsImportModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockRecordAppService.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockRecordAppService.cs 537 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockRecordAutoMapperProfile.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/IWmsInOutStockRecordRepository.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockRecordRepository.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockRecordController.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecord.ts 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordDrawer.tsx 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordQueryDrawer.tsx 589 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Models/Service/WmsInOutStockRecord.ts 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Models/Service/WmsInOutStockRecordDrawer.ts 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Models/WmsInOutStockRecord.ts 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Models/WmsInOutStockRecordDrawer.ts 88 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Models/WmsInOutStockRecordQueryDrawer.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/Config.ts 126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/WmsInOutStockRecord.module.scss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/WmsInOutStockRecord.tsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Views/WmsInOutStockRecord.tsx 160 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Views/config/WmsInOutStockRecord.json 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsTask/Views/Pages/WmsTask/Config.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsTask/Views/Pages/WmsTask/WmsTask.tsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Web/Controllers/EntityModeDrawer模板.txt 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/StructStrHelper.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/GetWmsInOutStockRecordInput.cs
@@ -1,229 +1,249 @@
using CmsQueryExtensions.Extension;
using Volo.Abp.Application.Dtos;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
using CmsQueryExtensions.Extension;
using Volo.Abp.Application.Dtos;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
/// <summary> 
/// å‡ºå…¥åº“记录表查询参数
/// å‡ºå…¥åº“记录查询参数
/// </summary> 
public class GetWmsInOutStockRecordInput : ExtensiblePagedAndSortedResultRequestDto
{
public class GetWmsInOutStockRecordInput : ExtensiblePagedAndSortedResultRequestDto
{
    #region å…³é”®å­—查询 
    /// <summary> 
    /// å…³é”®å­—模糊查询(注意是小写!) 
    /// </summary> 
    public string searchVal { get; set; }
    public string searchVal { get; set; }
    /// <summary> 
    /// é€šç”¨æŸ¥è¯¢é…ç½® (1:模糊查询 , 2:精准查询)(注意是小写!) 
    /// </summary> 
    public SearchFilterModeEnum searchVal_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
    public SearchFilterModeEnum searchVal_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
    /// <summary> 
    /// å­æœç´¢ç»„件传递的通用查询配置的属性名(注意是小写!) 
    /// </summary> 
    [NoAutoQuery]
    public string str_searchFormInputAttrs { get; set; }
    [NoAutoQuery]
    public string str_searchFormInputAttrs { get; set; }
    /// <summary> 
    /// å­æœç´¢ç»„件传递的通用查询配置的属性名(注意是小写!) 
    /// </summary> 
    public List<string> searchFormInputAttrs
    {
        get
        {
            if (!string.IsNullOrEmpty(str_searchFormInputAttrs))
            {
                return str_searchFormInputAttrs.Split(',').ToList();
            }
            return new List<string>();
        }
    }
    public List<string> searchFormInputAttrs
    {
        get
        {
            if (!string.IsNullOrEmpty(str_searchFormInputAttrs))
            {
                return str_searchFormInputAttrs.Split(',').ToList();
            }
            return new List<string>();
        }
    }
    #endregion
            /// <summary>
        /// å•据编号
        /// </summary>
        public string OrderNo { get; set; }
    #endregion
        /// <summary>
        /// å•据编号-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum OrderNo_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// å•据编号
    /// </summary>
    public string OrderNo { get; set; }
        /// <summary>
        /// ç‰©æ–™åç§°
        /// </summary>
        public string MaterialName { get; set; }
    /// <summary>
    /// å•据编号-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum OrderNo_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç‰©æ–™åç§°-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum MaterialName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// ç‰©æ–™åç§°
    /// </summary>
    public string MaterialName { get; set; }
        /// <summary>
        /// ç‰©æ–™ä»¶å·
        /// </summary>
        public string MaterialNo { get; set; }
    /// <summary>
    /// ç‰©æ–™åç§°-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum MaterialName_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç‰©æ–™ä»¶å·-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum MaterialNo_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// ç‰©æ–™ä»¶å·
    /// </summary>
    public string MaterialNo { get; set; }
        /// <summary>
        /// æ“ä½œç±»åž‹
        /// </summary>
        public int?  StockType { get; set; }
    /// <summary>
    /// ç‰©æ–™ä»¶å·-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum MaterialNo_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ“ä½œç±»åž‹-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum StockType_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
    /// <summary>
    /// æ“ä½œç±»åž‹
    /// </summary>
    public int? StockType { get; set; }
        /// <summary>
        /// å®¹å™¨ç¼–号
        /// </summary>
        public string ContainerNo { get; set; }
    /// <summary>
    /// æ“ä½œç±»åž‹-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum StockType_FilterMode { get; set; } = SearchFilterModeEnum.精准查询;
        /// <summary>
        /// å®¹å™¨ç¼–号-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ContainerNo_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// å®¹å™¨ç¼–号
    /// </summary>
    public string ContainerNo { get; set; }
        /// <summary>
        /// æœºåž‹
        /// </summary>
        public string MaterialModel { get; set; }
    /// <summary>
    /// å®¹å™¨ç¼–号-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum ContainerNo_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æœºåž‹-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum MaterialModel_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// æœºåž‹
    /// </summary>
    public string MaterialModel { get; set; }
    /// <summary>
    /// æœºåž‹-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum MaterialModel_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// æ“ä½œæ—¶é—´
    /// </summary>
    //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
    [HighSearchRangeAttribute]
    public string OperateTime { get; set; }
        /// <summary>
        /// æ“ä½œæ—¶é—´
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> OperateTime { get; set; }
    /// <summary>
    /// å¤‡æ³¨
    /// </summary>
    public string Remark { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string Remark { get; set; }
    /// <summary>
    /// å¤‡æ³¨-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum Remark_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// å¤‡æ³¨-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum Remark_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// ç‰©æ–™ID
    /// </summary>
    public string MaterialId { get; set; }
        /// <summary>
        /// ç‰©æ–™ID
        /// </summary>
        public string MaterialId { get; set; }
    /// <summary>
    /// ç‰©æ–™ID-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum MaterialId_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç‰©æ–™ID-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum MaterialId_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// ä»»åŠ¡å·
    /// </summary>
    public string TaskNo { get; set; }
        /// <summary>
        /// ä»»åŠ¡å·
        /// </summary>
        public string TaskNo { get; set; }
    /// <summary>
    /// ä»»åŠ¡å·-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum TaskNo_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ä»»åŠ¡å·-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum TaskNo_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// èµ·å§‹åº“位
    /// </summary>
    public string SourcePlace { get; set; }
        /// <summary>
        /// èµ·å§‹åº“位
        /// </summary>
        public string SourcePlace { get; set; }
    /// <summary>
    /// èµ·å§‹åº“位-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum SourcePlace_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// èµ·å§‹åº“位-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum SourcePlace_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// ç›®æ ‡åº“位
    /// </summary>
    public string ToPlace { get; set; }
        /// <summary>
        /// ç›®æ ‡åº“位
        /// </summary>
        public string ToPlace { get; set; }
    /// <summary>
    /// ç›®æ ‡åº“位-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum ToPlace_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç›®æ ‡åº“位-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ToPlace_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
    /// <summary>
    ///
    /// </summary>
    //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
    [HighSearchRangeAttribute]
    public List<string> CreationTime { get; set; }
        /// <summary>
        /// æŽ’序
        /// </summary>
        public int?  Sort { get; set; }
        /// <summary>
        /// æŽ’序-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum Sort_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// æ˜¯å¦ç¦ç”¨
        /// </summary>
        public bool?  IsDisabled { get; set; }
        /// <summary>
        /// æ˜¯å¦ç¦ç”¨-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum IsDisabled_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        ///
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> CreationTime { get; set; }
    /// <summary>
    ///
    /// </summary>
    public string CreatorId { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string CreatorId { get; set; }
    /// <summary>
    /// -查询关系运算符
    /// </summary>
    public SearchFilterModeEnum CreatorId_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum CreatorId_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
    /// <summary>
    ///
    /// </summary>
    //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
    [HighSearchRangeAttribute]
    public List<string> LastModificationTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> LastModificationTime { get; set; }
    /// <summary>
    ///
    /// </summary>
    public string LastModifierId { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string LastModifierId { get; set; }
    /// <summary>
    /// -查询关系运算符
    /// </summary>
    public SearchFilterModeEnum LastModifierId_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum LastModifierId_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
    /// <summary>
    ///
    /// </summary>
    public bool? IsDeleted { get; set; }
        /// <summary>
        ///
        /// </summary>
        public bool?  IsDeleted { get; set; }
    /// <summary>
    /// -查询关系运算符
    /// </summary>
    public SearchFilterModeEnum IsDeleted_FilterMode { get; set; } = SearchFilterModeEnum.精准查询;
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum IsDeleted_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
    /// <summary>
    ///
    /// </summary>
    public string DeleterId { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string DeleterId { get; set; }
    /// <summary>
    /// -查询关系运算符
    /// </summary>
    public SearchFilterModeEnum DeleterId_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum DeleterId_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
    /// <summary>
    ///
    /// </summary>
    //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
    [HighSearchRangeAttribute]
    public List<string> DeletionTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> DeletionTime { get; set; }
}
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateDto.cs
@@ -1,7 +1,7 @@
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord; 
 
/// <summary> 
/// å‡ºå…¥åº“记录表创建参数对象
/// å‡ºå…¥åº“记录创建参数对象
/// </summary> 
public class WmsInOutStockRecordCreateDto : WmsInOutStockRecordCreateOrUpdateDtoBase 
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateOrUpdateDtoBase.cs
@@ -1,11 +1,11 @@
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using System;
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using System;
using Volo.Abp.Application.Dtos; 
 
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord; 
 
/// <summary> 
/// å‡ºå…¥åº“记录表创建或更新基类
/// å‡ºå…¥åº“记录创建或更新基类
/// </summary> 
public abstract class WmsInOutStockRecordCreateOrUpdateDtoBase : ExtensibleEntityDto 
@@ -70,6 +70,16 @@
        public string? ToPlace { get; set; }
        /// <summary>
        /// æŽ’序
        /// </summary>
        public int Sort { get; set; }
        /// <summary>
        /// æ˜¯å¦ç¦ç”¨
        /// </summary>
        public bool? IsDisabled { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string? CreatorId { get; set; }
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordDto.cs
@@ -1,5 +1,5 @@
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using CmsQueryExtensions;
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using CmsQueryExtensions;
using Volo.Abp.Application.Dtos; 
using Volo.Abp.Data; 
using Volo.Abp.Domain.Entities; 
@@ -8,7 +8,7 @@
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord; 
 
/// <summary> 
/// å‡ºå…¥åº“记录表数据参数对象
/// å‡ºå…¥åº“记录数据参数对象
/// </summary> 
public  class WmsInOutStockRecordDto:  ExtensibleEntityDto<Guid>, IHasConcurrencyStamp 
@@ -83,6 +83,16 @@
        public string? ToPlace { get; set; }
        /// <summary>
        /// æŽ’序
        /// </summary>
        public int Sort { get; set; }
        /// <summary>
        /// æ˜¯å¦ç¦ç”¨
        /// </summary>
        public bool? IsDisabled { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public ExtraPropertyDictionary? ExtraProperties { get; set; }
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordExportModel.cs
@@ -1,11 +1,12 @@
using MiniExcelLibs.Attributes; 
using System.ComponentModel.DataAnnotations; 
using System;
using System.ComponentModel; 
using CMS.Plugin.HIAWms.Domain.Shared.Enums; 
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord; 
 
/// <summary> 
/// å‡ºå…¥åº“记录表导出模型
/// å‡ºå…¥åº“记录导出模型
/// </summary> 
public  class WmsInOutStockRecordExportModel 
@@ -81,6 +82,18 @@
        [ExcelColumn(Name = "目标库位", Width = 25)]
        public string ToPlace { get; set; }
        /// <summary>
        /// æŽ’序
        /// </summary>
        [ExcelColumn(Name = "排序", Width = 25)]
        public int Sort { get; set; }
        /// <summary>
        /// æ˜¯å¦ç¦ç”¨
        /// </summary>
        [ExcelColumn(Name = "是否禁用", Width = 25)]
        public bool? IsDisabled { get; set; }
 
 
    public Dictionary<string, object> GetExportData() 
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordUpdateDto.cs
@@ -2,7 +2,7 @@
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord; 
 
/// <summary> 
/// å‡ºå…¥åº“记录表更新参数对象
/// å‡ºå…¥åº“记录更新参数对象
/// </summary> 
public class WmsInOutStockRecordUpdateDto : WmsInOutStockRecordCreateOrUpdateDtoBase, IHasConcurrencyStamp 
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordsImportModel.cs
@@ -2,7 +2,7 @@
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord 
    /// <summary> 
    /// å‡ºå…¥åº“记录表导入模型
    /// å‡ºå…¥åº“记录导入模型
    /// </summary> 
    public class WmsInOutStockRecordsImportModel 
    { 
@@ -20,7 +20,7 @@
        } 
 
        /// <summary> 
        /// å‡ºå…¥åº“记录表导入模型
        /// å‡ºå…¥åº“记录导入模型
        /// </summary> 
        public class WmsInOutStockRecordImportModel : WmsInOutStockRecordExportModel 
        { 
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockRecordAppService.cs
@@ -4,26 +4,26 @@
namespace CMS.Plugin.HIAWms.Application.Contracts.Services; 
 
/// <summary> 
/// å‡ºå…¥åº“记录表应用服务接口
/// å‡ºå…¥åº“记录应用服务接口
/// </summary> 
public interface IWmsInOutStockRecordAppService : ICrudAppService<WmsInOutStockRecordDto, Guid, GetWmsInOutStockRecordInput, WmsInOutStockRecordCreateDto, WmsInOutStockRecordUpdateDto> 
    /// <summary> 
    /// å…‹éš†å‡ºå…¥åº“记录表
    /// å…‹éš†å‡ºå…¥åº“记录
    /// </summary> 
    /// <param name="ids"></param> 
    /// <returns></returns> 
    Task<List<WmsInOutStockRecordDto>> 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(WmsInOutStockRecordsImportModel input); 
 
    /// <summary> 
    /// å¯¼å‡ºå‡ºå…¥åº“记录表
    /// å¯¼å‡ºå‡ºå…¥åº“记录
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockRecordAppService.cs
@@ -1,141 +1,149 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
using CMS.Plugin.HIAWms.Application.Contracts.Services;
using CMS.Plugin.HIAWms.Domain.Shared;
using CMS.Plugin.HIAWms.Domain.WmsInOutStockRecord;
using CmsQueryExtensions;
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.ObjectExtending;
using Volo.Abp.ObjectMapping;
namespace CMS.Plugin.HIAWms.Application.Implements;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
using CMS.Plugin.HIAWms.Application.Contracts.Services;
using CMS.Plugin.HIAWms.Domain.Shared;
using CmsQueryExtensions;
using CMS.Plugin.HIAWms.Domain.WmsInOutStockRecord;
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.ObjectExtending;
using Volo.Abp.ObjectMapping;
namespace CMS.Plugin.HIAWms.Application.Implements;
/// <summary> 
/// å‡ºå…¥åº“记录表应用服务
/// å‡ºå…¥åº“记录应用服务
/// </summary> 
public class WmsInOutStockRecordAppService : CMSPluginAppService, IWmsInOutStockRecordAppService
{
    private readonly IWmsInOutStockRecordRepository _wmsInOutStockRecordRepository;
public class WmsInOutStockRecordAppService : CMSPluginAppService, IWmsInOutStockRecordAppService
{
    private readonly IWmsInOutStockRecordRepository wmsInOutStockRecordRepository;
    /// <summary> 
    /// Initializes a new instance of the <see cref="WmsInOutStockRecordAppService"/> class. 
    /// </summary> 
    /// <param name="WmsInOutStockRecordRepository">The task job repository.</param> 
    public WmsInOutStockRecordAppService(IWmsInOutStockRecordRepository wmsInOutStockRecordRepository)
    {
        _wmsInOutStockRecordRepository = wmsInOutStockRecordRepository;
    }
    public WmsInOutStockRecordAppService(IWmsInOutStockRecordRepository _WmsInOutStockRecordRepository)
    {
        wmsInOutStockRecordRepository = _WmsInOutStockRecordRepository;
    }
    /// <summary> 
    /// èŽ·å–æŒ‡å®šå‡ºå…¥åº“è®°å½•è¡¨
    /// èŽ·å–æŒ‡å®šå‡ºå…¥åº“è®°å½•
    /// </summary> 
    /// <param name="id"></param> 
    /// <returns></returns> 
    public virtual async Task<WmsInOutStockRecordDto> GetAsync(Guid id)
    {
        return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(await _wmsInOutStockRecordRepository.GetAsync(id));
    }
    public virtual async Task<WmsInOutStockRecordDto> GetAsync(Guid id)
    {
        return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(await wmsInOutStockRecordRepository.GetAsync(id));
    }
    /// <summary> 
    /// åˆ†é¡µèŽ·å–å‡ºå…¥åº“è®°å½•è¡¨
    /// åˆ†é¡µèŽ·å–å‡ºå…¥åº“è®°å½•
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    public virtual async Task<PagedResultDto<WmsInOutStockRecordDto>> GetListAsync(GetWmsInOutStockRecordInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WmsInOutStockRecord.Sort);
        }
    public virtual async Task<PagedResultDto<WmsInOutStockRecordDto>> GetListAsync(GetWmsInOutStockRecordInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WmsInOutStockRecord.Sort);
        }
        #region åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶  
        //动态构造查询条件  
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var count = await _wmsInOutStockRecordRepository.GetCountAsync(whereConditions);
        var list = await _wmsInOutStockRecordRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
        return new PagedResultDto<WmsInOutStockRecordDto>(count, ObjectMapper.Map<List<WmsInOutStockRecord>, List<WmsInOutStockRecordDto>>(list));
    }
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var count = await wmsInOutStockRecordRepository.GetCountAsync(whereConditions);
        var list = await wmsInOutStockRecordRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
        return new PagedResultDto<WmsInOutStockRecordDto>(count, ObjectMapper.Map<List<WmsInOutStockRecord>, List<WmsInOutStockRecordDto>>(list));
    }
    /// <summary>  
    /// åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶  
    /// </summary>  
    /// <param name="input">输入参数</param>  
    /// <returns></returns>  
    private FunReturnResultModel<Expression<Func<WmsInOutStockRecord, bool>>> DynamicGetQueryParams(GetWmsInOutStockRecordInput input)
    {
    private FunReturnResultModel<Expression<Func<WmsInOutStockRecord, bool>>> DynamicGetQueryParams(GetWmsInOutStockRecordInput input)
    {
        //动态构造查询条件  
        var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsInOutStockRecord, GetWmsInOutStockRecordInput>(input);
        if (!whereConditions.IsSuccess)
        {
            throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg);
        }
        var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsInOutStockRecord, GetWmsInOutStockRecordInput>(input);
        if (!whereConditions.IsSuccess)
        {
            throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg);
        }
        //也可再次自定义构建查询条件  
        Expression<Func<WmsInOutStockRecord, bool>> extendExpression = a => a.IsDeleted == false;
        Expression<Func<WmsInOutStockRecord, bool>> extendExpression = a => a.IsDeleted == false;
        // ä½¿ç”¨ System.Linq.PredicateBuilder çš„ And 
        var pres = (System.Linq.Expressions.Expression<Func<WmsInOutStockRecord, bool>>)(whereConditions.data);
        whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
        return whereConditions;
    }
        var pres = (System.Linq.Expressions.Expression<Func<WmsInOutStockRecord, bool>>)(whereConditions.data);
        whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
        return whereConditions;
    }
    /// <summary> 
    /// æ–°å»ºå‡ºå…¥åº“记录表
    /// æ–°å»ºå‡ºå…¥åº“记录
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    /// <exception cref="UserFriendlyException"></exception> 
    public virtual async Task<WmsInOutStockRecordDto> CreateAsync(WmsInOutStockRecordCreateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var maxSort = await _wmsInOutStockRecordRepository.GetMaxSortAsync();
        var sort = input.Sort ?? maxSort;
        var insertObj = ObjectMapper.Map<WmsInOutStockRecordCreateDto, WmsInOutStockRecord>(input);
        insertObj.Sort = sort;
        input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
        await _wmsInOutStockRecordRepository.InsertAsync(insertObj);
        if (input.Sort.HasValue && insertObj.Sort != maxSort)
        {
            await AdjustSortAsync(insertObj.Id, insertObj.Sort);
        }
        return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(insertObj);
    }
    public virtual async Task<WmsInOutStockRecordDto> CreateAsync(WmsInOutStockRecordCreateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var exist = await wmsInOutStockRecordRepository.NameExistAsync(input.Id);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.Id]);
        }
        var maxSort = await wmsInOutStockRecordRepository.GetMaxSortAsync();
        var sort = input.Sort ?? maxSort;
        var insertObj = ObjectMapper.Map<WmsInOutStockRecordCreateDto, WmsInOutStockRecord>(input);
        insertObj.Sort = sort;
        input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
        await wmsInOutStockRecordRepository.InsertAsync(insertObj);
        if (input.Sort.HasValue && insertObj.Sort != maxSort)
        {
            await AdjustSortAsync(insertObj.Id, insertObj.Sort);
        }
        return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(insertObj);
    }
    /// <summary> 
    /// æ›´æ–°å‡ºå…¥åº“记录表
    /// æ›´æ–°å‡ºå…¥åº“记录
    /// </summary> 
    /// <param name="id"></param> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    /// <exception cref="UserFriendlyException"></exception> 
    public virtual async Task<WmsInOutStockRecordDto> UpdateAsync(Guid id, WmsInOutStockRecordUpdateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var updateObj = await _wmsInOutStockRecordRepository.GetAsync(id);
        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
        updateObj.OrderNo = input.OrderNo;
    public virtual async Task<WmsInOutStockRecordDto> UpdateAsync(Guid id, WmsInOutStockRecordUpdateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var updateObj = await wmsInOutStockRecordRepository.GetAsync(id);
        var exist = await wmsInOutStockRecordRepository.NameExistAsync(input.Id, updateObj.Id);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.Id]);
        }
        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
                updateObj.OrderNo = input.OrderNo;
        updateObj.MaterialName = input.MaterialName;
        updateObj.MaterialNo = input.MaterialNo;
        updateObj.StockType = input.StockType;
@@ -147,20 +155,21 @@
        updateObj.TaskNo = input.TaskNo;
        updateObj.SourcePlace = input.SourcePlace;
        updateObj.ToPlace = input.ToPlace;
        await _wmsInOutStockRecordRepository.UpdateAsync(updateObj);
        return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(updateObj);
    }
        updateObj.IsDisabled = input.IsDisabled;
        await wmsInOutStockRecordRepository.UpdateAsync(updateObj);
        return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(updateObj);
    }
    /// <summary> 
    /// å…‹éš†å‡ºå…¥åº“记录表
    /// å…‹éš†å‡ºå…¥åº“记录
    /// </summary> 
    /// <param name="ids"></param> 
    /// <returns></returns> 
    public async Task<List<WmsInOutStockRecordDto>> CloneAsync(IEnumerable<Guid> ids)
    {
    public async Task<List<WmsInOutStockRecordDto>> CloneAsync(IEnumerable<Guid> ids)
    {
        //var wmsInOutStockRecords = new List<WmsInOutStockRecord>(); 
        //if (ids != null) 
        //{ 
@@ -180,140 +189,248 @@
        //                    name += WmsInOutStockRecordConsts.CloneTag; 
        //                    continue; 
        //                } 
        //                notExist = true; 
        //            } 
        //            //WmsInOutStockRecord = await wmsInOutStockRecordRepository.InsertAsync(WmsInOutStockRecord.Clone(GuidGenerator.Create(), name, sort++)); 
        //            wmsInOutStockRecords.Add(WmsInOutStockRecord); 
        //        } 
        //    } 
        //} 
        //return ObjectMapper.Map<List<WmsInOutStockRecord>, List<WmsInOutStockRecordDto>>(wmsInOutStockRecords); 
        return new List<WmsInOutStockRecordDto>();
    }
        return new List<WmsInOutStockRecordDto>();
    }
    /// <summary> 
    /// åˆ é™¤å•个出入库记录表
    /// åˆ é™¤å•个出入库记录
    /// </summary> 
    /// <param name="id"></param> 
    /// <returns></returns> 
    public virtual Task DeleteAsync(Guid id)
    {
        return _wmsInOutStockRecordRepository.DeleteAsync(id);
    }
    public virtual Task DeleteAsync(Guid id)
    {
        return wmsInOutStockRecordRepository.DeleteAsync(id);
    }
    /// <summary> 
    /// åˆ é™¤å¤šä¸ªå‡ºå…¥åº“记录表
    /// åˆ é™¤å¤šä¸ªå‡ºå…¥åº“记录
    /// </summary> 
    /// <param name="ids"></param> 
    /// <returns></returns> 
    public async Task DeleteManyAsync(IEnumerable<Guid> ids)
    {
        foreach (var id in ids)
        {
            await DeleteAsync(id);
        }
    }
    public async Task DeleteManyAsync(IEnumerable<Guid> ids)
    {
        foreach (var id in ids)
        {
            await DeleteAsync(id);
        }
    }
    /// <summary> 
    /// è°ƒæ•´æŽ’序出入库记录表
    /// è°ƒæ•´æŽ’序出入库记录
    /// </summary> 
    /// <param name="id"></param> 
    /// <param name="sort"></param> 
    /// <returns></returns> 
    public virtual async Task AdjustSortAsync(Guid id, int sort)
    {
        var list = await _wmsInOutStockRecordRepository.GetListAsync(null, nameof(WmsInOutStockRecord.Sort));
        if (list != null && list.Any())
        {
            var initSort = 1;
            list.ForEach(x => x.AdjustSort(initSort++));
            var entity = list.FirstOrDefault(x => x.Id == id);
            if (entity != null)
            {
                if (sort == 1)
                {
                    list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                }
                else if (entity.Sort > sort)
                {
                    list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                else if (entity.Sort < sort)
                {
                    list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                entity.AdjustSort(sort);
            }
        }
        await _wmsInOutStockRecordRepository.UpdateManyAsync(list);
    }
    public virtual async Task AdjustSortAsync(Guid id, int sort)
    {
        var list = await wmsInOutStockRecordRepository.GetListAsync(null, nameof(WmsInOutStockRecord.Sort));
        if (list != null && list.Any())
        {
            var initSort = 1;
            list.ForEach(x => x.AdjustSort(initSort++));
            var entity = list.FirstOrDefault(x => x.Id == id);
            if (entity != null)
            {
                if (sort == 1)
                {
                    list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                }
                else if (entity.Sort > sort)
                {
                    list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                else if (entity.Sort < sort)
                {
                    list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                entity.AdjustSort(sort);
            }
        }
        await wmsInOutStockRecordRepository.UpdateManyAsync(list);
    }
    /// <summary> 
    /// å¯¼å…¥å‡ºå…¥åº“记录表
    /// å¯¼å…¥å‡ºå…¥åº“记录
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    /// <exception cref="UserFriendlyException"></exception> 
    public async Task ImportAsync(WmsInOutStockRecordsImportModel input)
    {
    }
    public async Task ImportAsync(WmsInOutStockRecordsImportModel input)
    {
        Check.NotNull(input, nameof(input));
        var wmsInOutStockRecordCreateDtos = new List<(int RowIndex, WmsInOutStockRecordCreateDto Item)>();
        var wmsInOutStockRecordUpdateDtos = new List<(int RowIndex, Guid Id, WmsInOutStockRecordUpdateDto Item)>();
        var importItems = input.WmsInOutStockRecords;
        if (importItems != null && importItems.Any())
        {
            #region å¯¼å…¥æ ¡éªŒ
            // åˆ¤æ–­åç§°æ˜¯å¦é‡å¤ï¼Œå¹¶è¾“出第几行重复
            var duplicateWmsInOutStockRecords = importItems.GroupBy(x => x.Id).Where(x => x.Count() > 1).ToList();
            if (duplicateWmsInOutStockRecords?.Any() == true)
            {
                var duplicateWmsInOutStockRecordMsgs = duplicateWmsInOutStockRecords.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} è¡Œï¼š{x.Key}  åç§°é‡å¤");
                var errorMsg = $"导入失败!配置, {string.Join(",", duplicateWmsInOutStockRecordMsgs)},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
            #endregion
            foreach (var impItem in importItems)
            {
                if (impItem.Id.IsNullOrWhiteSpace())
                {
                    continue;
                }
                if (impItem.Id.IsNullOrWhiteSpace())
                {
                    var errorMsg = $"导入失败!配置,第{impItem.RowIndex}行:WmsInOutStockRecord名称不能为空";
                    throw new UserFriendlyException(errorMsg);
                }
                var oldWmsInOutStockRecord = await wmsInOutStockRecordRepository.FindByNameAsync(impItem.Id);
                if (oldWmsInOutStockRecord != null)
                {
                    var wmsInOutStockRecordUpdateDto = new WmsInOutStockRecordUpdateDto
                    {
                        OrderNo = impItem.OrderNo,
MaterialName = impItem.MaterialName,
MaterialNo = impItem.MaterialNo,
StockType = impItem.StockType,
ContainerNo = impItem.ContainerNo,
MaterialModel = impItem.MaterialModel,
OperateTime = impItem.OperateTime,
Remark = impItem.Remark,
MaterialId = impItem.MaterialId,
TaskNo = impItem.TaskNo,
SourcePlace = impItem.SourcePlace,
ToPlace = impItem.ToPlace,
IsDisabled = impItem.IsDisabled,
                    };
                    wmsInOutStockRecordUpdateDtos.Add((impItem.RowIndex, oldWmsInOutStockRecord.Id, wmsInOutStockRecordUpdateDto));
                }
                else
                {
                    var wmsInOutStockRecordCreateDto = new WmsInOutStockRecordCreateDto
                    {
                        OrderNo = impItem.OrderNo,
MaterialName = impItem.MaterialName,
MaterialNo = impItem.MaterialNo,
StockType = impItem.StockType,
ContainerNo = impItem.ContainerNo,
MaterialModel = impItem.MaterialModel,
OperateTime = impItem.OperateTime,
Remark = impItem.Remark,
MaterialId = impItem.MaterialId,
TaskNo = impItem.TaskNo,
SourcePlace = impItem.SourcePlace,
ToPlace = impItem.ToPlace,
IsDisabled = impItem.IsDisabled,
                    };
                    wmsInOutStockRecordCreateDtos.Add((impItem.RowIndex, wmsInOutStockRecordCreateDto));
                }
            }
        }
        // æ–°å¢ž
        foreach (var wmsInOutStockRecordDto in wmsInOutStockRecordCreateDtos)
        {
            try
            {
                await CreateAsync(wmsInOutStockRecordDto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{wmsInOutStockRecordDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
        // æ›´æ–°
        foreach (var wmsInOutStockRecordDto in wmsInOutStockRecordUpdateDtos)
        {
            try
            {
                await UpdateAsync(wmsInOutStockRecordDto.Id, wmsInOutStockRecordDto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{wmsInOutStockRecordDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
    }
    /// <summary> 
    /// å¯¼å‡ºå‡ºå…¥åº“记录表
    /// å¯¼å‡ºå‡ºå…¥åº“记录
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsInOutStockRecordInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WmsInOutStockRecord.Sort);
        }
    public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsInOutStockRecordInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WmsInOutStockRecord.Sort);
        }
        #region åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶  
        //动态构造查询条件  
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var list = await _wmsInOutStockRecordRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
        var result = ObjectMapper.Map<List<WmsInOutStockRecord>, List<WmsInOutStockRecordDto>>(list);
        var sheets = new Dictionary<string, object>
        {
            ["配置"] = ExportHelper.ConvertListToExportData(result),
        };
        var fileName = result.Count > 1 ? "WmsInOutStockRecord列表" : result.Count == 1 ? result[0]?.MaterialName : "WmsInOutStockRecord模版";
        return (sheets, fileName);
    }
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var list = await wmsInOutStockRecordRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
        var result = ObjectMapper.Map<List<WmsInOutStockRecord>, List<WmsInOutStockRecordDto>>(list);
        var sheets = new Dictionary<string, object>
        {
            ["配置"] = ExportHelper.ConvertListToExportData(result),
        };
        var fileName = result.Count > 1 ? "出入库记录列表" : result.Count == 1 ? result[0]?.Id : "WmsInOutStockRecord模版";
        return (sheets, fileName);
    }
    /// <summary> 
    /// æ ¡éªŒå‡ºå…¥åº“记录表,当新建或更新时
    /// æ ¡éªŒå‡ºå…¥åº“记录,当新建或更新时
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    protected Task CheckCreateOrUpdateDtoAsync(WmsInOutStockRecordCreateOrUpdateDtoBase input)
    {
        Check.NotNull(input, nameof(input));
        Check.NotNullOrWhiteSpace(input.OrderNo, "单据编号", 50);
    protected Task CheckCreateOrUpdateDtoAsync(WmsInOutStockRecordCreateOrUpdateDtoBase input)
    {
        Check.NotNull(input, nameof(input));
                Check.NotNullOrWhiteSpace(input.OrderNo, "单据编号", 50);
        Check.NotNullOrWhiteSpace(input.MaterialNo, "物料件号", 50);
        Check.NotNull(input.StockType, "操作类型");
        Check.NotNullOrWhiteSpace(input.MaterialId, "物料ID", 50);
        Check.NotNullOrWhiteSpace(input.TaskNo, "任务号", 50);
        return Task.CompletedTask;
    }
}
        return Task.CompletedTask;
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockRecordAutoMapperProfile.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
using AutoMapper;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
using CMS.Plugin.HIAWms.Domain.WmsInOutStockRecord;
using Volo.Abp.ObjectExtending;
namespace CMS.Plugin.HIAWms.Application.MapperProfiles;
/// <summary>
/// å‡ºå…¥åº“记录AutoMapper配置
/// </summary>
/// <seealso cref="AutoMapper.Profile" />
public class WmsInOutStockRecordAutoMapperProfile : Profile
{
    /// <summary>
    /// Initializes a new instance of the <see cref="WmsInOutStockRecordAutoMapperProfile"/> class.
    /// </summary>
    public WmsInOutStockRecordAutoMapperProfile()
    {
        /* You can configure your AutoMapper mapping configuration here.
         * Alternatively, you can split your mapping configurations
         * into multiple profile classes for a better organization. */
        CreateMap<WmsInOutStockRecord, WmsInOutStockRecordDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WmsInOutStockRecordCreateDto, WmsInOutStockRecord>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<GetWmsInOutStockRecordInput, WmsInOutStockRecord>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/IWmsInOutStockRecordRepository.cs
@@ -5,34 +5,34 @@
namespace CMS.Plugin.HIAWms.Domain.WmsInOutStockRecord; 
 
/// <summary> 
/// å‡ºå…¥åº“记录表仓储
/// å‡ºå…¥åº“记录仓储
/// </summary> 
public interface IWmsInOutStockRecordRepository : IBasicRepository<WmsInOutStockRecord, Guid> 
    /// <summary> 
    /// æŒ‰ç…§åç§°æŸ¥æ‰¾å‡ºå…¥åº“记录表
    /// æŒ‰ç…§åç§°æŸ¥æ‰¾å‡ºå…¥åº“记录
    /// </summary> 
    /// <param name="materialNo"></param>
    /// <param name="name"></param>
    /// <param name="cancellationToken"></param> 
    /// <returns></returns> 
    Task<WmsInOutStockRecord> FindByNameAsync(string materialNo, CancellationToken cancellationToken = default);
    Task<WmsInOutStockRecord> FindByNameAsync(string name, CancellationToken cancellationToken = default);
 
    /// <summary> 
    /// éªŒè¯åç§°æ˜¯å¦å­˜åœ¨å‡ºå…¥åº“记录表
    /// éªŒè¯åç§°æ˜¯å¦å­˜åœ¨å‡ºå…¥åº“记录
    /// </summary> 
    /// <param name="materialNo"></param>
    /// <param name="name"></param>
    /// <param name="id"></param> 
    /// <returns></returns> 
    Task<bool> NameExistAsync(string materialNo, Guid? id = null);
    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> 
@@ -44,7 +44,7 @@
    Task<List<WmsInOutStockRecord>> GetListAsync(FunReturnResultModel<Expression<Func<WmsInOutStockRecord, 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> 
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockRecordRepository.cs
@@ -11,7 +11,7 @@
namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Repositories; 
 
/// <summary> 
/// å‡ºå…¥åº“记录表仓储实现
/// å‡ºå…¥åº“记录仓储实现
/// </summary> 
public class EfCoreWmsInOutStockRecordRepository : EfCoreRepository<ICMSPluginDbContext, WmsInOutStockRecord, Guid>, IWmsInOutStockRecordRepository 
@@ -25,33 +25,33 @@
    } 
 
    /// <summary> 
    /// æŒ‰ç…§åç§°æŸ¥æ‰¾å‡ºå…¥åº“记录表
    /// æŒ‰ç…§åç§°æŸ¥æ‰¾å‡ºå…¥åº“记录
    /// </summary> 
    /// <param name="materialNo"></param>
    /// <param name="name"></param>
    /// <param name="cancellationToken"></param> 
    /// <returns></returns> 
    public virtual async Task<WmsInOutStockRecord> FindByNameAsync(string materialNo, CancellationToken cancellationToken = default)
    public virtual async Task<WmsInOutStockRecord> FindByNameAsync(string name, CancellationToken cancellationToken = default)
    { 
        return await (await GetDbSetAsync()) 
            .IncludeDetails() 
            .Where(x => !x.IsDeleted) 
            .OrderBy(t => t.Sort) 
            .FirstOrDefaultAsync(t => t.MaterialNo == materialNo, GetCancellationToken(cancellationToken));
            .FirstOrDefaultAsync(t => t.Id == name, GetCancellationToken(cancellationToken));
    } 
 
    /// <summary> 
    /// éªŒè¯åç§°æ˜¯å¦å­˜åœ¨å‡ºå…¥åº“记录表
    /// éªŒè¯åç§°æ˜¯å¦å­˜åœ¨å‡ºå…¥åº“记录
    /// </summary> 
    /// <param name="materialCode"></param>
    /// <param name="name">校验值</param>
    /// <param name="id"></param> 
    /// <returns></returns> 
    public async Task<bool> NameExistAsync(string materialCode, Guid? id = null)
    public async Task<bool> NameExistAsync(string name, Guid? id = null)
    { 
        return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.MaterialName == materialCode);
        return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.Id == name);
    } 
 
    /// <summary> 
    /// èŽ·å–æœ€å¤§æŽ’åºå‡ºå…¥åº“è®°å½•è¡¨
    /// èŽ·å–æœ€å¤§æŽ’åºå‡ºå…¥åº“è®°å½•
    /// </summary> 
    /// <returns></returns> 
    public async Task<int> GetMaxSortAsync() 
@@ -69,7 +69,7 @@
    } 
 
    /// <summary> 
    /// èŽ·å–åˆ†é¡µåˆ—è¡¨å‡ºå…¥åº“è®°å½•è¡¨
    /// èŽ·å–åˆ†é¡µåˆ—è¡¨å‡ºå…¥åº“è®°å½•
    /// </summary> 
    /// <param name="whereConditions"></param> 
    /// <param name="sorting"></param> 
@@ -90,7 +90,7 @@
    } 
 
    /// <summary> 
    /// èŽ·å–æ€»æ•°å‡ºå…¥åº“è®°å½•è¡¨
    /// èŽ·å–æ€»æ•°å‡ºå…¥åº“è®°å½•
    /// </summary> 
    /// <param name="whereConditions"></param> 
    /// <param name="cancellationToken"></param> 
HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockRecordController.cs
@@ -13,7 +13,7 @@
namespace CMS.Plugin.HIAWms.Controller 
    /// <summary> 
    /// å‡ºå…¥åº“记录表服务
    /// å‡ºå…¥åº“记录服务
    /// </summary> 
    [ApiController] 
    [TypeFilter(typeof(CMSLanguageFilter))] 
@@ -35,7 +35,7 @@
        } 
 
        /// <summary> 
        /// èŽ·å–å‡ºå…¥åº“è®°å½•è¡¨
        /// èŽ·å–å‡ºå…¥åº“è®°å½•
        /// </summary> 
        /// <param name="id">标识符.</param> 
        /// <returns></returns> 
@@ -47,7 +47,7 @@
        } 
 
        /// <summary> 
        /// åˆ†é¡µèŽ·å–å‡ºå…¥åº“è®°å½•è¡¨çš„åˆ—è¡¨.
        /// åˆ†é¡µèŽ·å–å‡ºå…¥åº“è®°å½•çš„åˆ—è¡¨.
        /// </summary> 
        /// <param name="input">输入.</param> 
        /// <returns></returns> 
@@ -59,7 +59,7 @@
        } 
 
        /// <summary> 
        /// åˆ›å»ºå‡ºå…¥åº“记录表
        /// åˆ›å»ºå‡ºå…¥åº“记录
        /// </summary> 
        /// <param name="input">输入.</param> 
        /// <returns></returns> 
@@ -71,7 +71,7 @@
        } 
 
        /// <summary> 
        /// æ›´æ–°å‡ºå…¥åº“记录表
        /// æ›´æ–°å‡ºå…¥åº“记录
        /// </summary> 
        /// <param name="id">标识符.</param> 
        /// <param name="input">输入.</param> 
@@ -85,7 +85,7 @@
        } 
 
        /// <summary> 
        /// å…‹éš†å‡ºå…¥åº“记录表
        /// å…‹éš†å‡ºå…¥åº“记录
        /// </summary> 
        /// <param name="ids">Id集合.</param> 
        /// <returns></returns> 
@@ -98,7 +98,7 @@
        } 
 
        /// <summary> 
        /// åˆ é™¤å‡ºå…¥åº“记录表
        /// åˆ é™¤å‡ºå…¥åº“记录
        /// </summary> 
        /// <param name="id">标识符.</param> 
        /// <returns></returns> 
@@ -111,7 +111,7 @@
        } 
 
        /// <summary> 
        /// æ‰¹é‡åˆ é™¤å‡ºå…¥åº“记录表
        /// æ‰¹é‡åˆ é™¤å‡ºå…¥åº“记录
        /// </summary> 
        /// <param name="ids">The ids.</param> 
        /// <returns></returns> 
@@ -123,7 +123,7 @@
        } 
 
        /// <summary> 
        /// è°ƒæ•´æŽ’序出入库记录表
        /// è°ƒæ•´æŽ’序出入库记录
        /// </summary> 
        /// <param name="id">标识符.</param> 
        /// <returns></returns> 
@@ -135,7 +135,7 @@
        } 
 
        /// <summary> 
        /// å¯¼å…¥å‡ºå…¥åº“记录表
        /// å¯¼å…¥å‡ºå…¥åº“记录
        /// </summary> 
        /// <returns></returns> 
        [Authorize] 
@@ -164,7 +164,7 @@
        } 
 
        /// <summary> 
        /// å¯¼å‡ºå‡ºå…¥åº“记录表
        /// å¯¼å‡ºå‡ºå…¥åº“记录
        /// </summary> 
        /// <returns></returns> 
        [HttpGet] 
HIAWms/web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecord.ts
@@ -128,9 +128,9 @@
    { 
      label: '删除', 
      fn: async (c: CurrentType) => { 
        const names = selection.value.map((item: { name: string }) => item.name)
        const names = selection.value.map((item: { id: string }) => item.id)
        ConfirmBox( 
          `是否删除${names.length ? names.join(',') : c.row.name}`
          `是否删除${names.length ? names.join(',') : c.row.id}`
        ).then(async () => { 
          const ids = selection.value.map((item: { id: string }) => item.id) 
          await wmsInOutStockRecord.deleteWmsInOutStockRecords(ids.length ? ids : [c.row.id]) 
@@ -187,7 +187,7 @@
   */ 
  const onExport = (data={}) => { 
    //const params = tableRef.value?.getParams() 
    exportFile('/api/v1/hIAWms/wmsInOutStockRecord/export', data, 'hIAWms')
    exportFile('/api/v1/HIAWms/wmsInOutStockRecord/export', data, 'wmsInOutStockRecord')
  } 
 
  /** 
HIAWms/web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordDrawer.tsx
@@ -43,6 +43,27 @@
      ></el-input-number>
    )
  }
  const datePicker = (attrs) => {
    return (
      <el-date-picker
        type="date"
        format="YYYY-MM-DD HH:mm:ss"
        formatValue="YYYY-MM-DD HH:mm:ss"
        {...attrs}
      ></el-date-picker>
    )
  }
  const dateTimePicker = (attrs) => {
    return (
      <el-date-picker
        type="datetime"
        format="YYYY-MM-DD HH:mm:ss"
        formatValue="YYYY-MM-DD HH:mm:ss"
        {...attrs}
      ></el-date-picker>
    )
  }
  const visible = computed({
    get() {
@@ -104,8 +125,14 @@
    {
      label: '操作时间',
      prop: 'operateTime',
      type: 'datetimerange',
      el: 'date-picker',
      el: (props: any, { attrs }: SetupContext) => {
        return h(datePicker, {
          ...props,
          clearable: true,
          ...attrs,
        })
      },
      width: '100%',
      //disabled: disabled,
      placeholder: '请输入操作时间',
    },
HIAWms/web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordQueryDrawer.tsx
@@ -1,281 +1,308 @@
import {
  ref,
  onMounted,
  reactive,
  computed,
  Ref,
  watch,
  SetupContext,
  h,
} from 'vue'
import { injectModel } from '@/libs/Provider/Provider'
import { WmsInOutStockRecordDrawer } from '../Models/WmsInOutStockRecordDrawer'
import { ElMessage } from 'element-plus'
import isEqual from 'lodash/isEqual'
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox'
import { cloneDeep } from 'lodash'
export const useWmsInOutStockRecordQueryDrawer = (props: any, ctx?: any) => {
  const wmsInOutStockRecordDrawer = injectModel<WmsInOutStockRecordDrawer>(
    'WmsInOutStockRecordDrawer'
  )
  /**
   * ç”¨æ¥å¯¹æ¯”的初始化数据
   */
  const initiateData: Ref<Record<string, any>> = ref({})
  const formData = ref<Record<string, any>>({})
  // 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
    },
    set(val) {
      ctx.emit('update:modelValue', val)
    },
  })
  /**
   * æ·»åŠ çš„form字段
   */
  const formItems = reactive([
    {
      label: '单据编号',
      prop: 'orderNo',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入单据编号',
    },
    {
      label: '物料名称',
      prop: 'materialName',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入物料名称',
    },
    {
      label: '物料件号',
      prop: 'materialNo',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入物料件号',
    },
    {
      label: '操作类型',
      prop: 'stockType',
      el: 'select',
      //disabled: disabled,
      placeholder: '请输入操作类型',
    },
    {
      label: '容器编号',
      prop: 'containerNo',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入容器编号',
    },
    {
      label: '机型',
      prop: 'materialModel',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入机型',
    },
    {
      label: '操作时间',
      prop: 'operateTime',
      type: 'datetimerange',
      el: 'date-picker',
      //disabled: disabled,
      placeholder: '请输入操作时间',
    },
    {
      label: '备注',
      prop: 'remark',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入备注',
    },
    {
      label: '物料ID',
      prop: 'materialId',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入物料ID',
    },
    {
      label: '任务号',
      prop: 'taskNo',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入任务号',
    },
    {
      label: '起始库位',
      prop: 'sourcePlace',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入起始库位',
    },
    {
      label: '目标库位',
      prop: 'toPlace',
      el: 'input',
      //disabled: disabled,
      placeholder: '请输入目标库位',
    },
  ])
  /**
   * æ ¡éªŒæ˜¯å¦æœ‰æ•°æ®å˜åŒ–
   */
  const checkIsEqualObject = () => {
    const data = {
      formData: formData.value,
    }
    const check = isEqual(initiateData.value, data)
    return check
  }
  const commonGetFormData = () => {
    const data = {
      OrderNo: formData.value.OrderNo,
      MaterialName: formData.value.MaterialName,
      MaterialNo: formData.value.MaterialNo,
      StockType: formData.value.StockType,
      ContainerNo: formData.value.ContainerNo,
      MaterialModel: formData.value.MaterialModel,
      OperateTime: formData.value.OperateTime,
      Remark: formData.value.Remark,
      MaterialId: formData.value.MaterialId,
      TaskNo: formData.value.TaskNo,
      SourcePlace: formData.value.SourcePlace,
      ToPlace: formData.value.ToPlace,
      materialCode: formData.value.materialCode,
      materialName: formData.value.materialName,
      purchaseType: formData.value.purchaseType,
      materialType: formData.value.materialType,
      primaryUnit: formData.value.primaryUnit,
      standard: formData.value.standard,
      outerDiameter: formData.value.outerDiameter,
      wallThickness: formData.value.wallThickness,
      materialQuality: formData.value.materialQuality,
      length: formData.value.length,
      isMainBranch: formData.value.isMainBranch,
      factory: formData.value.factory,
      certification: formData.value.certification,
      remark: formData.value.remark,
    }
    return data
  }
  const onClose = (done: () => void) => {
    if (visible.value) {
      visible.value = false
      const data = commonGetFormData()
      ctx.emit('close', data)
    }
  }
  /**
   * ç¡®è®¤æŸ¥è¯¢
   */
  const onConfirmQuery = async () => {
    const data = commonGetFormData()
    ctx.emit('confirmQuery', data)
  }
  /**
   * é‡ç½®æŸ¥è¯¢
   */
  const onReset = async () => {
    formData.value = {}
    formData.value.OrderNo = ''
    formData.value.MaterialName = ''
    formData.value.MaterialNo = ''
    formData.value.StockType = ''
    formData.value.ContainerNo = ''
    formData.value.MaterialModel = ''
    formData.value.OperateTime = ''
    formData.value.Remark = ''
    formData.value.MaterialId = ''
    formData.value.TaskNo = ''
    formData.value.SourcePlace = ''
    formData.value.ToPlace = ''
    formData.value.materialCode = ''
    formData.value.materialName = ''
    formData.value.purchaseType = ''
    formData.value.materialType = ''
    formData.value.primaryUnit = ''
    formData.value.standard = ''
    formData.value.outerDiameter = ''
    formData.value.wallThickness = ''
    formData.value.materialQuality = ''
    formData.value.length = ''
    formData.value.isMainBranch = ''
    formData.value.factory = ''
    formData.value.certification = ''
    formData.value.remark = ''
    //向父组件发送自定义事件
    ctx.emit('restQuery')
  }
  const updateCheckData = () => {
    initiateData.value = {
      formData: {
        ...formData.value,
      },
    }
  }
  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 commonQueryEnumForFrom = async () => {
    const stockTypeEnumEnum = await wmsInOutStockRecordDrawer.getWmsEnumData({
      EnumName: 'StockTypeEnum',
    })
    updateFormItemOptions('stockType', stockTypeEnumEnum)
  }
  commonQueryEnumForFrom()
  /**
   * å¼¹çª—打开获取详情
   */
  const onOpen = async () => {
    disabled.value = false
    updateCheckData()
  }
  watch(() => current.value, onOpen)
  return {
    formItems,
    formData,
    visible,
    formRef,
    onOpen,
    onClose,
    onConfirmQuery,
    onReset,
  }
}
import {
  ref,
  onMounted,
  reactive,
  computed,
  Ref,
  watch,
  SetupContext,
  h,
} from 'vue'
import { injectModel } from '@/libs/Provider/Provider'
import { WmsInOutStockRecordDrawer } from '../Models/WmsInOutStockRecordDrawer'
import { ElMessage } from 'element-plus'
import isEqual from 'lodash/isEqual'
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox'
import { cloneDeep } from 'lodash'
export const useWmsInOutStockRecordQueryDrawer = (props: any, ctx?: any) => {
  const wmsInOutStockRecordDrawer = injectModel<WmsInOutStockRecordDrawer>('WmsInOutStockRecordDrawer')
  /**
   * ç”¨æ¥å¯¹æ¯”的初始化数据
   */
  const initiateData: Ref<Record<string, any>> = ref({})
  const formData = ref<Record<string, any>>({})
  // 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 datePickerRange = (attrs) => {
    return (
      <el-date-picker
        type="daterange"
        value-format="YYYY-MM-DD HH:mm:ss"
        start-placeholder="开始日期"
        end-placeholder="结束日期"
        {...attrs}
      ></el-date-picker>
    )
  }
  const dateTimePickerRange = (attrs) => {
    return (
      <el-date-picker
        type="datetimerange"
        value-format="YYYY-MM-DD HH:mm:ss"
        start-placeholder="开始日期"
        end-placeholder="结束日期"
        {...attrs}
      ></el-date-picker>
    )
  }
  const visible = computed({
    get() {
      return props.modelValue
    },
    set(val) {
      ctx.emit('update:modelValue', val)
    },
  })
  /**
   * æ·»åŠ çš„form字段
   */
  const formItems = reactive([
                    {
                   label: '单据编号',
                   prop: 'orderNo',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入单据编号',
                },
                {
                   label: '物料名称',
                   prop: 'materialName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入物料名称',
                },
                {
                   label: '物料件号',
                   prop: 'materialNo',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入物料件号',
                },
                {
                   label: '操作类型',
                   prop: 'stockType',
                   el: 'select',
                   //disabled: disabled,
                   placeholder: '请输入操作类型',
                },
                {
                   label: '容器编号',
                   prop: 'containerNo',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入容器编号',
                },
                {
                   label: '机型',
                   prop: 'materialModel',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入机型',
                },
                {
                   label: '操作时间',
                   prop: 'operateTime',
                   el: (props: any, { attrs }: SetupContext) => {
                     return h(dateTimePickerRange, {
                       ...props,
                       clearable: true,
                       ...attrs,
                     })
                   },
                   width: '100%',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入操作时间',
                },
                {
                   label: '备注',
                   prop: 'remark',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入备注',
                },
                {
                   label: '物料ID',
                   prop: 'materialId',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入物料ID',
                },
                {
                   label: '任务号',
                   prop: 'taskNo',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入任务号',
                },
                {
                   label: '起始库位',
                   prop: 'sourcePlace',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入起始库位',
                },
                {
                   label: '目标库位',
                   prop: 'toPlace',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入目标库位',
                },
                {
                   label: '是否禁用',
                   prop: 'isDisabled',
                   el: 'select',
                   //disabled: disabled,
                   placeholder: '请输入是否禁用',
                 options: [{label: '是',value: 'true'}, {label: '否',value: 'false'}]
                },
                {
                   label: '',
                   prop: 'creationTime',
                   el: (props: any, { attrs }: SetupContext) => {
                     return h(dateTimePickerRange, {
                       ...props,
                       clearable: true,
                       ...attrs,
                     })
                   },
                   width: '100%',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入',
                },
  ])
  /**
   * æ ¡éªŒæ˜¯å¦æœ‰æ•°æ®å˜åŒ–
   */
  const checkIsEqualObject = () => {
    const data = {
      formData: formData.value,
    }
    const check = isEqual(initiateData.value, data)
    return check
  }
  const commonGetFormData=()=>{
    const data = {
      orderNo: formData.value.orderNo || '',
materialName: formData.value.materialName || '',
materialNo: formData.value.materialNo || '',
stockType: formData.value.stockType || '',
containerNo: formData.value.containerNo || '',
materialModel: formData.value.materialModel || '',
operateTime: formData.value.operateTime || '',
remark: formData.value.remark || '',
materialId: formData.value.materialId || '',
taskNo: formData.value.taskNo || '',
sourcePlace: formData.value.sourcePlace || '',
toPlace: formData.value.toPlace || '',
isDisabled: formData.value.isDisabled || '',
creationTime: formData.value.creationTime || '',
    }
    return data;
  }
  const onClose = (done: () => void) => {
    if (visible.value) {
      visible.value = false
      const data =commonGetFormData();
      ctx.emit('close', data)
    }
  }
  /**
   * ç¡®è®¤æŸ¥è¯¢
   */
  const onConfirmQuery = async () => {
    const data =commonGetFormData();
    ctx.emit('confirmQuery', data)
  }
  /**
   * é‡ç½®æŸ¥è¯¢
   */
  const onReset = async () => {
    formData.value = {}
    formData.value.OrderNo = ''
formData.value.MaterialName = ''
formData.value.MaterialNo = ''
formData.value.StockType = ''
formData.value.ContainerNo = ''
formData.value.MaterialModel = ''
formData.value.OperateTime = ''
formData.value.Remark = ''
formData.value.MaterialId = ''
formData.value.TaskNo = ''
formData.value.SourcePlace = ''
formData.value.ToPlace = ''
    //向父组件发送自定义事件
    ctx.emit('restQuery');
  }
  const updateCheckData = () => {
    initiateData.value = {
      formData: {
        ...formData.value,
      },
    }
  }
  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 commonQueryEnumForFrom = async () => {
    const stockTypeEnumEnum = await wmsInOutStockRecordDrawer.getWmsEnumData({
 EnumName: 'StockTypeEnum',
})
updateFormItemOptions('stockType', stockTypeEnumEnum)
  }
  commonQueryEnumForFrom()
  /**
   * å¼¹çª—打开获取详情
   */
  const onOpen = async () => {
    disabled.value = false
    updateCheckData()
  }
  watch(() => current.value, onOpen)
  return {
    formItems,
    formData,
    visible,
    formRef,
    onOpen,
    onClose,
    onConfirmQuery,
    onReset,
  }
}
HIAWms/web/src/widgets/WmsInOutStockRecord/Models/Service/WmsInOutStockRecord.ts
@@ -1,30 +1,30 @@
import { Base } from '@/libs/Base/Base'
const request = Base.request
/**
 * æ·»åŠ 
 * @returns
 */
export const addWmsInOutStockRecord = (data: any) => {
  return request.post('/api/v1/HIAWms/wmsInOutStockRecord', data)
}
/**
 * æ‰¹é‡åˆ é™¤
 * @returns
 */
export const deleteWmsInOutStockRecord = (ids: string[]) => {
  return request({
    data: ids,
    url: '/api/v1/HIAWms/wmsInOutStockRecord',
    method: 'delete',
  })
}
/**
 * å…‹éš†
 * @returns
 */
export const cloneData = (data: any) => {
  return request.post('/api/v1/HIAWms/wmsInOutStockRecord/clone', data)
}
import { Base } from '@/libs/Base/Base'
const request = Base.request
/**
 * æ·»åŠ 
 * @returns
 */
export const addWmsInOutStockRecord = (data: any) => {
  return request.post('/api/v1/HIAWms/wmsInOutStockRecord', data)
}
/**
 * æ‰¹é‡åˆ é™¤
 * @returns
 */
export const deleteWmsInOutStockRecords = (ids: string[]) => {
  return request({
    data: ids,
    url: '/api/v1/HIAWms/wmsInOutStockRecord',
    method: 'delete',
  })
}
/**
 * å…‹éš†
 * @returns
 */
export const cloneData = (data: any) => {
  return request.post('/api/v1/HIAWms/wmsInOutStockRecord/clone', data)
}
HIAWms/web/src/widgets/WmsInOutStockRecord/Models/Service/WmsInOutStockRecordDrawer.ts
@@ -1,34 +1,34 @@
import { Base } from '@/libs/Base/Base'
const request = Base.request
/**
 * æ·»åŠ 
 * @returns
 */
export const addWmsInOutStockRecord = (data: any) => {
  return request.post('/api/v1/HIAWms/wmsInOutStockRecord', data)
}
/**
 * èŽ·å–è¯¦æƒ…
 * @returns
 */
export const getWmsInOutStockRecord = (id: string) => {
  return request.get(`/api/v1/HIAWms/wmsInOutStockRecord/${id}`)
}
/**
 * æ›´æ–°
 * @returns
 */
export const updateWmsInOutStockRecord = (id: string, data: Record<string, any>) => {
  return request.put(`/api/v1/HIAWms/wmsInOutStockRecord/${id}`, data)
}
/**
 * èŽ·å–æžšä¸¾
 * @returns
 */
export const getWmsEnumData = (data: any) => {
  return request.post('/api/v1/HIAWms/WmsEnum', data)
}
import { Base } from '@/libs/Base/Base'
const request = Base.request
/**
 * æ·»åŠ 
 * @returns
 */
export const addWmsInOutStockRecord = (data: any) => {
  return request.post('/api/v1/HIAWms/wmsInOutStockRecord', data)
}
/**
 * èŽ·å–è¯¦æƒ…
 * @returns
 */
export const getWmsInOutStockRecord = (id: string) => {
  return request.get(`/api/v1/HIAWms/wmsInOutStockRecord/${id}`)
}
/**
 * æ›´æ–°
 * @returns
 */
export const updateWmsInOutStockRecord = (id: string, data: Record<string, any>) => {
  return request.put(`/api/v1/HIAWms/wmsInOutStockRecord/${id}`, data)
}
/**
 * èŽ·å–æžšä¸¾
 * @returns
 */
export const getWmsEnumData = (data: any) => {
  return request.post('/api/v1/HIAWms/WmsEnum', data)
}
HIAWms/web/src/widgets/WmsInOutStockRecord/Models/WmsInOutStockRecord.ts
@@ -1,41 +1,41 @@
import { Base } from '@/libs/Base/Base'
import {
  deleteWmsInOutStockRecord,
  addWmsInOutStockRecord,
  cloneData,
} from './Service/WmsInOutStockRecord'
export class WmsInOutStockRecord extends Base<{ [key: string]: any }> {
  constructor() {
    super({
      data: [],
    })
  }
  onMounted() {}
  /**
   * åˆ é™¤
   * @param id
   * @returns
   */
  async deleteWmsInOutStockRecords(ids: string[]) {
    return deleteWmsInOutStockRecord(ids)
  }
  /**
   * æ·»åŠ æ•°æ®
   * @param data
   * @returns
   */
  addWmsInOutStockRecord(data: Record<string, any>) {
    return addWmsInOutStockRecord(data)
  }
  /**
   * å…‹éš†
   * @param ids
   * @returns
   */
  cloneData(ids: string[]) {
    return cloneData(ids)
  }
}
import { Base } from '@/libs/Base/Base'
import {
  deleteWmsInOutStockRecords,
  addWmsInOutStockRecord,
  cloneData,
} from './Service/WmsInOutStockRecord'
export class WmsInOutStockRecord extends Base<{ [key: string]: any }> {
  constructor() {
    super({
      data: [],
    })
  }
  onMounted() {}
  /**
   * åˆ é™¤
   * @param id
   * @returns
   */
  async deleteWmsInOutStockRecords(ids: string[]) {
    return deleteWmsInOutStockRecords(ids)
  }
  /**
   * æ·»åŠ æ•°æ®
   * @param data
   * @returns
   */
  addWmsInOutStockRecord(data: Record<string, any>) {
    return addWmsInOutStockRecord(data)
  }
  /**
   * å…‹éš†
   * @param ids
   * @returns
   */
  cloneData(ids: string[]) {
    return cloneData(ids)
  }
}
HIAWms/web/src/widgets/WmsInOutStockRecord/Models/WmsInOutStockRecordDrawer.ts
@@ -1,44 +1,44 @@
import { Base } from '@/libs/Base/Base'
import {
  addWmsInOutStockRecord,
  getWmsInOutStockRecord,
  updateWmsInOutStockRecord,
  getWmsEnumData,
} from './Service/WmsInOutStockRecordDrawer'
import { useGlobalState } from '@/libs/Store/Store'
export class WmsInOutStockRecordDrawer extends Base<{ [key: string]: any }> {
  constructor() {
    super({
      data: [],
      wmsMaterial: {},
    })
  }
  /**
   * æ·»åŠ 
   * @param data
   */
  async addWmsInOutStockRecord(data: Record<string, any>) {
    return addWmsInOutStockRecord(data)
  }
  /**
   * æ›´æ–°
   * @param data
   */
  async updateWmsInOutStockRecord(id: string, data: Record<string, any>) {
    return updateWmsInOutStockRecord(id, data)
  }
  /**
   * èŽ·å–è¯¦æƒ…
   */
  async getWmsInOutStockRecordDetail(current: any, id?: string) {
    return getWmsInOutStockRecord(id || current?.id)
  }
  //  èŽ·å–æžšä¸¾å€¼
  async getWmsEnumData(data: Record<string, any>) {
    return getWmsEnumData(data)
  }
}
import { Base } from '@/libs/Base/Base'
import {
  addWmsInOutStockRecord,
  getWmsInOutStockRecord,
  updateWmsInOutStockRecord,
  getWmsEnumData,
} from './Service/WmsInOutStockRecordDrawer'
import { useGlobalState } from '@/libs/Store/Store'
export class WmsInOutStockRecordDrawer extends Base<{ [key: string]: any }> {
  constructor() {
    super({
      data: [],
      wmsInOutStockRecord: {},
    })
  }
  /**
   * æ·»åŠ 
   * @param data
   */
  async addWmsInOutStockRecord(data: Record<string, any>) {
    return addWmsInOutStockRecord(data)
  }
  /**
   * æ›´æ–°
   * @param data
   */
  async updateWmsInOutStockRecord(id: string, data: Record<string, any>) {
    return updateWmsInOutStockRecord(id, data)
  }
  /**
   * èŽ·å–è¯¦æƒ…
   */
  async getWmsInOutStockRecordDetail(current: any, id?: string) {
    return getWmsInOutStockRecord(id || current?.id)
  }
  //  èŽ·å–æžšä¸¾å€¼
  async getWmsEnumData(data: Record<string, any>) {
    return getWmsEnumData(data)
  }
}
HIAWms/web/src/widgets/WmsInOutStockRecord/Models/WmsInOutStockRecordQueryDrawer.ts
@@ -11,7 +11,7 @@
  constructor() { 
    super({ 
      data: [], 
      wmsMaterial: {},
      wmsInOutStockRecord: {},
    }) 
  } 
 
HIAWms/web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/Config.ts
@@ -1,59 +1,67 @@
export const columns = [
  {
    type: 'seq',
    width: 60,
    title: '序号',
  },
  {
    field: 'orderNo',
    title: '单据编号',
  },
  {
    field: 'materialName',
    title: '物料名称',
  },
  {
    field: 'materialNo',
    title: '物料件号',
  },
  {
    field: 'stockTypeDesc',
    title: '操作类型',
  },
  {
    field: 'containerNo',
    title: '容器编号',
  },
  {
    field: 'materialModel',
    title: '机型',
  },
  {
    field: 'operateTime',
    title: '操作时间',
  },
  {
    field: 'remark',
    title: '备注',
  },
  {
    field: 'materialId',
    title: '物料ID',
  },
  {
    field: 'taskNo',
    title: '任务号',
  },
  {
    field: 'sourcePlace',
    title: '起始库位',
  },
  {
    field: 'toPlace',
    title: '目标库位',
  },
  // {
  //   field: 'deletionTime',
  //   title: '',
  // },
]
export const columns = [
  {
    type: 'seq',
    width: 60,
    title: '序号',
  },
  {
  field: 'orderNo',
  title: '单据编号',
},
{
  field: 'materialName',
  title: '物料名称',
},
{
  field: 'materialNo',
  title: '物料件号',
},
{
  field: 'stockTypeDesc',
  title: '操作类型',
},
{
  field: 'containerNo',
  title: '容器编号',
},
{
  field: 'materialModel',
  title: '机型',
},
{
  field: 'operateTime',
  title: '操作时间',
},
{
  field: 'remark',
  title: '备注',
},
{
  field: 'materialId',
  title: '物料ID',
},
{
  field: 'taskNo',
  title: '任务号',
},
{
  field: 'sourcePlace',
  title: '起始库位',
},
{
  field: 'toPlace',
  title: '目标库位',
},
{
  field: 'sort',
  title: '排序',
},
{
  field: 'creationTime',
  title: '',
},
{
  field: 'deletionTime',
  title: '',
},
]
HIAWms/web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/WmsInOutStockRecord.module.scss
@@ -15,7 +15,7 @@
  .header { 
    margin-bottom: 12px; 
    display: flex; 
    justify-content: flex-start;
    justify-content: flex-end;
    align-items: center; 
  } 
HIAWms/web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/WmsInOutStockRecord.tsx
@@ -71,9 +71,9 @@
    }) 
    //定义整体模糊查询的列数组(注意:必须大小写跟后端的实体类属性名一致,否则会导致匹配不对的问题) 
    const _searchFormInputAttrs = ref([ 
     'MaterialNo', 'MaterialName', 'Remark'
     'MaterialNo', 'ContainerNo'
    ]); 
    const searchFormInputAttrs_Placeholder = ref('请输入物料编码/物料名称/备注');
    const searchFormInputAttrs_Placeholder = ref('请输入物料编码/托盘');
     
 
    // åŠ¨æ€æžšä¸¾é€‰é¡¹ 
HIAWms/web/src/widgets/WmsInOutStockRecord/Views/WmsInOutStockRecord.tsx
@@ -1,80 +1,80 @@
import {
  Component,
  DefineComponent,
  defineComponent,
  markRaw,
  ref,
  SetupContext,
  onMounted,
} from 'vue'
import styles from './WmsInOutStockRecord.module.scss'
import Tab from '@/components/Tab/Tab'
import { useProvideModels } from '@/libs/Provider/app'
import { usePermission } from '@/libs/Permission/Permission'
import { permissionCodes } from '../enum'
import { ModuleType, TabItem } from '../type/Type'
import { getEntityNames } from '@/hooks/hook'
import TabPane from '@/components/Tab/TabPane'
const Models: ModuleType = import.meta.glob('./config/*.json', {
  eager: true,
})
const entityNames = getEntityNames(Models)
const nameToLabelMap = [{ name: 'WmsInOutStockRecord', label: '出入库记录' }]
export default defineComponent({
  name: 'WmsInOutStockRecord',
  setup(props, ctx: SetupContext) {
    useProvideModels()
    usePermission(props, permissionCodes)
    const rf = ref<{
      [key: string]: any
    }>({})
    const tabData = ref<TabItem[]>([])
    const onTabChange = (v: string) => {
      rf.value?.[v]?.reloadList()
    }
    const initTableData = async () => {
      for (const i in entityNames) {
        const name = entityNames[i]
        const module = await import(`./Pages/${name}/${name}.tsx`)
        const WmsInOutStockRecord = markRaw(module.default)
        const foundLabel =
          nameToLabelMap.find((item) => item.name === name)?.label || name
        tabData.value.push({
          label: foundLabel,
          name,
          component: WmsInOutStockRecord,
        })
      }
    }
    initTableData()
    return () => {
      return (
        <div class={styles.WmsInOutStockRecord}>
          <Tab data={tabData.value} type="list" onTab={onTabChange}>
            {tabData.value.map((widgetInfo) => {
              const Widget: any = widgetInfo.component
              return (
                <TabPane label={widgetInfo.label} name={widgetInfo.name}>
                  <Widget
                    ref={(r: any) => (rf.value['WmsInOutStockRecord'] = r)}
                  ></Widget>
                </TabPane>
              )
            })}
          </Tab>
        </div>
      )
    }
  },
})
import {
  Component,
  DefineComponent,
  defineComponent,
  markRaw,
  ref,
  SetupContext,
  onMounted,
} from 'vue'
import styles from './WmsInOutStockRecord.module.scss'
import Tab from '@/components/Tab/Tab'
import { useProvideModels } from '@/libs/Provider/app'
import { usePermission } from '@/libs/Permission/Permission'
import { permissionCodes } from '../enum'
import { ModuleType, TabItem } from '../type/Type'
import { getEntityNames } from '@/hooks/hook'
import TabPane from '@/components/Tab/TabPane'
const Models: ModuleType = import.meta.glob('./config/*.json', {
  eager: true,
})
const entityNames = getEntityNames(Models)
const nameToLabelMap = [{ name: 'WmsInOutStockRecord', label: '出入库记录' }]
export default defineComponent({
  name: 'WmsInOutStockRecord',
  setup(props, ctx: SetupContext) {
    useProvideModels()
    usePermission(props, permissionCodes)
    const rf = ref<{
      [key: string]: any
    }>({})
    const tabData = ref<TabItem[]>([])
    const onTabChange = (v: string) => {
      rf.value?.[v]?.reloadList()
    }
    const initTableData = async () => {
      for (const i in entityNames) {
        const name = entityNames[i]
        const module = await import(`./Pages/${name}/${name}.tsx`)
        const WmsInOutStockRecord = markRaw(module.default)
        const foundLabel =
          nameToLabelMap.find((item) => item.name === name)?.label || name
        tabData.value.push({
          label: foundLabel,
          name,
          component: WmsInOutStockRecord,
        })
      }
    }
    initTableData()
    return () => {
      return (
        <div class={styles.WmsInOutStockRecord}>
          <Tab data={tabData.value} type="list" onTab={onTabChange}>
            {tabData.value.map((widgetInfo) => {
              const Widget: any = widgetInfo.component
              return (
                <TabPane label={widgetInfo.label} name={widgetInfo.name}>
                  <Widget
                    ref={(r: any) => (rf.value['WmsInOutStockRecord'] = r)}
                  ></Widget>
                </TabPane>
              )
            })}
          </Tab>
        </div>
      )
    }
  },
})
HIAWms/web/src/widgets/WmsInOutStockRecord/Views/config/WmsInOutStockRecord.json
@@ -1,3 +1,3 @@
{
  "name": "WmsInOutStockRecord"
}
{
  "name": "WmsInOutStockRecord"
}
HIAWms/web/src/widgets/WmsTask/Views/Pages/WmsTask/Config.ts
@@ -47,7 +47,6 @@
  {
    field: 'isRead',
    title: 'WCS可读取',
    formatter: ({ cellValue }) => 12222,
  },
  {
    field: 'sonTaskTypeDesc',
HIAWms/web/src/widgets/WmsTask/Views/Pages/WmsTask/WmsTask.tsx
@@ -214,6 +214,13 @@
                  </div>
                )
              },
              isRead: ({ row }: any) => {
                return (
                  <div>
                    {row.isRead != null ? (row.isRead ? '是' : '否') : '-'}
                  </div>
                )
              },
              name: ({ row }: any) => {
                return row?.name ? (
                  <TdButton
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Web/Controllers/EntityModeDrawerÄ£°å.txt
@@ -31,21 +31,24 @@
    return props.row || null
  })
  const inputNumber = (attrs) => {
  const datePicker = (attrs) => {
    return (
      <el-input-number
        min="1"
        step="1"
        precision="0"
      <el-date-picker
        type="date"
        format="YYYY-MM-DD HH:mm:ss"
        formatValue="YYYY-MM-DD HH:mm:ss"
        {...attrs}
      ></el-input-number>
      ></el-date-picker>
    )
  }
    const datePicker = (attrs) => {
  const dateTimePicker = (attrs) => {
    return (
      <el-date-picker
        type="datetime"
        format="YYYY-MM-DD"
        format="YYYY-MM-DD HH:mm:ss"
        formatValue="YYYY-MM-DD HH:mm:ss"
        {...attrs}
      ></el-date-picker>
    )
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Utility/StructStrHelper.cs
@@ -1845,9 +1845,9 @@
                    var elment = "input";
                    switch (enumDT)
                    {
                        case DataTypeEnum.dt_datetime:
                            elment = "date-picker";
                            break;
                        //case DataTypeEnum.dt_datetime:
                        //    elment = "date-picker";
                        //    break;
                        case DataTypeEnum.dt_bit:
                        case DataTypeEnum.dt_tinyint:
                            elment = "select";