huangxiaoqiang
2 天以前 850105e8cdf0d048ef843d87520513ac77a64200
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
using HslCommunication;
using Mapster;
using Newtonsoft.Json;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_Model.BasicInfo;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_Tasks.ConveyorLineJob;
 
namespace WIDESEAWCS_Tasks
{
    public partial class CommonConveyorLineJob
    {
        public async Task HandleNewTaskAsync(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, Dt_Task task = null)
        {
            var stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == childDeviceCode && x.stationPLC == conveyorLine.DeviceCode);
 
            switch (stationManager.stationType)
            {
                case 1:
                    await RequestTask(conveyorLine, command, childDeviceCode, stationManager);
                    break;
 
                case 2:
                case 3:
                    RequestInOrOutbound(command, conveyorLine, stationManager, task);
                    break;
                default:
                    break;
            }
        }
 
        public void HandleFinishTaskAsync(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, Dt_Task task=null)
        {
            var stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == childDeviceCode && x.stationPLC == conveyorLine.DeviceCode);
 
            switch (stationManager.stationType)
            {
                case 4:
                case 5:
                    ConveyorLineInOrOutFinish(conveyorLine, command, stationManager, task);
                    break;
                case 7:
                    ConveyorLineOutFinish(conveyorLine, command, stationManager, task);
                    break;
                default:
                    break;
            }
        }
 
        private async Task RequestTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, Dt_StationManager stationManager)
        {
            var hasTask = await _taskRepository.QueryFirstAsync(x => x.SourceAddress == childDeviceCode);
            if (hasTask != null)
            {
                var log = $"【{conveyorLine._deviceName}】任务号:【{hasTask.TaskNum}】,托盘条码:【{hasTask.PalletCode}】已到达【{childDeviceCode}】输送线存在任务";
                ConsoleHelper.WriteWarningLine(log);
 
               await _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
                WriteInfo(conveyorLine.DeviceName, log);
                return;
            }
            var RGVName = string.Empty;
            if (stationManager.stationFloor == "1F")
            {
                var RGVOne = _taskRepository.QueryData(x => x.RGVName == "RGV01").ToList();
                var RGVTwo = _taskRepository.QueryData(x => x.RGVName == "RGV02").ToList();
                if (RGVOne.Count > RGVTwo.Count)
                {
                    RGVName = "RGV01";
                }
                else
                {
                    RGVName = "RGV02";
                }
            }
 
            Dt_Task task = new Dt_Task()
            {
                TaskNum = _taskRepository.GetTaskNo().Result,
                TaskType = (int)TaskInboundTypeEnum.Inbound,
                TaskState = (int)TaskInStatusEnum.InNew,
                SourceAddress = childDeviceCode,
                Dispatchertime = DateTime.Now,
                Grade = 1, // 设置默认优先级为1
                Creater = "System",
                Floor = stationManager.stationFloor,
                RGVName = stationManager.RGVName != null ? stationManager.RGVName : RGVName,
            };
            _taskRepository.AddData(task);
        }
    }
}