1
dengjunjie
3 天以前 fbc6fae6c793220d0b67ac603ce9bbf22837de79
ÏîÄ¿´úÂë/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_InExecuting.ObjToInt();
                        UpdateData(task);
                        StackCraneTaskCompleted(task.TaskNum);
                    }
                    AddTask_Hty(task, TaskOperateTypeEnum.ManualCompletion);
                }
                else if (TaskOutboundTypes.Contains(task.TaskType))
                {
                    if (task.TaskState < TaskOutStatusEnum.SC_OutFinish.ObjToInt())
                    {
                        task.TaskState = TaskOutStatusEnum.SC_OutExecuting.ObjToInt();
                        UpdateData(task);
                        StackCraneTaskCompleted(task.TaskNum);
                    }
                    AddTask_Hty(task, TaskOperateTypeEnum.ManualCompletion);
                }
                else if (task.TaskType == TaskRelocationTypeEnum.Relocation.ObjToInt())
                {
                    if (task.TaskState < TaskRelocationStatusEnum.SC_RelocationFinish.ObjToInt())
                    {
                        task.TaskState = TaskRelocationStatusEnum.SC_RelocationExecuting.ObjToInt();
                        UpdateData(task);
                        StackCraneTaskCompleted(task.TaskNum);
                    }
                    AddTask_Hty(task, TaskOperateTypeEnum.ManualCompletion);
                }
                else if (task.TaskType == TaskOtherTypeEnum.RelocationCar.ObjToInt())
                {
                    task.TaskState = TaskCarStatusEnum.SC_CarFinish.ObjToInt();
                    UpdateData(task);
                }
                else if (task.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt())
                {
                    task.TaskState = CarChargingTaskEnum.CarChargingSC_CarFinish.ObjToInt();
                    UpdateData(task);
                }
                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);
                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:取消