wangxinhui
2024-09-23 a3eb67538c4716aef9967f1e6301720cce095e3c
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
using System;
using System.Collections.Generic;
using WIDESEA_Common;
using WIDESEA_Common.Tools;
using WIDESEA_Entity.DomainModels;
using WIDESEA_Entity.DomainModels.Equipment;
 
namespace WIDESEA_WCS.JobsPart.Public
{
    public partial class WCSCommon
    {
        /// <summary>
        /// 生成任务
        /// </summary>
        /// <param name="station">站点信息</param>
        /// <param name="isInEq">设备上料或下料</param>
        public static void CreateTask(StationInfo station, bool isInEq, string type = "")
        {
            var have_task = freeDB.Select<dt_agvtask>()
            .Where(t => t.agv_toaddress == station.stationCode || t.agv_fromaddress == station.stationCode) .Any();
            if (!have_task)
            {
                dt_agvtask agvtask = new dt_agvtask();
                agvtask.agv_id = Guid.NewGuid();
                if (isInEq)
                {
                    agvtask.agv_fromaddress = WCSCommon.GetAddress(station.stationCode, !isInEq, type);
                    agvtask.agv_toaddress = station.stationCode;
                }
                else
                {
                    agvtask.agv_fromaddress = station.stationCode;
                    agvtask.agv_toaddress = WCSCommon.GetAddress(station.stationCode, !isInEq);
                }
                agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo();
                agvtask.agv_code = station.agvCenterName;
                agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString();
                agvtask.agv_worktype = 1;//工作类型
                agvtask.agv_materielid = type;
                agvtask.agv_qty = 1;
                agvtask.agv_createtime = DateTime.Now;
                agvtask.agv_grade = 0;//任务优先级
                agvtask.agv_userid = "WCS";
                freeDB.Add(agvtask);
                CreateTiShenJiTask(agvtask);
            }
        }
 
        /// <summary>
        /// 创建提升机任务
        /// </summary>
        /// <param name="task"></param>
        public static void CreateTiShenJiTask(dt_agvtask task)
        {
            //提升机路由
            Dictionary<string, string> router = new Dictionary<string, string>()
            {
                //一楼到二楼
                {"GDXZJ1R2" ,"GDXZJC2"},
                {"GDXZJ1R1" ,"GDXZJC1"},
                {"GDXFJ1R2" ,"GDXFJC2"},
                {"GDXFJ1R1" ,"GDXFJC1"},
                //二楼到三楼
                {"GDXZJC2" ,"GDXZJ3C2"},
                {"GDXZJC1" ,"GDXZJ3C1"},
                {"GDXFJC2" ,"GDXFJ3C2"},
                {"GDXFJC1" ,"GDXFJ3C1"},
            };
            if (router.ContainsKey(task.agv_toaddress))
            {
                dt_agvtask agvtask = new dt_agvtask();
                agvtask.agv_id = Guid.NewGuid();
                agvtask.agv_tasknum = task.agv_tasknum + "_T";
                agvtask.agv_fromaddress = task.agv_toaddress;
                agvtask.agv_toaddress = router[task.agv_toaddress];
                agvtask.agv_code = "";
                agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                agvtask.agv_tasktype = "提升机";
                agvtask.agv_worktype = 1;//工作类型
                agvtask.agv_materielid = "";
                agvtask.agv_qty = 1;
                agvtask.agv_createtime = DateTime.Now;
                agvtask.agv_grade = 0;//任务优先级
                agvtask.agv_userid = "WCS";
                freeDB.Add(agvtask);
            }
        }
    }
}