From 277609ae33b198900e926fe5246e778e0ce7fef2 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周四, 08 5月 2025 18:44:39 +0800
Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo

---
 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockOrderAppService.cs |  657 +++++++++++++++++++++++++++++++----------------------------
 1 files changed, 341 insertions(+), 316 deletions(-)

diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockOrderAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockOrderAppService.cs
index 73ae65e..5f71424 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockOrderAppService.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockOrderAppService.cs
@@ -1,127 +1,152 @@
-using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder; 
-using CMS.Plugin.HIAWms.Application.Contracts.Services; 
-using CMS.Plugin.HIAWms.Domain.Shared; 
-using CmsQueryExtensions; 
-using CMS.Plugin.HIAWms.Domain.WmsInOutStockOrder; 
-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.WmsInOutStockOrder;
+using CMS.Plugin.HIAWms.Application.Contracts.Services;
+using CMS.Plugin.HIAWms.Domain.Shared;
+using CmsQueryExtensions;
+using CMS.Plugin.HIAWms.Domain.WmsInOutStockOrder;
+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;
+using CMS.Plugin.HIAWms.Domain.WmsMaterials;
+
+namespace CMS.Plugin.HIAWms.Application.Implements;
+
 /// <summary> 
 /// 鍑哄叆搴撳崟鎹簲鐢ㄦ湇鍔� 
 /// </summary> 
-public class WmsInOutStockOrderAppService : CMSPluginAppService, IWmsInOutStockOrderAppService 
-{ 
-    private readonly IWmsInOutStockOrderRepository wmsInOutStockOrderRepository; 
- 
+public class WmsInOutStockOrderAppService : CMSPluginAppService, IWmsInOutStockOrderAppService
+{
+    private readonly IWmsInOutStockOrderRepository wmsInOutStockOrderRepository;
+    private readonly IWmsMaterialRepository _wmsMaterialRepository;
+
     /// <summary> 
     /// Initializes a new instance of the <see cref="WmsInOutStockOrderAppService"/> class. 
     /// </summary> 
     /// <param name="WmsInOutStockOrderRepository">The task job repository.</param> 
-    public WmsInOutStockOrderAppService(IWmsInOutStockOrderRepository _WmsInOutStockOrderRepository) 
-    { 
-        wmsInOutStockOrderRepository = _WmsInOutStockOrderRepository; 
-    } 
- 
+    public WmsInOutStockOrderAppService(IWmsInOutStockOrderRepository _WmsInOutStockOrderRepository, IWmsMaterialRepository wmsMaterialRepository)
+    {
+        wmsInOutStockOrderRepository = _WmsInOutStockOrderRepository;
+        _wmsMaterialRepository = wmsMaterialRepository;
+    }
+
     /// <summary> 
     /// 鑾峰彇鎸囧畾鍑哄叆搴撳崟鎹� 
     /// </summary> 
     /// <param name="id"></param> 
     /// <returns></returns> 
-    public virtual async Task<WmsInOutStockOrderDto> GetAsync(Guid id) 
-    { 
-        return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(await wmsInOutStockOrderRepository.GetAsync(id)); 
-    } 
- 
+    public virtual async Task<WmsInOutStockOrderDto> GetAsync(Guid id)
+    {
+        return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(await wmsInOutStockOrderRepository.GetAsync(id));
+    }
+
     /// <summary> 
     /// 鍒嗛〉鑾峰彇鍑哄叆搴撳崟鎹� 
     /// </summary> 
     /// <param name="input"></param> 
     /// <returns></returns> 
-    public virtual async Task<PagedResultDto<WmsInOutStockOrderDto>> GetListAsync(GetWmsInOutStockOrderInput input) 
-    { 
-        Check.NotNull(input, nameof(input)); 
- 
-        if (input.Sorting.IsNullOrWhiteSpace()) 
-        { 
-            input.Sorting = nameof(WmsInOutStockOrder.Sort); 
-        } 
- 
+    public virtual async Task<PagedResultDto<WmsInOutStockOrderDto>> GetListAsync(GetWmsInOutStockOrderInput input)
+    {
+        Check.NotNull(input, nameof(input));
+
+        if (input.Sorting.IsNullOrWhiteSpace())
+        {
+            input.Sorting = nameof(WmsInOutStockOrder.Sort);
+        }
+
         #region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�  
- 
+
         //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�  
-        var whereConditions = DynamicGetQueryParams(input); 
- 
-        #endregion 
- 
-        var count = await wmsInOutStockOrderRepository.GetCountAsync(whereConditions); 
-        var list = await wmsInOutStockOrderRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); 
- 
-        return new PagedResultDto<WmsInOutStockOrderDto>(count, ObjectMapper.Map<List<WmsInOutStockOrder>, List<WmsInOutStockOrderDto>>(list)); 
-    } 
- 
+        var whereConditions = DynamicGetQueryParams(input);
+
+        #endregion
+
+        var count = await wmsInOutStockOrderRepository.GetCountAsync(whereConditions);
+        var list = await wmsInOutStockOrderRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
+
+        return new PagedResultDto<WmsInOutStockOrderDto>(count, ObjectMapper.Map<List<WmsInOutStockOrder>, List<WmsInOutStockOrderDto>>(list));
+    }
+
     /// <summary>  
     /// 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�  
     /// </summary>  
     /// <param name="input">杈撳叆鍙傛暟</param>  
     /// <returns></returns>  
-    private FunReturnResultModel<Expression<Func<WmsInOutStockOrder, bool>>> DynamicGetQueryParams(GetWmsInOutStockOrderInput input) 
-    { 
+    private FunReturnResultModel<Expression<Func<WmsInOutStockOrder, bool>>> DynamicGetQueryParams(GetWmsInOutStockOrderInput input)
+    {
         //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�  
-        var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsInOutStockOrder, GetWmsInOutStockOrderInput>(input); 
-        if (!whereConditions.IsSuccess) 
-        { 
-            throw new Exception("鍔ㄦ�佹瀯閫犳煡璇㈡潯浠跺け璐�:" + whereConditions.ErrMsg); 
-        } 
- 
+        var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsInOutStockOrder, GetWmsInOutStockOrderInput>(input);
+        if (!whereConditions.IsSuccess)
+        {
+            throw new Exception("鍔ㄦ�佹瀯閫犳煡璇㈡潯浠跺け璐�:" + whereConditions.ErrMsg);
+        }
+
         //涔熷彲鍐嶆鑷畾涔夋瀯寤烘煡璇㈡潯浠�  
-        Expression<Func<WmsInOutStockOrder, bool>> extendExpression = a => a.IsDeleted == false; 
+        Expression<Func<WmsInOutStockOrder, bool>> extendExpression = a => a.IsDeleted == false;
         // 浣跨敤 System.Linq.PredicateBuilder 鐨� And 
-        var pres = (System.Linq.Expressions.Expression<Func<WmsInOutStockOrder, bool>>)(whereConditions.data); 
-        whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); 
- 
-        return whereConditions; 
-    } 
- 
+        var pres = (System.Linq.Expressions.Expression<Func<WmsInOutStockOrder, 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<WmsInOutStockOrderDto> CreateAsync(WmsInOutStockOrderCreateDto input) 
-    { 
-        await CheckCreateOrUpdateDtoAsync(input); 
- 
-        var exist = await wmsInOutStockOrderRepository.NameExistAsync(input.OrderNo); 
-        if (exist) 
-        { 
-            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.OrderNo]); 
-        } 
- 
-        var maxSort = await wmsInOutStockOrderRepository.GetMaxSortAsync(); 
-        var sort = input.Sort ?? maxSort; 
- 
-        var insertObj = ObjectMapper.Map<WmsInOutStockOrderCreateDto, WmsInOutStockOrder>(input); 
-        insertObj.Sort = sort; 
-        input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); 
- 
-        await wmsInOutStockOrderRepository.InsertAsync(insertObj); 
- 
+    public virtual async Task<WmsInOutStockOrderDto> CreateAsync(WmsInOutStockOrderCreateDto input)
+    {
+        await CheckCreateOrUpdateDtoAsync(input);
+
+        var material = await _wmsMaterialRepository.FindByNameAsync(input.MaterialNo);
+        if (material == null)
+        {
+            throw new UserFriendlyException("鐗╂枡淇℃伅涓嶅瓨鍦�");
+        }
+
+        var exist = await wmsInOutStockOrderRepository.NameExistAsync(input.OrderNo);
+        if (exist)
+        {
+            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.OrderNo]);
+        }
+
+        var maxSort = await wmsInOutStockOrderRepository.GetMaxSortAsync();
+        var sort = input.Sort ?? maxSort;
+
+        var maxPriority = await wmsInOutStockOrderRepository.GetMaxPriorityAsync();
+        var priority = input.Priority > 0 ? input.Priority : maxPriority;
+
+        var insertObj = ObjectMapper.Map<WmsInOutStockOrderCreateDto, WmsInOutStockOrder>(input);
+        insertObj.MaterialName = material.MaterialName;
+        insertObj.MaterialModel = material.MaterialModel;
+        insertObj.OrderStatus = Domain.Shared.Enums.OrderStatusEnum.NoStart;
+
+        var type = "RK-";
+        insertObj.StockType = Domain.Shared.Enums.StockTypeEnum.InBound;
+        if (input.OrderType == Domain.Shared.Enums.OrderTypeEnum.PRODUCTCALL || input.OrderType == Domain.Shared.Enums.OrderTypeEnum.PERSONOT)
+        {
+            type = "CK-";
+            insertObj.StockType = Domain.Shared.Enums.StockTypeEnum.OutBound;
+        }
+        insertObj.OrderNo = type + DateTime.Now.ToString("yyyyMMddHHmmssfff");
+        insertObj.Sort = sort;
+        insertObj.Priority = priority;
+        input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
+
+        await wmsInOutStockOrderRepository.InsertAsync(insertObj);
+
         //if (input.Sort.HasValue && insertObj.Sort != maxSort) 
         //{ 
         //    await AdjustSortAsync(insertObj.Id, insertObj.Sort); 
         //} 
- 
-        return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(insertObj); 
-    } 
- 
+
+        return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(insertObj);
+    }
+
     /// <summary> 
     /// 鏇存柊鍑哄叆搴撳崟鎹� 
     /// </summary> 
@@ -129,21 +154,21 @@
     /// <param name="input"></param> 
     /// <returns></returns> 
     /// <exception cref="UserFriendlyException"></exception> 
-    public virtual async Task<WmsInOutStockOrderDto> UpdateAsync(Guid id, WmsInOutStockOrderUpdateDto input) 
-    { 
-        await CheckCreateOrUpdateDtoAsync(input); 
- 
-        var updateObj = await wmsInOutStockOrderRepository.GetAsync(id); 
-        var exist = await wmsInOutStockOrderRepository.NameExistAsync(input.OrderNo, updateObj.Id); 
-        if (exist) 
-        { 
-            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.OrderNo]); 
-        } 
- 
-        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); 
-        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); 
- 
-                updateObj.OrderNo = input.OrderNo;
+    public virtual async Task<WmsInOutStockOrderDto> UpdateAsync(Guid id, WmsInOutStockOrderUpdateDto input)
+    {
+        await CheckCreateOrUpdateDtoAsync(input);
+
+        var updateObj = await wmsInOutStockOrderRepository.GetAsync(id);
+        var exist = await wmsInOutStockOrderRepository.NameExistAsync(input.OrderNo, updateObj.Id);
+        if (exist)
+        {
+            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.OrderNo]);
+        }
+
+        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
+        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
+
+        updateObj.OrderNo = input.OrderNo;
         updateObj.OrderStatus = input.OrderStatus;
         updateObj.MaterialName = input.MaterialName;
         updateObj.MaterialNo = input.MaterialNo;
@@ -159,20 +184,20 @@
         updateObj.OperateTime = input.OperateTime;
         updateObj.Remark = input.Remark;
         updateObj.IsDisabled = input.IsDisabled;
- 
- 
-        await wmsInOutStockOrderRepository.UpdateAsync(updateObj); 
- 
-        return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(updateObj); 
-    } 
- 
+
+
+        await wmsInOutStockOrderRepository.UpdateAsync(updateObj);
+
+        return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(updateObj);
+    }
+
     /// <summary> 
     /// 鍏嬮殕鍑哄叆搴撳崟鎹� 
     /// </summary> 
     /// <param name="ids"></param> 
     /// <returns></returns> 
-    public async Task<List<WmsInOutStockOrderDto>> CloneAsync(IEnumerable<Guid> ids) 
-    { 
+    public async Task<List<WmsInOutStockOrderDto>> CloneAsync(IEnumerable<Guid> ids)
+    {
         //var wmsInOutStockOrders = new List<WmsInOutStockOrder>(); 
         //if (ids != null) 
         //{ 
@@ -192,259 +217,259 @@
         //                    name += WmsInOutStockOrderConsts.CloneTag; 
         //                    continue; 
         //                } 
- 
+
         //                notExist = true; 
         //            } 
- 
+
         //            //WmsInOutStockOrder = await wmsInOutStockOrderRepository.InsertAsync(WmsInOutStockOrder.Clone(GuidGenerator.Create(), name, sort++)); 
         //            wmsInOutStockOrders.Add(WmsInOutStockOrder); 
         //        } 
         //    } 
         //} 
- 
+
         //return ObjectMapper.Map<List<WmsInOutStockOrder>, List<WmsInOutStockOrderDto>>(wmsInOutStockOrders); 
-        return new List<WmsInOutStockOrderDto>(); 
-    } 
- 
+        return new List<WmsInOutStockOrderDto>();
+    }
+
     /// <summary> 
     /// 鍒犻櫎鍗曚釜鍑哄叆搴撳崟鎹� 
     /// </summary> 
     /// <param name="id"></param> 
     /// <returns></returns> 
-    public virtual Task DeleteAsync(Guid id) 
-    { 
-        return wmsInOutStockOrderRepository.DeleteAsync(id); 
-    } 
- 
+    public virtual async Task DeleteAsync(Guid id)
+    {
+        var order = await wmsInOutStockOrderRepository.GetAsync(id);
+        if(order != null && order.OrderStatus != Domain.Shared.Enums.OrderStatusEnum.NoStart)
+        {
+            throw new UserFriendlyException("鍙兘鍒犻櫎鏈紑濮嬬殑鍗曟嵁");
+        }
+        await wmsInOutStockOrderRepository.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 wmsInOutStockOrderRepository.GetListAsync(null, nameof(WmsInOutStockOrder.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 wmsInOutStockOrderRepository.UpdateManyAsync(list); 
-    } 
- 
+    public virtual async Task AdjustSortAsync(Guid id, int sort)
+    {
+        var list = await wmsInOutStockOrderRepository.GetListAsync(null, nameof(WmsInOutStockOrder.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 wmsInOutStockOrderRepository.UpdateManyAsync(list);
+    }
+
     /// <summary> 
     /// 瀵煎叆鍑哄叆搴撳崟鎹� 
     /// </summary> 
     /// <param name="input"></param> 
     /// <returns></returns> 
     /// <exception cref="UserFriendlyException"></exception> 
-    public async Task ImportAsync(WmsInOutStockOrdersImportModel input) 
-    { 
-        Check.NotNull(input, nameof(input)); 
- 
-        var wmsInOutStockOrderCreateDtos = new List<(int RowIndex, WmsInOutStockOrderCreateDto Item)>(); 
-        var wmsInOutStockOrderUpdateDtos = new List<(int RowIndex, Guid Id, WmsInOutStockOrderUpdateDto Item)>(); 
-        var importItems = input.WmsInOutStockOrders; 
- 
-        if (importItems != null && importItems.Any()) 
-        { 
+    public async Task ImportAsync(WmsInOutStockOrdersImportModel input)
+    {
+        Check.NotNull(input, nameof(input));
+
+        var wmsInOutStockOrderCreateDtos = new List<(int RowIndex, WmsInOutStockOrderCreateDto Item)>();
+        var wmsInOutStockOrderUpdateDtos = new List<(int RowIndex, Guid Id, WmsInOutStockOrderUpdateDto Item)>();
+        var importItems = input.WmsInOutStockOrders;
+
+        if (importItems != null && importItems.Any())
+        {
             #region 瀵煎叆鏍¢獙 
- 
+
             // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶� 
-            var duplicateWmsInOutStockOrders = importItems.GroupBy(x => x.OrderNo).Where(x => x.Count() > 1).ToList(); 
-            if (duplicateWmsInOutStockOrders?.Any() == true) 
-            { 
-                var duplicateWmsInOutStockOrderMsgs = duplicateWmsInOutStockOrders.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key}  鍚嶇О閲嶅"); 
-                var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWmsInOutStockOrderMsgs)}锛岀粓姝㈠鍏�"; 
-                throw new UserFriendlyException(errorMsg); 
-            } 
- 
-            #endregion 
- 
-            foreach (var impItem in importItems) 
-            { 
-                if (impItem.OrderNo.IsNullOrWhiteSpace()) 
-                { 
-                    continue; 
-                } 
- 
-                if (impItem.OrderNo.IsNullOrWhiteSpace()) 
-                { 
-                    var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊impItem.RowIndex}琛岋細WmsInOutStockOrder鍚嶇О涓嶈兘涓虹┖"; 
-                    throw new UserFriendlyException(errorMsg); 
-                } 
- 
-                var oldWmsInOutStockOrder = await wmsInOutStockOrderRepository.FindByNameAsync(impItem.OrderNo); 
-                if (oldWmsInOutStockOrder != null) 
-                { 
-                    var wmsInOutStockOrderUpdateDto = new WmsInOutStockOrderUpdateDto 
-                    { 
+            var duplicateWmsInOutStockOrders = importItems.GroupBy(x => x.OrderNo).Where(x => x.Count() > 1).ToList();
+            if (duplicateWmsInOutStockOrders?.Any() == true)
+            {
+                var duplicateWmsInOutStockOrderMsgs = duplicateWmsInOutStockOrders.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key}  鍚嶇О閲嶅");
+                var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWmsInOutStockOrderMsgs)}锛岀粓姝㈠鍏�";
+                throw new UserFriendlyException(errorMsg);
+            }
+
+            #endregion
+
+            foreach (var impItem in importItems)
+            {
+                if (impItem.OrderNo.IsNullOrWhiteSpace())
+                {
+                    continue;
+                }
+
+                if (impItem.OrderNo.IsNullOrWhiteSpace())
+                {
+                    var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊impItem.RowIndex}琛岋細WmsInOutStockOrder鍚嶇О涓嶈兘涓虹┖";
+                    throw new UserFriendlyException(errorMsg);
+                }
+
+                var oldWmsInOutStockOrder = await wmsInOutStockOrderRepository.FindByNameAsync(impItem.OrderNo);
+                if (oldWmsInOutStockOrder != null)
+                {
+                    var wmsInOutStockOrderUpdateDto = new WmsInOutStockOrderUpdateDto
+                    {
                         OrderNo = impItem.OrderNo,
-OrderStatus = impItem.OrderStatus,
-MaterialName = impItem.MaterialName,
-MaterialNo = impItem.MaterialNo,
-MaterialModel = impItem.MaterialModel,
-MaterialBatch = impItem.MaterialBatch,
-OrderType = impItem.OrderType,
-StockType = impItem.StockType,
-MaterialNumber = impItem.MaterialNumber,
-DistributeNumber = impItem.DistributeNumber,
-CompleteNumber = impItem.CompleteNumber,
-Priority = impItem.Priority,
-PlanNo = impItem.PlanNo,
-OperateTime = impItem.OperateTime,
-Remark = impItem.Remark,
-IsDisabled = impItem.IsDisabled,
- 
-                    }; 
- 
-                    wmsInOutStockOrderUpdateDtos.Add((impItem.RowIndex, oldWmsInOutStockOrder.Id, wmsInOutStockOrderUpdateDto)); 
-                } 
-                else 
-                { 
-                    var wmsInOutStockOrderCreateDto = new WmsInOutStockOrderCreateDto 
-                    { 
+                        OrderStatus = impItem.OrderStatus,
+                        MaterialName = impItem.MaterialName,
+                        MaterialNo = impItem.MaterialNo,
+                        MaterialModel = impItem.MaterialModel,
+                        MaterialBatch = impItem.MaterialBatch,
+                        OrderType = impItem.OrderType,
+                        StockType = impItem.StockType,
+                        MaterialNumber = impItem.MaterialNumber,
+                        DistributeNumber = impItem.DistributeNumber,
+                        CompleteNumber = impItem.CompleteNumber,
+                        Priority = impItem.Priority,
+                        PlanNo = impItem.PlanNo,
+                        OperateTime = impItem.OperateTime,
+                        Remark = impItem.Remark,
+                        IsDisabled = impItem.IsDisabled,
+
+                    };
+
+                    wmsInOutStockOrderUpdateDtos.Add((impItem.RowIndex, oldWmsInOutStockOrder.Id, wmsInOutStockOrderUpdateDto));
+                }
+                else
+                {
+                    var wmsInOutStockOrderCreateDto = new WmsInOutStockOrderCreateDto
+                    {
                         OrderNo = impItem.OrderNo,
-OrderStatus = impItem.OrderStatus,
-MaterialName = impItem.MaterialName,
-MaterialNo = impItem.MaterialNo,
-MaterialModel = impItem.MaterialModel,
-MaterialBatch = impItem.MaterialBatch,
-OrderType = impItem.OrderType,
-StockType = impItem.StockType,
-MaterialNumber = impItem.MaterialNumber,
-DistributeNumber = impItem.DistributeNumber,
-CompleteNumber = impItem.CompleteNumber,
-Priority = impItem.Priority,
-PlanNo = impItem.PlanNo,
-OperateTime = impItem.OperateTime,
-Remark = impItem.Remark,
-IsDisabled = impItem.IsDisabled,
- 
-                    }; 
- 
-                    wmsInOutStockOrderCreateDtos.Add((impItem.RowIndex, wmsInOutStockOrderCreateDto)); 
-                } 
-            } 
-        } 
- 
+                        OrderStatus = impItem.OrderStatus,
+                        MaterialName = impItem.MaterialName,
+                        MaterialNo = impItem.MaterialNo,
+                        MaterialModel = impItem.MaterialModel,
+                        MaterialBatch = impItem.MaterialBatch,
+                        OrderType = impItem.OrderType,
+                        StockType = impItem.StockType,
+                        MaterialNumber = impItem.MaterialNumber,
+                        DistributeNumber = impItem.DistributeNumber,
+                        CompleteNumber = impItem.CompleteNumber,
+                        Priority = impItem.Priority,
+                        PlanNo = impItem.PlanNo,
+                        OperateTime = impItem.OperateTime,
+                        Remark = impItem.Remark,
+                        IsDisabled = impItem.IsDisabled,
+
+                    };
+
+                    wmsInOutStockOrderCreateDtos.Add((impItem.RowIndex, wmsInOutStockOrderCreateDto));
+                }
+            }
+        }
+
         // 鏂板 
-        foreach (var wmsInOutStockOrderDto in wmsInOutStockOrderCreateDtos) 
-        { 
-            try 
-            { 
-                await CreateAsync(wmsInOutStockOrderDto.Item); 
-            } 
-            catch (Exception e) 
-            { 
-                var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsInOutStockOrderDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; 
-                throw new UserFriendlyException(errorMsg); 
-            } 
-        } 
- 
+        foreach (var wmsInOutStockOrderDto in wmsInOutStockOrderCreateDtos)
+        {
+            try
+            {
+                await CreateAsync(wmsInOutStockOrderDto.Item);
+            }
+            catch (Exception e)
+            {
+                var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsInOutStockOrderDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�";
+                throw new UserFriendlyException(errorMsg);
+            }
+        }
+
         // 鏇存柊 
-        foreach (var wmsInOutStockOrderDto in wmsInOutStockOrderUpdateDtos) 
-        { 
-            try 
-            { 
-                await UpdateAsync(wmsInOutStockOrderDto.Id, wmsInOutStockOrderDto.Item); 
-            } 
-            catch (Exception e) 
-            { 
-                var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsInOutStockOrderDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; 
-                throw new UserFriendlyException(errorMsg); 
-            } 
-        } 
-    } 
- 
+        foreach (var wmsInOutStockOrderDto in wmsInOutStockOrderUpdateDtos)
+        {
+            try
+            {
+                await UpdateAsync(wmsInOutStockOrderDto.Id, wmsInOutStockOrderDto.Item);
+            }
+            catch (Exception e)
+            {
+                var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsInOutStockOrderDto.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(GetWmsInOutStockOrderInput input) 
-    { 
-        Check.NotNull(input, nameof(input)); 
- 
-        if (input.Sorting.IsNullOrWhiteSpace()) 
-        { 
-            input.Sorting = nameof(WmsInOutStockOrder.Sort); 
-        } 
- 
+    public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsInOutStockOrderInput input)
+    {
+        Check.NotNull(input, nameof(input));
+
+        if (input.Sorting.IsNullOrWhiteSpace())
+        {
+            input.Sorting = nameof(WmsInOutStockOrder.Sort);
+        }
+
         #region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�  
- 
+
         //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠�  
-        var whereConditions = DynamicGetQueryParams(input); 
- 
-        #endregion 
- 
- 
-        var list = await wmsInOutStockOrderRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); 
-        var result = ObjectMapper.Map<List<WmsInOutStockOrder>, List<WmsInOutStockOrderDto>>(list); 
- 
-        var sheets = new Dictionary<string, object> 
-        { 
-            ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result), 
-        }; 
- 
-        var fileName = result.Count > 1 ? "鍑哄叆搴撳崟鎹垪琛�" : result.Count == 1 ? result[0]?.OrderNo : "WmsInOutStockOrder妯$増"; 
-        return (sheets, fileName); 
-    } 
- 
+        var whereConditions = DynamicGetQueryParams(input);
+
+        #endregion
+
+
+        var list = await wmsInOutStockOrderRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
+        var result = ObjectMapper.Map<List<WmsInOutStockOrder>, List<WmsInOutStockOrderDto>>(list);
+
+        var sheets = new Dictionary<string, object>
+        {
+            ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result),
+        };
+
+        var fileName = result.Count > 1 ? "鍑哄叆搴撳崟鎹垪琛�" : result.Count == 1 ? result[0]?.OrderNo : "WmsInOutStockOrder妯$増";
+        return (sheets, fileName);
+    }
+
     /// <summary> 
     /// 鏍¢獙鍑哄叆搴撳崟鎹紝褰撴柊寤烘垨鏇存柊鏃� 
     /// </summary> 
     /// <param name="input"></param> 
     /// <returns></returns> 
-    protected Task CheckCreateOrUpdateDtoAsync(WmsInOutStockOrderCreateOrUpdateDtoBase input) 
-    { 
-        Check.NotNull(input, nameof(input)); 
-                Check.NotNullOrWhiteSpace(input.OrderNo, "鍗曟嵁缂栧彿", 50);
-        Check.NotNull(input.OrderStatus, "鍗曟嵁鐘舵��");
-        Check.NotNullOrWhiteSpace(input.MaterialNo, "鐗╂枡浠跺彿", 50);
+    protected Task CheckCreateOrUpdateDtoAsync(WmsInOutStockOrderCreateOrUpdateDtoBase input)
+    {
+        Check.NotNull(input, nameof(input));
+        Check.NotNullOrWhiteSpace(input.MaterialNo, "鐗╂枡缂栧彿", 50);
         Check.NotNullOrWhiteSpace(input.MaterialBatch, "鎵规鍙�", 50);
         Check.NotNull(input.OrderType, "鍗曟嵁绫诲瀷");
-        Check.NotNull(input.StockType, "鎿嶄綔绫诲瀷锛堟灇涓惧�硷級");
+        Check.NotNull(input.StockType, "鎿嶄綔绫诲瀷");
         Check.NotNull(input.MaterialNumber, "鍗曟嵁鏁伴噺");
-        Check.NotNull(input.DistributeNumber, "涓嬪彂鏁伴噺");
-        Check.NotNull(input.CompleteNumber, "瀹屾垚鏁伴噺");
-        Check.NotNull(input.Priority, "浼樺厛绾�");
- 
-        return Task.CompletedTask; 
-    } 
-} 
+
+        return Task.CompletedTask;
+    }
+}

--
Gitblit v1.9.3