From c362218b8ef0af6402d3715fbed040ac1cbe0433 Mon Sep 17 00:00:00 2001
From: duyongjia <adu_555@163.com>
Date: 星期五, 29 十一月 2024 14:32:18 +0800
Subject: [PATCH] 最新上传

---
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs |  233 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 209 insertions(+), 24 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
index dec3bb8..dd4bf5a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -21,6 +21,7 @@
 using SqlSugar;
 using SqlSugar.Extensions;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Diagnostics.CodeAnalysis;
@@ -705,14 +706,123 @@
         }
 
         /// <summary>
-        /// 浠诲姟寮哄埗瀹屾垚
+        /// 浠诲姟寮哄埗瀹屾垚 鍫嗗灈鏈哄疄闄呭凡瀹屾垚浠诲姟锛學CS鏈敹鍒板畬鎴愪俊鍙锋垨鍏朵粬鏈煡鍘熷洜瀵艰嚧WCS浠诲姟鏈畬鎴愶紝鍙互鎵ц璇ユ柟娉曞己鍒跺畬鎴愪换鍔�
         /// </summary>
         /// <param name="taskNum"></param>
         /// <returns></returns>
         public WebResponseContent ForceCompleteTask(int taskNum)
         {
-            return null;
-        
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                bool isBack = false;
+                //1锛屽厛鏌ヨ浠诲姟锛屾牴鎹笉鍚岀殑浠诲姟绫诲瀷鍋氫换鍔″己鍒跺畬鎴愭搷浣�
+                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
+                if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
+
+                Dt_LocationInfo locationsrc = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress.ToString());
+                Dt_LocationInfo locationdsc = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress.ToString());
+                if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)
+                {
+                    if (task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
+                    {
+                        task.TaskState = (int)TaskInStatusEnum.SC_InFinish;
+                        //闇�瑕佸皢鐩爣鍦板潃鏀逛负鏈夎揣鐘舵��
+                        locationdsc.LocationStatus = (int)LocationStatusEnum.InStock;
+
+                        //鏇存柊鐘舵�佷负浠诲姟瀹屾垚
+                        UpdateTaskStatus(task.TaskId, task.TaskState);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�");
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍏ュ簱浠诲姟瀹屾垚");
+                        //鏇存柊璐т綅
+                        _locationInfoRepository.UpdateData(locationdsc);
+                        isBack = true;
+
+                    }
+                    else
+                    {
+                        return content = WebResponseContent.Instance.Error("璇ヤ换鍔$洰鍓嶇姸鎬侊紝涓嶅厑璁″己鍒跺畬鎴愶紒");
+                    }
+
+                }
+                else
+                {
+                    if (task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
+                    {
+                      
+                        if (task.TaskType == (int)TaskOutboundTypeEnum.OutInventory || task.TaskType == (int)TaskOutboundTypeEnum.OutPick)//寮傚父鍑哄簱 绌鸿溅鍑哄簱
+                        {
+                            task.TaskState = (int)TaskOutStatusEnum.OutFinish;
+                            //婧愬湴鍧�鏇存柊涓虹┖闂�
+                            locationsrc.LocationStatus = (int)LocationStatusEnum.Free;
+
+                            //鏇存柊鐘舵�佷负浠诲姟瀹屾垚
+                            UpdateTaskStatus(task.TaskId, task.TaskState);
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍑哄簱浠诲姟瀹屾垚");
+                            //鏇存柊璐т綅
+                            _locationInfoRepository.UpdateData(locationsrc);
+                            isBack = true;
+                        }
+                        else if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation)//绉诲簱
+                        {
+                            task.TaskState = (int)TaskOutStatusEnum.OutFinish;
+                            //婧愬湴鍧�鏇存柊涓虹┖闂�
+                            locationsrc.LocationStatus = (int)LocationStatusEnum.Free;
+                            //鐩爣鍦板潃鏇存柊涓烘湁璐�
+                            locationdsc.LocationStatus = (int)LocationStatusEnum.InStock;
+
+
+                            //鏇存柊鐘舵�佷负浠诲姟瀹屾垚
+                            UpdateTaskStatus(task.TaskId, task.TaskState);
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍑哄簱浠诲姟瀹屾垚");
+                            //鏇存柊璐т綅
+                            _locationInfoRepository.UpdateData(locationsrc);
+                            _locationInfoRepository.UpdateData(locationdsc);
+                            isBack = true;
+
+
+                        }
+                        else
+                        {
+                            return WebResponseContent.Instance.Error($"涓婃枡浠诲姟涓嶅厑璁″己鍒跺畬鎴愶紒");
+                        }
+                    }
+                    else
+                    {
+                        return WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍏佽寮哄埗瀹屾垚锛�");
+                    }
+                }
+
+                //浠诲姟寮哄埗瀹屾垚鍥炶皟MES
+                if (isBack)
+                {
+                    
+                    if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)//鍏ュ簱鏃跺洖浼犻渶浼犳柊浠诲姟鍙�
+                    {
+                        task.TaskNum =int.Parse(task.NextAddress);
+                    }
+                    MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 };
+                    MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                    if (res != null && res.code != 0)
+                    {
+                        ServiceLogger.WriteDebug("ForceCompleteTask", $"浠诲姟寮哄埗瀹屾垚鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                        content = WebResponseContent.Instance.Error($"浠诲姟寮哄埗瀹屾垚鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                    }
+                    else
+                    {
+                        ServiceLogger.WriteDebug("ForceCompleteTask", $"浠诲姟寮哄埗瀹屾垚鍚庡洖浼燤ES鎴愬姛锛�,浠诲姟鍙�:銆恵taskNum}銆�");
+                        content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚鍚庡洖浼燤ES鎴愬姛锛�,浠诲姟鍙�:銆恵taskNum}銆�");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+
         }
 
         /// <summary>
@@ -720,51 +830,112 @@
         /// </summary>
         /// <param name="taskid"></param>
         /// <returns></returns>
-        public WebResponseContent CancelTask(int taskid)
+        public WebResponseContent CancelTask(int taskNum)
         {
             WebResponseContent content = new WebResponseContent();
             try
             {
-                //鍏堟煡璇换鍔★紝鏍规嵁涓嶅悓鐨勪换鍔$被鍨嬪仛浠诲姟鍙栨秷鎿嶄綔
-                bool isAllow = false;
-                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskId == taskid);
-                if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟id:銆恵taskid}銆�");
+                //1锛屽厛鏌ヨ浠诲姟锛屾牴鎹笉鍚岀殑浠诲姟绫诲瀷鍋氫换鍔″彇娑堟搷浣�
+                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
+                if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
 
+                Dt_LocationInfo locationsrc = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress.ToString());
+                Dt_LocationInfo locationdsc = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress.ToString());
+                bool isBack = false;
                 //濡傛灉鏄叆搴撳垎鑷姩鍜屾墜鍔ㄤ袱绉嶆儏鍐靛鐞�
                 if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)
                 {
                     if (task.WMSId == 0 && task.TaskState == (int)TaskInStatusEnum.InNew)//鑷姩鍏ュ簱锛�1001-AGV璇锋眰鏄惁鍏佽杩涘叆锛屼换鍔$姸鎬佷负鈥滄柊寤哄叆搴撲换鍔�200鈥濅箣鍓嶅彲浠ュ彇娑�
                     {
-                        isAllow = true;
                         task.TaskState = (int)TaskInStatusEnum.InCancel;
+                        //闇�瑕佸皢鐩爣鍦板潃鎭㈠涓虹┖闂茬姸鎬�
+                        locationdsc.LocationStatus = (int)LocationStatusEnum.Free;
+                        //鏇存柊鐘舵�佷负浠诲姟鍙栨秷
+                        UpdateTaskStatus(task.TaskId, task.TaskState);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍏ュ簱浠诲姟鍙栨秷");
+                        _locationInfoRepository.UpdateData(locationdsc);
+                        isBack = true;
                     }
                     else if (task.WMSId == 1 && task.TaskState == (int)TaskInStatusEnum.AGV_InExecuting)//鎵嬪姩鍏ュ簱锛�3001-AGV鏀捐揣瀹屾垚锛屼换鍔$姸鎬佷负鈥淎GV鍏ュ簱鎵ц涓�210鈥濅箣鍓嶅彲浠ュ彇娑�
                     {
-                        isAllow = true;
                         task.TaskState = (int)TaskInStatusEnum.InCancel;
+                        //闇�瑕佸皢鐩爣鍦板潃鎭㈠绌洪棽鐘舵��
+                        locationdsc.LocationStatus = (int)LocationStatusEnum.Free;
+                        //鏇存柊鐘舵�佷负浠诲姟鍙栨秷
+                        UpdateTaskStatus(task.TaskId, task.TaskState);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍏ュ簱浠诲姟鍙栨秷");
+                        _locationInfoRepository.UpdateData(locationdsc);
+                        isBack = true;
+                    }
+                    else
+                    {
+                        return WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍏佽鍙栨秷锛�");
                     }
                 }
                 else//鍏朵粬浠诲姟锛屼换鍔$姸鎬佲�滄柊寤哄嚭搴撲换鍔♀�濅箣鍓嶏紝鎵嶅彲浠ュ彇娑�
                 {
                     if (task.TaskState == (int)TaskOutStatusEnum.OutNew)
+                    {  
+                        if(task.TaskType == (int)TaskOutboundTypeEnum.OutInventory|| task.TaskType == (int)TaskOutboundTypeEnum.OutPick)//寮傚父鍑哄簱 绌鸿溅鍑哄簱
+                        {
+                            task.TaskState = (int)TaskOutStatusEnum.OutCancel;
+                            //婧愬湴鍧�鎭㈠鍒版湁璐�
+                            locationsrc.LocationStatus = (int)LocationStatusEnum.InStock;
+
+                            //鏇存柊鐘舵�佷负浠诲姟鍙栨秷
+                            UpdateTaskStatus(task.TaskId, task.TaskState);
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍑哄簱浠诲姟鍙栨秷");
+                            _locationInfoRepository.UpdateData(locationsrc);
+                            isBack = true;
+                        }
+                        else if(task.TaskType == (int)TaskRelocationTypeEnum.Relocation)//绉诲簱
+                        {
+                            task.TaskState = (int)TaskOutStatusEnum.OutCancel;
+                            //婧愬湴鍧�鎭㈠鍒版湁璐�
+                            locationsrc.LocationStatus = (int)LocationStatusEnum.InStock;
+                            //闇�瑕佸皢鐩爣鍦板潃鎭㈠绌洪棽鐘舵��
+                            locationdsc.LocationStatus = (int)LocationStatusEnum.Free;
+                            //鏇存柊鐘舵�佷负浠诲姟鍙栨秷
+                            UpdateTaskStatus(task.TaskId, task.TaskState);
+                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍑哄簱浠诲姟鍙栨秷");
+                            _locationInfoRepository.UpdateData(locationsrc);
+                            _locationInfoRepository.UpdateData(locationdsc);
+                            isBack = true;
+                        }
+                        else
+                        {
+                            return WebResponseContent.Instance.Error($"涓婃枡浠诲姟涓嶅厑璁″彇娑堬紒");
+                        }
+                    }
+                    else
                     {
-                        isAllow = true;
-                        task.TaskState = (int)TaskOutStatusEnum.OutCancel;
+                        return WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍏佽鍙栨秷锛�");
                     }
                 }
 
-                if (isAllow)//濡傛灉鍏佽鍙栨秷
+
+
+                //浠诲姟鍙栨秷鍥炶皟MES
+                if (isBack)
                 {
-                    //鏇存柊鐘舵�佷负浠诲姟鍙栨秷
-                    UpdateTaskStatus(task.TaskId, task.TaskState);
-                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鎵嬪姩浠诲姟鍙栨秷");
-                    content = WebResponseContent.Instance.OK("鍙栨秷鎴愬姛锛�");
-                    //鍚屾鍥炰紶WMS
+                    MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 3 };
+                    MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                    if (res != null && res.code != 0)
+                    {
+                        ServiceLogger.WriteDebug("ForceCompleteTask", $"浠诲姟鍙栨秷鍥炰紶MES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                        content = WebResponseContent.Instance.Error($"浠诲姟鍙栨秷鍥炰紶MES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                    }
+                    else
+                    {
+                        ServiceLogger.WriteDebug("ForceCompleteTask", $"浠诲姟鍙栨秷鍥炰紶MES鎴愬姛锛�,浠诲姟鍙�:銆恵taskNum}銆�");
+                        content = WebResponseContent.Instance.Error($"浠诲姟鍙栨秷鍥炰紶MES鎴愬姛锛�,浠诲姟鍙�:銆恵taskNum}銆�");
+                    }
                 }
                 else
                 {
-                    content = WebResponseContent.Instance.OK("璇ヤ换鍔$洰鍓嶇姸鎬佷笉鍏呰鍙栨秷锛�");
+
                 }
+
             }
             catch (Exception ex)
             {
@@ -943,12 +1114,26 @@
                         _unitOfWorkManage.CommitTran();
                         //鍑哄簱瀹屾垚锛屽洖浼燱MS
                         //鍥炰紶鍒癢MS
-                        MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 };
-                        MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
-                        if (res != null && res.code != 0)
+                        if (task.TaskType == (int)TaskOutboundTypeEnum.OutPick)
                         {
-                            ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
-                            content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                            MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 };
+                            MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                            if (res != null && res.code != 0)
+                            {
+                                ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚绌鸿溅鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                                content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚绌鸿溅鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                            }
+
+                        }
+                        else
+                        {
+                            MESSendCMD sendcmd = new MESSendCMD { cmd = 201, task_id = task.TaskNum, status = 6 };
+                            MESResponse res = ApiInvoke.SendTaskCMD(sendcmd);
+                            if (res != null && res.code != 0)
+                            {
+                                ServiceLogger.WriteDebug("StackCraneTaskCompleted", $"澶у爢鍨涙満瀹屾垚寮傚父鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                                content = WebResponseContent.Instance.Error($"澶у爢鍨涙満瀹屾垚寮傚父鍑哄簱浠诲姟鍚庡洖浼燤ES澶辫触锛�,浠诲姟鍙�:銆恵taskNum}銆�,澶辫触淇℃伅:銆恵res.message}銆�");
+                            }
                         }
 
                     }

--
Gitblit v1.9.3