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 |  225 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 221 insertions(+), 4 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 4bfcd99..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"
@@ -1,16 +1,226 @@
-锘縰sing System;
+锘縰sing SqlSugar.Extensions;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+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锛氬彇娑�
@@ -23,10 +233,17 @@
             try
             {
                 var Tasks = BaseDal.QueryData(x => saveModel.DelKeys.Contains(x.TaskId));
-                foreach (var task in Tasks)
+                if (Tasks.Where(x => !TaskInboundTypes.Contains(x.TaskType)).Any()) throw new Exception("鍙彲鍙栨秷鍏ュ簱浠诲姟");
+                if (Tasks.Where(x => x.TaskState > TaskInStatusEnum.AGV_InFinish.ObjToInt()).Any()) throw new Exception("鏆備笉鍙彇娑堝凡涓婅緭閫佺嚎浠诲姟");
+                //var UserName = App.User?.UserName;
+                Tasks.ForEach(x =>
                 {
-
-                }
+                    x.TaskState = TaskInStatusEnum.InCancel.ObjToInt();
+                    //x.Modifier = UserName;
+                    //x.ModifyDate = DateTime.Now;
+                });
+                BaseDal.UpdateData(Tasks);
+                webResponseContent.OK();
             }
             catch (Exception ex)
             {

--
Gitblit v1.9.3