From 23c28e3c0437081a78a48e54dc066c87500fa8bc Mon Sep 17 00:00:00 2001 From: lss <2538410689@qq.com> Date: 星期三, 30 七月 2025 17:30:05 +0800 Subject: [PATCH] 111 --- HH.WCS.Mobox3 - 大车间/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs | 399 ++++++++++++++++++++++++++++++-------------------------- 1 files changed, 214 insertions(+), 185 deletions(-) diff --git "a/HH.WCS.Mobox3 - \345\244\247\350\275\246\351\227\264/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs" "b/HH.WCS.Mobox3 - \345\244\247\350\275\246\351\227\264/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs" index 63b788d..0a3fcad 100644 --- "a/HH.WCS.Mobox3 - \345\244\247\350\275\246\351\227\264/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs" +++ "b/HH.WCS.Mobox3 - \345\244\247\350\275\246\351\227\264/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs" @@ -1,11 +1,11 @@ -锘縰sing HH.WCS.JiaTong.api; -using HH.WCS.JiaTong.core; -using HH.WCS.JiaTong.device; -using HH.WCS.JiaTong.dispatch; -using HH.WCS.JiaTong.LISTA.models; -using HH.WCS.JiaTong.LISTA.process; -using HH.WCS.JiaTong.util; -using HH.WCS.JiaTong.wms; +锘縰sing HH.WCS.JiaTong_DCJ.api; +using HH.WCS.JiaTong_DCJ.core; +using HH.WCS.JiaTong_DCJ.device; +using HH.WCS.JiaTong_DCJ.dispatch; +using HH.WCS.JiaTong_DCJ.LISTA.models; +using HH.WCS.JiaTong_DCJ.LISTA.process; +using HH.WCS.JiaTong_DCJ.util; +using HH.WCS.JiaTong_DCJ.wms; using Microsoft.Owin.BuilderProperties; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -19,10 +19,11 @@ using System.Security.Cryptography; using System.Threading; using System.Threading.Tasks; -using static HH.WCS.JiaTong.api.ApiModel; -using static HH.WCS.JiaTong.LISTA.process.HttpModel; +using static HH.WCS.JiaTong_DCJ.api.ApiModel; +using static HH.WCS.JiaTong_DCJ.LISTA.process.HttpModel; +using static System.Collections.Specialized.BitVector32; -namespace HH.WCS.JiaTong.process +namespace HH.WCS.JiaTong_DCJ.process { internal class TaskProcess { @@ -116,52 +117,89 @@ if (TN_Task != null) { - int type = 0; + //璇锋眰鍙栬揣锛� + + int type = 1; string loc = ""; if (model.state == 1101) { - - //璇锋眰鍙栬揣锛� + type = 1; loc = TN_Task.S_START_LOC; + if (name == "Mes") + { + if (OperateReqByPostMes(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state, name)) + { + NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); + } - if (OperateReqByPost(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state, name)) - { - NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); } - } - if (model.state == 1102) - { - type = 3; - if (TN_Task.Z_TYPE == 4)//鍘熸潗鏂欏簱鍥借嚜瀹夊叏浜や簰 + else { - loc = TN_Task.S_START_LOC; if (OperateReqByPost(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state, name)) { - // NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); + NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); } } } + if (model.state == 1102) + { + type = 1; + loc = TN_Task.S_START_LOC; + if (name == "Mes") + { + if (OperateReqByPostMes(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state, name)) + { + // NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); + } + } + else + { + if (OperateReqByPost(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state, name)) + { + // NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); + } + } + } if (model.state == 1103) { //璇锋眰鍗歌揣 - + type = 2; loc = TN_Task.S_END_LOC; - - if (OperateReqByPost(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state, name)) + if (name == "Mes") { - NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); + if (OperateReqByPostMes(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state, name)) + { + NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); + } } - + else + { + if (OperateReqByPost(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state, name)) + { + NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); + } + } } if (model.state == 1104) { - + type = 2; loc = TN_Task.S_END_LOC; - if (OperateReqByPost(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state, name)) + if (name == "Mes") { - //NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); + if (OperateReqByPostMes(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state, name)) + { + //NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); + } } + else + { + if (OperateReqByPost(url, TN_Task.S_EQ_NO, TN_Task.S_CODE, loc, type, model.state, name)) + { + //NDCApi.ChangeOrderParam(TN_Task.S_CODE.Trim(), 6, "1"); + } + } + } } @@ -189,9 +227,12 @@ bool permit = false; try { - //RequestList<TaskAccess> requestList = new RequestList<TaskAccess>(); + LogHelper.Info($"寮�绔嬪簱瀹夊叏璇锋眰"); + Request<TaskAccess> request = new Request<TaskAccess>(); + var time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + TaskAccess taskAccess = new TaskAccess() { taskNum = tasknum, orderNum = ordernum, station = station, type = type, taskStatus = taskStatus }; - // requestList.data.Add(taskAccess); + request.data = taskAccess; HttpHelper httpHelper = new HttpHelper(); Result result = new Result(); string date = JsonConvert.SerializeObject(taskAccess); @@ -220,7 +261,63 @@ } - + /// <summary> + /// MES瀹夊叏浜や簰 + /// </summary> + /// <param name="url"></param> + /// <param name="tasknum"></param> + /// <param name="ordernum"></param> + /// <param name="station"></param> + /// <param name="type"></param> + /// <param name="taskStatus"></param> + public static bool OperateReqByPostMes(string url, string tasknum, string ordernum, string station, int type, int taskStatus, string name) + { + bool permit = false; + try + { + LogHelper.Info($"寮�mes瀹夊叏璇锋眰"); + Request<MesTaskAccess> request = new Request<MesTaskAccess>(); + var time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + request.RequestId = "鏉弶AGV" + time; + + StatusArrive statusArrive = new StatusArrive(); + request.UseToken = "iFQ5fExGrLYLXliHYWzs"; + MesTaskAccess taskAccess = new MesTaskAccess() { taskNumber = tasknum, status = station }; + request.data = taskAccess; + HttpHelper httpHelper = new HttpHelper(); + MesResult<MesStatus> result = new MesResult<MesStatus>(); + string date = JsonConvert.SerializeObject(request); + // string url = Settings.tableUrls.Find(a => a.id == 2).url; + LogHelper.Info($"瀹夊叏璇锋眰锛氬湴鍧�{url}锛屽唴瀹癸細{date}"); + var r = httpHelper.MesWebPost(url, date); + result = JsonConvert.DeserializeObject<MesResult<MesStatus>>(r); + if (result.icode == "200") + { + LogHelper.Info($"鎺ュ彛璇锋眰鎴愬姛"); + if (result.idata.status == "0") + { + LogHelper.Info($"瀹夊叏浜や簰鎴愬姛"); + permit = true; + } + + } + else + { + LogHelper.Info($"瀹夊叏璇锋眰澶辫触=>msg:{result.imsg}"); + ApiHelper.AddErrorInfo("瀹夊叏浜や簰澶辫触", result.imsg, "", tasknum); + } + ApiHelper.AddInfo(name, "瀹夊叏璇锋眰", date, JsonConvert.SerializeObject(result), "Post", url); + return permit; + } + catch (Exception) + { + + return permit; + } + + + } + /// <summary> /// 浠诲姟鎷︽埅 /// </summary> @@ -229,17 +326,17 @@ internal static bool Intercept(WCSTask mst) { var result = true; - var db = new SqlHelper<object>().GetInstance(); - //鏍规嵁璧风偣浠撳簱缂栫爜鍒ゆ柇鏄惁鍙互鎺ㄩ� - var taskLimit = db.Queryable<TASK_LIMIT>().Where(a => a.S_WH_CODE == mst.S_START_WH && a.OPEN == "1").First(); - if (taskLimit != null) - { - Console.WriteLine($"浠诲姟锛歿mst.S_CODE},璧风偣浠撳簱锛歿mst.S_START_WH}宸茬粡绂佺敤鎺ㄩ�"); - return false; - } + //var db = new SqlHelper<object>().GetInstance(); + ////鏍规嵁璧风偣浠撳簱缂栫爜鍒ゆ柇鏄惁鍙互鎺ㄩ� + //var taskLimit = db.Queryable<TASK_LIMIT>().Where(a => a.S_WH_CODE == mst.S_START_WH && a.OPEN == "1").First(); + //if (taskLimit != null) + //{ + // Console.WriteLine($"浠诲姟锛歿mst.S_CODE},璧风偣浠撳簱锛歿mst.S_START_WH}宸茬粡绂佺敤鎺ㄩ�"); + // return false; + //} - - + + return result; } @@ -304,110 +401,61 @@ var list = db.Queryable<Location>().ToList().Count; // if (mst.N_B_STATE == 0) { - if (mst.N_SCHEDULE_TYPE == 1) + + LogHelper.Info($"浠诲姟鎺ㄩ�鏁版嵁锛歿JsonConvert.SerializeObject(mst)}"); + if (string.IsNullOrEmpty(mst.S_START_LOC) || string.IsNullOrEmpty(mst.S_END_LOC)) { - LogHelper.Info($"浠诲姟鎺ㄩ�鏁版嵁锛歿JsonConvert.SerializeObject(mst)}"); - if (string.IsNullOrEmpty(mst.S_START_LOC) || string.IsNullOrEmpty(mst.S_END_LOC)) - { - LogHelper.Info($"浠诲姟{mst.S_CODE},璧风偣缁堢偣鏈夌┖鍙傛暟锛屼笉鎺ㄩ�浠诲姟"); - } - - - start = LocationHelper.GetAgvSite(mst.S_START_LOC); - end = LocationHelper.GetAgvSite(mst.S_END_LOC); - //if (mst.N_START_LAYER > 1) - //{ - // start = LocationHelper.GetAgvSite(mst.S_START_LOC, mst.N_START_LAYER.ToString()).ToString(); - //} - if (mst.N_END_LAYER > 1) - { - end = LocationHelper.GetAgvSite(mst.S_END_LOC, mst.N_END_LAYER.ToString()).ToString(); - LogHelper.Info($"浠诲姟鎺ㄩ�锛氱粓鐐瑰眰鏁颁负{mst.N_END_LAYER}锛屾帹閫佺珯鐐逛负:{end}"); - } - Console.WriteLine($"SendTask {mst.S_CODE}"); - Console.WriteLine("start=" + start); - Console.WriteLine("end= " + end); - var dic = new List<param>(); - dic.Add(new param() { name = "From", value = start.ToString() }); - dic.Add(new param() { name = "To", value = end.ToString() }); - dic.Add(new param() { name = "FUNC", value = "0" }); - dic.Add(new param() { name = "DATA", value = "0" }); - dic.Add(new param() { name = "Ctype", value = "0" }); - - - var res = NDCApi.AddOrderNew(1, 1, mst.S_CODE, dic);//娣诲姞鏂板懡浠�- //dic.Add("Pri", mst.N_PRIORITY.ToString()); - //dic.Add("From", start.ToString()); - //dic.Add("To", end.ToString()); - //dic.Add("task_no", mst.S_CODE.Trim());// dic.Add("Ext1", "1"); dic.Add("Ext2", "CALLADDAGV"); dic.Add("N_CNTR_COUNT", ""); - //var res = NDC.AddNewOrder(1, dic); - - - - if (res != null && (res.err_code == 0 || res.err_code == 50009)) - { - //鎺ㄩ�鎴愬姛锛屼慨鏀逛换鍔′紭鍏堢骇 - mst.N_B_STATE = 1; - mst.S_B_STATE = WCSTask.GetStateStr(1); - WCSHelper.UpdateStatus(mst);//鏇存柊浠诲姟鐘舵� - result = true; - LogHelper.Info($"NDC鎺ㄩ�浠诲姟鎴愬姛 {mst.S_CODE}start= {mst.S_START_LOC} + end = {mst.S_END_LOC}"); - if (mst.S_TYPE.Contains("鐢垫1")) - { - var device = Settings.deviceInfos.Where(a => a.TN_Location == mst.S_END_LOC).FirstOrDefault(); - var loc = LocationHelper.GetLocByLoc(mst.S_START_LOC); - if (device == null) - { - LogHelper.Info($"鏍规嵁浠诲姟缁堢偣:{mst.S_END_LOC},鏈壘鍒板搴旂數姊厤缃枃浠�); - } - if (loc == null) - { - LogHelper.Info($"鏍规嵁浠诲姟璧风偣:{mst.S_START_LOC},鏈壘鍒板搴旇揣浣�); - } - int value = 0; - if (loc.N_LAYER == 1) value = 1; - else if (loc.N_LAYER == 2) value = 3; - else if (loc.N_LAYER == 3) value = 5; - - ModbusHelper.WriteSingleRegister(40089, value, device.address, 1024); - ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024); - - - } - } - else - { - LogHelper.Info($"NDC鎺ㄩ�浠诲姟澶辫触 {mst.S_CODE};Res:" + JsonConvert.SerializeObject(res)); - } + LogHelper.Info($"浠诲姟{mst.S_CODE},璧风偣缁堢偣鏈夌┖鍙傛暟锛屼笉鎺ㄩ�浠诲姟"); } - //else if (mst.N_SCHEDULE_TYPE == 5) { - // //璋冪涓夋柟鎺ュ彛 - // var model = new HanAo.TaskInfoModel - // { - // requestPk = mst.S_CODE, - // frmPos = mst.S_START_LOC, - // toPos = mst.S_END_LOC, - // trkType = mst.S_OP_NAME == "鍏ュ簱" ? "1" : "2", - // contNo = mst.S_CNTR_CODE - // }; - // if (HanAo.CreateOrder(model)) { - // mst.N_B_STATE = 1; - // WCSHelper.UpdateStatus(mst); - // } - //} - //else if (mst.N_SCHEDULE_TYPE == 3) { - // var code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = mst.S_START_LOC, dst = mst.S_END_LOC }), "p2p"); - // if (code > 0) { - // //鏇存柊浠诲姟鐘舵� - // mst.N_B_STATE = 1; - // mst.S_EQ_TASK_CODE = code.ToString(); - // WCSHelper.UpdateStatus(mst); - // WCSHelper.UpdateEQNo(mst); - // } - //} - // } + start = LocationHelper.GetAgvSite(mst.S_START_LOC); + end = LocationHelper.GetAgvSite(mst.S_END_LOC); + //if (mst.N_START_LAYER > 1) + //{ + // start = LocationHelper.GetAgvSite(mst.S_START_LOC, mst.N_START_LAYER.ToString()).ToString(); + //} + if (mst.N_END_LAYER > 1) + { + end = LocationHelper.GetAgvSite(mst.S_END_LOC, mst.N_END_LAYER.ToString()).ToString(); + LogHelper.Info($"浠诲姟鎺ㄩ�锛氱粓鐐瑰眰鏁颁负{mst.N_END_LAYER}锛屾帹閫佺珯鐐逛负:{end}"); + } + Console.WriteLine($"SendTask {mst.S_CODE}"); + Console.WriteLine("start=" + start); + Console.WriteLine("end= " + end); + var dic = new List<param>(); + dic.Add(new param() { name = "From", value = start.ToString() }); + dic.Add(new param() { name = "To", value = end.ToString() }); + dic.Add(new param() { name = "FUNC", value = "0" }); + dic.Add(new param() { name = "DATA", value = "0" }); + dic.Add(new param() { name = "Ctype", value = "0" }); + + + var res = NDCApi.AddOrderNew(1, 1, mst.S_CODE, dic);//娣诲姞鏂板懡浠�+ //dic.Add("Pri", mst.N_PRIORITY.ToString()); + //dic.Add("From", start.ToString()); + //dic.Add("To", end.ToString()); + //dic.Add("task_no", mst.S_CODE.Trim());// dic.Add("Ext1", "1"); dic.Add("Ext2", "CALLADDAGV"); dic.Add("N_CNTR_COUNT", ""); + //var res = NDC.AddNewOrder(1, dic); + + + + if (res != null && (res.err_code == 0 || res.err_code == 50009)) + { + //鎺ㄩ�鎴愬姛锛屼慨鏀逛换鍔′紭鍏堢骇 + mst.N_B_STATE = 1; + mst.S_B_STATE = WCSTask.GetStateStr(1); + WCSHelper.UpdateStatus(mst);//鏇存柊浠诲姟鐘舵� + result = true; + LogHelper.Info($"NDC鎺ㄩ�浠诲姟鎴愬姛 {mst.S_CODE}start= {mst.S_START_LOC} + end = {mst.S_END_LOC}"); + + } + else + { + LogHelper.Info($"NDC鎺ㄩ�浠诲姟澶辫触 {mst.S_CODE};Res:" + JsonConvert.SerializeObject(res)); + } + + return result; } /// <summary> @@ -584,53 +632,34 @@ try { //鍥炴姤鏁版嵁鑾峰彇 - Request<StatusArrive> statusarrive = new Request<StatusArrive>(); + // Request<StatusArrive> statusarrive = new Request<StatusArrive>(); //鑾峰彇鏃堕棿鎴�+ + Request<MesTaskAccess> request = new Request<MesTaskAccess>(); var time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); - statusarrive.RequestId = "鏉弶AGV" + time; - string info = ""; - switch (status) - { - case 1: - info = "agv宸叉帴鍙楀師鏂欏簱涓嬪彂鐨勪换鍔�; - break; - case 4: - info = "agv宸插彇璐у畬鎴�; - break; - case 6: - info = "agv宸插嵏璐у埌鎸囧畾浣嶇疆"; - break; - case 2: - info = "agv宸插畬鎴愰�鏂欎换鍔�; - break; - } - string message = "1"; - if (status == 7) { message = "agv浠诲姟宸插彇娑�; } - int flag = 0; - if (mst.S_NOTE == "绮夋枡") - { - flag = 1; - } - //List<StatusArrive> statusArrives = new List<StatusArrive>(); + request.RequestId = "鏉弶AGV" + time; + StatusArrive statusArrive = new StatusArrive(); - statusarrive.UseToken = "iFQ5fExGrLYLXliHYWzs"; - statusArrive.TaskNumber = mst.S_EQ_NO; - statusArrive.LocationNum = mst.S_END_LOC; - statusArrive.ArricalTime = DateTime.Now.ToString(); - statusArrive.Status = status.ToString(); - statusArrive.Rfid = mst.S_CNTR_CODE; - var cntritem = ContainerHelper.GetCntrItemRel(mst.S_CNTR_CODE).FirstOrDefault(); - if (cntritem!=null) - { - statusArrive.PartNumber = cntritem.S_ITEM_CODE; - statusArrive.PartDesc = cntritem.S_ITEM_NAME; - } + request.UseToken = "iFQ5fExGrLYLXliHYWzs"; + MesTaskAccess taskAccess = new MesTaskAccess() { taskNumber = mst.S_EQ_NO, status = status.ToString() }; + request.data = taskAccess; + //statusArrive.TaskNumber = mst.S_EQ_NO; + //statusArrive.LocationNum = mst.S_END_LOC; + //statusArrive.ArricalTime = DateTime.Now.ToString(); + //statusArrive.Status = status.ToString(); + //statusArrive.Rfid = mst.S_CNTR_CODE; + //var cntritem = ContainerHelper.GetCntrItemRel(mst.S_CNTR_CODE).FirstOrDefault(); + //if (cntritem != null) + //{ + // statusArrive.PartNumber = cntritem.S_ITEM_CODE; + // statusArrive.PartDesc = cntritem.S_ITEM_NAME; + //} //statusArrives.Add(statusArrive); - statusarrive.data = statusArrive; + //寮�鍥炴姤 HttpHelper httpHelper = new HttpHelper(); MesResult result = new MesResult(); - string date = JsonConvert.SerializeObject(statusarrive); + string date = JsonConvert.SerializeObject(request); LogHelper.Info($"浠诲姟鍥炴姤锛氬湴鍧�{url}锛屽唴瀹癸細{date}"); var r = httpHelper.MesWebPost(url, date); -- Gitblit v1.9.1