From 441b6f8d257a01b2998253ef0515a201777d7e68 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期五, 04 七月 2025 14:06:49 +0800
Subject: [PATCH] 修改入库、移库、出库逻辑

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_Manual.cs |  208 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 208 insertions(+), 0 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_Manual.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_Manual.cs"
index 8010356..10adbed 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_Manual.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_Manual.cs"
@@ -7,12 +7,220 @@
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core;
 using WIDESEAWCS_DTO.TaskInfo;
+using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
 
 namespace WIDESEAWCS_TaskInfoService
 {
     public partial class TaskService
     {
+        public WebResponseContent ManualTask(int TaskId, int TaskType)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var Task = BaseDal.QueryFirst(x => x.TaskId == TaskId);
+                if (Task == null) throw new Exception("鏈壘鍒颁换鍔′俊鎭�");
+                switch ((ManualTaskEnum)TaskType)
+                {
+                    case ManualTaskEnum.SCTaskSend:
+                        content = SCTaskSend(Task);
+                        break;
+                    case ManualTaskEnum.SCTaskCompleted:
+                        content = SCTaskCompleted(Task);
+                        break;
+                    case ManualTaskEnum.Completed:
+                        content = Completed(Task);
+                        break;
+                    case ManualTaskEnum.Cancel:
+                        content = Cancel(Task);
+                        break;
+                    default:
+                        break;
+                }
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 閲嶆柊涓嬪彂鍫嗗灈鏈轰换鍔�
+        /// </summary>
+        /// <param name="task"></param>
+        /// <returns></returns>
+        public WebResponseContent SCTaskSend(Dt_Task task)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                if (TaskInboundTypes.Contains(task.TaskType))
+                {
+                    if (task.TaskState != TaskInStatusEnum.SC_InExecuting.ObjToInt())
+                        throw new Exception("浠诲姟鐘舵�佷笉绛変簬鍫嗗灈鏈哄叆搴撴墽琛屼腑锛屼笉鍙噸鏂颁笅鍙�");
+                    task.TaskState = TaskInStatusEnum.Line_InFinish.ObjToInt();
+                    content = UpdateData(task);
+                }
+                else if (TaskOutboundTypes.Contains(task.TaskType))
+                {
+                    if (task.TaskState != TaskOutStatusEnum.SC_OutExecuting.ObjToInt())
+                        throw new Exception("浠诲姟鐘舵�佷笉绛変簬鍫嗗灈鏈哄嚭搴撴墽琛屼腑锛屼笉鍙噸鏂颁笅鍙�");
+                    task.TaskState = TaskOutStatusEnum.Car_OutFinish.ObjToInt();
+                    content = UpdateData(task);
+                }
+                else if (task.TaskType == TaskRelocationTypeEnum.Relocation.ObjToInt())
+                {
+                    if (task.TaskState != TaskRelocationStatusEnum.SC_RelocationExecuting.ObjToInt())
+                        throw new Exception("浠诲姟鐘舵�佷笉绛変簬鍫嗗灈鏈虹Щ搴撴墽琛屼腑锛屼笉鍙噸鏂颁笅鍙�");
+                    task.TaskState = TaskRelocationStatusEnum.CarSource_Finish.ObjToInt();
+                    content = UpdateData(task);
+
+                }
+                else if (task.TaskType == TaskOtherTypeEnum.RelocationCar.ObjToInt())
+                {
+                    if (task.TaskState != TaskCarStatusEnum.SC_CarExecuting.ObjToInt())
+                        throw new Exception("浠诲姟鐘舵�佷笉绛変簬鍫嗗灈鏈虹Щ杞︽墽琛屼腑锛屼笉鍙噸鏂颁笅鍙�");
+                    task.TaskState = TaskCarStatusEnum.ShuttleCar_Finish.ObjToInt();
+                    content = UpdateData(task);
+                }
+                else if (task.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt())
+                {
+                    if (task.TaskState != CarChargingTaskEnum.CarChargingSC_CarExecuting.ObjToInt())
+                        throw new Exception("浠诲姟鐘舵�佷笉绛変簬鍫嗗灈鏈虹Щ杞︽墽琛屼腑锛屼笉鍙噸鏂颁笅鍙�");
+                    task.TaskState = CarChargingTaskEnum.CarCharging_Finish.ObjToInt();
+                    content = UpdateData(task);
+                }
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 瀹屾垚鍫嗗灈鏈轰换鍔�
+        /// </summary>
+        /// <param name="task"></param>
+        /// <returns></returns>
+        public WebResponseContent SCTaskCompleted(Dt_Task task)
+        {
+            try
+            {
+                if (TaskInboundTypes.Contains(task.TaskType))
+                {
+                    if (task.TaskState != TaskInStatusEnum.SC_InExecuting.ObjToInt())
+                        throw new Exception("浠诲姟鐘舵�佷笉绛変簬鍫嗗灈鏈哄叆搴撴墽琛屼腑");
+                }
+                else if (TaskOutboundTypes.Contains(task.TaskType))
+                {
+                    if (task.TaskState != TaskOutStatusEnum.SC_OutExecuting.ObjToInt())
+                        throw new Exception("浠诲姟鐘舵�佷笉绛変簬鍫嗗灈鏈哄嚭搴撴墽琛屼腑");
+                }
+                else if (task.TaskType == TaskRelocationTypeEnum.Relocation.ObjToInt())
+                {
+                    if (task.TaskState != TaskRelocationStatusEnum.SC_RelocationExecuting.ObjToInt())
+                        throw new Exception("浠诲姟鐘舵�佷笉绛変簬鍫嗗灈鏈虹Щ搴撴墽琛屼腑");
+                }
+                else if (task.TaskType == TaskOtherTypeEnum.RelocationCar.ObjToInt())
+                {
+                    if (task.TaskState != TaskCarStatusEnum.SC_CarExecuting.ObjToInt())
+                        throw new Exception("浠诲姟鐘舵�佷笉绛変簬鍫嗗灈鏈虹Щ杞︽墽琛屼腑");
+                }
+                else if (task.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt())
+                {
+                    if (task.TaskState != CarChargingTaskEnum.CarChargingSC_CarExecuting.ObjToInt())
+                        throw new Exception("浠诲姟鐘舵�佷笉绛変簬鍫嗗灈鏈虹Щ杞︽墽琛屼腑");
+                }
+                return StackCraneTaskCompleted(task.TaskNum);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+        /// <summary>
+        /// 瀹屾垚浠诲姟
+        /// </summary>
+        /// <param name="task"></param>
+        /// <returns></returns>
+        public WebResponseContent Completed(Dt_Task task)
+        {
+            try
+            {
+                if (TaskInboundTypes.Contains(task.TaskType))
+                {
+                    if (task.TaskState < TaskInStatusEnum.SC_InFinish.ObjToInt())
+                    {
+                        task.TaskState = TaskInStatusEnum.SC_InFinish.ObjToInt();
+                        ToWMSCompletedTask(task);
+                    }
+                    AddTask_Hty(task, TaskOperateTypeEnum.ManualCompletion);
+                }
+                else if (TaskOutboundTypes.Contains(task.TaskType))
+                {
+                    if (task.TaskState < TaskOutStatusEnum.SC_OutFinish.ObjToInt())
+                    {
+                        task.TaskState = TaskOutStatusEnum.SC_OutFinish.ObjToInt();
+                        ToWMSCompletedTask(task);
+                    }
+                    AddTask_Hty(task, TaskOperateTypeEnum.ManualCompletion);
+                }
+                else if (task.TaskType == TaskRelocationTypeEnum.Relocation.ObjToInt())
+                {
+                    if (task.TaskState < TaskRelocationStatusEnum.SC_RelocationFinish.ObjToInt())
+                    {
+                        task.TaskState = TaskRelocationStatusEnum.SC_RelocationFinish.ObjToInt();
+                        ToWMSCompletedTask(task);
+                    }
+                    AddTask_Hty(task, TaskOperateTypeEnum.ManualCompletion);
+                }
+                else if (task.TaskType == TaskOtherTypeEnum.RelocationCar.ObjToInt())
+                {
+                    task.TaskState = TaskCarStatusEnum.RelocationCarFinish.ObjToInt();
+                    AddTask_Hty(task, TaskOperateTypeEnum.ManualCompletion);
+                }
+                else if (task.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt())
+                {
+                    task.TaskState = CarChargingTaskEnum.CarChargingFinish.ObjToInt();
+                    AddTask_Hty(task, TaskOperateTypeEnum.ManualCompletion);
+                }
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+        /// <summary>
+        /// 鍙栨秷浠诲姟
+        /// </summary>
+        /// <param name="task"></param>
+        /// <returns></returns>
+        public WebResponseContent Cancel(Dt_Task task)
+        {
+            try
+            {
+                if (task.TaskType == TaskOtherTypeEnum.RelocationCar.ObjToInt() || task.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt())
+                {
+                    AddTask_Hty(task, TaskOperateTypeEnum.ManualDeletion);
+                    return WebResponseContent.Instance.OK();
+                }
+                if (!TaskInboundTypes.Contains(task.TaskType))
+                    throw new Exception("鏃犳潈闄�");
+                if (task.TaskState > TaskInStatusEnum.Line_InExecuting.ObjToInt() && !string.IsNullOrEmpty(task.TargetAddress))
+                    throw new Exception("宸插垎閰嶇洰鏍囧湴鍧�,涓嶅彲鍙栨秷");
+                task.TaskState = TaskInStatusEnum.InCancel.ObjToInt();
+                BaseDal.UpdateData(task);
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
         /// <summary>
         /// 浜哄伐鎿嶄綔浠诲姟
         /// 1锛氬畬鎴愶紱2锛氬彇娑�

--
Gitblit v1.9.3