222
schangxiang@126.com
2025-05-09 13f8c1efe9aaf7b7d1e4e77107de61a56d6f9646
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs
@@ -1,8 +1,7 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
using CMS.Plugin.HIAWms.Application.Contracts.Services; 
using CMS.Plugin.HIAWms.Domain.Shared; 
using CMS.Plugin.HIAWms.Domain.Shared.Util;
using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterial;
using CmsQueryExtensions;
using CMS.Plugin.HIAWms.Domain.WmsMaterial; 
using CmsQueryExtensions.Extension; 
using System.Linq.Expressions; 
@@ -19,15 +18,15 @@
/// </summary> 
public class WmsMaterialAppService : CMSPluginAppService, IWmsMaterialAppService 
    private readonly IWmsMaterialRepository wmsmaterialsRepository;
    private readonly IWmsMaterialRepository wmsMaterialRepository;
 
    /// <summary> 
    /// Initializes a new instance of the <see cref="WmsMaterialAppService"/> class. 
    /// </summary> 
    /// <param name="WmsMaterialRepository">The task job repository.</param> 
    public WmsMaterialAppService(IWmsMaterialRepository WmsMaterialRepository)
    public WmsMaterialAppService(IWmsMaterialRepository _WmsMaterialRepository)
    { 
        wmsmaterialsRepository = WmsMaterialRepository;
        wmsMaterialRepository = _WmsMaterialRepository;
    } 
 
    /// <summary> 
@@ -37,7 +36,7 @@
    /// <returns></returns> 
    public virtual async Task<WmsMaterialDto> GetAsync(Guid id) 
    { 
        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(await wmsmaterialsRepository.GetAsync(id));
        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(await wmsMaterialRepository.GetAsync(id));
    } 
 
    /// <summary> 
@@ -61,8 +60,8 @@
 
        #endregion 
 
        var count = await wmsmaterialsRepository.GetCountAsync(whereConditions);
        var list = await wmsmaterialsRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
        var count = await wmsMaterialRepository.GetCountAsync(whereConditions);
        var list = await wmsMaterialRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
 
        return new PagedResultDto<WmsMaterialDto>(count, ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(list)); 
    } 
@@ -100,25 +99,25 @@
    { 
        await CheckCreateOrUpdateDtoAsync(input); 
 
        var exist = await wmsmaterialsRepository.NameExistAsync(input.MaterialCode);
        var exist = await wmsMaterialRepository.NameExistAsync(input.MaterialCode);
        if (exist) 
        { 
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]); 
        } 
 
        var maxSort = await wmsmaterialsRepository.GetMaxSortAsync();
        var maxSort = await wmsMaterialRepository.GetMaxSortAsync();
        var sort = input.Sort ?? maxSort; 
 
        var insertObj = ObjectMapper.Map<WmsMaterialCreateDto, WmsMaterial>(input); 
        insertObj.Sort = sort; 
        input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); 
 
        await wmsmaterialsRepository.InsertAsync(insertObj);
        await wmsMaterialRepository.InsertAsync(insertObj);
 
        if (input.Sort.HasValue && insertObj.Sort != maxSort)
        {
            await AdjustSortAsync(insertObj.Id, insertObj.Sort);
        }
        //if (input.Sort.HasValue && insertObj.Sort != maxSort)
        //{
        //    await AdjustSortAsync(insertObj.Id, insertObj.Sort);
        //}
 
        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(insertObj); 
    } 
@@ -134,8 +133,8 @@
    { 
        await CheckCreateOrUpdateDtoAsync(input); 
 
        var updateObj = await wmsmaterialsRepository.GetAsync(id);
        var exist = await wmsmaterialsRepository.NameExistAsync(input.MaterialCode, updateObj.Id);
        var updateObj = await wmsMaterialRepository.GetAsync(id);
        var exist = await wmsMaterialRepository.NameExistAsync(input.MaterialCode, updateObj.Id);
        if (exist) 
        { 
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]); 
@@ -145,7 +144,12 @@
        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); 
 
                updateObj.MaterialCode = input.MaterialCode;
        updateObj.IsValid = input.IsValid;
        updateObj.IsSelfMade = input.IsSelfMade;
        updateObj.Num = input.Num;
        updateObj.SelfNum = input.SelfNum;
        updateObj.MaterialName = input.MaterialName;
        updateObj.NullLength = input.NullLength;
        updateObj.PurchaseType = input.PurchaseType;
        updateObj.MaterialType = input.MaterialType;
        updateObj.PrimaryUnit = input.PrimaryUnit;
@@ -162,9 +166,16 @@
        updateObj.RedundantField3 = input.RedundantField3;
        updateObj.Remark = input.Remark;
        updateObj.IsDisabled = input.IsDisabled;
        updateObj.CreatorName = input.CreatorName;
        updateObj.LastModifierName = input.LastModifierName;
        updateObj.OperationRemark = input.OperationRemark;
        updateObj.DeleteRemark = input.DeleteRemark;
        updateObj.ExtraField1 = input.ExtraField1;
        updateObj.ExtraField2 = input.ExtraField2;
        updateObj.ExtraField3 = input.ExtraField3;
 
 
        await wmsmaterialsRepository.UpdateAsync(updateObj);
        await wmsMaterialRepository.UpdateAsync(updateObj);
 
        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(updateObj); 
    } 
@@ -176,21 +187,21 @@
    /// <returns></returns> 
    public async Task<List<WmsMaterialDto>> CloneAsync(IEnumerable<Guid> ids) 
    { 
        //var wmsmaterialss = new List<WmsMaterial>();
        //var wmsMaterials = new List<WmsMaterial>();
        //if (ids != null) 
        //{ 
        //    var sort = await wmsmaterialsRepository.GetMaxSortAsync();
        //    var sort = await wmsMaterialRepository.GetMaxSortAsync();
        //    foreach (var id in ids) 
        //    { 
        //        var WmsMaterial = await wmsmaterialsRepository.FindAsync(id);
        //        var WmsMaterial = await wmsMaterialRepository.FindAsync(id);
        //        if (WmsMaterial != null) 
        //        { 
        //            var name = WmsMaterial.Name + WmsMaterialConsts.CloneTag; 
        //            var notExist = false; 
        //            while (!notExist) 
        //            { 
        //                var exist = await wmsmaterialsRepository.NameExistAsync(name);
        //                if (exist || wmsmaterialss.Any(x => x.Name == name))
        //                var exist = await wmsMaterialRepository.NameExistAsync(name);
        //                if (exist || wmsMaterials.Any(x => x.Name == name))
        //                { 
        //                    name += WmsMaterialConsts.CloneTag; 
        //                    continue; 
@@ -199,13 +210,13 @@
        //                notExist = true; 
        //            } 
 
        //            //WmsMaterial = await wmsmaterialsRepository.InsertAsync(WmsMaterial.Clone(GuidGenerator.Create(), name, sort++));
        //            wmsmaterialss.Add(WmsMaterial);
        //            //WmsMaterial = await wmsMaterialRepository.InsertAsync(WmsMaterial.Clone(GuidGenerator.Create(), name, sort++));
        //            wmsMaterials.Add(WmsMaterial);
        //        } 
        //    } 
        //} 
 
        //return ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(wmsmaterialss);
        //return ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(wmsMaterials);
        return new List<WmsMaterialDto>(); 
    } 
 
@@ -216,7 +227,7 @@
    /// <returns></returns> 
    public virtual Task DeleteAsync(Guid id) 
    { 
        return wmsmaterialsRepository.DeleteAsync(id);
        return wmsMaterialRepository.DeleteAsync(id);
    } 
 
    /// <summary> 
@@ -240,7 +251,7 @@
    /// <returns></returns> 
    public virtual async Task AdjustSortAsync(Guid id, int sort) 
    { 
        var list = await wmsmaterialsRepository.GetListAsync(null, nameof(WmsMaterial.Sort));
        var list = await wmsMaterialRepository.GetListAsync(null, nameof(WmsMaterial.Sort));
        if (list != null && list.Any()) 
        { 
            var initSort = 1; 
@@ -267,7 +278,7 @@
            } 
        } 
 
        await wmsmaterialsRepository.UpdateManyAsync(list);
        await wmsMaterialRepository.UpdateManyAsync(list);
    } 
 
    /// <summary> 
@@ -280,8 +291,8 @@
    { 
        Check.NotNull(input, nameof(input)); 
 
        var wmsmaterialsCreateDtos = new List<(int RowIndex, WmsMaterialCreateDto Item)>();
        var wmsmaterialsUpdateDtos = new List<(int RowIndex, Guid Id, WmsMaterialUpdateDto Item)>();
        var wmsMaterialCreateDtos = new List<(int RowIndex, WmsMaterialCreateDto Item)>();
        var wmsMaterialUpdateDtos = new List<(int RowIndex, Guid Id, WmsMaterialUpdateDto Item)>();
        var importItems = input.WmsMaterials; 
 
        if (importItems != null && importItems.Any()) 
@@ -301,7 +312,7 @@
 
            foreach (var impItem in importItems) 
            { 
                if (impItem.MaterialCode.IsNullOrWhiteSpace() && impItem.MaterialName.IsNullOrWhiteSpace())
                if (impItem.MaterialCode.IsNullOrWhiteSpace())
                { 
                    continue; 
                } 
@@ -312,78 +323,112 @@
                    throw new UserFriendlyException(errorMsg); 
                } 
 
                var oldWmsMaterial = await wmsmaterialsRepository.FindByNameAsync(impItem.MaterialCode);
                var oldWmsMaterial = await wmsMaterialRepository.FindByNameAsync(impItem.MaterialCode);
                if (oldWmsMaterial != null) 
                { 
                    var wmsmaterialsUpdateDto = new WmsMaterialUpdateDto
                    var wmsMaterialUpdateDto = new WmsMaterialUpdateDto
                    { 
                        MaterialCode = impItem.MaterialCode,
                        MaterialName = impItem.MaterialName,
                        PurchaseType = impItem.PurchaseType,
                        MaterialType = impItem.MaterialType,
                        PrimaryUnit = impItem.PrimaryUnit,
                        Standard = impItem.Standard,
                        OuterDiameter = impItem.OuterDiameter,
                        WallThickness = impItem.WallThickness,
                        MaterialQuality = impItem.MaterialQuality,
                        Length = impItem.Length,
                        IsMainBranch = impItem.IsMainBranch,
                        Factory = impItem.Factory,
                        Certification = impItem.Certification,
                        Remark = impItem.Remark,
                        MaterialCode = impItem.MaterialCode,
IsValid = impItem.IsValid,
IsSelfMade = impItem.IsSelfMade,
Num = impItem.Num,
SelfNum = impItem.SelfNum,
MaterialName = impItem.MaterialName,
NullLength = impItem.NullLength,
PurchaseType = impItem.PurchaseType,
MaterialType = impItem.MaterialType,
PrimaryUnit = impItem.PrimaryUnit,
Standard = impItem.Standard,
OuterDiameter = impItem.OuterDiameter,
WallThickness = impItem.WallThickness,
MaterialQuality = impItem.MaterialQuality,
Length = impItem.Length,
IsMainBranch = impItem.IsMainBranch,
Factory = impItem.Factory,
Certification = impItem.Certification,
RedundantField1 = impItem.RedundantField1,
RedundantField2 = impItem.RedundantField2,
RedundantField3 = impItem.RedundantField3,
Remark = impItem.Remark,
IsDisabled = impItem.IsDisabled,
CreatorName = impItem.CreatorName,
LastModifierName = impItem.LastModifierName,
OperationRemark = impItem.OperationRemark,
DeleteRemark = impItem.DeleteRemark,
ExtraField1 = impItem.ExtraField1,
ExtraField2 = impItem.ExtraField2,
ExtraField3 = impItem.ExtraField3,
                    }; 
 
                    wmsmaterialsUpdateDtos.Add((impItem.RowIndex, oldWmsMaterial.Id, wmsmaterialsUpdateDto));
                    wmsMaterialUpdateDtos.Add((impItem.RowIndex, oldWmsMaterial.Id, wmsMaterialUpdateDto));
                } 
                else 
                { 
                    var wmsmaterialsCreateDto = new WmsMaterialCreateDto
                    var wmsMaterialCreateDto = new WmsMaterialCreateDto
                    { 
                        MaterialCode = impItem.MaterialCode,
                        MaterialName = impItem.MaterialName,
                        PurchaseType = impItem.PurchaseType,
                        MaterialType = impItem.MaterialType,
                        PrimaryUnit = impItem.PrimaryUnit,
                        Standard = impItem.Standard,
                        OuterDiameter = impItem.OuterDiameter,
                        WallThickness = impItem.WallThickness,
                        MaterialQuality = impItem.MaterialQuality,
                        Length = impItem.Length,
                        IsMainBranch = impItem.IsMainBranch,
                        Factory = impItem.Factory,
                        Certification = impItem.Certification,
                        Remark = impItem.Remark,
                        MaterialCode = impItem.MaterialCode,
IsValid = impItem.IsValid,
IsSelfMade = impItem.IsSelfMade,
Num = impItem.Num,
SelfNum = impItem.SelfNum,
MaterialName = impItem.MaterialName,
NullLength = impItem.NullLength,
PurchaseType = impItem.PurchaseType,
MaterialType = impItem.MaterialType,
PrimaryUnit = impItem.PrimaryUnit,
Standard = impItem.Standard,
OuterDiameter = impItem.OuterDiameter,
WallThickness = impItem.WallThickness,
MaterialQuality = impItem.MaterialQuality,
Length = impItem.Length,
IsMainBranch = impItem.IsMainBranch,
Factory = impItem.Factory,
Certification = impItem.Certification,
RedundantField1 = impItem.RedundantField1,
RedundantField2 = impItem.RedundantField2,
RedundantField3 = impItem.RedundantField3,
Remark = impItem.Remark,
IsDisabled = impItem.IsDisabled,
CreatorName = impItem.CreatorName,
LastModifierName = impItem.LastModifierName,
OperationRemark = impItem.OperationRemark,
DeleteRemark = impItem.DeleteRemark,
ExtraField1 = impItem.ExtraField1,
ExtraField2 = impItem.ExtraField2,
ExtraField3 = impItem.ExtraField3,
                    }; 
 
                    wmsmaterialsCreateDtos.Add((impItem.RowIndex, wmsmaterialsCreateDto));
                    wmsMaterialCreateDtos.Add((impItem.RowIndex, wmsMaterialCreateDto));
                } 
            } 
        } 
 
        // æ–°å¢ž 
        foreach (var wmsmaterialsDto in wmsmaterialsCreateDtos)
        foreach (var wmsMaterialDto in wmsMaterialCreateDtos)
        { 
            try 
            { 
                await CreateAsync(wmsmaterialsDto.Item);
                await CreateAsync(wmsMaterialDto.Item);
            } 
            catch (Exception e) 
            { 
                var errorMsg = $"导入失败!配置,第{wmsmaterialsDto.RowIndex}行:{e.Message},终止导入";
                var errorMsg = $"导入失败!配置,第{wmsMaterialDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg); 
            } 
        } 
 
        // æ›´æ–° 
        foreach (var wmsmaterialsDto in wmsmaterialsUpdateDtos)
        foreach (var wmsMaterialDto in wmsMaterialUpdateDtos)
        { 
            try 
            { 
                await UpdateAsync(wmsmaterialsDto.Id, wmsmaterialsDto.Item);
                await UpdateAsync(wmsMaterialDto.Id, wmsMaterialDto.Item);
            } 
            catch (Exception e) 
            { 
                var errorMsg = $"导入失败!配置,第{wmsmaterialsDto.RowIndex}行:{e.Message},终止导入";
                var errorMsg = $"导入失败!配置,第{wmsMaterialDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg); 
            } 
        } 
@@ -411,7 +456,7 @@
        #endregion 
 
 
        var list = await wmsmaterialsRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
        var list = await wmsMaterialRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
        var result = ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(list); 
 
        var sheets = new Dictionary<string, object> 
@@ -419,7 +464,7 @@
            ["配置"] = ExportHelper.ConvertListToExportData(result), 
        }; 
 
        var fileName = result.Count > 1 ? "WmsMaterial列表" : result.Count == 1 ? result[0]?.MaterialCode : "WmsMaterial模版";
        var fileName = result.Count > 1 ? "物料基础信息表列表" : result.Count == 1 ? result[0]?.MaterialCode : "WmsMaterial模版";
        return (sheets, fileName); 
    } 
 
@@ -432,6 +477,8 @@
    { 
        Check.NotNull(input, nameof(input)); 
                Check.NotNullOrWhiteSpace(input.MaterialCode, "物料编码(唯一标识)", 64);
        Check.NotNull(input.IsValid, "是否有效物料");
        Check.NotNull(input.Num, "数量");
        Check.NotNullOrWhiteSpace(input.MaterialName, "物料名称", 128);
        Check.NotNull(input.PurchaseType, "采购类型(枚举值)");
        Check.NotNull(input.MaterialType, "物料类型(枚举值)");