dengjunjie
2024-11-14 c827fe7b0c5b3b444d76ba0d96a2649c764630dd
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
114
115
using HslCommunication;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common.ShuttleCarEnum;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob.DTO;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_Core;
 
namespace WIDESEAWCS_Tasks
{
    partial class CommonShuttleCarJob
    {
        /// <summary>
        /// 根据任务状态、类型获取任务
        /// </summary>
        /// <param name="TaskState"></param>
        /// <param name="TaskType"></param>
        /// <returns></returns>
        private Dt_Task GetTask(int TaskState, int TaskType)
        {
            return _taskService.GetTaskState(TaskState, TaskType);
        }
        /// <summary>
        /// 根据穿梭车编号获取穿梭车信息
        /// </summary>
        /// <param name="ShuttleCarCode"></param>
        /// <returns></returns>
        public Dt_ShuttleCar QueryCode(string ShuttleCarCode)
        {
            return _shuttleCarService.QueryCode(ShuttleCarCode);
        }
 
        ShuttleCarTaskType GetCarTaskType(string remark) => remark switch
        {
            "Charging" => ShuttleCarTaskType.Charging,
            "ExitCharge" => ShuttleCarTaskType.ExitCharge,
        };
 
        ShuttleCarTaskType GetCarTaskType(int TaskType, short Direction)
        {
            ShuttleCarTaskType taskType = new ShuttleCarTaskType();
            switch (TaskType)
            {
                case (int)TaskInboundTypeEnum.Inbound:
                    taskType = ShuttleCarTaskType.In;
                    break;
                case (int)TaskOutboundTypeEnum.Outbound:
                    taskType = ShuttleCarTaskType.Out;
                    break;
                case (int)TaskOtherTypeEnum.RelocationCar:
                    taskType = Direction == 1 ? ShuttleCarTaskType.ZeroA : ShuttleCarTaskType.ZeroB;
                    break;
                default:
                    break;
            }
            return taskType;
        }
        /// <summary>
        /// 获取任务状态
        /// </summary>
        /// <param name="TaskType"></param>
        /// <returns></returns>
        int GetTaskState(int TaskType)
        {
            int state = 0;
            switch (TaskType)
            {
                case (int)TaskInboundTypeEnum.Inbound:
                    state = (int)TaskInStatusEnum.Car_InExecuting;
                    break;
                case (int)TaskOutboundTypeEnum.Outbound:
                    state = (int)TaskOutStatusEnum.Car_OutExecuting;
                    break;
                case (int)TaskOtherTypeEnum.RelocationCar:
                    state = (int)TaskCarStatusEnum.ShuttleCar_Executing;
                    break;
                default:
                    break;
            }
            return state;
        }
        /// <summary>
        /// 读取穿梭车信息
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="shuttleCar"></param>
        /// <param name="deviceChildCode"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public T ReadCustomer<T>(ShuttleCar shuttleCar, string deviceChildCode) where T : IDataTransfer, new()
        {
            string deviceChildCode2 = deviceChildCode;
            if (!shuttleCar.IsConnected)
            {
                throw new Exception("通讯连接错误,请检查网络");
            }
 
            DeviceProDTO? deviceProDTO = (from x in shuttleCar.DeviceProDTOs
                                          where x.DeviceProParamType == "ReadDeviceCommand" && x.DeviceChildCode == deviceChildCode2
                                          orderby x.DeviceProOffset
                                          select x).FirstOrDefault();
            if (deviceProDTO == null)
            {
                throw new Exception("未找到协议信息");
            }
 
            return shuttleCar.Communicator.ReadCustomer<T>(deviceProDTO.DeviceProAddress);
        }
    }
}