1
dengjunjie
2025-02-20 37ea017aad42d0682d068b65e82aa62ea9e2c1ea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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_Core.Helper;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
 
namespace WIDESEAWCS_TaskInfoService
{
    public partial class TaskService
    {
        /// <summary>
        /// 穿梭车任务完成
        /// </summary>
        /// <param name="taskNum">任务号</param>
        /// <param name="TaskTypeComplete">完成类型</param>
        /// <returns></returns>
        public WebResponseContent ShuttleCarTaskCompleted(int taskNum, short TaskTypeComplete)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                var task = GetTaskInfo(taskNum,(int)TaskCarStatusEnum.ShuttleCar_Executing);
                if (task == null) throw new Exception($"未找到任务,任务号【{taskNum}】");
                switch (TaskTypeComplete)
                {
                    case 1://入库完成
                        {
                            if (task.TaskType != (int)TaskInboundTypeEnum.Inbound) throw new Exception($"任务类型不匹配,任务号【{taskNum}】");
                            int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
                            task.TaskState = nextStatus;
                            task.ModifyDate = DateTime.Now;
                            task.Modifier = "System";
                            content = AddTask_Hty(task, TaskOperateTypeEnum.AutoComplete);
                            _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"穿梭车入库完成");
                        }
                        break;
                    case 2://出库完成
                        {
                            int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
                            task.TaskState = nextStatus;
                            task.ModifyDate = DateTime.Now;
                            task.Modifier = "System";
                            content = UpdateData(task);
                        }
                        break;
                    case 10://充电完成
                        content.OK();
                        break;
                    case 13://A侧回零完成
                    case 14://B侧回零完成
                        {
                            if (task.TaskType != (int)TaskOtherTypeEnum.RelocationCar) throw new Exception($"任务类型不匹配,任务号【{taskNum}】");
                            task.TaskState = (int)TaskCarStatusEnum.ShuttleCar_Finish;
                            content = UpdateData(task);
                        }
                        break;
                    default:
                        break;
                }
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
 
        /// <summary>
        /// 添加历史任务
        /// </summary>
        /// <param name="task"></param>
        /// <param name="operateType"></param>
        /// <returns></returns>
        public WebResponseContent AddTask_Hty(Dt_Task task, TaskOperateTypeEnum operateType)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Db.Ado.BeginTran();
                content = _taskHtyService.AddTask_Hty(task, operateType);//添加历史任务删除任务
                if (!content.Status) throw new Exception(content.Message);
                content = DeleteData(task);
                if (!content.Status) throw new Exception(content.Message);
                Db.Ado.CommitTran();
            }
            catch (Exception ex)
            {
                Db.Ado.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
        }
 
        /// <summary>
        /// 查询穿梭车出入库任务
        /// </summary>
        /// <param name="deviceNo">穿梭车编号</param>
        /// <param name="currentAddress">当前位置</param>
        /// <returns></returns>
        public Dt_Task QueryShuttleCarTask(string deviceNo, string currentAddress = "")
        {
            if (string.IsNullOrEmpty(currentAddress))
                return BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
            else
                return BaseDal.QueryFirst(x => x.ShuttleCarCode == deviceNo && x.CurrentAddress == currentAddress && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
        }
    }
}