From 5c5a26ca4f99953d06e75010eed5b0b59dff3b3f Mon Sep 17 00:00:00 2001
From: song zhou <1759742460@qq.com>
Date: 周日, 18 5月 2025 19:44:26 +0800
Subject: [PATCH] wcs交互

---
 HIAWms/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.csproj                                 |    2 
 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs              |   73 +++++++++++++++++++++--
 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/QueryTaskTypeInput.cs |   25 ++++++++
 HIAWms/hiawms_web/components.d.ts                                                            |    3 +
 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/WmsTaskDto.cs         |    5 +
 HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs                          |   17 ++++-
 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs     |    9 ++
 7 files changed, 121 insertions(+), 13 deletions(-)

diff --git a/HIAWms/hiawms_web/components.d.ts b/HIAWms/hiawms_web/components.d.ts
index 135cdd6..988c7da 100644
--- a/HIAWms/hiawms_web/components.d.ts
+++ b/HIAWms/hiawms_web/components.d.ts
@@ -21,6 +21,8 @@
     Dialog: typeof import('./src/components/Dialog/index.vue')['default']
     ElButton: typeof import('element-plus/es')['ElButton']
     ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
+    ElCollapse: typeof import('element-plus/es')['ElCollapse']
+    ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
     ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
     ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
     ElDialog: typeof import('element-plus/es')['ElDialog']
@@ -42,6 +44,7 @@
     ElPopover: typeof import('element-plus/es')['ElPopover']
     ElRadio: typeof import('element-plus/es')['ElRadio']
     ElSelect: typeof import('element-plus/es')['ElSelect']
+    ElSwitch: typeof import('element-plus/es')['ElSwitch']
     ElTabPane: typeof import('element-plus/es')['ElTabPane']
     ElTabs: typeof import('element-plus/es')['ElTabs']
     ElTag: typeof import('element-plus/es')['ElTag']
diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/QueryTaskTypeInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/QueryTaskTypeInput.cs
index 15b99a7..dbb143e 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/QueryTaskTypeInput.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/QueryTaskTypeInput.cs
@@ -12,6 +12,31 @@
     /// </summary>
     public class QueryTaskTypeInput
     {
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
         public TaskTypeEnum TaskType { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鍙f湁璐�
+        /// </summary>
+        public bool InStockHasGood { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱鍙f湁璐�
+        /// </summary>
+        public bool OutStockHasGood { get; set; }
+
+    }
+
+    /// <summary>
+    /// 涓嬪彂瀹屾垚鐨勪换鍔″叆鍙�.
+    /// </summary>
+    public class ExcecuteTaskInput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set;}
     }
 }
diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/WmsTaskDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/WmsTaskDto.cs
index 36eb5c1..91a608e 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/WmsTaskDto.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/WmsTaskDto.cs
@@ -29,6 +29,7 @@
     {
         get
         {
+            if (TaskType == 0) return "";
             return GetEnumDescriptionUtil.GetEnumDescription(TaskType);
         }
     }
@@ -49,6 +50,7 @@
     {
         get
         {
+            if (TaskStatus == 0) return "";
             return GetEnumDescriptionUtil.GetEnumDescription(TaskStatus);
         }
     }
@@ -95,6 +97,7 @@
     {
         get
         {
+            if (Dodevicetype == 0) return "";
             return GetEnumDescriptionUtil.GetEnumDescription(Dodevicetype);
         }
     }
@@ -111,6 +114,7 @@
     {
         get
         {
+            if (TaskDodeviceStatus == 0) return "";
             return GetEnumDescriptionUtil.GetEnumDescription(TaskDodeviceStatus);
         }
     }
@@ -132,6 +136,7 @@
     {
         get
         {
+            if (SonTaskType == 0 || !SonTaskType.HasValue) return "";
             return GetEnumDescriptionUtil.GetEnumDescription(SonTaskType);
         }
     }
diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs
index 7f6670c..b86ef51 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs
@@ -49,7 +49,7 @@
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
-    Task FinishTaskAsync(WmsTaskStatusDto input);
+    Task<WmsTaskDto> FinishTaskAsync(WmsTaskStatusDto input);
 
     /// <summary>
     /// 鍙栨秷浠诲姟
@@ -71,4 +71,11 @@
     /// <param name="input"></param>
     /// <returns></returns>
     Task<WmsTaskDto> GetToExecuteTaskAsync(QueryTaskTypeInput input);
+
+    /// <summary>
+    /// 鏇存柊浠诲姟涓烘墽琛屼腑
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    Task<WmsTaskDto> StartExecuteTaskAsync(ExcecuteTaskInput input);
 } 
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 7ede721..595662e 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
@@ -526,8 +526,12 @@
     /// <param name="input"></param>
     /// <returns></returns>
     /// <exception cref="UserFriendlyException"></exception>
-    public async Task FinishTaskAsync(WmsTaskStatusDto input)
+    public async Task<WmsTaskDto> FinishTaskAsync(WmsTaskStatusDto input)
     {
+        if (string.IsNullOrEmpty(input.TaskNo))
+        {
+            throw new UserFriendlyException("浠诲姟鍙蜂笉鑳戒负绌�");
+        }
         using var scope = _serviceProvider.CreateScope();
         var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
         using var uow = unitOfWorkManager.Begin(requiresNew: true);
@@ -640,6 +644,8 @@
 
         await uow.SaveChangesAsync();
         await uow.CompleteAsync();
+
+        return ObjectMapper.Map<WmsTask, WmsTaskDto>(task);
     }
 
     /// <summary>
@@ -650,7 +656,10 @@
     /// <exception cref="UserFriendlyException"></exception>
     public async Task CancelTaskAysnc(WmsTaskStatusDto input)
     {
-
+        if (string.IsNullOrEmpty(input.TaskNo))
+        {
+            throw new UserFriendlyException("浠诲姟鍙蜂笉鑳戒负绌�");
+        }
         using var scope = _serviceProvider.CreateScope();
         var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
         using var uow = unitOfWorkManager.Begin(requiresNew: true);
@@ -705,7 +714,13 @@
     /// <exception cref="UserFriendlyException"></exception>
     public async Task ChangeTaskToPlaceAsync(ChangeTaskToPlaceInput input)
     {
-        var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo); 
+
+        if (string.IsNullOrEmpty(input.TaskNo))
+        {
+            throw new UserFriendlyException("浠诲姟鍙蜂笉鑳戒负绌�");
+        }
+
+        var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo);
         if (task == null)
         {
             throw new UserFriendlyException("浠诲姟淇℃伅涓嶅瓨鍦�");
@@ -722,13 +737,13 @@
             throw new UserFriendlyException("鐩爣搴撲綅淇℃伅涓嶅瓨鍦�");
         }
 
-        if(toPlaceInfo.IsDisabled)
+        if (toPlaceInfo.IsDisabled)
         {
             throw new UserFriendlyException("鐩爣搴撲綅宸茶绂佺敤");
         }
 
         var toplaceStock = await _wmsMaterialStockRepository.GetStockListAsync(new WmsMaterialStock { PlaceNo = input.ToPlace });
-        if (toplaceStock != null && toplaceStock.Count>0)
+        if (toplaceStock != null && toplaceStock.Count > 0)
         {
             var model = toplaceStock.FirstOrDefault();
             if (model.MaterialModel != input.MutableParam1)
@@ -755,14 +770,56 @@
         var whereConditions = DynamicGetQueryParams(queryInput);
 
         var NoStartTaskList = await wmsTaskRepository.GetTaskListAsync(whereConditions);
-        if(NoStartTaskList.Count<=0) return null;
 
-        var executeTask = NoStartTaskList.FirstOrDefault(x=>x.TaskType == input.TaskType);
-        if(executeTask == null)
+
+        if (NoStartTaskList.Count <= 0) return null;
+
+        var executeTaskList = NoStartTaskList.WhereIf(input.TaskType > 0, x => x.TaskType == input.TaskType).OrderBy(x => x.TaskType).ThenBy(x => x.TaskLevel).ToList();
+
+        var executeTask = executeTaskList.FirstOrDefault();
+        if (input.OutStockHasGood)
+        {
+            executeTask = NoStartTaskList.OrderByDescending(x => x.TaskType == TaskTypeEnum.RUKU).ThenBy(x => x.TaskLevel).FirstOrDefault();
+        }
+
+        if (executeTask == null)
         {
             return ObjectMapper.Map<WmsTask, WmsTaskDto>(NoStartTaskList.FirstOrDefault());
         }
 
+        if (executeTask.TaskType == TaskTypeEnum.CHUKU && input.OutStockHasGood)
+        {
+            return null;
+        }
+
+        if(executeTask.TaskType == TaskTypeEnum.RUKU && !input.InStockHasGood)
+        {
+            return null;
+        }
+
         return ObjectMapper.Map<WmsTask, WmsTaskDto>(executeTask);
     }
+  
+
+    /// <summary>
+    /// 鏇存柊浠诲姟涓烘墽琛屼腑
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    public async Task<WmsTaskDto> StartExecuteTaskAsync(ExcecuteTaskInput input)
+    {
+        if (string.IsNullOrEmpty(input.TaskNo))
+        {
+            throw new UserFriendlyException("浠诲姟鍙蜂笉鑳戒负绌�");
+        }
+        var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo);
+        if(task == null)
+        {
+            return new WmsTaskDto();
+        }
+        task.TaskStatus = WmsTaskStatus.ZHIXINGZHONG;
+        task.TaskDodeviceStatus = TaskDodeviceStatus.SrmProgress;
+         await wmsTaskRepository.UpdateAsync(task);
+        return ObjectMapper.Map<WmsTask, WmsTaskDto>(task);
+    }
 }
diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.csproj b/HIAWms/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.csproj
index 69a13a5..5879009 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.csproj
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.csproj
@@ -11,7 +11,7 @@
     </PropertyGroup>
 
     <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
-        <CMSRootPath>D:\syc\CMS Editor</CMSRootPath>
+        <CMSRootPath>E:\syc_cms\CMS Editor</CMSRootPath>
         <OutputPath>$(CMSRootPath)\plugins\cms.plugin.hiawms</OutputPath>
     </PropertyGroup>
 
diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs
index e67e967..38201ac 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs
@@ -192,9 +192,9 @@
         /// <returns></returns>
         [HttpPost]
         [Route("FinishTask")]
-        public async Task FinishTaskAsync(WmsTaskStatusDto input)
+        public async Task<WmsTaskDto> FinishTaskAsync(WmsTaskStatusDto input)
         {
-            await _wmsTaskAppService.FinishTaskAsync(input);
+            return await _wmsTaskAppService.FinishTaskAsync(input);
         }
 
         /// <summary>
@@ -227,10 +227,21 @@
         /// <param name="input"></param>
         /// <returns></returns>
         [HttpPost]
-        [Route("ToExecuteTask")]
+        [Route("GetExecuteTask")]
         public async Task<WmsTaskDto> GetToExecuteTaskAsync(QueryTaskTypeInput input)
         {
             return await _wmsTaskAppService.GetToExecuteTaskAsync(input);
         }
+        /// <summary>
+        /// 鏇存柊浠诲姟涓烘墽琛屼腑
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("ToExecuteTask")]
+        public async Task<WmsTaskDto> StartExecuteTaskAsync(ExcecuteTaskInput input)
+        {
+            return await _wmsTaskAppService.StartExecuteTaskAsync(input);
+        }
     } 
 } 

--
Gitblit v1.9.3