From 3322dfd299755416176cd946265577e176cae795 Mon Sep 17 00:00:00 2001
From: zs <zhousong@weben-smart.com>
Date: 周日, 11 5月 2025 20:26:51 +0800
Subject: [PATCH] 出入库功能

---
 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs |  334 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 277 insertions(+), 57 deletions(-)

diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
index a5ffc7b..245278e 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
@@ -1,8 +1,8 @@
 using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsTask;
 using CMS.Plugin.HIAWms.Application.Contracts.Services;
 using CMS.Plugin.HIAWms.Domain.Shared;
-using CMS.Plugin.HIAWms.Domain.WmsTask;
 using CmsQueryExtensions;
+using CMS.Plugin.HIAWms.Domain.WmsTask;
 using CmsQueryExtensions.Extension;
 using System.Linq.Expressions;
 using Volo.Abp;
@@ -10,27 +10,65 @@
 using Volo.Abp.Data;
 using Volo.Abp.ObjectExtending;
 using Volo.Abp.ObjectMapping;
+using CMS.Plugin.HIAWms.Domain.WmsContainers;
+using CMS.Plugin.HIAWms.Domain.WmsPlaces;
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
+using CMS.Plugin.HIAWms.Domain.WmsMaterialStocks;
+using CMS.Plugin.HIAWms.Domain.WmsInOutStockOrder;
+using CMS.Plugin.HIAWms.Domain.WmsInOutStockOrderDetail;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrderDetail;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
+using Volo.Abp.Uow;
+using Microsoft.Extensions.DependencyInjection;
 
 namespace CMS.Plugin.HIAWms.Application.Implements;
 
 /// <summary> 
-/// Wms浠诲姟绠$悊琛ㄥ簲鐢ㄦ湇鍔� 
+/// Wms浠诲姟绠$悊搴旂敤鏈嶅姟 
 /// </summary> 
 public class WmsTaskAppService : CMSPluginAppService, IWmsTaskAppService
 {
     private readonly IWmsTaskRepository wmsTaskRepository;
+    private readonly IWmsContainerRepository _wmsContainerRepository;
+    private readonly IWmsPlaceRepository _wmsPlaceRepository;
+    private readonly IWmsMaterialStockRepository _wmsMaterialStockRepository;
+    private readonly IWmsInOutStockOrderRepository _wmsInOutStockOrderRepository;
+    private readonly IWmsInOutStockOrderDetailRepository _wmsInOutStockOrderDetailRepository;
+    private readonly IWmsContainerRepository _wmsContainerRepository1;
+    private readonly IWmsInOutStockOrderDetailAppService _wmsInOutStockOrderDetailAppService;
+    private readonly IWmsInOutStockRecordAppService _wmsInOutStockRecordAppService;
+    private readonly IServiceProvider _serviceProvider;
 
     /// <summary> 
     /// Initializes a new instance of the <see cref="WmsTaskAppService"/> class. 
     /// </summary> 
     /// <param name="WmsTaskRepository">The task job repository.</param> 
-    public WmsTaskAppService(IWmsTaskRepository _WmsTaskRepository)
+    public WmsTaskAppService(IWmsTaskRepository _WmsTaskRepository,
+        IWmsContainerRepository wmsContainerRepository,
+        IWmsPlaceRepository wmsPlaceRepository,
+        IWmsMaterialStockRepository wmsMaterialStockRepository,
+        IWmsInOutStockOrderRepository wmsInOutStockOrderRepository,
+        IWmsInOutStockOrderDetailRepository wmsInOutStockOrderDetailRepository
+,
+        IWmsContainerRepository wmsContainerRepository1,
+        IWmsInOutStockOrderDetailAppService wmsInOutStockOrderDetailAppService,
+        IWmsInOutStockRecordAppService wmsInOutStockRecordAppService,
+        IServiceProvider serviceProvider = null)
     {
         wmsTaskRepository = _WmsTaskRepository;
+        _wmsContainerRepository = wmsContainerRepository;
+        _wmsPlaceRepository = wmsPlaceRepository;
+        _wmsMaterialStockRepository = wmsMaterialStockRepository;
+        _wmsInOutStockOrderRepository = wmsInOutStockOrderRepository;
+        _wmsInOutStockOrderDetailRepository = wmsInOutStockOrderDetailRepository;
+        _wmsContainerRepository1 = wmsContainerRepository1;
+        _wmsInOutStockOrderDetailAppService = wmsInOutStockOrderDetailAppService;
+        _wmsInOutStockRecordAppService = wmsInOutStockRecordAppService;
+        _serviceProvider = serviceProvider;
     }
 
     /// <summary> 
-    /// 鑾峰彇鎸囧畾Wms浠诲姟绠$悊琛� 
+    /// 鑾峰彇鎸囧畾Wms浠诲姟绠$悊 
     /// </summary> 
     /// <param name="id"></param> 
     /// <returns></returns> 
@@ -40,7 +78,7 @@
     }
 
     /// <summary> 
-    /// 鍒嗛〉鑾峰彇Wms浠诲姟绠$悊琛� 
+    /// 鍒嗛〉鑾峰彇Wms浠诲姟绠$悊 
     /// </summary> 
     /// <param name="input"></param> 
     /// <returns></returns> 
@@ -90,7 +128,7 @@
     }
 
     /// <summary> 
-    /// 鏂板缓Wms浠诲姟绠$悊琛� 
+    /// 鏂板缓Wms浠诲姟绠$悊 
     /// </summary> 
     /// <param name="input"></param> 
     /// <returns></returns> 
@@ -103,6 +141,24 @@
         if (exist)
         {
             throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskNo]);
+        }
+        // 鏍¢獙鎵樼洏鏄惁瀛樺湪
+        var existContainer = await _wmsContainerRepository.NameExistAsync(input.ContainerNo);
+        if (existContainer)
+        {
+            throw new UserFriendlyException("鎵樼洏涓嶅瓨鍦紝璇峰厛娣诲姞鎵樼洏");
+        }
+        // 鏍¢獙鐗╂枡鏄惁瀛樺湪
+        var existSourcePlace = await _wmsPlaceRepository.NameExistAsync(input.SourcePlace);
+        if (existSourcePlace)
+        {
+            throw new UserFriendlyException("璧峰搴撲綅涓嶅瓨鍦紝璇峰厛娣诲姞搴撲綅");
+        }
+        //鏍¢獙搴撲綅鏄惁瀛樺湪
+        var existToPlace = await _wmsPlaceRepository.NameExistAsync(input.ToPlace);
+        if (existToPlace)
+        {
+            throw new UserFriendlyException("鐩爣搴撲綅涓嶅瓨鍦紝璇峰厛娣诲姞搴撲綅");
         }
 
         var maxSort = await wmsTaskRepository.GetMaxSortAsync();
@@ -123,7 +179,7 @@
     }
 
     /// <summary> 
-    /// 鏇存柊Wms浠诲姟绠$悊琛� 
+    /// 鏇存柊Wms浠诲姟绠$悊 
     /// </summary> 
     /// <param name="id"></param> 
     /// <param name="input"></param> 
@@ -141,28 +197,32 @@
         }
 
         updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
+        if(input.TaskStatus == Domain.Shared.Enums.WmsTaskStatus.WANCHENG || input.TaskStatus == Domain.Shared.Enums.WmsTaskStatus.QUXIAO)
+        {
+            throw new UserFriendlyException("瀹屾垚鎴栬�呭彇娑堢殑浠诲姟涓嶅厑璁告洿鏀�");
+        }
+
         input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
 
-        updateObj.Aisle = input.Aisle;
+        updateObj.TaskNo = input.TaskNo;
+        updateObj.TaskType = input.TaskType;
+        updateObj.TaskLevel = input.TaskLevel;
+        updateObj.TaskStatus = input.TaskStatus;
         updateObj.ContainerNo = input.ContainerNo;
+        updateObj.SourcePlace = input.SourcePlace;
+        updateObj.ToPlace = input.ToPlace;
+        updateObj.Aisle = input.Aisle;
         updateObj.DodeviceId = input.DodeviceId;
         updateObj.Dodevicetype = input.Dodevicetype;
-        updateObj.IsDisabled = input.IsDisabled;
-        updateObj.IsNextTask = input.IsNextTask;
+        updateObj.TaskDodeviceStatus = input.TaskDodeviceStatus;
         updateObj.IsRead = input.IsRead;
+        updateObj.SonTaskType = input.SonTaskType;
+        updateObj.SourceOrderNo = input.SourceOrderNo;
+        updateObj.IsNextTask = input.IsNextTask;
         updateObj.MutableParam1 = input.MutableParam1;
         updateObj.MutableParam2 = input.MutableParam2;
         updateObj.MutableParam3 = input.MutableParam3;
-        updateObj.SonTaskType = input.SonTaskType;
-        updateObj.SourceOrderNo = input.SourceOrderNo;
-        updateObj.SourcePlace = input.SourcePlace;
-        updateObj.TaskDodeviceStatus = input.TaskDodeviceStatus;
-        updateObj.TaskLevel = input.TaskLevel;
-        updateObj.TaskNo = input.TaskNo;
-        updateObj.TaskStatus = input.TaskStatus;
-        updateObj.TaskType = input.TaskType;
-        updateObj.ToPlace = input.ToPlace;
-
+        updateObj.IsDisabled = input.IsDisabled;
 
         await wmsTaskRepository.UpdateAsync(updateObj);
 
@@ -170,7 +230,7 @@
     }
 
     /// <summary> 
-    /// 鍏嬮殕Wms浠诲姟绠$悊琛� 
+    /// 鍏嬮殕Wms浠诲姟绠$悊 
     /// </summary> 
     /// <param name="ids"></param> 
     /// <returns></returns> 
@@ -210,7 +270,7 @@
     }
 
     /// <summary> 
-    /// 鍒犻櫎鍗曚釜Wms浠诲姟绠$悊琛� 
+    /// 鍒犻櫎鍗曚釜Wms浠诲姟绠$悊 
     /// </summary> 
     /// <param name="id"></param> 
     /// <returns></returns> 
@@ -220,7 +280,7 @@
     }
 
     /// <summary> 
-    /// 鍒犻櫎澶氫釜Wms浠诲姟绠$悊琛� 
+    /// 鍒犻櫎澶氫釜Wms浠诲姟绠$悊 
     /// </summary> 
     /// <param name="ids"></param> 
     /// <returns></returns> 
@@ -233,7 +293,7 @@
     }
 
     /// <summary> 
-    /// 璋冩暣鎺掑簭Wms浠诲姟绠$悊琛� 
+    /// 璋冩暣鎺掑簭Wms浠诲姟绠$悊 
     /// </summary> 
     /// <param name="id"></param> 
     /// <param name="sort"></param> 
@@ -271,7 +331,7 @@
     }
 
     /// <summary> 
-    /// 瀵煎叆Wms浠诲姟绠$悊琛� 
+    /// 瀵煎叆Wms浠诲姟绠$悊 
     /// </summary> 
     /// <param name="input"></param> 
     /// <returns></returns> 
@@ -317,25 +377,25 @@
                 {
                     var wmsTaskUpdateDto = new WmsTaskUpdateDto
                     {
-                        Aisle = impItem.Aisle,
+                        TaskNo = impItem.TaskNo,
+                        TaskType = impItem.TaskType,
+                        TaskLevel = impItem.TaskLevel,
+                        TaskStatus = impItem.TaskStatus,
                         ContainerNo = impItem.ContainerNo,
+                        SourcePlace = impItem.SourcePlace,
+                        ToPlace = impItem.ToPlace,
+                        Aisle = impItem.Aisle,
                         DodeviceId = impItem.DodeviceId,
                         Dodevicetype = impItem.Dodevicetype,
-                        IsDisabled = impItem.IsDisabled,
-                        IsNextTask = impItem.IsNextTask,
+                        TaskDodeviceStatus = impItem.TaskDodeviceStatus,
                         IsRead = impItem.IsRead,
+                        SonTaskType = impItem.SonTaskType,
+                        SourceOrderNo = impItem.SourceOrderNo,
+                        IsNextTask = impItem.IsNextTask,
                         MutableParam1 = impItem.MutableParam1,
                         MutableParam2 = impItem.MutableParam2,
                         MutableParam3 = impItem.MutableParam3,
-                        SonTaskType = impItem.SonTaskType,
-                        SourceOrderNo = impItem.SourceOrderNo,
-                        SourcePlace = impItem.SourcePlace,
-                        TaskDodeviceStatus = impItem.TaskDodeviceStatus,
-                        TaskLevel = impItem.TaskLevel,
-                        TaskNo = impItem.TaskNo,
-                        TaskStatus = impItem.TaskStatus,
-                        TaskType = impItem.TaskType,
-                        ToPlace = impItem.ToPlace,
+                        IsDisabled = impItem.IsDisabled,
 
                     };
 
@@ -345,25 +405,25 @@
                 {
                     var wmsTaskCreateDto = new WmsTaskCreateDto
                     {
-                        Aisle = impItem.Aisle,
+                        TaskNo = impItem.TaskNo,
+                        TaskType = impItem.TaskType,
+                        TaskLevel = impItem.TaskLevel,
+                        TaskStatus = impItem.TaskStatus,
                         ContainerNo = impItem.ContainerNo,
+                        SourcePlace = impItem.SourcePlace,
+                        ToPlace = impItem.ToPlace,
+                        Aisle = impItem.Aisle,
                         DodeviceId = impItem.DodeviceId,
                         Dodevicetype = impItem.Dodevicetype,
-                        IsDisabled = impItem.IsDisabled,
-                        IsNextTask = impItem.IsNextTask,
+                        TaskDodeviceStatus = impItem.TaskDodeviceStatus,
                         IsRead = impItem.IsRead,
+                        SonTaskType = impItem.SonTaskType,
+                        SourceOrderNo = impItem.SourceOrderNo,
+                        IsNextTask = impItem.IsNextTask,
                         MutableParam1 = impItem.MutableParam1,
                         MutableParam2 = impItem.MutableParam2,
                         MutableParam3 = impItem.MutableParam3,
-                        SonTaskType = impItem.SonTaskType,
-                        SourceOrderNo = impItem.SourceOrderNo,
-                        SourcePlace = impItem.SourcePlace,
-                        TaskDodeviceStatus = impItem.TaskDodeviceStatus,
-                        TaskLevel = impItem.TaskLevel,
-                        TaskNo = impItem.TaskNo,
-                        TaskStatus = impItem.TaskStatus,
-                        TaskType = impItem.TaskType,
-                        ToPlace = impItem.ToPlace,
+                        IsDisabled = impItem.IsDisabled,
 
                     };
 
@@ -402,7 +462,7 @@
     }
 
     /// <summary> 
-    /// 瀵煎嚭Wms浠诲姟绠$悊琛� 
+    /// 瀵煎嚭Wms浠诲姟绠$悊 
     /// </summary> 
     /// <param name="input"></param> 
     /// <returns></returns> 
@@ -431,26 +491,186 @@
             ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result),
         };
 
-        var fileName = result.Count > 1 ? "Wms浠诲姟绠$悊琛ㄥ垪琛�" : result.Count == 1 ? result[0]?.TaskNo : "WmsTask妯$増";
+        var fileName = result.Count > 1 ? "Wms浠诲姟绠$悊鍒楄〃" : result.Count == 1 ? result[0]?.TaskNo : "WmsTask妯$増";
         return (sheets, fileName);
     }
 
     /// <summary> 
-    /// 鏍¢獙Wms浠诲姟绠$悊琛紝褰撴柊寤烘垨鏇存柊鏃� 
+    /// 鏍¢獙Wms浠诲姟绠$悊锛屽綋鏂板缓鎴栨洿鏂版椂 
     /// </summary> 
     /// <param name="input"></param> 
     /// <returns></returns> 
     protected Task CheckCreateOrUpdateDtoAsync(WmsTaskCreateOrUpdateDtoBase input)
     {
         Check.NotNull(input, nameof(input));
-        Check.NotNull(input.Dodevicetype, "璁惧绫诲瀷");
-        Check.NotNull(input.IsRead, "WCS鏄惁鍙互璇诲彇");
-        Check.NotNull(input.TaskDodeviceStatus, "璁惧浠诲姟鐘舵��");
-        Check.NotNull(input.TaskLevel, "浠诲姟绛夌骇");
         Check.NotNullOrWhiteSpace(input.TaskNo, "浠诲姟鍙�", 50);
-        Check.NotNull(input.TaskStatus, "浠诲姟鐘舵��");
         Check.NotNull(input.TaskType, "浠诲姟绫诲瀷");
+        Check.NotNull(input.TaskLevel, "浠诲姟绛夌骇");
+        Check.NotNull(input.TaskStatus, "浠诲姟鐘舵��");
+        Check.NotNull(input.Dodevicetype, "璁惧绫诲瀷");
+        Check.NotNull(input.ContainerNo, "鎵樼洏鍙�");
+        Check.NotNull(input.SourcePlace, "璧峰浣嶇疆");
+        Check.NotNull(input.ToPlace, "鐩爣鏈煡");
+        Check.NotNull(input.TaskDodeviceStatus, "璁惧浠诲姟鐘舵��");
+        Check.NotNull(input.IsRead, "WCS鏄惁鍙互璇诲彇");
 
         return Task.CompletedTask;
     }
+
+    /// <summary>
+    /// 浠诲姟寮哄埗瀹屾垚
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    /// <exception cref="UserFriendlyException"></exception>
+    public async Task FinishTaskAsync(WmsTaskUpdateDto input)
+    {
+
+        using var scope = _serviceProvider.CreateScope();
+        var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
+        using var uow = unitOfWorkManager.Begin(requiresNew: true);
+
+        var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo);
+        if (task == null)
+        {
+            throw new UserFriendlyException("浠诲姟涓嶅瓨鍦�");
+        }
+        if (task.TaskStatus == WmsTaskStatus.WANCHENG || task.TaskStatus == WmsTaskStatus.QUXIAO)
+        {
+            throw new UserFriendlyException("鍙栨秷鎴栬�呭畬鎴愮殑浠诲姟涓嶅厑璁告搷浣�");
+        }
+        task.TaskStatus = WmsTaskStatus.WANCHENG;
+
+        // 鏇存柊搴撳瓨
+        var stockList = await _wmsMaterialStockRepository.GetStockListAsync(new WmsMaterialStock { MaterialModel = task.MutableParam1,PlaceNo = task.SourcePlace});
+        if(stockList == null || stockList.Count<=0)
+        {
+            throw new UserFriendlyException("鍘熷簱浣嶄俊鎭笉瀛樺湪");
+        }
+        var stock = stockList.FirstOrDefault();
+        stock.PlaceNo = task.ToPlace;
+        stock.ContainerNo = "TP" + task.ToPlace;
+
+        var container = await _wmsContainerRepository.FindByNameAsync(stock.ContainerNo);
+        if(container == null)
+        {
+            await _wmsContainerRepository.InsertAsync(new WmsContainer
+            {
+                ContainerNo = stock.ContainerNo,
+                ContainerStatus = ContainerStatusEnum.KUWEI,
+                ContainerType = ContainerTypeEnum.XUNI,
+            });
+        }
+
+        var oldContainer = await _wmsContainerRepository.FindByNameAsync(task.ContainerNo);
+        if(oldContainer != null)
+        {
+            await _wmsContainerRepository.DeleteAsync(oldContainer);
+        }
+
+        if (!string.IsNullOrEmpty(task.SourceOrderNo))
+        {
+            // 璺熸柊鍗曟嵁瀹屾垚鏁伴噺
+            var orderNo = await _wmsInOutStockOrderRepository.FindByNameAsync(task.SourceOrderNo);
+            if(orderNo != null)
+            {
+                orderNo.CompleteNumber += 1;
+                orderNo.OrderStatus = OrderStatusEnum.Executing;
+            }
+            if (orderNo.MaterialNumber <= orderNo.CompleteNumber)
+            {
+                orderNo.OrderStatus = OrderStatusEnum.Finish;
+            }
+
+            await _wmsInOutStockOrderRepository.UpdateAsync(orderNo);
+            // 璁板綍涓�鏉¤鎯�
+            var detail = new WmsInOutStockOrderDetailCreateDto
+            {
+                OrderNo = orderNo.OrderNo,
+                OrderType = orderNo.OrderType,
+                MaterialId = stock.MaterialId,
+                MaterialBatch = stock.MaterialBatch,
+                MaterialModel = stock.MaterialModel,
+                MaterialName = stock.MaterialName,
+                MaterialNo = stock.MaterialNo,
+            };
+            await _wmsInOutStockOrderDetailAppService.CreateAsync(detail);
+        }
+
+        // 鍑哄叆搴撹褰�
+        var record = new WmsInOutStockRecordCreateDto
+        {
+            TaskNo = task.TaskNo,
+            OrderNo = task.SourceOrderNo,
+            StockType = task.TaskType == TaskTypeEnum.CHUKU ? StockTypeEnum.OutBound : StockTypeEnum.InBound,
+            ContainerNo = task.ContainerNo,
+            MaterialId = stock.MaterialId,
+            MaterialModel= stock.MaterialModel,
+            MaterialName = stock.MaterialName,
+            MaterialNo = stock.MaterialNo,
+            MaterialBatch = stock.MaterialBatch,
+            SourcePlace = task.SourcePlace,
+            ToPlace = task.ToPlace,
+            OperateTime = DateTime.Now,
+        };
+        await _wmsInOutStockRecordAppService.CreateAsync(record);
+
+        await uow.SaveChangesAsync();
+        await uow.CompleteAsync();
+    }
+
+    /// <summary>
+    /// 鍙栨秷浠诲姟
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    /// <exception cref="UserFriendlyException"></exception>
+    public async Task CancelTaskAysnc(WmsTaskUpdateDto input)
+    {
+
+        using var scope = _serviceProvider.CreateScope();
+        var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
+        using var uow = unitOfWorkManager.Begin(requiresNew: true);
+
+        var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo);
+        if (task == null)
+        {
+            throw new UserFriendlyException("浠诲姟涓嶅瓨鍦�");
+        }
+        if (task.TaskStatus == WmsTaskStatus.WANCHENG || task.TaskStatus == WmsTaskStatus.QUXIAO)
+        {
+            throw new UserFriendlyException("鍙栨秷鎴栬�呭畬鎴愮殑浠诲姟涓嶅厑璁告搷浣�");
+        }
+        task.TaskStatus = WmsTaskStatus.QUXIAO;
+
+        // 鏇存柊搴撳瓨
+        var stockList = await _wmsMaterialStockRepository.GetStockListAsync(new WmsMaterialStock { MaterialModel = task.MutableParam1, PlaceNo = task.SourcePlace });
+        if (stockList == null || stockList.Count <= 0)
+        {
+            throw new UserFriendlyException("鍘熷簱浣嶄俊鎭笉瀛樺湪");
+        }
+        var stock = stockList.FirstOrDefault();
+        await _wmsMaterialStockRepository.DeleteAsync(stock);
+
+        if (!string.IsNullOrEmpty(task.SourceOrderNo))
+        {
+            // 璺熸柊鍗曟嵁瀹屾垚鏁伴噺
+            var orderNo = await _wmsInOutStockOrderRepository.FindByNameAsync(task.SourceOrderNo);
+            if(orderNo != null)
+            {
+                orderNo.CompleteNumber -= 1;
+                orderNo.OrderStatus = OrderStatusEnum.NoStart;
+            }
+            if (orderNo.CompleteNumber>0)
+            {
+                orderNo.OrderStatus = OrderStatusEnum.Executing;
+            }
+
+            await _wmsInOutStockOrderRepository.UpdateAsync(orderNo);
+            
+        }
+
+        await uow.SaveChangesAsync();
+        await uow.CompleteAsync();
+    }
 }

--
Gitblit v1.9.3