分支自 SuZhouGuanHong/TaiYuanTaiZhong

dengjunjie
2024-04-01 19c66ba052a7fb26c4d27deaa75ae46479eee342
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
using Confluent.Kafka;
using Newtonsoft.Json;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using WIDESEA_Comm.LogInfo;
using WIDESEA_Comm.MES_Info;
using WIDESEA_Comm.MES_Info.Request;
using WIDESEA_Common;
using WIDESEA_Core.FreeDB;
using WIDESEA_Entity.DomainModels;
using WIDESEA_Entity.ToAGV;
using static WIDESEA_Comm.MES_Info.BasicSN;
 
namespace WIDESEA_WMS.Common.AGVTask
{
    public class HandleTask_Mes
    {
        static FreeDB FreeDB = new FreeDB();
        /// <summary>
        /// 向MES反馈出入库信息
        /// </summary>
        /// <param name="task"></param>
        /// <exception cref="Exception"></exception>
        public static MES_Response UploadMESInfo(dt_agvtask task)
        {
            object obj = new object();  //上传MES数据
            string mesData = "";//返回数据
            string ActionName = "";  //调用MES方法名
            string name = "";
            MES_Response requestMes = new MES_Response();
            try
            {
                List<detail> list = new List<detail>(); //车轮信息
                if (task == null)
                {
                    throw new Exception("无任务数据");
                }
 
                if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() /*|| task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceOutbound.ToString()*/|| task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString())
                {
                    foreach (var item in task.bindSN.Split(","))
                    {
                        detail detail = new detail();
                        detail.sn = item;
                        list.Add(detail);
                    }
                    agvInWarehousePara outWarehousePara = new agvInWarehousePara()
                    {
                        JobID = task.jobID,
                        zoneID = task.agv_fromaddress,
                        processCode = task.agv_worktype.ToString(),
                        details = list,
                        layerNo = 1,
                        stackID = "1",
                        warehouseName = "Agv库",
                    };
                    obj = outWarehousePara;
                    ActionName = "agvOutWarehouse";//AGV->MES车轮出库
                    name = "AGV同步MES车轮出库";
                }
                else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString() /*|| task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceInbound.ToString()*/)
                {
                    foreach (var item in task.bindSN.Split(","))
                    {
                        detail detail = new detail();
                        detail.sn = item;
                        list.Add(detail);
                    }
                    agvInWarehousePara inWarehousePara = new agvInWarehousePara()
                    {
                        JobID = task.jobID,
                        zoneID = task.agv_toaddress,
                        processCode = task.agv_worktype.ToString(),
                        details = list,
                        layerNo = 1,
                        stackID = "1",
                        warehouseName = "Agv库",
                    };
                    obj = inWarehousePara;
                    ActionName = "agvInWarehouse";//AGV->MES车轮入库
                    name = "AGV同步MES车轮入库";
                }
                //else if (task.agv_tasktype == "Transfer")  //移库区分  库内移库
                else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Carry.ToString())  //移库区分  库内移库
                {
                    foreach (var item in task.bindSN.Split(","))
                    {
                        detail detail = new detail();
                        detail.sn = item;
                        list.Add(detail);
                    }
                    agvMoveWarehousePara moveWarehousePara = new agvMoveWarehousePara()
                    {
                        fromZoneID = task.agv_fromaddress,
                        toZoneID = task.agv_toaddress,
                        details = list,
                        fromLayerNo = "1",
                        fromStackID = "1",
                        fromWarehouseName = "Agv库",
                        toLayerNo = "1",
                        toStackID = "1",
                        toWarehouseName = "Agv库",
                    };
                    obj = moveWarehousePara;
                    ActionName = "agvMoveWarehouse";//AGV->MES车轮移库
                    name = "AGV同步MES车轮AB库移库";
                }
                //else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString())// 外协移库
                //{
                //    var mes_head = FreeDB.Select<dt_mes_head>().Where(x => x.jobID == task.jobID).First();
                //    agvTransferListPara agvTransferListPara = new agvTransferListPara()
                //    {
                //        transferListID = task.agv_tasknum,
                //        materialCode = mes_head.materialCode,
                //        details = list,
                //        drawingNoVer = mes_head.drawingNoVer,
                //        fromWarehouse = "AGV库",
                //        toWarehouse = "毛轮库",
                //        Operator = task.agv_userid,
                //        updateTime = task.agv_createtime.ToString(),
                //    };
                //    obj = agvTransferListPara;
                //    ActionName = "agvTransferList";
                //    name = "AGV同步MES车轮移库AB库->BC库";
                //}
                else
                {
                    requestMes.code = "200";
                    requestMes.Type = "success";
                    return requestMes;
                }
 
                var postJson = JsonConvert.SerializeObject(obj);
                mesData = Request.RequestData(postJson, MESAPIAddress.IPAddress_MES + ActionName);
                if (mesData.Contains("连接尝试失败"))
                    throw new Exception(mesData);
                requestMes = JsonConvert.DeserializeObject<MES_Response>(mesData);
 
                if (requestMes.code == "200" && requestMes.Type == "success")
                {
                    //日志记录上传数据成功
                    WriteWMSLog.LogAdd(task.agv_tasknum, "成功", "MES", "WMS", JsonConvert.SerializeObject(obj), mesData, name, ActionName, requestMes.message);
                }
                else
                    throw new Exception(requestMes.message);
 
            }
            catch (Exception ex)
            {
                requestMes.message = ex.Message;
                WriteWMSLog.LogAdd(task.agv_tasknum, "失败", "MES", "WMS", JsonConvert.SerializeObject(obj), mesData, name, ActionName, ex.Message);
            }
            return requestMes;
            //finally
            //{
            //    WriteWMSLog.LogAdd(task.agv_tasknum, "失败", "MES", "WMS", JsonConvert.SerializeObject(obj), mesData, name, ActionName, requestMes.message);
            //}
        }
    }
}