Tjiny
2025-05-19 4c8b2eea64bcd0ae14602a2a6e993b2d04c80ee0
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
using System;
using HH.WCS.Mobox3.RiDong.dispatch;
using HH.WCS.Mobox3.RiDong.models;
 
namespace HH.WCS.Mobox3.RiDong.generalMethod;
 
/// <summary>
/// agv方法
/// </summary>
public static class AGVMethod
{
    /// <summary>
    /// 安全请求
    /// </summary>
    /// <param name="task">当前任务</param>
    /// <param name="state">状态值</param>
    public static void OperateReq(Task task, int state)
    {
        // 入库
        if (task.N_TYPE == 1 || task.N_TYPE == 3)
        {
            // 读取中间表数据是否为1
            var conveyorLinesInfo = AdoSqlMethod<ConveyorLinesInfo>.QueryFirst(p => p.LOCATION == task.S_START_LOC);
 
            // 信息交互
            if (state == 1101)
            {
                if (conveyorLinesInfo != null)
                {
                    // 判断中间表入库信号是否为2
                    if (conveyorLinesInfo.LOADSTATE == 2)
                    {
                        conveyorLinesInfo.LOADSTATE = 3;
                        AdoSqlMethod<ConveyorLinesInfo>.UpdateFirst(conveyorLinesInfo, p => new { p.LOADSTATE });
                    }
                    // 可取
                    else if (conveyorLinesInfo.LOADSTATE == 4)
                    {
                        // 调用车取货
                        NDCHelper.ChangeParam(task.S_CODE, 1, 6);
                    }
                }
            }
            else if (state == 1102)
            {
                // 取货完成,修改当前线体为5
                conveyorLinesInfo.LOADSTATE = 5;
                AdoSqlMethod<ConveyorLinesInfo>.UpdateFirst(conveyorLinesInfo, p => new { p.LOADSTATE });
            }
        }
        // 出库
        else if (task.N_TYPE == 2 || task.N_TYPE == 4 || task.N_TYPE == 5 || task.N_TYPE == 7)
        {
            // 读取中间表数据
            var conveyorLinesInfo = AdoSqlMethod<ConveyorLinesInfo>.QueryFirst(p => p.LOCATION == task.S_END_LOC);
 
            if (state == 1103)
            {
                // 表示申请放货
                if (conveyorLinesInfo.UNLOADSTATE == 0)
                {
                    conveyorLinesInfo.UNLOADSTATE = 1;
                    AdoSqlMethod<ConveyorLinesInfo>.UpdateFirst(conveyorLinesInfo, p => new { p.UNLOADSTATE });
                }
                // 输送线允许放货
                else if (conveyorLinesInfo.UNLOADSTATE == 2)
                {
                    // 让agv放货
                    NDCHelper.ChangeParam(task.S_CODE, 1, 6);
                }
            }
            else if (state == 1104)
            {
                // 修改任务
                var pipeTask = AdoSqlMethod<Task>.QueryFirst(p => p.N_B_STATE == 0 && p.S_OP_CODE == task.S_OP_CODE && p.N_SCHEDULE_TYPE == 1);
 
                if (pipeTask != null)
                {
                    // 修改任务为推送状态
                    pipeTask.N_B_STATE = 1;
                    pipeTask.S_B_STATE = "已推送";
                    pipeTask.T_START_TIME = DateTime.Now;
                    AdoSqlMethod<Task>.UpdateFirst(pipeTask, p => new { p.N_B_STATE, p.S_B_STATE, p.T_START_TIME });
 
                    conveyorLinesInfo.UNLOADSTATE = 3;
                    conveyorLinesInfo.BARCODE = pipeTask.S_CNTR_CODE;
                    AdoSqlMethod<ConveyorLinesInfo>.UpdateFirst(conveyorLinesInfo, p => new { p.UNLOADSTATE, p.BARCODE });
                }
            }
        }
        else if (task.N_TYPE == 6)
        {
            if (state == 1103)
            {
                // 让agv放货
                NDCHelper.ChangeParam(task.S_CODE, 1, 6);
            }
        }
    }
}